From 6cb1cd6cd0b3df1323584ffc37f0709903cdf5f7 Mon Sep 17 00:00:00 2001 From: Shen Date: Wed, 12 Jul 2023 09:05:43 +0800 Subject: [PATCH 001/158] Replace cur is not None logic --- .../06.String/03.String-Multi-Pattern-Matching/01.Trie.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md b/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md index 4ae97ce4..1d7ff1e4 100644 --- a/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md +++ b/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md @@ -125,7 +125,7 @@ def search(self, word: str) -> bool: return False # 直接返回 False cur = cur.children[ch] # 令当前节点指向新建立的节点,然后继续查找下一个字符 - return cur is not None and cur.isEnd # 判断当前节点是否为空,并且是否有单词结束标记 + return cur.isEnd # 判断是否有单词结束标记 ``` #### 2.3.2 字典树的查找前缀操作 @@ -140,7 +140,7 @@ def startsWith(self, prefix: str) -> bool: if ch not in cur.children: # 如果当前节点的子节点中,不存在键为 ch 的节点 return False # 直接返回 False cur = cur.children[ch] # 令当前节点指向新建立的节点,然后继续查找下一个字符 - return cur is not None # 判断当前节点是否为空,不为空则查找成功 + return True # 查找成功 ``` ## 3. 字典树的实现代码 @@ -175,7 +175,7 @@ class Trie: # 字典树 return False # 直接返回 False cur = cur.children[ch] # 令当前节点指向新建立的节点,然后继续查找下一个字符 - return cur is not None and cur.isEnd # 判断当前节点是否为空,并且是否有单词结束标记 + return cur.isEnd # 判断是否有单词结束标记 # 查找字典树中是否存在一个前缀 def startsWith(self, prefix: str) -> bool: @@ -184,7 +184,7 @@ class Trie: # 字典树 if ch not in cur.children: # 如果当前节点的子节点中,不存在键为 ch 的节点 return False # 直接返回 False cur = cur.children[ch] # 令当前节点指向新建立的节点,然后继续查找下一个字符 - return cur is not None # 判断当前节点是否为空,不为空则查找成功 + return True # 查找成功 ``` ## 4. 字典树的算法分析 From 9ec1a5ba095ccf6d8be4cd45fbc6fcffc2909e30 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 9 Nov 2023 18:05:00 +0800 Subject: [PATCH 002/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...11\346\225\260\344\271\213\345\222\214.md" | 2 +- ...33\346\225\260\344\271\213\345\222\214.md" | 52 +++++++++++--- ...347\232\204\344\272\244\351\233\206 II.md" | 2 +- .... \350\265\216\351\207\221\344\277\241.md" | 49 +++++++++++--- ...44\346\263\225\346\261\202\345\200\274.md" | 67 +++++++++++++++---- ...346\225\260\347\233\270\345\212\240 II.md" | 51 ++++++++++++-- ...10\345\270\214\351\233\206\345\220\210.md" | 51 +++++++++++--- ...22\345\210\206\345\214\272\345\237\237.md" | 59 ++++++++++++---- ...15\344\275\234\346\254\241\346\225\260.md" | 58 +++++++++++++--- 9 files changed, 322 insertions(+), 69 deletions(-) diff --git "a/Solutions/0015. \344\270\211\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0015. \344\270\211\346\225\260\344\271\213\345\222\214.md" index ed5e3df7..7d80dbca 100644 --- "a/Solutions/0015. \344\270\211\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0015. \344\270\211\346\225\260\344\271\213\345\222\214.md" @@ -36,7 +36,7 @@ 直接三重遍历查找 $a$、$b$、$c$ 的时间复杂度是:$O(n^3)$。我们可以通过一些操作来降低复杂度。 -先将数组进行排序,以保证按顺序查找 $a$、$b$、$c$ 时,元素值为升序,从而保证所找到的三个元素是不重复的。同时也方便下一步使用双指针减少一重遍历。时间复杂度为:$O(nlogn)$。 +先将数组进行排序,以保证按顺序查找 $a$、$b$、$c$ 时,元素值为升序,从而保证所找到的三个元素是不重复的。同时也方便下一步使用双指针减少一重遍历。时间复杂度为:$O(n \times \log n)$。 第一重循环遍历 $a$,对于每个 $a$ 元素,从 $a$ 元素的下一个位置开始,使用对撞指针 $left$,$right$。$left$ 指向 $a$ 元素的下一个位置,$right$ 指向末尾位置。先将 $left$ 右移、$right$ 左移去除重复元素,再进行下边的判断。 diff --git "a/Solutions/0018. \345\233\233\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0018. \345\233\233\346\225\260\344\271\213\345\222\214.md" index e2d57363..b68dbd51 100644 --- "a/Solutions/0018. \345\233\233\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0018. \345\233\233\346\225\260\344\271\213\345\222\214.md" @@ -5,24 +5,51 @@ ## 题目大意 -给定一个整数数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a、b、c、d,使得 a + b + c + d = target。要求找出所有满足条件且不重复的四元组。 +**描述**:给定一个整数数组 $nums$ 和一个目标值 $target$。 -## 解题思路 +**要求**:找出所有满足以下条件切不重复的四元组。 -和 [0015. 三数之和](https://leetcode.cn/problems/3sum/) 解法类似。 +1. $0 \le a, b, c, d < n$。 +2. $a$、$b$、$c$ 和 $d$ 互不相同。 +3. $nums[a] + nums[b] + nums[c] + nums[d] == target$。 -直接三重遍历查找 a、b、c、d 的时间复杂度是:$O(n^4)$。我们可以通过一些操作来降低复杂度。 +**说明**: -先将数组进行排序,以保证按顺序查找 a、b、c、d 时,元素值为升序,从而保证所找到的四个元素是不重复的。同时也方便下一步使用双指针减少一重遍历。时间复杂度为:$O(nlogn)$ +- $1 \le nums.length \le 200$。 +- $-10^9 \le nums[i] \le 10^9$。 +- $-10^9 \le target \le 10^9$。 -两重循环遍历元素 a、b,对于每个 a 元素,从 a 元素的下一个位置开始遍历元素 b。对于元素 a、b,使用双指针 left,right 来查找 c、d。left 指向 b 元素的下一个位置,right 指向末尾位置。先将 left 右移、right 左移去除重复元素,再进行下边的判断。 +**示例**: -- 若 `nums[a] + nums[b] + nums[left] + nums[right] = target`,则得到一个解,将其加入答案数组中,并继续将 left 右移,right 左移; +- 示例 1: -- 若 `nums[a] + nums[b] + nums[left] + nums[right] > target`,说明 nums[right] 值太大,将 right 向左移; -- 若 `nums[a] + nums[b] + nums[left] + nums[right] < target`,说明 nums[left] 值太小,将 left 右移。 +```python +输入:nums = [1,0,-1,0,-2,2], target = 0 +输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]] +``` -## 代码 +- 示例 2: + +```python +输入:nums = [2,2,2,2,2], target = 8 +输出:[[2,2,2,2]] +``` + +## 解题思路 + +### 思路 1:排序 + 双指针 + +和 [0015. 三数之和](https://leetcode.cn/problems/3sum/) 解法类似。 + +直接三重遍历查找 $a$、$b$、$c$、$d$ 的时间复杂度是:$O(n^4)$。我们可以通过一些操作来降低复杂度。 + +1. 先将数组进行排序,以保证按顺序查找 $a$、$b$、$c$、$d$ 时,元素值为升序,从而保证所找到的四个元素是不重复的。同时也方便下一步使用双指针减少一重遍历。这一步的时间复杂度为:$O(n \times \log n)$。 +2. 两重循环遍历元素 $a$、$b$,对于每个 $a$ 元素,从 $a$ 元素的下一个位置开始遍历元素 $b$。对于元素 $a$、$b$,使用双指针 $left$,$right$ 来查找 $c$、$d$。$left$ 指向 $b$ 元素的下一个位置,$right$ 指向末尾位置。先将 $left$ 右移、$right$ 左移去除重复元素,再进行下边的判断。 + 1. 如果 $nums[a] + nums[b] + nums[left] + nums[right] == target$,则得到一个解,将其加入答案数组中,并继续将 $left$ 右移,$right$ 左移; + 2. 如果 $nums[a] + nums[b] + nums[left] + nums[right] > target$,说明 $nums[right]$ 值太大,将 $right$ 向左移; + 3. 如果 $nums[a] + nums[b] + nums[left] + nums[right] < target$,说明 $nums[left]$ 值太小,将 $left$ 右移。 + +### 思路 1:代码 ```python class Solution: @@ -55,3 +82,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^3)$,其中 $n$ 为数组中元素个数。 +- **空间复杂度**:$O(\log n)$,排序额外使用空间为 $\log n$。 + diff --git "a/Solutions/0350. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206 II.md" "b/Solutions/0350. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206 II.md" index 29f04591..172f6c98 100644 --- "a/Solutions/0350. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206 II.md" +++ "b/Solutions/0350. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206 II.md" @@ -5,7 +5,7 @@ ## 题目大意 -**描述**:给定两个数组 `nums1` 和 `nums2`。 +**描述**:给定两个数组 $nums1$ 和 $nums2$。 **要求**:返回两个数组的交集。可以不考虑输出结果的顺序。 diff --git "a/Solutions/0383. \350\265\216\351\207\221\344\277\241.md" "b/Solutions/0383. \350\265\216\351\207\221\344\277\241.md" index 8c1043cb..0c761f1f 100644 --- "a/Solutions/0383. \350\265\216\351\207\221\344\277\241.md" +++ "b/Solutions/0383. \350\265\216\351\207\221\344\277\241.md" @@ -5,25 +5,47 @@ ## 题目大意 -为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。 +**描述**:为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。 -给定一个赎金信字符串 `ransomNote` 和一个杂志字符串 `magazine`。 +给定一个赎金信字符串 $ransomNote$ 和一个杂志字符串 $magazine$。 -要求:判断 `ransomNote` 能不能由 `magazines` 里面的字符构成。如果可以构成,返回 `True`;否则返回 `False`。 +**要求**:判断 $ransomNote$ 能不能由 $magazines$ 里面的字符构成。如果可以构成,返回 `True`;否则返回 `False`。 -注意:`magazine` 中的每个字符只能在 `ransomNote` 中使用一次。 +**说明**: + +- $magazine$ 中的每个字符只能在 $ransomNote$ 中使用一次。 +- $1 \le ransomNote.length, magazine.length \le 10^5$。 +- $ransomNote$ 和 $magazine$ 由小写英文字母组成。 + +**示例**: + +- 示例 1: + +```python +输入:ransomNote = "a", magazine = "b" +输出:False +``` + +- 示例 2: + +```python +输入:ransomNote = "aa", magazine = "ab" +输出:False +``` ## 解题思路 -暴力做法是双重循环遍历字符串 `ransomNote` 和 `magazine`。我们可以用哈希表来减少算法的时间复杂度。具体做法如下: +### 思路 1:哈希表 -- 先用哈希表存储 `magazine` 中各个字符的个数(哈希表可用字典或数组实现)。 -- 再遍历字符串 `ransomNote` 中每个字符,对于每个字符: - - 如果在哈希表中个数为 `0`,直接返回 `False`。 - - 如果在哈希表中个数不为 `0`,将其个数减 1。 -- 遍历到最后,则说明 `ransomNote` 能由 `magazines` 里面的字符构成。返回 `True`。 +暴力做法是双重循环遍历字符串 $ransomNote$ 和 $magazines$。我们可以用哈希表来减少算法的时间复杂度。具体做法如下: -## 代码 +- 先用哈希表存储 $magazines$ 中各个字符的个数(哈希表可用字典或数组实现)。 +- 再遍历字符串 $ransomNote$ 中每个字符,对于每个字符: + - 如果在哈希表中个数为 $0$,直接返回 `False`。 + - 如果在哈希表中个数不为 $0$,将其个数减 $1$。 +- 遍历到最后,则说明 $ransomNote$ 能由 $magazines$ 里面的字符构成。返回 `True`。 + +### 思路 1:代码 ```python class Solution: @@ -44,3 +66,8 @@ class Solution: return True ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(m + n)$,其中 $m$ 是字符串 $ransomNote$ 的长度,$n$ 是字符串 $magazines$ 的长度。 +- **空间复杂度**:$O(|S|)$,其中 $S$ 是字符集,本题中 $|S| = 26$。 + diff --git "a/Solutions/0399. \351\231\244\346\263\225\346\261\202\345\200\274.md" "b/Solutions/0399. \351\231\244\346\263\225\346\261\202\345\200\274.md" index af543ba3..b696edcc 100644 --- "a/Solutions/0399. \351\231\244\346\263\225\346\261\202\345\200\274.md" +++ "b/Solutions/0399. \351\231\244\346\263\225\346\261\202\345\200\274.md" @@ -5,28 +5,66 @@ ## 题目大意 -给定一个变量对数组 `equations` 和一个实数数组 `values` 作为已知条件,其中 `equations[i] = [Ai, Bi]` 和 `values[i]` 共同表示 `Ai / Bi = values[i]`。每个 `Ai` 或 `Bi` 是一个表示单个变量的字符串。 +**描述**:给定一个变量对数组 $equations$ 和一个实数数组 $values$ 作为已知条件,其中 $equations[i] = [Ai, Bi]$ 和 $values[i]$ 共同表示 `Ai / Bi = values[i]`。每个 $Ai$ 或 $Bi$ 是一个表示单个变量的字符串。 -再给定一个表示多个问题的数组 `queries`,其中 `queries[j] = [Cj, Dj]` 表示第 `j` 个问题,要求:根据已知条件找出 `Cj / Dj = ?` 的结果作为答案。返回所有问题的答案。如果某个答案无法确定,则用 `-1.0` 代替,如果问题中出现了给定的已知条件中没有出现的表示变量的字符串,则也用 `-1.0` 代替这个答案。 +再给定一个表示多个问题的数组 $queries$,其中 $queries[j] = [Cj, Dj]$ 表示第 $j$ 个问题,要求:根据已知条件找出 `Cj / Dj = ?` 的结果作为答案。 + +**要求**:返回所有问题的答案。如果某个答案无法确定,则用 $-1.0$ 代替,如果问题中出现了给定的已知条件中没有出现的表示变量的字符串,则也用 $-1.0$ 代替这个答案。 + +**说明**: + +- 未在等式列表中出现的变量是未定义的,因此无法确定它们的答案。 +- $1 \le equations.length \le 20$。 +- $equations[i].length == 2$。 +- $1 \le Ai.length, Bi.length \le 5$。 +- $values.length == equations.length$。 +- $0.0 < values[i] \le 20.0$。 +- $1 \le queries.length \le 20$。 +- $queries[i].length == 2$。 +- $1 \le Cj.length, Dj.length \le 5$。 +- $Ai, Bi, Cj, Dj$ 由小写英文字母与数字组成。 + +**示例**: + +- 示例 1: + +```python +输入:equations = [["a","b"],["b","c"]], values = [2.0,3.0], queries = [["a","c"],["b","a"],["a","e"],["a","a"],["x","x"]] +输出:[6.00000,0.50000,-1.00000,1.00000,-1.00000] +解释: +条件:a / b = 2.0, b / c = 3.0 +问题:a / c = ?, b / a = ?, a / e = ?, a / a = ?, x / x = ? +结果:[6.0, 0.5, -1.0, 1.0, -1.0 ] +注意:x 是未定义的 => -1.0 +``` + +- 示例 2: + +```python +输入:equations = [["a","b"],["b","c"],["bc","cd"]], values = [1.5,2.5,5.0], queries = [["a","c"],["c","b"],["bc","cd"],["cd","bc"]] +输出:[3.75000,0.40000,5.00000,0.20000] +``` ## 解题思路 +### 思路 1:并查集 + 在「[等式方程的可满足性](https://leetcode.cn/problems/satisfiability-of-equality-equations)」的基础上增加了倍数关系。在「[等式方程的可满足性](https://leetcode.cn/problems/satisfiability-of-equality-equations)」中我们处理传递关系使用了并查集,这道题也是一样,不过在使用并查集的同时还要维护倍数关系。 举例说明: -- `a / b = 2.0`:说明 `a = 2b`,`a` 和 `b` 在同一个集合。 -- `b / c = 3.0`:说明 `b = 3c`,`b` 和 `c` 在同一个集合。 +- `a / b = 2.0`:说明 $a == 2b$,$a$ 和 $b$ 在同一个集合。 +- `b / c = 3.0`:说明 $b == 3c$,$b$ 和 $c$ 在同一个集合。 -根据上述两式可得:`a`、`b`、`c` 都在一个集合中,且 `a = 2b = 6c`。 +根据上述两式可得:$a$、$b$、$c$ 都在一个集合中,且 $a == 2b == 6c$。 -我们可以将同一集合中的变量倍数关系都转换为与根节点变量的倍数关系,比如上述例子中都转变为与 `a` 的倍数关系。 +我们可以将同一集合中的变量倍数关系都转换为与根节点变量的倍数关系,比如上述例子中都转变为与 $a$ 的倍数关系。 具体操作如下: -- 定义并查集结构,并在并查集中定义一个表示倍数关系的 `multiples` 数组。 -- 遍历 `equations` 数组、`values` 数组,将每个变量按顺序编号,并使用 `union` 将其并入相同集合。 -- 遍历 `queries` 数组,判断两个变量是否在并查集中,并且是否在同一集合。如果找到对应关系,则将计算后的倍数关系存入答案数组,否则则将 `-1` 存入答案数组。 +- 定义并查集结构,并在并查集中定义一个表示倍数关系的 $multiples$ 数组。 +- 遍历 $equations$ 数组、$values$ 数组,将每个变量按顺序编号,并使用 `union` 将其并入相同集合。 +- 遍历 $queries$ 数组,判断两个变量是否在并查集中,并且是否在同一集合。如果找到对应关系,则将计算后的倍数关系存入答案数组,否则则将 $-1$ 存入答案数组。 - 最终输出答案数组。 并查集中维护倍数相关方法说明: @@ -36,11 +74,11 @@ - `union` 方法: - 如果两个节点属于同一集合,则直接返回。 - 如果两个节点不属于同一个集合,合并之前当前节点的倍数关系更新,然后再进行更新。 -- `is_connect` 方法: - - 如果两个节点不属于同一集合,返回 `-1`。 +- `is_connected` 方法: + - 如果两个节点不属于同一集合,返回 $-1$。 - 如果两个节点属于同一集合,则返回倍数关系。 -## 代码 +### 思路 1:代码 ```python class UnionFind: @@ -109,3 +147,8 @@ class Solution: return res ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O((m + n) \times \alpha(m + n))$,$\alpha$ 是反 `Ackerman` 函数。 +- **空间复杂度**:$O(m + n)$。 + diff --git "a/Solutions/0454. \345\233\233\346\225\260\347\233\270\345\212\240 II.md" "b/Solutions/0454. \345\233\233\346\225\260\347\233\270\345\212\240 II.md" index dee9d5b3..3d48cdff 100644 --- "a/Solutions/0454. \345\233\233\346\225\260\347\233\270\345\212\240 II.md" +++ "b/Solutions/0454. \345\233\233\346\225\260\347\233\270\345\212\240 II.md" @@ -5,19 +5,55 @@ ## 题目大意 -给定四个整数数组 nums1、nums2、nums3、nums4。计算有多少不同的(i, j, k, l)满足 nums1[i] + nums2[j] + nums3[k] + nums4[l] = 0。 +**描述**:给定四个整数数组 $nums1$、$nums2$、$nums3$、$nums4$。 + +**要求**:计算有多少不同的 $(i, j, k, l)$ 满足以下条件。 + +1. $0 \le i, j, k, l < n$。 +2. $nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0$。 + +**说明**: + +- $n == nums1.length$。 +- $n == nums2.length$。 +- $n == nums3.length$。 +- $n == nums4.length$。 +- $1 \le n \le 200$。 +- $-2^{28} \le nums1[i], nums2[i], nums3[i], nums4[i] \le 2^{28}$。 + +**示例**: + +- 示例 1: + +```python +输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2] +输出:2 +解释: +两个元组如下: +1. (0, 0, 0, 1) -> nums1[0] + nums2[0] + nums3[0] + nums4[1] = 1 + (-2) + (-1) + 2 = 0 +2. (1, 1, 0, 0) -> nums1[1] + nums2[1] + nums3[0] + nums4[0] = 2 + (-1) + (-1) + 0 = 0 +``` + +- 示例 2: + +```python +输入:nums1 = [0], nums2 = [0], nums3 = [0], nums4 = [0] +输出:1 +``` ## 解题思路 +### 思路 1:哈希表 + 直接暴力搜索的时间复杂度是 $O(n^4)$。我们可以降低一下复杂度。 -将四个数组分为两组。nums1 和 nums2 分为一组,nums3 和 nums4 分为一组。 +将四个数组分为两组。$nums1$ 和 $nums2$ 分为一组,$nums3$ 和 $nums4$ 分为一组。 -已知 $nums1[i] + nums2[j] + nums3[k] + nums4[l] = 0$,可以得到 $nums1[i] + nums2[j] = -(nums3[k] + nums4[l])$ +已知 $nums1[i] + nums2[j] + nums3[k] + nums4[l] == 0$,可以得到 $nums1[i] + nums2[j] = -(nums3[k] + nums4[l])$ -建立一个哈希表。两重循环遍历数组 nums1、nums2,先将 $nums[i] + nums[j]$ 的和个数记录到哈希表中,然后再用两重循环遍历数组 nums3、nums4。如果 $-(nums3[k] + nums4[l])$ 的结果出现在哈希表中,则将结果数累加到答案中。最终输出累加之后的答案。 +建立一个哈希表。两重循环遍历数组 $nums1$、$nums2$,先将 $nums[i] + nums[j]$ 的和个数记录到哈希表中,然后再用两重循环遍历数组 $nums3$、$nums4$。如果 $-(nums3[k] + nums4[l])$ 的结果出现在哈希表中,则将结果数累加到答案中。最终输出累加之后的答案。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -40,3 +76,8 @@ class Solution: return count ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$,其中 $n$ 为数组的元素个数。 +- **空间复杂度**:$O(n^2)$。 + diff --git "a/Solutions/0705. \350\256\276\350\256\241\345\223\210\345\270\214\351\233\206\345\220\210.md" "b/Solutions/0705. \350\256\276\350\256\241\345\223\210\345\270\214\351\233\206\345\220\210.md" index b0aa8c9c..cfb4f0d3 100644 --- "a/Solutions/0705. \350\256\276\350\256\241\345\223\210\345\270\214\351\233\206\345\220\210.md" +++ "b/Solutions/0705. \350\256\276\350\256\241\345\223\210\345\270\214\351\233\206\345\220\210.md" @@ -5,21 +5,51 @@ ## 题目大意 -要求不使用内建的哈希表库,自行实现一个哈希集合(HashSet)。 +**要求**:不使用内建的哈希表库,自行实现一个哈希集合(HashSet)。 -满足以下操作: +需要满足以下操作: -- void add(key) 向哈希集合中插入值 key 。 -- bool contains(key) 返回哈希集合中是否存在这个值 key 。 -- void remove(key) 将给定值 key 从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。 +- `void add(key)` 向哈希集合中插入值 $key$。 +- `bool contains(key)` 返回哈希集合中是否存在这个值 $key$。 +- `void remove(key)` 将给定值 $key$ 从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。 + +**说明**: + +- $0 \le key \le 10^6$。 +- 最多调用 $10^4$ 次 `add`、`remove` 和 `contains`。 + +**示例**: + +- 示例 1: + +```python +输入: +["MyHashSet", "add", "add", "contains", "contains", "add", "contains", "remove", "contains"] +[[], [1], [2], [1], [3], [2], [2], [2], [2]] +输出: +[null, null, null, true, false, null, true, null, false] + +解释: +MyHashSet myHashSet = new MyHashSet(); +myHashSet.add(1); // set = [1] +myHashSet.add(2); // set = [1, 2] +myHashSet.contains(1); // 返回 True +myHashSet.contains(3); // 返回 False ,(未找到) +myHashSet.add(2); // set = [1, 2] +myHashSet.contains(2); // 返回 True +myHashSet.remove(2); // set = [1] +myHashSet.contains(2); // 返回 False ,(已移除) +``` ## 解题思路 -可以利用「数组+链表」的方式实现哈希集合。 +### 思路 1:数组 + 链表 + +定义一个一维长度为 $buckets$ 的二维数组 $table$。 -定义一个一维长度为 buckets 的二维数组 table。第一维度用于计算哈希函数,为 key 分桶。第二个维度用于寻找 key 存放的具体位置。第二维度的数组会根据 key 值动态增长,模拟真正的链表。 +第一维度用于计算哈希函数,为 $key$ 进行分桶。第二个维度用于寻找 $key$ 存放的具体位置。第二维度的数组会根据 $key$ 值动态增长,模拟真正的链表。 -## 代码 +### 思路 1:代码 ```python class MyHashSet: @@ -52,3 +82,8 @@ class MyHashSet: return key in self.table[hash_key] ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(\frac{n}{m})$,其中 $n$ 为哈希表中的元素数量,$b$ 为 $table$ 的元素个数,也就是链表的数量。 +- **空间复杂度**:$O(n + m)$。 + diff --git "a/Solutions/0959. \347\224\261\346\226\234\346\235\240\345\210\222\345\210\206\345\214\272\345\237\237.md" "b/Solutions/0959. \347\224\261\346\226\234\346\235\240\345\210\222\345\210\206\345\214\272\345\237\237.md" index 1c9a60cc..dc78812a 100644 --- "a/Solutions/0959. \347\224\261\346\226\234\346\235\240\345\210\222\345\210\206\345\214\272\345\237\237.md" +++ "b/Solutions/0959. \347\224\261\346\226\234\346\235\240\345\210\222\345\210\206\345\214\272\345\237\237.md" @@ -5,39 +5,69 @@ ## 题目大意 -在由 `1 * 1` 方格组成的 `n * n` 网格 `grid` 中,每个 `1 * 1` 方块由 `/`、`\` 或空格构成。这些字符会将方块划分为一些共边的区域。 +**描述**:在由 $1 \times 1$ 方格组成的 $n \times n$ 网格 $grid$ 中,每个 $1 \times 1$ 方块由 `'/'`、`'\'` 或 `' '` 构成。这些字符会将方块划分为一些共边的区域。 -注意:反斜杠字符是转义的,因此 `\` 用 `\\` 表示。 +现在给定代表网格的二维数组 $grid$。 -现在给定代表网格的二维数组 `grid`,要求:返回区域的数目。 +**要求**:返回区域的数目。 + +**说明**: + +- 反斜杠字符是转义的,因此 `'\'` 用 `'\\'` 表示。 +- $n == grid.length == grid[i].length$。 +- $1 \le n \le 30$。 +- $grid[i][j]$ 是 `'/'`、`'\'` 或 `' '`。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2018/12/15/1.png) + +```python +输入:grid = [" /","/ "] +输出:2 +``` + +- 示例 2: + +![](https://assets.leetcode.com/uploads/2018/12/15/4.png) + +```python +输入:grid = ["/\\","\\/"] +输出:5 +解释:回想一下,因为 \ 字符是转义的,所以 "/\\" 表示 /\,而 "\\/" 表示 \/。 +``` ## 解题思路 -我们把一个 `1 * 1` 的单元格分割成逻辑上的 4 个部分,则 空格、`/`、`\\` 可以将 `1 * 1` 的方格分割为以下三种形态: +### 思路 1:并查集 + +我们把一个 $1 \times 1$ 的单元格分割成逻辑上的 $4$ 个部分,则 `' '`、`'/'`、`'\'` 可以将 $1 \times 1$ 的方格分割为以下三种形态: ![](http://qcdn.itcharge.cn/images/20210827142447.png) 在进行遍历的时候,需要将联通的部分进行合并,并统计出联通的块数。这就需要用到了并查集。 -遍历二维数组 `gird`,然后在「单元格内」和「单元格间」进行合并。 +遍历二维数组 $gird$,然后在「单元格内」和「单元格间」进行合并。 现在我们为单元格的每个小三角部分按顺时针方向都编上编号,起始位置为左边。然后单元格间的编号按照从左到右,从上到下的位置进行编号,如下图所示: ![](http://qcdn.itcharge.cn/images/20210827143836.png) -假设当前单元格的起始位置为 `index`,则合并策略如下: +假设当前单元格的起始位置为 $index$,则合并策略如下: - 如果是单元格内: - - 如果是空格:合并 `index`、`index + 1`、`index + 2`、`index + 3`。 - - 如果是 `/`:合并 `index` 和 `index + 1`,合并 `index + 2` 和 `index + 3`。 - - 如果是 `\\`:合并 `index` 和 `index + 3`,合并 `index + 1` 和 `index + 2`。 + - 如果是空格:合并 $index$、$index + 1$、$index + 2$、$index + 3$。 + - 如果是 `'/'`:合并 $index$ 和 $index + 1$,合并 $index + 2$ 和 $index + 3$。 + - 如果是 `'\'`:合并 $index$ 和 $index + 3$,合并 $index + 1$ 和 $index + 2$。 - 如果是单元格间,则向下向右进行合并: - - 向下:合并 `index + 3` 和 `index + 4 * size + 1 `。 - - 向右:合并 `index + 2` 和 `index + 4`。 + - 向下:合并 $index + 3$ 和 $index + 4 * size + 1 $。 + - 向右:合并 $index + 2$ 和 $index + 4$。 最后合并完成之后,统计并查集中连通分量个数即为答案。 -## 代码 +### 思路 1:代码 ```python class UnionFind: @@ -91,3 +121,8 @@ class Solution: return union_find.count ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2 \times \alpha(n^2))$,其中 $\alpha$ 是反 `Ackerman` 函数。 +- **空间复杂度**:$O(n^2)$。 + diff --git "a/Solutions/1319. \350\277\236\351\200\232\347\275\221\347\273\234\347\232\204\346\223\215\344\275\234\346\254\241\346\225\260.md" "b/Solutions/1319. \350\277\236\351\200\232\347\275\221\347\273\234\347\232\204\346\223\215\344\275\234\346\254\241\346\225\260.md" index 6ab07b66..78d2a0be 100644 --- "a/Solutions/1319. \350\277\236\351\200\232\347\275\221\347\273\234\347\232\204\346\223\215\344\275\234\346\254\241\346\225\260.md" +++ "b/Solutions/1319. \350\277\236\351\200\232\347\275\221\347\273\234\347\232\204\346\223\215\344\275\234\346\254\241\346\225\260.md" @@ -5,24 +5,59 @@ ## 题目大意 -`n` 台计算机通过网线连接成一个网络,计算机的编号从 `0` 到 `n - 1`。线缆用 `comnnections` 表示,其中 `connections[i] = [a, b]` 表示连接了计算机 `a` 和 `b`。 +**描述**:$n$ 台计算机通过网线连接成一个网络,计算机的编号从 $0$ 到 $n - 1$。线缆用 $comnnections$ 表示,其中 $connections[i] = [a, b]$ 表示连接了计算机 $a$ 和 $b$。 -给定这个计算机网络的初始布线 `connections`,可以拔除任意两台直接相连的计算机之间的网线,并用这根网线连接任意一对未直接连接的计算机。现在要求:计算并返回使所有计算机都连通所需的最少操作次数。如果不可能,则返回 `-1`。 +给定这个计算机网络的初始布线 $connections$,可以拔除任意两台直接相连的计算机之间的网线,并用这根网线连接任意一对未直接连接的计算机。 + +**要求**:计算并返回使所有计算机都连通所需的最少操作次数。如果不可能,则返回 $-1$。 + +**说明**: + +- $1 \le n \le 10^5$。 +- $1 \le connections.length \le min( \frac{n \times (n-1)}{2}, 10^5)$。 +- $connections[i].length == 2$。 +- $0 \le connections[i][0], connections[i][1] < n$。 +- $connections[i][0] != connections[i][1]$。 +- 没有重复的连接。 +- 两台计算机不会通过多条线缆连接。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/01/11/sample_1_1677.png) + +```python +输入:n = 4, connections = [[0,1],[0,2],[1,2]] +输出:1 +解释:拔下计算机 1 和 2 之间的线缆,并将它插到计算机 1 和 3 上。 +``` + +- 示例 2: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/01/11/sample_2_1677.png) + +```python +输入:n = 6, connections = [[0,1],[0,2],[0,3],[1,2],[1,3]] +输出:2 +``` ## 解题思路 -`n` 台计算机至少需要 `n - 1` 根线才能进行连接,如果网线的数量少于 `n - 1`,那么就不可能将其连接。接下来计算最少操作次数。 +### 思路 1:并查集 + +$n$ 台计算机至少需要 $n - 1$ 根线才能进行连接,如果网线的数量少于 $n - 1$,那么就不可能将其连接。接下来计算最少操作次数。 -把 `n` 台计算机看做是 `n` 个节点,每条网线看做是一条无向边。维护两个变量:多余电线数 `removeCount`、需要电线数 `needConnectCount`。初始 `removeCount = 1, needConnectCount = n - 1`。 +把 $n$ 台计算机看做是 $n$ 个节点,每条网线看做是一条无向边。维护两个变量:多余电线数 $removeCount$、需要电线数 $needConnectCount$。初始 $removeCount = 1, needConnectCount = n - 1$。 -遍历网线数组,将相连的节点 `a` 和 `b` 利用并查集加入到一个集合中(调用 `union` 操作)。 +遍历网线数组,将相连的节点 $a$ 和 $b$ 利用并查集加入到一个集合中(调用 `union` 操作)。 -- 如果 `a` 和 `b` 已经在同一个集合中,说明该连接线多余,多余电线数 +1。 -- 如果 `a` 和 `b` 不在一个集合中,则将其合并,则 `a` 和 `b` 之间不再需要用额外的电线连接了,所以需要电线数 -1。 +- 如果 $a$ 和 $b$ 已经在同一个集合中,说明该连接线多余,多余电线数加 $1$。 +- 如果 $a$ 和 $b$ 不在一个集合中,则将其合并,则 $a$ 和 $b$ 之间不再需要用额外的电线连接了,所以需要电线数减 $1$。 -最后,判断多余的电线数是否满足需要电线数,不满足返回 -1,如果满足,则返回需要电线数。 +最后,判断多余的电线数是否满足需要电线数,不满足返回 $-1$,如果满足,则返回需要电线数。 -## 代码 +### 思路 1:代码 ```python class UnionFind: @@ -63,3 +98,8 @@ class Solution: return needConnectCount ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(m \times \alpha(n))$,其中 $m$ 是数组 $connections$ 的长度,$\alpha$ 是反 `Ackerman` 函数。 +- **空间复杂度**:$O(n)$。 + From f1dfdd69c453e4e2cea8ec0e304945a83f1a6bad Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 10 Nov 2023 10:04:47 +0800 Subject: [PATCH 003/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...40\344\270\255\346\270\270\346\263\263.md" | 54 ++++++++++-- .... \346\211\223\347\240\226\345\235\227.md" | 86 ++++++++++++++++--- ...14\345\210\227\347\237\263\345\244\264.md" | 12 +-- ...10\350\200\227\350\267\257\345\276\204.md" | 50 +++++++++-- 4 files changed, 168 insertions(+), 34 deletions(-) diff --git "a/Solutions/0778. \346\260\264\344\275\215\344\270\212\345\215\207\347\232\204\346\263\263\346\261\240\344\270\255\346\270\270\346\263\263.md" "b/Solutions/0778. \346\260\264\344\275\215\344\270\212\345\215\207\347\232\204\346\263\263\346\261\240\344\270\255\346\270\270\346\263\263.md" index 49b242d8..6c108154 100644 --- "a/Solutions/0778. \346\260\264\344\275\215\344\270\212\345\215\207\347\232\204\346\263\263\346\261\240\344\270\255\346\270\270\346\263\263.md" +++ "b/Solutions/0778. \346\260\264\344\275\215\344\270\212\345\215\207\347\232\204\346\263\263\346\261\240\344\270\255\346\270\270\346\263\263.md" @@ -5,27 +5,62 @@ ## 题目大意 -给定一个 `n * n` 大小的二维数组 `grid`,每一个方格的值 `grid[i][j]` 表示为位置 `(i, j)` 的高度。 +**描述**:给定一个 $n \times n$ 大小的二维数组 $grid$,每一个方格的值 $grid[i][j]$ 表示为位置 $(i, j)$ 的高度。 -现在要从左上角 `(0, 0)` 位置出发,经过方格的一些点,到达右下角 `(n - 1, n - 1)` 位置上。其中所经过路径的花费为这条路径上所有位置的最大高度。 +现在要从左上角 $(0, 0)$ 位置出发,经过方格的一些点,到达右下角 $(n - 1, n - 1)$ 位置上。其中所经过路径的花费为这条路径上所有位置的最大高度。 -现在要求:计算从 `(0, 0)` 位置到 `(n - 1, n - 1)` 的最优路径的花费。 +**要求**:计算从 $(0, 0)$ 位置到 $(n - 1, n - 1)$ 的最优路径的花费。 -最优路径指的路径上最大高度最小的那条路径。 +**说明**: + +- **最优路径**:路径上最大高度最小的那条路径。 +- $n == grid.length$。 +- $n == grid[i].length$。 +- $1 \le n \le 50$。 +- $0 \le grid[i][j] < n2$。 +- $grid[i][j]$ 中每个值均无重复。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2021/06/29/swim1-grid.jpg) + +```python +输入: grid = [[0,2],[1,3]] +输出: 3 +解释: +时间为 0 时,你位于坐标方格的位置为 (0, 0)。 +此时你不能游向任意方向,因为四个相邻方向平台的高度都大于当前时间为 0 时的水位。 +等时间到达 3 时,你才可以游向平台 (1, 1). 因为此时的水位是 3,坐标方格中的平台没有比水位 3 更高的,所以你可以游向坐标方格中的任意位置。 +``` + +- 示例 2: + +![](https://assets.leetcode.com/uploads/2021/06/29/swim2-grid-1.jpg) + +```python +输入: grid = [[0,1,2,3,4],[24,23,22,21,5],[12,13,14,15,16],[11,17,18,19,20],[10,9,8,7,6]] +输出: 16 +解释: 最终的路线用加粗进行了标记。 +我们必须等到时间为 16,此时才能保证平台 (0, 0) 和 (4, 4) 是连通的。 +``` ## 解题思路 +### 思路 1:并查集 + 将整个网络抽象为一个无向图,每个点与相邻的点(上下左右)之间都存在一条无向边,边的权重为两个点之间的最大高度。 -我们要找到左上角到右下角的最优路径,可以遍历所有的点,将所有的边存储到数组中,每条边的存储格式为 `[x, y, h]`,意思是编号 `x` 的点和编号为 `y` 的点之间的权重为 `h`。 +我们要找到左上角到右下角的最优路径,可以遍历所有的点,将所有的边存储到数组中,每条边的存储格式为 $[x, y, h]$,意思是编号 $x$ 的点和编号为 $y$ 的点之间的权重为 $h$。 然后按照权重从小到大的顺序,对所有边进行排序。 -再按照权重大小遍历所有边,将其依次加入并查集中。并且每次都需要判断 `(0, 0)` 点和 `(n - 1, n - 1)` 点是否连通。 +再按照权重大小遍历所有边,将其依次加入并查集中。并且每次都需要判断 $(0, 0)$ 点和 $(n - 1, n - 1)$ 点是否连通。 如果连通,则该边的权重即为答案。 -## 代码 +### 思路 1:代码 ```python class UnionFind: @@ -83,3 +118,8 @@ class Solution: return 0 ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(m \times n \times \alpha(m \times n))$,其中 $\alpha$ 是反 Ackerman 函数。 +- **空间复杂度**:$O(m \times n)$。 + diff --git "a/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" "b/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" index 7435ac99..a438c2d1 100644 --- "a/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" +++ "b/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" @@ -5,41 +5,94 @@ ## 题目大意 -给定一个 `m * n` 大小的二元网格,其中 `1` 表示砖块,`0` 表示空白。砖块稳定(不会掉落)的前提是: +**描述**:给定一个 $m \times n$ 大小的二元网格,其中 $1$ 表示砖块,$0$ 表示空白。砖块稳定(不会掉落)的前提是: - 一块砖直接连接到网格的顶部。 - 或者至少有一块相邻(4 个方向之一)砖块稳定不会掉落时。 -再给定一个数组 `hits`,这是需要依次消除砖块的位置。每当消除 `hits[i] = (row_i, col_i)` 位置上的砖块时,对应位置的砖块(若存在)会消失,然后其他的砖块可能因为这一消除操作而掉落。一旦砖块掉落,它会立即从网格中消失(即,它不会落在其他稳定的砖块上)。 +再给定一个数组 $hits$,这是需要依次消除砖块的位置。每当消除 $hits[i] = (row_i, col_i)$ 位置上的砖块时,对应位置的砖块(若存在)会消失,然后其他的砖块可能因为这一消除操作而掉落。一旦砖块掉落,它会立即从网格中消失(即,它不会落在其他稳定的砖块上)。 -要求:返回一个数组 `result`,其中 `result[i]` 表示第 `i` 次消除操作对应掉落的砖块数目。 +**要求**:返回一个数组 $result$,其中 $result[i]$ 表示第 $i$ 次消除操作对应掉落的砖块数目。 -注意:消除可能指向是没有砖块的空白位置,如果发生这种情况,则没有砖块掉落。 +**说明**: + +- 消除可能指向是没有砖块的空白位置,如果发生这种情况,则没有砖块掉落。 +- $m == grid.length$。 +- $n == grid[i].length$。 +- $1 \le m, n \le 200$。 +- $grid[i][j]$ 为 $0$ 或 $1$。 +- $1 \le hits.length \le 4 \times 10^4$。 +- $hits[i].length == 2$。 +- $0 \le xi \le m - 1$。 +- $0 \le yi \le n - 1$。 +- 所有 $(xi, yi)$ 互不相同。 + +**示例**: + +- 示例 1: + +```python +输入:grid = [[1,0,0,0],[1,1,1,0]], hits = [[1,0]] +输出:[2] +解释:网格开始为: +[[1,0,0,0], + [1,1,1,0]] +消除 (1,0) 处加粗的砖块,得到网格: +[[1,0,0,0] + [0,1,1,0]] +两个加粗的砖不再稳定,因为它们不再与顶部相连,也不再与另一个稳定的砖相邻,因此它们将掉落。得到网格: +[[1,0,0,0], + [0,0,0,0]] +因此,结果为 [2]。 +``` + +- 示例 2: + +```python +输入:grid = [[1,0,0,0],[1,1,0,0]], hits = [[1,1],[1,0]] +输出:[0,0] +解释:网格开始为: +[[1,0,0,0], + [1,1,0,0]] +消除 (1,1) 处加粗的砖块,得到网格: +[[1,0,0,0], + [1,0,0,0]] +剩下的砖都很稳定,所以不会掉落。网格保持不变: +[[1,0,0,0], + [1,0,0,0]] +接下来消除 (1,0) 处加粗的砖块,得到网格: +[[1,0,0,0], + [0,0,0,0]] +剩下的砖块仍然是稳定的,所以不会有砖块掉落。 +因此,结果为 [0,0]。 +``` ## 解题思路 +### 思路 1:并查集 + 一个很直观的想法: - 将所有砖块放入一个集合中。 -- 根据 `hits` 数组的顺序,每敲掉一块砖。则将这块砖与相邻(4 个方向)的砖块断开集合。 +- 根据 $hits$ 数组的顺序,每敲掉一块砖。则将这块砖与相邻(4 个方向)的砖块断开集合。 - 然后判断哪些砖块会掉落,从集合中删除会掉落的砖块,并统计掉落砖块的数量。 - - `掉落砖块的数目 = 击碎砖块之前与屋顶相连的砖块数目 - 击碎砖块之后与屋顶相连的砖块数目 - 1` 。 + - **掉落砖块的数目 = 击碎砖块之前与屋顶相连的砖块数目 - 击碎砖块之后与屋顶相连的砖块数目 - 1**。 涉及集合问题,很容易想到用并查集来做。但是并查集主要用于合并查找集合,不适合断开集合。我们可以反向思考问题: -- 先将 `hits` 中的所有位置上的砖块敲掉。 +- 先将 $hits$ 中的所有位置上的砖块敲掉。 - 将剩下的砖块建立并查集。 -- 逆序填回被敲掉的砖块,并与相邻(4 个方向)的砖块合并。这样问题就变为了 `补上砖块会新增多少个砖块粘到屋顶`。 +- 逆序填回被敲掉的砖块,并与相邻(4 个方向)的砖块合并。这样问题就变为了 **补上砖块会新增多少个砖块粘到屋顶**。 整个算法步骤具体如下: -- 先将二维数组 `grid` 复制一份到二维数组 `copy_gird` 上。这是因为遍历 `hits` 元素时需要判断原网格是空白还是被打碎的砖块。 -- 在 `copy_grid` 中将 `hits` 中打碎的砖块赋值为 `0`。 -- 建立并查集,将房顶上的砖块合并到一个集合中。 -- 逆序遍历 `hits`,将 `hits` 中的砖块补到 `copy_grid` 中,并计算每一步中有多少个砖块粘到屋顶上(与屋顶砖块在一个集合中),并存入答案数组对应位置。 -- 最后输出答案数组。 +1. 先将二维数组 $grid$ 复制一份到二维数组 $copy\underline{}gird$ 上。这是因为遍历 $hits$ 元素时需要判断原网格是空白还是被打碎的砖块。 +2. 在 $copy\underline{}grid$ 中将 $hits$ 中打碎的砖块赋值为 $0$。 +3. 建立并查集,将房顶上的砖块合并到一个集合中。 +4. 逆序遍历 $hits$,将 $hits$ 中的砖块补到 $copy\underline{}grid$ 中,并计算每一步中有多少个砖块粘到屋顶上(与屋顶砖块在一个集合中),并存入答案数组对应位置。 +5. 最后输出答案数组。 -## 代码 +### 思路 1:代码 ```python class UnionFind: @@ -119,3 +172,8 @@ class Solution: return res ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(m \times n \times \alpha(m \times n))$,其中 $\alpha$ 是反 Ackerman 函数。 +- **空间复杂度**:$O(m \times n)$。 + diff --git "a/Solutions/0947. \347\247\273\351\231\244\346\234\200\345\244\232\347\232\204\345\220\214\350\241\214\346\210\226\345\220\214\345\210\227\347\237\263\345\244\264.md" "b/Solutions/0947. \347\247\273\351\231\244\346\234\200\345\244\232\347\232\204\345\220\214\350\241\214\346\210\226\345\220\214\345\210\227\347\237\263\345\244\264.md" index c101339d..c4d82edf 100644 --- "a/Solutions/0947. \347\247\273\351\231\244\346\234\200\345\244\232\347\232\204\345\220\214\350\241\214\346\210\226\345\220\214\345\210\227\347\237\263\345\244\264.md" +++ "b/Solutions/0947. \347\247\273\351\231\244\346\234\200\345\244\232\347\232\204\345\220\214\350\241\214\346\210\226\345\220\214\345\210\227\347\237\263\345\244\264.md" @@ -5,9 +5,9 @@ ## 题目大意 -**描述**:二维平面中有 `n` 块石头,每块石头都在整数坐标点上,且每个坐标点上最多只能有一块石头。如果一块石头的同行或者同列上有其他石头存在,那么就可以移除这块石头。 +**描述**:二维平面中有 $n$ 块石头,每块石头都在整数坐标点上,且每个坐标点上最多只能有一块石头。如果一块石头的同行或者同列上有其他石头存在,那么就可以移除这块石头。 -给你一个长度为 `n` 的数组 `stones` ,其中 `stones[i] = [xi, yi]` 表示第 `i` 块石头的位置。 +给你一个长度为 $n$ 的数组 $stones$ ,其中 $stones[i] = [xi, yi]$ 表示第 $i$ 块石头的位置。 **要求**:返回可以移除的石子的最大数量。 @@ -51,9 +51,9 @@ 题目「求最多可以移走的石头数目」也可以换一种思路:「求最少留下的石头数目」。 -- 如果两个石头 `A`、`B` 处于同一行或者同一列,我们就可以删除石头 `A` 或 `B`,最少留下 `1` 个石头。 -- 如果三个石头 `A`、`B`、`C`,其中 `A`、`B` 处于同一行,`B`、`C` 处于同一列,则我们可以先删除石头 `A`,再删除石头 `C`,最少留下 `1` 个石头。 -- 如果有 `n` 个石头,其中每个石头都有一个同行或者同列的石头,则我们可以将 `n - 1` 个石头都删除,最少留下 `1` 个石头。 +- 如果两个石头 $A$、$B$ 处于同一行或者同一列,我们就可以删除石头 $A$ 或 $B$,最少留下 $1$ 个石头。 +- 如果三个石头 $A$、$B$、$C$,其中 $A$、$B$ 处于同一行,$B$、$C$ 处于同一列,则我们可以先删除石头 $A$,再删除石头 $C$,最少留下 $1$ 个石头。 +- 如果有 $n$ 个石头,其中每个石头都有一个同行或者同列的石头,则我们可以将 $n - 1$ 个石头都删除,最少留下 $1$ 个石头。 通过上面的分析,我们可以利用并查集,将同行、同列的石头都加入到一个集合中。这样「最少可以留下的石头」就是并查集中集合的个数。 @@ -116,5 +116,5 @@ class Solution: ### 思路 1:复杂度分析 -- **时间复杂度**:$O(n \times \alpha(n))$。其中 $n$ 是石子个数。$\alpha$ 是反 `Ackerman` 函数。 +- **时间复杂度**:$O(n \times \alpha(n))$。其中 $n$ 是石子个数。$\alpha$ 是反 Ackerman 函数。 - **空间复杂度**:$O(n)$。 \ No newline at end of file diff --git "a/Solutions/1631. \346\234\200\345\260\217\344\275\223\345\212\233\346\266\210\350\200\227\350\267\257\345\276\204.md" "b/Solutions/1631. \346\234\200\345\260\217\344\275\223\345\212\233\346\266\210\350\200\227\350\267\257\345\276\204.md" index 3fb02a0b..ce8b4d54 100644 --- "a/Solutions/1631. \346\234\200\345\260\217\344\275\223\345\212\233\346\266\210\350\200\227\350\267\257\345\276\204.md" +++ "b/Solutions/1631. \346\234\200\345\260\217\344\275\223\345\212\233\346\266\210\350\200\227\350\267\257\345\276\204.md" @@ -5,27 +5,58 @@ ## 题目大意 -给定一个 `rows * cols` 大小的二维数组 `heights`,其中 `heights[i][j]` 表示为位置 `(i, j)` 的高度。 +**描述**:给定一个 $rows \times cols$ 大小的二维数组 $heights$,其中 $heights[i][j]$ 表示为位置 $(i, j)$ 的高度。 -现在要从左上角 `(0, 0)` 位置出发,经过方格的一些点,到达右下角 `(n - 1, n - 1)` 位置上。其中所经过路径的花费为「这条路径上所有相邻位置的最大高度差绝对值」。 +现在要从左上角 $(0, 0)$ 位置出发,经过方格的一些点,到达右下角 $(n - 1, n - 1)$ 位置上。其中所经过路径的花费为「这条路径上所有相邻位置的最大高度差绝对值」。 -现在要求:计算从 `(0, 0)` 位置到 `(n - 1, n - 1)` 的最优路径的花费。 +**要求**:计算从 $(0, 0)$ 位置到 $(n - 1, n - 1)$ 的最优路径的花费。 -最优路径指的路径上「所有相邻位置最大高度差绝对值」最小的那条路径。 +**说明**: + +- **最优路径**:路径上「所有相邻位置最大高度差绝对值」最小的那条路径。 +- $rows == heights.length$。 +- $columns == heights[i].length$。 +- $1 \le rows, columns \le 100$。 +- $1 \le heights[i][j] \le 10^6$。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/10/25/ex1.png) + +```python +输入:heights = [[1,2,2],[3,8,2],[5,3,5]] +输出:2 +解释:路径 [1,3,5,3,5] 连续格子的差值绝对值最大为 2 。 +这条路径比路径 [1,2,2,2,5] 更优,因为另一条路径差值最大值为 3。 +``` + +- 示例 2: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/10/25/ex2.png) + +```python +输入:heights = [[1,2,3],[3,8,4],[5,3,5]] +输出:1 +解释:路径 [1,2,3,4,5] 的相邻格子差值绝对值最大为 1 ,比路径 [1,3,5,3,5] 更优。 +``` ## 解题思路 +### 思路 1:并查集 + 将整个网络抽象为一个无向图,每个点与相邻的点(上下左右)之间都存在一条无向边,边的权重为两个点之间的高度差绝对值。 -我们要找到左上角到右下角的最优路径,可以遍历所有的点,将所有的边存储到数组中,每条边的存储格式为 `[x, y, h]`,意思是编号 `x` 的点和编号为 `y` 的点之间的权重为 `h`。 +我们要找到左上角到右下角的最优路径,可以遍历所有的点,将所有的边存储到数组中,每条边的存储格式为 $[x, y, h]$,意思是编号 $x$ 的点和编号为 $y$ 的点之间的权重为 $h$。 然后按照权重从小到大的顺序,对所有边进行排序。 -再按照权重大小遍历所有边,将其依次加入并查集中。并且每次都需要判断 `(0, 0)` 点和 `(n - 1, n - 1)` 点是否连通。 +再按照权重大小遍历所有边,将其依次加入并查集中。并且每次都需要判断 $(0, 0)$ 点和 $(n - 1, n - 1)$ 点是否连通。 如果连通,则该边的权重即为答案。 -## 代码 +### 思路 1:代码 ```python class UnionFind: @@ -83,3 +114,8 @@ class Solution: return 0 ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(m \times n \times \alpha(m \times n))$,其中 $\alpha$ 是反 Ackerman 函数。 +- **空间复杂度**:$O(m \times n)$。 + From 71d1fd57d607b3f2d7fbb71a53162b48cc56f44d Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 10 Nov 2023 17:20:08 +0800 Subject: [PATCH 004/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...70\345\220\214\347\232\204\346\240\221.md" | 42 ++++++++++++-- ...345\272\217\351\201\215\345\216\206 II.md" | 44 +++++++++++++-- ...00\345\260\217\346\267\261\345\272\246.md" | 38 ++++++++++++- ...02\347\202\271\346\214\207\351\222\210.md" | 43 +++++++++++++-- ...347\202\271\346\214\207\351\222\210 II.md" | 44 +++++++++++++-- ...21\350\277\255\344\273\243\345\231\250.md" | 34 +++++++++++- ...K \345\244\247\345\205\203\347\264\240.md" | 55 ++++++++++++++++--- ...4k\345\244\247\350\212\202\347\202\271.md" | 51 +++++++++++++++-- 8 files changed, 313 insertions(+), 38 deletions(-) diff --git "a/Solutions/0100. \347\233\270\345\220\214\347\232\204\346\240\221.md" "b/Solutions/0100. \347\233\270\345\220\214\347\232\204\346\240\221.md" index 6c783c32..e4026967 100644 --- "a/Solutions/0100. \347\233\270\345\220\214\347\232\204\346\240\221.md" +++ "b/Solutions/0100. \347\233\270\345\220\214\347\232\204\346\240\221.md" @@ -5,18 +5,44 @@ ## 题目大意 -给定两个二叉树 p 和 q。判断这两棵树是否相同。 +**描述**:给定两个二叉树的根节点 $p$ 和 $q$。 -两棵树相同的定义: +**要求**:判断这两棵树是否相同。 -- 结构上相同; -- 节点具有相同的值 +**说明**: + +- **两棵树相同的定义**:结构上相同;节点具有相同的值。 +- 两棵树上的节点数目都在范围 $[0, 100]$ 内。 +- $-10^4 \le Node.val \le 10^4$。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2020/12/20/ex1.jpg) + +```python +输入:p = [1,2,3], q = [1,2,3] +输出:True +``` + +- 示例 2: + +![](https://assets.leetcode.com/uploads/2020/12/20/ex2.jpg) + +```python +输入:p = [1,2], q = [1,null,2] +输出:False +``` ## 解题思路 -先判断两棵树的根节点是否相同,在递归地判断左右子树是否相同。 +### 思路 1:递归 + +1. 先判断两棵树的根节点是否相同。 +2. 然后再递归地判断左右子树是否相同。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -30,3 +56,7 @@ class Solution: return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right) ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(min(m, n))$,其中 $m$、$n$ 分别为两棵树中的节点数量。 +- **空间复杂度**:$O(min(m, n))$。 diff --git "a/Solutions/0107. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206 II.md" "b/Solutions/0107. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206 II.md" index 6a0e7af9..a2d884f5 100644 --- "a/Solutions/0107. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206 II.md" +++ "b/Solutions/0107. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206 II.md" @@ -5,22 +5,49 @@ ## 题目大意 -给定一个二叉树,返回其「自底向上」,且按「层序遍历」得到的节点值。 +**描述**:给定一个二叉树的根节点 $root$。 + +**要求**:返回其节点值按照「自底向上」的「层序遍历」(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)。 + +**说明**: + +- 树中节点数目在范围 $[0, 2000]$ 内。 +- $-1000 \le Node.val \le 1000$。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2021/02/19/tree1.jpg) + +```python +输入:root = [3,9,20,null,null,15,7] +输出:[[15,7],[9,20],[3]] +``` + +- 示例 2: + +```python +输入:root = [1] +输出:[[1]] +``` ## 解题思路 +### 思路 1:二叉树的层次遍历 + 先得到层次遍历的节点顺序,再将其进行反转返回即可。 其中层次遍历用到了广度优先搜索,不过需要增加一些变化。普通广度优先搜索只取一个元素,变化后的广度优先搜索每次取出第 i 层上所有元素。 具体步骤如下: -- 根节点入队 -- 当队列不为空时,求出当前队列长度 $s_i$ - - 依次从队列中取出这 $s_i$ 个元素,将其左右子节点入队,然后继续迭代 -- 当队列为空时,结束 +1. 根节点入队。 +2. 当队列不为空时,求出当前队列长度 $s_i$。 +3. 依次从队列中取出这 $s_i$ 个元素,将其左右子节点入队,然后继续迭代。 +4. 当队列为空时,结束。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -44,3 +71,8 @@ class Solution: return order[::-1] ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为树中节点个数。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/0111. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" "b/Solutions/0111. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" index 1f31ee91..d447e723 100644 --- "a/Solutions/0111. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" +++ "b/Solutions/0111. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" @@ -5,17 +5,44 @@ ## 题目大意 -给定一个二叉树,找出其最小深度。 +**描述**:给定一个二叉树的根节点 $root$。 -- 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 +**要求**:找出该二叉树的最小深度。 + +**说明**: + +- **最小深度**:从根节点到最近叶子节点的最短路径上的节点数量。 +- **叶子节点**:指没有子节点的节点。 +- 树中节点数的范围在 $[0, 10^5]$ 内。 +- $-1000 \le Node.val \le 1000$。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2020/10/12/ex_depth.jpg) + +```python +输入:root = [3,9,20,null,null,15,7] +输出:2 +``` + +- 示例 2: + +```python +输入:root = [2,null,3,null,4,null,5,null,6] +输出:5 +``` ## 解题思路 +### 思路 1:深度优先搜索 + 深度优先搜索递归遍历左右子树,记录最小深度。 对于每一个非叶子节点,计算其左右子树的最小叶子节点深度,将较小的深度+1 即为当前节点的最小叶子节点深度。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -42,3 +69,8 @@ class Solution: return min_depth + 1 ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 是树中的节点数量。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/0116. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" "b/Solutions/0116. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" index d025c511..9f675257 100644 --- "a/Solutions/0116. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" +++ "b/Solutions/0116. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" @@ -5,7 +5,7 @@ ## 题目大意 -给定一个完美二叉树,所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树结构如下: +**描述**:给定一个完美二叉树,所有叶子节点都在同一层,每个父节点都有两个子节点。完美二叉树结构如下: ```python struct Node { @@ -16,16 +16,44 @@ struct Node { } ``` -要求填充每个 next 指针,是的这个指针指向下一个右侧节点。如果找不到下一个右侧节点,则将 next 置为 None。 -示例: +**要求**:填充每个 `next` 指针,使得这个指针指向下一个右侧节点。如果找不到下一个右侧节点,则将 `next` 置为 `None`。 + +**说明**: + +- 初始状态下,所有 next 指针都被设置为 `None`。 +- 树中节点的数量在 $[0, 2^{12} - 1]$ 范围内。 +- $-1000 \le node.val \le 1000$。 +- 进阶: + - 只能使用常量级额外空间。 + - 使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。 + + +**示例**: + +- 示例 1: ![](https://assets.leetcode.com/uploads/2019/02/14/116_sample.png) +```python +输入:root = [1,2,3,4,5,6,7] +输出:[1,#,2,3,#,4,5,6,7,#] +解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化的输出按层序遍历排列,同一层节点由 next 指针连接,'#' 标志着每一层的结束。 +``` + +- 示例 2: + +```python +输入:root = [] +输出:[] +``` + ## 解题思路 -层次遍历。在层次遍历的过程中,依次取出每一层的节点,并进行连接。然后再扩展下一层节点。 +### 思路 1:层次遍历 -## 代码 +在层次遍历的过程中,依次取出每一层的节点,并进行连接。然后再扩展下一层节点。 + +### 思路 1:代码 ```python import collections @@ -50,3 +78,8 @@ class Solution: return root ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为树中的节点数量。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/0117. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210 II.md" "b/Solutions/0117. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210 II.md" index 8adf567f..0f561581 100644 --- "a/Solutions/0117. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210 II.md" +++ "b/Solutions/0117. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210 II.md" @@ -5,7 +5,7 @@ ## 题目大意 -给定一个完美二叉树,二叉树结构如下: +**描述**:给定一个二叉树。二叉树结构如下: ```python struct Node { @@ -16,14 +16,43 @@ struct Node { } ``` -要求填充每个 next 指针,是的这个指针指向下一个右侧节点。如果找不到下一个右侧节点,则将 next 置为 None。 -示例: +**要求**:填充每个 `next` 指针,使得这个指针指向下一个右侧节点。如果找不到下一个右侧节点,则将 `next` 置为 `None`。 + +**说明**: + +- 初始状态下,所有 next 指针都被设置为 `None`。 +- 树中节点的数量在 $[0, 6000]$ 范围内。 +- $-100 \le Node.val \le 100$。 +- 进阶: + - 只能使用常量级额外空间。 + - 使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2019/02/15/117_sample.png) + +```python +输入:root = [1,2,3,4,5,null,7] +输出:[1,#,2,3,#,4,5,7,#] +解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),'#' 表示每层的末尾。 +``` + +- 示例 2: + +```python +输入:root = [] +输出:[] +``` ## 解题思路 -层次遍历。在层次遍历的过程中,依次取出每一层的节点,并进行连接。然后再扩展下一层节点。 +### 思路 1:层次遍历 -## 代码 +在层次遍历的过程中,依次取出每一层的节点,并进行连接。然后再扩展下一层节点。 + +### 思路 1:代码 ```python import collections @@ -48,3 +77,8 @@ class Solution: return root ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为树中的节点数量。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/0173. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" "b/Solutions/0173. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" index 3007767c..dc3985ca 100644 --- "a/Solutions/0173. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" +++ "b/Solutions/0173. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" @@ -5,21 +5,46 @@ ## 题目大意 -实现一个二叉搜索树的迭代器 BSTIterator。表示一个按中序遍历二叉搜索树(BST)的迭代器: +**要求**:实现一个二叉搜索树的迭代器 BSTIterator。表示一个按中序遍历二叉搜索树(BST)的迭代器: - `def __init__(self, root: TreeNode):`:初始化 BSTIterator 类的一个对象,会给出二叉搜索树的根节点。 - `def hasNext(self) -> bool:`:如果向右指针遍历存在数字,则返回 True,否则返回 False。 - `def next(self) -> int:`:将指针向右移动,返回指针处的数字。 +**说明**: + +- 指针初始化为一个不存在于 BST 中的数字,所以对 `next()` 的首次调用将返回 BST 中的最小元素。 +- 可以假设 `next()` 调用总是有效的,也就是说,当调用 `next()` 时,BST 的中序遍历中至少存在一个下一个数字。 +- 树中节点的数目在范围 $[1, 10^5]$ 内。 +- $0 \le Node.val \le 10^6$。 +- 最多调用 $10^5$ 次 `hasNext` 和 `next` 操作。 +- 进阶:设计一个满足下述条件的解决方案,`next()` 和 `hasNext()` 操作均摊时间复杂度为 `O(1)` ,并使用 `O(h)` 内存。其中 `h` 是树的高度。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2018/12/25/bst-tree.png) + +```python +输入 +["BSTIterator", "next", "next", "hasNext", "next", "hasNext", "next", "hasNext", "next", "hasNext"] +[[[7, 3, 15, null, null, 9, 20]], [], [], [], [], [], [], [], [], []] +输出 +[null, 3, 7, true, 9, true, 15, true, 20, false] +``` + ## 解题思路 +### 思路 1:中序遍历二叉搜索树 + 中序遍历的顺序是:左、根、右。我们使用一个栈来保存节点,以便于迭代的时候取出对应节点。 - 初始的遍历当前节点的左子树,将其路径上的节点存储到栈中。 - 调用 next 方法的时候,从栈顶取出节点,因为之前已经将路径上的左子树全部存入了栈中,所以此时该节点的左子树为空,这时候取出节点右子树,再将右子树的左子树进行递归遍历,并将其路径上的节点存储到栈中。 - 调用 hasNext 的方法的时候,直接判断栈中是否有值即可。 -## 代码 +### 思路 1:代码 ```python class BSTIterator: @@ -43,3 +68,8 @@ class BSTIterator: return len(self.stack) != 0 ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为树中节点数量。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/0703. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254 K \345\244\247\345\205\203\347\264\240.md" "b/Solutions/0703. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254 K \345\244\247\345\205\203\347\264\240.md" index e41e37da..0e524c0c 100644 --- "a/Solutions/0703. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254 K \345\244\247\345\205\203\347\264\240.md" +++ "b/Solutions/0703. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254 K \345\244\247\345\205\203\347\264\240.md" @@ -5,18 +5,52 @@ ## 题目大意 -设计一个 ` KthLargest` 类,用于找到数据流中第 `k` 大元素。 +**要求**:设计一个 KthLargest 类,用于找到数据流中第 $k$ 大元素。 -- `KthLargest(int k, int[] nums)`:使用整数 k 和整数流 nums 初始化对象。 -- `int add(int val)`:将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。 +实现 KthLargest 类: + +- `KthLargest(int k, int[] nums)`:使用整数 $k$ 和整数流 $nums$ 初始化对象。 +- `int add(int val)`:将 $val$ 插入数据流 $nums$ 后,返回当前数据流中第 $k$ 大的元素。 + +**说明**: + +- $1 \le k \le 10^4$。 +- $0 \le nums.length \le 10^4$。 +- $-10^4 \le nums[i] \le 10^4$。 +- $-10^4 \le val \le 10^4$。 +- 最多调用 `add` 方法 $10^4$ 次。 +- 题目数据保证,在查找第 $k$ 大元素时,数组中至少有 $k$ 个元素。 + +**示例**: + +- 示例 1: + +```python +输入: +["KthLargest", "add", "add", "add", "add", "add"] +[[3, [4, 5, 8, 2]], [3], [5], [10], [9], [4]] +输出: +[null, 4, 5, 5, 8, 8] + +解释: +KthLargest kthLargest = new KthLargest(3, [4, 5, 8, 2]); +kthLargest.add(3); // return 4 +kthLargest.add(5); // return 5 +kthLargest.add(10); // return 5 +kthLargest.add(9); // return 8 +kthLargest.add(4); // return 8 +``` ## 解题思路 -- 建立大小为 `k` 的大顶堆,堆中元素保证不超过 k 个。 -- 每次 `add` 操作时,将新元素压入堆中,如果堆中元素超出了 `k` 个,则将堆中最小元素(堆顶)移除。 -- 此时堆中最小元素(堆顶)就是整个数据流中的第 `k` 大元素。 +### 思路 1:堆 + +1. 建立大小为 $k$ 的大顶堆,堆中元素保证不超过 $k$ 个。 +2. 每次 `add` 操作时,将新元素压入堆中,如果堆中元素超出了 $k$ 个,则将堆中最小元素(堆顶)移除。 -## 代码 +- 此时堆中最小元素(堆顶)就是整个数据流中的第 $k$ 大元素。 + +### 思路 1:代码 ```python import heapq @@ -38,3 +72,10 @@ class KthLargest: return self.min_heap[0] ``` +### 思路 1:复杂度分析 + +- **时间复杂度**: + - 初始化时间复杂度:$O(n \times \log k)$,其中 $n$ 为 $nums$ 初始化时的元素个数。 + - 单次插入时间复杂度:$O(\log k)$。 +- **空间复杂度**:$O(k)$。 + diff --git "a/Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" "b/Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" index 630a97c6..3670980c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" @@ -5,17 +5,55 @@ ## 题目大意 -给定一棵二叉搜索树的根节点 `root`,以及一个整数 `k`。 +**描述**:给定一棵二叉搜索树的根节点 $root$,以及一个整数 $k$。 -要求:找出二叉搜索树书第 `k` 大的节点。 +**要求**:找出二叉搜索树书第 $k$ 大的节点。 + +**说明**: + +- + +**示例**: + +- 示例 1: + +![](https://pic.leetcode.cn/1695101634-kzHKZW-image.png) + +```python +输入:root = [7, 3, 9, 1, 5], cnt = 2 + 7 + / \ + 3 9 + / \ + 1 5 +输出:7 +``` + +- 示例 2: + +![](https://pic.leetcode.cn/1695101636-ESZtLa-image.png) + +```python +输入: root = [10, 5, 15, 2, 7, null, 20, 1, null, 6, 8], cnt = 4 + 10 + / \ + 5 15 + / \ \ + 2 7 20 + / / \ + 1 6 8 +输出: 8 +``` ## 解题思路 +### 思路 1:遍历 + 已知中序遍历「左 -> 根 -> 右」能得到递增序列。逆中序遍历「右 -> 根 -> 左」可以得到递减序列。 -则根据「右 -> 根 -> 左」递归遍历 k 次,找到第 `k` 个节点位置,并记录答案。 +则根据「右 -> 根 -> 左」递归遍历 k 次,找到第 $k$ 个节点位置,并记录答案。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -40,3 +78,8 @@ class Solution: return self.res ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为树中节点数量。 +- **空间复杂度**:$O(n)$。 + From 865d9eef1a67377b07f6f3fa50980e3a55002c41 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 Nov 2023 15:33:13 +0800 Subject: [PATCH 005/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .... \345\277\253\344\271\220\346\225\260.md" | 47 ++++++++++++--- ...04\345\255\227\347\254\246\344\270\262.md" | 39 ++++++++++-- ...15\345\274\202\344\275\215\350\257\215.md" | 43 ++++++++++++-- ...61\347\232\204\346\225\260\345\255\227.md" | 59 ++++++++++++++----- 4 files changed, 154 insertions(+), 34 deletions(-) diff --git "a/Solutions/0202. \345\277\253\344\271\220\346\225\260.md" "b/Solutions/0202. \345\277\253\344\271\220\346\225\260.md" index fdebc689..193f86be 100644 --- "a/Solutions/0202. \345\277\253\344\271\220\346\225\260.md" +++ "b/Solutions/0202. \345\277\253\344\271\220\346\225\260.md" @@ -5,19 +5,47 @@ ## 题目大意 -给定一个整数 n,判断 n 是否为快乐数。 +**描述**:给定一个整数 $n$。 -快乐数定义: +**要求**:判断 $n$ 是否为快乐数。 -- 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 -- 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 -- 如果 可以变为 1,那么这个数就是快乐数。 +**说明**: + +- 快乐数定义: + + - 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 + - 然后重复这个过程直到这个数变为 $1$,也可能是 无限循环 但始终变不到 $1$。 + - 如果 可以变为 $1$,那么这个数就是快乐数。 +- $1 \le n \le 2^{31} - 1$。 + +**示例**: + +- 示例 1: + +```python +输入:n = 19 +输出:True +解释: +12 + 92 = 82 +82 + 22 = 68 +62 + 82 = 100 +12 + 02 + 02 = 1 +``` + +- 示例 2: + +```python +输入:n = 2 +输出:False +``` ## 解题思路 -根据题意,不断重复操作,数可能变为 1,也可能是无限循环。无限循环其实就相当于链表形成了闭环,可以用哈希表来存储为一位生成的数,每次判断该数是否存在于哈希表中。如果已经出现在哈希表里,则说明进入了无限循环,该数就不是快乐数。如果没有出现则将该数加入到哈希表中,进行下一次计算。不断重复这个过程,直到形成闭环或者变为 1 。 +### 思路 1:哈希表 / 集合 -## 代码 +根据题意,不断重复操作,数可能变为 $1$,也可能是无限循环。无限循环其实就相当于链表形成了闭环,可以用哈希表来存储为一位生成的数,每次判断该数是否存在于哈希表中。如果已经出现在哈希表里,则说明进入了无限循环,该数就不是快乐数。如果没有出现则将该数加入到哈希表中,进行下一次计算。不断重复这个过程,直到形成闭环或者变为 $1$。 + +### 思路 1:代码 ```python class Solution: @@ -37,3 +65,8 @@ class Solution: return n == 1 ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(\log n)$。 +- **空间复杂度**:$O(\log n)$。 + diff --git "a/Solutions/0205. \345\220\214\346\236\204\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0205. \345\220\214\346\236\204\345\255\227\347\254\246\344\270\262.md" index 649fc21a..9b0c2e53 100644 --- "a/Solutions/0205. \345\220\214\346\236\204\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0205. \345\220\214\346\236\204\345\255\227\347\254\246\344\270\262.md" @@ -5,17 +5,41 @@ ## 题目大意 -给定两个字符串 s 和 t,判断两者是否是同构字符串。 +**描述**:给定两个字符串 $s$ 和 $t$。 -如果 s 中的字符可以按某种映射关系替换得到 t 相同位置上的字符,那么两个字符串是同构的。 +**要求**:判断字符串 $s$ 和 $t$ 是否是同构字符串。 -每个字符都应当映射到另一个字符,且不改变字符顺序。不同字符不能映射到统一字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。 +**说明**: + +- **同构字符串**:如果 $s$ 中的字符可以按某种映射关系替换得到 $t$ 相同位置上的字符,那么两个字符串是同构的。 +- 每个字符都应当映射到另一个字符,且不改变字符顺序。不同字符不能映射到统一字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。 +- $1 \le s.length \le 5 \times 10^4$。 +- $t.length == s.length$。 +- $s$ 和 $t$ 由任意有效的 ASCII 字符组成。 + +**示例**: + +- 示例 1: + +```python +输入:s = "egg", t = "add" +输出:True +``` + +- 示例 2: + +```python +输入:s = "foo", t = "bar" +输出:False +``` ## 解题思路 -根据题目意思,s 和 t 每个位置上的字符是一一对应的。s 的每个字符都与 t 对应位置上的字符对应。可以考虑用哈希表来存储 s[i]: t[i] 的对应关系。但是这样不能只能保证对应位置上的字符是对应的,但不能保证是唯一对应的。所以还需要另一个哈希表来存储 t[i]:s[i] 的对应关系来判断是否是唯一对应的。 +### 思路 1:哈希表 -## 代码 +根据题目意思,字符串 $s$ 和 $t$ 每个位置上的字符是一一对应的。$s$ 的每个字符都与 $t$ 对应位置上的字符对应。可以考虑用哈希表来存储 $s[i]: t[i]$ 的对应关系。但是这样不能只能保证对应位置上的字符是对应的,但不能保证是唯一对应的。所以还需要另一个哈希表来存储 $t[i]:s[i]$ 的对应关系来判断是否是唯一对应的。 + +### 思路 1:代码 ```python class Solution: @@ -32,3 +56,8 @@ class Solution: return True ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为字符串长度。 +- **空间复杂度**:$O(|S|)$ ,其中 $S$ 是字符串字符集。 + diff --git "a/Solutions/0242. \346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" "b/Solutions/0242. \346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" index 3f6df973..28850d5a 100644 --- "a/Solutions/0242. \346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" +++ "b/Solutions/0242. \346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" @@ -5,16 +5,42 @@ ## 题目大意 -给定两个字符串 s 和 t ,判断 t 和 s 是否使用了相同的字符构成(字符出现的种类和数目都相同)。 +**描述**:给定两个字符串 $s$ 和 $t$。 + +**要求**:判断 $t$ 和 $s$ 是否使用了相同的字符构成(字符出现的种类和数目都相同)。 + +**说明**: + +- **字母异位词**:如果 $s$ 和 $t$ 中每个字符出现的次数都相同,则称 $s$ 和 $t$ 互为字母异位词。 +- $1 \le s.length, t.length \le 5 \times 10^4$。 +- $s$ 和 $t$ 仅包含小写字母。 + +**示例**: + +- 示例 1: + +```python +输入: s = "anagram", t = "nagaram" +输出: True +``` + +- 示例 2: + +```python +输入: s = "rat", t = "car" +输出: False +``` ## 解题思路 -1. 先判断字符串 s 和 t 的长度,不一样直接返回 false; -2. 分别遍历字符串 s 和 t。先遍历字符串 s,用哈希表存储字符串 s 中字符出现的频次; -3. 再遍历字符串 t,哈希表中减去对应字符的频次,出现频次 < 0 则输出 false; -4. 如果没出现频次 < 0,则输出 true。 +### 思路 1:哈希表 -## 代码 +1. 先判断字符串 $s$ 和 $t$ 的长度,不一样直接返回 `False`; +2. 分别遍历字符串 $s$ 和 $t$。先遍历字符串 $s$,用哈希表存储字符串 $s$ 中字符出现的频次; +3. 再遍历字符串 $t$,哈希表中减去对应字符的频次,出现频次小于 $0$ 则输出 `False`; +4. 如果没出现频次小于 $0$,则输出 `True`。 + +### 思路 1:代码 ```python def isAnagram(self, s: str, t: str) -> bool: @@ -36,3 +62,8 @@ def isAnagram(self, s: str, t: str) -> bool: return True ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n + m)$,其中 $n$、$m$ 分别为字符串 $s$、$t$ 的长度。 +- **空间复杂度**:$O(|S|)$,其中 $S$ 为字符集大小,此处 $S == 26$。 + diff --git "a/Solutions/0268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.md" "b/Solutions/0268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.md" index 025a7970..8f0e0250 100644 --- "a/Solutions/0268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/0268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.md" @@ -5,35 +5,47 @@ ## 题目大意 -给定一个长度为 n 的数组 nums,nums 包含 [0, n] 中的 n 个数,要求找出 [0, n] 范围内没有出现在数组中的那个数。 +**描述**:给定一个包含 $[0, n]$ 中 $n$ 个数的数组 $nums$。 -- n == len(nums) +**要求**:找出 $[0, n]$ 这个范围内没有出现在数组中的那个数。 +**说明**: + +- $n == nums.length$ - $1 \le n \le 10^4$ +- $0 \le nums[i] \le n$。 +- $nums$ 中的所有数字都独一无二。 -- $0 \le nums[i] \le n$ +**示例**: -- nums 中的数字是唯一的 +- 示例 1: - +```python +输入:nums = [3,0,1] +输出:2 +解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。 +``` -## 解题思路 +- 示例 2: -[0, n] 的范围有 n+1 个数(包含 0)。现在给了我们 n 个数,要求找出其中缺失的那个数。 +```python +输入:nums = [0,1] +输出:2 +解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。 +``` -### 1. 哈希表 +## 解题思路 -将 nums 中所有元素插入到哈希表中,然后遍历 [0, n],找到缺失的数字。 +$[0, n]$ 的范围有 $n + 1$ 个数(包含 $0$)。现在给了我们 $n$ 个数,要求找出其中缺失的那个数。 -这里的哈希表也可以用长度为 n+1 的数组代替。 +### 思路 1:哈希表 -### 2. 数学计算 +将 $nums$ 中所有元素插入到哈希表中,然后遍历 $[0, n]$,找到缺失的数字。 -已知 [0, n] 的求和公式为:$\sum_{i=0}^n i = \frac{n*(n+1)}{2}$,则用 [0, n] 的和,减去数组中所有元素的和,就得到了缺失数字。 +这里的哈希表也可以用长度为 $n + 1$ 的数组代替。 -## 代码 +### 思路 1:代码 -1. 哈希表 ```python class Solution: def missingNumber(self, nums: List[int]) -> int: @@ -44,12 +56,27 @@ class Solution: return num ``` -2. 数学计算 +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$。 +- **空间复杂度**:$O(n)$。 + +### 思路 2:数学计算 + +已知 $[0, n]$ 的求和公式为:$\sum_{i=0}^n i = \frac{n*(n+1)}{2}$,则用 $[0, n]$ 的和,减去数组中所有元素的和,就得到了缺失数字。 + +### 思路 2:代码 + ```python class Solution: def missingNumber(self, nums: List[int]) -> int: sum_nums = sum(nums) n = len(nums) - return (n+1)*n//2 - sum_nums + return (n + 1) * n // 2 - sum_nums ``` +### 思路 2:复杂度分析 + +- **时间复杂度**:$O(n)$。 +- **空间复杂度**:$O(1)$。 + From 6b0bbbe20c878810b2ab5744a643d8dbde22084f Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 Nov 2023 15:33:15 +0800 Subject: [PATCH 006/158] Update 03.LeetCode-Guide.md --- Contents/00.Introduction/03.LeetCode-Guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/00.Introduction/03.LeetCode-Guide.md b/Contents/00.Introduction/03.LeetCode-Guide.md index faff8d9b..74dcf783 100644 --- a/Contents/00.Introduction/03.LeetCode-Guide.md +++ b/Contents/00.Introduction/03.LeetCode-Guide.md @@ -125,7 +125,7 @@ LeetCode 提供了题目的搜索过滤功能。可以筛选相关题单、不 ##### 思路 1:枚举算法 1. 使用两重循环枚举数组中每一个数 $nums[i]$、$nums[j]$,判断所有的 $nums[i] + nums[j]$ 是否等于 $target$。 -2. 如果出现 $nums[i] + nums[j] == target$,则说明数组中存在和为 $target$ 的两个整数,将两个整数的下标 $i$、$$j$ 输出即可。 +2. 如果出现 $nums[i] + nums[j] == target$,则说明数组中存在和为 $target$ 的两个整数,将两个整数的下标 $i$、$j$ 输出即可。 ##### 思路 1:代码 From 9f3fb25330975fc5eab1defdee72fbd4701ddafb Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 8 Dec 2023 09:08:03 +0800 Subject: [PATCH 007/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...44\346\225\260\344\271\213\345\222\214.md" | 2 +- ...46\347\224\237\344\272\272\346\225\260.md" | 40 +++++++++++++------ 2 files changed, 28 insertions(+), 14 deletions(-) diff --git "a/Solutions/0001. \344\270\244\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0001. \344\270\244\346\225\260\344\271\213\345\222\214.md" index 2823e04d..574dd6c2 100644 --- "a/Solutions/0001. \344\270\244\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0001. \344\270\244\346\225\260\344\271\213\345\222\214.md" @@ -38,7 +38,7 @@ ### 思路 1:枚举算法 1. 使用两重循环枚举数组中每一个数 $nums[i]$、$nums[j]$,判断所有的 $nums[i] + nums[j]$ 是否等于 $target$。 -2. 如果出现 $nums[i] + nums[j] == target$,则说明数组中存在和为 $target$ 的两个整数,将两个整数的下标 $i$、$$j$ 输出即可。 +2. 如果出现 $nums[i] + nums[j] == target$,则说明数组中存在和为 $target$ 的两个整数,将两个整数的下标 $i$、$j$ 输出即可。 ### 思路 1:代码 diff --git "a/Solutions/1450. \345\234\250\346\227\242\345\256\232\346\227\266\351\227\264\345\201\232\344\275\234\344\270\232\347\232\204\345\255\246\347\224\237\344\272\272\346\225\260.md" "b/Solutions/1450. \345\234\250\346\227\242\345\256\232\346\227\266\351\227\264\345\201\232\344\275\234\344\270\232\347\232\204\345\255\246\347\224\237\344\272\272\346\225\260.md" index 0a94a339..3a46fb9c 100644 --- "a/Solutions/1450. \345\234\250\346\227\242\345\256\232\346\227\266\351\227\264\345\201\232\344\275\234\344\270\232\347\232\204\345\255\246\347\224\237\344\272\272\346\225\260.md" +++ "b/Solutions/1450. \345\234\250\346\227\242\345\256\232\346\227\266\351\227\264\345\201\232\344\275\234\344\270\232\347\232\204\345\255\246\347\224\237\344\272\272\346\225\260.md" @@ -5,9 +5,9 @@ ## 题目大意 -**描述**:给你两个长度相等的整数数组,一个表示开始时间的数组 `startTime` ,另一个表示结束时间的数组 `endTime`。再给定一个整数 `queryTime` 作为查询时间。已知第 `i` 名学生在 `startTime[i]` 时开始写作业并于 `endTime[i]` 时完成作业。 +**描述**:给你两个长度相等的整数数组,一个表示开始时间的数组 $startTime$ ,另一个表示结束时间的数组 $endTime$。再给定一个整数 $queryTime$ 作为查询时间。已知第 $i$ 名学生在 $startTime[i]$ 时开始写作业并于 $endTime[i]$ 时完成作业。 -**要求**:返回在查询时间 `queryTime` 时正在做作业的学生人数。即能够使 `queryTime` 处于区间 `[startTime[i], endTime[i]]` 的学生人数。 +**要求**:返回在查询时间 $queryTime$ 时正在做作业的学生人数。即能够使 $queryTime$ 处于区间 $[startTime[i], endTime[i]]$ 的学生人数。 **说明**: @@ -30,9 +30,9 @@ ### 思路 1:枚举算法 -- 维护一个用于统计在查询时间 `queryTime` 时正在做作业的学生人数的变量 `cnt`。然后遍历所有学生的开始时间和结束时间。 -- 如果 `queryTime` 在区间 `[startTime[i], endTime[i]]` 之间,即 `startTime[i] <= queryTime <= endTime[i]`,则令 `cnt` 加 `1`。 -- 遍历完输出统计人数 `cnt`。 +- 维护一个用于统计在查询时间 $queryTime$ 时正在做作业的学生人数的变量 $cnt$。然后遍历所有学生的开始时间和结束时间。 +- 如果 $queryTime$ 在区间 $[startTime[i], endTime[i]]$ 之间,即 $startTime[i] <= queryTime <= endTime[i]$,则令 $cnt$ 加 $1$。 +- 遍历完输出统计人数 $cnt$。 ### 思路 1:枚举算法代码 @@ -47,11 +47,16 @@ class Solution: return cnt ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组中的元素个数。 +- **空间复杂度**:$O(1)$。 + ### 思路 2:线段树 -- 因为 $1 \le startTime[i] \le endTime[i] \le 1000$,所以我们可以维护一个区间为 `[0, 1000]` 的线段树,初始化所有区间值都为 `0`。 -- 然后遍历所有学生的开始时间和结束时间,并将区间 `[startTime[i], endTime[i]]` 值加 `1`。 -- 在线段树中查询 `queryTime` 对应的单点区间 `[queryTime, queryTime]` 的最大值为多少。 +- 因为 $1 \le startTime[i] \le endTime[i] \le 1000$,所以我们可以维护一个区间为 $[0, 1000]$ 的线段树,初始化所有区间值都为 $0$。 +- 然后遍历所有学生的开始时间和结束时间,并将区间 $[startTime[i], endTime[i]]$ 值加 $1$。 +- 在线段树中查询 $queryTime$ 对应的单点区间 $[queryTime, queryTime]$ 的最大值为多少。 ### 思路 2:线段树代码 @@ -228,14 +233,19 @@ class Solution: return self.STree.query_interval(queryTime, queryTime) ``` +### 思路 2:复杂度分析 + +- **时间复杂度**:$O(n \times \log n)$,其中 $n$ 为数组元素的个数。 +- **空间复杂度**:$O(n)$。 + ### 思路 3:树状数组 -- 因为 $1 \le startTime[i] \le endTime[i] \le 1000$,所以我们可以维护一个区间为 `[0, 1000]` 的树状数组。 +- 因为 $1 \le startTime[i] \le endTime[i] \le 1000$,所以我们可以维护一个区间为 $[0, 1000]$ 的树状数组。 - 注意: - - 树状数组中 `update(self, index, delta):` 指的是将对应元素 `nums[index] ` 加上 `delta`。 - - `query(self, index):` 指的是 `index` 位置之前的元素和,即前缀和。 -- 然后遍历所有学生的开始时间和结束时间,将树状数组上 `startTime[i]` 的值增加 `1`,再将树状数组上`endTime[i]` 的值减少 `1`。 -- 则查询 `queryTime` 位置的前缀和即为答案。 + - 树状数组中 $update(self, index, delta):$ 指的是将对应元素 $nums[index] $ 加上 $delta$。 + - $query(self, index):$ 指的是 $index$ 位置之前的元素和,即前缀和。 +- 然后遍历所有学生的开始时间和结束时间,将树状数组上 $startTime[i]$ 的值增加 $1$,再将树状数组上$endTime[i]$ 的值减少 $1$。 +- 则查询 $queryTime$ 位置的前缀和即为答案。 ### 思路 3:树状数组代码 @@ -271,3 +281,7 @@ class Solution: return bit.query(queryTime) ``` +### 思路 3:复杂度分析 + +- **时间复杂度**:$O(n \times \log n)$,其中 $n$ 为数组元素的个数。 +- **空间复杂度**:$O(n)$。 From 41b4368f155587450c2e052cecd9ac10d9a43491 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 8 Dec 2023 09:08:42 +0800 Subject: [PATCH 008/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=8C09.=20?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E7=AE=97=E6=B3=95=E3=80=8D=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01.Enumeration-Algorithm.md | 16 ++-- .../01.Recursive-Algorithm.md | 50 ++++++------- .../01.Divide-And-Conquer-Algorithm.md | 44 +++++------ .../01.Backtracking-Algorithm.md | 73 +++++++++---------- .../01.Greedy-Algorithm.md | 30 ++++---- .../06.Bit-Operation/01.Bit-Operation.md | 36 ++++----- 6 files changed, 125 insertions(+), 124 deletions(-) diff --git a/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md b/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md index 35b9bb3b..6e438003 100644 --- a/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md +++ b/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md @@ -87,9 +87,9 @@ #### 3.1.2 题目大意 -**描述**:给定一个整数数组 `nums` 和一个整数目标值 `target`。 +**描述**:给定一个整数数组 $nums$ 和一个整数目标值 $target$。 -**要求**:在该数组中找出和为 `target` 的两个整数,并输出这两个整数的下标。可以按任意顺序返回答案。 +**要求**:在该数组中找出和为 $target$ 的两个整数,并输出这两个整数的下标。可以按任意顺序返回答案。 **说明**: @@ -121,8 +121,8 @@ ##### 思路 1:枚举算法 -1. 使用两重循环枚举数组中每一个数 `nums[i]`、`nums[j]`,判断所有的 `nums[i] + nums[j]` 是否等于 `target`。 -2. 如果出现 `nums[i] + nums[j] == target`,则说明数组中存在和为 `target` 的两个整数,将两个整数的下标 `i`、`j` 输出即可。 +1. 使用两重循环枚举数组中每一个数 $nums[i]$、$nums[j]$,判断所有的 $nums[i] + nums[j]$ 是否等于 $target$。 +2. 如果出现 $nums[i] + nums[j] == target$,则说明数组中存在和为 $target$ 的两个整数,将两个整数的下标 $i$、$j$ 输出即可。 ##### 思路 1:代码 @@ -138,7 +138,7 @@ class Solution: ##### 思路 1:复杂度分析 -- **时间复杂度**:$O(n^2)$ +- **时间复杂度**:$O(n^2)$,其中 $n$ 为数组 $nums$ 的元素数量。 - **空间复杂度**:$O(1)$。 ### 3.2 计数质数 @@ -155,7 +155,7 @@ class Solution: **说明**: -- $0 \le n \le 5 * 10^6$。 +- $0 \le n \le 5 \times 10^6$。 **示例**: @@ -184,7 +184,7 @@ class Solution: 这样我们就可以通过枚举 $[2, n - 1]$ 上的所有数 $x$,并判断 $x$ 是否为质数。 -在遍历枚举的同时,我们维护一个用于统计小于 $n$ 的质数数量的变量 `cnt`。如果符合要求,则将计数 `cnt` 加 $1$。最终返回该数目作为答案。 +在遍历枚举的同时,我们维护一个用于统计小于 $n$ 的质数数量的变量 $cnt$。如果符合要求,则将计数 $cnt$ 加 $1$。最终返回该数目作为答案。 考虑到如果 $i$ 是 $x$ 的因数,则 $\frac{x}{i}$ 也必然是 $x$ 的因数,则我们只需要检验这两个因数中的较小数即可。而较小数一定会落在 $[2, \sqrt x]$ 上。因此我们在检验 $x$ 是否为质数时,只需要枚举 $[2, \sqrt x]$ 中的所有数即可。 @@ -254,7 +254,7 @@ class Solution: 我们可以在 $[1, n]$ 区间中枚举整数三元组 $(a, b, c)$ 中的 $a$ 和 $b$。然后判断 $a^2 + b^2$ 是否小于等于 $n$,并且是完全平方数。 -在遍历枚举的同时,我们维护一个用于统计平方和三元组数目的变量 `cnt`。如果符合要求,则将计数 `cnt` 加 $1$。最终,我们返回该数目作为答案。 +在遍历枚举的同时,我们维护一个用于统计平方和三元组数目的变量 $cnt$。如果符合要求,则将计数 $cnt$ 加 $1$。最终,我们返回该数目作为答案。 利用枚举算法统计平方和三元组数目的时间复杂度为 $O(n^2)$。 diff --git a/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md b/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md index 81823e2d..bf69f8d8 100644 --- a/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md +++ b/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md @@ -6,7 +6,7 @@ $fact(n) = \begin{cases} 1 & \text{n = 0} \cr n * fact(n - 1) & \text{n > 0} \end{cases}$ -根据阶乘计算方法的数学定义,我们可以使用调用函数自身的方式来实现阶乘函数 `fact(n)` ,其实现代码可以写作: +根据阶乘计算方法的数学定义,我们可以使用调用函数自身的方式来实现阶乘函数 $fact(n)$ ,其实现代码可以写作: ```python def fact(n): @@ -15,7 +15,7 @@ def fact(n): return n * fact(n - 1) ``` -以 `n = 6` 为例,上述代码中阶乘函数 `fact(6):` 的计算过程如下: +以 $n = 6$ 为例,上述代码中阶乘函数 $fact(6)$ 的计算过程如下: ```python fact(6) @@ -36,21 +36,21 @@ fact(6) 上面的例子也可以用语言描述为: -1. 函数从 `fact(6)` 开始,一层层地调用 `fact(5)`、`fact(4)`、…… 一直调用到最底层的 `fact(0)`。 -2. 当 `n == 0` 时,`fact(0)` 不再继续调用自身,而是直接向上一层返回结果 `1`。 -3. `fact(1)` 通过下一层 `fact(0)` 的计算结果得出 `fact(1) = 1 * 1 = 1`,从而向上一层返回结果 `1`。 -4. `fact(2)` 通过下一层 `fact(1)` 的计算结果得出 `fact(2) = 2 * 1 = 2 `,从而向上一层返回结果 `2`。 -5. `fact(3)` 通过下一层 `fact(2)` 的计算结果得出 `fact(3) = 3 * 2 = 6 `,从而向上一层返回结果 `6`。 -6. `fact(4)` 通过下一层 `fact(3)` 的计算结果得出 `fact(4) = 4 * 6 = 24`,从而向上一层返回结果 `24`。 -7. `fact(5)` 通过下一层 `fact(4)` 的计算结果得出 `fact(5) = 5 * 24 = 120`,从而向上一层返回结果 `120`。 -8. `fact(6)` 通过下一层 `fact(5)` 的计算结果得出 `fact(6) = 6 * 120 = 720`,从而返回函数的最终结果 `720`。 +1. 函数从 $fact(6)$ 开始,一层层地调用 $fact(5)$、$fact(4)$、…… 一直调用到最底层的 $fact(0)$。 +2. 当 $n == 0$ 时,$fact(0)$ 不再继续调用自身,而是直接向上一层返回结果 $1$。 +3. $fact(1)$ 通过下一层 $fact(0)$ 的计算结果得出 $fact(1) = 1 \times 1 = 1$,从而向上一层返回结果 $1$。 +4. $fact(2)$ 通过下一层 $fact(1)$ 的计算结果得出 $fact(2) = 2 \times 1 = 2 $,从而向上一层返回结果 $2$。 +5. $fact(3)$ 通过下一层 $fact(2)$ 的计算结果得出 $fact(3) = 3 \times 2 = 6 $,从而向上一层返回结果 $6$。 +6. $fact(4)$ 通过下一层 $fact(3)$ 的计算结果得出 $fact(4) = 4 \times 6 = 24$,从而向上一层返回结果 $24$。 +7. $fact(5)$ 通过下一层 $fact(4)$ 的计算结果得出 $fact(5) = 5 \times 24 = 120$,从而向上一层返回结果 $120$。 +8. $fact(6)$ 通过下一层 $fact(5)$ 的计算结果得出 $fact(6) = 6 \times 120 = 720$,从而返回函数的最终结果 $720$。 这就是阶乘函数的递归计算过程。 根据上面的描述,我们可以把阶乘函数的递归计算过程分为两个部分: -1. 先逐层向下调用自身,直到达到结束条件(即 `n == 0`)。 -2. 然后再向上逐层返回结果,直到返回原问题的解(即返回 `fact(6) == 720`)。 +1. 先逐层向下调用自身,直到达到结束条件(即 $n == 0$)。 +2. 然后再向上逐层返回结果,直到返回原问题的解(即返回 $fact(6) == 720$)。 这两个部分也可以叫做「递推过程」和「回归过程」,如下面两幅图所示: @@ -117,11 +117,11 @@ fact(6) 递归的终止条件也叫做递归出口。在写出了递推公式之后,就要考虑递归的终止条件是什么。如果没有递归的终止条件,函数就会无限地递归下去,程序就会失控崩溃了。通常情况下,递归的终止条件是问题的边界值。 -在找到递归的终止条件时,我们应该直接给出该条件下的处理方法。一般地,在这种情境下,问题的解决方案是直观的、容易的。例如阶乘中 `fact(0) = 1`。斐波那契数列中 `f(1) = 1, f(2) = 2`。 +在找到递归的终止条件时,我们应该直接给出该条件下的处理方法。一般地,在这种情境下,问题的解决方案是直观的、容易的。例如阶乘中 $fact(0) = 1$。斐波那契数列中 $f(1) = 1$,$f(2) = 2$。 ### 3.3 将递推公式和终止条件翻译成代码 -在写出递推公式和明确终止条件之后,我们就可以将其翻译成代码了。这一步也可以分为 3 步来做: +在写出递推公式和明确终止条件之后,我们就可以将其翻译成代码了。这一步也可以分为 $3$ 步来做: 1. **定义递归函数**:明确函数意义、传入参数、返回结果等。 2. **书写递归主体**:提取重复的逻辑,缩小问题规模。 @@ -131,7 +131,7 @@ fact(6) 在定义递归函数时,一定要明确递归函数的意义,也就是要明白这个问题传入的参数是什么,最终返回的结果是要解决的什么问题。 -比如说阶乘函数 `fact(n)`,这个函数的传入参数是问题的规模 `n`,最终返回的结果是 `n` 的阶乘值。 +比如说阶乘函数 $fact(n)$,这个函数的传入参数是问题的规模 $n$,最终返回的结果是 $n$ 的阶乘值。 #### 3.3.2 书写递归主体 @@ -191,15 +191,15 @@ $f(n) = \begin{cases} 0 & n = 0 \cr 1 & n = 1 \cr f(n - 2) + f(n - 1) & n > 1 \e #### 5.1.2 题目大意 -**描述**:给定一个整数 `n`。 +**描述**:给定一个整数 $n$。 -**要求**:计算第 `n` 个斐波那契数。 +**要求**:计算第 $n$ 个斐波那契数。 **说明**: - 斐波那契数列的定义如下: - - `f(0) = 0, f(1) = 1`。 - - `f(n) = f(n - 1) + f(n - 2)`,其中 `n > 1`。 + - $f(0) = 0, f(1) = 1$。 + - $f(n) = f(n - 1) + f(n - 2)$,其中 $n > 1$。 **示例**: @@ -226,10 +226,10 @@ $f(n) = \begin{cases} 0 & n = 0 \cr 1 & n = 1 \cr f(n - 2) + f(n - 1) & n > 1 \e 根据我们的递推三步走策略,写出对应的递归代码。 -1. 写出递推公式:`f(n) = f(n - 1) + f(n - 2)`。 -2. 明确终止条件:`f(0) = 0, f(1) = 1`。 +1. 写出递推公式:$f(n) = f(n - 1) + f(n - 2)$。 +2. 明确终止条件:$f(0) = 0, f(1) = 1$。 3. 翻译为递归代码: - 1. 定义递归函数:`fib(self, n)` 表示输入参数为问题的规模 `n`,返回结果为第 `n` 个斐波那契数。 + 1. 定义递归函数:`fib(self, n)` 表示输入参数为问题的规模 $n$,返回结果为第 $n$ 个斐波那契数。 2. 书写递归主体:`return self.fib(n - 1) + self.fib(n - 2)`。 3. 明确递归终止条件: 1. `if n == 0: return 0` @@ -260,7 +260,7 @@ class Solution: #### 5.2.2 题目大意 -**描述**:给定一个二叉树的根节点 `root`。 +**描述**:给定一个二叉树的根节点 $root$。 **要求**:找出该二叉树的最大深度。 @@ -291,11 +291,11 @@ class Solution: 根据递归三步走策略,写出对应的递归代码。 -1. 写出递推公式:`当前二叉树的最大深度 = max(当前二叉树左子树的最大深度, 当前二叉树右子树的最大深度) + 1`。 +1. 写出递推公式:**当前二叉树的最大深度 = max(当前二叉树左子树的最大深度, 当前二叉树右子树的最大深度) + 1**。 - 即:先得到左右子树的高度,在计算当前节点的高度。 2. 明确终止条件:当前二叉树为空。 3. 翻译为递归代码: - 1. 定义递归函数:`maxDepth(self, root)` 表示输入参数为二叉树的根节点 `root`,返回结果为该二叉树的最大深度。 + 1. 定义递归函数:`maxDepth(self, root)` 表示输入参数为二叉树的根节点 $root$,返回结果为该二叉树的最大深度。 2. 书写递归主体:`return max(self.maxDepth(root.left) + self.maxDepth(root.right))`。 3. 明确递归终止条件:`if not root: return 0` diff --git a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md b/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md index 4cf0124b..87fea158 100644 --- a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md +++ b/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md @@ -18,16 +18,18 @@ ![](https://qcdn.itcharge.cn/images/20220414093828.png) -分治算法一般都比较适合使用递归算法来实现。但除了递归算法之外,分治算法还可以通过迭代算法来实现。比较常见的例子有:快速傅里叶变换算法、二分查找算法、非递归实现的归并排序算法等等。 +一般情况下,分治算法比较适合使用递归算法来实现。但除了递归算法之外,分治算法还可以通过迭代算法来实现。比较常见的例子有:快速傅里叶变换算法、二分查找算法、非递归实现的归并排序算法等等。 + +我们先来讲解一下分支算法的适用条件,再来讲解一下基本步骤。 ### 1.3 分治算法的适用条件 分治算法能够解决的问题,一般需要满足以下 $4$ 个条件: -1. 原问题可以分解为若干个规模较小的相同子问题。 -2. 分解出来的子问题可以独立求解,即子问题之间不包含公共的子子问题。 -3. 具有分解的终止条件,也就是说当问题的规模足够小时,能够用较简单的方法解决。 -4. 子问题的解可以合并为原问题的解,并且合并操作的复杂度不能太高,否则就无法起到减少算法总体复杂度的效果了。 +1. **可分解**:原问题可以分解为若干个规模较小的相同子问题。 +2. **子问题可独立求解**:分解出来的子问题可以独立求解,即子问题之间不包含公共的子子问题。 +3. **具有分解的终止条件**:当问题的规模足够小时,能够用较简单的方法解决。 +4. **可合并**:子问题的解可以合并为原问题的解,并且合并操作的复杂度不能太高,否则就无法起到减少算法总体复杂度的效果了。 ## 2. 分治算法的基本步骤 @@ -46,15 +48,15 @@ 按照分而治之的策略,在编写分治算法的代码时,也是按照上面的 $3$ 个步骤来编写的,其对应的伪代码如下: ```python -def divide_and_conquer(problem): # problem 为问题规模 - if problem < d: # 当问题规模足够小时,直接解决该问题 - return solove(); # 直接求解 +def divide_and_conquer(problems_n): # problems_n 为问题规模 + if problems_n < d: # 当问题规模足够小时,直接解决该问题 + return solove() # 直接求解 - k_problems = divide(problem) # 将问题分解为 k 个相同形式的子问题 + problems_k = divide(problems_n) # 将问题分解为 k 个相同形式的子问题 res = [0 for _ in range(k)] # res 用来保存 k 个子问题的解 - for k_problem in k_problems: - res[i] = divide_and_conquer(k_problem) # 递归的求解 k 个子问题 + for problem_k in problems_k: + res[i] = divide_and_conquer(problem_k) # 递归的求解 k 个子问题 ans = merge(res) # 合并 k 个子问题的解 return ans # 返回原问题的解 @@ -66,7 +68,7 @@ def divide_and_conquer(problem): # problem 为问题规模 一般来讲,分治算法将一个问题划分为 $a$ 个形式相同的子问题,每个子问题的规模为 $n/b$,则总的时间复杂度的递归表达式可以表示为: -$T(n) = \begin{cases} \begin{array} \ \Theta{(1)} & n = 1 \cr a * T(n/b) + f(n) & n > 1 \end{array} \end{cases}$ +$T(n) = \begin{cases} \begin{array} \ \Theta{(1)} & n = 1 \cr a \times T(n/b) + f(n) & n > 1 \end{array} \end{cases}$ 其中,每次分解时产生的子问题个数是 $a$ ,每个子问题的规模是原问题规模的 $1 / b$,分解和合并 $a$ 个子问题的时间复杂度是 $f(n)$。 @@ -80,11 +82,11 @@ $T(n) = \begin{cases} \begin{array} \ \Theta{(1)} & n = 1 \cr a * T(n/b) + f(n) 我们得出归并排序算法的递归表达式如下: -$T(n) = \begin{cases} \begin{array} \ O{(1)} & n = 1 \cr 2T(n/2) + O(n) & n > 1 \end{array} \end{cases}$ +$T(n) = \begin{cases} \begin{array} \ O{(1)} & n = 1 \cr 2 \times T(n/2) + O(n) & n > 1 \end{array} \end{cases}$ 根据归并排序的递归表达式,当 $n > 1$ 时,可以递推求解: -$\begin{align} T(n) & = 2T(n/2) + O(n) \cr & = 2(2T(n / 4) + O(n/2)) + O(n) \cr & = 4T(n/4) + 2O(n) \cr & = 8T(n/8) + 3O(n) \cr & = …… \cr & = 2^x \times T(n/2^x) + x \times O(n) \end{align}$ +$\begin{align} T(n) & = 2 \times T(n/2) + O(n) \cr & = 2 \times (2 \times T(n / 4) + O(n/2)) + O(n) \cr & = 4 \times T(n/4) + 2 \times O(n) \cr & = 8 \times T(n/8) + 3 \times O(n) \cr & = …… \cr & = 2^x \times T(n/2^x) + x \times O(n) \end{align}$ 递推最终规模为 $1$,令 $n = 2^x$,则 $x = \log_2n$,则: @@ -122,7 +124,7 @@ $T(n) = \begin{cases} \begin{array} \ O{(1)} & n = 1 \cr 2T(n/2) + O(n) & n > 1 #### 4.1.2 题目大意 -**描述**:给定一个整数数组 `nums`。 +**描述**:给定一个整数数组 $nums$。 **要求**:对该数组升序排列。 @@ -189,13 +191,13 @@ class Solution: #### 4.2.2 题目大意 -**描述**:给定一个含有 $n$ 个元素有序的(升序)整型数组 `nums` 和一个目标值 `target`。 +**描述**:给定一个含有 $n$ 个元素有序的(升序)整型数组 $nums$ 和一个目标值 $target$。 -**要求**:返回 `target` 在数组 `nums` 中的位置,如果找不到,则返回 $-1$。 +**要求**:返回 $target$ 在数组 $nums$ 中的位置,如果找不到,则返回 $-1$。 **说明**: -- 假设 `nums` 中的所有元素是不重复的。 +- 假设 $nums$ 中的所有元素是不重复的。 - $n$ 将在 $[1, 10000]$ 之间。 - $-9999 \le nums[i] \le 9999$。 @@ -212,10 +214,10 @@ class Solution: 我们使用分治算法来解决这道题。与其他分治题目不一样的地方是二分查找不用进行合并过程,最小子问题的解就是原问题的解。 1. **分解**:将数组的 $n$ 个元素分解为左右两个各包含 $\frac{n}{2}$ 个元素的子序列。 -2. **求解**:取中间元素 `nums[mid]` 与 `target` 相比。 +2. **求解**:取中间元素 $nums[mid]$ 与 $target$ 相比。 1. 如果相等,则找到该元素; - 2. 如果 `nums[mid] < target`,则递归在左子序列中进行二分查找。 - 3. 如果 `nums[mid] > target`,则递归在右子序列中进行二分查找。 + 2. 如果 $nums[mid] < target$,则递归在左子序列中进行二分查找。 + 3. 如果 $nums[mid] > target$,则递归在右子序列中进行二分查找。 二分查找的的分治算法过程如下图所示。 diff --git a/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md b/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md index 0db8402f..7c3c1001 100644 --- a/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md +++ b/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md @@ -11,17 +11,17 @@ ## 2. 从全排列问题开始理解回溯算法 -以求解 `[1, 2, 3]` 的全排列为例,我们来讲解一下回溯算法的过程。 - -1. 选择以 `1` 为开头的全排列。 - 1. 选择以 `2` 为中间数字的全排列,则最后数字只能选择 `3`。即排列为:`[1, 2, 3]`。 - 2. 撤销选择以 `3` 为最后数字的全排列,再撤销选择以 `2` 为中间数字的全排列。然后选择以 `3` 为中间数字的全排列,则最后数字只能选择 `2`,即排列为:`[1, 3, 2]`。 -2. 撤销选择以 `2` 为最后数字的全排列,再撤销选择以 `3` 为中间数字的全排列,再撤销选择以 `1` 为开头的全排列。然后选择以 `2` 开头的全排列。 - 1. 选择以 `1` 为中间数字的全排列,则最后数字只能选择 `3`。即排列为:`[2, 1, 3]`。 - 2. 撤销选择以 `3` 为最后数字的全排列,再撤销选择以 `1` 为中间数字的全排列。然后选择以 `3` 为中间数字的全排列,则最后数字只能选择 `1`,即排列为:`[2, 3, 1]`。 -3. 撤销选择以 `1` 为最后数字的全排列,再撤销选择以 `3` 为中间数字的全排列,再撤销选择以 `2` 为开头的全排列,选择以 `3` 开头的全排列。 - 1. 选择以 `1` 为中间数字的全排列,则最后数字只能选择 `2`。即排列为:`[3, 1, 2]`。 - 2. 撤销选择以 `2` 为最后数字的全排列,再撤销选择以 `1` 为中间数字的全排列。然后选择以 `2` 为中间数字的全排列,则最后数字只能选择 `1`,即排列为:`[3, 2, 1]`。 +以求解 $[1, 2, 3]$ 的全排列为例,我们来讲解一下回溯算法的过程。 + +1. 选择以 $1$ 为开头的全排列。 + 1. 选择以 $2$ 为中间数字的全排列,则最后数字只能选择 $3$。即排列为:$[1, 2, 3]$。 + 2. 撤销选择以 $3$ 为最后数字的全排列,再撤销选择以 $2$ 为中间数字的全排列。然后选择以 $3$ 为中间数字的全排列,则最后数字只能选择 $2$,即排列为:$[1, 3, 2]$。 +2. 撤销选择以 $2$ 为最后数字的全排列,再撤销选择以 $3$ 为中间数字的全排列,再撤销选择以 $1$ 为开头的全排列。然后选择以 $2$ 开头的全排列。 + 1. 选择以 $1$ 为中间数字的全排列,则最后数字只能选择 $3$。即排列为:$[2, 1, 3]$。 + 2. 撤销选择以 $3$ 为最后数字的全排列,再撤销选择以 $1$ 为中间数字的全排列。然后选择以 $3$ 为中间数字的全排列,则最后数字只能选择 $1$,即排列为:$[2, 3, 1]$。 +3. 撤销选择以 $1$ 为最后数字的全排列,再撤销选择以 $3$ 为中间数字的全排列,再撤销选择以 $2$ 为开头的全排列,选择以 $3$ 开头的全排列。 + 1. 选择以 $1$ 为中间数字的全排列,则最后数字只能选择 $2$。即排列为:$[3, 1, 2]$。 + 2. 撤销选择以 $2$ 为最后数字的全排列,再撤销选择以 $1$ 为中间数字的全排列。然后选择以 $2$ 为中间数字的全排列,则最后数字只能选择 $1$,即排列为:$[3, 2, 1]$。 总结一下全排列的回溯过程: @@ -43,7 +43,7 @@ - 当一个决策分支探索完成之后,会逐层向上进行回溯。 - 每向上回溯一层,就是把所选择的「元素」从「当前状态」中移除,回退到没有选择该元素时的状态(或者说重置状态),从而进行其他分支的探索。 -根据上文的思路和决策树,我们来写一下全排列的回溯算法代码(假设给定数组 `nums` 中不存在重复元素)。则代码如下所示: +根据上文的思路和决策树,我们来写一下全排列的回溯算法代码(假设给定数组 $nums$ 中不存在重复元素)。则代码如下所示: ```python class Solution: @@ -90,9 +90,9 @@ backtracking(nums) 网络上给定的回溯算法解题步骤比较抽象,这里只做一下简单介绍。 1. **根据所给问题,定义问题的解空间**:要定义合适的解空间,包括解的组织形式和显约束。 - - **解的组织形式**:将解的组织形式都规范为⼀个 `n` 元组 ${x_1, x_2 …, x_n}$。 + - **解的组织形式**:将解的组织形式都规范为⼀个 $n$ 元组 ${x_1, x_2 …, x_n}$。 - **显约束**:对解分量的取值范围的限定,可以控制解空间的大小。 -2. **确定解空间的组织结构**:解空间的组织结构通常以解空间树的方式形象地表达,根据解空间树的不同,解空间分为⼦集树、排列树、`m` 叉树等。 +2. **确定解空间的组织结构**:解空间的组织结构通常以解空间树的方式形象地表达,根据解空间树的不同,解空间分为⼦集树、排列树、$m$ 叉树等。 3. **搜索解空间**:按照深度优先搜索策略,根据隐约束(约束函数和限界函数),在解空间中搜索问题的可⾏解或最优解。当发现当 前节点不满⾜求解条件时,就回溯,尝试其他路径。 - 如果问题只是求可⾏解,则只需设定约束函数即可,如果要求最优解,则需要设定约束函数和限界函数。 @@ -121,7 +121,7 @@ backtracking(nums) ### 4.3 将决策树和终止条件翻译成代码 -在明确所有选择和明确终止条件之后,我们就可以将其翻译成代码了。这一步也可以分为 `3` 步来做: +在明确所有选择和明确终止条件之后,我们就可以将其翻译成代码了。这一步也可以分为 $3$ 步来做: 1. 定义回溯函数(明确函数意义、传入参数、返回结果等)。 2. 书写回溯函数主体(给出约束条件、选择元素、递归搜索、撤销选择部分)。 @@ -133,7 +133,7 @@ backtracking(nums) - **传入参数和全局变量**:是由递归搜索阶段时的「当前状态」来决定的。最好是能通过传入参数和全局变量直接记录「当前状态」。 -比如全排列中,`backtracking(nums)` 这个函数的传入参数是 `nums`(可选择的元素列表),全局变量是 `res`(存放所有符合条件结果的集合数组)和 `path`(存放当前符合条件的结果)。`nums` 表示当前可选的元素,`path` 用于记录递归搜索阶段的「当前状态」。`res` 则用来保存递归搜索阶段的「所有状态」。 +比如全排列中,`backtracking(nums)` 这个函数的传入参数是 $nums$(可选择的元素列表),全局变量是 $res$(存放所有符合条件结果的集合数组)和 $path$(存放当前符合条件的结果)。$nums$ 表示当前可选的元素,$path$ 用于记录递归搜索阶段的「当前状态」。$res$ 则用来保存递归搜索阶段的「所有状态」。 - **返回结果**:返回结果是在遇到递归终止条件时,需要向上一层函数返回的信息。 @@ -167,7 +167,7 @@ for i in range(len(nums)): # 枚举可选元素列表 #### 5.1.2 题目大意 -**描述**:给定一个整数数组 `nums`,数组中的元素互不相同。 +**描述**:给定一个整数数组 $nums$,数组中的元素互不相同。 **要求**:返回该数组所有可能的不重复子集。可以按任意顺序返回解集。 @@ -175,7 +175,7 @@ for i in range(len(nums)): # 枚举可选元素列表 - $1 \le nums.length \le 10$。 - $-10 \le nums[i] \le 10$。 -- `nums` 中的所有元素互不相同。 +- $nums$ 中的所有元素互不相同。 **示例**: @@ -214,14 +214,14 @@ for i in range(len(nums)): # 枚举可选元素列表 3. **将决策树和终止条件翻译成代码:** 1. 定义回溯函数: - - `backtracking(nums, index):` 函数的传入参数是 `nums`(可选数组列表)和 `index`(代表当前正在考虑元素是 `nums[i]` ),全局变量是 `res`(存放所有符合条件结果的集合数组)和 `path`(存放当前符合条件的结果)。 - - `backtracking(nums, index):` 函数代表的含义是:在选择 `nums[index]` 的情况下,递归选择剩下的元素。 + - `backtracking(nums, index):` 函数的传入参数是 $nums$(可选数组列表)和 $index$(代表当前正在考虑元素是 $nums[i]$ ),全局变量是 $res$(存放所有符合条件结果的集合数组)和 $path$(存放当前符合条件的结果)。 + - `backtracking(nums, index):` 函数代表的含义是:在选择 $nums[index]$ 的情况下,递归选择剩下的元素。 2. 书写回溯函数主体(给出选择元素、递归搜索、撤销选择部分)。 - 从当前正在考虑元素,到数组结束为止,枚举出所有可选的元素。对于每一个可选元素: - - 约束条件:之前选过的元素不再重复选用。每次从 `index` 位置开始遍历而不是从 `0` 位置开始遍历就是为了避免重复。集合跟全排列不一样,子集中 `{1, 2}` 和 `{2, 1}` 是等价的。为了避免重复,我们之前考虑过的元素,就不再重复考虑了。 - - 选择元素:将其添加到当前子集数组 `path` 中。 + - 约束条件:之前选过的元素不再重复选用。每次从 $index$ 位置开始遍历而不是从 $0$ 位置开始遍历就是为了避免重复。集合跟全排列不一样,子集中 ${1, 2}$ 和 ${2, 1}$ 是等价的。为了避免重复,我们之前考虑过的元素,就不再重复考虑了。 + - 选择元素:将其添加到当前子集数组 $path$ 中。 - 递归搜索:在选择该元素的情况下,继续递归考虑下一个位置上的元素。 - - 撤销选择:将该元素从当前子集数组 `path` 中移除。 + - 撤销选择:将该元素从当前子集数组 $path$ 中移除。 ```python for i in range(index, len(nums)): # 枚举可选元素列表 path.append(nums[i]) # 选择元素 @@ -230,7 +230,7 @@ for i in range(len(nums)): # 枚举可选元素列表 ``` 3. 明确递归终止条件(给出递归终止条件,以及递归终止时的处理方法)。 - - 当遍历到决策树的叶子节点时,就终止了。也就是当正在考虑的元素位置到达数组末尾(即 `start >= len(nums)`)时,递归停止。 + - 当遍历到决策树的叶子节点时,就终止了。也就是当正在考虑的元素位置到达数组末尾(即 $start \ge len(nums)$)时,递归停止。 - 从决策树中也可以看出,子集需要存储的答案集合应该包含决策树上所有的节点,应该需要保存递归搜索的所有状态。所以无论是否达到终止条件,我们都应该将当前符合条件的结果放入到集合中。 ##### 思路 1:代码 @@ -256,7 +256,7 @@ class Solution: ##### 思路 1:复杂度分析 -- **时间复杂度**:$O(n \times 2^n)$,其中 $n$ 指的是数组 `nums` 的元素个数,$2^n$ 指的是所有状态数。每种状态需要 $O(n)$ 的时间来构造子集。 +- **时间复杂度**:$O(n \times 2^n)$,其中 $n$ 指的是数组 $nums$ 的元素个数,$2^n$ 指的是所有状态数。每种状态需要 $O(n)$ 的时间来构造子集。 - **空间复杂度**:$O(n)$,每种状态下构造子集需要使用 $O(n)$ 的空间。 ### 5.2 N 皇后 @@ -267,13 +267,13 @@ class Solution: #### 5.2.2 题目大意 -**描述**:给定一个整数 `n`。 +**描述**:给定一个整数 $n$。 -**要求**:返回所有不同的「`n` 皇后问题」的解决方案。每一种解法包含一个不同的「`n` 皇后问题」的棋子放置方案,该方案中的 `Q` 和 `.` 分别代表了皇后和空位。 +**要求**:返回所有不同的「$n$ 皇后问题」的解决方案。每一种解法包含一个不同的「$n$ 皇后问题」的棋子放置方案,该方案中的 `Q` 和 `.` 分别代表了皇后和空位。 **说明**: -- **n 皇后问题**:将 `n` 个皇后放置在 `n * n` 的棋盘上,并且使得皇后彼此之间不能攻击。 +- **n 皇后问题**:将 $n$ 个皇后放置在 $n \times n$ 的棋盘上,并且使得皇后彼此之间不能攻击。 - **皇后彼此不能相互攻击**:指的是任何两个皇后都不能处于同一条横线、纵线或者斜线上。 - $1 \le n \le 9$。 @@ -295,7 +295,7 @@ class Solution: 这道题是经典的回溯问题。我们可以按照行序来放置皇后,也就是先放第一行,再放第二行 …… 一直放到最后一行。 -对于 `n * n` 的棋盘来说,每一行有 `n` 列,也就有 `n` 种放法可供选择。我们可以尝试选择其中一列,查看是否与之前放置的皇后有冲突,如果没有冲突,则继续在下一行放置皇后。依次类推,直到放置完所有皇后,并且都不发生冲突时,就得到了一个合理的解。 +对于 $n \times n$ 的棋盘来说,每一行有 $n$ 列,也就有 $n$ 种放法可供选择。我们可以尝试选择其中一列,查看是否与之前放置的皇后有冲突,如果没有冲突,则继续在下一行放置皇后。依次类推,直到放置完所有皇后,并且都不发生冲突时,就得到了一个合理的解。 并且在放置完之后,通过回溯的方式尝试其他可能的分支。 @@ -313,15 +313,15 @@ class Solution: 1. 定义回溯函数: - - 首先我们先使用一个 `n * n` 大小的二维矩阵 `chessboard` 来表示当前棋盘,`chessboard` 中的字符 `Q` 代表皇后,`.` 代表空位,初始都为 `.`。 - - 然后定义回溯函数 `backtrack(chessboard, row): ` 函数的传入参数是 `chessboard`(棋盘数组)和 `row`(代表当前正在考虑放置第 `row` 行皇后),全局变量是 `res`(存放所有符合条件结果的集合数组)。 - - `backtrack(chessboard, row):` 函数代表的含义是:在放置好第 `row` 行皇后的情况下,递归放置剩下行的皇后。 + - 首先我们先使用一个 $n * n$ 大小的二维矩阵 $chessboard$ 来表示当前棋盘,$chessboard$ 中的字符 `Q` 代表皇后,`.` 代表空位,初始都为 `.`。 + - 然后定义回溯函数 `backtrack(chessboard, row): ` 函数的传入参数是 $chessboard$(棋盘数组)和 $row$(代表当前正在考虑放置第 $row$ 行皇后),全局变量是 $res$(存放所有符合条件结果的集合数组)。 + - `backtrack(chessboard, row):` 函数代表的含义是:在放置好第 $row$ 行皇后的情况下,递归放置剩下行的皇后。 2. 书写回溯函数主体(给出选择元素、递归搜索、撤销选择部分)。 - 枚举出当前行所有的列。对于每一列位置: - 约束条件:定义一个判断方法,先判断一下当前位置是否与之前棋盘上放置的皇后发生冲突,如果不发生冲突则继续放置,否则则继续向后遍历判断。 - - 选择元素:选择 `row, col` 位置放置皇后,将其棋盘对应位置设置为 `Q`。 + - 选择元素:选择 $row, col$ 位置放置皇后,将其棋盘对应位置设置为 `Q`。 - 递归搜索:在该位置放置皇后的情况下,继续递归考虑下一行。 - - 撤销选择:将棋盘上 `row, col` 位置设置为 `.`。 + - 撤销选择:将棋盘上 $row, col$ 位置设置为 `.`。 ```python # 判断当前位置 row, col 是否与之前放置的皇后发生冲突 @@ -355,8 +355,8 @@ class Solution: ``` 3. 明确递归终止条件(给出递归终止条件,以及递归终止时的处理方法)。 - - 当遍历到决策树的叶子节点时,就终止了。也就是在最后一行放置完皇后(即 `row == n`)时,递归停止。 - - 递归停止时,将当前符合条件的棋盘转换为答案需要的形式,然后将其存入答案数组 `res` 中即可。 + - 当遍历到决策树的叶子节点时,就终止了。也就是在最后一行放置完皇后(即 $row == n$)时,递归停止。 + - 递归停止时,将当前符合条件的棋盘转换为答案需要的形式,然后将其存入答案数组 $res$ 中即可。 ##### 思路 1:代码 @@ -409,7 +409,6 @@ class Solution: - **时间复杂度**:$O(n!)$,其中 $n$ 是皇后数量。 - **空间复杂度**:$O(n^2)$,其中 $n$ 是皇后数量。递归调用层数不会超过 $n$,每个棋盘的空间复杂度为 $O(n^2)$,所以空间复杂度为 $O(n^2)$。 - ## 参考资料 - 【题解】[回溯算法入门级详解 + 练习(持续更新) - 全排列 - 力扣](https://leetcode.cn/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liweiw/) diff --git a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md b/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md index 91c32e7a..b0c1447d 100644 --- a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md +++ b/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md @@ -19,7 +19,7 @@ #### 1.2.1 贪心选择性质 -> **贪心选择**:指的是一个问题的全局最优解可以通过一系列局部最优解(贪心选择)来得到。 +> **贪心选择性质**:指的是一个问题的全局最优解可以通过一系列局部最优解(贪心选择)来得到。 换句话说,当进行选择时,我们直接做出在当前问题中看来最优的选择,而不用去考虑子问题的解。在做出选择之后,才会去求解剩下的子问题,如下图所示。 @@ -29,7 +29,7 @@ #### 1.2.2 最优子结构性质 -> **最优子结构**:指的是一个问题的最优解包含其子问题的最优解。 +> **最优子结构性质**:指的是一个问题的最优解包含其子问题的最优解。 问题的最优子结构性质是该问题能否用贪心算法求解的关键。 @@ -74,9 +74,9 @@ #### 4.1.2 题目大意 -**描述**:一位很棒的家长为孩子们分发饼干。对于每个孩子 `i`,都有一个胃口值 `g[i]`,即每个小孩希望得到饼干的最小尺寸值。对于每块饼干 `j`,都有一个尺寸值 `s[j]`。只有当 `s[j] > g[i]` 时,我们才能将饼干 `j` 分配给孩子 `i`。每个孩子最多只能给一块饼干。 +**描述**:一位很棒的家长为孩子们分发饼干。对于每个孩子 $i$,都有一个胃口值 $g[i]$,即每个小孩希望得到饼干的最小尺寸值。对于每块饼干 $j$,都有一个尺寸值 $s[j]$。只有当 $s[j] > g[i]$ 时,我们才能将饼干 $j$ 分配给孩子 $i$。每个孩子最多只能给一块饼干。 -现在给定代表所有孩子胃口值的数组 `g` 和代表所有饼干尺寸的数组 `j`。 +现在给定代表所有孩子胃口值的数组 $g$ 和代表所有饼干尺寸的数组 $j$。 **要求**:尽可能满足越多数量的孩子,并求出这个最大数值。 @@ -110,7 +110,7 @@ 为了尽可能的满⾜更多的⼩孩,而且一块饼干不能掰成两半,所以我们应该尽量让胃口小的孩子吃小块饼干,这样胃口大的孩子才有大块饼干吃。 -所以,从贪心算法的角度来考虑,我们应该按照孩子的胃口从小到大对数组 `g` 进行排序,然后按照饼干的尺寸大小从小到大对数组 `s` 进行排序,并且对于每个孩子,应该选择满足这个孩子的胃口且尺寸最小的饼干。 +所以,从贪心算法的角度来考虑,我们应该按照孩子的胃口从小到大对数组 $g$ 进行排序,然后按照饼干的尺寸大小从小到大对数组 $s$ 进行排序,并且对于每个孩子,应该选择满足这个孩子的胃口且尺寸最小的饼干。 下面我们使用贪心算法三步走的方法解决这道题。 @@ -120,11 +120,11 @@ 使用贪心算法的代码解决步骤描述如下: -1. 对数组 `g`、`s` 进行从小到大排序,使用变量 `index_g` 和 `index_s` 分别指向 `g`、`s` 初始位置,使用变量 `res` 保存结果,初始化为 `0`。 -2. 对比每个元素 `g[index_g]` 和 `s[index_s]`: - 1. 如果 `g[index_g] <= s[index_s]`,说明当前饼干满足当前孩子胃口,则答案数量加 `1`,并且向右移动 `index_g` 和 `index_s`。 - 2. 如果 `g[index_g] > s[index_s]`,说明当前饼干无法满足当前孩子胃口,则向右移动 `index_s`,判断下一块饼干是否可以满足当前孩子胃口。 -3. 遍历完输出答案 `res`。 +1. 对数组 $g$、$s$ 进行从小到大排序,使用变量 $index\underline{}g$ 和 $index\underline{}s$ 分别指向 $g$、$s$ 初始位置,使用变量 $res$ 保存结果,初始化为 $0$。 +2. 对比每个元素 $g[index\underline{}g]$ 和 $s[index\underline{}s]$: + 1. 如果 $g[index\underline{}g] \le s[index\underline{}s]$,说明当前饼干满足当前孩子胃口,则答案数量加 $1$,并且向右移动 $index\underline{}g$ 和 $index\underline{}s$。 + 2. 如果 $g[index\underline{}g] > s[index\underline{}s]$,说明当前饼干无法满足当前孩子胃口,则向右移动 $index_s$,判断下一块饼干是否可以满足当前孩子胃口。 +3. 遍历完输出答案 $res$。 ##### 思路 1:代码 @@ -159,7 +159,7 @@ class Solution: #### 4.2.2 题目大意 -**描述**:给定一个区间的集合 `intervals`,其中 `intervals[i] = [starti, endi]`。从集合中移除部分区间,使得剩下的区间互不重叠。 +**描述**:给定一个区间的集合 $intervals$,其中 $intervals[i] = [starti, endi]$。从集合中移除部分区间,使得剩下的区间互不重叠。 **要求**:返回需要移除区间的最小数量。 @@ -203,10 +203,10 @@ class Solution: 使用贪心算法的代码解决步骤描述如下: -1. 将区间集合按照结束坐标升序排列,然后维护两个变量,一个是当前不重叠区间的结束时间 `end_pos`,另一个是不重叠区间的个数 `count`。初始情况下,结束坐标 `end_pos` 为第一个区间的结束坐标,`count` 为 `1`。 -2. 依次遍历每段区间。对于每段区间:`intervals[i]`: - 1. 如果 `end_pos <= intervals[i][0]`,即 `end_pos` 小于等于区间起始位置,则说明出现了不重叠区间,令不重叠区间数 `count` 加 `1`,`end_pos` 更新为新区间的结束位置。 -3. 最终返回「总区间个数 - 不重叠区间的最多个数」即 `len(intervals) - count` 作为答案。 +1. 将区间集合按照结束坐标升序排列,然后维护两个变量,一个是当前不重叠区间的结束时间 $end\underline{}pos$,另一个是不重叠区间的个数 $count$。初始情况下,结束坐标 $end\underline{}pos$ 为第一个区间的结束坐标,$count$ 为 $1$。 +2. 依次遍历每段区间。对于每段区间:$intervals[i]$: + 1. 如果 $end\underline{}pos \le intervals[i][0]$,即 $end\underline{}pos$ 小于等于区间起始位置,则说明出现了不重叠区间,令不重叠区间数 $count$ 加 $1$,$end\underline{}pos$ 更新为新区间的结束位置。 +3. 最终返回「总区间个数 - 不重叠区间的最多个数」即 $len(intervals) - count$ 作为答案。 ##### 思路 1:代码 diff --git a/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md b/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md index 4410f2ed..c080a28f 100644 --- a/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md +++ b/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md @@ -226,26 +226,26 @@ class Solution: | 功 能 | 位运算 | 示例 | | ----------------------------------------- | ------------------------------------------------------- | ------------------------- | -| **从右边开始,把最后一个 `1` 改写成 `0`** | x & (x - 1) | `100101000 -> 100100000` | -| **去掉右边起第一个 `1` 的左边** | x & (x ^ (x - 1))x & (-x) | `100101000 -> 1000` | +| **从右边开始,把最后一个 $1$ 改写成 $0$** | x & (x - 1) | `100101000 -> 100100000` | +| **去掉右边起第一个 $1$ 的左边** | x & (x ^ (x - 1))x & (-x) | `100101000 -> 1000` | | **去掉最后一位** | x >> 1 | `101101 -> 10110` | -| **取右数第 `k` 位** | x >> (k - 1) & 1 | `1101101 -> 1, k = 4` | -| **取末尾 `3` 位** | x & 7 | `1101101 -> 101` | -| **取末尾 `k` 位** | x & 15 | `1101101 -> 1101, k = 4` | -| **只保留右边连续的 `1`** | (x ^ (x + 1)) >> 1 | `100101111 -> 1111` | -| **右数第 `k` 位取反** | x ^ (1 << (k - 1)) | `101001 -> 101101, k = 3` | -| **在最后加一个 `0`** | x << 1 | `101101 -> 1011010` | -| **在最后加一个 `1`** | (x << 1) + 1 | `101101 -> 1011011` | -| **把右数第 `k` 位变成 `0`** | x & ~(1 << (k - 1)) | `101101 -> 101001, k = 3` | -| **把右数第 `k` 位变成 `1`** | x | (1 << (k - 1)) | `101001 -> 101101, k = 3` | -| **把右边起第一个 `0` 变成 `1`** | x | (x + 1) | `100101111 -> 100111111` | -| **把右边连续的 `0` 变成 `1`** | x | (x - 1) | `11011000 -> 11011111` | -| **把右边连续的 `1` 变成 `0`** | x & (x + 1) | `100101111 -> 100100000` | -| **把最后一位变成 `0`** | x | 1 - 1 | `101101 -> 101100` | -| **把最后一位变成 `1`** | x | 1 | `101100 -> 101101` | -| **把末尾 `k` 位变成 `1`** | x | (1 << k - 1) | `101001 -> 101111, k = 4` | +| **取右数第 $k$ 位** | x >> (k - 1) & 1 | `1101101 -> 1, k = 4` | +| **取末尾 $3$ 位** | x & 7 | `1101101 -> 101` | +| **取末尾 $k$ 位** | x & 15 | `1101101 -> 1101, k = 4` | +| **只保留右边连续的 $1$** | (x ^ (x + 1)) >> 1 | `100101111 -> 1111` | +| **右数第 $k$ 位取反** | x ^ (1 << (k - 1)) | `101001 -> 101101, k = 3` | +| **在最后加一个 $0$** | x << 1 | `101101 -> 1011010` | +| **在最后加一个 $1$** | (x << 1) + 1 | `101101 -> 1011011` | +| **把右数第 $k$ 位变成 $0$** | x & ~(1 << (k - 1)) | `101101 -> 101001, k = 3` | +| **把右数第 $k$ 位变成 $1$** | x | (1 << (k - 1)) | `101001 -> 101101, k = 3` | +| **把右边起第一个 $0$ 变成 $1$** | x | (x + 1) | `100101111 -> 100111111` | +| **把右边连续的 $0$ 变成 $1$** | x | (x - 1) | `11011000 -> 11011111` | +| **把右边连续的 $1$ 变成 $0$** | x & (x + 1) | `100101111 -> 100100000` | +| **把最后一位变成 $0$** | x | 1 - 1 | `101101 -> 101100` | +| **把最后一位变成 $1$** | x | 1 | `101100 -> 101101` | +| **把末尾 $k$ 位变成 $1$** | x | (1 << k - 1) | `101001 -> 101111, k = 4` | | **最后一位取反** | x ^ 1 | `101101 -> 101100` | -| **末尾 `k` 位取反** | x ^ (1 << k - 1) | `101001 -> 100110, k = 4` | +| **末尾 $k$ 位取反** | x ^ (1 << k - 1) | `101001 -> 100110, k = 4` | ### 3.3 二进制枚举子集 From 030dcca0e47f692d0b469369855a2be14f71fdf5 Mon Sep 17 00:00:00 2001 From: Zhiyao Wen <75983327+ZhiyaoWen999@users.noreply.github.com> Date: Sun, 10 Dec 2023 21:48:37 -0800 Subject: [PATCH 009/158] Update 01.Union-Find.md Fix the miss spelling --- Contents/07.Tree/05.Union-Find/01.Union-Find.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Contents/07.Tree/05.Union-Find/01.Union-Find.md b/Contents/07.Tree/05.Union-Find/01.Union-Find.md index 1939baa0..c2ddbc01 100644 --- a/Contents/07.Tree/05.Union-Find/01.Union-Find.md +++ b/Contents/07.Tree/05.Union-Find/01.Union-Find.md @@ -357,7 +357,7 @@ class UnionFind: if self.rank[root_x] < self.rank[root_y]: # x 的根节点对应的树的深度 小于 y 的根节点对应的树的深度 self.fa[root_x] = root_y # x 的根节点连接到 y 的根节点上,成为 y 的根节点的子节点 - elif self.rank[root_y] > self.rank[root_y]: # x 的根节点对应的树的深度 大于 y 的根节点对应的树的深度 + elif self.rank[root_x] > self.rank[root_y]: # x 的根节点对应的树的深度 大于 y 的根节点对应的树的深度 self.fa[root_y] = root_x # y 的根节点连接到 x 的根节点上,成为 x 的根节点的子节点 else: # x 的根节点对应的树的深度 等于 y 的根节点对应的树的深度 self.fa[root_x] = root_y # 向任意一方合并即可 @@ -544,4 +544,4 @@ class Solution: - 【书籍】算法训练营 - 陈小玉 著 - 【书籍】算法 第 4 版 - 谢路云 译 - 【书籍】算法竞赛进阶指南 - 李煜东 著 -- 【书籍】算法竞赛入门经典:训练指南 - 刘汝佳,陈锋 著 \ No newline at end of file +- 【书籍】算法竞赛入门经典:训练指南 - 刘汝佳,陈锋 著 From eea9d756e69819b6399d36570072096d8489c578 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 22 Dec 2023 16:25:00 +0800 Subject: [PATCH 010/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...43\347\240\201\346\226\271\346\263\225.md" | 32 ++++---- ...346\220\234\347\264\242\346\240\221 II.md" | 43 ++++++++-- ...50\350\276\211\344\270\211\350\247\222.md" | 25 ++++-- ...350\276\211\344\270\211\350\247\222 II.md" | 22 ++--- ...17\350\267\257\345\276\204\345\222\214.md" | 21 +++-- ...41\344\274\230\345\205\210\347\272\247.md" | 2 +- ...41\345\260\201\351\227\256\351\242\230.md" | 2 +- ...22\350\233\231\350\277\207\346\262\263.md" | 28 +++---- ...04\345\255\220\346\225\260\347\273\204.md" | 82 +++++++++++++++---- ...347\240\201\346\226\271\346\263\225 II.md" | 24 +++--- ...4\274\274 RGB \351\242\234\350\211\262.md" | 15 ++-- ...06\347\232\204\346\225\260\347\233\256.md" | 6 +- ...13\347\232\204\346\225\260\345\255\227.md" | 66 ++++++++++----- 13 files changed, 250 insertions(+), 118 deletions(-) diff --git "a/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" "b/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" index 18045cf5..a168bc10 100644 --- "a/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" +++ "b/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" @@ -5,25 +5,25 @@ ## 题目大意 -**描述**:给定一个数字字符串 `s`。该字符串已经按照下面的映射关系进行了编码: +**描述**:给定一个数字字符串 $s$。该字符串已经按照下面的映射关系进行了编码: -- `A` 映射为 `1`。 -- `B` 映射为 `2`。 +- `A` 映射为 $1$。 +- `B` 映射为 $2$。 - ... -- `Z` 映射为 `26`。 +- `Z` 映射为 $26$。 -基于上述映射的方法,现在对字符串 `s` 进行「解码」。即从数字到字母进行反向映射。比如 `"11106"` 可以映射为: +基于上述映射的方法,现在对字符串 $s$ 进行「解码」。即从数字到字母进行反向映射。比如 `"11106"` 可以映射为: -- `"AAJF"`,将消息分组为 `(1 1 10 6)`。 -- `"KJF"`,将消息分组为 `(11 10 6)`。 +- `"AAJF"`,将消息分组为 $(1 1 10 6)$。 +- `"KJF"`,将消息分组为 $(11 10 6)$。 **要求**:计算出共有多少种可能的解码方案。 **说明**: - $1 \le s.length \le 100$。 -- `s` 只包含数字,并且可能包含前导零。 -- 题目数据保证答案肯定是一个 `32` 位的整数。 +- $s$ 只包含数字,并且可能包含前导零。 +- 题目数据保证答案肯定是一个 $32$ 位的整数。 **示例**: @@ -45,14 +45,14 @@ ###### 2. 定义状态 -定义状态 `dp[i]` 表示为:字符串 `s` 前 `i` 个字符构成的字符串可能构成的翻译方案数。 +定义状态 $dp[i]$ 表示为:字符串 $s$ 前 $i$ 个字符构成的字符串可能构成的翻译方案数。 ###### 3. 状态转移方程 -`dp[i]` 的来源有两种情况: +$dp[i]$ 的来源有两种情况: -1. 使用了一个字符,对 `s[i]` 进行翻译。只要 `s[i] != 0`,就可以被翻译为 `A` ~ `I` 的某个字母,此时方案数为 `dp[i] = dp[i - 1]`。 -2. 使用了两个字符,对 `s[i - 1]` 和 `s[i]` 进行翻译,只有 `s[i - 1] != 0`,且 `s[i - 1]` 和 `s[i]` 组成的整数必须小于等于 `26` 才能翻译,可以翻译为 `J` ~ `Z` 中的某字母,此时方案数为 `dp[i] = dp[i - 2]`。 +1. 使用了一个字符,对 $s[i]$ 进行翻译。只要 $s[i] != 0$,就可以被翻译为 `A` ~ `I` 的某个字母,此时方案数为 $dp[i] = dp[i - 1]$。 +2. 使用了两个字符,对 $s[i - 1]$ 和 $s[i]$ 进行翻译,只有 $s[i - 1] != 0$,且 $s[i - 1]$ 和 $s[i]$ 组成的整数必须小于等于 $26$ 才能翻译,可以翻译为 `J` ~ `Z` 中的某字母,此时方案数为 $dp[i] = dp[i - 2]$。 这两种情况有可能是同时存在的,也有可能都不存在。在进行转移的时候,将符合要求的方案数累加起来即可。 @@ -62,12 +62,12 @@ $dp[i] += \begin{cases} \begin{array} \ dp[i-1] & s[i] \ne 0 \cr dp[i-2] & s[i- ###### 4. 初始条件 -- 字符串为空时,只有一个翻译方案,翻译为空字符串,即 `dp[0] = 1`。 -- 字符串只有一个字符时,需要考虑该字符是否为 `0`,不为 `0` 的话,`dp[1] = 1`,为 `0` 的话,`dp[0] = 0`。 +- 字符串为空时,只有一个翻译方案,翻译为空字符串,即 $dp[0] = 1$。 +- 字符串只有一个字符时,需要考虑该字符是否为 $0$,不为 $0$ 的话,$dp[1] = 1$,为 $0$ 的话,$dp[0] = 0$。 ###### 5. 最终结果 -根据我们之前定义的状态,`dp[i]` 表示为:字符串 `s` 前 `i` 个字符构成的字符串可能构成的翻译方案数。则最终结果为 `dp[size]`,`size` 为字符串长度。 +根据我们之前定义的状态,$dp[i]$ 表示为:字符串 $s$ 前 $i$ 个字符构成的字符串可能构成的翻译方案数。则最终结果为 $dp[size]$,$size$ 为字符串长度。 ### 思路 1:动态规划代码 diff --git "a/Solutions/0095. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221 II.md" "b/Solutions/0095. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221 II.md" index eb13d9d2..c4ed13bb 100644 --- "a/Solutions/0095. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221 II.md" +++ "b/Solutions/0095. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221 II.md" @@ -5,22 +5,48 @@ ## 题目大意 -给定一个整数 `n`,请返回以 `1` 到 `n` 为节点构成的「二叉搜索树」,可以按任意顺序返回答案。 +**描述**:给定一个整数 $n$。 + +**要求**:请生成返回以 $1$ 到 $n$ 为节点构成的「二叉搜索树」,可以按任意顺序返回答案。 + +**说明**: + +- $1 \le n \le 8$。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2021/01/18/uniquebstn3.jpg) + +```python +输入:n = 3 +输出:[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,null,2],[3,2,null,1]] +``` + +- 示例 2: + +```python +输入:n = 1 +输出:[[1]] +``` ## 解题思路 -如果根节点为 `i`,则左子树的节点为 `(1, 2, ..., i - 1)`,右子树的节点为 `(i + 1, i + 2, ..., n)`。可以递归的构建二叉树。 +### 思路 1:递归遍历 + +如果根节点为 $i$,则左子树的节点为 $(1, 2, ..., i - 1)$,右子树的节点为 $(i + 1, i + 2, ..., n)$。可以递归的构建二叉树。 -定义递归函数 `generateTrees(start, end)`,表示生成 `[left, ..., right]` 构成的所有可能的二叉搜索树。 +定义递归函数 `generateTrees(start, end)`,表示生成 $[left, ..., right]$ 构成的所有可能的二叉搜索树。 -- 如果 `start > end`,返回 [None]。 +- 如果 $start > end$,返回 `[None]`。 - 初始化存放所有可能二叉搜索树的数组。 -- 遍历 `[left, ..., right]` 的每一个节点 `i`,将其作为根节点。 +- 遍历 $[left, ..., right]$ 的每一个节点 $i$,将其作为根节点。 - 递归构建左右子树。 - 将所有符合要求的左右子树组合起来,将其加入到存放二叉搜索树的数组中。 - 返回存放二叉搜索树的数组。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -45,3 +71,8 @@ class Solution: return generateTrees(1, n) ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(C_n)$,其中 $C_n$ 是第 $n$ 个卡特兰数。 +- **空间复杂度**:$O(C_n)$,其中 $C_n$ 是第 $n$ 个卡特兰数。 + diff --git "a/Solutions/0118. \346\235\250\350\276\211\344\270\211\350\247\222.md" "b/Solutions/0118. \346\235\250\350\276\211\344\270\211\350\247\222.md" index 2060990c..e97957d6 100644 --- "a/Solutions/0118. \346\235\250\350\276\211\344\270\211\350\247\222.md" +++ "b/Solutions/0118. \346\235\250\350\276\211\344\270\211\350\247\222.md" @@ -5,9 +5,9 @@ ## 题目大意 -**描述**:给定一个整数 `numRows`。 +**描述**:给定一个整数 $numRows$。 -**要求**:生成前 `numRows` 行的杨辉三角。 +**要求**:生成前 $numRows$ 行的杨辉三角。 **说明**: @@ -30,6 +30,13 @@ ] ``` +- 示例 2: + +```python +输入: numRows = 1 +输出: [[1]] +``` + ## 解题思路 ### 思路 1:动态规划 @@ -40,16 +47,16 @@ ###### 2. 定义状态 -定义状态 `dp[i][j]` 为:杨辉三角第 `i` 行、第 `j` 列位置上的值。 +定义状态 $dp[i][j]$ 为:杨辉三角第 $i$ 行、第 $j$ 列位置上的值。 ###### 3. 状态转移方程 -根据观察,很容易得出状态转移方程为:`dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]`,此时 `i > 0,j > 0`。 +根据观察,很容易得出状态转移方程为:$dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]$,此时 $i > 0$,$j > 0$。 ###### 4. 初始条件 -- 每一行第一列都为 `1`,即 `dp[i][0] = 1`。 -- 每一行最后一列都为 `1`,即 `dp[i][i] = 1`。 +- 每一行第一列都为 $1$,即 $dp[i][0] = 1$。 +- 每一行最后一列都为 $1$,即 $dp[i][i] = 1$。 ###### 5. 最终结果 @@ -83,15 +90,15 @@ class Solution: ### 思路 2:动态规划 + 滚动数组优化 -因为 `dp[i][j]` 仅依赖于上一行(第 `i - 1` 行)的 `dp[i - 1][j - 1]` 和 `dp[i - 1][j]`,所以我们没必要保存所有阶段的状态,只需要保存上一阶段的所有状态和当前阶段的所有状态就可以了,这样使用两个一维数组分别保存相邻两个阶段的所有状态就可以实现了。 +因为 $dp[i][j]$ 仅依赖于上一行(第 $i - 1$ 行)的 $dp[i - 1][j - 1]$ 和 $dp[i - 1][j]$,所以我们没必要保存所有阶段的状态,只需要保存上一阶段的所有状态和当前阶段的所有状态就可以了,这样使用两个一维数组分别保存相邻两个阶段的所有状态就可以实现了。 其实我们还可以进一步进行优化,即我们只需要使用一个一维数组保存上一阶段的所有状态。 -定义 `dp[j]` 为杨辉三角第 `i` 行第 `j` 列位置上的值。则第 `i + 1` 行、第 `j` 列的值可以通过 `dp[j]` + `dp[j - 1]` 所得到。 +定义 $dp[j]$ 为杨辉三角第 $i$ 行第 $j$ 列位置上的值。则第 $i + 1$ 行、第 $j$ 列的值可以通过 $dp[j]$ + $dp[j - 1]$ 所得到。 这样我们就可以对这个一维数组保存的「上一阶段的所有状态值」进行逐一计算,从而获取「当前阶段的所有状态值」。 -需要注意:本题在计算的时候需要从右向左依次遍历每个元素位置,这是因为如果从左向右遍历,如果当前元素 `dp[j]` 已经更新为当前阶段第 `j` 列位置的状态值之后,右侧 `dp[j + 1]` 想要更新的话,需要的是上一阶段的状态值 `dp[j]`,而此时 `dp[j]` 已经更新了,会破坏当前阶段的状态值。而如果用从右向左的顺序,则不会出现该问题。 +需要注意:本题在计算的时候需要从右向左依次遍历每个元素位置,这是因为如果从左向右遍历,如果当前元素 $dp[j]$ 已经更新为当前阶段第 $j$ 列位置的状态值之后,右侧 $dp[j + 1]$ 想要更新的话,需要的是上一阶段的状态值 $dp[j]$,而此时 $dp[j]$ 已经更新了,会破坏当前阶段的状态值。而如果用从右向左的顺序,则不会出现该问题。 ### 思路 2:动态规划 + 滚动数组优化代码 diff --git "a/Solutions/0119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" "b/Solutions/0119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" index 91b41a60..d4822053 100644 --- "a/Solutions/0119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" +++ "b/Solutions/0119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" @@ -5,9 +5,9 @@ ## 题目大意 -**描述**:给定一个非负整数 `rowIndex`。 +**描述**:给定一个非负整数 $rowIndex$。 -**要求**:返回杨辉三角的第 `rowIndex` 行。 +**要求**:返回杨辉三角的第 $rowIndex$ 行。 **说明**: @@ -27,7 +27,7 @@ ### 思路 1:动态规划 -因为这道题是从 `0` 行开始计算,则可以先将 `rowIndex` 加 `1`,计算出总共的行数,即 `numRows = rowIndex + 1`。 +因为这道题是从 $0$ 行开始计算,则可以先将 $rowIndex$ 加 $1$,计算出总共的行数,即 $numRows = rowIndex + 1$。 ###### 1. 划分阶段 @@ -35,20 +35,20 @@ ###### 2. 定义状态 -定义状态 `dp[i][j]` 为:杨辉三角第 `i` 行、第 `j` 列位置上的值。 +定义状态 $dp[i][j]$ 为:杨辉三角第 $i$ 行、第 $j$ 列位置上的值。 ###### 3. 状态转移方程 -根据观察,很容易得出状态转移方程为:`dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]`,此时 `i > 0,j > 0`。 +根据观察,很容易得出状态转移方程为:$dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j]$,此时 $i > 0$,$j > 0$。 ###### 4. 初始条件 -- 每一行第一列都为 `1`,即 `dp[i][0] = 1`。 -- 每一行最后一列都为 `1`,即 `dp[i][i] = 1`。 +- 每一行第一列都为 $1$,即 $dp[i][0] = 1$。 +- 每一行最后一列都为 $1$,即 $dp[i][i] = 1$。 ###### 5. 最终结果 -根据题意和状态定义,将 `dp` 最后一行返回。 +根据题意和状态定义,将 $dp$ 最后一行返回。 ### 思路 1:代码 @@ -79,15 +79,15 @@ class Solution: ### 思路 2:动态规划 + 滚动数组优化 -因为 `dp[i][j]` 仅依赖于上一行(第 `i - 1` 行)的 `dp[i - 1][j - 1]` 和 `dp[i - 1][j]`,所以我们没必要保存所有阶段的状态,只需要保存上一阶段的所有状态和当前阶段的所有状态就可以了,这样使用两个一维数组分别保存相邻两个阶段的所有状态就可以实现了。 +因为 $dp[i][j]$ 仅依赖于上一行(第 $i - 1$ 行)的 $dp[i - 1][j - 1]$ 和 $dp[i - 1][j]$,所以我们没必要保存所有阶段的状态,只需要保存上一阶段的所有状态和当前阶段的所有状态就可以了,这样使用两个一维数组分别保存相邻两个阶段的所有状态就可以实现了。 其实我们还可以进一步进行优化,即我们只需要使用一个一维数组保存上一阶段的所有状态。 -定义 `dp[j]` 为杨辉三角第 `i` 行第 `j` 列位置上的值。则第 `i + 1` 行、第 `j` 列的值可以通过 `dp[j]` + `dp[j - 1]` 所得到。 +定义 $dp[j]$ 为杨辉三角第 $i$ 行第 $j$ 列位置上的值。则第 $i + 1$ 行、第 $j$ 列的值可以通过 $dp[j]$ + $dp[j - 1]$ 所得到。 这样我们就可以对这个一维数组保存的「上一阶段的所有状态值」进行逐一计算,从而获取「当前阶段的所有状态值」。 -需要注意:本题在计算的时候需要从右向左依次遍历每个元素位置,这是因为如果从左向右遍历,如果当前元素 `dp[j]` 已经更新为当前阶段第 `j` 列位置的状态值之后,右侧 `dp[j + 1]` 想要更新的话,需要的是上一阶段的状态值 `dp[j]`,而此时 `dp[j]` 已经更新了,会破坏当前阶段的状态值。而是用从左向左的顺序,则不会出现该问题。 +需要注意:本题在计算的时候需要从右向左依次遍历每个元素位置,这是因为如果从左向右遍历,如果当前元素 $dp[j]$ 已经更新为当前阶段第 $j$ 列位置的状态值之后,右侧 $dp[j + 1]$ 想要更新的话,需要的是上一阶段的状态值 $dp[j]$,而此时 $dp[j]$ 已经更新了,会破坏当前阶段的状态值。而是用从左向左的顺序,则不会出现该问题。 ### 思路 2:动态规划 + 滚动数组优化代码 diff --git "a/Solutions/0120. \344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" "b/Solutions/0120. \344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" index 22e28c5a..47a6ea0d 100644 --- "a/Solutions/0120. \344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" +++ "b/Solutions/0120. \344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" @@ -5,9 +5,9 @@ ## 题目大意 -**描述**:给定一个代表三角形的二维数组 `triangle`,`triangle` 共有 `n` 行,其中第 `i` 行(从 `0` 开始编号)包含了 `i + 1` 个数。 +**描述**:给定一个代表三角形的二维数组 $triangle$,$triangle$ 共有 $n$ 行,其中第 $i$ 行(从 $0$ 开始编号)包含了 $i + 1$ 个数。 -我们每一步只能从当前位置移动到下一行中相邻的节点上。也就是说,如果正位于第 `i` 行第 `j` 列的节点,那么下一步可以移动到第 `i + 1` 行第 `j` 列的位置上,或者第 `i + 1` 行,第 `j + 1` 列的位置上。 +我们每一步只能从当前位置移动到下一行中相邻的节点上。也就是说,如果正位于第 $i$ 行第 $j$ 列的节点,那么下一步可以移动到第 $i + 1$ 行第 $j$ 列的位置上,或者第 $i + 1$ 行,第 $j + 1$ 列的位置上。 **要求**:找出自顶向下的最小路径和。 @@ -33,6 +33,13 @@ 自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。 ``` +- 示例 2: + +```python +输入:triangle = [[-10]] +输出:-10 +``` + ## 解题思路 ### 思路 1:动态规划 @@ -43,21 +50,21 @@ ###### 2. 定义状态 -定义状态 `dp[i][j]` 表示为:从顶部走到第 `i` 行(从 `0` 开始编号)、第 `j` 列的位置时的最小路径和。 +定义状态 $dp[i][j]$ 表示为:从顶部走到第 $i$ 行(从 $0$ 开始编号)、第 $j$ 列的位置时的最小路径和。 ###### 3. 状态转移方程 -由于每一步只能从当前位置移动到下一行中相邻的节点上,想要移动到第 `i` 行、第 `j` 列的位置,那么上一步只能在第 `i - 1` 行、第 `j - 1` 列的位置上,或者在第 `i - 1` 行、第 `j` 列的位置上。则状态转移方程为: +由于每一步只能从当前位置移动到下一行中相邻的节点上,想要移动到第 $i$ 行、第 $j$ 列的位置,那么上一步只能在第 $i - 1$ 行、第 $j - 1$ 列的位置上,或者在第 $i - 1$ 行、第 $j$ 列的位置上。则状态转移方程为: -`dp[i][j] = min(dp[i - 1][j - 1], dp[i - 1][j]) + triangle[i][j]`。其中 `triangle[i][j]` 表示第 `i` 行、第 `j` 列位置上的元素值。 +$dp[i][j] = min(dp[i - 1][j - 1], dp[i - 1][j]) + triangle[i][j]$。其中 $triangle[i][j]$ 表示第 $i$ 行、第 $j$ 列位置上的元素值。 ###### 4. 初始条件 - 在第 `0` 行、第 `j` 列时,最小路径和为 `triangle[0][0]`,即 `dp[0][0] = triangle[0][0]`。 + 在第 $0$ 行、第 $j$ 列时,最小路径和为 $triangle[0][0]$,即 $dp[0][0] = triangle[0][0]$。 ###### 5. 最终结果 -根据我们之前定义的状态,`dp[i][j]` 表示为:从顶部走到第 `i` 行(从 `0` 开始编号)、第 `j` 列的位置时的最小路径和。为了计算出最小路径和,则需要再遍历一遍 `dp[size - 1]` 行的每一列,求出最小值即为最终结果。 +根据我们之前定义的状态,$dp[i][j]$ 表示为:从顶部走到第 $i$ 行(从 $0$ 开始编号)、第 $j$ 列的位置时的最小路径和。为了计算出最小路径和,则需要再遍历一遍 $dp[size - 1]$ 行的每一列,求出最小值即为最终结果。 ### 思路 1:动态规划代码 diff --git "a/Solutions/0241. \344\270\272\350\277\220\347\256\227\350\241\250\350\276\276\345\274\217\350\256\276\350\256\241\344\274\230\345\205\210\347\272\247.md" "b/Solutions/0241. \344\270\272\350\277\220\347\256\227\350\241\250\350\276\276\345\274\217\350\256\276\350\256\241\344\274\230\345\205\210\347\272\247.md" index e2ee372b..63ccb2a2 100644 --- "a/Solutions/0241. \344\270\272\350\277\220\347\256\227\350\241\250\350\276\276\345\274\217\350\256\276\350\256\241\344\274\230\345\205\210\347\272\247.md" +++ "b/Solutions/0241. \344\270\272\350\277\220\347\256\227\350\241\250\350\276\276\345\274\217\350\256\276\350\256\241\344\274\230\345\205\210\347\272\247.md" @@ -79,5 +79,5 @@ class Solution: ### 思路 1:复杂度分析 -- **时间复杂度**:$O(C_n)$,其中 $n$ 为结果数组的大小,$C_n$ 是第 $k$ 个卡特兰数。 +- **时间复杂度**:$O(C_n)$,其中 $n$ 为结果数组的大小,$C_n$ 是第 $n$ 个卡特兰数。 - **空间复杂度**:$O(C_n)$。 diff --git "a/Solutions/0354. \344\277\204\347\275\227\346\226\257\345\245\227\345\250\203\344\277\241\345\260\201\351\227\256\351\242\230.md" "b/Solutions/0354. \344\277\204\347\275\227\346\226\257\345\245\227\345\250\203\344\277\241\345\260\201\351\227\256\351\242\230.md" index 93907937..ae47e707 100644 --- "a/Solutions/0354. \344\277\204\347\275\227\346\226\257\345\245\227\345\250\203\344\277\241\345\260\201\351\227\256\351\242\230.md" +++ "b/Solutions/0354. \344\277\204\347\275\227\346\226\257\345\245\227\345\250\203\344\277\241\345\260\201\351\227\256\351\242\230.md" @@ -5,7 +5,7 @@ ## 题目大意 -给定一个二维整数数组 envelopes 表示信封,其中 `envelopes[i] = [wi, hi]`,表示第 i 个信封的宽度 wi 和高度 hi。 +给定一个二维整数数组 envelopes 表示信封,其中 $envelopes[i] = [wi, hi]$,表示第 $i$ 个信封的宽度 $w_i$ 和高度 $h_i$。 当一个信封的宽度和高度比另一个信封大时,则小的信封可以放进大信封里,就像俄罗斯套娃一样。 diff --git "a/Solutions/0403. \351\235\222\350\233\231\350\277\207\346\262\263.md" "b/Solutions/0403. \351\235\222\350\233\231\350\277\207\346\262\263.md" index 0788463e..ad1102eb 100644 --- "a/Solutions/0403. \351\235\222\350\233\231\350\277\207\346\262\263.md" +++ "b/Solutions/0403. \351\235\222\350\233\231\350\277\207\346\262\263.md" @@ -7,11 +7,11 @@ **描述**:一只青蛙要过河,这条河被等分为若干个单元格,每一个单元格内可能放油一块石子(也可能没有)。青蛙只能跳到有石子的单元格内,不能跳到没有石子的单元格内。 -现在给定一个严格按照升序排序的数组 `stones`,其中 `stones[i]` 代表第 `i` 块石子所在的单元格序号。默认第 `0` 块石子序号为 `0`(即 `stones[0] == 0`)。 +现在给定一个严格按照升序排序的数组 $stones$,其中 $stones[i]$ 代表第 $i$ 块石子所在的单元格序号。默认第 $0$ 块石子序号为 $0$(即 $stones[0] == 0$)。 -开始时,青蛙默认站在序号为 `0` 石子上(即 `stones[0]`),并且假定它第 `1` 步只能跳跃 `1` 个单位(即只能从序号为 `0` 的单元格跳到序号为 `1` 的单元格)。 +开始时,青蛙默认站在序号为 $0$ 石子上(即 $stones[0]$),并且假定它第 $1$ 步只能跳跃 $1$ 个单位(即只能从序号为 $0$ 的单元格跳到序号为 $1$ 的单元格)。 -如果青蛙在上一步向前跳跃了 `k` 个单位,则下一步只能向前跳跃 `k - 1`、`k` 或者 `k + 1` 个单位。 +如果青蛙在上一步向前跳跃了 $k$ 个单位,则下一步只能向前跳跃 $k - 1$、$k$ 或者 $k + 1$ 个单位。 **要求**:判断青蛙能否成功过河(即能否在最后一步跳到最后一块石子上)。如果能,则返回 `True`;否则,则返回 `False`。 @@ -36,11 +36,11 @@ ### 思路 1:动态规划 -题目中说:如果青蛙在上一步向前跳跃了 `k` 个单位,则下一步只能向前跳跃 `k - 1`、`k` 或者 `k + 1` 个单位。则下一步的状态可以由 `3` 种状态转移而来。 +题目中说:如果青蛙在上一步向前跳跃了 $k$ 个单位,则下一步只能向前跳跃 $k - 1$、$k$ 或者 $k + 1$ 个单位。则下一步的状态可以由 $3$ 种状态转移而来。 -- 上一步所在石子到下一步所在石头的距离为 `k - 1`。 -- 上一步所在石子到下一步所在石头的距离为 `k`。 -- 上一步所在石子到下一步所在石头的距离为 `k + 1`。 +- 上一步所在石子到下一步所在石头的距离为 $k - 1$。 +- 上一步所在石子到下一步所在石头的距离为 $k$。 +- 上一步所在石子到下一步所在石头的距离为 $k + 1$。 则我们可以通过石子块数,跳跃距离来进行阶段划分和定义状态,以及推导状态转移方程。 @@ -50,22 +50,22 @@ ###### 2. 定义状态 -定义状态 `dp[i][k]` 表示为:青蛙能否以长度为 `k` 的距离,到达第 `i` 块石子。 +定义状态 $dp[i][k]$ 表示为:青蛙能否以长度为 $k$ 的距离,到达第 $i$ 块石子。 ###### 3. 状态转移方程 -1. 外层循环遍历每一块石子 `i`,对于每一块石子 `i`,使用内层循环遍历石子 `i` 之前所有的石子 `j`。 -2. 并计算出上一步所在石子 `j` 到当前所在石子 `i` 之间的距离为 `k`。 -3. 如果上一步所在石子 `j` 通过上上一步以长度为 `k - 1`、`k` 或者 `k + 1` 的距离到达石子 `j`,那么当前步所在石子也可以通过 `k` 的距离到达石子 `i`。即通过检查 `dp[j][k - 1]`、`dp[j][k]`、`dp[j][k + 1]` 中是否至少有一个为真,即可判断 `dp[i][k]` 是否为真。 - - 即:`dp[i][k] = dp[j][k - 1] or dp[j][k] or dp[j][k + 1] `。 +1. 外层循环遍历每一块石子 $i$,对于每一块石子 $i$,使用内层循环遍历石子 $i$ 之前所有的石子 $j$。 +2. 并计算出上一步所在石子 $j$ 到当前所在石子 $i$ 之间的距离为 $k$。 +3. 如果上一步所在石子 $j$ 通过上上一步以长度为 $k - 1$、$k$ 或者 $k + 1$ 的距离到达石子 $j$,那么当前步所在石子也可以通过 $k$ 的距离到达石子 $i$。即通过检查 $dp[j][k - 1]$、$dp[j][k]$、$dp[j][k + 1]$ 中是否至少有一个为真,即可判断 $dp[i][k]$ 是否为真。 + - 即:$dp[i][k] = dp[j][k - 1] \text{ or } dp[j][k] or dp[j][k + 1] $。 ###### 4. 初始条件 -刚开始青蛙站在序号为 `0` 石子上(即 `stones[0]`),肯定能以长度为 `0` 的距离,到达第 `0` 块石子,即 `dp[0][0] = True`。 +刚开始青蛙站在序号为 $0$ 石子上(即 $stones[0]$),肯定能以长度为 $0$ 的距离,到达第 $0$ 块石子,即 $dp[0][0] = True$。 ###### 5. 最终结果 -根据我们之前定义的状态,`dp[i][k]` 表示为:青蛙能否以长度为 `k` 的距离,到达第 `i` 块石子。则如果 `dp[size - 1][k]` 为真,则说明青蛙能成功过河(即能在最后一步跳到最后一块石子上);否则则说明青蛙不能成功过河。 +根据我们之前定义的状态,$dp[i][k]$ 表示为:青蛙能否以长度为 $k$ 的距离,到达第 $i$ 块石子。则如果 $dp[size - 1][k]$ 为真,则说明青蛙能成功过河(即能在最后一步跳到最后一块石子上);否则则说明青蛙不能成功过河。 ### 思路 1:动态规划代码 diff --git "a/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" index 128a0cc8..a63454c6 100644 --- "a/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -5,13 +5,35 @@ ## 题目大意 -给定一个整数数组 `nums` 和一个整数 `k`。 +**描述**:给定一个整数数组 $nums$ 和一个整数 $k$。 -要求:找到该数组中和为 `k` 的连续子数组的个数。 +**要求**:找到该数组中和为 $k$ 的连续子数组的个数。 + +**说明**: + +- $1 \le nums.length \le 2 \times 10^4$。 +- $-1000 \le nums[i] \le 1000$。 + $-10^7 \le k \le 10^7$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [1,1,1], k = 2 +输出:2 +``` + +- 示例 2: + +```python +输入:nums = [1,2,3], k = 3 +输出:2 +``` ## 解题思路 -看到题目的第一想法是通过滑动窗口求解。但是做下来发现有些数据样例无法通过。发现这道题目中的整数不能保证都为正数,则无法通过滑动窗口进行求解。 +### 思路 1:枚举算法(超时) 先考虑暴力做法,外层两重循环,遍历所有连续子数组,然后最内层再计算一下子数组的和。部分代码如下: @@ -23,26 +45,53 @@ for i in range(len(nums)): 这样下来时间复杂度就是 $O(n^3)$ 了。下一步是想办法降低时间复杂度。 -先用一重循环遍历数组,计算出数组 `nums` 中前 i 个元素的和(前缀和),保存到一维数组 `pre_sum` 中,那么对于任意 `[j..i]` 的子数组 的和为 `pre_sum[i] - pre_sum[j - 1]`。这样计算子数组和的时间复杂度降为了 $O(1)$。总体时间复杂度为 $O(n^2)$。 +对于以 $i$ 开头,以 $j$ 结尾($i \le j$)的子数组 $nums[i]…nums[j]$ 来说,我们可以通过顺序遍历 $j$,逆序遍历 $i$ 的方式(或者前缀和的方式),从而在 $O(n^2)$ 的时间复杂度内计算出子数组的和,同时使用变量 $cnt$ 统计出和为 $k$ 的子数组个数。 + +但这样提交上去超时了。 + +### 思路 1:代码 + +```python +class Solution: + def subarraySum(self, nums: List[int], k: int) -> int: + cnt = 0 + for j in range(len(nums)): + sum = 0 + for i in range(j, -1, -1): + sum += nums[i] + if sum == k: + cnt += 1 + + return cnt +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$。 +- **空间复杂度**:$O(1)$。 + +### 思路 2:前缀和 + 哈希表 + +先用一重循环遍历数组,计算出数组 $nums$ 中前 $j$ 个元素的和(前缀和),保存到一维数组 $pre\underline{}sum$ 中,那么对于任意 $nums[i]…nums[j]$ 的子数组的和为 $pre\underline{}sum[j] - pre\underline{}sum[i - 1]$。这样计算子数组和的时间复杂度降为了 $O(1)$。总体时间复杂度为 $O(n^2)$。 但是还是超时了。。 -由于我们只关心和为 `k` 出现的次数,不关心具体的解,可以使用哈希表来加速运算。 +由于我们只关心和为 $k$ 出现的次数,不关心具体的解,可以使用哈希表来加速运算。 -`pre_sum[i]` 的定义是前 `i` 个元素和,则 `pre_sum[i]` 可以由 `pre_sum[i - 1]` 递推而来,即:`pre_sum[i] = pre_sum[i - 1] + num[i]`。 `[j..i]` 子数组和为 `k` 可以转换为:`pre_sum[i] - pre_sum[j - 1] == k`。 +$pre\underline{}sum[i]$ 的定义是前 $i$ 个元素和,则 $pre\underline{}sum[i]$ 可以由 $pre\underline{}sum[i - 1]$ 递推而来,即:$pre\underline{}sum[i] = pre\underline{}sum[i - 1] + num[i]$。 $[i..j]$ 子数组和为 $k$ 可以转换为:$pre\underline{}sum[j] - pre\underline{}sum[i - 1] == k$。 -综合一下,可得:`pre_sum[j - 1] == pre_sum[i] - k `。 +综合一下,可得:$pre\underline{}sum[i - 1] == pre\underline{}sum[j] - k $。 -所以,当我们考虑以 `i` 结尾和为 `k` 的连续子数组个数时,只需要统计有多少个前缀和为 `pre_sum[i] - k` (即 `pre_sum[j - 1]`)的个数即可。具体做法如下: +所以,当我们考虑以 $j$ 结尾和为 $k$ 的连续子数组个数时,只需要统计有多少个前缀和为 $pre\underline{}sum[j] - k$ (即 $pre\underline{}sum[i - 1]$)的个数即可。具体做法如下: -- 使用 `pre_sum` 变量记录前缀和(代表 `pre_sum[i]`)。 -- 使用哈希表 `pre_dic` 记录 `pre_sum[i]` 出现的次数。键值对为 `pre_sum[i] : pre_sum_count`。 -- 从左到右遍历数组,计算当前前缀和 `pre_sum`。 -- 如果 `pre_sum - k` 在哈希表中,则答案个数累加上 `pre_dic[pre_sum - k]`。 -- 如果 `pre_sum` 在哈希表中,则前缀和个数累加 1,即 `pre_dic[pre_sum] += 1`。 +- 使用 $pre\underline{}sum$ 变量记录前缀和(代表 $pre\underline{}sum[j]$)。 +- 使用哈希表 $pre\underline{}dic$ 记录 $pre\underline{}sum[j]$ 出现的次数。键值对为 $pre\underline{}sum[j] : pre\underline{}sum\underline{}count$。 +- 从左到右遍历数组,计算当前前缀和 $pre\underline{}sum$。 +- 如果 $pre\underline{}sum - k$ 在哈希表中,则答案个数累加上 $pre\underline{}dic[pre\underline{}sum - k]$。 +- 如果 $pre\underline{}sum$ 在哈希表中,则前缀和个数累加 $1$,即 $pre\underline{}dic[pre\underline{}sum] += 1$。 - 最后输出答案个数。 -## 代码 +### 思路 2:代码 ```python class Solution: @@ -61,3 +110,8 @@ class Solution: return count ``` +### 思路 2:复杂度分析 + +- **时间复杂度**:$O(n)$。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/0639. \350\247\243\347\240\201\346\226\271\346\263\225 II.md" "b/Solutions/0639. \350\247\243\347\240\201\346\226\271\346\263\225 II.md" index 7ebd61e3..8d1500c2 100644 --- "a/Solutions/0639. \350\247\243\347\240\201\346\226\271\346\263\225 II.md" +++ "b/Solutions/0639. \350\247\243\347\240\201\346\226\271\346\263\225 II.md" @@ -5,27 +5,27 @@ ## 题目大意 -**描述**:给定一个包含数字和字符 `'*'` 的字符串 `s`。该字符串已经按照下面的映射关系进行了编码: +**描述**:给定一个包含数字和字符 `'*'` 的字符串 $s$。该字符串已经按照下面的映射关系进行了编码: -- `A` 映射为 `1`。 -- `B` 映射为 `2`。 +- `A` 映射为 $1$。 +- `B` 映射为 $2$。 - ... -- `Z` 映射为 `26`。 +- `Z` 映射为 $26$。 -除了上述映射方法,字符串 `s` 中可能包含字符 `'*'`,可以表示 `1` ~ `9` 的任一数字(不包括 `0`)。例如字符串 `"1*"` 可以表示为 `"11"`、`"12"`、…、`"18"`、`"19"` 中的任何一个编码。 +除了上述映射方法,字符串 $s$ 中可能包含字符 `'*'`,可以表示 $1$ ~ $9$ 的任一数字(不包括 $0$)。例如字符串 `"1*"` 可以表示为 `"11"`、`"12"`、…、`"18"`、`"19"` 中的任何一个编码。 基于上述映射的方法,现在对字符串 `s` 进行「解码」。即从数字到字母进行反向映射。比如 `"11106"` 可以映射为: -- `"AAJF"`,将消息分组为 `(1 1 10 6)`。 -- `"KJF"`,将消息分组为 `(11 10 6)`。 +- `"AAJF"`,将消息分组为 $(1 1 10 6)$。 +- `"KJF"`,将消息分组为 $(11 10 6)$。 **要求**:计算出共有多少种可能的解码方案。 **说明**: - $1 \le s.length \le 100$。 -- `s` 只包含数字,并且可能包含前导零。 -- 题目数据保证答案肯定是一个 `32` 位的整数。 +- $s$ 只包含数字,并且可能包含前导零。 +- 题目数据保证答案肯定是一个 $32$ 位的整数。 ```python 输入:s = "*" @@ -45,13 +45,13 @@ ###### 2. 定义状态 -定义状态 `dp[i]` 表示为:字符串 `s` 前 `i` 个字符构成的字符串可能构成的翻译方案数。 +定义状态 $dp[i]$ 表示为:字符串 $s$ 前 $i$ 个字符构成的字符串可能构成的翻译方案数。 ###### 3. 状态转移方程 -`dp[i]` 的来源有两种情况: +$dp[i]$ 的来源有两种情况: -1. 使用了一个字符,对 `s[i]` 进行翻译: +1. 使用了一个字符,对 $s[i]$ 进行翻译: 1. 如果 `s[i] == '*'`,则 `s[i]` 可以视作区间 `[1, 9]` 上的任意一个数字,可以被翻译为 `A` ~ `I`。此时当前位置上的方案数为 `9`,即 `dp[i] = dp[i - 1] * 9`。 2. 如果 `s[i] == '0'`,则无法被翻译,此时当前位置上的方案数为 `0`,即 `dp[i] = dp[i - 1] * 0`。 3. 如果是其他情况(即 `s[i]` 是区间 `[1, 9]` 上某一个数字),可以被翻译为 `A` ~ `I` 对应位置上的某个字母。此时当前位置上的方案数为 `1`,即 `dp[i] = dp[i - 1] * 1`。 diff --git "a/Solutions/0800. \347\233\270\344\274\274 RGB \351\242\234\350\211\262.md" "b/Solutions/0800. \347\233\270\344\274\274 RGB \351\242\234\350\211\262.md" index a636822a..eacb4b25 100644 --- "a/Solutions/0800. \347\233\270\344\274\274 RGB \351\242\234\350\211\262.md" +++ "b/Solutions/0800. \347\233\270\344\274\274 RGB \351\242\234\350\211\262.md" @@ -27,12 +27,12 @@ ### 思路 1:枚举算法 -所有可以简写的颜色范围是 `"#000"` ~ `"#fff"`,共 $16^3 = 4096$ 种颜色。因此,我们可以枚举这些可以简写的颜色,并计算出其与 `color`的相似度,从而找出与 `color` 最相似的颜色。具体做法如下: +所有可以简写的颜色范围是 `"#000"` ~ `"#fff"`,共 $16^3 = 4096$ 种颜色。因此,我们可以枚举这些可以简写的颜色,并计算出其与 $color$的相似度,从而找出与 $color$ 最相似的颜色。具体做法如下: -- 将 `color` 转换为十六进制数,即 `hex_color = int(color[1:], 16)`。 -- 三重循环遍历 `R`、`G`、`B` 三个通道颜色,每一重循环范围为 `0` ~ `15`。 -- 计算出每一种可以简写的颜色对应的十六进制,即 `17 * R * (1 << 16) + 17 * G * (1 << 8) + 17 * B`,`17` 是 `0x11 = 16 + 1 = 17`,`(1 << 16)` 为 `R` 左移的位数,`17 * R * (1 << 16)` 就表示 `R` 通道上对应的十六进制数。`(1 << 8)` 为 `G` 左移的位数,`17 * G * (1 << 8)` 就表示 `G` 通道上对应的十六进制数。`17 * B` 就表示 `B` 通道上对应的十六进制数。 -- 然后我们根据 `color` 的十六进制数,与每一个可以简写的颜色对应的十六进制数,计算出相似度,并找出大相似对应的颜色。将其转换为字符串,并输出。 +- 将 $color$ 转换为十六进制数,即 `hex_color = int(color[1:], 16)`。 +- 三重循环遍历 $R$、$G$、$B$ 三个通道颜色,每一重循环范围为 $0 \sim 15$。 +- 计算出每一种可以简写的颜色对应的十六进制,即 $17 \times R \times (1 << 16) + 17 \times G \times (1 << 8) + 17 \times B$,$17$ 是 $0x11 = 16 + 1 = 17$,$(1 << 16)$ 为 $R$ 左移的位数,$17 \times R \times (1 << 16)$ 就表示 $R$ 通道上对应的十六进制数。$(1 << 8)$ 为 $G$ 左移的位数,$17 \times G \times (1 << 8)$ 就表示 $G$ 通道上对应的十六进制数。$17 \times B$ 就表示 $B$ 通道上对应的十六进制数。 +- 然后我们根据 $color$ 的十六进制数,与每一个可以简写的颜色对应的十六进制数,计算出相似度,并找出大相似对应的颜色。将其转换为字符串,并输出。 ### 思路 1:枚举算法代码 @@ -55,3 +55,8 @@ class Solution: return "#{:06x}".format(ans) ``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(16^3)$。 +- **空间复杂度**:$O(1)$。 diff --git "a/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" "b/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" index b0dbda91..650043dc 100644 --- "a/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" +++ "b/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" @@ -14,9 +14,9 @@ - **子集**:通过删除 $nums$ 中一些(可能一个都不删除,也可能全部都删除)元素后剩余元素组成的数组。如果两个子集删除的下标不同,那么它们被视为不同的子集。 - **好子集**:如果 $nums$ 的一个子集中,所有元素的乘积可以表示为一个或多个互不相同的质数的乘积,那么我们称它为好子集。 - - 比如,如果 `nums = [1, 2, 3, 4]`: - - `[2, 3]` ,`[1, 2, 3]` 和 `[1, 3]` 是好子集,乘积分别为 `6 = 2*3` ,`6 = 2*3` 和 `3 = 3` 。 - - `[1, 4]` 和 `[4]` 不是好子集,因为乘积分别为 `4 = 2*2` 和 `4 = 2*2` 。 + - 比如,如果 $nums = [1, 2, 3, 4]$: + - $[2, 3]$,$[1, 2, 3]$ 和 $[1, 3]$ 是好子集,乘积分别为 $6 = 2 \times 3$ ,$6 = 2 \times 3$ 和 $3 = 3$。 + - $[1, 4]$ 和 $[4]$ 不是好子集,因为乘积分别为 $4 = 2 \times 2$ 和 $4 = 2 \times 2$。 - $1 \le nums.length \le 10^5$。 - $1 \le nums[i] \le 30$。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" index b52cf489..003d1f37 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" @@ -5,41 +5,64 @@ ## 题目大意 -`0`、`1`、…、`n - 1` 这 `n` 个数字排成一个圆圈,从数字 `0` 开始,每次从圆圈里删除第 `m` 个数字。现在给定整数 `n` 和 `m`。 +**描述**:$0$、$1$、…、$n - 1$ 这 $n$ 个数字排成一个圆圈,从数字 $0$ 开始,每次从圆圈里删除第 $m$ 个数字。现在给定整数 $n$ 和 $m$。 -要求:求出这个圆圈中剩下的最后一个数字。 +**要求**:求出这个圆圈中剩下的最后一个数字。 + +**说明**: + +- $1 \le num \le 10^5$。 +- $1 \le target \le 10^6$。 + +**示例**: + +- 示例 1: + +```python +输入:num = 7, target = 4 +输出:1 +``` + +- 示例 2: + +```python +输入:num = 12, target = 5 +输出:0 +``` ## 解题思路 -模拟循环删除,需要进行 `n - 1` 轮,每轮需要对节点进行 `m` 次访问操作。总体时间复杂度为 `O(nm)`。 +### 思路 1:枚举 + 模拟 -可以通过找规律来做,以 `n = 5`、`m = 3` 为例。 +模拟循环删除,需要进行 $n - 1$ 轮,每轮需要对节点进行 $m$ 次访问操作。总体时间复杂度为 $O(n \times m)$。 -- 刚开始为 `0`、`1`、`2`、`3`、`4`。 -- 第一次从 `0` 开始数,数 `3` 个数,于是 `2` 出圈,变为 `3`、`4`、`0`、`1`。 -- 第二次从 `3` 开始数,数 `3` 个数,于是 `0` 出圈,变为 `1`、`3`、`4`。 -- 第三次从 `1` 开始数,数 `3` 个数,于是 `4` 出圈,变为 `1`、`3`。 -- 第四次从 `1` 开始数,数 `3` 个数,于是 `1` 出圈,变为 `3`。 -- 所以最终为 `3`。 +可以通过找规律来做,以 $n = 5$、$m = 3$ 为例。 -通过上面的流程可以发现:每隔 `m` 个数就要删除一个数,那么被删除的这个数的下一个数就会成为新的起点。就相当于数组进行左移了 `m` 位。反过来思考的话,从最后一步向前推,则每一步都向右移动了 `m` 位(包括胜利者)。 +- 刚开始为 $0$、$1$、$2$、$3$、$4$。 +- 第一次从 $0$ 开始数,数 $3$ 个数,于是 $2$ 出圈,变为 $3$、$4$、$0$、$1$。 +- 第二次从 $3$ 开始数,数 $3$ 个数,于是 $0$ 出圈,变为 $1$、$3$、$4$。 +- 第三次从 $1$ 开始数,数 $3$ 个数,于是 $4$ 出圈,变为 $1$、$3$。 +- 第四次从 $1$ 开始数,数 $3$ 个数,于是 $1$ 出圈,变为 $3$。 +- 所以最终为 $3$。 -如果用 `f(n, m)` 表示: `n` 个数构成环没删除 `m` 个数后,最终胜利者的位置,则 `f(n, m) = f(n - 1, m) + m`。 +通过上面的流程可以发现:每隔 $m$ 个数就要删除一个数,那么被删除的这个数的下一个数就会成为新的起点。就相当于数组进行左移了 $m$ 位。反过来思考的话,从最后一步向前推,则每一步都向右移动了 $m$ 位(包括胜利者)。 -即等于 `n - 1` 个数构成的环没删除 `m` 个数后最终胜利者的位置,像右移动 `m` 次。 +如果用 $f(n, m)$ 表示: $n$ 个数构成环没删除 $m$ 个数后,最终胜利者的位置,则 $f(n, m) = f(n - 1, m) + m$。 -问题是现在并不是真的进行了右移,因为当前数组右移后超过数组容量的部分应该重新放到数组头部位置。所以公式应为:`f(n, m) = [f(n - 1, m) + m] % n`,`n` 为反过来向前推的时候,每一步剩余的数字个数(比如第二步推回第一步,n `4`),则反过来递推公式为: +即等于 $n - 1$ 个数构成的环没删除 $m$ 个数后最终胜利者的位置,像右移动 $m$ 次。 -- `f(1, m) = 0`。 -- `f(2, m) = [f(1, m) + m] % 2`。 -- `f(3, m) = [f(2, m) + m] % 3`。 +问题是现在并不是真的进行了右移,因为当前数组右移后超过数组容量的部分应该重新放到数组头部位置。所以公式应为:$f(n, m) = [f(n - 1, m) + m] % n$,$n$ 为反过来向前推的时候,每一步剩余的数字个数(比如第二步推回第一步,n $4$),则反过来递推公式为: + +- $f(1, m) = 0$。 +- $f(2, m) = [f(1, m) + m] % 2$。 +- $f(3, m) = [f(2, m) + m] % 3$。 - 。。。。。。 -- `f(n, m) = [f(n - 1, m) + m] % n `。 +- $f(n, m) = [f(n - 1, m) + m] % n $。 接下来就是递推求解了。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -50,6 +73,11 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$。 +- **空间复杂度**:$O(1)$。 + ## 参考资料: - [字节题库 - #剑62 - 简单 - 圆圈中最后剩下的数字 - 1刷](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/solution/zi-jie-ti-ku-jian-62-jian-dan-yuan-quan-3hlji/) From 49a9f315aed28a3764ed40c4eaffab0df47e9441 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 22 Dec 2023 16:25:03 +0800 Subject: [PATCH 011/158] Update Graph-Prim.py --- Templates/08.Graph/Graph-Prim.py | 41 ++++++++++++++++---------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/Templates/08.Graph/Graph-Prim.py b/Templates/08.Graph/Graph-Prim.py index 23f95f3e..d29693e6 100644 --- a/Templates/08.Graph/Graph-Prim.py +++ b/Templates/08.Graph/Graph-Prim.py @@ -1,32 +1,31 @@ class Solution: - def prim(self, graph): + # graph 为图的邻接矩阵,start 为起始顶点 + def prim(self, graph, start): size = len(graph) vis = set() dist = [float('inf') for _ in range(size)] - ans = 0 - pos = 0 - dist[pos] = 0 - vis.add(pos) + ans = 0 # 最小生成树的边权和 + dist[start] = 0 # 初始化起始顶点到起始顶点的边权值为 0 - for i in range(1, size): - if 0 in graph and i in graph[0]: - dist[i] = graph[0][i] + for i in range(1, size): # 初始化起始顶点到其他顶点的边权值 + dist[i] = graph[start][i] + vis.add(start) # 将 start 顶点标记为已访问 - for i in range(size - 1): - cur_min = float('inf') - pos = -1 - for j in range(size): - if j not in vis and dist[j] < cur_min: - cur_min = dist[j] - pos = j - if pos == -1: + for _ in range(size - 1): + min_dis = float('inf') + min_dis_pos = -1 + for i in range(size): + if i not in vis and dist[i] < min_dis: + min_dis = dist[i] + min_dis_pos = i + if min_dis_pos == -1: # 没有顶点可以加入 MST,图 G 不连通 return -1 - ans += cur_min - vis.add(pos) - for j in range(size): - if j not in vis and dist[j] > graph[pos][j]: - dist[j] = graph[pos][j] + ans += min_dis # 将顶点加入 MST,并将边权值加入到答案中 + vis.add(min_dis_pos) + for i in range(size): + if i not in vis and dist[i] > graph[min_dis_pos][i]: + dist[i] = graph[min_dis_pos][i] return ans points = [[0,0]] From 90b477bd30d51748da92ef5cf032a3d0714135ce Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 22 Dec 2023 16:25:07 +0800 Subject: [PATCH 012/158] Update 01.Enumeration-Algorithm.md --- .../01.Enumeration-Algorithm/01.Enumeration-Algorithm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md b/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md index 6e438003..dbd4679f 100644 --- a/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md +++ b/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md @@ -180,7 +180,7 @@ class Solution: ##### 思路 1:枚举算法(超时) -对于小于 $n$ 的每一个数 $x$,我们可以枚举区间 $[2, x - 1]$ 上的数是否是 $x$ 的因数,即是否存在能被 $x$ 整数的数。如果存在,则该数 $x$ 不是质数。如果不存在,则该数 $x$ 是质数。 +对于小于 $n$ 的每一个数 $x$,我们可以枚举区间 $[2, x - 1]$ 上的数是否是 $x$ 的因数,即是否存在能被 $x$ 整除的数。如果存在,则该数 $x$ 不是质数。如果不存在,则该数 $x$ 是质数。 这样我们就可以通过枚举 $[2, n - 1]$ 上的所有数 $x$,并判断 $x$ 是否为质数。 From ac97f774d00738bc089bd86fa9f3ffcbd13e55cf Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:10 +0800 Subject: [PATCH 013/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .... \350\247\243\346\225\260\347\213\254.md" | 45 ++++++++++++---- ...25\350\257\215\346\220\234\347\264\242.md" | 12 ++--- ...74\351\233\267\347\274\226\347\240\201.md" | 52 +++++++++++++++++-- ...71\344\275\215\350\256\241\346\225\260.md" | 20 +++---- ...64\346\225\260\344\271\213\345\222\214.md" | 47 +++++++++++++---- ...55\345\255\220\345\272\217\345\210\227.md" | 45 +++++++++++++--- ...55\350\277\233\345\210\266\346\225\260.md" | 51 ++++++++++++++---- ...74\346\255\243\346\226\271\345\275\242.md" | 8 +-- ...03\350\277\233\345\210\266\346\225\260.md" | 36 +++++++++++-- ...31\345\205\250\346\216\222\345\210\227.md" | 45 ++++++++++++---- ...73\345\255\227\345\215\260\345\210\267.md" | 41 +++++++++++++-- .... \347\216\251\347\255\271\347\240\201.md" | 15 ++++-- ...46\344\270\262\347\233\270\345\220\214.md" | 29 ++++++----- ...07\345\255\227\347\254\246\344\270\262.md" | 17 +++--- ...60\347\233\256\346\234\200\345\244\247.md" | 49 +++++++++++++---- ...47\345\215\225\345\205\203\346\225\260.md" | 28 +++++----- ...15\345\216\206\345\272\217\345\210\227.md" | 44 ++++++++++++++-- 17 files changed, 453 insertions(+), 131 deletions(-) diff --git "a/Solutions/0037. \350\247\243\346\225\260\347\213\254.md" "b/Solutions/0037. \350\247\243\346\225\260\347\213\254.md" index f103e6f0..ecfec7d0 100644 --- "a/Solutions/0037. \350\247\243\346\225\260\347\213\254.md" +++ "b/Solutions/0037. \350\247\243\346\225\260\347\213\254.md" @@ -5,29 +5,47 @@ ## 题目大意 -给定一个二维的字符数组 `board` 用来表示数独,其中数字 `1-9` 表示该位置已经填入了数字,`.` 表示该位置还没有填入数字。 +**描述**:给定一个二维的字符数组 $board$ 用来表示数独,其中数字 $1 \sim 9$ 表示该位置已经填入了数字,`.` 表示该位置还没有填入数字。 -现在编写一个程序,通过填充空格的方式来解决数独问题,最终不用返回答案,将题目给定 `board` 修改为可行的方案即可。 +**要求**:现在编写一个程序,通过填充空格的方式来解决数独问题,最终不用返回答案,将题目给定 $board$ 修改为可行的方案即可。 -数独解法需遵循如下规则: +**说明**: -- 数字 `1-9` 在每一行只能出现一次。 -- 数字 `1-9` 在每一列只能出现一次。 -- 数字 `1-9` 在每一个以粗直线分隔的 `3 * 3` 宫格内只能出现一次。 +- 数独解法需遵循如下规则: + + - 数字 $1 \sim 9$ 在每一行只能出现一次。 + - 数字 $1 \sim 9$ 在每一列只能出现一次。 + - 数字 $1 \sim 9$ 在每一个以粗直线分隔的 $3 \times 3$ 宫格内只能出现一次。 +- $board.length == 9$。 +- $board[i].length == 9$。 +- $board[i][j]$ 是一位数字或者 `.`。 +- 题目数据保证输入数独仅有一个解。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2021/04/12/250px-sudoku-by-l2g-20050714svg.png) + +```python +输入:board = [["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","9","8",".",".",".",".","6","."],["8",".",".",".","6",".",".",".","3"],["4",".",".","8",".","3",".",".","1"],["7",".",".",".","2",".",".",".","6"],[".","6",".",".",".",".","2","8","."],[".",".",".","4","1","9",".",".","5"],[".",".",".",".","8",".",".","7","9"]] +输出:[["5","3","4","6","7","8","9","1","2"],["6","7","2","1","9","5","3","4","8"],["1","9","8","3","4","2","5","6","7"],["8","5","9","7","6","1","4","2","3"],["4","2","6","8","5","3","7","9","1"],["7","1","3","9","2","4","8","5","6"],["9","6","1","5","3","7","2","8","4"],["2","8","7","4","1","9","6","3","5"],["3","4","5","2","8","6","1","7","9"]] +解释:输入的数独如上图所示,唯一有效的解决方案如下所示: +``` ![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2021/04/12/250px-sudoku-by-l2g-20050714_solutionsvg.png) ## 解题思路 -使用回溯算法求解。对于每一行、每一列、每一个数字,都需要 1 重 for 循环来遍历,这样就是 3 重 for 循环。 - -对于第 i 行、第 j 列的元素来说,如果当前位置为空位,则尝试将第 k 个数字置于此处,并检验数独的有效性。如果有效,则继续遍历下一个空位,直到遍历完所有空位,得到可行方案或者遍历失败时结束。 +### 思路 1:回溯算法 -遍历完下一个空位之后再将此位置进行回退,置为 `.`。 +对于每一行、每一列、每一个数字,都需要一重 `for` 循环来遍历,这样就是三重 `for` 循环。 +对于第 $i$ 行、第 $j$ 列的元素来说,如果当前位置为空位,则尝试将第 $k$ 个数字置于此处,并检验数独的有效性。如果有效,则继续遍历下一个空位,直到遍历完所有空位,得到可行方案或者遍历失败时结束。 +遍历完下一个空位之后再将此位置进行回退,置为 `.`。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -70,3 +88,8 @@ class Solution: """ ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(9^m)$,$m$ 为棋盘中 `.` 的数量。 +- **空间复杂度**:$O(9^2)$。 + diff --git "a/Solutions/0079. \345\215\225\350\257\215\346\220\234\347\264\242.md" "b/Solutions/0079. \345\215\225\350\257\215\346\220\234\347\264\242.md" index d8149565..ed426ebc 100644 --- "a/Solutions/0079. \345\215\225\350\257\215\346\220\234\347\264\242.md" +++ "b/Solutions/0079. \345\215\225\350\257\215\346\220\234\347\264\242.md" @@ -5,9 +5,9 @@ ## 题目大意 -**描述**:给定一个 $m \times n$ 大小的二维字符矩阵 `board` 和一个字符串单词 `word`。 +**描述**:给定一个 $m \times n$ 大小的二维字符矩阵 $board$ 和一个字符串单词 $word$。 -**要求**:如果 `word` 存在于网格中,返回 `True`,否则返回 `False`。 +**要求**:如果 $word$ 存在于网格中,返回 `True`,否则返回 `False`。 **说明**: @@ -16,7 +16,7 @@ - $n == board[i].length$。 - $1 \le m, n \le 6$。 - $1 \le word.length \le 15$。 -- `board` 和 `word` 仅由大小写英文字母组成。 +- $board$ 和 $word$ 仅由大小写英文字母组成。 **示例**: @@ -42,9 +42,9 @@ ### 思路 1:回溯算法 -使用回溯算法在二维矩阵 `board` 中按照上下左右四个方向递归搜索。 +使用回溯算法在二维矩阵 $board$ 中按照上下左右四个方向递归搜索。 -设函数 `backtrack(i, j, index)` 表示从 `board[i][j]` 出发,能否搜索到单词字母 `word[index]`,以及 `index` 位置之后的后缀子串。如果能搜索到,则返回 `True`,否则返回 `False`。 +设函数 `backtrack(i, j, index)` 表示从 $board[i][j]$ 出发,能否搜索到单词字母 $word[index]$,以及 $index$ 位置之后的后缀子串。如果能搜索到,则返回 `True`,否则返回 `False`。 `backtrack(i, j, index)` 执行步骤如下: @@ -88,6 +88,6 @@ class Solution: ### 思路 1:复杂度分析 -- **时间复杂度**:$O(m \times n \times 2^l)$,其中 $m$、$n$ 为二维矩阵 `board`的行数和列数。$l$ 为字符串 `word` 的长度。 +- **时间复杂度**:$O(m \times n \times 2^l)$,其中 $m$、$n$ 为二维矩阵 $board$的行数和列数。$l$ 为字符串 $word$ 的长度。 - **空间复杂度**:$O(m \times n)$。 diff --git "a/Solutions/0089. \346\240\274\351\233\267\347\274\226\347\240\201.md" "b/Solutions/0089. \346\240\274\351\233\267\347\274\226\347\240\201.md" index e529af9e..1b3f085c 100644 --- "a/Solutions/0089. \346\240\274\351\233\267\347\274\226\347\240\201.md" +++ "b/Solutions/0089. \346\240\274\351\233\267\347\274\226\347\240\201.md" @@ -5,19 +5,58 @@ ## 题目大意 -- 格雷编码:二进制数字系统,两个连续的数值仅有一个位数的差异。 +**描述**:给定一个整数 $n$。 -现在给定一个代表格雷编码总位数的非负整数 `n`,打印对应的格雷编码序列。只需要返回其中一个答案即可。 +**要求**:返回任一有效的 $n$ 位格雷码序列。 + +**说明**: + +- **n 位格雷码序列**:是一个由 $2^n$ 个整数组成的序列,其中: + - 每个整数都在范围 $[0, 2^n - 1]$ 内(含 $0$ 和 $2^n - 1$)。 + - 第一个整数是 $0$。 + - 一个整数在序列中出现不超过一次。 + - 每对相邻整数的二进制表示恰好一位不同 ,且第一个和最后一个整数的二进制表示恰好一位不同。 + +- $1 \le n \le 16$。 + +**示例**: + +- 示例 1: + +```python +输入:n = 2 +输出:[0,1,3,2] +解释: +[0,1,3,2] 的二进制表示是 [00,01,11,10] 。 +- 00 和 01 有一位不同 +- 01 和 11 有一位不同 +- 11 和 10 有一位不同 +- 10 和 00 有一位不同 +[0,2,3,1] 也是一个有效的格雷码序列,其二进制表示是 [00,10,11,01] 。 +- 00 和 10 有一位不同 +- 10 和 11 有一位不同 +- 11 和 01 有一位不同 +- 01 和 00 有一位不同 +``` + +- 示例 2: + +```python +输入:n = 1 +输出:[0,1] +``` ## 解题思路 -- 格雷编码生成规则:以二进制值为 `0` 的格雷编码作为第 `0` 项,第一次改变最右边的数位,第二次改变从右边数第一个为 `1` 的数位左边的数位,第三次跟第一次一样,改变最右边的数位,第四次跟第二次一样,改变从右边数第一个为 `1` 的数位左边的数位。此后,第五、六次,第七、八次 ... 都跟第一二次一样反复进行,直到生成 $2^n$​ 个格雷编码。 +### 思路 1:位运算 + 公式法 + +- 格雷编码生成规则:以二进制值为 $0$ 的格雷编码作为第 $0$ 项,第一次改变最右边的数位,第二次改变从右边数第一个为 $1$ 的数位左边的数位,第三次跟第一次一样,改变最右边的数位,第四次跟第二次一样,改变从右边数第一个为 $1$ 的数位左边的数位。此后,第五、六次,第七、八次 ... 都跟第一二次一样反复进行,直到生成 $2^n$​ 个格雷编码。 - 也可以直接利用二进制转换为格雷编码公式: ![image.png](https://pic.leetcode-cn.com/1013850d7f6c8cf1d99dc0ac3292264b74f6a52d84e0215f540c80952e184f41-image.png) -## 代码 +### 思路 1:代码 ```python class Solution: @@ -29,3 +68,8 @@ class Solution: binary += 1 return gray ``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(2^n)$。 +- **空间复杂度**:$O(1)$。 diff --git "a/Solutions/0338. \346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" "b/Solutions/0338. \346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" index 4121425e..c7004630 100644 --- "a/Solutions/0338. \346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" +++ "b/Solutions/0338. \346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" @@ -37,33 +37,33 @@ 根据整数的二进制特点可以将整数分为两类: -- 奇数:其二进制表示中 `1` 的个数一定比前面相邻的偶数多一个 `1`。 -- 偶数:其二进制表示中 `1` 的个数一定与该数除以 `2` 之后的数一样多。 +- 奇数:其二进制表示中 $1$ 的个数一定比前面相邻的偶数多一个 $1$。 +- 偶数:其二进制表示中 $1$ 的个数一定与该数除以 $2$ 之后的数一样多。 -另外,边界 `0` 的二进制表示中 `1` 的个数为 `0`。 +另外,边界 $0$ 的二进制表示中 $1$ 的个数为 $0$。 -于是可以根据规律,从 `0` 开始到 `n` 进行递推求解。 +于是可以根据规律,从 $0$ 开始到 $n$ 进行递推求解。 ###### 1. 划分阶段 -按照整数 `n` 进行阶段划分。 +按照整数 $n$ 进行阶段划分。 ###### 2. 定义状态 -定义状态 `dp[i]` 表示为:整数 `i` 对应二进制表示中 `1` 的个数。 +定义状态 $dp[i]$ 表示为:整数 $i$ 对应二进制表示中 $1$ 的个数。 ###### 3. 状态转移方程 -- 如果 `i` 为奇数,则整数 `i` 对应二进制表示中 `1` 的个数等于整数 `i - 1` 对应二进制表示中 `1` 的个数加 `1`,即 `dp[i] = dp[i - 1] + 1`。 -- 如果 `i` 为偶数,则整数 `i` 对应二进制表示中 `1` 的个数等于整数 `i // 2` 对应二进制表示中 `1` 的个数,即 `dp[i] = dp[i // 2]`。 +- 如果 $i$ 为奇数,则整数 $i$ 对应二进制表示中 $1$ 的个数等于整数 $i - 1$ 对应二进制表示中 $1$ 的个数加 $1$,即 $dp[i] = dp[i - 1] + 1$。 +- 如果 $i$ 为偶数,则整数 $i$ 对应二进制表示中 $1$ 的个数等于整数 $i // 2$ 对应二进制表示中 $1$ 的个数,即 $dp[i] = dp[i // 2]$。 ###### 4. 初始条件 -整数 `0` 对应二进制表示中 `1` 的个数为 `0`。 +整数 $0$ 对应二进制表示中 $1$ 的个数为 $0$。 ###### 5. 最终结果 -整个 `dp` 数组即为最终结果,将其返回即可。 +整个 $dp$ 数组即为最终结果,将其返回即可。 ### 思路 1:动态规划代码 diff --git "a/Solutions/0371. \344\270\244\346\225\264\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0371. \344\270\244\346\225\264\346\225\260\344\271\213\345\222\214.md" index f4257ed7..fad4e8dc 100644 --- "a/Solutions/0371. \344\270\244\346\225\264\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0371. \344\270\244\346\225\264\346\225\260\344\271\213\345\222\214.md" @@ -5,27 +5,51 @@ ## 题目大意 -不使用运算符 `+` 和 `-` ,计算两整数 `a` 、`b` 之和。 +**描述**:给定两个整数 $a$ 和 $b$。 + +**要求**:不使用运算符 `+` 和 `-` ,计算两整数 $a$ 和 $b$ 的和。 + +**说明**: + +- $-1000 \le a, b \le 1000$。 + +**示例**: + +- 示例 1: + +```python +输入:a = 1, b = 2 +输出:3 +``` + +- 示例 2: + +```python +输入:a = 2, b = 3 +输出:5 +``` ## 解题思路 +### 思路 1:位运算 + 需要用到位运算的一些知识。 -- 异或运算 a ^ b :可以获得 a + b 无进位的加法结果。 -- 与运算 a & b:对应位置为 1,说明 a、b 该位置上原来都为 1,则需要进位。 -- 座椅运算 a << 1:将 a 对应二进制数左移 1 位。 +- 异或运算 `a ^ b`:可以获得 $a + b$ 无进位的加法结果。 +- 与运算 `a & b`:对应位置为 $1$,说明 $a$、$b$ 该位置上原来都为 $1$,则需要进位。 +- 左移运算 `a << 1`:将 $a$ 对应二进制数左移 $1$ 位。 -这样,通过 a^b 运算,我们可以得到相加后无进位结果,再根据 (a&b) << 1,计算进位后结果。 +这样,通过 `a ^ b` 运算,我们可以得到相加后无进位结果,再根据 `(a & b) << 1`,计算进位后结果。 -进行 a^b 和 (a&b) << 1操作之后判断进位是否为 0,若不为 0,则继续上一步操作,直到进位为 0。 +进行 `a ^ b` 和 `(a & b) << 1` 操作之后判断进位是否为 $0$,若不为 $0$,则继续上一步操作,直到进位为 $0$。 > 注意: > -> Python 的整数类型是无限长整数类型,负数不确定符号位是第几位。所以我们可以将输入的数字手动转为 32 位无符号整数。 +> Python 的整数类型是无限长整数类型,负数不确定符号位是第几位。所以我们可以将输入的数字手动转为 $32$ 位无符号整数。 > -> 通过 a &= 0xFFFFFFFF 即可将 a 转为 32 位无符号整数。最后通过对 a 的范围判断,将其结果映射为有符号整数。 +> 通过 `a &= 0xFFFFFFFF` 即可将 $a$ 转为 $32$ 位无符号整数。最后通过对 $a$ 的范围判断,将其结果映射为有符号整数。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -44,3 +68,8 @@ class Solution: return ~(a ^ MASK) ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(\log k)$,其中 $k$ 为 $int$ 所能表达的最大整数。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/0392. \345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" "b/Solutions/0392. \345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" index 0e3569b4..3b20f6c9 100644 --- "a/Solutions/0392. \345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/0392. \345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" @@ -5,20 +5,44 @@ ## 题目大意 -给定字符串 `s` 和 `t` ,判断 `s` 是否为 `t` 的子序列。 +**描述**:给定字符串 $s$ 和 $t$。 + +**要求**:判断 $s$ 是否为 $t$ 的子序列。 + +**说明**: + +- $0 \le s.length \le 100$。 +- $0 \le t.length \le 10^4$。 +- 两个字符串都只由小写字符组成。 + +**示例**: + +- 示例 1: + +```python +输入:s = "abc", t = "ahbgdc" +输出:True +``` + +- 示例 2: + +```python +输入:s = "axc", t = "ahbgdc" +输出:False +``` ## 解题思路 -双指针。 +### 思路 1:双指针 -使用两个指针 `i`、`j` 分别指向字符串 `s` 和 `t`,然后对两个字符串进行遍历。 +使用两个指针 $i$、$j$ 分别指向字符串 $s$ 和 $t$,然后对两个字符串进行遍历。 -- 遇到 `s[i] == t[j]` 的情况,则 `i` 向右移。 -- 不断右移 `j`。 -- 如果超过 `s` 或 `t` 的长度则跳出。 -- 最后判断指针 `i` 是否指向了 `s` 的末尾,即:判断 `i` 是否等于 `s` 的长度。如果等于,则说明 `s` 是 `t` 的子序列,如果不等于,则不是。 +- 遇到 $s[i] == t[j]$ 的情况,则 $i$ 向右移。 +- 不断右移 $j$。 +- 如果超过 $s$ 或 $t$ 的长度则跳出。 +- 最后判断指针 $i$ 是否指向了 $s$ 的末尾,即:判断 $i$ 是否等于 $s$ 的长度。如果等于,则说明 $s$ 是 $t$ 的子序列,如果不等于,则不是。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -33,3 +57,8 @@ class Solution: return i == size_s ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n + m)$,其中 $n$、$m$ 分别为字符串 $s$、$t$ 的长度。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/0405. \346\225\260\345\255\227\350\275\254\346\215\242\344\270\272\345\215\201\345\205\255\350\277\233\345\210\266\346\225\260.md" "b/Solutions/0405. \346\225\260\345\255\227\350\275\254\346\215\242\344\270\272\345\215\201\345\205\255\350\277\233\345\210\266\346\225\260.md" index 1c53cfbc..9a674cf2 100644 --- "a/Solutions/0405. \346\225\260\345\255\227\350\275\254\346\215\242\344\270\272\345\215\201\345\205\255\350\277\233\345\210\266\346\225\260.md" +++ "b/Solutions/0405. \346\225\260\345\255\227\350\275\254\346\215\242\344\270\272\345\215\201\345\205\255\350\277\233\345\210\266\346\225\260.md" @@ -5,28 +5,52 @@ ## 题目大意 -给定一个整数 `num`。 +**描述**:给定一个整数 $num$。 -要求:编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用「补码运算」方法。 +**要求**:编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用「补码运算」方法。 -注意: +**说明**: -- 十六进制中所有字母(`a` ~ `f`)都必须是小写。 -- 十六进制字符串中不能包含多余的前导零。如果要转化的数为 `0`,那么以单个字符 `0` 来表示 -- 对于其他情况,十六进制字符串中的第一个字符将不会是 `0` 字符。 -- 给定的数确保在 `32` 位有符号整数范围内。 +- 十六进制中所有字母($a \sim f$)都必须是小写。 +- 十六进制字符串中不能包含多余的前导零。如果要转化的数为 $0$,那么以单个字符 $0$ 来表示。 +- 对于其他情况,十六进制字符串中的第一个字符将不会是 $0$ 字符。 +- 给定的数确保在 $32$ 位有符号整数范围内。 - 不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。 +**示例**: + +- 示例 1: + +```python +输入: +26 + +输出: +"1a" +``` + +- 示例 2: + +```python +输入: +-1 + +输出: +"ffffffff" +``` + ## 解题思路 +### 思路 1:模拟 + 主要是对不同情况的处理。 -- 当 `num` 为 0 时,直接返回 `0`。 -- 当 `num` 为负数时,对负数进行「补码运算」,转换为对应的十进制正数(将其绝对值与 $2^{32} - 1$ 异或再加 1),然后执行和 `nums` 为正数一样的操作。 -- 当 `num` 为正数时,将其对 16 取余,并转为对应的十六进制字符,并按位拼接到字符串中,再将 `num` 除以 16,继续对 16 取余,直到 `num` 变为为 0。 +- 当 $num$ 为 0 时,直接返回 $0$。 +- 当 $num$ 为负数时,对负数进行「补码运算」,转换为对应的十进制正数(将其绝对值与 $2^{32} - 1$ 异或再加 1),然后执行和 $nums$ 为正数一样的操作。 +- 当 $num$ 为正数时,将其对 $16$ 取余,并转为对应的十六进制字符,并按位拼接到字符串中,再将 $num$ 除以 $16$,继续对 $16$ 取余,直到 $num$ 变为为 0。 - 最后将拼接好的字符串逆序返回就是答案。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -49,3 +73,8 @@ class Solution: return res[::-1] ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(C)$,其中 $C$ 为构造的十六进制数的长度。 +- **空间复杂度**:$O(C)$。 + diff --git "a/Solutions/0473. \347\201\253\346\237\264\346\213\274\346\255\243\346\226\271\345\275\242.md" "b/Solutions/0473. \347\201\253\346\237\264\346\213\274\346\255\243\346\226\271\345\275\242.md" index 3ab3ddb1..a892a44c 100644 --- "a/Solutions/0473. \347\201\253\346\237\264\346\213\274\346\255\243\346\226\271\345\275\242.md" +++ "b/Solutions/0473. \347\201\253\346\237\264\346\213\274\346\255\243\346\226\271\345\275\242.md" @@ -5,7 +5,7 @@ ## 题目大意 -**描述**:给定一个表示火柴长度的数组 `matchsticks`,其中 `matchsticks[i]` 表示第 `i` 根火柴的长度。 +**描述**:给定一个表示火柴长度的数组 $matchsticks$,其中 $matchsticks[i]$ 表示第 $i$ 根火柴的长度。 **要求**:找出一种能使用所有火柴拼成一个正方形的方法。不能折断火柴,可以将火柴连接起来,并且每根火柴都要用到。如果能拼成正方形,则返回 `True`,否则返回 `False`。 @@ -36,9 +36,9 @@ ### 思路 1:回溯算法 -1. 先排除数组为空和火柴总长度不是 `4` 的倍数的情况,直接返回 `False`。 -2. 然后将火柴按照从大到小排序。用数组 `sums` 记录四个边长分组情况。 -3. 将火柴分为 `4` 组,把每一根火柴依次向 `4` 条边上放。 +1. 先排除数组为空和火柴总长度不是 $4$ 的倍数的情况,直接返回 `False`。 +2. 然后将火柴按照从大到小排序。用数组 $sums$ 记录四个边长分组情况。 +3. 将火柴分为 $4$ 组,把每一根火柴依次向 $4$ 条边上放。 4. 直到放置最后一根,判断能否构成正方形,若能构成正方形,则返回 `True`,否则返回 `False`。 ### 思路 1:代码 diff --git "a/Solutions/0504. \344\270\203\350\277\233\345\210\266\346\225\260.md" "b/Solutions/0504. \344\270\203\350\277\233\345\210\266\346\225\260.md" index a80870fb..027d1c60 100644 --- "a/Solutions/0504. \344\270\203\350\277\233\345\210\266\346\225\260.md" +++ "b/Solutions/0504. \344\270\203\350\277\233\345\210\266\346\225\260.md" @@ -5,13 +5,38 @@ ## 题目大意 -给定一个整数 num,将其转换为 7 进制数,并以字符串形式输出。 +**描述**:给定一个整数 $num$。 + +**要求**:将其转换为 $7$ 进制数,并以字符串形式输出。 + +**说明**: + +- $-10^7 \le num \le 10^7$。 + +**示例**: + +- 示例 1: + +```python +输入: num = 100 +输出: "202" +``` + +- 示例 2: + +```python +输入: num = -7 +输出: "-10" +``` ## 解题思路 -对 num 不断取余整除,然后将取到的余数进行拼接成字符串即可。 +### 思路 1:模拟 -## 代码 +1. $num$ 不断对 $7$ 取余整除。 +2. 然后将取到的余数进行拼接成字符串即可。 + +### 思路 1:代码 ```python class Solution: @@ -27,3 +52,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(\log |n|)$。 +- **空间复杂度**:$O(\log |n|)$。 + diff --git "a/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" "b/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" index 89798748..81e3e64a 100644 --- "a/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" +++ "b/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" @@ -5,21 +5,43 @@ ## 题目大意 -给定一个字符串`s`,通过将字符串`s`中的每个字母转变大小写,我们可以获得一个新的字符串。 +**描述**:给定一个字符串 $s$,通过将字符串 $s$ 中的每个字母转变大小写,我们可以获得一个新的字符串。 -要求:返回所有可能得到的字符串集合。 +**要求**:返回所有可能得到的字符串集合。 + +**说明**: + +- 答案可以以任意顺序返回输出。 +- $1 \le s.length \le 12$。 +- $s$ 由小写英文字母、大写英文字母和数字组成。 + +**示例**: + +- 示例 1: + +```python +输入:s = "a1b2" +输出:["a1b2", "a1B2", "A1b2", "A1B2"] +``` + +- 示例 2: + +```python +输入: s = "3z4" +输出: ["3z4","3Z4"] +``` ## 解题思路 -回溯算法进行求解。具体解法如下: +### 思路 1:回溯算法 -- `i` 代表当前要处理的字符在字符串 `s` 中的下标,`path` 表示当前路径,`ans` 表示答案数组。 -- 如果处理到 `i == len(s)` 时,将当前路径存入答案数组中返回,否则进行递归处理。 - - 不修改当前字符,直接递归处理第 `i + 1` 个字符。 - - 如果当前字符是小写字符,则变为大写字符之后,递归处理第 `i + 1` 个字符。 - - 如果当前字符是大写字符,则变为小写字符之后,递归处理第 `i + 1` 个字符。 +- $i$ 代表当前要处理的字符在字符串 $s$ 中的下标,$path$ 表示当前路径,$ans$ 表示答案数组。 +- 如果处理到 $i == len(s)$ 时,将当前路径存入答案数组中返回,否则进行递归处理。 + - 不修改当前字符,直接递归处理第 $i + 1$ 个字符。 + - 如果当前字符是小写字符,则变为大写字符之后,递归处理第 $i + 1$ 个字符。 + - 如果当前字符是大写字符,则变为小写字符之后,递归处理第 $i + 1$ 个字符。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -40,3 +62,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$n \times 2^n$,其中 $n$ 为字符串的长度。 +- **空间复杂度**:$O(1)$,初返回值外不需要额外的空间。 + diff --git "a/Solutions/1079. \346\264\273\345\255\227\345\215\260\345\210\267.md" "b/Solutions/1079. \346\264\273\345\255\227\345\215\260\345\210\267.md" index 4371f155..93ad22d4 100644 --- "a/Solutions/1079. \346\264\273\345\255\227\345\215\260\345\210\267.md" +++ "b/Solutions/1079. \346\264\273\345\255\227\345\215\260\345\210\267.md" @@ -5,17 +5,43 @@ ## 题目大意 -给定一个代表活字字模的字符串 `tiles`,其中 `tiles[i]` 表示第 `i` 个字模上刻的字母。 +**描述**:给定一个代表活字字模的字符串 $tiles$,其中 $tiles[i]$ 表示第 $i$ 个字模上刻的字母。 -要求:返回你可以印出的非空字母序列的数目。 +**要求**:返回你可以印出的非空字母序列的数目。 -**注意:**本题中,每个活字字模只能使用一次。 +**说明**: + +- 本题中,每个活字字模只能使用一次。 +- $1 <= tiles.length <= 7$。 +- $tiles$ 由大写英文字母组成。 + +**示例**: + +- 示例 1: + +```python +输入:"AAB" +输出:8 +解释:可能的序列为 "A", "B", "AA", "AB", "BA", "AAB", "ABA", "BAA"。 +``` + +- 示例 2: + +```python +输入:"AAABBC" +输出:188 +``` ## 解题思路 -使用哈希表存储每个字符的个数。然后依次从哈希表中取出对应字符,统计排列个数,并进行回溯。如果当前字符个数为 `0`,则不再进行回溯。回溯之后将状态回退。 +### 思路 1:哈希表 + 回溯算法 -## 代码 +1. 使用哈希表存储每个字符的个数。 +2. 然后依次从哈希表中取出对应字符,统计排列个数,并进行回溯。 +3. 如果当前字符个数为 $0$,则不再进行回溯。 +4. 回溯之后将状态回退。 + +### 思路 1:代码 ```python class Solution: @@ -42,3 +68,8 @@ class Solution: return self.ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times n!)$,其中 $n$ 表示 $tiles$ 的长度最小值。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/1217. \347\216\251\347\255\271\347\240\201.md" "b/Solutions/1217. \347\216\251\347\255\271\347\240\201.md" index d75ab4ef..b678a9b0 100644 --- "a/Solutions/1217. \347\216\251\347\255\271\347\240\201.md" +++ "b/Solutions/1217. \347\216\251\347\255\271\347\240\201.md" @@ -5,12 +5,12 @@ ## 题目大意 -**描述**:给定一个数组 `position` 代表 `n` 个筹码的位置,其中 `position[i]` 代表第 `i` 个筹码的位置。现在需要把所有筹码移到同一个位置。在一步中,我们可以将第 `i` 个芯片的位置从 `position[i]` 改变为: +**描述**:给定一个数组 $position$ 代表 $n$ 个筹码的位置,其中 $position[i]$ 代表第 $i$ 个筹码的位置。现在需要把所有筹码移到同一个位置。在一步中,我们可以将第 $i$ 个芯片的位置从 $position[i]$ 改变为: -- `position[i] + 2` 或 `position[i] - 2`,此时 `cost = 0`; -- `position[i] + 1` 或 `position[i] - 1`,此时 `cost = 1`。 +- $position[i] + 2$ 或 $position[i] - 2$,此时 $cost = 0$; +- $position[i] + 1$ 或 $position[i] - 1$,此时 $cost = 1$。 -即移动偶数位长度的代价为 `0`,移动奇数位长度的代价为 `1`。 +即移动偶数位长度的代价为 $0$,移动奇数位长度的代价为 $1$。 **要求**:返回将所有筹码移动到同一位置上所需要的 最小代价 。 @@ -35,7 +35,7 @@ 题目中移动偶数位长度是不需要代价的,所以奇数位移动到奇数位不需要代价,偶数位移动到偶数位也不需要代价。 -则我们可以想将所有偶数位都移动到下标为 `0` 的位置,奇数位都移动到下标为 `1` 的位置。 +则我们可以想将所有偶数位都移动到下标为 $0$ 的位置,奇数位都移动到下标为 $1$ 的位置。 这样,所有的奇数位、偶数位上的人都到相同或相邻位置了。 @@ -59,3 +59,8 @@ class Solution: even += 1 return min(odd, even) ``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $poition$ 的长度。 +- **空间复杂度**:$O(1)$。 diff --git "a/Solutions/1247. \344\272\244\346\215\242\345\255\227\347\254\246\344\275\277\345\276\227\345\255\227\347\254\246\344\270\262\347\233\270\345\220\214.md" "b/Solutions/1247. \344\272\244\346\215\242\345\255\227\347\254\246\344\275\277\345\276\227\345\255\227\347\254\246\344\270\262\347\233\270\345\220\214.md" index 42b0256c..36504fac 100644 --- "a/Solutions/1247. \344\272\244\346\215\242\345\255\227\347\254\246\344\275\277\345\276\227\345\255\227\347\254\246\344\270\262\347\233\270\345\220\214.md" +++ "b/Solutions/1247. \344\272\244\346\215\242\345\255\227\347\254\246\344\275\277\345\276\227\345\255\227\347\254\246\344\270\262\347\233\270\345\220\214.md" @@ -5,17 +5,17 @@ ## 题目大意 -**描述**:给定两个长度相同的字符串 `s1` 和 `s2`,并且两个字符串中只含有字符 `'x'` 和 `'y'`。现在需要通过「交换字符」的方式使两个字符串相同。 +**描述**:给定两个长度相同的字符串 $s1$ 和 $s2$,并且两个字符串中只含有字符 `'x'` 和 `'y'`。现在需要通过「交换字符」的方式使两个字符串相同。 - 每次「交换字符」,需要分别从两个字符串中各选一个字符进行交换。 - 「交换字符」只能发生在两个不同的字符串之间,不能发生在同一个字符串内部。 -**要求**:返回使 `s1` 和 `s2` 相同的最小交换次数,如果没有方法能够使得这两个字符串相同,则返回 `-1`。 +**要求**:返回使 $s1$ 和 $s2$ 相同的最小交换次数,如果没有方法能够使得这两个字符串相同,则返回 $-1$。 **说明**: - $1 \le s1.length, s2.length \le 1000$。 -- `s1`、` s2` 只包含 `'x'` 或 `'y'`。 +- $s1$、$ s2$ 只包含 `'x'` 或 `'y'`。 **示例**: @@ -34,7 +34,7 @@ ### 思路 1:贪心算法 -- 如果 `s1 == s2`,则不需要交换。 +- 如果 $s1 == s2$,则不需要交换。 - 如果 `s1 = "xx"`,`s2 = "yy"`,则最少需要交换一次,才可以使两个字符串相等。 - 如果 `s1 = "yy"`,`s2 = "xx"`,则最少需要交换一次,才可以使两个字符串相等。 - 如果 `s1 = "xy"`,`s2 = "yx"`,则最少需要交换两次,才可以使两个字符串相等。 @@ -47,17 +47,17 @@ 我们把这两种情况分别进行统计。 -- 当遇到 `s1[i] == s2[i]` 时直接跳过。 -- 当遇到 `s1[i] == 'x'`,`s2[i] == 'y'` 时,则统计数量到变量 `xyCnt` 中。 -- 当遇到 `s1[i] == 'y'`,`s2[i] == 'y'` 时,则统计数量到变量 `yxCnt` 中。 +- 当遇到 $s1[i] == s2[i]$ 时直接跳过。 +- 当遇到 `s1[i] == 'x'`,`s2[i] == 'y'` 时,则统计数量到变量 $xyCnt$ 中。 +- 当遇到 `s1[i] == 'y'`,`s2[i] == 'y'` 时,则统计数量到变量 $yxCnt$ 中。 -则最后我们只需要判断 `xyCnt` 和 `yxCnt` 的个数即可。 +则最后我们只需要判断 $xyCnt$ 和 $yxCnt$ 的个数即可。 -- 如果 `xyCnt + yxCnt` 是奇数,则说明最终会有一个位置上的两个字符无法通过交换相匹配。 -- 如果 `xyCnt + yxCnt` 是偶数,并且 `xyCnt` 为偶数,则 `yxCnt` 也为偶数。则优先交换 `"xx"` 与 `"yy"`、`"yy"` 与 `"xx"`。即每两个 `xyCnt` 对应一次交换,每两个 `yxCnt` 对应交换一次,则结果为 `xyCnt // 2 + yxCnt // 2`。 -- 如果 `xyCnt + yxCnt` 是偶数,并且 `xyCnt` 为奇数,则 `yxCnt` 也为奇数。则优先交换 `"xx"` 与 `"yy"`、`"yy"` 与 `"xx"`。即每两个 `xyCnt` 对应一次交换,每两个 `yxCnt` 对应交换一次,则结果为 `xyCnt // 2 + yxCnt // 2`。最后还剩一组 `"xy"` 与 `"yx"` 或者 `"yx"` 与 `"xy"`,则再交换一次,则结果为 `xyCnt // 2 + yxCnt // 2 + 2`。 +- 如果 $xyCnt + yxCnt$ 是奇数,则说明最终会有一个位置上的两个字符无法通过交换相匹配。 +- 如果 $xyCnt + yxCnt$ 是偶数,并且 $xyCnt$ 为偶数,则 $yxCnt$ 也为偶数。则优先交换 `"xx"` 与 `"yy"`、`"yy"` 与 `"xx"`。即每两个 $xyCnt$ 对应一次交换,每两个 $yxCnt$ 对应交换一次,则结果为 $xyCnt \div 2 + yxCnt \div 2$。 +- 如果 $xyCnt + yxCnt$ 是偶数,并且 $xyCnt$ 为奇数,则 $yxCnt$ 也为奇数。则优先交换 `"xx"` 与 `"yy"`、`"yy"` 与 `"xx"`。即每两个 $xyCnt$ 对应一次交换,每两个 $yxCnt$ 对应交换一次,则结果为 $xyCnt \div 2 + yxCnt \div 2$。最后还剩一组 `"xy"` 与 `"yx"` 或者 `"yx"` 与 `"xy"`,则再交换一次,则结果为 $xyCnt \div 2 + yxCnt \div 2 + 2$。 -以上结果可以统一写成 `xyCnt // 2 + yxCnt // 2 + xyCnt % 2 * 2`。 +以上结果可以统一写成 $xyCnt \div 2 + yxCnt \div 2 + xyCnt \mod 2 \times 2$。 ### 思路 1:贪心算法代码 @@ -77,3 +77,8 @@ class Solution: return -1 return xyCnt // 2 + yxCnt // 2 + (xyCnt % 2 * 2) ``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为字符串的长度。 +- **空间复杂度**:$O(1)$。 diff --git "a/Solutions/1400. \346\236\204\351\200\240 K \344\270\252\345\233\236\346\226\207\345\255\227\347\254\246\344\270\262.md" "b/Solutions/1400. \346\236\204\351\200\240 K \344\270\252\345\233\236\346\226\207\345\255\227\347\254\246\344\270\262.md" index d31589fd..0ae8ef97 100644 --- "a/Solutions/1400. \346\236\204\351\200\240 K \344\270\252\345\233\236\346\226\207\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/1400. \346\236\204\351\200\240 K \344\270\252\345\233\236\346\226\207\345\255\227\347\254\246\344\270\262.md" @@ -5,14 +5,14 @@ ## 题目大意 -**描述**:给定一个字符串 `s` 和一个整数 `k`。 +**描述**:给定一个字符串 $s$ 和一个整数 $k$。 -**要求**:用 `s` 字符串中所有字符构造 `k` 个非空回文串。如果可以用 `s` 中所有字符构造 `k` 个回文字符串,那么请你返回 `True`,否则返回 `False`。 +**要求**:用 $s$ 字符串中所有字符构造 $k$ 个非空回文串。如果可以用 $s$ 中所有字符构造 $k$ 个回文字符串,那么请你返回 `True`,否则返回 `False`。 **说明**: - $1 \le s.length \le 10^5$。 -- `s` 中所有字符都是小写英文字母。 +- $s$ 中所有字符都是小写英文字母。 - $1 \le k \le 10^5$。 **示例**: @@ -30,9 +30,9 @@ ### 思路 1:贪心算法 -- 用字符串 `s` 中所有字符构造回文串最多可以构造 `len(s)` 个(将每个字符当做一个回文串)。所以如果 `len(s) < k`,则说明字符数量不够,无法构成 `k` 个回文串,直接返回 `False`。 -- 如果 `len(s) == k`,则可以直接使用单个字符构建回文串,直接返回 `True`。 -- 如果 `len(s) > k`,则需要判断一下字符串 `s `中每个字符的个数。因为当字符是偶数个时,可以直接构造成回文串。所以我们只需要考虑个数为奇数的字符即可。如果个位为奇数的字符种类小于等于 `k`,则说明可以构造 `k` 个回文串,返回 `True`。如果个位为奇数的字符种类大于 `k`,则说明无法构造 `k` 个回文串,返回 `Fasle`。 +- 用字符串 $s$ 中所有字符构造回文串最多可以构造 $len(s)$ 个(将每个字符当做一个回文串)。所以如果 $len(s) < k$,则说明字符数量不够,无法构成 $k$ 个回文串,直接返回 `False`。 +- 如果 $len(s) == k$,则可以直接使用单个字符构建回文串,直接返回 `True`。 +- 如果 $len(s) > k$,则需要判断一下字符串 $s$ 中每个字符的个数。因为当字符是偶数个时,可以直接构造成回文串。所以我们只需要考虑个数为奇数的字符即可。如果个位为奇数的字符种类小于等于 $k$,则说明可以构造 $k$ 个回文串,返回 `True`。如果个位为奇数的字符种类大于 $k$,则说明无法构造 $k$ 个回文串,返回 `Fasle`。 ### 思路 1:贪心算法代码 @@ -59,3 +59,8 @@ class Solution: odd += 1 return odd <= k ``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n + |\sum|)$,其中 $n$ 为字符串 $s$ 的长度,$\sum$ 是字符集,本题中 $|\sum| = 26$。 +- **空间复杂度**:$O(|\sum|)$。 diff --git "a/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" "b/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" index 9a113a2e..a2a0e739 100644 --- "a/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" +++ "b/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" @@ -5,26 +5,50 @@ ## 题目大意 -给定一个字符串 `s`。将字符串 `s` 拆分后可以得到若干非空子字符串,这些子字符串连接后应当能够还原为原字符串。但是拆分出来的每个子字符串都必须是唯一的 。 +**描述**:给定一个字符串 $s$。将字符串 $s$ 拆分后可以得到若干非空子字符串,这些子字符串连接后应当能够还原为原字符串。但是拆分出来的每个子字符串都必须是唯一的 。 -要求:拆分该字符串,并返回拆分后唯一子字符串的最大数目。 +**要求**:拆分该字符串,并返回拆分后唯一子字符串的最大数目。 -注意:子字符串是字符串中的一个连续字符序列。 +**说明**: + +- 子字符串是字符串中的一个连续字符序列。 +- $1 \le s.length \le 16$。 +- $s$ 仅包含小写英文字母。 + +**示例**: + +- 示例 1: + +```python +输入:s = "ababccc" +输出:5 +解释:一种最大拆分方法为 ['a', 'b', 'ab', 'c', 'cc'] 。像 ['a', 'b', 'a', 'b', 'c', 'cc'] 这样拆分不满足题目要求,因为其中的 'a' 和 'b' 都出现了不止一次。 +``` + +- 示例 2: + +```python +输入:s = "aba" +输出:2 +解释:一种最大拆分方法为 ['a', 'ba']。 +``` ## 解题思路 -维护一个全局变量 `ans` 用于记录拆分后唯一子字符串的最大数目。并使用集合 `s_set` 记录不重复的子串。 +### 思路 1:回溯算法 -- 从下标为 `0` 开头的子串回溯。 -- 对于下标为 `index` 开头的子串,我们可以在 `index + 1` 开始到 `len(s) - 1` 的位置上,分别进行子串拆分,将子串拆分为 `s[index: i + 1]`。 +维护一个全局变量 $ans$ 用于记录拆分后唯一子字符串的最大数目。并使用集合 $s\underline{}set$ 记录不重复的子串。 -- 如果当前子串不在 `s_set` 中,则将其存入 `s_set` 中,然后记录当前拆分子串个数,并从 `i + 1` 的位置进行下一层递归拆分。然后在拆分完,对子串进行回退操作。 -- 如果拆到字符串 `s` 的末尾,则记录并更新 `ans`。 +- 从下标为 $0$ 开头的子串回溯。 +- 对于下标为 $index$ 开头的子串,我们可以在 $index + 1$ 开始到 $len(s) - 1$ 的位置上,分别进行子串拆分,将子串拆分为 $s[index: i + 1]$。 + +- 如果当前子串不在 $s\underline{}set$ 中,则将其存入 $s\underline{}set$ 中,然后记录当前拆分子串个数,并从 $i + 1$ 的位置进行下一层递归拆分。然后在拆分完,对子串进行回退操作。 +- 如果拆到字符串 $s$ 的末尾,则记录并更新 $ans$。 - 在开始位置还可以进行以下剪枝:如果剩余字符个数 + 当前子串个数 <= 当前拆分后子字符串的最大数目,则直接返回。 -最后输出 `ans`。 +最后输出 $ans$。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -51,3 +75,8 @@ class Solution: return self.ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times 2^n)$,其中 $n$ 为字符串的长度。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/1710. \345\215\241\350\275\246\344\270\212\347\232\204\346\234\200\345\244\247\345\215\225\345\205\203\346\225\260.md" "b/Solutions/1710. \345\215\241\350\275\246\344\270\212\347\232\204\346\234\200\345\244\247\345\215\225\345\205\203\346\225\260.md" index 7de1b5ae..290ebf1a 100644 --- "a/Solutions/1710. \345\215\241\350\275\246\344\270\212\347\232\204\346\234\200\345\244\247\345\215\225\345\205\203\346\225\260.md" +++ "b/Solutions/1710. \345\215\241\350\275\246\344\270\212\347\232\204\346\234\200\345\244\247\345\215\225\345\205\203\346\225\260.md" @@ -5,11 +5,11 @@ ## 题目大意 -**描述**:现在需要将一些箱子装在一辆卡车上。给定一个二维数组 `boxTypes`,其中 `boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi]`。 +**描述**:现在需要将一些箱子装在一辆卡车上。给定一个二维数组 $boxTypes$,其中 $boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi]$。 -`numberOfBoxesi` 是类型 `i` 的箱子的数量。``numberOfUnitsPerBoxi` 是类型 `i` 的每个箱子可以装载的单元数量。 +$numberOfBoxesi$ 是类型 $i$ 的箱子的数量。$numberOfUnitsPerBoxi$ 是类型 $i$ 的每个箱子可以装载的单元数量。 -再给定一个整数 `truckSize` 表示一辆卡车上可以装载箱子的最大数量。只要箱子数量不超过 `truckSize`,你就可以选择任意箱子装到卡车上。 +再给定一个整数 $truckSize$ 表示一辆卡车上可以装载箱子的最大数量。只要箱子数量不超过 $truckSize$,你就可以选择任意箱子装到卡车上。 **要求**:返回卡车可以装载的最大单元数量。 @@ -46,23 +46,23 @@ ### 思路 1:贪心算法 -题目中,一辆卡车上可以装载箱子的最大数量是固定的(`truckSize`),那么如果想要使卡车上装载的单元数量最大,就应该优先选取装载单元数量多的箱子。 +题目中,一辆卡车上可以装载箱子的最大数量是固定的($truckSize$),那么如果想要使卡车上装载的单元数量最大,就应该优先选取装载单元数量多的箱子。 -所以,从贪心算法的角度来考虑,我们应该按照每个箱子可以装载的单元数量对数组 `boxTypes` 从大到小排序。然后优先选取装载单元数量多的箱子。 +所以,从贪心算法的角度来考虑,我们应该按照每个箱子可以装载的单元数量对数组 $boxTypes$ 从大到小排序。然后优先选取装载单元数量多的箱子。 下面我们使用贪心算法三步走的方法解决这道题。 -1. **转换问题**:将原问题转变为,在 `truckSize` 的限制下,当选取完装载单元数量最多的箱子 `box` 之后,再解决剩下箱子(`truckSize - box[0]`)的选择问题(子问题)。 -2. **贪心选择性质**:对于当前 `truckSize`,优先选取装载单元数量最多的箱子。 -3. **最优子结构性质**:在上面的贪心策略下,当前 `truckSize` 的贪心选择 + 剩下箱子的子问题最优解,就是全局最优解。也就是说在贪心选择的方案下,能够使得卡车可以装载的单元数量达到最大。 +1. **转换问题**:将原问题转变为,在 $truckSize$ 的限制下,当选取完装载单元数量最多的箱子 $box$ 之后,再解决剩下箱子($truckSize - box[0]$)的选择问题(子问题)。 +2. **贪心选择性质**:对于当前 $truckSize$,优先选取装载单元数量最多的箱子。 +3. **最优子结构性质**:在上面的贪心策略下,当前 $truckSize$ 的贪心选择 + 剩下箱子的子问题最优解,就是全局最优解。也就是说在贪心选择的方案下,能够使得卡车可以装载的单元数量达到最大。 使用贪心算法的解决步骤描述如下: -1. 对数组 `boxTypes` 按照每个箱子可以装载的单元数量从大到小排序。使用变量 `res` 记录卡车可以装载的最大单元数量。 -2. 遍历数组 `boxTypes`,对于当前种类的箱子 `box`: - 1. 如果 `truckSize > box[0]`,说明当前种类箱子可以全部装载。则答案数量加上该种箱子的单元总数,即 `box[0] * box[1]`,并且最大数量 `truckSize` 减去装载的箱子数。 - 2. 如果 `truckSize <= box[0]`,说明当前种类箱子只能部分装载。则答案数量加上 `truckSize * box[1]`,并跳出循环。 -3. 最后返回答案 `res`。 +1. 对数组 $boxTypes$ 按照每个箱子可以装载的单元数量从大到小排序。使用变量 $res$ 记录卡车可以装载的最大单元数量。 +2. 遍历数组 $boxTypes$,对于当前种类的箱子 $box$: + 1. 如果 $truckSize > box[0]$,说明当前种类箱子可以全部装载。则答案数量加上该种箱子的单元总数,即 $box[0] \times box[1]$,并且最大数量 $truckSize$ 减去装载的箱子数。 + 2. 如果 $truckSize \le box[0]$,说明当前种类箱子只能部分装载。则答案数量加上 $truckSize \times box[1]$,并跳出循环。 +3. 最后返回答案 $res$。 ### 思路 1:代码 @@ -83,5 +83,5 @@ class Solution: ### 思路 1:复杂度分析 -- **时间复杂度**:$O(n \times \log n)$,其中 $n$ 是数组 `boxTypes` 的长度。 +- **时间复杂度**:$O(n \times \log n)$,其中 $n$ 是数组 $boxTypes$ 的长度。 - **空间复杂度**:$O(\log n)$。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" index ee800db9..0226d050 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" @@ -5,21 +5,50 @@ ## 题目大意 -给定一个整数数组 `postorder`。数组的任意两个数字都互不相同。 +**描述**:给定一个整数数组 $postorder$。数组的任意两个数字都互不相同。 -要求:判断该数组是不是某二叉搜索树的后序遍历结果。如果是,则返回 `True`,否则返回 `False`。 +**要求**:判断该数组是不是某二叉搜索树的后序遍历结果。如果是,则返回 `True`,否则返回 `False`。 + +**说明**: + +- 数组长度 <= 1000。 +- $postorder$ 中无重复数字。 + +**示例**: + +- 示例 1: + +![](https://pic.leetcode.cn/1694762751-fwHhWX-%E5%89%91%E6%8C%8733%E7%A4%BA%E4%BE%8B1.png) + +```python +输入: postorder = [4,9,6,9,8] +输出: false +解释:从上图可以看出这不是一颗二叉搜索树 +``` + +- 示例 2: + +![](https://pic.leetcode.cn/1694762510-vVpTic-%E5%89%91%E6%8C%8733.png) + +```python +输入: postorder = [4,6,5,9,8] +输出: true +解释:可构建的二叉搜索树如上图 +``` ## 解题思路 +### 思路 1:递归分治 + 后序遍历的顺序为:左 -> 右 -> 根。而二叉搜索树的定义是:左子树所有节点值 < 根节点值,右子树所有节点值 > 根节点值。 所以,可以把数组最右侧元素作为二叉搜索树的根节点值。然后判断数组的左右两侧是否符合左侧值都小于该节点值,右侧值都大于该节点值。如果不满足,则说明不是某二叉搜索树的后序遍历结果。 找到左右分界线位置,然后递归左右数组继续查找。 -终止条件为数组 开始位置 > 结束位置,此时该树的子节点数目小于等于 1,直接返回 `True` 即可。 +终止条件为数组 开始位置 > 结束位置,此时该树的子节点数目小于等于 $1$,直接返回 `True` 即可。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -40,3 +69,10 @@ class Solution: return verify(0, len(postorder) - 1) ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$。 +- **空间复杂度**:$O(n)$。 + + + From 289499cc4eeed89c5a9b479d4ab3b32524c21866 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:13 +0800 Subject: [PATCH 014/158] Update 01.Stack-Basic.md --- .../03.Stack/01.Stack-Basic/01.Stack-Basic.md | 78 +++++++++---------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md b/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md index f7b7f95e..53312052 100644 --- a/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md +++ b/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md @@ -27,8 +27,8 @@ 和线性表类似,栈有两种存储表示方法:**「顺序栈」** 和 **「链式栈」**。 -- **「顺序栈」**:即堆栈的顺序存储结构。利用一组地址连续的存储单元依次存放自栈底到栈顶的元素,同时使用指针 `top` 指示栈顶元素在顺序栈中的位置。 -- **「链式栈」**:即堆栈的链式存储结构。利用单链表的方式来实现堆栈。栈中元素按照插入顺序依次插入到链表的第一个节点之前,并使用栈顶指针 `top` 指示栈顶元素,`top` 永远指向链表的头节点位置。 +- **「顺序栈」**:即堆栈的顺序存储结构。利用一组地址连续的存储单元依次存放自栈底到栈顶的元素,同时使用指针 $top$ 指示栈顶元素在顺序栈中的位置。 +- **「链式栈」**:即堆栈的链式存储结构。利用单链表的方式来实现堆栈。栈中元素按照插入顺序依次插入到链表的第一个节点之前,并使用栈顶指针 $top$ 指示栈顶元素,$top$ 永远指向链表的头节点位置。 在描述堆栈的顺序存储与链式存储具体实现之前,我们先来看看堆栈具有哪些基本操作。 @@ -38,35 +38,35 @@ 堆栈的基本操作如下: -- **初始化空栈**:创建一个空栈,定义栈的大小 `size`,以及栈顶元素指针 `top`。 +- **初始化空栈**:创建一个空栈,定义栈的大小 $size$,以及栈顶元素指针 $top$。 -- **判断栈是否为空**:当堆栈为空时,返回 `True`。当堆栈不为空时,返回 `False`。一般只用于栈中删除操作和获取当前栈顶元素操作中。 +- **判断栈是否为空**:当堆栈为空时,返回 $True$。当堆栈不为空时,返回 $False$。一般只用于栈中删除操作和获取当前栈顶元素操作中。 -- **判断栈是否已满**:当堆栈已满时,返回 `True`,当堆栈未满时,返回 `False`。一般只用于顺序栈中插入元素和获取当前栈顶元素操作中。 +- **判断栈是否已满**:当堆栈已满时,返回 $True$,当堆栈未满时,返回 $False$。一般只用于顺序栈中插入元素和获取当前栈顶元素操作中。 -- **插入元素(进栈、入栈)**:相当于在线性表最后元素后面插入一个新的数据元素。并改变栈顶指针 `top` 的指向位置。 +- **插入元素(进栈、入栈)**:相当于在线性表最后元素后面插入一个新的数据元素。并改变栈顶指针 $top$ 的指向位置。 -- **删除元素(出栈、退栈)**:相当于在线性表最后元素后面删除最后一个数据元素。并改变栈顶指针 `top` 的指向位置。 -- **获取栈顶元素**:相当于获取线性表中最后一个数据元素。与插入元素、删除元素不同的是,该操作并不改变栈顶指针 `top` 的指向位置。 +- **删除元素(出栈、退栈)**:相当于在线性表最后元素后面删除最后一个数据元素。并改变栈顶指针 $top$ 的指向位置。 +- **获取栈顶元素**:相当于获取线性表中最后一个数据元素。与插入元素、删除元素不同的是,该操作并不改变栈顶指针 $top$ 的指向位置。 接下来我们来看一下栈的顺序存储与链式存储两种不同的实现方式。 ### 2.2 堆栈的顺序存储实现 -堆栈最简单的实现方式就是借助于一个数组来描述堆栈的顺序存储结构。在 `Python` 中我们可以借助列表 `list` 来实现。这种采用顺序存储结构的堆栈也被称为 **「顺序栈」**。 +堆栈最简单的实现方式就是借助于一个数组来描述堆栈的顺序存储结构。在 Python 中我们可以借助列表 $list$ 来实现。这种采用顺序存储结构的堆栈也被称为 **「顺序栈」**。 #### 2.2.1 堆栈的顺序存储基本描述 ![](https://qcdn.itcharge.cn/images/20211202101936.png) -我们约定 `self.top` 指向栈顶元素所在位置。 +我们约定 $self.top$ 指向栈顶元素所在位置。 -- **初始化空栈**:使用列表创建一个空栈,定义栈的大小 `self.size`,并令栈顶元素指针 `self.top` 指向 `-1`,即 `self.top = -1`。 -- **判断栈是否为空**:当 `self.top == -1` 时,说明堆栈为空,返回 `True`,否则返回 `False`。 -- **判断栈是否已满**:当 `self.top == self.size - 1`,说明堆栈已满,返回 `True`,否则返回返回 `False`。 -- **插入元素(进栈、入栈)**:先判断堆栈是否已满,已满直接抛出异常。如果堆栈未满,则在 `self.stack` 末尾插入新的数据元素,并令 `self.top` 向右移动 `1` 位。 -- **删除元素(出栈、退栈)**:先判断堆栈是否为空,为空直接抛出异常。如果堆栈不为空,则删除 `self.stack` 末尾的数据元素,并令 `self.top` 向左移动 `1` 位。 -- **获取栈顶元素**:先判断堆栈是否为空,为空直接抛出异常。不为空则返回 `self.top` 指向的栈顶元素,即 `self.stack[self.top]`。 +- **初始化空栈**:使用列表创建一个空栈,定义栈的大小 $self.size$,并令栈顶元素指针 $self.top$ 指向 $-1$,即 $self.top = -1$。 +- **判断栈是否为空**:当 $self.top == -1$ 时,说明堆栈为空,返回 $True$,否则返回 $False$。 +- **判断栈是否已满**:当 $self.top == self.size - 1$,说明堆栈已满,返回 $True$,否则返回返回 $False$。 +- **插入元素(进栈、入栈)**:先判断堆栈是否已满,已满直接抛出异常。如果堆栈未满,则在 $self.stack$ 末尾插入新的数据元素,并令 $self.top$ 向右移动 $1$ 位。 +- **删除元素(出栈、退栈)**:先判断堆栈是否为空,为空直接抛出异常。如果堆栈不为空,则删除 $self.stack$ 末尾的数据元素,并令 $self.top$ 向左移动 $1$ 位。 +- **获取栈顶元素**:先判断堆栈是否为空,为空直接抛出异常。不为空则返回 $self.top$ 指向的栈顶元素,即 $self.stack[self.top]$。 #### 2.2.2 堆栈的顺序存储实现代码 @@ -112,19 +112,19 @@ class Stack: ### 2.3 堆栈的链式存储实现 -堆栈的顺序存储结构保留着顺序存储分配空间的固有缺陷,即在栈满或者其他需要重新调整存储空间时需要移动大量元素。为此,堆栈可以采用链式存储方式来实现。在 `Python` 中我们通过构造链表节点 `Node` 的方式来实现。这种采用链式存储结构的堆栈也被称为 **「链式栈」**。 +堆栈的顺序存储结构保留着顺序存储分配空间的固有缺陷,即在栈满或者其他需要重新调整存储空间时需要移动大量元素。为此,堆栈可以采用链式存储方式来实现。在 Python 中我们通过构造链表节点 $Node$ 的方式来实现。这种采用链式存储结构的堆栈也被称为 **「链式栈」**。 ![](https://qcdn.itcharge.cn/images/20211202103327.png) #### 2.3.1 堆栈的链式存储基本描述 -我们约定 `self.top` 指向栈顶元素所在位置。 +我们约定 $self.top$ 指向栈顶元素所在位置。 -- **初始化空栈**:使用列表创建一个空栈,并令栈顶元素指针 `self.top` 指向 `None`,即 `self.top = None`。 -- **判断栈是否为空**:当 `self.top == None` 时,说明堆栈为空,返回 `True`,否则返回 `False`。 -- **插入元素(进栈、入栈)**:创建值为 `value` 的链表节点,插入到链表头节点之前,并令栈顶指针 `self.top` 指向新的头节点。 -- **删除元素(出栈、退栈)**:先判断堆栈是否为空,为空直接抛出异常。如果堆栈不为空,则先使用变量 `cur` 存储当前栈顶指针 `self.top` 指向的头节点,然后令 `self.top` 沿着链表移动 `1` 位,然后再删除之前保存的 `cur` 节点。 -- **获取栈顶元素**:先判断堆栈是否为空,为空直接抛出异常。不为空则返回 `self.top` 指向的栈顶节点的值,即 `self.top.value`。 +- **初始化空栈**:使用列表创建一个空栈,并令栈顶元素指针 $self.top$ 指向 $None$,即 $self.top = None$。 +- **判断栈是否为空**:当 $self.top == None$ 时,说明堆栈为空,返回 $True$,否则返回 $False$。 +- **插入元素(进栈、入栈)**:创建值为 $value$ 的链表节点,插入到链表头节点之前,并令栈顶指针 $self.top$ 指向新的头节点。 +- **删除元素(出栈、退栈)**:先判断堆栈是否为空,为空直接抛出异常。如果堆栈不为空,则先使用变量 $cur$ 存储当前栈顶指针 $self.top$ 指向的头节点,然后令 $self.top$ 沿着链表移动 $1$ 位,然后再删除之前保存的 $cur$ 节点。 +- **获取栈顶元素**:先判断堆栈是否为空,为空直接抛出异常。不为空则返回 $self.top$ 指向的栈顶节点的值,即 $self.top.value$。 #### 2.3.2 堆栈的链式存储实现代码 @@ -185,9 +185,9 @@ class Stack: #### 3.1.2 题目大意 -**描述**:给定一个只包括 `'('`,`')'`,`'{'`,`'}'`,`'['`,`']'` 的字符串 `s` 。 +**描述**:给定一个只包括 `'('`,`')'`,`'{'`,`'}'`,`'['`,`']'` 的字符串 $s$。 -**要求**:判断字符串 `s` 是否有效(即括号是否匹配)。 +**要求**:判断字符串 $s$ 是否有效(即括号是否匹配)。 **说明**: @@ -212,15 +212,15 @@ class Stack: 括号匹配是「栈」的经典应用。我们可以用栈来解决这道题。具体做法如下: -1. 先判断一下字符串的长度是否为偶数。因为括号是成对出现的,所以字符串的长度应为偶数,可以直接判断长度为奇数的字符串不匹配。如果字符串长度为奇数,则说明字符串 `s` 中的括号不匹配,直接返回 `False`。 -2. 使用栈 `stack` 来保存未匹配的左括号。然后依次遍历字符串 `s` 中的每一个字符。 +1. 先判断一下字符串的长度是否为偶数。因为括号是成对出现的,所以字符串的长度应为偶数,可以直接判断长度为奇数的字符串不匹配。如果字符串长度为奇数,则说明字符串 $s$ 中的括号不匹配,直接返回 $False$。 +2. 使用栈 $stack$ 来保存未匹配的左括号。然后依次遍历字符串 $s$ 中的每一个字符。 1. 如果遍历到左括号时,将其入栈。 2. 如果遍历到右括号时,先看栈顶元素是否是与当前右括号相同类型的左括号。 1. 如果是与当前右括号相同类型的左括号,则令其出栈,继续向前遍历。 - 2. 如果不是与当前右括号相同类型的左括号,则说明字符串 `s` 中的括号不匹配,直接返回 `False`。 + 2. 如果不是与当前右括号相同类型的左括号,则说明字符串 $s$ 中的括号不匹配,直接返回 $False$。 3. 遍历完,还要再判断一下栈是否为空。 - 1. 如果栈为空,则说明字符串 `s` 中的括号匹配,返回 `True`。 - 2. 如果栈不为空,则说明字符串 `s` 中的括号不匹配,返回 `False`。 + 1. 如果栈为空,则说明字符串 $s$ 中的括号匹配,返回 $True$。 + 2. 如果栈不为空,则说明字符串 $s$ 中的括号不匹配,返回 $False$。 ##### 思路 1:代码 @@ -267,15 +267,15 @@ class Solution: #### 3.2.2 题目大意 -**描述**:给定一个字符串表达式 `s`,表达式中所有整数为非负整数,运算符只有 `+`、`-`、`*`、`/`,没有括号。 +**描述**:给定一个字符串表达式 $s$,表达式中所有整数为非负整数,运算符只有 `+`、`-`、`*`、`/`,没有括号。 **要求**:实现一个基本计算器来计算并返回它的值。 **说明**: - $1 \le s.length \le 3 * 10^5$。 -- `s` 由整数和算符(`+`、`-`、`*`、`/`)组成,中间由一些空格隔开。 -- `s` 表示一个有效表达式。 +- $s$ 由整数和算符(`+`、`-`、`*`、`/`)组成,中间由一些空格隔开。 +- $s$ 表示一个有效表达式。 - 表达式中的所有整数都是非负整数,且在范围 $[0, 2^{31} - 1]$ 内。 - 题目数据保证答案是一个 32-bit 整数。 @@ -300,13 +300,13 @@ class Solution: 具体做法: -1. 遍历字符串 `s`,使用变量 `op` 来标记数字之前的运算符,默认为 `+`。 +1. 遍历字符串 $s$,使用变量 $op$ 来标记数字之前的运算符,默认为 `+`。 2. 如果遇到数字,继续向后遍历,将数字进行累积,得到完整的整数 num。判断当前 op 的符号。 - 1. 如果 `op` 为 `+`,则将 `num` 压入栈中。 - 2. 如果 `op` 为 `-`,则将 `-num` 压入栈中。 - 3. 如果 `op` 为 `*`,则将栈顶元素 `top` 取出,计算 `top * num`,并将计算结果压入栈中。 - 4. 如果 `op` 为 `/`,则将栈顶元素 `top` 取出,计算 `int(top / num)`,并将计算结果压入栈中。 -3. 如果遇到 `+`、`-`、`*`、`/` 操作符,则更新 `op`。 + 1. 如果 $op$ 为 `+`,则将 $num$ 压入栈中。 + 2. 如果 $op$ 为 `-`,则将 $-num$ 压入栈中。 + 3. 如果 $op$ 为 `*`,则将栈顶元素 $top$ 取出,计算 $top \times num$,并将计算结果压入栈中。 + 4. 如果 $op$ 为 `/`,则将栈顶元素 $top$ 取出,计算 $int(top / num)$,并将计算结果压入栈中。 +3. 如果遇到 `+`、`-`、`*`、`/` 操作符,则更新 $op$。 4. 最后将栈中整数进行累加,并返回结果。 ##### 思路 1:代码 From 175c0785f8958c198bec3efce61336d81e471464 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:15 +0800 Subject: [PATCH 015/158] Update 01.Monotone-Stack.md --- .../02.Monotone-Stack/01.Monotone-Stack.md | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md b/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md index fbc70c07..b98e9e58 100644 --- a/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md +++ b/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md @@ -12,12 +12,12 @@ 单调递增栈的入栈、出栈过程如下: -- 假设当前进栈元素为 `x`,如果 `x` 比栈顶元素小,则直接入栈。 -- 否则从栈顶开始遍历栈中元素,把小于 `x` 或者等于 `x` 的元素弹出栈,直到遇到一个大于 `x` 的元素为止,然后再把 `x` 压入栈中。 +- 假设当前进栈元素为 $x$,如果 $x$ 比栈顶元素小,则直接入栈。 +- 否则从栈顶开始遍历栈中元素,把小于 $x$ 或者等于 $x$ 的元素弹出栈,直到遇到一个大于 $x$ 的元素为止,然后再把 $x$ 压入栈中。 -下面我们以数组 `[2, 7, 5, 4, 6, 3, 4, 2]` 为例,模拟一下「单调递增栈」的进栈、出栈过程。具体过程如下: +下面我们以数组 $[2, 7, 5, 4, 6, 3, 4, 2]$ 为例,模拟一下「单调递增栈」的进栈、出栈过程。具体过程如下: -- 数组元素:`[2, 7, 5, 4, 6, 3, 4, 2]`,遍历顺序为从左到右。 +- 数组元素:$[2, 7, 5, 4, 6, 3, 4, 2]$,遍历顺序为从左到右。 | 第 i 步 | 待插入元素 | 操 作 | 结 果(左侧为栈底) | 作 用 | | :-----: | :--------: | ---------------------- | ------------------- | ------------------------------------- | @@ -30,7 +30,7 @@ | 7 | 4 | 3 出栈,4 入栈 | [7, 6, 4] | 元素 4 的左侧第一个比 4 大的元素为:6 | | 8 | 2 | 2 入栈 | [7, 6, 4, 2] | 元素 2 的左侧第一个比 2 大的元素为:4 | -最终栈中元素为 `[7, 6, 4, 2]`。因为从栈顶(右端)到栈底(左侧)元素的顺序为 `2, 4, 6, 7`,满足递增关系,所以这是一个单调递增栈。 +最终栈中元素为 $[7, 6, 4, 2]$。因为从栈顶(右端)到栈底(左侧)元素的顺序为 $2, 4, 6, 7$,满足递增关系,所以这是一个单调递增栈。 我们以上述过程第 5 步为例,所对应的图示过程为: @@ -45,12 +45,12 @@ 单调递减栈的入栈、出栈过程如下: -- 假设当前进栈元素为 `x`,如果 `x` 比栈顶元素大,则直接入栈。 -- 否则从栈顶开始遍历栈中元素,把大于 `x` 或者等于 `x` 的元素弹出栈,直到遇到一个小于 `x` 的元素为止,然后再把 `x` 压入栈中。 +- 假设当前进栈元素为 $x$,如果 $x$ 比栈顶元素大,则直接入栈。 +- 否则从栈顶开始遍历栈中元素,把大于 $x$ 或者等于 $x$ 的元素弹出栈,直到遇到一个小于 $x$ 的元素为止,然后再把 $x$ 压入栈中。 -下面我们以数组 `[4, 3, 2, 5, 7, 4, 6, 8]` 为例,模拟一下「单调递减栈」的进栈、出栈过程。具体过程如下: +下面我们以数组 $[4, 3, 2, 5, 7, 4, 6, 8]$ 为例,模拟一下「单调递减栈」的进栈、出栈过程。具体过程如下: -- 数组元素:`[4, 3, 2, 5, 7, 4, 6, 8]`,遍历顺序为从左到右。 +- 数组元素:$[4, 3, 2, 5, 7, 4, 6, 8]$,遍历顺序为从左到右。 | 第 i 步 | 待插入元素 | 操 作 | 结 果(左侧为栈底) | 作用 | | :-----: | :--------: | ---------------------- | ------------------- | ------------------------------------- | @@ -63,7 +63,7 @@ | 7 | 6 | 6 入栈 | [2, 4, 6] | 元素 6 的左侧第一个比 6 小的元素是:4 | | 8 | 8 | 8 入栈 | [2, 4, 6, 8] | 元素 8 的左侧第一个比 8 小的元素是:6 | -最终栈中元素为 `[2, 4, 6, 8]`。因为从栈顶(右端)到栈底(左侧)元素的顺序为 `8, 6, 4, 2`,满足递减关系,所以这是一个单调递减栈。 +最终栈中元素为 $[2, 4, 6, 8]$。因为从栈顶(右端)到栈底(左侧)元素的顺序为 $8, 6, 4, 2$,满足递减关系,所以这是一个单调递减栈。 我们以上述过程第 6 步为例,所对应的图示过程为: @@ -161,27 +161,27 @@ def monotoneDecreasingStack(nums): #### 4.1.2 题目大意 -给定两个没有重复元素的数组 `nums1` 和 `nums2` ,其中 `nums1` 是 `nums2` 的子集。 +给定两个没有重复元素的数组 $nums1$ 和 $nums2$ ,其中 $nums1$ 是 $nums2$ 的子集。 -要求:找出 `nums1` 中每个元素在 `nums2` 中的下一个比其大的值。 +要求:找出 $nums1$ 中每个元素在 $nums2$ 中的下一个比其大的值。 -- `nums1` 中数字 `x` 的下一个更大元素是指: `x` 在 `nums2` 中对应位置的右边的第一个比 `x` 大的元素。如果不存在,对应位置输出 `-1`。 +- $nums1$ 中数字 $x$ 的下一个更大元素是指:$x$ 在 $nums2$ 中对应位置的右边的第一个比 $x$ 大的元素。如果不存在,对应位置输出 $-1$。 #### 4.1.3 解题思路 -第一种思路是根据题意直接暴力求解。遍历 `nums1` 中的每一个元素。对于 `nums1` 的每一个元素 `nums1[i]`,再遍历一遍 `nums2`,查找 `nums2` 中对应位置右边第一个比 `nums1[i]` 大的元素。这种解法的时间复杂度是 $O(n^2)$。 +第一种思路是根据题意直接暴力求解。遍历 $nums1$ 中的每一个元素。对于 $nums1$ 的每一个元素 $nums1[i]$,再遍历一遍 $nums2$,查找 $nums2$ 中对应位置右边第一个比 $nums1[i]$ 大的元素。这种解法的时间复杂度是 $O(n^2)$。 -第二种思路是使用单调递增栈。因为 `nums1` 是 `nums2` 的子集,所以我们可以先遍历一遍 `nums2`,并构造单调递增栈,求出 `nums2` 中每个元素右侧下一个更大的元素。然后将其存储到哈希表中。然后再遍历一遍 `nums1`,从哈希表中取出对应结果,存放到答案数组中。这种解法的时间复杂度是 $O(n)$。具体做法如下: +第二种思路是使用单调递增栈。因为 $nums1$ 是 $nums2$ 的子集,所以我们可以先遍历一遍 $nums2$,并构造单调递增栈,求出 $nums2$ 中每个元素右侧下一个更大的元素。然后将其存储到哈希表中。然后再遍历一遍 $nums1$,从哈希表中取出对应结果,存放到答案数组中。这种解法的时间复杂度是 $O(n)$。具体做法如下: -- 使用数组 `res` 存放答案。使用 `stack` 表示单调递增栈。使用哈希表 `num_map` 用于存储 `nums2` 中下一个比当前元素大的数值,映射关系为 `当前元素值:下一个比当前元素大的数值`。 -- 遍历数组 `nums2`,对于当前元素: +- 使用数组 $res$ 存放答案。使用 $stack$ 表示单调递增栈。使用哈希表 $num\underline{}map$ 用于存储 $nums2$ 中下一个比当前元素大的数值,映射关系为 $当前元素值:下一个比当前元素大的数值$。 +- 遍历数组 $nums2$,对于当前元素: - 如果当前元素值较小,则直接让当前元素值入栈。 - 如果当前元素值较大,则一直出栈,直到当前元素值小于栈顶元素。 - - 出栈时,出栈元素是第一个大于当前元素值的元素。则将其映射到 `num_map` 中。 + - 出栈时,出栈元素是第一个大于当前元素值的元素。则将其映射到 $num\underline{}map$ 中。 -- 遍历完数组 `nums2`,建立好所有元素下一个更大元素的映射关系之后,再遍历数组 `nums1`。 -- 从 `num_map` 中取出对应的值,将其加入到答案数组中。 -- 最终输出答案数组 `res`。 +- 遍历完数组 $nums2$,建立好所有元素下一个更大元素的映射关系之后,再遍历数组 $nums1$。 +- 从 $num\underline{}map$ 中取出对应的值,将其加入到答案数组中。 +- 最终输出答案数组 $res$。 #### 4.1.4 代码 @@ -210,9 +210,9 @@ class Solution: #### 4.2.2 题目大意 -**描述**:给定一个列表 `temperatures`,`temperatures[i]` 表示第 `i` 天的气温。 +**描述**:给定一个列表 $temperatures$,$temperatures[i]$ 表示第 $i$ 天的气温。 -**要求**:输出一个列表,列表上每个位置代表「如果要观测到更高的气温,至少需要等待的天数」。如果之后的气温不再升高,则用 `0` 来代替。 +**要求**:输出一个列表,列表上每个位置代表「如果要观测到更高的气温,至少需要等待的天数」。如果之后的气温不再升高,则用 $0$ 来代替。 **说明**: @@ -240,12 +240,12 @@ class Solution: ##### 思路 1:单调栈 -1. 首先,将答案数组 `ans` 全部赋值为 0。然后遍历数组每个位置元素。 +1. 首先,将答案数组 $ans$ 全部赋值为 0。然后遍历数组每个位置元素。 2. 如果栈为空,则将当前元素的下标入栈。 3. 如果栈不为空,且当前数字大于栈顶元素对应数字,则栈顶元素出栈,并计算下标差。 -4. 此时当前元素就是栈顶元素的下一个更高值,将其下标差存入答案数组 `ans` 中保存起来,判断栈顶元素。 +4. 此时当前元素就是栈顶元素的下一个更高值,将其下标差存入答案数组 $ans$ 中保存起来,判断栈顶元素。 5. 直到当前数字小于或等于栈顶元素,则停止出栈,将当前元素下标入栈。 -6. 最后输出答案数组 `ans`。 +6. 最后输出答案数组 $ans$。 ##### 思路 1:代码 From 71f81327af4e35ec43989805ac1168bdf41679ba Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:17 +0800 Subject: [PATCH 016/158] Update 01.Queue-Basic.md --- .../04.Queue/01.Queue-Basic/01.Queue-Basic.md | 108 +++++++++--------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md b/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md index 13eb3d55..60618482 100644 --- a/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md +++ b/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md @@ -27,46 +27,46 @@ 和线性表类似,队列有两种存储表示方法:**「顺序存储的队列」** 和 **「链式存储的队列」**。 -- **「顺序存储的队列」**:利用一组地址连续的存储单元依次存放队列中从队头到队尾的元素,同时使用指针 `front` 指向队头元素在队列中的位置,使用指针 `rear` 指示队尾元素在队列中的位置。 -- **「链式存储的队列」**:利用单链表的方式来实现队列。队列中元素按照插入顺序依次插入到链表的第一个节点之后,并使用队头指针 `front` 指向链表头节点位置,也就是队头元素,`rear` 指向链表尾部位置,也就是队尾元素。 +- **「顺序存储的队列」**:利用一组地址连续的存储单元依次存放队列中从队头到队尾的元素,同时使用指针 $front$ 指向队头元素在队列中的位置,使用指针 $rear$ 指示队尾元素在队列中的位置。 +- **「链式存储的队列」**:利用单链表的方式来实现队列。队列中元素按照插入顺序依次插入到链表的第一个节点之后,并使用队头指针 $front$ 指向链表头节点位置,也就是队头元素,$rear$ 指向链表尾部位置,也就是队尾元素。 -注意:`front` 和 `rear` 的指向位置并不完全固定。有时候算法设计上的方便以及代码简洁,也会使 `front` 指向队头元素所在位置的前一个位置。`rear` 也可能指向队尾元素在队列位置的下一个位置。具体还是要看算法是如何实现的。 +注意:$front$ 和 $rear$ 的指向位置并不完全固定。有时候算法设计上的方便以及代码简洁,也会使 $front$ 指向队头元素所在位置的前一个位置。$rear$ 也可能指向队尾元素在队列位置的下一个位置。具体还是要看算法是如何实现的。 在描述队列的顺序存储与链式存储具体实现之前,我们先来看看队列具有哪些基本操作。 ### 2.1 队列的基本操作 -- **初始化空队列**:创建一个空队列,定义队列的大小 `size`,以及队头元素指针 `front`,队尾指针 `rear`。 +- **初始化空队列**:创建一个空队列,定义队列的大小 $size$,以及队头元素指针 $front$,队尾指针 $rear$。 -- **判断队列是否为空**:当队列为空时,返回 `True`。当队列不为空时,返回 `False`。一般只用于「出队操作」和「获取队头元素操作」中。 +- **判断队列是否为空**:当队列为空时,返回 $True$。当队列不为空时,返回 $False$。一般只用于「出队操作」和「获取队头元素操作」中。 -- **判断队列是否已满**:当队列已满时,返回 `True`,当队列未满时,返回 `False`。一般只用于顺序队列中插入元素操作中。 +- **判断队列是否已满**:当队列已满时,返回 $True$,当队列未满时,返回 $False$。一般只用于顺序队列中插入元素操作中。 -- **插入元素(入队)**:相当于在线性表最后一个数据元素后面插入一个新的数据元素。并改变队尾指针 `rear` 的指向位置。 +- **插入元素(入队)**:相当于在线性表最后一个数据元素后面插入一个新的数据元素。并改变队尾指针 $rear$ 的指向位置。 -- **删除元素(出队)**:相当于在线性表中删除第一个数据元素。并改变队头指针 `front` 的指向位置。 -- **获取队头元素**:相当于获取线性表中第一个数据元素。与插入元素(入队)、删除元素(出队)不同的是,该操作并不改变队头指针 `front` 的指向位置。 -- **获取队尾元素**:相当于获取线性表中最后一个数据元素。与插入元素(入队)、删除元素(出队)不同的是,该操作并不改变队尾指针 `rear` 的指向位置。 +- **删除元素(出队)**:相当于在线性表中删除第一个数据元素。并改变队头指针 $front$ 的指向位置。 +- **获取队头元素**:相当于获取线性表中第一个数据元素。与插入元素(入队)、删除元素(出队)不同的是,该操作并不改变队头指针 $front$ 的指向位置。 +- **获取队尾元素**:相当于获取线性表中最后一个数据元素。与插入元素(入队)、删除元素(出队)不同的是,该操作并不改变队尾指针 $rear$ 的指向位置。 接下来我们来看一下队列的顺序存储与链式存储两种不同的实现方式。 ### 2.2 队列的顺序存储实现 -队列最简单的实现方式就是借助于一个数组来描述队列的顺序存储结构。在 `Python` 中我们可以借助列表 `list` 来实现。 +队列最简单的实现方式就是借助于一个数组来描述队列的顺序存储结构。在 Python 中我们可以借助列表 $list$ 来实现。 #### 2.2.1 队列的顺序存储基本描述 ![](https://qcdn.itcharge.cn/images/20211204211607.png) -为了算法设计上的方便以及算法本身的简单,我们约定:队头指针 `self.front` 指向队头元素所在位置的前一个位置,而队尾指针 `self.rear` 指向队尾元素所在位置。 +为了算法设计上的方便以及算法本身的简单,我们约定:队头指针 $self.front$ 指向队头元素所在位置的前一个位置,而队尾指针 $self.rear$ 指向队尾元素所在位置。 -- **初始化空队列**:创建一个空队列 `self.queue`,定义队列大小 `self.size`。令队头指针 `self.front` 和队尾指针 `self.rear` 都指向 `-1`。即 `self.front = self.rear = -1`。 -- **判断队列是否为空**:根据 `self.front` 和 `self.rear` 的指向位置关系进行判断。如果队头指针 `self.front` 和队尾指针 `self.rear` 相等,则说明队列为空。否则,队列不为空。 -- **判断队列是否已满**:如果 `self.rear` 指向队列最后一个位置,即 `self.rear == self.size - 1`,则说明队列已满。否则,队列未满。 -- **插入元素(入队)**:先判断队列是否已满,已满直接抛出异常。如果队列不满,则将队尾指针 `self.rear` 向右移动一位,并进行赋值操作。此时 `self.rear` 指向队尾元素。 -- **删除元素(出队)**:先判断队列是否为空,为空直接抛出异常。如果队列不为空,则将队头指针 `self.front` 指向元素赋值为 `None`,并将 `self.front` 向右移动一位。 -- **获取队头元素**:先判断队列是否为空,为空直接抛出异常。如果队列不为空,因为 `self.front` 指向队头元素所在位置的前一个位置,所以队头元素在 `self.front` 后面一个位置上,返回 `self.queue[self.front + 1]`。 -- **获取队尾元素**:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 `self.rear` 指向队尾元素所在位置,所以直接返回 `self.queue[self.rear]`。 +- **初始化空队列**:创建一个空队列 $self.queue$,定义队列大小 $self.size$。令队头指针 $self.front$ 和队尾指针 $self.rear$ 都指向 $-1$。即 $self.front = self.rear = -1$。 +- **判断队列是否为空**:根据 $self.front$ 和 $self.rear$ 的指向位置关系进行判断。如果队头指针 $self.front$ 和队尾指针 $self.rear$ 相等,则说明队列为空。否则,队列不为空。 +- **判断队列是否已满**:如果 $self.rear$ 指向队列最后一个位置,即 $self.rear == self.size - 1$,则说明队列已满。否则,队列未满。 +- **插入元素(入队)**:先判断队列是否已满,已满直接抛出异常。如果队列不满,则将队尾指针 $self.rear$ 向右移动一位,并进行赋值操作。此时 $self.rear$ 指向队尾元素。 +- **删除元素(出队)**:先判断队列是否为空,为空直接抛出异常。如果队列不为空,则将队头指针 $self.front$ 指向元素赋值为 $None$,并将 $self.front$ 向右移动一位。 +- **获取队头元素**:先判断队列是否为空,为空直接抛出异常。如果队列不为空,因为 $self.front$ 指向队头元素所在位置的前一个位置,所以队头元素在 $self.front$ 后面一个位置上,返回 $self.queue[self.front + 1]$。 +- **获取队尾元素**:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 $self.rear$ 指向队尾元素所在位置,所以直接返回 $self.queue[self.rear]$。 #### 2.2.2 队列的顺序存储实现代码 @@ -120,15 +120,15 @@ class Queue: ### 2.3 循环队列的顺序存储实现 -在「2.2 队列的顺序存储实现」中,如果队列中第 `0` ~ `size - 1` 位置均被队列元素占用时,此时队列已满(即 `self.rear == self.size - 1`),再进行入队操作就会抛出队列已满的异常。 +在「2.2 队列的顺序存储实现」中,如果队列中第 $0$ ~ $size - 1$ 位置均被队列元素占用时,此时队列已满(即 $self.rear == self.size - 1$),再进行入队操作就会抛出队列已满的异常。 -而由于出队操作总是删除当前的队头元素,将 `self.front` 进行右移,而插入操作又总是在队尾进行。经过不断的出队、入队操作,队列的变化就像是使队列整体向右移动。 +而由于出队操作总是删除当前的队头元素,将 $self.front$ 进行右移,而插入操作又总是在队尾进行。经过不断的出队、入队操作,队列的变化就像是使队列整体向右移动。 -当队尾指针满足 `self.rear == self.size - 1` 条件时,此时再进行入队操作就会抛出队列已满的异常。而之前因为出队操作而产生空余位置也没有利用上,这就造成了「假溢出」问题。 +当队尾指针满足 $self.rear == self.size - 1$ 条件时,此时再进行入队操作就会抛出队列已满的异常。而之前因为出队操作而产生空余位置也没有利用上,这就造成了「假溢出」问题。 为了解决「假溢出」问题,有两种做法: -- 第一种:每一次删除队头元素之后,就将整个队列往前移动 `1` 个位置。其代码如下所示: +- 第一种:每一次删除队头元素之后,就将整个队列往前移动 $1$ 个位置。其代码如下所示: ```python # 出队操作 @@ -142,35 +142,35 @@ def dequeue(self): return value ``` -这种情况下,队头指针似乎用不到了。因为队头指针总是在队列的第 `0` 个位置。但是因为删除操作涉及到整个队列元素的移动,所以每次删除操作的时间复杂度就从 $O(1)$ 变为了 $O(n)$。所以这种方式不太可取。 +这种情况下,队头指针似乎用不到了。因为队头指针总是在队列的第 $0$ 个位置。但是因为删除操作涉及到整个队列元素的移动,所以每次删除操作的时间复杂度就从 $O(1)$ 变为了 $O(n)$。所以这种方式不太可取。 - 第二种:将队列想象成为头尾相连的循环表,利用数学中的求模运算,使得空间得以重复利用,这样就解决了问题。 -在进行插入操作时,如果队列的第 `self.size - 1` 个位置被占用之后,只要队列前面还有可用空间,新的元素加入队列时就可以从第 `0` 个位置开始继续插入。 +在进行插入操作时,如果队列的第 $self.size - 1$ 个位置被占用之后,只要队列前面还有可用空间,新的元素加入队列时就可以从第 $0$ 个位置开始继续插入。 -我们约定:`self.size` 为循环队列的最大元素个数。队头指针 `self.front` 指向队头元素所在位置的前一个位置,而队尾指针 `self.rear` 指向队尾元素所在位置。则: +我们约定:$self.size$ 为循环队列的最大元素个数。队头指针 $self.front$ 指向队头元素所在位置的前一个位置,而队尾指针 $self.rear$ 指向队尾元素所在位置。则: -1. **插入元素(入队)时**:队尾指针循环前进 `1` 个位置,即 `self.rear = (self.rear + 1) % self.size`。 -2. **删除元素(出队)时**:队头指针循环前进 `1` 个位置,即 `self.front = (self.front + 1) % self.size`。 +1. **插入元素(入队)时**:队尾指针循环前进 $1$ 个位置,即 $self.rear = (self.rear + 1) \mod self.size$。 +2. **删除元素(出队)时**:队头指针循环前进 $1$ 个位置,即 $self.front = (self.front + 1) \mod self.size$。 > **注意**: > -> - 循环队列在一开始初始化,队列为空时,满足条件`self.front == self.rear`。 -> - 而当充满队列后,仍满足条件 `self.front == self.rear`。 +> - 循环队列在一开始初始化,队列为空时,满足条件$self.front == self.rear$。 +> - 而当充满队列后,仍满足条件 $self.front == self.rear$。 > > 这种情况下就无法判断「队列为空」还是「队列为满」了。 为了区分循环队列中「队列为空」还是「队列已满」的情况,有多种处理方式: -- **方式 1**:增加表示队列中元素个数的变量 `self.count`,用来以区分队列已满还是队列为空。在入队、出队过程中不断更新元素个数 `self.count` 的值。 - - 队列已满条件为:队列中元素个数等于队列整体容量,即 `self.count == self.size`。 - - 队空为空条件为:队列中元素个数等于 `0`,即 `self.count == 0`。 -- **方式 2**:增加标记变量 `self.tag`,用来以区分队列已满还是队列为空。 - - 队列已满条件为:`self.tag == 1` 的情况下,因插入导致 `self.front == self.rear`。 - - 队列为空条件为:在 `self.tag == 0` 的情况下,因删除导致 `self.front == self.rear`。 +- **方式 1**:增加表示队列中元素个数的变量 $self.count$,用来以区分队列已满还是队列为空。在入队、出队过程中不断更新元素个数 $self.count$ 的值。 + - 队列已满条件为:队列中元素个数等于队列整体容量,即 $self.count == self.size$。 + - 队空为空条件为:队列中元素个数等于 $0$,即 $self.count == 0$。 +- **方式 2**:增加标记变量 $self.tag$,用来以区分队列已满还是队列为空。 + - 队列已满条件为:$self.tag == 1$ 的情况下,因插入导致 $self.front == self.rear$。 + - 队列为空条件为:在 $self.tag == 0$ 的情况下,因删除导致 $self.front == self.rear$。 - **方式 3**:特意空出来一个位置用于区分队列已满还是队列为空。入队时少用一个队列单元,即约定以「队头指针在队尾指针的下一位置」作为队满的标志。 - - 队列已满条件为:队头指针在队尾指针的下一位置,即 `(self.rear + 1) % self.size == self.front`。 - - 队列为空条件为:队头指针等于队尾指针,即 `self.front == self.rear`。 + - 队列已满条件为:队头指针在队尾指针的下一位置,即 $(self.rear + 1) \mod self.size == self.front$。 + - 队列为空条件为:队头指针等于队尾指针,即 $self.front == self.rear$。 #### 2.3.1 循环队列的顺序存储基本描述 @@ -178,15 +178,15 @@ def dequeue(self): ![](https://qcdn.itcharge.cn/images/20220109164459.png) -我们约定:`self.size` 为循环队列的最大元素个数。队头指针 `self.front` 指向队头元素所在位置的前一个位置,而队尾指针 `self.rear` 指向队尾元素所在位置。 +我们约定:$self.size$ 为循环队列的最大元素个数。队头指针 $self.front$ 指向队头元素所在位置的前一个位置,而队尾指针 $self.rear$ 指向队尾元素所在位置。 -- **初始化空队列**:创建一个空队列,定义队列大小为 `self.size + 1`。令队头指针 `self.front` 和队尾指针 `self.rear` 都指向 `0`。即 `self.front = self.rear = 0`。 -- **判断队列是否为空**:根据 `self.front` 和 `self.rear` 的指向位置进行判断。根据约定,如果队头指针 `self.front` 和队尾指针 `self.rear` 相等,则说明队列为空。否则,队列不为空。 -- **判断队列是否已满**:队头指针在队尾指针的下一位置,即 `(self.rear + 1) % self.size == self.front`,则说明队列已满。否则,队列未满。 -- **插入元素(入队)**:先判断队列是否已满,已满直接抛出异常。如果不满,则将队尾指针 `self.rear` 向右循环移动一位,并进行赋值操作。此时 `self.rear` 指向队尾元素。 -- **删除元素(出队)**:先判断队列是否为空,为空直接抛出异常。如果不为空,则将队头指针 `self.front` 指向元素赋值为 `None`,并将 `self.front` 向右循环移动一位。 -- **获取队头元素**:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 `self.front` 指向队头元素所在位置的前一个位置,所以队头元素在 `self.front` 后一个位置上,返回 `self.queue[(self.front + 1) % self.size]`。 -- **获取队尾元素**:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 `self.rear` 指向队尾元素所在位置,所以直接返回 `self.queue[self.rear]`。 +- **初始化空队列**:创建一个空队列,定义队列大小为 $self.size + 1$。令队头指针 $self.front$ 和队尾指针 $self.rear$ 都指向 $0$。即 $self.front = self.rear = 0$。 +- **判断队列是否为空**:根据 $self.front$ 和 $self.rear$ 的指向位置进行判断。根据约定,如果队头指针 $self.front$ 和队尾指针 $self.rear$ 相等,则说明队列为空。否则,队列不为空。 +- **判断队列是否已满**:队头指针在队尾指针的下一位置,即 $(self.rear + 1) \mod self.size == self.front$,则说明队列已满。否则,队列未满。 +- **插入元素(入队)**:先判断队列是否已满,已满直接抛出异常。如果不满,则将队尾指针 $self.rear$ 向右循环移动一位,并进行赋值操作。此时 $self.rear$ 指向队尾元素。 +- **删除元素(出队)**:先判断队列是否为空,为空直接抛出异常。如果不为空,则将队头指针 $self.front$ 指向元素赋值为 $None$,并将 $self.front$ 向右循环移动一位。 +- **获取队头元素**:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 $self.front$ 指向队头元素所在位置的前一个位置,所以队头元素在 $self.front$ 后一个位置上,返回 $self.queue[(self.front + 1) \mod self.size]$。 +- **获取队尾元素**:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 $self.rear$ 指向队尾元素所在位置,所以直接返回 $self.queue[self.rear]$。 #### 2.3.2 循环队列的顺序存储实现代码 @@ -248,21 +248,21 @@ class Queue: 所以我们可以采用链式存储结构来实现队列。 1. 我们用一个线性链表来表示队列,队列中的每一个元素对应链表中的一个链节点。 -2. 再把线性链表的第 `1` 个节点定义为队头指针 `front`,在链表最后的链节点建立指针 `rear` 作为队尾指针。 +2. 再把线性链表的第 $1$ 个节点定义为队头指针 $front$,在链表最后的链节点建立指针 $rear$ 作为队尾指针。 3. 最后限定只能在链表队头进行删除操作,在链表队尾进行插入操作,这样整个线性链表就构成了一个队列。 #### 2.3.1 队列的链式存储基本描述 ![](https://qcdn.itcharge.cn/images/20211204211644.png) -我们约定:队头指针 `self.front` 指向队头元素所在位置的前一个位置,而队尾指针 `self.rear` 指向队尾元素所在位置。 +我们约定:队头指针 $self.front$ 指向队头元素所在位置的前一个位置,而队尾指针 $self.rear$ 指向队尾元素所在位置。 -- **初始化空队列**:建立一个链表头节点 `self.head`,令队头指针 `self.front` 和队尾指针 `self.rear` 都指向 `head`。即 `self.front = self.rear = head`。 -- **判断队列是否为空**:根据 `self.front` 和 `self.rear` 的指向位置进行判断。根据约定,如果队头指针 `self.front` 等于队尾指针 `self.rear`,则说明队列为空。否则,队列不为空。 -- **插入元素(入队)**:创建值为 `value` 的链表节点,插入到链表末尾,并令队尾指针 `self.rear` 沿着链表移动 `1` 位到链表末尾。此时 `self.rear` 指向队尾元素。 -- **删除元素(出队)**:先判断队列是否为空,为空直接抛出异常。如果不为空,则获取队头指针 `self.front` 下一个位置节点上的值,并将 `self.front` 沿着链表移动 `1` 位。如果 `self.front` 下一个位置是 `self.rear`,则说明队列为空,此时,将 `self.rear` 赋值为 `self.front`,令其相等。 -- **获取队头元素**:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 `self.front` 指向队头元素所在位置的前一个位置,所以队头元素在 `self.front` 后一个位置上,返回 `self.front.next.value`。 -- **获取队尾元素**:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 `self.rear` 指向队尾元素所在位置,所以直接返回 `self.rear.value`。 +- **初始化空队列**:建立一个链表头节点 $self.head$,令队头指针 $self.front$ 和队尾指针 $self.rear$ 都指向 $head$。即 $self.front = self.rear = head$。 +- **判断队列是否为空**:根据 $self.front$ 和 $self.rear$ 的指向位置进行判断。根据约定,如果队头指针 $self.front$ 等于队尾指针 $self.rear$,则说明队列为空。否则,队列不为空。 +- **插入元素(入队)**:创建值为 $value$ 的链表节点,插入到链表末尾,并令队尾指针 $self.rear$ 沿着链表移动 $1$ 位到链表末尾。此时 $self.rear$ 指向队尾元素。 +- **删除元素(出队)**:先判断队列是否为空,为空直接抛出异常。如果不为空,则获取队头指针 $self.front$ 下一个位置节点上的值,并将 $self.front$ 沿着链表移动 $1$ 位。如果 $self.front$ 下一个位置是 $self.rear$,则说明队列为空,此时,将 $self.rear$ 赋值为 $self.front$,令其相等。 +- **获取队头元素**:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 $self.front$ 指向队头元素所在位置的前一个位置,所以队头元素在 $self.front$ 后一个位置上,返回 $self.front.next.value$。 +- **获取队尾元素**:先判断队列是否为空,为空直接抛出异常。如果不为空,因为 $self.rear$ 指向队尾元素所在位置,所以直接返回 $self.rear.value$。 #### 2.3.2 队列的链式存储实现代码 From 74627b8bba64d07afb0a7334c13ef9197a8e249b Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:18 +0800 Subject: [PATCH 017/158] Update 01.Priority-Queue.md --- .../02.Priority-Queue/01.Priority-Queue.md | 52 +++++++++---------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md b/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md index 79470557..41b9a8f4 100644 --- a/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md +++ b/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md @@ -60,31 +60,29 @@ 二叉树主要涉及两个基本操作:「堆调整方法」和「将数组构建为二叉堆方法」。 - **堆调整方法 `heapAdjust`**:把移走了最大值元素以后的剩余元素组成的序列再构造为一个新的堆积。具体步骤如下: - - - 从根节点开始,自上而下地调整节点的位置,使其成为堆积。即把序号为 `i` 的节点与其左子树节点(序号为 `2 * i`)、右子树节点(序号为 `2 * i + 1`)中值最大的节点交换位置。 - + - 从根节点开始,自上而下地调整节点的位置,使其成为堆积。即把序号为 $i$ 的节点与其左子树节点(序号为 $2 \times i$)、右子树节点(序号为 $2 \times i + 1$)中值最大的节点交换位置。 + - 因为交换了位置,使得当前节点的左右子树原有的堆积特性被破坏。于是,从当前节点的左右子树节点开始,自上而下继续进行类似的调整。 - + - 如此下去直到整棵完全二叉树成为一个大顶堆。 - + - **将数组构建为二叉堆方法(初始堆建立方法) `heapify`**: - - - 如果原始序列对应的完全二叉树(不一定是堆)的深度为 `d`,则从 `d - 1` 层最右侧分支节点(序号为 ⌊n/2⌋)开始,初始时令 `i = ⌊n/2⌋`,调用堆调整算法。 - - - 每调用一次堆调整算法,执行一次 `i = i - 1`,直到 `i == 1` 时,再调用一次,就把原始数组构建为了一个二叉堆。 +- 如果原始序列对应的完全二叉树(不一定是堆)的深度为 $d$,则从 $d - 1$ 层最右侧分支节点(序号为 $\lfloor \frac{n}{2} \rfloor$)开始,初始时令 $i = \lfloor \frac{n}{2} \rfloor$,调用堆调整算法。 + +- 每调用一次堆调整算法,执行一次 $i = i - 1$,直到 $i == 1$ 时,再调用一次,就把原始数组构建为了一个二叉堆。 ### 4.3 优先队列的基本操作 在「3. 优先队列的实现方式」中我们已经提到过,优先队列所涉及的基本操作主要是 **「入队操作」** 和 **「出队操作」**。 - **入队操作 `heappush`**: - - 先将待插入元素 `value` 插入到数组 `nums` 末尾。 - - 如果完全二叉树的深度为 `d`,则从 `d - 1` 层开始最右侧分支节点(序号为 ⌊n/2⌋)开始,初始时令 `i = ⌊n/2⌋`,从下向上依次查找插入位置。 - - 遇到 `value` 小于当前根节点时,将其插入到当前位置。否则继续向上寻找插入位置。 - - 如果找到插入位置或者到达根位置,将 `value` 插入该位置。 + - 先将待插入元素 $value$ 插入到数组 $nums$ 末尾。 + - 如果完全二叉树的深度为 $d$,则从 $d - 1$ 层开始最右侧分支节点(序号为 $\lfloor \frac{n}{2} \rfloor$)开始,初始时令 $i = \lfloor \frac{n}{2} \rfloor$,从下向上依次查找插入位置。 + - 遇到 $value$ 小于当前根节点时,将其插入到当前位置。否则继续向上寻找插入位置。 + - 如果找到插入位置或者到达根位置,将 $value$ 插入该位置。 - **出队操作 `heappop`**: - - 交换数组 `nums` 首尾元素,此时 `nums` 尾部就是值最大(优先级最高)的元素,将其从 `nums` 中弹出,并保存起来。 - - 弹出后,对 `nums` 剩余元素调用堆调整算法,将其调整为大顶堆。 + - 交换数组 $nums$ 首尾元素,此时 $nums$ 尾部就是值最大(优先级最高)的元素,将其从 $nums$ 中弹出,并保存起来。 + - 弹出后,对 $nums$ 剩余元素调用堆调整算法,将其调整为大顶堆。 ### 4.4 手写二叉堆实现优先队列 @@ -166,7 +164,7 @@ class Heapq: ### 4.5 使用 heapq 模块实现优先队列 -Python 中的 `heapq` 模块提供了优先队列算法。函数 `heapq.heappush()` 用于在队列 `queue` 上插入一个元素。`heapq.heappop()` 用于在队列 `queue` 上删除一个元素。 +Python 中的 `heapq` 模块提供了优先队列算法。函数 `heapq.heappush()` 用于在队列 $queue$ 上插入一个元素。`heapq.heappop()` 用于在队列 $queue$ 上删除一个元素。 需要注意的是:`heapq.heappop()` 函数总是返回「最小的」的元素。所以我们在使用 `heapq.heappush()` 时,将优先级设置为负数,这样就使得元素可以按照优先级从高到低排序, 这个跟普通的按优先级从低到高排序的堆排序恰巧相反。这样做的目的是为了 `heapq.heappop()` 每次弹出的元素都是优先级最高的元素。 @@ -196,7 +194,7 @@ class PriorityQueue: #### 5.1.2 题目大意 -**描述**:给定一个整数数组 `nums`,再给定一个整数 `k`,表示为大小为 `k` 的滑动窗口从数组的最左侧移动到数组的最右侧。我们只能看到滑动窗口内的 `k` 个数字,滑动窗口每次只能向右移动一位。 +**描述**:给定一个整数数组 $nums$,再给定一个整数 $k$,表示为大小为 $k$ 的滑动窗口从数组的最左侧移动到数组的最右侧。我们只能看到滑动窗口内的 $k$ 个数字,滑动窗口每次只能向右移动一位。 **要求**:返回滑动窗口中的最大值。 @@ -228,15 +226,15 @@ class PriorityQueue: #### 5.1.3 解题思路 -暴力求解的话,需要使用二重循环遍历,其时间复杂度为 $O(n * k)$。根据题目给定的数据范围,肯定会超时。 +暴力求解的话,需要使用二重循环遍历,其时间复杂度为 $O(n \times k)$。根据题目给定的数据范围,肯定会超时。 我们可以使用优先队列来做。 ##### 思路 1:优先队列 -1. 初始的时候将前 `k` 个元素加入优先队列的二叉堆中。存入优先队列的是数组值与索引构成的元组。优先队列将数组值作为优先级。 -2. 然后滑动窗口从第 `k` 个元素开始遍历,将当前数组值和索引的元组插入到二叉堆中。 -3. 当二叉堆堆顶元素的索引已经不在滑动窗口的范围中时,即 `q[0][1] <= i - k` 时,不断删除堆顶元素,直到最大值元素的索引在滑动窗口的范围中。 +1. 初始的时候将前 $k$ 个元素加入优先队列的二叉堆中。存入优先队列的是数组值与索引构成的元组。优先队列将数组值作为优先级。 +2. 然后滑动窗口从第 $k$ 个元素开始遍历,将当前数组值和索引的元组插入到二叉堆中。 +3. 当二叉堆堆顶元素的索引已经不在滑动窗口的范围中时,即 $q[0][1] \le i - k$ 时,不断删除堆顶元素,直到最大值元素的索引在滑动窗口的范围中。 4. 将最大值加入到答案数组中,继续向右滑动。 5. 滑动结束时,输出答案数组。 @@ -260,7 +258,7 @@ class Solution: ##### 思路 1:复杂度分析 -- **时间复杂度**:$O(n \times \log_2n)$。 +- **时间复杂度**:$O(n \times \log n)$。 - **空间复杂度**:$O(k)$。 ### 5.2 前 K 个高频元素 @@ -271,9 +269,9 @@ class Solution: #### 5.2.2 题目大意 -**描述**:给定一个整数数组 `nums` 和一个整数 `k`。 +**描述**:给定一个整数数组 $nums$ 和一个整数 $k$。 -**要求**:返回出现频率前 `k` 高的元素。可以按任意顺序返回答案。 +**要求**:返回出现频率前 $k$ 高的元素。可以按任意顺序返回答案。 **说明**: @@ -299,9 +297,9 @@ class Solution: 1. 使用哈希表记录下数组中各个元素的频数。 2. 然后将哈希表中的元素去重,转换为新数组。时间复杂度 $O(n)$,空间复杂度 $O(n)$。 3. 使用二叉堆构建优先队列,优先级为元素频数。此时堆顶元素即为频数最高的元素。时间复杂度 $O(n)$,空间复杂度 $O(n)$。 -4. 将堆顶元素加入到答案数组中,进行出队操作。时间复杂度 $O(\log_2 n)$。 +4. 将堆顶元素加入到答案数组中,进行出队操作。时间复杂度 $O(\log n)$。 - 出队操作:交换堆顶元素与末尾元素,将末尾元素已移出堆。继续调整大顶堆。 -5. 不断重复第 4 步,直到 `k` 次结束。调整 `k` 次的时间复杂度 $O(n\log_2 n)$。 +5. 不断重复第 4 步,直到 $k$ 次结束。调整 $k$ 次的时间复杂度 $O(n \times \log n)$。 ##### 思路 1:代码 @@ -390,7 +388,7 @@ class Solution: ##### 思路 1:复杂度分析 -- **时间复杂度**:$O(n \times \log_2n)$。 +- **时间复杂度**:$O(n \times \log n)$。 - **空间复杂度**:$O(n)$。 ## 参考资料 From 388a4f8274fbd49de828e1dd30a72d84f42b9f55 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:21 +0800 Subject: [PATCH 018/158] Update 01.Hash-Table.md --- Contents/05.Hash-Table/01.Hash-Table.md | 72 ++++++++++++------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/Contents/05.Hash-Table/01.Hash-Table.md b/Contents/05.Hash-Table/01.Hash-Table.md index 90103e98..43ada76c 100644 --- a/Contents/05.Hash-Table/01.Hash-Table.md +++ b/Contents/05.Hash-Table/01.Hash-Table.md @@ -2,9 +2,9 @@ > **哈希表(Hash Table)**:也叫做散列表。是根据关键码值(Key Value)直接进行访问的数据结构。 > -> 哈希表通过「键 `key` 」和「映射函数 `Hash(key)` 」计算出对应的「值 `value`」,把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做「哈希函数(散列函数)」,存放记录的数组叫做「哈希表(散列表)」。 +> 哈希表通过「键 $key$」和「映射函数 $Hash(key)$」计算出对应的「值 $value$」,把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做「哈希函数(散列函数)」,存放记录的数组叫做「哈希表(散列表)」。 -哈希表的关键思想是使用哈希函数,将键 `key` 映射到对应表的某个区块中。我们可以将算法思想分为两个部分: +哈希表的关键思想是使用哈希函数,将键 $key$ 映射到对应表的某个区块中。我们可以将算法思想分为两个部分: - **向哈希表中插入一个关键码值**:哈希函数决定该关键字的对应值应该存放到表中的哪个区块,并将对应值存放到该区块中。 - **在哈希表中搜索一个关键码值**:使用相同的哈希函数从哈希表中查找对应的区块,并在特定的区块搜索该关键字对应的值。 @@ -13,26 +13,26 @@ ![](https://qcdn.itcharge.cn/images/20220114120000.png) -在上图例子中,我们使用 `value = Hash(key) = key // 1000` 作为哈希函数。`//` 符号代表整除。我们以这个例子来说明一下哈希表的插入和查找策略。 +在上图例子中,我们使用 $value = Hash(key) = key // 1000$ 作为哈希函数。$//$ 符号代表整除。我们以这个例子来说明一下哈希表的插入和查找策略。 - **向哈希表中插入一个关键码值**:通过哈希函数解析关键字,并将对应值存放到该区块中。 - - 比如:`0138` 通过哈希函数 `Hash(key) = 0138 // 100 = 0`,得出应将 `0138` 分配到`0` 所在的区块中。 + - 比如:$0138$ 通过哈希函数 $Hash(key) = 0138 // 100 = 0$,得出应将 $0138$ 分配到 $0$ 所在的区块中。 - **在哈希表中搜索一个关键码值**:通过哈希函数解析关键字,并在特定的区块搜索该关键字对应的值。 - - 比如:查找 `2321`,通过哈希函数,得出 `2321` 应该在 `2` 所对应的区块中。然后我们从 `2` 对应的区块中继续搜索,并在 `2` 对应的区块中成功找到了 `2321`。 - - 比如:查找 `3214`,通过哈希函数,得出 `3214` 应该在 `3` 所对应的区块中。然后我们从 `3` 对应的区块中继续搜索,但并没有找到对应值,则说明 `3214` 不在哈希表中。 + - 比如:查找 $2321$,通过哈希函数,得出 $2321$ 应该在 $2$ 所对应的区块中。然后我们从 $2$ 对应的区块中继续搜索,并在 $2$ 对应的区块中成功找到了 $2321$。 + - 比如:查找 $3214$,通过哈希函数,得出 $3214$ 应该在 $3$ 所对应的区块中。然后我们从 $3$ 对应的区块中继续搜索,但并没有找到对应值,则说明 $3214$ 不在哈希表中。 哈希表在生活中的应用也很广泛,其中一个常见例子就是「查字典」。 -比如为了查找 `赞` 这个字的具体意思,我们在字典中根据这个字的拼音索引 `zan`,查找到对应的页码为 `599`。然后我们就可以翻到字典的第 `599` 页查看 `赞` 字相关的解释了。 +比如为了查找 **「赞」** 这个字的具体意思,我们在字典中根据这个字的拼音索引 `zan`,查找到对应的页码为 $599$。然后我们就可以翻到字典的第 $599$ 页查看 **「赞」** 字相关的解释了。 ![](https://qcdn.itcharge.cn/images/20220111174223.png) 在这个例子中: - 存放所有拼音和对应地址的表可以看做是 **「哈希表」**。 -- `赞` 字的拼音索引 `zan` 可以看做是哈希表中的 **「关键字 `key`」**。 -- 根据拼音索引 `zan` 来确定字对应页码的过程可以看做是哈希表中的 **「哈希函数 `Hash(key)`」**。 -- 查找到的对应页码 `599` 可以看做是哈希表中的 **「哈希地址 `value`」**。 +- **「赞」** 字的拼音索引 `zan` 可以看做是哈希表中的 **「关键字 $key$」**。 +- 根据拼音索引 $zan$ 来确定字对应页码的过程可以看做是哈希表中的 **「哈希函数 $Hash(key)$」**。 +- 查找到的对应页码 $599$ 可以看做是哈希表中的 **「哈希地址 $value$」**。 ## 2. 哈希函数 @@ -42,8 +42,8 @@ - 哈希函数应该易于计算,并且尽量使计算出来的索引值均匀分布。 - 哈希函数计算得到的哈希值是一个固定长度的输出值。 -- 如果 `Hash(key1)` 不等于 `Hash(key2)`,那么 `key1`、`key2` 一定不相等。 -- 如果 `Hash(key1)` 等于 `Hash(key2)`,那么 `key1`、`key2` 可能相等,也可能不相等(会发生哈希碰撞)。 +- 如果 $Hash(key1) \ne Hash(key2)$,那么 $key1$、$key2$ 一定不相等。 +- 如果 $Hash(key1) == Hash(key2)$,那么 $key1$、$key2$ 可能相等,也可能不相等(会发生哈希碰撞)。 在哈希表的实际应用中,关键字的类型除了数字类,还有可能是字符串类型、浮点数类型、大整数类型,甚至还有可能是几种类型的组合。一般我们会将各种类型的关键字先转换为整数类型,再通过哈希函数,将其映射到哈希表中。 @@ -51,25 +51,25 @@ ### 2.1 直接定址法 -- **直接定址法**:取关键字本身 / 关键字的某个线性函数值 作为哈希地址。即:`Hash(key) = key` 或者 `Hash(key) = a * key + b`,其中 `a` 和 `b` 为常数。 +- **直接定址法**:取关键字本身 / 关键字的某个线性函数值作为哈希地址。即:$Hash(key) = key$ 或者 $Hash(key) = a \times key + b$,其中 $a$ 和 $b$ 为常数。 这种方法计算最简单,且不会产生冲突。适合于关键字分布基本连续的情况,如果关键字分布不连续,空位较多,则会造成存储空间的浪费。 -举一个例子,假设我们有一个记录了从 `1` 岁到 `100` 岁的人口数字统计表。其中年龄为关键字,哈希函数取关键字自身,如下表所示。 +举一个例子,假设我们有一个记录了从 $1$ 岁到 $100$ 岁的人口数字统计表。其中年龄为关键字,哈希函数取关键字自身,如下表所示。 | 年龄 | 1 | 2 | 3 | ... | 25 | 26 | 27 | ... | 100 | | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--: | | 人数 | 3000 | 2000 | 5000 | ... | 1050 | ... | ... | ... | ... | -比如我们想要查询 `25` 岁的人有多少,则只要查询表中第 `25` 项即可。 +比如我们想要查询 $25$ 岁的人有多少,则只要查询表中第 $25$ 项即可。 ### 2.2 除留余数法 -- **除留余数法**:假设哈希表的表长为 `m`,取一个不大于 `m` 但接近或等于 `m` 的质数 `p`,利用取模运算,将关键字转换为哈希地址。即:`Hash(key) = key % p`,其中 `p` 为不大于 `m` 的质数。 +- **除留余数法**:假设哈希表的表长为 $m$,取一个不大于 $m$ 但接近或等于 $m$ 的质数 $p$,利用取模运算,将关键字转换为哈希地址。即:$Hash(key) = key \mod p$,其中 $p$ 为不大于 $m$ 的质数。 -这也是一种简单且常用的哈希函数方法。其关键点在于 `p` 的选择。根据经验而言,一般 `p` 取素数或者 `m`,这样可以尽可能的减少冲突。 +这也是一种简单且常用的哈希函数方法。其关键点在于 $p$ 的选择。根据经验而言,一般 $p$ 取素数或者 $m$,这样可以尽可能的减少冲突。 -比如我们需要将 `7` 个数 `[432, 5, 128, 193, 92, 111, 88]` 存储在 `11` 个区块中(长度为 `11` 的数组),通过除留余数法将这 `7` 个数应分别位于如下地址: +比如我们需要将 $7$ 个数 $[432, 5, 128, 193, 92, 111, 88]$ 存储在 $11$ 个区块中(长度为 $11$ 的数组),通过除留余数法将这 $7$ 个数应分别位于如下地址: | 索引 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | | :--: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | @@ -78,24 +78,24 @@ ### 2.3 平方取中法 - **平方取中法**:先通过求关键字平方值的方式扩大相近数之间的差别,然后根据表长度取关键字平方值的中间几位数为哈希地址。 - - 比如:`Hash(key) = (key * key) // 100 % 1000`,先计算平方,去除末尾的 2 位数,再取中间 3 位数作为哈希地址。 + - 比如:$Hash(key) = (key \times key) // 100 \mod 1000$,先计算平方,去除末尾的 $2$ 位数,再取中间 $3$ 位数作为哈希地址。 这种方法因为关键字平方值的中间几位数和原关键字的每一位数都相关,所以产生的哈希地址也比较均匀,有利于减少冲突的发生。 ### 2.4 基数转换法 - **基数转换法**:将关键字看成另一种进制的数再转换成原来进制的数,然后选其中几位作为哈希地址。 - - 比如,将关键字看做是 `13` 进制的数,再将其转变为 `10` 进制的数,将其作为哈希地址。 + - 比如,将关键字看做是 $13$ 进制的数,再将其转变为 $10$ 进制的数,将其作为哈希地址。 -以 `343246` 为例,哈希地址计算方式如下: +以 $343246$ 为例,哈希地址计算方式如下: $343246_{13} = 3 \times 13^5 + 4 \times 13^4 + 3 \times 13^3 + 2 \times 13^2 + 4 \times 13^1 + 6 \times 13^0 = 1235110_{10}$ ## 3. 哈希冲突 -> **哈希冲突(Hash Collision)**:不同的关键字通过同一个哈希函数可能得到同一哈希地址,即 `key1 ≠ key2`,而 `Hash(key1) = Hash(key2)`,这种现象称为哈希冲突。 +> **哈希冲突(Hash Collision)**:不同的关键字通过同一个哈希函数可能得到同一哈希地址,即 $key1 \ne key2$,而 $Hash(key1) == Hash(key2)$,这种现象称为哈希冲突。 -理想状态下,我们的哈希函数是完美的一对一映射,即一个关键字(key)对应一个值(value),不需要处理冲突。但是一般情况下,不同的关键字 `key` 可能对应了同一个值 `value`,这就发生了哈希冲突。 +理想状态下,我们的哈希函数是完美的一对一映射,即一个关键字($key$)对应一个值($value$),不需要处理冲突。但是一般情况下,不同的关键字 $key$ 可能对应了同一个值 $value$,这就发生了哈希冲突。 设计再好的哈希函数也无法完全避免哈希冲突。所以就需要通过一定的方法来解决哈希冲突问题。常用的哈希冲突解决方法主要是两类:**「开放地址法(Open Addressing)」** 和 **「链地址法(Chaining)」**。 @@ -103,20 +103,20 @@ $343246_{13} = 3 \times 13^5 + 4 \times 13^4 + 3 \times 13^3 + 2 \times 13^2 + 4 > **开放地址法(Open Addressing)**:指的是将哈希表中的「空地址」向处理冲突开放。当哈希表未满时,处理冲突时需要尝试另外的单元,直到找到空的单元为止。 -当发生冲突时,开放地址法按照下面的方法求得后继哈希地址:`H(i) = (Hash(key) + F(i)) % m`,`i = 1, 2, 3, ..., n (n ≤ m - 1)`。 -- `H(i)` 是在处理冲突中得到的地址序列。即在第 1 次冲突(`i = 1`)时经过处理得到一个新地址 `H(1)`,如果在 `H(1)` 处仍然发生冲突(`i = 2`)时经过处理时得到另一个新地址 `H(2)` …… 如此下去,直到求得的 `H(n)` 不再发生冲突。 -- `Hash(key)` 是哈希函数,`m` 是哈希表表长,对哈希表长取余的目的是为了使得到的下一个地址一定落在哈希表中。 -- `F(i)` 是冲突解决方法,取法可以有以下几种: +当发生冲突时,开放地址法按照下面的方法求得后继哈希地址:$H(i) = (Hash(key) + F(i)) \mod m$,$i = 1, 2, 3, ..., n (n ≤ m - 1)$。 +- $H(i)$ 是在处理冲突中得到的地址序列。即在第 1 次冲突($i = 1$)时经过处理得到一个新地址 $H(1)$,如果在 $H(1)$ 处仍然发生冲突($i = 2$)时经过处理时得到另一个新地址 $H(2)$ …… 如此下去,直到求得的 $H(n)$ 不再发生冲突。 +- $Hash(key)$ 是哈希函数,$m$ 是哈希表表长,对哈希表长取余的目的是为了使得到的下一个地址一定落在哈希表中。 +- $F(i)$ 是冲突解决方法,取法可以有以下几种: - 线性探测法:$F(i) = 1, 2, 3, ..., m - 1$。 - 二次探测法:$F(i) = 1^2, -1^2, 2^2, -2^2, ..., \pm n^2(n \le m / 2)$。 - 伪随机数序列:$F(i) = \text{伪随机数序列}$。 -举个例子说说明一下如何用以上三种冲突解决方法处理冲突,并得到新地址 `H(i)`。例如,在长度为 `11` 的哈希表中已经填有关键字分别为 `28`、`49`、`18` 的记录(哈希函数为 `Hash(key) = key % 11`)。现在将插入关键字为 `38` 的新纪录。根据哈希函数得到的哈希地址为 `5`,产生冲突。接下来分别使用这三种冲突解决方法处理冲突。 +举个例子说说明一下如何用以上三种冲突解决方法处理冲突,并得到新地址 $H(i)$。例如,在长度为 $11$ 的哈希表中已经填有关键字分别为 $28$、$49$、$18$ 的记录(哈希函数为 $Hash(key) = key \mod 11$)。现在将插入关键字为 $38$ 的新纪录。根据哈希函数得到的哈希地址为 $5$,产生冲突。接下来分别使用这三种冲突解决方法处理冲突。 -- 使用线性探测法:得到下一个地址 `H(1) = (5 + 1) % 11 = 6`,仍然冲突;继续求出 `H(2) = (5 + 2) % 11 = 7`,仍然冲突;继续求出 `H(3) = (5 + 3) % 11 = 8`,`8` 对应的地址为空,处理冲突过程结束,记录填入哈希表中序号为 `8` 的位置。 -- 使用二次探测法:得到下一个地址 `H(1) = (5 + 1*1) % 11 = 6`,仍然冲突;继续求出 `H(2) = (5 - 1*1) % 11 = 4`,`4` 对应的地址为空,处理冲突过程结束,记录填入哈希表中序号为 `4` 的位置。 -- 使用伪随机数序列:假设伪随机数为 `9`,则得到下一个地址 `H(1) = (9 + 5) % 11 = 3`,`3` 对应的地址为空,处理冲突过程结束,记录填入哈希表中序号为 `3` 的位置。 +- 使用线性探测法:得到下一个地址 $H(1) = (5 + 1) \mod 11 = 6$,仍然冲突;继续求出 $H(2) = (5 + 2) \mod 11 = 7$,仍然冲突;继续求出 $H(3) = (5 + 3) \mod 11 = 8$,$8$ 对应的地址为空,处理冲突过程结束,记录填入哈希表中序号为 $8$ 的位置。 +- 使用二次探测法:得到下一个地址 $H(1) = (5 + 1 \times 1) \mod 11 = 6$,仍然冲突;继续求出 $H(2) = (5 - 1 \times 1) \mod 11 = 4$,$4$ 对应的地址为空,处理冲突过程结束,记录填入哈希表中序号为 $4$ 的位置。 +- 使用伪随机数序列:假设伪随机数为 $9$,则得到下一个地址 $H(1) = (9 + 5) \mod 11 = 3$,$3$ 对应的地址为空,处理冲突过程结束,记录填入哈希表中序号为 $3$ 的位置。 使用这三种方法处理冲突的结果如下图所示: @@ -128,13 +128,13 @@ $343246_{13} = 3 \times 13^5 + 4 \times 13^4 + 3 \times 13^3 + 2 \times 13^2 + 4 链地址法是一种更加常用的哈希冲突解决方法。相比于开放地址法,链地址法更加简单。 -我们假设哈希函数产生的哈希地址区间为 `[0, m - 1]`,哈希表的表长为 `m`。则可以将哈希表定义为一个有 `m` 个头节点组成的链表指针数组 `T`。 +我们假设哈希函数产生的哈希地址区间为 $[0, m - 1]$,哈希表的表长为 $m$。则可以将哈希表定义为一个有 $m$ 个头节点组成的链表指针数组 $T$。 -- 这样在插入关键字的时候,我们只需要通过哈希函数 `Hash(key)` 计算出对应的哈希地址 `i`,然后将其以链表节点的形式插入到以 `T[i]` 为头节点的单链表中。在链表中插入位置可以在表头或表尾,也可以在中间。如果每次插入位置为表头,则插入操作的时间复杂度为 $O(1)$。 +- 这样在插入关键字的时候,我们只需要通过哈希函数 $Hash(key)$ 计算出对应的哈希地址 $i$,然后将其以链表节点的形式插入到以 $T[i]$ 为头节点的单链表中。在链表中插入位置可以在表头或表尾,也可以在中间。如果每次插入位置为表头,则插入操作的时间复杂度为 $O(1)$。 -- 而在在查询关键字的时候,我们只需要通过哈希函数 `Hash(key)` 计算出对应的哈希地址 `i`,然后将对应位置上的链表整个扫描一遍,比较链表中每个链节点的键值与查询的键值是否一致。查询操作的时间复杂度跟链表的长度 `k` 成正比,也就是 $O(k)$。对于哈希地址比较均匀的哈希函数来说,理论上讲,`k = n // m`,其中 `n` 为关键字的个数,`m` 为哈希表的表长。 +- 而在在查询关键字的时候,我们只需要通过哈希函数 $Hash(key)$ 计算出对应的哈希地址 $i$,然后将对应位置上的链表整个扫描一遍,比较链表中每个链节点的键值与查询的键值是否一致。查询操作的时间复杂度跟链表的长度 $k$ 成正比,也就是 $O(k)$。对于哈希地址比较均匀的哈希函数来说,理论上讲,$k = n // m$,其中 $n$ 为关键字的个数,$m$ 为哈希表的表长。 -举个例子来说明如何使用链地址法处理冲突。假设现在要存入的关键字集合 `keys = [88, 60, 65, 69, 90, 39, 07, 06, 14, 44, 52, 70, 21, 45, 19, 32]`。再假定哈希函数为 `Hash(key) = key % 13`,哈希表的表长 `m = 13`,哈希地址范围为 `[0, m - 1]`。将这些关键字使用链地址法处理冲突,并按顺序加入哈希表中(图示为插入链表表尾位置),最终得到的哈希表如下图所示。 +举个例子来说明如何使用链地址法处理冲突。假设现在要存入的关键字集合 $keys = [88, 60, 65, 69, 90, 39, 07, 06, 14, 44, 52, 70, 21, 45, 19, 32]$。再假定哈希函数为 $Hash(key) = key \mod 13$,哈希表的表长 $m = 13$,哈希地址范围为 $[0, m - 1]$。将这些关键字使用链地址法处理冲突,并按顺序加入哈希表中(图示为插入链表表尾位置),最终得到的哈希表如下图所示。 ![](https://qcdn.itcharge.cn/images/20220115182535.png) @@ -144,7 +144,7 @@ $343246_{13} = 3 \times 13^5 + 4 \times 13^4 + 3 \times 13^3 + 2 \times 13^2 + 4 本文讲解了一些比较基础、偏理论的哈希表知识。包含哈希表的定义,哈希函数、哈希冲突以及哈希冲突的解决方法。 -- **哈希表(Hash Table)**:通过键 `key` 和一个映射函数 `Hash(key)` 计算出对应的值 `value`,把关键码值映射到表中一个位置来访问记录,以加快查找的速度。 +- **哈希表(Hash Table)**:通过键 $key$ 和一个映射函数 $Hash(key)$ 计算出对应的值 $value$,把关键码值映射到表中一个位置来访问记录,以加快查找的速度。 - **哈希函数(Hash Function)**:将哈希表中元素的关键键值映射为元素存储位置的函数。 - **哈希冲突(Hash Collision)**:不同的关键字通过同一个哈希函数可能得到同一哈希地址。 From 2969ced4e6af93fcd6bc694700900490a519e240 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:23 +0800 Subject: [PATCH 019/158] Update 01.String-Basic.md --- .../01.String-Basic/01.String-Basic.md | 69 +++++++++---------- 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/Contents/06.String/01.String-Basic/01.String-Basic.md b/Contents/06.String/01.String-Basic/01.String-Basic.md index e6b41e75..9d0020f7 100644 --- a/Contents/06.String/01.String-Basic/01.String-Basic.md +++ b/Contents/06.String/01.String-Basic/01.String-Basic.md @@ -4,12 +4,12 @@ 下面介绍一下字符串相关的一些重要概念。 -- **字符串名称**:字符串定义中的 `s` 就是字符串的名称。 +- **字符串名称**:字符串定义中的 $s$ 就是字符串的名称。 - **字符串的值**:$a_1a_2…a_n$ 组成的字符序列就是字符串的值,一般用双引号括起来。 - **字符变量**:字符串每一个位置上的元素都是一个字符变量。字符 $a_i$ 可以是字母、数字或者其他字符。$i$ 是该字符在字符串中的位置。 - **字符串的长度**:字符串中字符的数目 $n$ 称为字符串的长度。 - **空串**:零个字符构成的串也成为 **「空字符串(Null String)」**,它的长度为 $0$,可以表示为 `""`。 -- **子串**:字符串中任意个连续的字符组成的子序列称为该字符串的 **「子串(Substring)」**。并且有两种特殊子串,起始于位置为 `0`、长度为 `k` 的子串称为 **「前缀(Prefix)」**。而终止于位置 `n - 1`、长度为 `k` 的子串称为 **「后缀(Suffix)」**。 +- **子串**:字符串中任意个连续的字符组成的子序列称为该字符串的 **「子串(Substring)」**。并且有两种特殊子串,起始于位置为 $0$、长度为 $k$ 的子串称为 **「前缀(Prefix)」**。而终止于位置 $n - 1$、长度为 $k$ 的子串称为 **「后缀(Suffix)」**。 - **主串**:包含子串的字符串相应的称为 **「主串」**。 举个例子来说明一下: @@ -18,11 +18,11 @@ str = "Hello World" ``` -在示例代码中,`str` 是一个字符串的变量名称,`Hello World` 则是该字符串的值,字符串的长度为 `11`。该字符串的表示如下图所示: +在示例代码中,$str$ 是一个字符串的变量名称,`Hello World` 则是该字符串的值,字符串的长度为 $11$。该字符串的表示如下图所示: ![](https://qcdn.itcharge.cn/images/20220117141211.png) -可以看出来,字符串和数组有很多相似之处。比如同样使用 `名称[下标]` 的方式来访问一个字符。 +可以看出来,字符串和数组有很多相似之处。比如同样使用 **名称[下标]** 的方式来访问一个字符。 之所以单独讨论字符串是因为: @@ -42,37 +42,37 @@ str = "Hello World" ### 2.1 字符串的比较操作 -两个数字之间很容易比较大小,例如 `1 < 2`。而字符串之间的比较相对来说复杂一点。字符串之间的大小取决于它们按顺序排列字符的前后顺序。 +两个数字之间很容易比较大小,例如 $1 < 2$。而字符串之间的比较相对来说复杂一点。字符串之间的大小取决于它们按顺序排列字符的前后顺序。 -比如字符串 `str1 = "abc"` 和 `str2 = "acc"`,它们的第一个字母都是 `a`,而第二个字母,由于字母 `b` 比字母 `c` 要靠前,所以 `b < c`,于是我们可以说 `"abc" < "acd" `,也可以说 `str1 < str2`。 +比如字符串 `str1 = "abc"` 和 `str2 = "acc"`,它们的第一个字母都是 $a$,而第二个字母,由于字母 $b$ 比字母 $c$ 要靠前,所以 $b < c$,于是我们可以说 `"abc" < "acd" `,也可以说 $str1 < str2$。 字符串之间的比较是通过组成字符串的字符之间的「字符编码」来决定的。而字符编码指的是字符在对应字符集中的序号。 我们先来考虑一下如何判断两个字符串是否相等。 -如果说两个字符串 `str1` 和 `str2` 相等,则必须满足两个条件: +如果说两个字符串 $str1$ 和 $str2$ 相等,则必须满足两个条件: -1. 字符串 `str1` 和字符串 `str2` 的长度相等。 -2. 字符串 `str1` 和字符串 `str2` 对应位置上的各个字符都相同。 +1. 字符串 $str1$ 和字符串 $str2$ 的长度相等。 +2. 字符串 $str1$ 和字符串 $str2$ 对应位置上的各个字符都相同。 下面我们再来考虑一下如何判断两个字符串的大小。 而对于两个不相等的字符串,我们可以以下面的规则定义两个字符串的大小: -- 从两个字符串的第 `0` 个位置开始,依次比较对应位置上的字符编码大小。 - - 如果 `str1[i]` 对应的字符编码等于 `str2[i]` 对应的字符编码,则比较下一位字符。 - - 如果 `str1[i]` 对应的字符编码小于 `str2[i]` 对应的字符编码,则说明 `str1 < str2`。比如:`"abc" < "acc"`。 - - 如果 `str1[i]` 对应的字符编码大于 `str2[i]` 对应的字符编码,则说明 `str1 > str2`。比如:`"bcd" > "bad"`。 +- 从两个字符串的第 $0$ 个位置开始,依次比较对应位置上的字符编码大小。 + - 如果 $str1[i]$ 对应的字符编码等于 $str2[i]$ 对应的字符编码,则比较下一位字符。 + - 如果 $str1[i]$ 对应的字符编码小于 $str2[i]$ 对应的字符编码,则说明 $str1 < str2$。比如:`"abc" < "acc"`。 + - 如果 $str1[i]$ 对应的字符编码大于 $str2[i]$ 对应的字符编码,则说明 $str1 > str2$。比如:`"bcd" > "bad"`。 - 如果比较到某一个字符串末尾,另一个字符串仍有剩余: - - 如果字符串 `str1` 的长度小于字符串 `str2`,即 `len(str1) < len(str2)`。则 `str1 < str2`。比如:`"abc" < "abcde"`。 - - 如果字符串 `str1` 的长度大于字符串 `str2`,即 `len(str1) > len(str2)`。则 `str1 > str2`。比如:`"abcde" > "abc"`。 -- 如果两个字符串每一个位置上的字符对应的字符编码都相等,且长度相同,则说明 `str1 == str2`,比如:`"abcd" == "abcd"`。 + - 如果字符串 $str1$ 的长度小于字符串 $str2$,即 $len(str1) < len(str2)$。则 $str1 < str2$。比如:`"abc" < "abcde"`。 + - 如果字符串 $str1$ 的长度大于字符串 $str2$,即 $len(str1) > len(str2)$。则 $str1 > str2$。比如:`"abcde" > "abc"`。 +- 如果两个字符串每一个位置上的字符对应的字符编码都相等,且长度相同,则说明 $str1 == str2$,比如:`"abcd" == "abcd"`。 按照上面的规则,我们可以定义一个 `strcmp` 方法,并且规定: -- 当 `str1 < str2` 时,`strcmp` 方法返回 `-1`。 -- 当 `str1 == str2` 时,`strcmp` 方法返回 `0`。 -- 当 `str1 > str2` 时,`strcmp` 方法返回 `1`。 +- 当 $str1 < str2$ 时,`strcmp` 方法返回 $-1$。 +- 当 $str1 == str2$ 时,`strcmp` 方法返回 $0$。 +- 当 $str1 > str2$ 时,`strcmp` 方法返回 $1$。 `strcmp` 方法对应的具体代码如下: @@ -102,9 +102,9 @@ def strcmp(str1, str2): 刚才我们提到了字符编码,这里我们也稍微介绍一下字符串中常用的字符编码标准。 -以计算机中常用字符使用的 `ASCII` 编码为例。最早的时候,人们制定了一个包含 `127` 个字符的编码表 `ASCII` 到计算机系统中。`ASCII` 编码表中的字符包含了大小写的英文字母、数字和一些符号。每个字符对应一个编码,比如大写字母 `A` 的编码是 `65`,小写字母 `a` 的编码是 `97`。 +以计算机中常用字符使用的 ASCII 编码为例。最早的时候,人们制定了一个包含 $127$ 个字符的编码表 ASCII 到计算机系统中。ASCII 编码表中的字符包含了大小写的英文字母、数字和一些符号。每个字符对应一个编码,比如大写字母 $A$ 的编码是 $65$,小写字母 $a$ 的编码是 $97$。 -`ASCII` 编码可以解决以英语为主的语言,可是无法满足中文编码。为了解决中文编码,我国制定了 `GB2312`、`GBK`、`GB18030` 等中文编码标准,将中文编译进去。但是世界上有上百种语言和文字,各国有各国的标准,就会不可避免的产生冲突,于是就有了 `Unicode` 编码。`Unicode` 编码最常用的就是 `UTF-8` 编码,`UTF-8` 编码把一个 `Unicode` 字符根据不同的数字大小编码成 `1` ~ `6` 个字节,常用的英文字母被编码成 `1` 个字节,汉字通常是 `3` 个字节。 +ASCII 编码可以解决以英语为主的语言,可是无法满足中文编码。为了解决中文编码,我国制定了 GB2312、GBK、GB18030 等中文编码标准,将中文编译进去。但是世界上有上百种语言和文字,各国有各国的标准,就会不可避免的产生冲突,于是就有了 Unicode 编码。Unicode 编码最常用的就是 UTF-8 编码,UTF-8 编码把一个 Unicode 字符根据不同的数字大小编码成 $1 \sim 6$ 个字节,常用的英文字母被编码成 $1$ 个字节,汉字通常是 $3$ 个字节。 ## 3. 字符串的存储结构 @@ -118,15 +118,15 @@ def strcmp(str1, str2): ![](https://qcdn.itcharge.cn/images/20220118151100.png) -如上图所示,字符串的顺序存储中每一个字符元素都有自己的下标索引,下标所以从 `0` 开始,到 `字符串长度 - 1` 结束。字符串中每一个「下标索引」,都有一个与之对应的「字符元素」。 +如上图所示,字符串的顺序存储中每一个字符元素都有自己的下标索引,下标所以从 $0$ 开始,到 $\text{字符串长度} - 1$ 结束。字符串中每一个「下标索引」,都有一个与之对应的「字符元素」。 跟数组类似,字符串也支持随机访问。即字符串可以根据下标,直接定位到某一个字符元素存放的位置。 ### 3.2 字符串的链式存储结构 -字符串的存储也可以采用链式存储结构,即采用一个线性链表来存储一个字符串。字符串的链节点包含一个用于存放字符的 `data` 变量,和指向下一个链节点的指针变量 `next`。这样,一个字符串就可以用一个线性链表来表示。 +字符串的存储也可以采用链式存储结构,即采用一个线性链表来存储一个字符串。字符串的链节点包含一个用于存放字符的 $data$ 变量,和指向下一个链节点的指针变量 $next$。这样,一个字符串就可以用一个线性链表来表示。 -在字符串的链式存储结构中,每个链节点可以仅存放一个字符,也可以存放多个字符。通常情况下,链节点的字符长度为 `1` 或者 `4`,这是为了避免浪费空间。当链节点的字符长度为 `4` 时,由于字符串的长度不一定是 `4` 的倍数,因此字符串所占用的链节点中最后那个链节点的 `data` 变量可能没有占满,我们可以用 `#` 或其他不属于字符集的特殊字符将其补全。 +在字符串的链式存储结构中,每个链节点可以仅存放一个字符,也可以存放多个字符。通常情况下,链节点的字符长度为 $1$ 或者 $4$,这是为了避免浪费空间。当链节点的字符长度为 $4$ 时,由于字符串的长度不一定是 $4$ 的倍数,因此字符串所占用的链节点中最后那个链节点的 $data$ 变量可能没有占满,我们可以用 `#` 或其他不属于字符集的特殊字符将其补全。 字符串的链式存储结构图下图所示。 @@ -143,7 +143,7 @@ def strcmp(str1, str2): ## 4. 字符串匹配问题 -> **字符串匹配(String Matching)**:又称模式匹配(Pattern Matching)。可以简单理解为,给定字符串 `T` 和 `p`,在主串 `T` 中寻找子串 `p`。主串 `T` 又被称为文本串,子串 `p` 又被称为模式串(`Pattern`)。 +> **字符串匹配(String Matching)**:又称模式匹配(Pattern Matching)。可以简单理解为,给定字符串 $T$ 和 $p$,在主串 $T$ 中寻找子串 $p$。主串 $T$ 又被称为文本串,子串 $p$ 又被称为模式串(`Pattern`)。 在字符串问题中,最重要的问题之一就是字符串匹配问题。而按照模式串的个数,我们可以将字符串匹配问题分为:「单模式串匹配问题」和「多模式串匹配问题」。 @@ -154,28 +154,28 @@ def strcmp(str1, str2): 有很多算法可以解决单模式匹配问题。而根据在文本中搜索模式串方式的不同,我们可以将单模式匹配算法分为以下几种: - **基于前缀搜索方法**:在搜索窗口内从前向后(沿着文本的正向)逐个读入文本字符,搜索窗口中文本和模式串的最长公共前缀。 - - 著名的 `Knuth-Morris-Pratt (KMP)` 算法和更快的 `Shift-Or` 算法使用的就是这种方法。 + - 著名的「Knuth-Morris-Pratt (KMP) 算法」和更快的「Shift-Or 算法」使用的就是这种方法。 - **基于后缀搜索方法**:在搜索窗口内从后向前(沿着文本的反向)逐个读入文本字符,搜索窗口中文本和模式串的最长公共后缀。使用这种搜索算法可以跳过一些文本字符,从而具有亚线性的平均时间复杂度。 - - 最著名的 `Boyer-Moore` 算法,以及 `Horspool` 算法、`Sunday (Boyer-Moore 算法的简化)` 算法都使用了这种方法。 + - 最著名的「Boyer-Moore 算法」,以及「Horspool 算法」、「Sunday(Boyer-Moore 算法的简化)算法」都使用了这种方法。 - **基于子串搜索方法**:在搜索窗口内从后向前(沿着文本的反向)逐个读入文本字符,搜索满足「既是窗口中文本的后缀,也是模式串的子串」的最长字符串。与后缀搜索方法一样,使用这种搜索方法也具有亚线性的平均时间复杂度。这种方法的主要缺点在于需要识别模式串的所有子串,这是一个非常复杂的问题。 - - `Rabin-Karp` 算法、`Backward Dawg Matching (BDM)` 算法、`Backward Nondeterministtic Dawg Matching (BNDM)` 算法和 `Backward Oracle Matching (BOM)` 算法使用的就是这种思想。其中,`Rabin-Karp` 算法使用了基于散列的子串搜索算法。 + - 「Rabin-Karp 算法」、「Backward Dawg Matching(BDM)算法」、「Backward Nondeterministtic Dawg Matching(BNDM)算法」和 「Backward Oracle Matching(BOM)算法」 使用的就是这种思想。其中,「Rabin-Karp 算法」使用了基于散列的子串搜索算法。 ### 4.2 多模式串匹配问题 > **多模式匹配问题(Multi Pattern Matching)**:给定一个文本串 $T = t_1t_2...t_n$,再给定一组模式串 $P = {p^1, p^2, ... ,p^r}$,其中每个模式串 $p^i$ 是定义在有限字母表上的字符串 $p^i = p^i_1p^i_2...p^i_n$。要求从文本串 $T$ 中找到模式串集合 $P$ 中所有模式串 $p^i$ 的所有出现位置。 -模式串集合 $P$ 中的一些字符串可能是集合中其他字符串的子串、前缀、后缀,或者完全相等。解决多模式串匹配问题最简单的方法是利用「单模式串匹配算法」搜索 `r` 遍。这将导致预处理阶段的最坏时间复杂度为 $O(|P|)$,搜索阶段的最坏时间复杂度为 $O(r * n)$。 +模式串集合 $P$ 中的一些字符串可能是集合中其他字符串的子串、前缀、后缀,或者完全相等。解决多模式串匹配问题最简单的方法是利用「单模式串匹配算法」搜索 $r$ 遍。这将导致预处理阶段的最坏时间复杂度为 $O(|P|)$,搜索阶段的最坏时间复杂度为 $O(r \times n)$。 如果使用「单模式串匹配算法」解决多模式匹配问题,那么根据在文本中搜索模式串方式的不同,我们也可以将多模式串匹配算法分为以下三种: - **基于前缀搜索方法**:搜索从前向后(沿着文本的正向)进行,逐个读入文本字符,使用在 $P$ 上构建的自动机进行识别。对于每个文本位置,计算既是已读入文本的后缀,同时也是 $P$ 中某个模式串的前缀的最长字符串。 - - 著名的 `Aho-Corasick Automaton (AC 自动机)` 算法、`Multiple Shift-And` 算法使用的这种方法。 + - 著名的 「Aho-Corasick Automaton(AC 自动机)算法」、「Multiple Shift-And 算法」使用的这种方法。 - **基于后缀搜索方法**:搜索从后向前(沿着文本的反向)进行,搜索模式串的后缀。根据后缀的下一次出现位置来移动当前文本位置。这种方法可以避免读入所有的文本字符。 - - `Commentz-Walter` 算法(`Boyer-Moore` 算法的扩展算法)、`Set Horspool` 算法(`Commentz-Walter` 算法的简化算法)、`Wu-Manber` 算法都使用了这种方法。 + - 「Commentz-Walter(Boyer-Moore 算法的扩展算法)算法」 、「Set Horspool(Commentz-Walter 算法的简化算法)算法」、「Wu-Manber 算法」都使用了这种方法。 - **基于子串搜索方法**:搜索从后向前(沿着文本的反向)进行,在模式串的长度为 $min(len(p^i))$ 的前缀中搜索子串,以此决定当前文本位置的移动。这种方法也可以避免读入所有的文本字符。 - - `Multiple BNDM` 算法、`Set Backward Dawg Matching (SBDM)` 算法、`Set Backwrad Oracle Matching (SBOM)` 算法都使用了这种方法。 + - 「Multiple BNDM 算法」、「Set Backward Dawg Matching(SBDM)算法」、「Set Backwrad Oracle Matching(SBOM)算法」都使用了这种方法。 -需要注意的是,以上所介绍的多模式串匹配算法大多使用了一种基本的数据结构:**「字典树(Trie Tree)」**。著名的 **「Aho-Corasick Automaton (AC 自动机) 算法」** 就是在 `KMP` 算法的基础上,与「字典树」结构相结合而诞生的。而「AC 自动机算法」也是多模式串匹配算法中最有效的算法之一。 +需要注意的是,以上所介绍的多模式串匹配算法大多使用了一种基本的数据结构:**「字典树(Trie Tree)」**。著名的 **「Aho-Corasick Automaton (AC 自动机) 算法」** 就是在「KMP 算法」的基础上,与「字典树」结构相结合而诞生的。而「AC 自动机算法」也是多模式串匹配算法中最有效的算法之一。 所以学习多模式匹配算法,重点是要掌握 **「字典树」** 和 **「AC 自动机算法」** 。 @@ -189,5 +189,4 @@ def strcmp(str1, str2): - 【博文】[字符串和编码 - 廖雪峰的官方网站 ](https://www.liaoxuefeng.com/wiki/1016959663602400/1017075323632896) - 【文章】[数组和字符串 - LeetBook - 力扣](https://leetcode.cn/leetbook/read/array-and-string/c9lnm/) - 【文章】[字符串部分简介 - OI Wiki](https://oi-wiki.org/string/) -- 【文章】[解密 Python 中字符串的底层实现,以及相关操作 - 古明地盆 - 博客园](https://www.cnblogs.com/traditional/p/13455962.html) - +- 【文章】[解密 Python 中字符串的底层实现,以及相关操作 - 古明地盆 - 博客园](https://www.cnblogs.com/traditional/p/13455962.html) \ No newline at end of file From 6ab06b460d363af3c9159608402ad0df5db53935 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:25 +0800 Subject: [PATCH 020/158] Update 01.String-Brute-Force.md --- .../01.String-Brute-Force.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md b/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md index 8e97897b..9ce5d689 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md @@ -2,17 +2,17 @@ > **Brute Force 算法**:简称为 BF 算法。中文意思是暴力匹配算法,也可以叫做朴素匹配算法。 > -> - **BF 算法思想**:对于给定文本串 `T` 与模式串 `p`,从文本串的第一个字符开始与模式串 `p` 的第一个字符进行比较,如果相等,则继续逐个比较后续字符,否则从文本串 `T` 的第二个字符起重新和模式串 `p` 进行比较。依次类推,直到模式串 `p` 中每个字符依次与文本串 `T` 的一个连续子串相等,则模式匹配成功。否则模式匹配失败。 +> - **BF 算法思想**:对于给定文本串 $T$ 与模式串 $p$,从文本串的第一个字符开始与模式串 $p$ 的第一个字符进行比较,如果相等,则继续逐个比较后续字符,否则从文本串 $T$ 的第二个字符起重新和模式串 $p$ 进行比较。依次类推,直到模式串 $p$ 中每个字符依次与文本串 $T$ 的一个连续子串相等,则模式匹配成功。否则模式匹配失败。 ![](https://qcdn.itcharge.cn/images/20220205003716.png) ## 2. Brute Force 算法步骤 -1. 对于给定的文本串 `T` 与模式串 `p`,求出文本串 `T` 的长度为 `n`,模式串 `p` 的长度为 `m`。 -2. 同时遍历文本串 `T` 和模式串 `p`,先将 `T[0]` 与 `p[0]` 进行比较。 - 1. 如果相等,则继续比较 `T[1]` 和 `p[1]`。以此类推,一直到模式串 `p` 的末尾 `p[m - 1]` 为止。 - 2. 如果不相等,则将文本串 `T` 移动到上次匹配开始位置的下一个字符位置,模式串 `p` 则回退到开始位置,再依次进行比较。 -3. 当遍历完文本串 `T` 或者模式串 `p` 的时候停止搜索。 +1. 对于给定的文本串 $T$ 与模式串 $p$,求出文本串 $T$ 的长度为 $n$,模式串 $p$ 的长度为 $m$。 +2. 同时遍历文本串 $T$ 和模式串 $p$,先将 $T[0]$ 与 $p[0]$ 进行比较。 + 1. 如果相等,则继续比较 $T[1]$ 和 $p[1]$。以此类推,一直到模式串 $p$ 的末尾 $p[m - 1]$ 为止。 + 2. 如果不相等,则将文本串 $T$ 移动到上次匹配开始位置的下一个字符位置,模式串 $p$ 则回退到开始位置,再依次进行比较。 +3. 当遍历完文本串 $T$ 或者模式串 $p$ 的时候停止搜索。 ## 3. Brute Force 算法代码实现 @@ -37,9 +37,9 @@ def bruteForce(T: str, p: str) -> int: ## 4. Brute Force 算法分析 -BF 算法非常简单,容易理解,但其效率很低。主要是因为在匹配过程中可能会出现回溯:当遇到一对字符不同时,模式串 `p` 直接回到开始位置,文本串也回到匹配开始位置的下一个位置,再重新开始比较。 +BF 算法非常简单,容易理解,但其效率很低。主要是因为在匹配过程中可能会出现回溯:当遇到一对字符不同时,模式串 $p$ 直接回到开始位置,文本串也回到匹配开始位置的下一个位置,再重新开始比较。 -在回溯之后,文本串和模式串中一些部分的比较是没有必要的。由于这种操作策略,导致 BF 算法的效率很低。最坏情况是每一趟比较都在模式串的最后遇到了字符不匹配的情况,每轮比较需要进行 `m` 次字符对比,总共需要进行 `n - m + 1` 轮比较,总的比较次数为 `m * (n - m + 1) `。所以 BF 算法的最坏时间复杂度为 $O(m \times n)$。 +在回溯之后,文本串和模式串中一些部分的比较是没有必要的。由于这种操作策略,导致 BF 算法的效率很低。最坏情况是每一趟比较都在模式串的最后遇到了字符不匹配的情况,每轮比较需要进行 $m$ 次字符对比,总共需要进行 $n - m + 1$ 轮比较,总的比较次数为 $m \times (n - m + 1) $。所以 BF 算法的最坏时间复杂度为 $O(m \times n)$。 在最理想的情况下(第一次匹配直接匹配成功),BF 算法的最佳时间复杂度是 $O(m)$。 From 612fddf5190411655ab032883451ca7493732f4e Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:27 +0800 Subject: [PATCH 021/158] Update 02.String-Rabin-Karp.md --- .../02.String-Rabin-Karp.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md b/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md index 3f602667..dadf7423 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md @@ -2,21 +2,21 @@ > **Rabin Karp 算法**:简称为 RK 算法。是由它的两位发明者 Michael Oser Rabin 和 Richard Manning Karp 的名字来命名的。RK 算法是他们在 1987 年提出的、使用哈希函数以在文本中搜寻单个模式串的字符串搜索算法。 > -> - **Rabin Karp 算法思想**:对于给定文本串 `T` 与模式串 `p`,通过滚动哈希算快速筛选出与模式串 `p` 不匹配的文本位置,然后在其余位置继续检查匹配项。 +> - **Rabin Karp 算法思想**:对于给定文本串 $T$ 与模式串 $p$,通过滚动哈希算快速筛选出与模式串 $p$ 不匹配的文本位置,然后在其余位置继续检查匹配项。 ## 2. Rabin Karp 算法步骤 ### 2.1 Rabin Karp 算法整体步骤 -1. 对于给定的文本串 `T` 与模式串 `p`,求出文本串 `T` 的长度为 `n`,模式串 `p` 的长度为 `m`。 -2. 通过滚动哈希算法求出模式串 `p` 的哈希值 `hash_p`。 -3. 再通过滚动哈希算法对文本串 `T` 中 `n - m + 1` 个子串分别求哈希值 `hash_t`。 +1. 对于给定的文本串 $T$ 与模式串 $p$,求出文本串 $T$ 的长度为 $n$,模式串 $p$ 的长度为 $m$。 +2. 通过滚动哈希算法求出模式串 $p$ 的哈希值 $hash\underline{}p$。 +3. 再通过滚动哈希算法对文本串 $T$ 中 $n - m + 1$ 个子串分别求哈希值 $hash\underline{}t$。 4. 然后逐个与模式串的哈希值比较大小。 - 1. 如果当前子串的哈希值 `hash_t` 与模式串的哈希值 `hash_p` 不同,则说明两者不匹配,则继续向后匹配。 - 2. 如果当前子串的哈希值 `hash_t` 与模式串的哈希值 `hash_p` 相等,则验证当前子串和模式串的每个字符是否真的相等(避免哈希冲突)。 + 1. 如果当前子串的哈希值 $hash\underline{}t$ 与模式串的哈希值 $hash_p$ 不同,则说明两者不匹配,则继续向后匹配。 + 2. 如果当前子串的哈希值 $hash\underline{}t$ 与模式串的哈希值 $hash_p$ 相等,则验证当前子串和模式串的每个字符是否真的相等(避免哈希冲突)。 1. 如果当前子串和模式串的每个字符相等,则说明当前子串和模式串匹配。 2. 如果当前子串和模式串的每个字符不相等,则说明两者不匹配,继续向后匹配。 -5. 比较到末尾,如果仍未成功匹配,则说明文本串 `T` 中不包含模式串 `p`,方法返回 `-1`。 +5. 比较到末尾,如果仍未成功匹配,则说明文本串 $T$ 中不包含模式串 $p$,方法返回 $-1$。 ### 2.2 滚动哈希算法 @@ -26,21 +26,21 @@ RK 算法中的滚动哈希算法主要是利用了 **「Rabin fingerprint 思 下面我们用一个例子来解释一下这种算法思想。 -假设给定的字符串的字符集中只包含 `d` 种字符,那么我们就可以用一个 `d` 进制数表示子串的哈希值。 +假设给定的字符串的字符集中只包含 $d$ 种字符,那么我们就可以用一个 $d$ 进制数表示子串的哈希值。 -举个例子,假如字符串只包含 `a` ~ `z` 这 `26` 个小写字母,那么我们就可以用 `26` 进制数来表示一个字符串,`a` 表示为 `0`,`b` 表示为 `1`,以此类推,`z` 就用 `25` 表示。 +举个例子,假如字符串只包含 $a \sim z$ 这 $26$ 个小写字母,那么我们就可以用 $26$ 进制数来表示一个字符串,$a$ 表示为 $0$,$b$ 表示为 $1$,以此类推,$z$ 就用 $25$ 表示。 -比如 `cat` 的哈希值就可以表示为: +比如 `"cat"` 的哈希值就可以表示为: $\begin{align} Hash(cat) &= c \times 26 \times 26 + a \times 26 + t \times 1 \cr &= 2 \times 26 \times 26 + 0 \times 26 + 19 \times 1 \cr &= 1371 \end{align}$ 这种按位计算哈希值的哈希函数有一个特点:在计算相邻子串时,可以利用上一个子串的哈希值。 -比如说 `cat` 的相邻子串为 `ate`。按照刚才哈希函数计算,可以得出 `ate` 的哈希值为: +比如说 $cat$ 的相邻子串为 `"ate"`。按照刚才哈希函数计算,可以得出 `"ate"` 的哈希值为: $\begin{align} Hash(ate) &= a \times 26 \times 26 + t \times 26 + e \times 1 \cr &= 0 \times 26 \times 26 + 19 \times 26 + 4 \times 1 \cr &= 498 \end{align}$ -如果利用上一个子串 `cat` 的哈希值计算 `ate`,则 `ate` 的哈希值为: +如果利用上一个子串 `"cat"` 的哈希值计算 `"ate"`,则 `"ate"` 的哈希值为: $\begin{align} Hash(ate) &= (Hash(cat) - c \times 26 \times 26) * 26 + e \times 26 \cr &= (1371 - 2 \times 26 \times 26) \times 26 + 4 \times 1 \cr &= 498 \end{align}$ @@ -48,10 +48,10 @@ $\begin{align} Hash(ate) &= (Hash(cat) - c \times 26 \times 26) * 26 + e \times 我们将上面的规律扩展总结一下。 -给定的文本串 `T` 与模式串 `p`,求出文本串 `T` 的长度为 `n`,模式串 `p` 的长度为 `m`。字符串字符种类数为 `d`,则: +给定的文本串 $T$ 与模式串 $p$,求出文本串 $T$ 的长度为 $n$,模式串 $p$ 的长度为 $m$。字符串字符种类数为 $d$,则: -- 模式串 `p` 的哈希值计算方式为:$Hash(p) = p_0 \times d^{m - 1} + p_1 \times d^{m - 2} + … + p_{m-1} \times d^{0}$。 -- 文本串中起始于位置 `0`,长度为 `m` 的子串 $T_{[0,m-1]}$ 对应哈希值计算方法为:$Hash(T_{[0, m - 1]}) = T_0 \times d^{m - 1} + T_1 \times d^{m - 2} + ... + T_{m - 1} \times d^0$。 +- 模式串 $p$ 的哈希值计算方式为:$Hash(p) = p_0 \times d^{m - 1} + p_1 \times d^{m - 2} + … + p_{m-1} \times d^{0}$。 +- 文本串中起始于位置 $0$,长度为 $m$ 的子串 $T_{[0,m-1]}$ 对应哈希值计算方法为:$Hash(T_{[0, m - 1]}) = T_0 \times d^{m - 1} + T_1 \times d^{m - 2} + ... + T_{m - 1} \times d^0$。 - 已知子串的哈希值 $Hash(T_{[i,i + m - 1]})$,将子串向右移动一位的子串对应哈希值计算方法为:$Hash(T_{[i + 1, i + m]}) = [Hash(T_{[i, i + m - 1]}) - T_i \times d^{m - 1}] \times d + T_{i + m} \times d^{0}$。 因为哈希值过大会造成溢出,所以我们在计算过程中还要对结果取模。取模的值应该尽可能大,并且应该是质数,这样才能减少哈希碰撞的概率。 @@ -92,13 +92,13 @@ def rabinKarp(T: str, p: str, d, q) -> int: ## 4. RK 算法分析 -RK 算法可以看做是 BF 算法的一种改进。在 BF 算法中,每一个字符都需要进行比较。而在 RK 算法中,判断模式串的哈希值与每个子串的哈希值之间是否相等的时间复杂度为 $O(1)$。总共需要比较 `n - m + 1` 个子串的哈希值,所以 RK 算法的整体时间复杂度为 $O(n)$。跟 BF 算法相比,RK 算法的效率提高了很多。 +RK 算法可以看做是 BF 算法的一种改进。在 BF 算法中,每一个字符都需要进行比较。而在 RK 算法中,判断模式串的哈希值与每个子串的哈希值之间是否相等的时间复杂度为 $O(1)$。总共需要比较 $n - m + 1$ 个子串的哈希值,所以 RK 算法的整体时间复杂度为 $O(n)$。跟 BF 算法相比,RK 算法的效率提高了很多。 -但是如果存在冲突的情况下,算法的效率会降低。最坏情况是每一次比较模式串的哈希值和子串的哈希值时都相等,但是每一次都会出现冲突,那么每一次都需要验证模式串和子串每个字符是否完全相同,那么总的比较次数就是 `m * (n - m + 1) `,时间复杂度就会退化为 $O(m * n)$。 +但是如果存在冲突的情况下,算法的效率会降低。最坏情况是每一次比较模式串的哈希值和子串的哈希值时都相等,但是每一次都会出现冲突,那么每一次都需要验证模式串和子串每个字符是否完全相同,那么总的比较次数就是 $m \times (n - m + 1) $,时间复杂度就会退化为 $O(m \times n)$。 ## 参考资料 - 【书籍】数据结构与算法 Python 语言描述 - 裘宗燕 著 - 【文章】[字符串匹配基础(上)- 数据结构与算法之美 - 极客时间](https://time.geekbang.org/column/article/71187) - 【文章】[字符串匹配算法 - Rabin Karp 算法 - coolcao 的小站](https://coolcao.com/2020/08/20/rabin-karp/) -- 【问答】[string - Python: Rabin-Karp algorithm hashing - Stack Overflow](https://stackoverflow.com/questions/22216948/python-rabin-karp-algorithm-hashing) +- 【问答】[string - Python: Rabin-Karp algorithm hashing - Stack Overflow](https://stackoverflow.com/questions/22216948/python-rabin-karp-algorithm-hashing) \ No newline at end of file From 160e6d7b4402052775b3982d3be121ad7c69dc4e Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:29 +0800 Subject: [PATCH 022/158] Update 03.String-KMP.md --- .../03.String-KMP.md | 86 +++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md b/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md index 7e4b1a14..60e22075 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md @@ -2,17 +2,17 @@ > **KMP 算法**:全称叫做 **「Knuth Morris Pratt 算法」**,是由它的三位发明者 Donald Knuth、James H. Morris、 Vaughan Pratt 的名字来命名的。KMP 算法是他们三人在 1977 年联合发表的。 > -> - **KMP 算法思想**:对于给定文本串 `T` 与模式串 `p`,当发现文本串 `T` 的某个字符与模式串 `p` 不匹配的时候,可以利用匹配失败后的信息,尽量减少模式串与文本串的匹配次数,避免文本串位置的回退,以达到快速匹配的目的。 +> - **KMP 算法思想**:对于给定文本串 $T$ 与模式串 $p$,当发现文本串 $T$ 的某个字符与模式串 $p$ 不匹配的时候,可以利用匹配失败后的信息,尽量减少模式串与文本串的匹配次数,避免文本串位置的回退,以达到快速匹配的目的。 ### 1.1 朴素匹配算法的缺陷 -在朴素匹配算法的匹配过程中,我们分别用指针 `i` 和指针 `j` 指示文本串 `T` 和模式串 `p` 中当前正在对比的字符。当发现文本串 `T` 的某个字符与模式串 `p` 不匹配的时候,`j` 回退到开始位置,`i` 回退到之前匹配开始位置的下一个位置上,然后开启新一轮的匹配,如图所示。 +在朴素匹配算法的匹配过程中,我们分别用指针 $i$ 和指针 $j$ 指示文本串 $T$ 和模式串 $p$ 中当前正在对比的字符。当发现文本串 $T$ 的某个字符与模式串 $p$ 不匹配的时候,$j$ 回退到开始位置,$i$ 回退到之前匹配开始位置的下一个位置上,然后开启新一轮的匹配,如图所示。 ![](https://qcdn.itcharge.cn/images/20220205003716.png) -这样,在 Brute Force 算法中,如果从文本串 `T[i]` 开始的这一趟字符串比较失败了,算法会直接开始尝试从 `T[i + 1]` 开始比较。如果 `i` 已经比较到了后边位置,则该操作相当于将指针 `i` 进行了回退操作。 +这样,在 Brute Force 算法中,如果从文本串 $T[i]$ 开始的这一趟字符串比较失败了,算法会直接开始尝试从 $T[i + 1]$ 开始比较。如果 $i$ 已经比较到了后边位置,则该操作相当于将指针 $i$ 进行了回退操作。 -那么有没有哪种算法,可以让 `i` 不发生回退,一直向右移动呢? +那么有没有哪种算法,可以让 $i$ 不发生回退,一直向右移动呢? ### 1.2 KMP 算法的改进 @@ -20,44 +20,44 @@ 每一次失配所告诉我们的信息是:**主串的某一个子串等于模式串的某一个前缀**。 -这个信息的意思是:如果文本串 `T[i: i + m]` 与模式串 `p` 的失配是下标位置 `j` 上发生的,那么文本串 `T` 从下标位置 `i` 开始连续的 `j - 1` 个字符,一定与模式串 `p` 的前 `j - 1` 个字符一模一样,即:`T[i: i + j] == p[0: j]`。 +这个信息的意思是:如果文本串 $T[i: i + m]$ 与模式串 $p$ 的失配是下标位置 $j$ 上发生的,那么文本串 $T$ 从下标位置 $i$ 开始连续的 $j - 1$ 个字符,一定与模式串 $p$ 的前 $j - 1$ 个字符一模一样,即:$T[i: i + j] == p[0: j]$。 但是知道这个信息有什么用呢? -以刚才图中的例子来说,文本串的子串 `T[i: i + m]` 与模式串 `p` 的失配是在第 `5` 个位置发生的,那么: +以刚才图中的例子来说,文本串的子串 $T[i: i + m]$ 与模式串 $p$ 的失配是在第 $5$ 个位置发生的,那么: -- 文本串 `T` 从下标位置 `i` 开始连续的 `5` 个字符,一定与模式串 `p` 的前 `5` 个字符一模一样,即:`"ABCAB" == "ABCAB"`。 -- 而模式串的前 `5` 个字符中,前 `2` 位前缀和后 `2` 位后缀又是相同的,即 `"AB" == "AB"`。 +- 文本串 $T$ 从下标位置 $i$ 开始连续的 $5$ 个字符,一定与模式串 $p$ 的前 $5$ 个字符一模一样,即:`"ABCAB" == "ABCAB"`。 +- 而模式串的前 $5$ 个字符中,前 $2$ 位前缀和后 $2$ 位后缀又是相同的,即 `"AB" == "AB"`。 -所以根据上面的信息,我们可以推出:文本串子串的后 `2` 位后缀和模式串子串的前 `2` 位是相同的,即 `T[i + 3: i + 5] == p[0: 2]`,而这部分(即下图中的蓝色部分)是之前已经比较过的,不需要再比较了,可以直接跳过。 +所以根据上面的信息,我们可以推出:文本串子串的后 $2$ 位后缀和模式串子串的前 $2$ 位是相同的,即 $T[i + 3: i + 5] == p[0: 2]$,而这部分(即下图中的蓝色部分)是之前已经比较过的,不需要再比较了,可以直接跳过。 -那么我们就可以将文本串中的 `T[i + 5]` 对准模式串中的 `p[2]`,继续进行对比。这样 `i` 就不再需要回退了,可以一直向右移动匹配下去。在这个过程中,我们只需要将模式串 `j` 进行回退操作即可。 +那么我们就可以将文本串中的 $T[i + 5]$ 对准模式串中的 $p[2]$,继续进行对比。这样 $i$ 就不再需要回退了,可以一直向右移动匹配下去。在这个过程中,我们只需要将模式串 $j$ 进行回退操作即可。 ![](https://qcdn.itcharge.cn/images/20220205003701.png) -KMP 算法就是使用了这样的思路,对模式串 `p` 进行了预处理,计算出一个 **「部分匹配表」**,用一个数组 `next` 来记录。然后在每次失配发生时,不回退文本串的指针 `i`,而是根据「部分匹配表」中模式串失配位置 `j` 的前一个位置的值,即 `next[j - 1]` 的值来决定模式串可以向右移动的位数。 +KMP 算法就是使用了这样的思路,对模式串 $p$ 进行了预处理,计算出一个 **「部分匹配表」**,用一个数组 $next$ 来记录。然后在每次失配发生时,不回退文本串的指针 $i$,而是根据「部分匹配表」中模式串失配位置 $j$ 的前一个位置的值,即 $next[j - 1]$ 的值来决定模式串可以向右移动的位数。 -比如上述示例中模式串 `p` 是在 `j = 5` 的位置上发生失配的,则说明文本串的子串 `T[i: i + 5]` 和模式串 `p[0: 5]` 的字符是一致的,即 `"ABCAB" == "ABCAB"`。而根据「部分匹配表」中 `next[4] == 2`,所以不用回退 `i`,而是将 `j` 移动到下标为 `2` 的位置,让 `T[i + 5]` 直接对准 `p[2]`,然后继续进行比对。 +比如上述示例中模式串 $p$ 是在 $j = 5$ 的位置上发生失配的,则说明文本串的子串 $T[i: i + 5]$ 和模式串 $p[0: 5]$ 的字符是一致的,即 `"ABCAB" == "ABCAB"`。而根据「部分匹配表」中 $next[4] == 2$,所以不用回退 $i$,而是将 $j$ 移动到下标为 $2$ 的位置,让 $T[i + 5]$ 直接对准 $p[2]$,然后继续进行比对。 ### 1.3 next 数组 -上文提到的「部分匹配表」,也叫做「前缀表」,在 KMP 算法中使用 `next` 数组存储。`next[j]` 表示的含义是:**记录下标 j 之前(包括 j)的模式串 `p` 中,最长相等前后缀的长度。** +上文提到的「部分匹配表」,也叫做「前缀表」,在 KMP 算法中使用 $next$ 数组存储。$next[j]$ 表示的含义是:**记录下标 j 之前(包括 j)的模式串 $p$ 中,最长相等前后缀的长度。** -简单而言,就是求:**模式串 `p` 的子串 `p[0: j + 1]` 中,使得「前 k 个字符」恰好等于「后 k 个字符」的「最长的 `k`」**。当然子串 `p[0: j + 1]` 本身不参与比较。 +简单而言,就是求:**模式串 $p$ 的子串 $p[0: j + 1]$ 中,使得「前 k 个字符」恰好等于「后 k 个字符」的「最长的 $k$」**。当然子串 $p[0: j + 1]$ 本身不参与比较。 举个例子来说明一下,以 `p = "ABCABCD"` 为例。 -- `next[0] = 0`,因为 `"A"` 中无有相同前缀后缀,最大长度为 `0`。 -- `next[1] = 0`,因为 `"AB"` 中无相同前缀后缀,最大长度为 `0`。 -- `next[2] = 0`,因为 `"ABC"` 中无相同前缀后缀,最大长度为 `0`。 -- `next[3] = 1`,因为 `"ABCA"` 中有相同的前缀后缀 `"a"`,最大长度为 `1`。 -- `next[4] = 2`,因为 `"ABCAB"` 中有相同的前缀后缀 `"AB"`,最大长度为 `2`。 -- `next[5] = 3`,因为 `"ABCABC"` 中有相同的前缀后缀 `"ABC"`,最大长度为 `3`。 -- `next[6] = 0`,因为 `"ABCABCD"` 中无相同前缀后缀,最大长度为 `0`。 +- $next[0] = 0$,因为 `"A"` 中无有相同前缀后缀,最大长度为 $0$。 +- $next[1] = 0$,因为 `"AB"` 中无相同前缀后缀,最大长度为 $0$。 +- $next[2] = 0$,因为 `"ABC"` 中无相同前缀后缀,最大长度为 $0$。 +- $next[3] = 1$,因为 `"ABCA"` 中有相同的前缀后缀 `"a"`,最大长度为 $1$。 +- $next[4] = 2$,因为 `"ABCAB"` 中有相同的前缀后缀 `"AB"`,最大长度为 $2$。 +- $next[5] = 3$,因为 `"ABCABC"` 中有相同的前缀后缀 `"ABC"`,最大长度为 $3$。 +- $next[6] = 0$,因为 `"ABCABCD"` 中无相同前缀后缀,最大长度为 $0$。 -同理也可以计算出 `"ABCABDEF"` 的前缀表为 `[0, 0, 0, 1, 2, 0, 0, 0]`。`"AABAAAB"` 的前缀表为 `[0, 1, 0, 1, 2, 2, 3]`。`"ABCDABD"` 的前缀表为 `[0, 0, 0, 0, 1, 2, 0]`。 +同理也可以计算出 `"ABCABDEF"` 的前缀表为 $[0, 0, 0, 1, 2, 0, 0, 0]$。`"AABAAAB"` 的前缀表为 $[0, 1, 0, 1, 2, 2, 3]$。`"ABCDABD"` 的前缀表为 $[0, 0, 0, 0, 1, 2, 0]$。 -在之前的例子中,当 `p[5]` 和 `T[i + 5]` 匹配失败后,根据模式串失配位置 `j` 的前一个位置的值,即 `next[4] = 2`,我们直接让 `T[i + 5]` 直接对准了 `p[2]`,然后继续进行比对,如下图所示。 +在之前的例子中,当 $p[5]$ 和 $T[i + 5]$ 匹配失败后,根据模式串失配位置 $j$ 的前一个位置的值,即 $next[4] = 2$,我们直接让 $T[i + 5]$ 直接对准了 $p[2]$,然后继续进行比对,如下图所示。 ![](https://qcdn.itcharge.cn/images/20220205003647.png) @@ -65,36 +65,36 @@ KMP 算法就是使用了这样的思路,对模式串 `p` 进行了预处理 其实在上文 **「1.2 KMP 算法的改进」** 中的例子中我们提到过了。现在我们将其延伸总结一下,其实这个过程就是利用了前缀表进行模式串移动的原理,具体推论如下。 -如果文本串 `T[i: i + m]` 与模式串 `p` 的失配是在第 `j` 个下标位置发生的,那么: +如果文本串 $T[i: i + m]$ 与模式串 $p$ 的失配是在第 $j$ 个下标位置发生的,那么: -- 文本串 `T` 从下标位置 `i` 开始连续的 `j` 个字符,一定与模式串 `p` 的前 `j` 个字符一模一样,即:`T[i: i + j] == p[0: j]`。 -- 而如果模式串 `p` 的前 `j ` 个字符中,前 `k` 位前缀和后 `k` 位后缀相同,即 `p[0: k] == p[j - k: j]`,并且要保证 `k` 要尽可能长。 +- 文本串 $T$ 从下标位置 $i$ 开始连续的 $j$ 个字符,一定与模式串 $p$ 的前 $j$ 个字符一模一样,即:$T[i: i + j] == p[0: j]$。 +- 而如果模式串 $p$ 的前 $j $ 个字符中,前 $k$ 位前缀和后 $k$ 位后缀相同,即 $p[0: k] == p[j - k: j]$,并且要保证 $k$ 要尽可能长。 -可以推出:文本串子串的后 `k` 位后缀和模式串子串的前 `k` 位是相同的,即 `T[i + m - k: i + m] == p[0: k]`(这部分是已经比较过的),不需要再比较了,可以直接跳过。 +可以推出:文本串子串的后 $k$ 位后缀和模式串子串的前 $k$ 位是相同的,即 $T[i + m - k: i + m] == p[0: k]$(这部分是已经比较过的),不需要再比较了,可以直接跳过。 -那么我们就可以将文本串中的 `T[i + m]` 对准模式串中的 `p[k]`,继续进行对比。这里的 `k` 其实就是 `next[j - 1]`。 +那么我们就可以将文本串中的 $T[i + m]$ 对准模式串中的 $p[k]$,继续进行对比。这里的 $k$ 其实就是 $next[j - 1]$。 ## 2. KMP 算法步骤 ### 3.1 next 数组的构造 -我们可以通过递推的方式构造 `next` 数组。 +我们可以通过递推的方式构造 $next$ 数组。 -- 我们把模式串 `p` 拆分成 `left`、`right` 两部分。`left` 表示前缀串开始所在的下标位置,`right` 表示后缀串开始所在的下标位置,起始时 `left = 0`,`right = 1`。 -- 比较一下前缀串和后缀串是否相等。通过比较 `p[left]` 和 `p[right]` 来进行判断。 -- 如果 `p[left] != p[right]`,说明当前的前后缀不相同。则让后缀开始位置 `k` 不动,前缀串开始位置 `left` 不断回退到 `next[left - 1]` 位置,直到 `p[left] == p[right]` 为止。 -- 如果 `p[left] == p[right]`,说明当前的前后缀相同,则可以先让 `left += 1`,此时 `left` 既是前缀下一次进行比较的下标位置,又是当前最长前后缀的长度。 -- 记录下标 `right` 之前的模式串 `p` 中,最长相等前后缀的长度为 `left`,即 `next[right] = left`。 +- 我们把模式串 $p$ 拆分成 $left$、$right$ 两部分。$left$ 表示前缀串开始所在的下标位置,$right$ 表示后缀串开始所在的下标位置,起始时 $left = 0$,$right = 1$。 +- 比较一下前缀串和后缀串是否相等。通过比较 $p[left]$ 和 $p[right]$ 来进行判断。 +- 如果 $p[left] != p[right]$,说明当前的前后缀不相同。则让后缀开始位置 $k$ 不动,前缀串开始位置 $left$ 不断回退到 $next[left - 1]$ 位置,直到 $p[left] == p[right]$ 为止。 +- 如果 $p[left] == p[right]$,说明当前的前后缀相同,则可以先让 $left += 1$,此时 $left$ 既是前缀下一次进行比较的下标位置,又是当前最长前后缀的长度。 +- 记录下标 $right$ 之前的模式串 $p$ 中,最长相等前后缀的长度为 $left$,即 $next[right] = left$。 ### 3.2 KMP 算法整体步骤 -1. 根据 `next` 数组的构造步骤生成「前缀表」`next`。 -2. 使用两个指针 `i`、`j`,其中 `i` 指向文本串中当前匹配的位置,`j` 指向模式串中当前匹配的位置。初始时,`i = 0`,`j = 0`。 -3. 循环判断模式串前缀是否匹配成功,如果模式串前缀匹配不成功,将模式串进行回退,即 `j = next[j - 1]`,直到 `j == 0` 时或前缀匹配成功时停止回退。 -4. 如果当前模式串前缀匹配成功,则令模式串向右移动 `1` 位,即 `j += 1`。 -5. 如果当前模式串 **完全** 匹配成功,则返回模式串 `p` 在文本串 `T` 中的开始位置,即 `i - j + 1`。 -6. 如果还未完全匹配成功,则令文本串向右移动 `1` 位,即 `i += 1`,然后继续匹配。 -7. 如果直到文本串遍历完也未完全匹配成功,则说明匹配失败,返回 `-1`。 +1. 根据 $next$ 数组的构造步骤生成「前缀表」$next$。 +2. 使用两个指针 $i$、$j$,其中 $i$ 指向文本串中当前匹配的位置,$j$ 指向模式串中当前匹配的位置。初始时,$i = 0$,$j = 0$。 +3. 循环判断模式串前缀是否匹配成功,如果模式串前缀匹配不成功,将模式串进行回退,即 $j = next[j - 1]$,直到 $j == 0$ 时或前缀匹配成功时停止回退。 +4. 如果当前模式串前缀匹配成功,则令模式串向右移动 $1$ 位,即 $j += 1$。 +5. 如果当前模式串 **完全** 匹配成功,则返回模式串 $p$ 在文本串 $T$ 中的开始位置,即 $i - j + 1$。 +6. 如果还未完全匹配成功,则令文本串向右移动 $1$ 位,即 $i += 1$,然后继续匹配。 +7. 如果直到文本串遍历完也未完全匹配成功,则说明匹配失败,返回 $-1$。 ## 3. KMP 算法代码实现 @@ -140,8 +140,8 @@ print(kmp("ababbbbaaabbbaaa", "bbbb")) ## 4. KMP 算法分析 -- KMP 算法在构造前缀表阶段的时间复杂度为 $O(m)$,其中 $m$ 是模式串 `p` 的长度。 -- KMP 算法在匹配阶段,是根据前缀表不断调整匹配的位置,文本串的下标 `i` 并没有进行回退,可以看出匹配阶段的时间复杂度是 $O(n)$,其中 $n$ 是文本串 `T` 的长度。 +- KMP 算法在构造前缀表阶段的时间复杂度为 $O(m)$,其中 $m$ 是模式串 $p$ 的长度。 +- KMP 算法在匹配阶段,是根据前缀表不断调整匹配的位置,文本串的下标 $i$ 并没有进行回退,可以看出匹配阶段的时间复杂度是 $O(n)$,其中 $n$ 是文本串 $T$ 的长度。 - 所以 KMP 整个算法的时间复杂度是 $O(n + m)$,相对于朴素匹配算法的 $O(n * m)$ 的时间复杂度,KMP 算法的效率有了很大的提升。 ## 参考资料 From 700f8e14eb3e357e0a8ad8df91e2f55d6fbec092 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:32 +0800 Subject: [PATCH 023/158] Update 01.Trie.md --- .../01.Trie.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md b/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md index 33abd869..fff8834b 100644 --- a/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md +++ b/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md @@ -2,11 +2,11 @@ > **字典树(Trie)**:又称为前缀树、单词查找树,是一种树形结构。顾名思义,就是一个像字典一样的树。它是字典的一种存储方式。字典中的每个单词在字典树中表现为一条从根节点出发的路径,路径相连的边上的字母连起来就形成对应的字符串。 -例如下图就是一棵字典树,其中包含有 `a`、`abc`、`acb`、`acc`、`ach`、`b`、`chb` 这 7 个单词。 +例如下图就是一棵字典树,其中包含有 `"a"`、`"abc"`、`"acb"`、`"acc"`、`"ach"`、`"b"`、`"chb"` 这 7 个单词。 ![](https://qcdn.itcharge.cn/images/20220210142321.png) -从图中可以发现,这棵字典树用边来表示字母,从根节点到树上某一节点的路径就代表了一个单词。比如 1 → 2 → 6 → 10 表示的就是单词 `acc`。为了清楚地标记单词,我们可以在每个单词的结束节点位置增加一个 `end` 标记(图中红色节点),表示从根节点到这里有一个单词。 +从图中可以发现,这棵字典树用边来表示字母,从根节点到树上某一节点的路径就代表了一个单词。比如 $1 \rightarrow 2 \rightarrow 6 \rightarrow 10$ 表示的就是单词 `"acc"`。为了清楚地判断某节点路径是否表示一个单词,我们还可以在每个单词对应路径的结束位置增加一个结束标记 $end$(图中红色节点),表示从根节点到这里有一个单词。 字典树的结构比较简单,其本质上就是一个用于字符串快速检索的多叉树,树上每个节点都包含多字符指针。将从根节点到某一节点路径上经过的字符连接起来,就是该节点对应的字符串。 @@ -30,7 +30,7 @@ 上面说到字典树是一棵多叉树,这个 **「多叉」** 的意思是一个节点可以有多个子节点。而多叉的实现方式可以使用数组实现,也可以使用哈希表实现。接下来我们来介绍一下这两种节点结构。 -- 如果字符串所涉及的字符集合只包含小写英文字母的话,我们可以使用一个长度为 `26` 的数组来表示当前节点的多个子节点,如下面代码所示。 +- 如果字符串所涉及的字符集合只包含小写英文字母的话,我们可以使用一个长度为 $26$ 的数组来表示当前节点的多个子节点,如下面代码所示。 ```python class Node: # 字符节点 @@ -39,9 +39,9 @@ class Node: # 字符节点 self.isEnd = False # isEnd 用于标记单词结束 ``` -代码中,`self.children` 使用数组实现,表示该节点的所有子节点。`isEnd` 则用于标记单词是否结束。 +代码中,$self.children$ 使用数组实现,表示该节点的所有子节点。$isEnd$ 则用于标记单词是否结束。 -这样,如果我们在插入单词时,需要先将单词中的字符转换为数字,再创建对应的字符节点,并将其映射到长度为 `26` 数组中。 +这样,如果我们在插入单词时,需要先将单词中的字符转换为数字,再创建对应的字符节点,并将其映射到长度为 $26$ 数组中。 - 如果所涉及的字符集合不仅包含小写字母,还包含大写字母和其他字符,我们可以使用哈希表来表示当前节点的多个子节点,如下面代码所示。 @@ -52,7 +52,7 @@ class Node: # 字符节点 self.isEnd = False # isEnd 用于标记单词结束 ``` -代码中,`self.children` 使用哈希表实现,表示该节点的所有子节点。`isEnd` 则用于标记单词是否结束。这样,如果我们在插入单词时,直接根据单词中的字符创建对应的字符节点,并将其插入到对应的哈希表中。 +代码中,$self.children$ 使用哈希表实现,表示该节点的所有子节点。$isEnd$ 则用于标记单词是否结束。这样,如果我们在插入单词时,直接根据单词中的字符创建对应的字符节点,并将其插入到对应的哈希表中。 下面为了统一代码和编写方便,本文代码全部以哈希表的形式来表示当前节点的多个子节点。 @@ -76,9 +76,9 @@ class Trie: # 字典树 在讲解字典树的创建之前,我们先来看一下如何在字典树中插入一个单词。具体步骤如下: -- 依次遍历单词中的字符 `ch`,并从字典树的根节点的子节点位置开始进行插入操作(根节点不包含字符)。 -- 如果当前节点的子节点中,不存在键为 `ch` 的节点,则建立一个节点,并将其保存到当前节点的子节点中,即 `cur.children[ch] = Node()`,然后令当前节点指向新建立的节点,然后继续处理下一个字符。 -- 如果当前节点的子节点中,存在键为 `ch` 的节点,则直接令当前节点指向键为 `ch` 的节点,继续处理下一个字符。 +- 依次遍历单词中的字符 $ch$,并从字典树的根节点的子节点位置开始进行插入操作(根节点不包含字符)。 +- 如果当前节点的子节点中,不存在键为 $ch$ 的节点,则建立一个节点,并将其保存到当前节点的子节点中,即 `cur.children[ch] = Node()`,然后令当前节点指向新建立的节点,然后继续处理下一个字符。 +- 如果当前节点的子节点中,存在键为 $ch$ 的节点,则直接令当前节点指向键为 $ch$ 的节点,继续处理下一个字符。 - 在单词处理完成时,将当前节点标记为单词结束。 ```python @@ -112,9 +112,9 @@ for word in words: 在字典树中查找某个单词是否存在,其实和字典树的插入操作差不多。具体操作如下: - 依次遍历单词中的字符,并从字典树的根节点位置开始进行查找操作。 -- 如果当前节点的子节点中,不存在键为 `ch` 的节点,则说明不存在该单词,直接返回 `False`。 -- 如果当前节点的子节点中,存在键为 `ch` 的节点,则令当前节点指向新建立的节点,然后继续查找下一个字符。 -- 在单词处理完成时,判断当前节点是否有单词结束标记,如果有,则说明字典树中存在该单词,返回 `True`。否则,则说明字典树中不存在该单词,返回 `False`。 +- 如果当前节点的子节点中,不存在键为 $ch$ 的节点,则说明不存在该单词,直接返回 $False$。 +- 如果当前节点的子节点中,存在键为 $ch$ 的节点,则令当前节点指向新建立的节点,然后继续查找下一个字符。 +- 在单词处理完成时,判断当前节点是否有单词结束标记,如果有,则说明字典树中存在该单词,返回 $True$。否则,则说明字典树中不存在该单词,返回 $False$。 ```python # 查找字典树中是否存在一个单词 @@ -189,7 +189,7 @@ class Trie: # 字典树 ## 4. 字典树的算法分析 -假设单词的长度为 `n`,前缀的长度为 `m`,字符集合的维度为 `d`,则: +假设单词的长度为 $n$,前缀的长度为 $m$,字符集合的维度为 $d$,则: - **插入一个单词**:时间复杂度为 $O(n)$;如果使用数组,则空间复杂度为 $O(d^n)$,如果使用哈希表实现,则空间复杂度为 $O(n)$。 - **查找一个单词**:时间复杂度为 $O(n)$;空间复杂度为 $O(1)$。 From 8dbe97de1fa4d4026a6d1fb224f1af8ebe2b35fe Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:34 +0800 Subject: [PATCH 024/158] Update 01.Binary-Tree-Basic.md --- .../01.Binary-Tree/01.Binary-Tree-Basic.md | 43 ++++++++----------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md b/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md index df1710de..301ad1d3 100644 --- a/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md +++ b/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md @@ -15,7 +15,7 @@ - 包括根节点在内,每个节点可以有多个后继节点。 - 当 $n > 1$ 时,除了根节点之外的其他节点,可分为 $m(m > 0)$ 个互不相交的有限集合 $T_1, T_2, ..., T_m$,其中每一个集合本身又是一棵树,并且被称为根的 **「子树(SubTree)」**。 -如下图所示,红色节点 $A$ 是根节点,除了根节点之外,还有 `3` 棵互不相交的子树 $T_1(B, E, H, I, G)$、$T_2(C)$、$T_3(D, F, G, K)$。 +如下图所示,红色节点 $A$ 是根节点,除了根节点之外,还有 $3$ 棵互不相交的子树 $T_1(B, E, H, I, G)$、$T_2(C)$、$T_3(D, F, G, K)$。 ![](https://qcdn.itcharge.cn/images/20220218104556.png) @@ -33,8 +33,8 @@ - **树的节点**:由一个数据元素和若干个指向其子树的树的分支组成。 - **节点的度**:一个节点所含有的子树个数。 -- **叶子节点(终端节点)**:度为 $0$ 的节点。例如图中叶子节点为 `C`、`H`、`I`、`G`、`F`、`K`。 -- **分支节点(非终端节点)**:度不为 $0$ 的节点。例如图中分支节点为 `A`、`B`、`D`、`E`、`G`。 +- **叶子节点(终端节点)**:度为 $0$ 的节点。例如图中叶子节点为 $C$、$H$、$I$、$G$、$F$、$K$。 +- **分支节点(非终端节点)**:度不为 $0$ 的节点。例如图中分支节点为 $A$、$B$、$D$、$E$、$G$。 - **树的度**:树中节点的最大度数。例如图中树的度为 $3$。 #### 1.2.2 节点间关系 @@ -43,23 +43,23 @@ ![](https://qcdn.itcharge.cn/images/20220218142604.png) -- **孩子节点(子节点)**:一个节点含有的子树的根节点称为该节点的子节点。例如图中 `B` 是 `A` 的孩子节点。 -- **父亲节点(父节点)**:如果一个节点含有子节点,则这个节点称为其子节点的父节点。例如图中 `B` 是 `E` 的父亲节点。 -- **兄弟节点**:具有相同父节点的节点互称为兄弟节点。例如图中 `F`、`G` 互为兄弟节点。 +- **孩子节点(子节点)**:一个节点含有的子树的根节点称为该节点的子节点。例如图中 $B$ 是 $A$ 的孩子节点。 +- **父亲节点(父节点)**:如果一个节点含有子节点,则这个节点称为其子节点的父节点。例如图中 $B$ 是 $E$ 的父亲节点。 +- **兄弟节点**:具有相同父节点的节点互称为兄弟节点。例如图中 $F$、$G$ 互为兄弟节点。 #### 1.2.3 树的其他术语 -**「节点的层次」** 是从根节点开始定义,将根节点作为第 1 层,根的孩子节点作为第 2 层,以此类推,如果某个节点在第 `i` 层,则其孩子节点在第 `i + 1` 层。而父亲节点在同一层的节点互为 **「堂兄弟节点」**。树中所有节点最大的层数称为 **「树的深度」** 或 **「树的高度」**。树中,两个节点之间所经过节点序列称为 **「路径」**,两个节点之间路径上经过的边数称为 **「路径长度」**。 +**「节点的层次」** 是从根节点开始定义,将根节点作为第 1 层,根的孩子节点作为第 2 层,以此类推,如果某个节点在第 $i$ 层,则其孩子节点在第 $i + 1$ 层。而父亲节点在同一层的节点互为 **「堂兄弟节点」**。树中所有节点最大的层数称为 **「树的深度」** 或 **「树的高度」**。树中,两个节点之间所经过节点序列称为 **「路径」**,两个节点之间路径上经过的边数称为 **「路径长度」**。 -![](https://qcdn.itcharge.cn/images/20220218144813.png) +![树的其他术语](https://qcdn.itcharge.cn/images/20231225174453.png) - **节点的层次**:从根节点开始定义,根为第 $1$ 层,根的子节点为第 $2$ 层,以此类推。 - **树的深度(高度)**:所有节点中最大的层数。例如图中树的深度为 $4$。 -- **堂兄弟节点**:父节点在同一层的节点互为堂兄弟。例如图中 `G`、`K` 互为堂兄弟节点。 -- **路径**:树中两个节点之间所经过的节点序列。例如图中 `E` 到 `G` 的路径为 `E - B - A - D - G`。 -- **路径长度**:两个节点之间路径上经过的边数。例如图中 `E` 到 `G` 的路径长度为 $4$。 -- **节点的祖先**:从该节点到根节点所经过的所有节点,被称为该节点的祖先。例如图中 `H` 的祖先为 `E`、`B`、`A`。 -- **节点的子孙**:节点的子树中所有节点被称为该节点的子孙。例如图中 `D` 的子孙为 `F`、`G`、`K`。 +- **堂兄弟节点**:父节点在同一层的节点互为堂兄弟。例如图中 $J$、$K$ 互为堂兄弟节点。 +- **路径**:树中两个节点之间所经过的节点序列。例如图中 $E$ 到 $G$ 的路径为 $E - B - A - D - G$。 +- **路径长度**:两个节点之间路径上经过的边数。例如图中 $E$ 到 $G$ 的路径长度为 $4$。 +- **节点的祖先**:从该节点到根节点所经过的所有节点,被称为该节点的祖先。例如图中 $H$ 的祖先为 $E$、$B$、$A$。 +- **节点的子孙**:节点的子树中所有节点被称为该节点的子孙。例如图中 $D$ 的子孙为 $F$、$G$、$K$。 ### 1.3 树的分类 @@ -74,7 +74,7 @@ ### 2.1 二叉树的定义 -> **二叉树(Binary Tree)**:树中各个节点的度不大于 `2` 个的有序树,称为二叉树。通常树中的分支节点被称为 **「左子树」** 或 **「右子树」**。二叉树的分支具有左右次序,不能随意互换位置。 +> **二叉树(Binary Tree)**:树中各个节点的度不大于 $2$ 个的有序树,称为二叉树。通常树中的分支节点被称为 **「左子树」** 或 **「右子树」**。二叉树的分支具有左右次序,不能随意互换位置。 下图就是一棵二叉树。 @@ -105,7 +105,7 @@ - 非叶子节点的度一定为 $2$。 - 在同等深度的二叉树中,满二叉树的节点个数最多,叶子节点个数最多。 -如果我们对满二叉树的节点进行编号,根结点编号为 $1$,然后按照层次依次向下,每一层从左至右的顺序进行编号。则深度为 $k$ 的满二叉树最后一个节点的编号为 $2^k - 1$。 +如果我们对满二叉树的节点进行编号,根节点编号为 $1$,然后按照层次依次向下,每一层从左至右的顺序进行编号。则深度为 $k$ 的满二叉树最后一个节点的编号为 $2^k - 1$。 我们可以来看几个例子。 @@ -120,7 +120,7 @@ - 叶子节点只能出现在最下面两层。 - 最下层的叶子节点一定集中在该层最左边的位置上。 - 倒数第二层如果有叶子节点,则该层的叶子节点一定集中在右边的位置上。 -- 如果节点的度为 `1`,则该节点只偶遇左孩子节点,即不存在只有右子树的情况。 +- 如果节点的度为 $1$,则该节点只偶遇左孩子节点,即不存在只有右子树的情况。 - 同等节点数的二叉树中,完全二叉树的深度最小。 完全二叉树也可以使用类似满二叉树的节点编号的方式来定义。即从根节点编号为 $1$ 开始,按照层次从上至下,每一层从左至右进行编号。对于深度为 $i$ 且有 $n$ 个节点的二叉树,当且仅当每一个节点都与深度为 $k$ 的满二叉树中编号从 $1$ 至 $n$ 的节点意义对应时,该二叉树为完全二叉树。 @@ -172,13 +172,13 @@ 从图中我们也可以看出节点之间的逻辑关系。 - 如果某二叉树节点(非叶子节点)的下标为 $i$,那么其左孩子节点下标为 $2 * i + 1$,右孩子节点下标为 $2 * i + 2$。 -- 如果某二叉树节点(非根结点)的下标为 $i$,那么其根节点下标为 $(i - 1) // 2$。$//$ 表示整除。 +- 如果某二叉树节点(非根节点)的下标为 $i$,那么其根节点下标为 $(i - 1) // 2$。$//$ 表示整除。 对于完全二叉树(尤其是满二叉树)来说,采用顺序存储结构比较合适,它能充分利用存储空间;而对于一般二叉树,如果需要设置很多的「空节点」,则采用顺序存储结构就会浪费很多存储空间。并且,由于顺序存储结构固有的一些缺陷,会使得二叉树的插入、删除等操作不方便,效率也比较低。对于二叉树来说,当树的形态和大小经常发生动态变化时,更适合采用链式存储结构。 #### 2.3.2 二叉树的链式存储结构 -二叉树采用链式存储结构时,每个链节点包含一个用于数据域 `val`,存储节点信息;还包含两个指针域 `left` 和 `right`,分别指向左右两个孩子节点,当左孩子或者右孩子不存在时,相应指针域值为空。二叉链节点结构如下图所示。 +二叉树采用链式存储结构时,每个链节点包含一个用于数据域 $val$,存储节点信息;还包含两个指针域 $left$ 和 $right$,分别指向左右两个孩子节点,当左孩子或者右孩子不存在时,相应指针域值为空。二叉链节点结构如下图所示。 ![](https://qcdn.itcharge.cn/images/20220221151412.png) @@ -192,7 +192,7 @@ class TreeNode: self.right = right ``` -下面我们将值为 `1、2、3、4、5、6、7` 的二叉树使用链式存储结构进行存储,即为下图所示。 +下面我们将值为 $1、2、3、4、5、6、7$ 的二叉树使用链式存储结构进行存储,即为下图所示。 ![](https://qcdn.itcharge.cn/images/20220221153539.png) @@ -205,8 +205,3 @@ class TreeNode: - 【书籍】算法训练营 陈小玉 著 - 【博文】[二叉树理论基础 - 代码随想录](https://programmercarl.com/二叉树理论基础.html) - 【博文】[二叉树基础 - 袁厨的算法小屋](https://github.com/chefyuan/algorithm-base/blob/main/animation-simulation/二叉树/二叉树基础.md) - - - - - From 298bb1dfc10416439823f5a5801aadf910a6b29f Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:36 +0800 Subject: [PATCH 025/158] Update 02.Binary-Tree-Traverse.md --- .../01.Binary-Tree/02.Binary-Tree-Traverse.md | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md b/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md index 2917f01d..7e6d3c0b 100644 --- a/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md +++ b/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md @@ -4,9 +4,9 @@ 在二叉树的一些实际问题中,经常需要按照一定顺序对二叉树中每个节点逐个进行访问一次,用以查找具有某一特点的节点或者全部节点,然后对这些满足要求的节点进行处理。这里所说的「访问」就是指对该节点进行某种操作,例如:依次输出节点的数据信息、统计满足某条件的节点总数等等。 -回顾二叉树的递归定义可以知道,二叉树是由根节点和左子树、右子树构成的。因此,如果能依次遍历这 `3` 个部分,就可以遍历整个二叉树。 +回顾二叉树的递归定义可以知道,二叉树是由根节点和左子树、右子树构成的。因此,如果能依次遍历这 $3$ 个部分,就可以遍历整个二叉树。 -如果利用深度优先搜索的方式,并且根据访问顺序次序的不同,我们可以分为 `6` 种遍历方式,而如果限制先左子树后右子树的遍历顺序,则总共有 `3` 种遍历方式:分别为 **「二叉树的前序遍历」**、**「二叉树的中序遍历」** 和 **「二叉树的后续遍历」**。 +如果利用深度优先搜索的方式,并且根据访问顺序次序的不同,我们可以分为 $6$ 种遍历方式,而如果限制先左子树后右子树的遍历顺序,则总共有 $3$ 种遍历方式:分别为 **「二叉树的前序遍历」**、**「二叉树的中序遍历」** 和 **「二叉树的后续遍历」**。 而如果使用广度优先搜索的方式,则可以按照层序方式(按照层次从上至下,每一层从左至右)对二叉树进行遍历,这种方式叫做 **「二叉树的层序遍历」**。 @@ -22,7 +22,7 @@ 从二叉树的前序遍历规则可以看出:前序遍历过程是一个递归过程。在遍历任何一棵子树时仍然是按照先访问根节点,然后遍历子树根节点的左子树,最后再遍历子树根节点的右子树的顺序进行遍历。 -如下图所示,该二叉树的前序遍历顺序为:`A - B - D - H - I - E - C - F - J - G - K`。 +如下图所示,该二叉树的前序遍历顺序为:$A - B - D - H - I - E - C - F - J - G - K$。 ![](https://qcdn.itcharge.cn/images/20220222165249.png) @@ -55,7 +55,7 @@ class Solution: ### 2.2 二叉树的前序遍历显式栈实现 -二叉树的前序遍历递归实现的过程,实际上就是调用系统栈的过程。我们也可以使用一个显式栈 `stack` 来模拟递归的过程。 +二叉树的前序遍历递归实现的过程,实际上就是调用系统栈的过程。我们也可以使用一个显式栈 $stack$ 来模拟递归的过程。 前序遍历的顺序为:根节点 - 左子树 - 右子树,而根据栈的「先入后出」特点,所以入栈的顺序应该为:先放入右子树,再放入左子树。这样可以保证最终遍历顺序为前序遍历顺序。 @@ -64,9 +64,9 @@ class Solution: 1. 判断二叉树是否为空,为空则直接返回。 2. 初始化维护一个栈,将根节点入栈。 3. 当栈不为空时: - 1. 弹出栈顶元素 `node`,并访问该元素。 - 2. 如果 `node` 的右子树不为空,则将 `node` 的右子树入栈。 - 3. 如果 `node` 的左子树不为空,则将 `node` 的左子树入栈。 + 1. 弹出栈顶元素 $node$,并访问该元素。 + 2. 如果 $node$ 的右子树不为空,则将 $node$ 的右子树入栈。 + 3. 如果 $node$ 的左子树不为空,则将 $node$ 的左子树入栈。 二叉树的前序遍历显式栈实现代码如下: @@ -102,7 +102,7 @@ class Solution: 从二叉树的中序遍历规则可以看出:中序遍历过程也是一个递归过程。在遍历任何一棵子树时仍然是按照先遍历子树根节点的左子树,然后访问根节点,最后再遍历子树根节点的右子树的顺序进行遍历。 -如下图所示,该二叉树的中序遍历顺序为:`H - D - I - B - E - A - F - J - C - K - G`。 +如下图所示,该二叉树的中序遍历顺序为:$H - D - I - B - E - A - F - J - C - K - G$。 ![](https://qcdn.itcharge.cn/images/20220222165231.png) @@ -134,7 +134,7 @@ class Solution: ### 3.2 二叉树的中序遍历显式栈实现 -我们可以使用一个显式栈 `stack` 来模拟二叉树的中序遍历递归的过程。 +我们可以使用一个显式栈 $stack$ 来模拟二叉树的中序遍历递归的过程。 与前序遍历不同,访问根节点要放在左子树遍历完之后。因此我们需要保证:**在左子树访问之前,当前节点不能提前出栈**。 @@ -148,7 +148,7 @@ class Solution: 2. 初始化维护一个空栈。 3. 当根节点或者栈不为空时: 1. 如果当前节点不为空,则循环遍历左子树,并不断将当前子树的根节点入栈。 - 1. 如果当前节点为空,说明当前节点无左子树,则弹出栈顶元素 `node`,并访问该元素,然后尝试访问该节点的右子树。 + 1. 如果当前节点为空,说明当前节点无左子树,则弹出栈顶元素 $node$,并访问该元素,然后尝试访问该节点的右子树。 二叉树的中序遍历显式栈实现代码如下: @@ -184,7 +184,7 @@ class Solution: 从二叉树的后序遍历规则可以看出:后序遍历过程也是一个递归过程。在遍历任何一棵子树时仍然是按照先遍历子树根节点的左子树,然后遍历子树根节点的右子树,最后再访问根节点的顺序进行遍历。 -如下图所示,该二叉树的后序遍历顺序为:`H - I - D - E - B - J - F - K - G - C - A`。 +如下图所示,该二叉树的后序遍历顺序为:$H - I - D - E - B - J - F - K - G - C - A$。 ![](https://qcdn.itcharge.cn/images/20220222165218.png) @@ -216,7 +216,7 @@ class Solution: ### 4.2 二叉树的后序遍历显式栈实现 -我们可以使用一个显式栈 `stack` 来模拟二叉树的后序遍历递归的过程。 +我们可以使用一个显式栈 $stack$ 来模拟二叉树的后序遍历递归的过程。 与前序、中序遍历不同,在后序遍历中,根节点的访问要放在左右子树访问之后。因此,我们要保证:**在左右孩子节点访问结束之前,当前节点不能提前出栈**。 @@ -225,11 +225,11 @@ class Solution: 二叉树的后序遍历显式栈实现步骤如下: 1. 判断二叉树是否为空,为空则直接返回。 -2. 初始化维护一个空栈,使用 `prev` 保存前一个访问的节点,用于确定当前节点的右子树是否访问完毕。 +2. 初始化维护一个空栈,使用 $prev$ 保存前一个访问的节点,用于确定当前节点的右子树是否访问完毕。 3. 当根节点或者栈不为空时,从当前节点开始: 1. 如果当前节点有左子树,则不断遍历左子树,并将当前根节点压入栈中。 - 2. 如果当前节点无左子树,则弹出栈顶元素 `node`。 - 2. 如果栈顶元素 `node` 无右子树(即 `not node.right`)或者右子树已经访问完毕(即 `node.right == prev`),则访问该元素,然后记录前一节点,并将当前节点标记为空节点。 + 2. 如果当前节点无左子树,则弹出栈顶元素 $node$。 + 2. 如果栈顶元素 $node$ 无右子树(即 `not node.right`)或者右子树已经访问完毕(即 `node.right == prev`),则访问该元素,然后记录前一节点,并将当前节点标记为空节点。 2. 如果栈顶元素有右子树,则将栈顶元素重新压入栈中,继续访问栈顶元素的右子树。 ```python @@ -264,14 +264,14 @@ class Solution: > > - 如果二叉树为空,则返回。 > - 如果二叉树不为空,则: -> 1. 先依次访问二叉树第 `1` 层的节点。 -> 2. 然后依次访问二叉树第 `2` 层的节点。 +> 1. 先依次访问二叉树第 $1$ 层的节点。 +> 2. 然后依次访问二叉树第 $2$ 层的节点。 > 3. …… > 4. 依次下去,最后依次访问二叉树最下面一层的节点。 -从二叉树的层序遍历规则可以看出:遍历过程是一个广度优先搜索过程。在遍历的时候是按照第 `1` 层、第 `2` 层、…… 最后一层依次遍历的,而同一层节点则是按照从左至右的顺序依次访问的。 +从二叉树的层序遍历规则可以看出:遍历过程是一个广度优先搜索过程。在遍历的时候是按照第 $1$ 层、第 $2$ 层、…… 最后一层依次遍历的,而同一层节点则是按照从左至右的顺序依次访问的。 -如下图所示,该二叉树的后序遍历顺序为:`A - B - C - D - E - F - G - H - I - J - K`。 +如下图所示,该二叉树的后序遍历顺序为:$A - B - C - D - E - F - G - H - I - J - K$。 ![](https://qcdn.itcharge.cn/images/20220222165158.png) From 5b19e50afcc1bee6fa654d79ed92a78f23577b24 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:38 +0800 Subject: [PATCH 026/158] Update 04.Binary-Tree-Reduction.md --- .../01.Binary-Tree/04.Binary-Tree-Reduction.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Contents/07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md b/Contents/07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md index 36f8b1df..ebe67db4 100644 --- a/Contents/07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md +++ b/Contents/07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md @@ -25,7 +25,7 @@ 最后我们来看二叉树的中序遍历,中序遍历是先遍历根节点的左子树,然后访问根节点,最后遍历根节点的右子树。这样,根节点在中序遍历序列中必然将中序序列分割成前后两个子序列,其中前一个子序列是根节点的左子树的中序遍历序列,后一个子序列是根节点的右子树的中序遍历序列。当然单凭中序遍历序列也是无法恢复一棵二叉树的。 -但是如果我们可以将「前序遍历序列」和「中序遍历序列」相结合,那么我们就可以通过上面中序遍历序列中的两个子序列,在前序遍历序列中找到对应的左子序列和右子序列。在前序遍历序列中,左子序列的第 `1` 个节点是左子树的根节点,右子序列的第 `1` 个节点是右子树的根节点。这样,就确定了二叉树的 `3` 个节点。 +但是如果我们可以将「前序遍历序列」和「中序遍历序列」相结合,那么我们就可以通过上面中序遍历序列中的两个子序列,在前序遍历序列中找到对应的左子序列和右子序列。在前序遍历序列中,左子序列的第 $1$ 个节点是左子树的根节点,右子序列的第 $1$ 个节点是右子树的根节点。这样,就确定了二叉树的 $3$ 个节点。 同时,左子树和右子树的根节点在中序遍历序列中又可以将左子序列和右子序列分别划分成两个子序列。如此递归下去,当确定了前序遍历序列中的所有节点时,我们就得到了一棵二叉树。 @@ -57,8 +57,8 @@ 此时构建当前节点,并递归建立左右子树,在左右子树对应位置继续递归遍历进行上述步骤,直到节点为空,具体操作步骤如下: -1. 从前序遍历顺序中得到当前根节点的位置在 `postorder[0]`。 -2. 通过在中序遍历中查找上一步根节点对应的位置 `inorder[k]`,从而将二叉树的左右子树分隔开,并得到左右子树节点的个数。 +1. 从前序遍历顺序中得到当前根节点的位置在 $postorder[0]$。 +2. 通过在中序遍历中查找上一步根节点对应的位置 $inorder[k]$,从而将二叉树的左右子树分隔开,并得到左右子树节点的个数。 3. 从上一步得到的左右子树个数将前序遍历结果中的左右子树分开。 4. 构建当前节点,并递归建立左右子树,在左右子树对应位置继续递归遍历并执行上述三步,直到节点为空。 @@ -94,8 +94,8 @@ class Solution: 此时构建当前节点,并递归建立左右子树,在左右子树对应位置继续递归遍历进行上述步骤,直到节点为空,具体操作步骤如下: -1. 从后序遍历顺序中当前根节点的位置在 `postorder[n-1]`。 -2. 通过在中序遍历中查找上一步根节点对应的位置 `inorder[k]`,从而将二叉树的左右子树分隔开,并得到左右子树节点的个数。 +1. 从后序遍历顺序中当前根节点的位置在 $postorder[n-1]$。 +2. 通过在中序遍历中查找上一步根节点对应的位置 $inorder[k]$,从而将二叉树的左右子树分隔开,并得到左右子树节点的个数。 3. 从上一步得到的左右子树个数将后序遍历结果中的左右子树分开。 4. 构建当前节点,并递归建立左右子树,在左右子树对应位置继续递归遍历并执行上述三步,直到节点为空。 @@ -129,11 +129,11 @@ class Solution: ### 4.1 从前序与后序遍历序列构造二叉树实现过程 -我们可以默认指定前序遍历序列的第 `2` 个值为左子树的根节点,由此递归划分左右子序列。具体操作步骤如下: +我们可以默认指定前序遍历序列的第 $2$ 个值为左子树的根节点,由此递归划分左右子序列。具体操作步骤如下: -1. 从前序遍历序列中可知当前根节点的位置在 `preorder[0]`。 +1. 从前序遍历序列中可知当前根节点的位置在 $preorder[0]$。 -2. 前序遍历序列的第 `2` 个值为左子树的根节点,即 `preorder[1]`。通过在后序遍历中查找上一步根节点对应的位置 `postorder[k]`(该节点右侧为右子树序列),从而将二叉树的左右子树分隔开,并得到左右子树节点的个数。 +2. 前序遍历序列的第 $2$ 个值为左子树的根节点,即 $preorder[1]$。通过在后序遍历中查找上一步根节点对应的位置 $postorder[k]$(该节点右侧为右子树序列),从而将二叉树的左右子树分隔开,并得到左右子树节点的个数。 3. 从上一步得到的左右子树个数将后序遍历结果中的左右子树分开。 From 9c93e5c1522a4638a36391ce846132f3984a46f8 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:39 +0800 Subject: [PATCH 027/158] Update 05.Graph-Topological-Sorting.md --- .../08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md b/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md index 7248f982..cc4ac7bb 100644 --- a/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md +++ b/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md @@ -1,6 +1,6 @@ ## 1. 拓扑排序简介 -> **拓扑排序(**Topological Sorting**)**:一种对有向无环图(DAG)的所有顶点进行线性排序的方法,使得图中任意一点 $u$ 和 $v$,如果存在有向边 $$,则 $u$ 必须在 $v$ 之前出现。对有向图进行拓扑排序产生的线性序列称为满足拓扑次序的序列,简称拓扑排序。 +> **拓扑排序(Topological Sorting)**:一种对有向无环图(DAG)的所有顶点进行线性排序的方法,使得图中任意一点 $u$ 和 $v$,如果存在有向边 $$,则 $u$ 必须在 $v$ 之前出现。对有向图进行拓扑排序产生的线性序列称为满足拓扑次序的序列,简称拓扑排序。 图的拓扑排序是针对有向无环图(DAG)来说的,无向图和有向有环图没有拓扑排序,或者说不存在拓扑排序。 From 7b76732bf413bfcc9a380c2bd571f2dbc57d5194 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:41 +0800 Subject: [PATCH 028/158] Update 01.Graph-Minimum-Spanning-Tree.md --- .../01.Graph-Minimum-Spanning-Tree.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md b/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md index 10cf4435..d81c9a3d 100644 --- a/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md +++ b/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md @@ -13,12 +13,20 @@ 3. **无环图**:生成树一个无环图。 4. **边数最少**:在包含所有顶点的情况下,生成树的边数最少,其边数为顶点数减 $1$。 +![](https://qcdn.itcharge.cn/images/20231211100145.png) + +如上图所示,左侧图 $G$ 是包含 $v_1…v_6$ 共 $6$ 个顶点 $7$ 条边在内的有权图。右侧是图 $G$ 的两个生成树,两者都包含了 $6$ 个顶点 $5$ 条边。 + > **最小生成树(Minimum Spanning Tree)**:无向连通图 G 的所有生成树中,边的权值之和最小的生成树,被称为最小生成树。 最小生成树除了包含生成树的特点之外,还具有一个特点。 1. **边的权值之和最小**:在包含所有顶点的情况下,最小生成树的边的权重之和是所有可能的生成树中最小的。 +![](https://qcdn.itcharge.cn/images/20231211101937.png) + +如上图所示,左侧图 $G$ 是包含 $v_1…v_6$ 共 $6$ 个顶点 $7$ 条边在内的有权图。右侧是图 $G$ 的最小生成树,包含了 $6$ 个顶点 $5$ 条边,并且所有边的权值和最小。 + 为了找到无向图的最小生成树,常用的算法有「Prim 算法」和「Kruskal 算法」。 - **Prim 算法**:从一个起始顶点出发,逐步选择与已经构建的树连接的最短边,直到包含所有顶点为止。 @@ -34,9 +42,9 @@ ### 2.2 Prim 算法的实现步骤 -1. 维护两个集合,一个是已经加入到最小生成树的顶点集合 $MST$,另一个是还未加入生成树的顶点集合。 -2. 选择起始顶点,将其加入到最小生成树的顶点集合 $MST$ 中。 -3. 从 $MST$ 的顶点集合中选择一个顶点,然后找到连接这个顶点与 $MST$ 之间的边中权重最小的边。 +1. 将图 $G$ 中所有的顶点 $V$ 分为两个顶点集合 $V_A$ 和 $V_B$。其中 $V_A$ 为已经加入到最小生成树的顶点集合,$V_B$ 是还未加入生成树的顶点集合。 +2. 选择起始顶点 $start$,将其加入到最小生成树的顶点集合 $V_A$ 中。 +3. 从 $V_A$ 的顶点集合中选择一个顶点 $u$,然后找到连接顶点 $u$ 与 $V_B$ 之间的边中权重最小的边。 4. 让上一步中找到的顶点和边加入到 $MST$ 中,更新 $MST$ 的顶点集合和边集合。 5. 重复第 $3 \sim 4$ 步,直到 $MST$ 的顶点集合中包含了图中的所有顶点为止。 From 0d7ec4e3dd2b38977cd8cfe9310dfbd224f8de9a Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:42 +0800 Subject: [PATCH 029/158] Update 01.Memoization.md --- .../02.Memoization/01.Memoization.md | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md b/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md index 2791c496..989c46f3 100644 --- a/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md +++ b/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md @@ -123,11 +123,11 @@ class Solution: 1. 定义从位置 $0$、和为 $0$ 开始,到达数组尾部位置为止,和为 $target$ 的方案数为 `dfs(0, 0)`。 2. 下面从位置 $0$、和为 $0$ 开始,以深度优先搜索遍历每个位置。 3. 如果当前位置 $i$ 到达最后一个位置 $size$: - 1. 如果和 `cur_sum` 等于目标和 $target$,则返回方案数 $1$。 - 2. 如果和 `cur_sum` 不等于目标和 $target$,则返回方案数 $0$。 -4. 递归搜索 $i + 1$ 位置,和为 `cur_sum - nums[i]` 的方案数。 -5. 递归搜索 $i + 1$ 位置,和为 `cur_sum + nums[i]` 的方案数。 -6. 将 4 ~ 5 两个方案数加起来就是当前位置 $i$、和为 `cur_sum` 的方案数,返回该方案数。 + 1. 如果和 $cur\underline{}sum$ 等于目标和 $target$,则返回方案数 $1$。 + 2. 如果和 $cur\underline{}sum$ 不等于目标和 $target$,则返回方案数 $0$。 +4. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum - nums[i]$ 的方案数。 +5. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum + nums[i]$ 的方案数。 +6. 将 4 ~ 5 两个方案数加起来就是当前位置 $i$、和为 $cur\underline{}sum$ 的方案数,返回该方案数。 7. 最终方案数为 `dfs(0, 0)`,将其作为答案返回即可。 ##### 思路 1:代码 @@ -158,18 +158,18 @@ class Solution: 在思路 1 中我们单独使用深度优先搜索对每位数字进行 `+` 或者 `-` 的方法超时了。所以我们考虑使用记忆化搜索的方式,避免进行重复搜索。 -这里我们使用哈希表 $table$ 记录遍历过的位置 $i$ 及所得到的的当前和`cur_sum` 下的方案数,来避免重复搜索。具体步骤如下: +这里我们使用哈希表 $table$ 记录遍历过的位置 $i$ 及所得到的的当前和$cur\underline{}sum$ 下的方案数,来避免重复搜索。具体步骤如下: 1. 定义从位置 $0$、和为 $0$ 开始,到达数组尾部位置为止,和为 $target$ 的方案数为 `dfs(0, 0)`。 2. 下面从位置 $0$、和为 $0$ 开始,以深度优先搜索遍历每个位置。 3. 如果当前位置 $i$ 遍历完所有位置: - 1. 如果和 `cur_sum` 等于目标和 $target$,则返回方案数 $1$。 - 2. 如果和 `cur_sum` 不等于目标和 $target$,则返回方案数 $0$。 -4. 如果当前位置 $i$、和为 `cur_sum` 之前记录过(即使用 $table$ 记录过对应方案数),则返回该方案数。 -5. 如果当前位置 $i$、和为 `cur_sum` 之前没有记录过,则: - 1. 递归搜索 $i + 1$ 位置,和为 `cur_sum - nums[i]` 的方案数。 - 2. 递归搜索 $i + 1$ 位置,和为 `cur_sum + nums[i]` 的方案数。 - 3. 将上述两个方案数加起来就是当前位置 $i$、和为 `cur_sum` 的方案数,将其记录到哈希表 $table$ 中,并返回该方案数。 + 1. 如果和 $cur\underline{}sum$ 等于目标和 $target$,则返回方案数 $1$。 + 2. 如果和 $cur\underline{}sum$ 不等于目标和 $target$,则返回方案数 $0$。 +4. 如果当前位置 $i$、和为 $cur\underline{}sum$ 之前记录过(即使用 $table$ 记录过对应方案数),则返回该方案数。 +5. 如果当前位置 $i$、和为 $cur\underline{}sum$ 之前没有记录过,则: + 1. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum - nums[i]$ 的方案数。 + 2. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum + nums[i]$ 的方案数。 + 3. 将上述两个方案数加起来就是当前位置 $i$、和为 $cur\underline{}sum$ 的方案数,将其记录到哈希表 $table$ 中,并返回该方案数。 6. 最终方案数为 `dfs(0, 0)`,将其作为答案返回即可。 ##### 思路 2:代码 From 0da5a428ed7c47503206da0375077ed65286a11f Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:44 +0800 Subject: [PATCH 030/158] Update 02.Linear-DP-02.md --- Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md b/Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md index ea89efb2..209222d9 100644 --- a/Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md +++ b/Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md @@ -26,7 +26,7 @@ - 示例 1: -![](https://assets.leetcode.com/uploads/2020/11/05/minpath.jpg) +![](https://assets.leetcode.com/uploads/2020/11/05/minpath.jpg) ```python 输入:grid = [[1,3,1],[1,5,1],[4,2,1]] From 1ccbd8c4f0d13dadf5af03337607bbf9f0e80c6b Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:46 +0800 Subject: [PATCH 031/158] Update 02.Knapsack-Problem-02.md --- .../04.Knapsack-Problem/02.Knapsack-Problem-02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md index 625a0f97..45b078cf 100644 --- a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md +++ b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md @@ -242,4 +242,4 @@ class Solution: - 【文章】[背包 DP - OI Wiki](https://oi-wiki.org/dp/knapsack/) - 【文章】[背包问题 第四讲 - 宫水三叶的刷题日记](https://juejin.cn/post/7003243733604892685) - 【题解】[『 套用完全背包模板 』详解完全背包(含数学推导) - 完全平方数 - 力扣](https://leetcode.cn/problems/perfect-squares/solution/by-flix-sve5/) -- 【题解】[『 一文搞懂完全背包问题 』从0-1背包到完全背包,逐层深入+推导 - 零钱兑换 - 力扣](https://leetcode.cn/problems/coin-change/solution/by-flix-su7s/) +- 【题解】[『 一文搞懂完全背包问题 』从0-1背包到完全背包,逐层深入+推导 - 零钱兑换 - 力扣](https://leetcode.cn/problems/coin-change/solution/by-flix-su7s/) \ No newline at end of file From 020ff36785a49c80b37495375d77260192d7415d Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:49 +0800 Subject: [PATCH 032/158] Update 04.Knapsack-Problem-04.md --- .../04.Knapsack-Problem/04.Knapsack-Problem-04.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md index 1647d715..778b9228 100644 --- a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md +++ b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md @@ -1,5 +1,3 @@ - - ## 5. 混合背包问题 > **混合背包问题**:有 $n$ 种物品和一个最多能装重量为 $W$ 的背包,第 $i$ 种物品的重量为 $weight[i]$,价值为 $value[i]$,件数为 $count[i]$。其中: @@ -329,4 +327,4 @@ class Solution: - 【资料】[背包九讲 - 崔添翼](https://github.com/tianyicui/pack) - 【文章】[背包 DP - OI Wiki](https://oi-wiki.org/dp/knapsack/) - 【文章】[【动态规划/背包问题】分组背包问题](https://mp.weixin.qq.com/s?__biz=MzU4NDE3MTEyMA==&mid=2247487504&idx=1&sn=9ac523ec0ac14c8634a229f8c3f919d7&chksm=fd9cbb0fcaeb32196b80a40e4408f6a7e2651167e0b9e31aa6d7c6109fbc2117340a59db12a1&token=1936267333&lang=zh_CN&scene=21#wechat_redirect) -- 【文章】[【动态规划/背包问题】背包问题第一阶段最终章:混合背包问题](https://mp.weixin.qq.com/s?__biz=MzU4NDE3MTEyMA==&mid=2247487034&idx=1&sn=eaa05b76387d34aa77f7f14f35fa78a4&chksm=fd9ca525caeb2c33095d285222dcee0dd072465bf7288bda0aab39e90a04bb7b1af018b89fd4&token=1872331648&lang=zh_CN&scene=21#wechat_redirect) +- 【文章】[【动态规划/背包问题】背包问题第一阶段最终章:混合背包问题](https://mp.weixin.qq.com/s?__biz=MzU4NDE3MTEyMA==&mid=2247487034&idx=1&sn=eaa05b76387d34aa77f7f14f35fa78a4&chksm=fd9ca525caeb2c33095d285222dcee0dd072465bf7288bda0aab39e90a04bb7b1af018b89fd4&token=1872331648&lang=zh_CN&scene=21#wechat_redirect) \ No newline at end of file From c44bab0340b8cbfa2ae22e919d755e0639881e08 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:53 +0800 Subject: [PATCH 033/158] Update 05.Knapsack-Problem-05.md --- .../04.Knapsack-Problem/05.Knapsack-Problem-05.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md index e04dea6a..37e198e1 100644 --- a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md +++ b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md @@ -192,7 +192,7 @@ class Solution: > **0-1 背包问题求具体方案**:有 $n$ 种物品和一个最多能装重量为 $W$ 的背包,第 $i$ 种物品的重量为 $weight[i]$,价值为 $value[i]$,每件物品有且只有 $1$ 件。请问将哪些物品装入背包,可使这些物品的总重量不超过背包载重上限,且价值总和最大? -#### 4:动态规划 + 路径记录 +#### 思路 4:动态规划 + 路径记录 0-1 背包问题的状态转移方程为:$dp[i][w] = max \lbrace dp[i - 1][w], \quad dp[i - 1][w - weight[i - 1]] + value[i - 1] \rbrace$ From 8c24ec2348570a063443e59612a3c4e98f46d415 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:56 +0800 Subject: [PATCH 034/158] Update 01.Tree-DP.md --- Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md b/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md index bfaa0b36..1302e6ad 100644 --- a/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md +++ b/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md @@ -265,7 +265,7 @@ class Solution: **说明**: - **树的高度**:指根节点和叶子节点之间最长向下路径上边的数量。 -- $1 \le n \le 2 * 10^4$。 +- $1 \le n \le 2 \times 10^4$。 - $edges.length == n - 1$。 - $0 \le ai, bi < n$。 - $ai \ne bi$。 From 2de0f90a3ae9dc926e31b0482668ffbdee73ff9a Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:03:59 +0800 Subject: [PATCH 035/158] Update 01.Counting-DP.md --- .../10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md b/Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md index 50744e22..98dcb5da 100644 --- a/Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md +++ b/Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md @@ -43,7 +43,7 @@ **说明**: - $1 \le m, n \le 100$。 -- 题目数据保证答案小于等于 $2 * 10^9$。 +- 题目数据保证答案小于等于 $2 \times 10^9$。 **示例**: From bba33a1784963a0fa557c4b402b43591475ca01f Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 25 Dec 2023 18:04:02 +0800 Subject: [PATCH 036/158] Update 01.Digit-DP.md --- Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md b/Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md index 0453bd72..54baf941 100644 --- a/Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md +++ b/Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md @@ -118,7 +118,7 @@ class Solution: 2. 如果遇到 $pos == len(s)$,表示到达数位末尾,此时: 1. 如果 $isNum == True$,说明当前方案符合要求,则返回方案数 $1$。 2. 如果 $isNum == False$,说明当前方案不符合要求,则返回方案数 $0$。 -3. 如果 $pos \ne len(s)$,则定义方案数 $ans$,令其等于 $0$,即:`ans = 0`。 +3. 如果 $pos \ne len(s)$,则定义方案数 $ans$,令其等于 $0$,即:$ans = 0$。 4. 如果遇到 $isNum == False$,说明之前位数没有填写数字,当前位可以跳过,这种情况下方案数等于 $pos + 1$ 位置上没有受到 $pos$ 位的约束,并且之前没有填写数字时的方案数,即:`ans = dfs(i + 1, state, False, False)`。 5. 如果 $isNum == True$,则当前位必须填写一个数字。此时: 1. 根据 $isNum$ 和 $isLimit$ 来决定填当前位数位所能选择的最小数字($minX$)和所能选择的最大数字($maxX$), @@ -223,7 +223,7 @@ class Solution: 2. 如果遇到 $pos == len(s)$,表示到达数位末尾,此时: 1. 如果 $isNum == True$,说明当前方案符合要求,则返回方案数 $1$。 2. 如果 $isNum == False$,说明当前方案不符合要求,则返回方案数 $0$。 -3. 如果 $pos \ne len(s)$,则定义方案数 $ans$,令其等于 $0$,即:`ans = 0`。 +3. 如果 $pos \ne len(s)$,则定义方案数 $ans$,令其等于 $0$,即:$ans = 0$。 4. 如果遇到 $isNum == False$,说明之前位数没有填写数字,当前位可以跳过,这种情况下方案数等于 $pos + 1$ 位置上没有受到 $pos$ 位的约束,并且之前没有填写数字时的方案数,即:`ans = dfs(i + 1, state, False, False)`。 5. 如果 $isNum == True$,则当前位必须填写一个数字。此时: 1. 根据 $isNum$ 和 $isLimit$ 来决定填当前位数位所能选择的最小数字($minX$)和所能选择的最大数字($maxX$), @@ -320,7 +320,7 @@ class Solution: 2. 初始数字 $1$ 出现的个数为 $0$。 3. 开始时受到数字 $n$ 对应最高位数位的约束。 2. 如果遇到 $pos == len(s)$,表示到达数位末尾,此时:返回数字 $1$ 出现的个数 $cnt$。 -3. 如果 $pos \ne len(s)$,则定义方案数 $ans$,令其等于 $0$,即:`ans = 0`。 +3. 如果 $pos \ne len(s)$,则定义方案数 $ans$,令其等于 $0$,即:$ans = 0$。 4. 如果遇到 $isNum == False$,说明之前位数没有填写数字,当前位可以跳过,这种情况下方案数等于 $pos + 1$ 位置上没有受到 $pos$ 位的约束,并且之前没有填写数字时的方案数,即:`ans = dfs(i + 1, state, False, False)`。 5. 如果 $isNum == True$,则当前位必须填写一个数字。此时: 1. 因为不需要考虑前导 $0$ 所以当前位数位所能选择的最小数字($minX$)为 $0$。 From f1e3e94f7623afac84e021ff4baf798c7623cbdb Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 26 Dec 2023 10:15:44 +0800 Subject: [PATCH 037/158] Update 01.Binary-Search-Tree.md --- .../01.Binary-Search-Tree.md | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md b/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md index 3aa7a3ec..8baa3d92 100644 --- a/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md +++ b/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md @@ -16,17 +16,17 @@ ## 2. 二叉搜索树的查找 -> **二叉搜索树的查找**:在二叉搜索树中查找值为 `val` 的节点。 +> **二叉搜索树的查找**:在二叉搜索树中查找值为 $val$ 的节点。 ### 2.1 二叉搜索树的查找算法步骤 按照二叉搜索树的定义,在进行元素查找时,我们只需要根据情况判断需要往左还是往右走。这样,每次根据情况判断都会缩小查找范围,从而提高查找效率。二叉树的查找步骤如下: -1. 如果二叉搜索树为空,则查找失败,结束查找,并返回空指针节点 `None`。 -2. 如果二叉搜索树不为空,则将要查找的值 `val` 与二叉搜索树根节点的值 `root.val` 进行比较: - 1. 如果 `val == root.val`,则查找成功,结束查找,返回被查找到的节点。 - 2. 如果 `val < root.val`,则递归查找左子树。 - 3. 如果 `val > root.val`,则递归查找右子树。 +1. 如果二叉搜索树为空,则查找失败,结束查找,并返回空指针节点 $None$。 +2. 如果二叉搜索树不为空,则将要查找的值 $val$ 与二叉搜索树根节点的值 $root.val$ 进行比较: + 1. 如果 $val == root.val$,则查找成功,结束查找,返回被查找到的节点。 + 2. 如果 $val < root.val$,则递归查找左子树。 + 3. 如果 $val > root.val$,则递归查找右子树。 ### 2.2 二叉搜索树的查找代码实现 @@ -59,16 +59,18 @@ class Solution: ## 3. 二叉搜索树的插入 -> **二叉搜索树的插入**:在二叉搜索树中插入一个值为 `val` 的节点(假设当前二叉搜索树中不存在值为 `val` 的节点)。 +> **二叉搜索树的插入**:在二叉搜索树中插入一个值为 $val$ 的节点(假设当前二叉搜索树中不存在值为 $val$ 的节点)。 ### 3.1 二叉搜索树的插入算法步骤 二叉搜索树的插入操作与二叉树的查找操作过程类似,具体步骤如下: -1. 如果二叉搜索树为空,则创建一个值为 `val` 的节点,并将其作为二叉搜索树的根节点。 -2. 如果二叉搜索树不为空,则将待插入的值 `val` 与二叉搜索树根节点的值 `root.val` 进行比较: - 1. 如果 `val < root.val`,则递归将值为 `val` 的节点插入到左子树中。 - 2. 如果 `val > root.val`,则递归将值为 `val` 的节点插入到右子树中。 +1. 如果二叉搜索树为空,则创建一个值为 $val$ 的节点,并将其作为二叉搜索树的根节点。 +2. 如果二叉搜索树不为空,则将待插入的值 $val$ 与二叉搜索树根节点的值 $root.val$ 进行比较: + 1. 如果 $val < root.val$,则递归将值为 $val$ 的节点插入到左子树中。 + 2. 如果 $val > root.val$,则递归将值为 $val$ 的节点插入到右子树中。 + +> **注意**:二叉搜索树不允许存在重复节点,否则将违反其定义。因此,如果带插入节点在树中已存在,则不执行插入操作,直接返回。 ### 3.2 二叉搜索树的插入代码实现 @@ -100,7 +102,7 @@ class Solution: 二叉搜索树的创建操作是从空树开始,按照给定数组元素的值,依次进行二叉搜索树的插入操作,最终得到一棵二叉搜索树。具体算法步骤如下: 1. 初始化二叉搜索树为空树。 -2. 遍历数组元素,将数组元素值 `nums[i]` 依次插入到二叉搜索树中。 +2. 遍历数组元素,将数组元素值 $nums[i]$ 依次插入到二叉搜索树中。 3. 将数组中全部元素值插入到二叉搜索树中之后,返回二叉搜索树的根节点。 ### 4.2 二叉搜索树的创建代码实现 @@ -131,7 +133,7 @@ class Solution: ## 5. 二叉搜索树的删除 -> **二叉搜索树的删除**:在二叉搜索树中删除值为 `val` 的节点。 +> **二叉搜索树的删除**:在二叉搜索树中删除值为 $val$ 的节点。 ### 5.1 二叉搜索树的删除算法步骤 @@ -141,15 +143,15 @@ class Solution: 2. 被删除节点的右子树为空。则令其左子树代替被删除节点的位置。 3. 被删除节点的左右子树均不为空,则根据二叉搜索树的中序遍历有序性,删除该节点时,可以使用其直接前驱(或直接后继)代替被删除节点的位置。 -- **直接前驱**:在中序遍历中,节点 `p` 的直接前驱为其左子树的最右侧的叶子节点。 -- **直接后继**:在中序遍历中,节点 `p` 的直接后继为其右子树的最左侧的叶子节点。 +- **直接前驱**:在中序遍历中,节点 $p$ 的直接前驱为其左子树的最右侧的叶子节点。 +- **直接后继**:在中序遍历中,节点 $p$ 的直接后继为其右子树的最左侧的叶子节点。 二叉搜索树的删除算法步骤如下: 1. 如果当前节点为空,则返回当前节点。 -2. 如果当前节点值大于 `val`,则递归去左子树中搜索并删除,此时 `root.left` 也要跟着递归更新。 -3. 如果当前节点值小于 `val`,则递归去右子树中搜索并删除,此时 `root.right` 也要跟着递归更新。 -4. 如果当前节点值等于 `val`,则该节点就是待删除节点。 +2. 如果当前节点值大于 $val$,则递归去左子树中搜索并删除,此时 $root.left$ 也要跟着递归更新。 +3. 如果当前节点值小于 $val$,则递归去右子树中搜索并删除,此时 $root.right$ 也要跟着递归更新。 +4. 如果当前节点值等于 $val$,则该节点就是待删除节点。 1. 如果当前节点的左子树为空,则删除该节点之后,则右子树代替当前节点位置,返回右子树。 2. 如果当前节点的右子树为空,则删除该节点之后,则左子树代替当前节点位置,返回左子树。 3. 如果当前节点的左右子树都有,则将左子树转移到右子树最左侧的叶子节点位置上,然后右子树代替当前节点位置。 @@ -192,4 +194,4 @@ class Solution: - 【书籍】算法训练营 陈小玉 著 - 【书籍】算法竞赛入门经典:训练指南 - 刘汝佳,陈锋 著 - 【书籍】算法竞赛进阶指南 - 李煜东 著 - +- 【博文】[7.4 二叉搜索树 - Hello 算法](https://www.hello-algo.com/chapter_tree/binary_search_tree/) From ffd2fa1d39e1afc5db015e445e1777d9a1cffd49 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 26 Dec 2023 10:15:46 +0800 Subject: [PATCH 038/158] Update 01.Union-Find.md --- .../07.Tree/05.Union-Find/01.Union-Find.md | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/Contents/07.Tree/05.Union-Find/01.Union-Find.md b/Contents/07.Tree/05.Union-Find/01.Union-Find.md index c2ddbc01..5c851f0c 100644 --- a/Contents/07.Tree/05.Union-Find/01.Union-Find.md +++ b/Contents/07.Tree/05.Union-Find/01.Union-Find.md @@ -20,13 +20,13 @@ - 并查集中的「查」是对于集合中存放的元素来说的,通常我们需要查询两个元素是否属于同一个集合。 -如果我们只是想知道一个元素是否在集合中,可以通过 `Python` 或其他语言中的 `set` 集合来解决。而如果我们想知道两个元素是否属于同一个集合,则仅用一个 `set` 集合就很难做到了。这就需要用到我们接下来要讲解的「并查集」结构。 +如果我们只是想知道一个元素是否在集合中,可以通过 Python 或其他语言中的 `set` 集合来解决。而如果我们想知道两个元素是否属于同一个集合,则仅用一个 `set` 集合就很难做到了。这就需要用到我们接下来要讲解的「并查集」结构。 根据上文描述,我们就可以定义一下「并查集」结构所支持的操作接口: -- **合并 `union(x, y)`**:将集合 `x` 和集合 `y` 合并成一个集合。 -- 查找 `find(x)`:查找元素 `x` 属于哪个集合。 -- **查找 `is_connected(x, y)`**:查询元素 `x` 和 `y` 是否在同一个集合中。 +- **合并 `union(x, y)`**:将集合 $x$ 和集合 $y$ 合并成一个集合。 +- **查找 `find(x)`**:查找元素 $x$ 属于哪个集合。 +- **查找 `is_connected(x, y)`**:查询元素 $x$ 和 $y$ 是否在同一个集合中。 ### 1.2 并查集的两种实现思路 @@ -36,17 +36,17 @@ 如果我们希望并查集的查询效率高一些,那么我们就可以侧重于查询操作。 -在使用「快速查询」思路实现并查集时,我们可以使用一个「数组结构」来表示集合中的元素。数组元素和集合元素是一一对应的,我们可以将数组的索引值作为每个元素的集合编号,称为 `id`。然后可以对数组进行以下操作来实现并查集: +在使用「快速查询」思路实现并查集时,我们可以使用一个「数组结构」来表示集合中的元素。数组元素和集合元素是一一对应的,我们可以将数组的索引值作为每个元素的集合编号,称为 $id$。然后可以对数组进行以下操作来实现并查集: -- **当初始化时**:将每个元素的集合编号初始化为数组下标索引。则所有元素的 `id` 都是唯一的,代表着每个元素单独属于一个集合。 -- **合并操作时**:需要将其中一个集合中的所有元素 `id` 更改为另一个集合中的 `id`,这样能够保证在合并后一个集合中所有元素的 `id` 均相同。 -- **查找操作时**:如果两个元素的 `id` 一样,则说明它们属于同一个集合;如果两个元素的 `id` 不一样,则说明它们不属于同一个集合。 +- **当初始化时**:将每个元素的集合编号初始化为数组下标索引。则所有元素的 $id$ 都是唯一的,代表着每个元素单独属于一个集合。 +- **合并操作时**:需要将其中一个集合中的所有元素 $id$ 更改为另一个集合中的 $id$,这样能够保证在合并后一个集合中所有元素的 $id$ 均相同。 +- **查找操作时**:如果两个元素的 $id$ 一样,则说明它们属于同一个集合;如果两个元素的 $id$ 不一样,则说明它们不属于同一个集合。 -举个例子来说明一下,我们使用数组来表示一系列集合元素 `{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}`,初始化时如下图所示。从下图中可以看出:元素的集合编号就是数组的索引值,代表着每个元素属于一个集合。 +举个例子来说明一下,我们使用数组来表示一系列集合元素 $\left\{ 0 \right\}, \left\{ 1 \right\}, \left\{ 2 \right\}, \left\{ 3 \right\}, \left\{ 4 \right\}, \left\{ 5 \right\}, \left\{ 6 \right\}, \left\{ 7 \right\}$,初始化时如下图所示。从下图中可以看出:元素的集合编号就是数组的索引值,代表着每个元素属于一个集合。 ![](https://qcdn.itcharge.cn/images/20220505145234.png) -当我们进行一系列的合并操作后,比如合并后变为 `{0}, {1, 2, 3}, {4}, {5, 6}, {7}`,合并操作的结果如下图所示。从图中可以看出,在进行一系列合并操作后,下标为 `1`、`2`、`3` 的元素集合编号是一致的,说明这 `3` 个 元素同属于一个集合。同理下标为 `5` 和 `6` 的元素则同属于另一个集合。 +当我们进行一系列的合并操作后,比如合并后变为 $\left\{ 0 \right\}, \left\{ 1, 2, 3 \right\}, \left\{ 4 \right\}, \left\{5, 6\right\}, \left\{ 7 \right\}$,合并操作的结果如下图所示。从图中可以看出,在进行一系列合并操作后,下标为 $1$、$2$、$3$ 的元素集合编号是一致的,说明这 $3$ 个 元素同属于一个集合。同理下标为 $5$ 和 $6$ 的元素则同属于另一个集合。 ![](https://qcdn.itcharge.cn/images/20220505145302.png) @@ -86,21 +86,21 @@ class UnionFind: > **注意**:与普通的树形结构(父节点指向子节点)不同的是,基于森林实现的并查集中,树中的子节点是指向父节点的。 -此时,我们仍然可以使用一个数组 `fa` 来记录这个森林。我们用 `fa[x]` 来保存 `x` 的父节点的集合编号,代表着元素节点 `x` 指向父节点 `fa[x]`。 +此时,我们仍然可以使用一个数组 $fa$ 来记录这个森林。我们用 $fa[x]$ 来保存 $x$ 的父节点的集合编号,代表着元素节点 $x$ 指向父节点 $fa[x]$。 -当初始化时,`fa[x]` 值赋值为下标索引 `x`。在进行合并操作时,只需要将两个元素的树根节点相连接(`fa[root1] = root2`)即可。而在进行查询操作时,只需要查看两个元素的树根节点是否一致,就能知道两个元素是否属于同一个集合。 +当初始化时,$fa[x]$ 值赋值为下标索引 $x$。在进行合并操作时,只需要将两个元素的树根节点相连接(`fa[root1] = root2`)即可。而在进行查询操作时,只需要查看两个元素的树根节点是否一致,就能知道两个元素是否属于同一个集合。 -总结一下,我们可以对数组 `fa` 进行以下操作来实现并查集: +总结一下,我们可以对数组 $fa$ 进行以下操作来实现并查集: -- **当初始化时**:将每个元素的集合编号初始化为数组 `fa` 的下标索引。所有元素的根节点的集合编号不一样,代表着每个元素单独属于一个集合。 +- **当初始化时**:将每个元素的集合编号初始化为数组 $fa$ 的下标索引。所有元素的根节点的集合编号不一样,代表着每个元素单独属于一个集合。 - **合并操作时**:需要将两个集合的树根节点相连接。即令其中一个集合的树根节点指向另一个集合的树根节点(`fa[root1] = root2`),这样合并后当前集合中的所有元素的树根节点均为同一个。 -- **查找操作时**:分别从两个元素开始,通过数组 `fa` 存储的值,不断递归访问元素的父节点,直到到达树根节点。如果两个元素的树根节点一样,则说明它们属于同一个集合;如果两个元素的树根节点不一样,则说明它们不属于同一个集合。 +- **查找操作时**:分别从两个元素开始,通过数组 $fa$ 存储的值,不断递归访问元素的父节点,直到到达树根节点。如果两个元素的树根节点一样,则说明它们属于同一个集合;如果两个元素的树根节点不一样,则说明它们不属于同一个集合。 -举个例子来说明一下,我们使用数组来表示一系列集合元素 `{0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}`,初始化时如下图所示。从下图中可以看出:元素的集合编号就是数组 `fa` 的索引值,代表着每个元素属于一个集合。 +举个例子来说明一下,我们使用数组来表示一系列集合元素 $\left\{0\right\}, \left\{ 1 \right\}, \left\{ 2 \right\}, \left\{ 3 \right\}, \left\{ 4 \right\}, \left\{ 5 \right\}, \left\{ 6 \right\}, \left\{ 7 \right\}$,初始化时如下图所示。从下图中可以看出:元素的集合编号就是数组 $fa$ 的索引值,代表着每个元素属于一个集合。 ![](https://qcdn.itcharge.cn/images/20220507112934.png) -当我们进行一系列的合并操作后,比如 `union(4, 5)`、`union(6, 7)`、`union(4, 7)` 操作后变为 `{0}, {1}, {2}, {3}, {4, 5, 6, 7}`,合并操作的步骤及结果如下图所示。从图中可以看出,在进行一系列合并操作后,`fa[4] == fa[5] == fa[6] == fa[fa[7]]`,即 `4`、`5`、`6`、`7` 的元素根节点编号都是 `4`,说明这 `4` 个 元素同属于一个集合。 +当我们进行一系列的合并操作后,比如 `union(4, 5)`、`union(6, 7)`、`union(4, 7)` 操作后变为 $\left\{ 0 \right\}, \left\{ 1 \right\}, \left\{ 2 \right\}, \left\{ 3 \right\}, \left\{ 4, 5, 6, 7 \right\}$,合并操作的步骤及结果如下图所示。从图中可以看出,在进行一系列合并操作后,`fa[4] == fa[5] == fa[6] == fa[fa[7]]`,即 $4$、$5$、$6$、$7$ 的元素根节点编号都是 $4$,说明这 $4$ 个 元素同属于一个集合。 ![](https://qcdn.itcharge.cn/images/20220507142647.png) @@ -189,9 +189,9 @@ def find(self, x): # 查找元素根节点的集合 > **按深度合并(Unoin By Rank)**:在每次合并操作时,都把「深度」较小的树根节点指向「深度」较大的树根节点。 -我们用一个数组 `rank` 记录每个根节点对应的树的深度(如果不是根节点,其 `rank` 值相当于以它作为根节点的子树的深度)。 +我们用一个数组 $rank$ 记录每个根节点对应的树的深度(如果不是根节点,其 $rank$ 值相当于以它作为根节点的子树的深度)。 -初始化时,将所有元素的 `rank` 值设为 `1`。在合并操作时,比较两个根节点,把 `rank` 值较小的根节点指向 `rank` 值较大的根节点上合并。 +初始化时,将所有元素的 $rank$ 值设为 $1$。在合并操作时,比较两个根节点,把 $rank$ 值较小的根节点指向 $rank$ 值较大的根节点上合并。 下面是一个「按深度合并」的例子。 @@ -234,9 +234,9 @@ class UnionFind: > **按大小合并(Unoin By Size)**:这里的大小指的是集合节点个数。在每次合并操作时,都把「集合节点个数」较少的树根节点指向「集合节点个数」较大的树根节点。 -我们用一个数组 `size` 记录每个根节点对应的集合节点个数(如果不是根节点,其 `size` 值相当于以它作为根节点的子树的集合节点个数)。 +我们用一个数组 $size$ 记录每个根节点对应的集合节点个数(如果不是根节点,其 $size$ 值相当于以它作为根节点的子树的集合节点个数)。 -初始化时,将所有元素的 `size` 值设为 `1`。在合并操作时,比较两个根节点,把 `size` 值较小的根节点指向 `size` 值较大的根节点上合并。 +初始化时,将所有元素的 $size$ 值设为 $1$。在合并操作时,比较两个根节点,把 $size$ 值较小的根节点指向 $size$ 值较大的根节点上合并。 下面是一个「按大小合并」的例子。 @@ -280,26 +280,26 @@ class UnionFind: ### 3.3 按秩合并的注意点 -看过「按深度合并」和「按大小合并」的实现代码后,大家可能会产生一个疑问:为什么在路径压缩的过程中不用更新 `rank` 值或者 `size` 值呢? +看过「按深度合并」和「按大小合并」的实现代码后,大家可能会产生一个疑问:为什么在路径压缩的过程中不用更新 $rank$ 值或者 $size$ 值呢? -其实,代码中的 `rank` 值或者 `size` 值并不完全是树中真实的深度或者集合元素个数。 +其实,代码中的 $rank$ 值或者 $size$ 值并不完全是树中真实的深度或者集合元素个数。 -这是因为当我们在代码中引入路径压缩之后,维护真实的深度或者集合元素个数就会变得比较难。此时我们使用的 `rank` 值或者 `size` 值更像是用于当前节点排名的一个标志数字,只在合并操作的过程中,用于比较两棵树的权值大小。 +这是因为当我们在代码中引入路径压缩之后,维护真实的深度或者集合元素个数就会变得比较难。此时我们使用的 $rank$ 值或者 $size$ 值更像是用于当前节点排名的一个标志数字,只在合并操作的过程中,用于比较两棵树的权值大小。 -换句话说,我们完全可以不知道每个节点的具体深度或者集合元素个数,只要能够保证每两个节点之间的深度或者集合元素个数关系可以通过 `rank` 值或者 `size` 值正确的表达即可。 +换句话说,我们完全可以不知道每个节点的具体深度或者集合元素个数,只要能够保证每两个节点之间的深度或者集合元素个数关系可以通过 $rank$ 值或者 $size$ 值正确的表达即可。 -而根据路径压缩的过程,`rank` 值或者 `size` 值只会不断的升高,而不可能降低到比原先深度更小的节点或者集合元素个数更少的节点还要小。所以,`rank` 值或者 `size` 值足够用于比较两个节点的权值,进而选择合适的方式进行合并操作。 +而根据路径压缩的过程,$rank$ 值或者 $size$ 值只会不断的升高,而不可能降低到比原先深度更小的节点或者集合元素个数更少的节点还要小。所以,$rank$ 值或者 $size$ 值足够用于比较两个节点的权值,进而选择合适的方式进行合并操作。 ## 4. 并查集的算法分析 -首先我们来分析一下并查集的空间复杂度。在代码中,我们主要使用了数组 `fa` 来存储集合中的元素。如果使用了「按秩合并」的优化方式,还会使用数组 `rank` 或者数组 `size` 来存放权值。因为空间复杂度取决于元素个数,不难得出空间复杂度为 $O(n)$。 +首先我们来分析一下并查集的空间复杂度。在代码中,我们主要使用了数组 $fa$ 来存储集合中的元素。如果使用了「按秩合并」的优化方式,还会使用数组 $rank$ 或者数组 $size$ 来存放权值。因为空间复杂度取决于元素个数,不难得出空间复杂度为 $O(n)$。 -在同时使用了「路径压缩」和「按秩合并」的情况下,并查集的合并操作和查找操作的时间复杂度可以接近于 $O(1)$。最坏情况下的时间复杂度是 $O(m * \alpha(n))$。这里的 $m$ 是合并操作和查找操作的次数,$\alpha(n)$ 是 Ackerman 函数的某个反函数,其增长极其缓慢,也就是说其单次操作的平均运行时间可以认为是一个很小的常数。 +在同时使用了「路径压缩」和「按秩合并」的情况下,并查集的合并操作和查找操作的时间复杂度可以接近于 $O(1)$。最坏情况下的时间复杂度是 $O(m \times \alpha(n))$。这里的 $m$ 是合并操作和查找操作的次数,$\alpha(n)$ 是 Ackerman 函数的某个反函数,其增长极其缓慢,也就是说其单次操作的平均运行时间可以认为是一个很小的常数。 总结一下: - 并查集的空间复杂度:$O(n)$。 -- 并查集的时间复杂度:$O(m * \alpha(n))$。 +- 并查集的时间复杂度:$O(m \times \alpha(n))$。 ## 5. 并查集的最终实现代码 @@ -380,9 +380,9 @@ class UnionFind: #### 6.1.2 题目大意 -**描述**:给定一个由字符串方程组成的数组 `equations`,每个字符串方程 `equations[i]` 的长度为 `4`,有以下两种形式组成:`a==b` 或 `a!=b`。`a` 和 `b` 是小写字母,表示单字母变量名。 +**描述**:给定一个由字符串方程组成的数组 $equations$,每个字符串方程 $equations[i]$ 的长度为 $4$,有以下两种形式组成:`a==b` 或 `a!=b`。$a$ 和 $b$ 是小写字母,表示单字母变量名。 -**要求**:判断所有的字符串方程是否能同时满足,如果能同时满足,返回 `True`,否则返回 `False`。 +**要求**:判断所有的字符串方程是否能同时满足,如果能同时满足,返回 $True$,否则返回 $False$。 **说明**: @@ -390,7 +390,7 @@ class UnionFind: - $equations[i].length == 4$。 - $equations[i][0]$ 和 $equations[i][3]$ 是小写字母。 - $equations[i][1]$ 要么是 `'='`,要么是 `'!'`。 -- `equations[i][2]` 是 `'='`。 +- $equations[i][2]$ 是 `'='`。 **示例**: @@ -407,7 +407,7 @@ class UnionFind: 这就需要用到并查集,具体操作如下: - 遍历所有等式方程,将等式两边的单字母变量顶点进行合并。 -- 遍历所有不等式方程,检查不等式两边的单字母遍历是不是在一个连通分量中,如果在则返回 `False`,否则继续扫描。如果所有不等式检查都没有矛盾,则返回 `True`。 +- 遍历所有不等式方程,检查不等式两边的单字母遍历是不是在一个连通分量中,如果在则返回 $False$,否则继续扫描。如果所有不等式检查都没有矛盾,则返回 $True$。 #### 6.1.4 代码 @@ -460,11 +460,11 @@ class Solution: #### 6.2.2 题目大意 -**描述**:有 `n` 个城市,其中一些彼此相连,另一些没有相连。如果城市 `a` 与城市 `b` 直接相连,且城市 `b` 与城市 `c` 直接相连,那么城市 `a` 与城市 `c` 间接相连。 +**描述**:有 $n$ 个城市,其中一些彼此相连,另一些没有相连。如果城市 $a$ 与城市 $b$ 直接相连,且城市 $b$ 与城市 $c$ 直接相连,那么城市 $a$ 与城市 $c$ 间接相连。 「省份」是由一组直接或间接链接的城市组成,组内不含有其他没有相连的城市。 -现在给定一个 `n * n` 的矩阵 `isConnected` 表示城市的链接关系。其中 `isConnected[i][j] = 1` 表示第 `i` 个城市和第 `j` 个城市直接相连,`isConnected[i][j] = 0` 表示第 `i` 个城市和第 `j` 个城市没有相连。 +现在给定一个 $n \times n$ 的矩阵 $isConnected$ 表示城市的链接关系。其中 `isConnected[i][j] = 1` 表示第 $i$ 个城市和第 $j$ 个城市直接相连,`isConnected[i][j] = 0` 表示第 $i$ 个城市和第 $j$ 个城市没有相连。 **要求**:根据给定的城市关系,返回「省份」的数量。 @@ -491,7 +491,7 @@ class Solution: #### 6.2.3 解题思路 具体做法如下: -- 遍历矩阵 `isConnected`。如果 `isConnected[i][j] = 1`,将 `i` 节点和 `j` 节点相连。 +- 遍历矩阵 $isConnected$。如果 `isConnected[i][j] = 1`,将 $i$ 节点和 $j$ 节点相连。 - 然后判断每个城市节点的根节点,然后统计不重复的根节点有多少个,也就是集合个数,即为「省份」的数量。 #### 6.2.4 代码 From 5fb7e5102fc820128ffc90beeacf042f772ab4f9 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 26 Dec 2023 10:19:56 +0800 Subject: [PATCH 039/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Origins/Categories-List.md | 4 ++-- Contents/00.Introduction/05.Categories-List.md | 2 +- .../04.Array-Two-Pointers/02.Array-Two-Pointers-List.md | 1 + .../05.Greedy-Algorithm/02.Greedy-Algorithm-List.md | 1 - 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Assets/Origins/Categories-List.md b/Assets/Origins/Categories-List.md index 91cd4e1b..333d9bd1 100644 --- a/Assets/Origins/Categories-List.md +++ b/Assets/Origins/Categories-List.md @@ -83,7 +83,7 @@ #### 分离双指针题目 -###### 0350. 两个数组的交集 II、0925. 长按键入、0844. 比较含退格的字符串、1229. 安排会议日程、0415. 字符串相加 +###### 0350. 两个数组的交集 II、0925. 长按键入、0844. 比较含退格的字符串、1229. 安排会议日程、0415. 字符串相加、0392. 判断子序列 ### [滑动窗口题目](../../Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) @@ -251,7 +251,7 @@ ### [贪心算法题目](../../Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md) -###### 0455. 分发饼干、0860. 柠檬水找零、0056. 合并区间、0435. 无重叠区间、0452. 用最少数量的箭引爆气球、0055. 跳跃游戏、0045. 跳跃游戏 II、0392. 判断子序列、0122. 买卖股票的最佳时机 II、0561. 数组拆分、1710. 卡车上的最大单元数、1217. 玩筹码、1247. 交换字符使得字符串相同、1400. 构造 K 个回文字符串、0921. 使括号有效的最少添加、1029. 两地调度、1605. 给定行和列的和求可行矩阵、0135. 分发糖果、0134. 加油站、0053. 最大子数组和、0376. 摆动序列、0738. 单调递增的数字、0402. 移掉 K 位数字、0861. 翻转矩阵后的得分、0670. 最大交换 +###### 0455. 分发饼干、0860. 柠檬水找零、0056. 合并区间、0435. 无重叠区间、0452. 用最少数量的箭引爆气球、0055. 跳跃游戏、0045. 跳跃游戏 II、0122. 买卖股票的最佳时机 II、0561. 数组拆分、1710. 卡车上的最大单元数、1217. 玩筹码、1247. 交换字符使得字符串相同、1400. 构造 K 个回文字符串、0921. 使括号有效的最少添加、1029. 两地调度、1605. 给定行和列的和求可行矩阵、0135. 分发糖果、0134. 加油站、0053. 最大子数组和、0376. 摆动序列、0738. 单调递增的数字、0402. 移掉 K 位数字、0861. 翻转矩阵后的得分、0670. 最大交换 ### [位运算题目](../../Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) diff --git a/Contents/00.Introduction/05.Categories-List.md b/Contents/00.Introduction/05.Categories-List.md index 1d49e6af..46706346 100644 --- a/Contents/00.Introduction/05.Categories-List.md +++ b/Contents/00.Introduction/05.Categories-List.md @@ -212,6 +212,7 @@ | 0844 | [比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0844.%20%E6%AF%94%E8%BE%83%E5%90%AB%E9%80%80%E6%A0%BC%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 栈、双指针、字符串、模拟 | 简单 | | 1229 | [安排会议日程](https://leetcode.cn/problems/meeting-scheduler/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1229.%20%E5%AE%89%E6%8E%92%E4%BC%9A%E8%AE%AE%E6%97%A5%E7%A8%8B.md) | 数组、双指针、排序 | 中等 | | 0415 | [字符串相加](https://leetcode.cn/problems/add-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md) | 数学、字符串、模拟 | 简单 | +| 0392 | [判断子序列](https://leetcode.cn/problems/is-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0392.%20%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.md) | 双指针、字符串、动态规划 | 简单 | ### 滑动窗口题目 @@ -778,7 +779,6 @@ | 0452 | [用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0452.%20%E7%94%A8%E6%9C%80%E5%B0%91%E6%95%B0%E9%87%8F%E7%9A%84%E7%AE%AD%E5%BC%95%E7%88%86%E6%B0%94%E7%90%83.md) | 贪心、数组、排序 | 中等 | | 0055 | [跳跃游戏](https://leetcode.cn/problems/jump-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0055.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F.md) | 贪心、数组、动态规划 | 中等 | | 0045 | [跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0045.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20II.md) | 贪心、数组、动态规划 | 中等 | -| 0392 | [判断子序列](https://leetcode.cn/problems/is-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0392.%20%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.md) | 双指针、字符串、动态规划 | 简单 | | 0122 | [买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0122.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20II.md) | 贪心、数组 | 中等 | | 0561 | [数组拆分](https://leetcode.cn/problems/array-partition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0561.%20%E6%95%B0%E7%BB%84%E6%8B%86%E5%88%86.md) | 贪心、数组、计数排序、排序 | 简单 | | 1710 | [卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1710.%20%E5%8D%A1%E8%BD%A6%E4%B8%8A%E7%9A%84%E6%9C%80%E5%A4%A7%E5%8D%95%E5%85%83%E6%95%B0.md) | 贪心、数组、排序 | 简单 | diff --git a/Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md b/Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md index 5626dc60..d7aa78fe 100644 --- a/Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md +++ b/Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md @@ -47,4 +47,5 @@ | 0844 | [比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0844.%20%E6%AF%94%E8%BE%83%E5%90%AB%E9%80%80%E6%A0%BC%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 栈、双指针、字符串、模拟 | 简单 | | 1229 | [安排会议日程](https://leetcode.cn/problems/meeting-scheduler/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1229.%20%E5%AE%89%E6%8E%92%E4%BC%9A%E8%AE%AE%E6%97%A5%E7%A8%8B.md) | 数组、双指针、排序 | 中等 | | 0415 | [字符串相加](https://leetcode.cn/problems/add-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md) | 数学、字符串、模拟 | 简单 | +| 0392 | [判断子序列](https://leetcode.cn/problems/is-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0392.%20%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.md) | 双指针、字符串、动态规划 | 简单 | diff --git a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md b/Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md index 21c32ffc..82df440c 100644 --- a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md +++ b/Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md @@ -9,7 +9,6 @@ | 0452 | [用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0452.%20%E7%94%A8%E6%9C%80%E5%B0%91%E6%95%B0%E9%87%8F%E7%9A%84%E7%AE%AD%E5%BC%95%E7%88%86%E6%B0%94%E7%90%83.md) | 贪心、数组、排序 | 中等 | | 0055 | [跳跃游戏](https://leetcode.cn/problems/jump-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0055.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F.md) | 贪心、数组、动态规划 | 中等 | | 0045 | [跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0045.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20II.md) | 贪心、数组、动态规划 | 中等 | -| 0392 | [判断子序列](https://leetcode.cn/problems/is-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0392.%20%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.md) | 双指针、字符串、动态规划 | 简单 | | 0122 | [买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0122.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20II.md) | 贪心、数组 | 中等 | | 0561 | [数组拆分](https://leetcode.cn/problems/array-partition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0561.%20%E6%95%B0%E7%BB%84%E6%8B%86%E5%88%86.md) | 贪心、数组、计数排序、排序 | 简单 | | 1710 | [卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1710.%20%E5%8D%A1%E8%BD%A6%E4%B8%8A%E7%9A%84%E6%9C%80%E5%A4%A7%E5%8D%95%E5%85%83%E6%95%B0.md) | 贪心、数组、排序 | 简单 | From ad0a66e64ef80ab492936d30d5505589d99569bc Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 26 Dec 2023 13:50:20 +0800 Subject: [PATCH 040/158] Update 01.Monotone-Stack.md --- Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md b/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md index b98e9e58..495c0d97 100644 --- a/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md +++ b/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md @@ -173,7 +173,7 @@ def monotoneDecreasingStack(nums): 第二种思路是使用单调递增栈。因为 $nums1$ 是 $nums2$ 的子集,所以我们可以先遍历一遍 $nums2$,并构造单调递增栈,求出 $nums2$ 中每个元素右侧下一个更大的元素。然后将其存储到哈希表中。然后再遍历一遍 $nums1$,从哈希表中取出对应结果,存放到答案数组中。这种解法的时间复杂度是 $O(n)$。具体做法如下: -- 使用数组 $res$ 存放答案。使用 $stack$ 表示单调递增栈。使用哈希表 $num\underline{}map$ 用于存储 $nums2$ 中下一个比当前元素大的数值,映射关系为 $当前元素值:下一个比当前元素大的数值$。 +- 使用数组 $res$ 存放答案。使用 $stack$ 表示单调递增栈。使用哈希表 $num\underline{}map$ 用于存储 $nums2$ 中下一个比当前元素大的数值,映射关系为 **当前元素值:下一个比当前元素大的数值**。 - 遍历数组 $nums2$,对于当前元素: - 如果当前元素值较小,则直接让当前元素值入栈。 - 如果当前元素值较大,则一直出栈,直到当前元素值小于栈顶元素。 From 3af2fcd541cf2b3c9d2b2f5f5d223fb9b0815a09 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 26 Dec 2023 13:50:24 +0800 Subject: [PATCH 041/158] Update 01.Binary-Tree-Basic.md --- Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md b/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md index 301ad1d3..55f040ae 100644 --- a/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md +++ b/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md @@ -192,7 +192,7 @@ class TreeNode: self.right = right ``` -下面我们将值为 $1、2、3、4、5、6、7$ 的二叉树使用链式存储结构进行存储,即为下图所示。 +下面我们将值为 $[1, 2, 3, 4, 5, 6, 7]$ 的二叉树使用链式存储结构进行存储,即为下图所示。 ![](https://qcdn.itcharge.cn/images/20220221153539.png) From 478ff99b69f27f635ddc7158d093576ff4b900a6 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 26 Dec 2023 13:50:46 +0800 Subject: [PATCH 042/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\270\244\346\225\260\344\271\213\345\222\214.md" | 4 ++++ ...\270\244\346\225\260\347\233\270\345\212\240.md" | 4 ++++ ...\234\200\351\225\277\345\255\220\344\270\262.md" | 4 ++++ ...\232\204\344\270\255\344\275\215\346\225\260.md" | 6 +++++- ...\233\236\346\226\207\345\255\220\344\270\262.md" | 4 ++++ ...\225\264\346\225\260\345\217\215\350\275\254.md" | 4 ++++ ...4\346\215\242\346\225\264\346\225\260 (atoi).md" | 4 ++++ .../0009. \345\233\236\346\226\207\346\225\260.md" | 4 ++++ ...\276\276\345\274\217\345\214\271\351\205\215.md" | 4 ++++ ...\260\264\347\232\204\345\256\271\345\231\250.md" | 4 ++++ ...\275\227\351\251\254\346\225\260\345\255\227.md" | 4 ++++ ...\255\227\350\275\254\346\225\264\346\225\260.md" | 4 ++++ ...\205\254\345\205\261\345\211\215\347\274\200.md" | 4 ++++ ...\270\211\346\225\260\344\271\213\345\222\214.md" | 4 ++++ ...\270\211\346\225\260\344\271\213\345\222\214.md" | 4 ++++ ...\255\227\346\257\215\347\273\204\345\220\210.md" | 4 ++++ ...\233\233\346\225\260\344\271\213\345\222\214.md" | 4 ++++ ...4\254 N \344\270\252\347\273\223\347\202\271.md" | 4 ++++ ...\225\210\347\232\204\346\213\254\345\217\267.md" | 4 ++++ ...\234\211\345\272\217\351\223\276\350\241\250.md" | 4 ++++ ...\213\254\345\217\267\347\224\237\346\210\220.md" | 4 ++++ ...\215\207\345\272\217\351\223\276\350\241\250.md" | 4 ++++ ...\270\255\347\232\204\350\212\202\347\202\271.md" | 4 ++++ ...\277\273\350\275\254\351\223\276\350\241\250.md" | 4 ++++ ...\232\204\351\207\215\345\244\215\351\241\271.md" | 4 ++++ ...\247\273\351\231\244\345\205\203\347\264\240.md" | 4 ++++ ...\241\271\347\232\204\344\270\213\346\240\207.md" | 4 ++++ ...\270\244\346\225\260\347\233\270\351\231\244.md" | 4 ++++ ...\234\211\346\225\210\346\213\254\345\217\267.md" | 4 ++++ ...\216\222\345\272\217\346\225\260\347\273\204.md" | 4 ++++ ...\270\200\344\270\252\344\275\215\347\275\256.md" | 4 ++++ ...\217\222\345\205\245\344\275\215\347\275\256.md" | 4 ++++ ...\225\210\347\232\204\346\225\260\347\213\254.md" | 4 ++++ .../0037. \350\247\243\346\225\260\347\213\254.md" | 4 ++++ ...\244\226\350\247\202\346\225\260\345\210\227.md" | 4 ++++ ...\273\204\345\220\210\346\200\273\345\222\214.md" | 4 ++++ ...3\204\345\220\210\346\200\273\345\222\214 II.md" | 4 ++++ ...\270\200\344\270\252\346\255\243\346\225\260.md" | 4 ++++ .../0042. \346\216\245\351\233\250\346\260\264.md" | 4 ++++ ...\254\246\344\270\262\347\233\270\344\271\230.md" | 4 ++++ ...\205\215\347\254\246\345\214\271\351\205\215.md" | 4 ++++ ...7\263\350\267\203\346\270\270\346\210\217 II.md" | 4 ++++ .../0046. \345\205\250\346\216\222\345\210\227.md" | 4 ++++ ...047. \345\205\250\346\216\222\345\210\227 II.md" | 4 ++++ ...\227\213\350\275\254\345\233\276\345\203\217.md" | 4 ++++ ...\275\215\350\257\215\345\210\206\347\273\204.md" | 4 ++++ Solutions/0050. Pow(x, n).md | 4 ++++ "Solutions/0051. N \347\232\207\345\220\216.md" | 4 ++++ "Solutions/0052. N \347\232\207\345\220\216 II.md" | 4 ++++ ...\255\220\346\225\260\347\273\204\345\222\214.md" | 4 ++++ ...\236\272\346\227\213\347\237\251\351\230\265.md" | 4 ++++ ...\267\263\350\267\203\346\270\270\346\210\217.md" | 4 ++++ ...\220\210\345\271\266\345\214\272\351\227\264.md" | 4 ++++ ...\257\215\347\232\204\351\225\277\345\272\246.md" | 4 ++++ ...6\272\346\227\213\347\237\251\351\230\265 II.md" | 4 ++++ ...\227\213\350\275\254\351\223\276\350\241\250.md" | 4 ++++ ...\270\215\345\220\214\350\267\257\345\276\204.md" | 4 ++++ ...0\215\345\220\214\350\267\257\345\276\204 II.md" | 4 ++++ ...\260\217\350\267\257\345\276\204\345\222\214.md" | 4 ++++ "Solutions/0066. \345\212\240\344\270\200.md" | 4 ++++ ...\277\233\345\210\266\346\261\202\345\222\214.md" | 4 ++++ ...\232\204\345\271\263\346\226\271\346\240\271.md" | 4 ++++ .../0070. \347\210\254\346\245\274\346\242\257.md" | 4 ++++ ...\274\226\350\276\221\350\267\235\347\246\273.md" | 4 ++++ ...\237\251\351\230\265\347\275\256\351\233\266.md" | 4 ++++ ...\272\214\347\273\264\347\237\251\351\230\265.md" | 4 ++++ ...\242\234\350\211\262\345\210\206\347\261\273.md" | 4 ++++ ...\246\206\347\233\226\345\255\220\344\270\262.md" | 4 ++++ "Solutions/0077. \347\273\204\345\220\210.md" | 4 ++++ "Solutions/0078. \345\255\220\351\233\206.md" | 4 ++++ ...\215\225\350\257\215\346\220\234\347\264\242.md" | 4 ++++ ...2\204\351\207\215\345\244\215\351\241\271 II.md" | 4 ++++ ...6\222\345\272\217\346\225\260\347\273\204 II.md" | 4 ++++ ...7\215\345\244\215\345\205\203\347\264\240 II.md" | 4 ++++ ...\207\215\345\244\215\345\205\203\347\264\240.md" | 4 ++++ ...\244\247\347\232\204\347\237\251\345\275\242.md" | 4 ++++ ...\234\211\345\272\217\346\225\260\347\273\204.md" | 4 ++++ ...\240\274\351\233\267\347\274\226\347\240\201.md" | 4 ++++ "Solutions/0090. \345\255\220\351\233\206 II.md" | 4 ++++ ...\247\243\347\240\201\346\226\271\346\263\225.md" | 4 ++++ ...7\215\350\275\254\351\223\276\350\241\250 II.md" | 4 ++++ ...\215\345\216\237 IP \345\234\260\345\235\200.md" | 4 ++++ ...\270\255\345\272\217\351\201\215\345\216\206.md" | 4 ++++ ...7\211\346\220\234\347\264\242\346\240\221 II.md" | 4 ++++ ...\217\211\346\220\234\347\264\242\346\240\221.md" | 4 ++++ ...\217\211\346\220\234\347\264\242\346\240\221.md" | 4 ++++ ...\233\270\345\220\214\347\232\204\346\240\221.md" | 4 ++++ ...\247\260\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\261\202\345\272\217\351\201\215\345\216\206.md" | 4 ++++ ...\261\202\345\272\217\351\201\215\345\216\206.md" | 4 ++++ ...\234\200\345\244\247\346\267\261\345\272\246.md" | 4 ++++ ...\200\240\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\200\240\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...1\202\345\272\217\351\201\215\345\216\206 II.md" | 4 ++++ ...\217\211\346\220\234\347\264\242\346\240\221.md" | 4 ++++ ...\241\241\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\234\200\345\260\217\346\267\261\345\272\246.md" | 4 ++++ ...\267\257\345\276\204\346\200\273\345\222\214.md" | 4 ++++ ...7\257\345\276\204\346\200\273\345\222\214 II.md" | 4 ++++ ...\232\204\345\255\220\345\272\217\345\210\227.md" | 4 ++++ ...\212\202\347\202\271\346\214\207\351\222\210.md" | 4 ++++ ...2\202\347\202\271\346\214\207\351\222\210 II.md" | 4 ++++ ...\235\250\350\276\211\344\270\211\350\247\222.md" | 4 ++++ ...5\250\350\276\211\344\270\211\350\247\222 II.md" | 4 ++++ ...\260\217\350\267\257\345\276\204\345\222\214.md" | 4 ++++ ...\234\200\344\275\263\346\227\266\346\234\272.md" | 4 ++++ ...4\200\344\275\263\346\227\266\346\234\272 II.md" | 4 ++++ ...\200\344\275\263\346\227\266\346\234\272 III.md" | 4 ++++ ...\244\247\350\267\257\345\276\204\345\222\214.md" | 4 ++++ ...\257\201\345\233\236\346\226\207\344\270\262.md" | 4 ++++ ...\215\225\350\257\215\346\216\245\351\276\231.md" | 4 ++++ ...\277\236\347\273\255\345\272\217\345\210\227.md" | 4 ++++ ...\225\260\345\255\227\344\271\213\345\222\214.md" | 4 ++++ ...\273\225\347\232\204\345\214\272\345\237\237.md" | 4 ++++ ...\211\262\345\233\236\346\226\207\344\270\262.md" | 4 ++++ .../0133. \345\205\213\351\232\206\345\233\276.md" | 4 ++++ .../0134. \345\212\240\346\262\271\347\253\231.md" | 4 ++++ ...\210\206\345\217\221\347\263\226\346\236\234.md" | 4 ++++ ...\254\241\347\232\204\346\225\260\345\255\227.md" | 4 ++++ ...4\241\347\232\204\346\225\260\345\255\227 II.md" | 4 ++++ ...\222\210\347\232\204\351\223\276\350\241\250.md" | 4 ++++ ...\215\225\350\257\215\346\213\206\345\210\206.md" | 4 ++++ ...5\225\350\257\215\346\213\206\345\210\206 II.md" | 4 ++++ ...\216\257\345\275\242\351\223\276\350\241\250.md" | 4 ++++ ...6\257\345\275\242\351\223\276\350\241\250 II.md" | 4 ++++ ...\207\215\346\216\222\351\223\276\350\241\250.md" | 4 ++++ ...\211\215\345\272\217\351\201\215\345\216\206.md" | 4 ++++ ...\220\216\345\272\217\351\201\215\345\216\206.md" | 4 ++++ ...\217\222\345\205\245\346\216\222\345\272\217.md" | 4 ++++ ...\216\222\345\272\217\351\223\276\350\241\250.md" | 4 ++++ ...\244\232\347\232\204\347\202\271\346\225\260.md" | 4 ++++ ...\276\276\345\274\217\346\261\202\345\200\274.md" | 4 ++++ ...\270\255\347\232\204\345\215\225\350\257\215.md" | 4 ++++ ...\244\247\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\232\204\346\234\200\345\260\217\345\200\274.md" | 4 ++++ ...2\204\346\234\200\345\260\217\345\200\274 II.md" | 4 ++++ .../0155. \346\234\200\345\260\217\346\240\210.md" | 4 ++++ ...\234\200\351\225\277\345\255\220\344\270\262.md" | 4 ++++ ...\233\270\344\272\244\351\223\276\350\241\250.md" | 4 ++++ ...\257\273\346\211\276\345\263\260\345\200\274.md" | 4 ++++ ...\234\200\345\244\247\351\227\264\350\267\235.md" | 4 ++++ ...\225\260\345\210\260\345\260\217\346\225\260.md" | 4 ++++ ...\234\211\345\272\217\346\225\260\347\273\204.md" | 4 ++++ ...\241\250\345\210\227\345\220\215\347\247\260.md" | 4 ++++ ...\244\232\346\225\260\345\205\203\347\264\240.md" | 4 ++++ ...\273\223\346\236\204\350\256\276\350\256\241.md" | 4 ++++ ...\241\250\345\210\227\345\272\217\345\217\267.md" | 4 ++++ ...\271\230\345\220\216\347\232\204\351\233\266.md" | 4 ++++ ...\240\221\350\277\255\344\273\243\345\231\250.md" | 4 ++++ .../0179. \346\234\200\345\244\247\346\225\260.md" | 4 ++++ ...4\200\344\275\263\346\227\266\346\234\272 IV.md" | 4 ++++ ...\275\256\350\275\254\346\225\260\347\273\204.md" | 4 ++++ ...\272\214\350\277\233\345\210\266\344\275\215.md" | 4 ++++ ...275\2151\347\232\204\344\270\252\346\225\260.md" | 4 ++++ ...\211\223\345\256\266\345\212\253\350\210\215.md" | 4 ++++ ...\232\204\345\217\263\350\247\206\345\233\276.md" | 4 ++++ ...\262\233\345\261\277\346\225\260\351\207\217.md" | 4 ++++ ...\233\264\346\214\211\344\275\215\344\270\216.md" | 4 ++++ .../0202. \345\277\253\344\271\220\346\225\260.md" | 4 ++++ ...\223\276\350\241\250\345\205\203\347\264\240.md" | 4 ++++ ...\256\241\346\225\260\350\264\250\346\225\260.md" | 4 ++++ ...\236\204\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...\217\215\350\275\254\351\223\276\350\241\250.md" | 4 ++++ .../0207. \350\257\276\347\250\213\350\241\250.md" | 4 ++++ ... Trie (\345\211\215\347\274\200\346\240\221).md" | 4 ++++ ...\232\204\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...210. \350\257\276\347\250\213\350\241\250 II.md" | 4 ++++ ...\273\223\346\236\204\350\256\276\350\256\241.md" | 4 ++++ ...5\225\350\257\215\346\220\234\347\264\242 II.md" | 4 ++++ ...1\223\345\256\266\345\212\253\350\210\215 II.md" | 4 ++++ ...\234\200\345\244\247\345\205\203\347\264\240.md" | 4 ++++ ...\207\215\345\244\215\345\205\203\347\264\240.md" | 4 ++++ ...\231\205\347\272\277\351\227\256\351\242\230.md" | 4 ++++ ...7\215\345\244\215\345\205\203\347\264\240 II.md" | 4 ++++ ...\215\345\244\215\345\205\203\347\264\240 III.md" | 4 ++++ ...\244\247\346\255\243\346\226\271\345\275\242.md" | 4 ++++ ...\212\202\347\202\271\344\270\252\346\225\260.md" | 4 ++++ ...\237\251\345\275\242\351\235\242\347\247\257.md" | 4 ++++ ...\210\227\345\256\236\347\216\260\346\240\210.md" | 4 ++++ ...\275\254\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...4\254\350\256\241\347\256\227\345\231\250 II.md" | 4 ++++ "Solutions/0231. 2 \347\232\204\345\271\202.md" | 4 ++++ ...\256\236\347\216\260\351\230\237\345\210\227.md" | 4 ++++ ...5\227 1 \347\232\204\344\270\252\346\225\260.md" | 4 ++++ ...\233\236\346\226\207\351\223\276\350\241\250.md" | 4 ++++ ...\205\254\345\205\261\347\245\226\345\205\210.md" | 4 ++++ ...\205\254\345\205\261\347\245\226\345\205\210.md" | 4 ++++ ...\270\255\347\232\204\350\212\202\347\202\271.md" | 4 ++++ ...\273\204\347\232\204\344\271\230\347\247\257.md" | 4 ++++ ...\217\243\346\234\200\345\244\247\345\200\274.md" | 4 ++++ ...2\214\347\273\264\347\237\251\351\230\265 II.md" | 4 ++++ ...\256\241\344\274\230\345\205\210\347\272\247.md" | 4 ++++ ...\257\215\345\274\202\344\275\215\350\257\215.md" | 4 ++++ ...\254\246\344\270\262\345\210\206\347\273\204.md" | 4 ++++ ...\211\200\346\234\211\350\267\257\345\276\204.md" | 4 ++++ ...\220\204\344\275\215\347\233\270\345\212\240.md" | 4 ++++ ...\270\211\346\225\260\344\271\213\345\222\214.md" | 4 ++++ ...\241\347\232\204\346\225\260\345\255\227 III.md" | 4 ++++ "Solutions/0263. \344\270\221\346\225\260.md" | 4 ++++ "Solutions/0264. \344\270\221\346\225\260 II.md" | 4 ++++ ...\244\261\347\232\204\346\225\260\345\255\227.md" | 4 ++++ ...\220\234\347\264\242\346\240\221\345\200\274.md" | 4 ++++ ...\257\257\347\232\204\347\211\210\346\234\254.md" | 4 ++++ ...\205\250\345\271\263\346\226\271\346\225\260.md" | 4 ++++ .../0283. \347\247\273\345\212\250\351\233\266.md" | 4 ++++ ...\270\255\345\272\217\345\220\216\347\273\247.md" | 4 ++++ .../0286. \345\242\231\344\270\216\351\227\250.md" | 4 ++++ ...\211\276\351\207\215\345\244\215\346\225\260.md" | 4 ++++ ...\224\257\344\270\200\347\274\251\345\206\231.md" | 4 ++++ ...\224\237\345\221\275\346\270\270\346\210\217.md" | 4 ++++ ...\215\225\350\257\215\350\247\204\345\276\213.md" | 4 ++++ "Solutions/0292. Nim \346\270\270\346\210\217.md" | 4 ++++ ...\232\204\344\270\255\344\275\215\346\225\260.md" | 4 ++++ ...\217\215\345\272\217\345\210\227\345\214\226.md" | 4 ++++ ...\242\236\345\255\220\345\272\217\345\210\227.md" | 4 ++++ ...\273\204\344\270\215\345\217\257\345\217\230.md" | 4 ++++ ...\230\265\344\270\215\345\217\257\345\217\230.md" | 4 ++++ ...\273\204\345\217\257\344\277\256\346\224\271.md" | 4 ++++ ...\220\253\345\206\267\345\206\273\346\234\237.md" | 4 ++++ ...\260\217\351\253\230\345\272\246\346\240\221.md" | 4 ++++ .../0312. \346\210\263\346\260\224\347\220\203.md" | 4 ++++ ...\264\240\347\232\204\344\270\252\346\225\260.md" | 4 ++++ ...\207\215\345\244\215\345\255\227\346\257\215.md" | 4 ++++ ...\225\277\345\272\246\344\271\230\347\247\257.md" | 4 ++++ ...\233\266\351\222\261\345\205\221\346\215\242.md" | 4 ++++ ...\207\217\347\232\204\346\225\260\347\233\256.md" | 4 ++++ ...1\206\345\212\250\346\216\222\345\272\217 II.md" | 4 ++++ "Solutions/0326. 3 \347\232\204\345\271\202.md" | 4 ++++ ...\245\207\345\201\266\351\223\276\350\241\250.md" | 4 ++++ ...\200\222\345\242\236\350\267\257\345\276\204.md" | 4 ++++ ...\205\203\345\255\220\345\272\217\345\210\227.md" | 4 ++++ .../0336. \345\233\236\346\226\207\345\257\271.md" | 4 ++++ ...\223\345\256\266\345\212\253\350\210\215 III.md" | 4 ++++ ...\211\271\344\275\215\350\256\241\346\225\260.md" | 4 ++++ ...\234\200\351\225\277\345\255\220\344\270\262.md" | 4 ++++ ...\241\250\350\277\255\344\273\243\345\231\250.md" | 4 ++++ "Solutions/0342. 4\347\232\204\345\271\202.md" | 4 ++++ ...\225\264\346\225\260\346\213\206\345\210\206.md" | 4 ++++ ...\275\254\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...\205\203\351\237\263\345\255\227\346\257\215.md" | 4 ++++ ...\212\250\345\271\263\345\235\207\345\200\274.md" | 4 ++++ ...\253\230\351\242\221\345\205\203\347\264\240.md" | 4 ++++ ...\273\204\347\232\204\344\272\244\351\233\206.md" | 4 ++++ ...3\204\347\232\204\344\272\244\351\233\206 II.md" | 4 ++++ ...\211\213\345\212\277\350\247\243\351\224\201.md" | 4 ++++ ...\277\241\345\260\201\351\227\256\351\242\230.md" | 4 ++++ ...\225\260\345\255\227\344\270\252\346\225\260.md" | 4 ++++ ...\216\207\351\231\220\345\210\266\345\231\250.md" | 4 ++++ ...\275\254\345\214\226\346\225\260\347\273\204.md" | 4 ++++ ...\205\250\345\271\263\346\226\271\346\225\260.md" | 4 ++++ ...\214\272\351\227\264\345\212\240\346\263\225.md" | 4 ++++ ...\225\264\346\225\260\344\271\213\345\222\214.md" | 4 ++++ ...\225\260\345\255\227\345\244\247\345\260\217.md" | 4 ++++ ...5\260\345\255\227\345\244\247\345\260\217 II.md" | 4 ++++ ...\221\206\345\212\250\345\272\217\345\210\227.md" | 4 ++++ ...220\210\346\200\273\345\222\214 \342\205\243.md" | 4 ++++ ...\260\217\347\232\204\345\205\203\347\264\240.md" | 4 ++++ ...\232\217\346\234\272\345\205\203\347\264\240.md" | 4 ++++ .../0383. \350\265\216\351\207\221\344\277\241.md" | 4 ++++ ...\211\223\344\271\261\346\225\260\347\273\204.md" | 4 ++++ ...\205\270\345\272\217\346\216\222\346\225\260.md" | 4 ++++ ...\224\257\344\270\200\345\255\227\347\254\246.md" | 4 ++++ .../0389. \346\211\276\344\270\215\345\220\214.md" | 4 ++++ ...\256\214\347\276\216\347\237\251\345\275\242.md" | 4 ++++ ...\226\255\345\255\220\345\272\217\345\210\227.md" | 4 ++++ ...\254\246\344\270\262\350\247\243\347\240\201.md" | 4 ++++ ...\234\200\351\225\277\345\255\220\344\270\262.md" | 4 ++++ ...\231\244\346\263\225\346\261\202\345\200\274.md" | 4 ++++ ...4\254 N \344\275\215\346\225\260\345\255\227.md" | 4 ++++ ...\235\222\350\233\231\350\277\207\346\262\263.md" | 4 ++++ ...\217\266\345\255\220\344\271\213\345\222\214.md" | 4 ++++ ...\205\255\350\277\233\345\210\266\346\225\260.md" | 4 ++++ ...\207\215\345\273\272\351\230\237\345\210\227.md" | 4 ++++ ...\225\277\345\233\236\346\226\207\344\270\262.md" | 4 ++++ ...\232\204\346\234\200\345\244\247\345\200\274.md" | 4 ++++ Solutions/0412. Fizz Buzz.md | 4 ++++ ...\254\246\344\270\262\347\233\270\345\212\240.md" | 4 ++++ ...\255\211\345\222\214\345\255\220\351\233\206.md" | 4 ++++ ...\260\264\346\265\201\351\227\256\351\242\230.md" | 4 ++++ ...\244\247\345\274\202\346\210\226\345\200\274.md" | 4 ++++ ...\207\215\345\244\215\345\255\227\347\254\246.md" | 4 ++++ ...\215\225\350\257\215\346\226\271\345\235\227.md" | 4 ++++ ...\217\214\345\220\221\351\223\276\350\241\250.md" | 4 ++++ ...0\227\345\214\226 N \345\217\211\346\240\221.md" | 4 ++++ ...\261\202\345\272\217\351\201\215\345\216\206.md" | 4 ++++ ...\217\214\345\220\221\351\223\276\350\241\250.md" | 4 ++++ ...\207\215\345\217\240\345\214\272\351\227\264.md" | 4 ++++ ...\257\345\276\204\346\200\273\345\222\214 III.md" | 4 ++++ ...\257\215\345\274\202\344\275\215\350\257\215.md" | 4 ++++ ...\274\251\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...0\244\346\225\260\347\233\270\345\212\240 II.md" | 4 ++++ ...\225\226\347\232\204\346\225\260\351\207\217.md" | 4 ++++ ...\270\255\347\232\204\350\212\202\347\202\271.md" | 4 ++++ ...\242\221\347\216\207\346\216\222\345\272\217.md" | 4 ++++ ...\274\225\347\210\206\346\260\224\347\220\203.md" | 4 ++++ ...3\233\346\225\260\347\233\270\345\212\240 II.md" | 4 ++++ ...\210\206\345\217\221\351\245\274\345\271\262.md" | 4 ++++ ...\255\220\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...\261\211\346\230\216\350\267\235\347\246\273.md" | 4 ++++ ...\261\277\347\232\204\345\221\250\351\225\277.md" | 4 ++++ ...\210\221\350\203\275\350\265\242\345\220\227.md" | 4 ++++ ...\255\220\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...52\214\350\257\201IP\345\234\260\345\235\200.md" | 4 ++++ ...\213\274\346\255\243\346\226\271\345\275\242.md" | 4 ++++ .../0474. \344\270\200\345\222\214\351\233\266.md" | 4 ++++ ...\217\243\344\270\255\344\275\215\346\225\260.md" | 4 ++++ ...3\255 1 \347\232\204\344\270\252\346\225\260.md" | 4 ++++ ...\242\204\346\265\213\350\265\242\345\256\266.md" | 4 ++++ ...\2551\347\232\204\344\270\252\346\225\260 II.md" | 4 ++++ ...\242\236\345\255\220\345\272\217\345\210\227.md" | 4 ++++ .../0494. \347\233\256\346\240\207\345\222\214.md" | 4 ++++ ...33\264\345\244\247\345\205\203\347\264\240 I.md" | 4 ++++ ...\247\222\347\272\277\351\201\215\345\216\206.md" | 4 ++++ ...\270\255\347\232\204\344\274\227\346\225\260.md" | 4 ++++ ...3\264\345\244\247\345\205\203\347\264\240 II.md" | 4 ++++ ...\270\203\350\277\233\345\210\266\346\225\260.md" | 4 ++++ ...\233\270\345\257\271\345\220\215\346\254\241.md" | 4 ++++ ...\263\242\351\202\243\345\245\221\346\225\260.md" | 4 ++++ ...\270\213\350\247\222\347\232\204\345\200\274.md" | 4 ++++ ...\211\276\346\234\200\345\244\247\345\200\274.md" | 4 ++++ ...\226\207\345\255\220\345\272\217\345\210\227.md" | 4 ++++ ...3\266\351\222\261\345\205\221\346\215\242 II.md" | 4 ++++ ...\277\236\347\273\255\346\225\260\347\273\204.md" | 4 ++++ ...\276\216\347\232\204\346\216\222\345\210\227.md" | 4 ++++ ...\260\217\347\273\235\345\257\271\345\267\256.md" | 4 ++++ ...\270\272\347\264\257\345\212\240\346\240\221.md" | 4 ++++ ...\260\217\346\227\266\351\227\264\345\267\256.md" | 4 ++++ "Solutions/0542. 01 \347\237\251\351\230\265.md" | 4 ++++ ...\240\221\347\232\204\347\233\264\345\276\204.md" | 4 ++++ ...\247\273\351\231\244\347\233\222\345\255\220.md" | 4 ++++ ...\234\201\344\273\275\346\225\260\351\207\217.md" | 4 ++++ ...\255\347\232\204\345\215\225\350\257\215 III.md" | 4 ++++ ...\232\204\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\225\260\347\273\204\346\213\206\345\210\206.md" | 4 ++++ ...\270\262\347\232\204\346\216\222\345\210\227.md" | 4 ++++ .../0575. \345\210\206\347\263\226\346\236\234.md" | 4 ++++ ...\232\204\350\267\257\345\276\204\346\225\260.md" | 4 ++++ ...\210\240\351\231\244\346\223\215\344\275\234.md" | 4 ++++ ...\211\215\345\272\217\351\201\215\345\216\206.md" | 4 ++++ ...\220\216\345\272\217\351\201\215\345\216\206.md" | 4 ++++ ...\264\242\345\274\225\346\200\273\345\222\214.md" | 4 ++++ ...\235\236\350\264\237\346\225\264\346\225\260.md" | 4 ++++ ...\275\242\347\232\204\344\270\252\346\225\260.md" | 4 ++++ ...\212\240\347\262\227\346\240\207\347\255\276.md" | 4 ++++ ...\271\266\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\212\241\350\260\203\345\272\246\345\231\250.md" | 4 ++++ ...\276\252\347\216\257\351\230\237\345\210\227.md" | 4 ++++ ...\226\271\346\225\260\344\271\213\345\222\214.md" | 4 ++++ ...7\243\347\240\201\346\226\271\346\263\225 II.md" | 4 ++++ ...\241\245\345\205\250\347\263\273\347\273\237.md" | 4 ++++ ...44\247\345\271\263\345\235\207\346\225\260 I.md" | 4 ++++ ...\233\236\346\226\207\345\255\220\344\270\262.md" | 4 ++++ ...\215\225\350\257\215\346\233\277\346\215\242.md" | 4 ++++ ...\224\256\347\232\204\351\224\256\347\233\230.md" | 4 ++++ ...\244\215\347\232\204\345\255\220\346\240\221.md" | 4 ++++ ...\217\211\346\220\234\347\264\242\346\240\221.md" | 4 ++++ ...\244\247\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\277\221\347\232\204\345\205\203\347\264\240.md" | 4 ++++ ...\234\200\345\244\247\345\256\275\345\272\246.md" | 4 ++++ ...\232\204\346\211\223\345\215\260\346\234\272.md" | 4 ++++ ...\200\222\345\207\217\346\225\260\345\210\227.md" | 4 ++++ ...\217\211\346\220\234\347\264\242\346\240\221.md" | 4 ++++ ...\210\227\347\232\204\344\270\252\346\225\260.md" | 4 ++++ ...\200\222\345\242\236\345\272\217\345\210\227.md" | 4 ++++ ...\255\224\346\263\225\345\255\227\345\205\270.md" | 4 ++++ ...\224\256\345\200\274\346\230\240\345\260\204.md" | 4 ++++ ...\217\267\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...7\201\345\233\236\346\226\207\344\270\262 II.md" | 4 ++++ ...\227\255\347\232\204\347\201\257\346\263\241.md" | 4 ++++ ...\206\227\344\275\231\350\277\236\346\216\245.md" | 4 ++++ ...\254\246\344\270\262\345\214\271\351\205\215.md" | 4 ++++ ...\220\214\345\200\274\350\267\257\345\276\204.md" | 4 ++++ ...\270\212\347\232\204\346\246\202\347\216\207.md" | 4 ++++ ...\232\204\351\207\215\350\246\201\346\200\247.md" | 4 ++++ ...\264\264\347\272\270\346\213\274\350\257\215.md" | 4 ++++ ...\234\200\345\244\247\351\235\242\347\247\257.md" | 4 ++++ ...\255\211\347\232\204\345\255\220\351\233\206.md" | 4 ++++ ...\270\255\347\232\204\346\220\234\347\264\242.md" | 4 ++++ ...\217\222\345\205\245\346\223\215\344\275\234.md" | 4 ++++ ...\234\211\345\272\217\346\225\260\347\273\204.md" | 4 ++++ ...4\254 K \345\244\247\345\205\203\347\264\240.md" | 4 ++++ ...\272\214\345\210\206\346\237\245\346\211\276.md" | 4 ++++ ...\223\210\345\270\214\351\233\206\345\220\210.md" | 4 ++++ ...\223\210\345\270\214\346\230\240\345\260\204.md" | 4 ++++ ...\256\276\350\256\241\351\223\276\350\241\250.md" | 4 ++++ ...\241\250\347\232\204\346\217\222\345\205\245.md" | 4 ++++ ...\260\217\345\206\231\345\255\227\346\257\215.md" | 4 ++++ ...\232\204\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\220\253\346\211\213\347\273\255\350\264\271.md" | 4 ++++ "Solutions/0715. Range \346\250\241\345\235\227.md" | 4 ++++ ...\244\215\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\225\260\345\257\271\350\267\235\347\246\273.md" | 4 ++++ ...\225\277\347\232\204\345\215\225\350\257\215.md" | 4 ++++ ...\270\255\345\277\203\344\270\213\346\240\207.md" | 4 ++++ ...\217\243\345\255\220\345\272\217\345\210\227.md" | 4 ++++ ...50\213\345\256\211\346\216\222\350\241\250 I.md" | 4 ++++ ...0\213\345\256\211\346\216\222\350\241\250 II.md" | 4 ++++ ...\213\345\256\211\346\216\222\350\241\250 III.md" | 4 ++++ ...\233\276\345\203\217\346\270\262\346\237\223.md" | 4 ++++ ...\241\214\346\230\237\347\242\260\346\222\236.md" | 4 ++++ ...\242\236\347\232\204\346\225\260\345\255\227.md" | 4 ++++ ...\257\217\346\227\245\346\270\251\345\272\246.md" | 4 ++++ ...\234\200\345\260\217\345\255\227\346\257\215.md" | 4 ++++ ...\264\271\347\210\254\346\245\274\346\242\257.md" | 4 ++++ ...\274\200\350\275\254\347\233\230\351\224\201.md" | 4 ++++ ...\212\240\347\262\227\345\215\225\350\257\215.md" | 4 ++++ ...\255\227\346\257\215\345\214\272\351\227\264.md" | 4 ++++ ...\203\205\344\276\243\347\211\265\346\211\213.md" | 4 ++++ ...\210\251\350\214\250\347\237\251\351\230\265.md" | 4 ++++ ...\237\263\344\270\216\347\237\263\345\244\264.md" | 4 ++++ ...\261\240\344\270\255\346\270\270\346\263\263.md" | 4 ++++ ...\257\255\346\263\225\347\254\246\345\217\267.md" | 4 ++++ ...\206\231\345\205\250\346\216\222\345\210\227.md" | 4 ++++ ...\226\255\344\272\214\345\210\206\345\233\276.md" | 4 ++++ ...\227\213\350\275\254\346\225\260\345\255\227.md" | 4 ++++ ...\225\260\347\273\204\344\270\252\346\225\260.md" | 4 ++++ ...\275\254\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...\203\275\347\232\204\350\267\257\345\276\204.md" | 4 ++++ ...270\344\274\274 RGB \351\242\234\350\211\262.md" | 4 ++++ ...\272\244\346\215\242\346\254\241\346\225\260.md" | 4 ++++ ...\256\211\345\205\250\347\212\266\346\200\201.md" | 4 ++++ .../0803. \346\211\223\347\240\226\345\235\227.md" | 4 ++++ ...\246\201\347\232\204\350\241\214\346\225\260.md" | 4 ++++ ...\256\277\351\227\256\350\256\241\346\225\260.md" | 4 ++++ ...\217\211\346\240\221\345\211\252\346\236\235.md" | 4 ++++ ...\247\201\347\232\204\345\215\225\350\257\215.md" | 4 ++++ ...\216\213\347\274\251\347\274\226\347\240\201.md" | 4 ++++ ...\234\200\347\237\255\350\267\235\347\246\273.md" | 4 ++++ ...\276\212\346\213\211\344\270\201\346\226\207.md" | 4 ++++ ...\273\204\347\232\204\344\275\215\347\275\256.md" | 4 ++++ ...\277\273\350\275\254\345\233\276\345\203\217.md" | 4 ++++ ...\267\235\347\246\273\344\271\213\345\222\214.md" | 4 ++++ ...\237\251\345\275\242\351\207\215\345\217\240.md" | 4 ++++ ...\214\231\345\222\214\346\210\277\351\227\264.md" | 4 ++++ ...\232\204\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...\234\200\351\225\277\345\261\261\350\204\211.md" | 4 ++++ ...\270\200\346\211\213\351\241\272\345\255\220.md" | 4 ++++ ...\234\200\347\237\255\350\267\257\345\276\204.md" | 4 ++++ ...7\251\345\275\242\351\235\242\347\247\257 II.md" | 4 ++++ ...\227\271\345\222\214\345\257\214\346\234\211.md" | 4 ++++ ...\263\260\351\241\266\347\264\242\345\274\225.md" | 4 ++++ ...\252\254\346\260\264\346\211\276\351\233\266.md" | 4 ++++ ...\220\216\347\232\204\345\276\227\345\210\206.md" | 4 ++++ ...\275\254\347\275\256\347\237\251\351\230\265.md" | 4 ++++ ...\233\270\344\274\274\347\232\204\346\240\221.md" | 4 ++++ ...\210\227\347\232\204\351\225\277\345\272\246.md" | 4 ++++ ...\225\211\347\232\204\347\217\202\347\217\202.md" | 4 ++++ ...\270\255\351\227\264\347\273\223\347\202\271.md" | 4 ++++ ...\237\263\345\255\220\346\270\270\346\210\217.md" | 4 ++++ .../0881. \346\225\221\347\224\237\350\211\207.md" | 4 ++++ ...\270\270\350\247\201\345\215\225\350\257\215.md" | 4 ++++ ...\232\204\344\272\214\345\210\206\346\263\225.md" | 4 ++++ ...\270\241\350\233\213\346\216\211\350\220\275.md" | 4 ++++ ...\200\240\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\272\217\346\220\234\347\264\242\346\240\221.md" | 4 ++++ ...\273\267\346\240\274\350\267\250\345\272\246.md" | 4 ++++ ...\225\260\345\255\227\347\273\204\345\220\210.md" | 4 ++++ ...\260\264\346\236\234\346\210\220\347\257\256.md" | 4 ++++ ...34\200\345\260\217\345\267\256\345\200\274 I.md" | 4 ++++ ...\216\222\345\272\217\346\225\260\347\273\204.md" | 4 ++++ ...\232\204\346\234\200\345\244\247\345\222\214.md" | 4 ++++ ...\240\221\346\217\222\345\205\245\345\231\250.md" | 4 ++++ ...\234\200\345\260\221\346\267\273\345\212\240.md" | 4 ++++ ...\225\277\346\214\211\351\224\256\345\205\245.md" | 4 ++++ ...\274\202\344\272\256\346\225\260\347\273\204.md" | 4 ++++ ...\257\267\346\261\202\346\254\241\346\225\260.md" | 4 ++++ ...\243\253\346\213\250\345\217\267\345\231\250.md" | 4 ++++ ...\232\204\350\214\203\345\233\264\345\222\214.md" | 4 ++++ ...\257\201\346\240\210\345\272\217\345\210\227.md" | 4 ++++ ...\220\214\345\210\227\347\237\263\345\244\264.md" | 4 ++++ ...\230\237\350\257\255\350\257\215\345\205\270.md" | 4 ++++ ...\205\250\346\200\247\346\243\200\351\252\214.md" | 4 ++++ ...\210\222\345\210\206\345\214\272\345\237\237.md" | 4 ++++ ...\216\247\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...2\271\347\232\204 K \344\270\252\347\202\271.md" | 4 ++++ ...\232\204\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\234\200\345\244\247\345\221\250\351\225\277.md" | 4 ++++ ...\273\204\347\232\204\345\271\263\346\226\271.md" | 4 ++++ ...\265\201\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\232\204\344\270\211\345\205\203\347\273\204.md" | 4 ++++ ...\217\257\346\273\241\350\266\263\346\200\247.md" | 4 ++++ ...\232\204\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\205\204\345\274\237\350\212\202\347\202\271.md" | 4 ++++ ...\277\273\350\275\254\346\254\241\346\225\260.md" | 4 ++++ ...\234\200\344\275\216\346\210\220\346\234\254.md" | 4 ++++ ...\205\261\347\224\250\345\255\227\347\254\246.md" | 4 ++++ ...2551\347\232\204\344\270\252\346\225\260 III.md" | 4 ++++ ...\232\204\346\225\260\347\273\204\345\222\214.md" | 4 ++++ ...\217\211\346\220\234\347\264\242\346\240\221.md" | 4 ++++ ...\225\260\347\232\204\345\217\215\347\240\201.md" | 4 ++++ ...\243\271\347\232\204\350\203\275\345\212\233.md" | 4 ++++ ...\244\215\347\232\204\346\225\260\345\255\227.md" | 4 ++++ ...\247\202\345\205\211\347\273\204\345\220\210.md" | 4 ++++ ...\234\260\347\232\204\346\225\260\351\207\217.md" | 4 ++++ ...\263\260\345\274\217\345\214\271\351\205\215.md" | 4 ++++ ...\231\244\346\225\260\345\215\232\345\274\210.md" | 4 ++++ ...\216\237\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\270\244\345\234\260\350\260\203\345\272\246.md" | 4 ++++ ...\276\271\347\225\214\347\235\200\350\211\262.md" | 4 ++++ ...\233\270\344\272\244\347\232\204\347\272\277.md" | 4 ++++ ...\232\204\345\233\236\346\227\213\351\225\226.md" | 4 ++++ ...\233\264\345\244\247\345\222\214\346\240\221.md" | 4 ++++ ...\234\200\344\275\216\345\276\227\345\210\206.md" | 4 ++++ ...\202\273\351\207\215\345\244\215\351\241\271.md" | 4 ++++ ...4\264\347\232\204\351\207\215\351\207\217 II.md" | 4 ++++ ...\271\246\345\272\227\350\200\201\346\235\277.md" | 4 ++++ ...\232\204\347\264\242\345\274\225\345\257\271.md" | 4 ++++ ...\264\273\345\255\227\345\215\260\345\210\267.md" | 4 ++++ ...\260\217\345\255\220\345\272\217\345\210\227.md" | 4 ++++ .../1089. \345\244\215\345\206\231\351\233\266.md" | 4 ++++ ...\234\200\347\237\255\350\267\257\345\276\204.md" | 4 ++++ ...\211\276\347\233\256\346\240\207\345\200\274.md" | 4 ++++ ...\270\244\346\225\260\344\271\213\345\222\214.md" | 4 ++++ ...\255\227\347\254\246\345\255\220\344\270\262.md" | 4 ++++ ...103. \345\210\206\347\263\226\346\236\234 II.md" | 4 ++++ ...\235\200\346\227\240\346\225\210\345\214\226.md" | 4 ++++ ...\242\204\350\256\242\347\273\237\350\256\241.md" | 4 ++++ ...\233\270\345\257\271\346\216\222\345\272\217.md" | 4 ++++ ...\271\266\350\241\214\350\257\276\347\250\213.md" | 4 ++++ ...\263\242\351\202\243\345\245\221\346\225\260.md" | 4 ++++ ...\205\261\345\255\220\345\272\217\345\210\227.md" | 4 ++++ ...20\210\346\211\200\346\234\211\347\232\204 1.md" | 4 ++++ ...\232\204\346\226\271\346\263\225\346\225\260.md" | 4 ++++ ...\206\205\345\205\203\347\264\240\345\222\214.md" | 4 ++++ ...\256\241\345\210\222\350\257\204\344\274\260.md" | 4 ++++ ...\227\264\347\232\204\350\267\235\347\246\273.md" | 4 ++++ ...\270\255\347\232\204\345\205\203\347\264\240.md" | 4 ++++ ...\254\246\344\270\262\347\233\270\347\255\211.md" | 4 ++++ .../1217. \347\216\251\347\255\271\347\240\201.md" | 4 ++++ ...\210\227\347\232\204\346\225\260\347\233\256.md" | 4 ++++ ...\210\206\351\205\215\346\246\202\347\216\207.md" | 4 ++++ ...\274\232\350\256\256\346\227\245\347\250\213.md" | 4 ++++ ...\274\200\347\202\271\346\210\220\347\272\277.md" | 4 ++++ ...\240\221\347\232\204\347\233\264\345\276\204.md" | 4 ++++ ...\254\246\344\270\262\347\233\270\345\220\214.md" | 4 ++++ ...\261\277\347\232\204\346\225\260\347\233\256.md" | 4 ++++ ...\234\200\345\260\217\346\227\266\351\227\264.md" | 4 ++++ ...\216\250\350\215\220\347\263\273\347\273\237.md" | 4 ++++ ...\247\257\345\222\214\344\271\213\345\267\256.md" | 4 ++++ ...\255\227\347\232\204\351\233\206\345\220\210.md" | 4 ++++ ...\232\204\346\225\260\347\273\204\345\222\214.md" | 4 ++++ ...\211\200\346\234\211\345\205\203\347\264\240.md" | 4 ++++ ...\274\202\346\210\226\346\237\245\350\257\242.md" | 4 ++++ ...\225\264\346\225\260\347\232\204\345\222\214.md" | 4 ++++ ...\223\215\344\275\234\346\254\241\346\225\260.md" | 4 ++++ ...\225\260\347\273\204\346\225\260\347\233\256.md" | 4 ++++ ...\244\247\345\255\246\347\224\237\346\225\260.md" | 4 ++++ ...\254\246\344\270\262\346\225\260\347\233\256.md" | 4 ++++ ...\223\215\344\275\234\347\232\204\346\240\210.md" | 4 ++++ ...\226\207\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...\254\246\344\270\262\345\214\271\351\205\215.md" | 4 ++++ ...\234\200\345\244\247\345\276\227\345\210\206.md" | 4 ++++ ...\234\200\345\244\247\347\202\271\346\225\260.md" | 4 ++++ ...\273\255\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\277\236\347\273\255\345\255\227\347\254\246.md" | 4 ++++ ...\234\200\347\256\200\345\210\206\346\225\260.md" | 4 ++++ ...\234\200\345\244\247\346\225\260\345\255\227.md" | 4 ++++ ...\255\246\347\224\237\344\272\272\346\225\260.md" | 4 ++++ ...\234\200\345\244\247\346\225\260\347\233\256.md" | 4 ++++ ...\232\204\345\212\250\346\200\201\345\222\214.md" | 4 ++++ ...\234\200\345\260\221\345\244\251\346\225\260.md" | 4 ++++ ...\274\202\346\210\226\346\223\215\344\275\234.md" | 4 ++++ ...\265\204\345\271\263\345\235\207\345\200\274.md" | 4 ++++ ...\225\277\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\255\211\345\267\256\346\225\260\345\210\227.md" | 4 ++++ ...\227\245\346\234\237\346\240\274\345\274\217.md" | 4 ++++ ...\245\207\346\225\260\346\225\260\347\233\256.md" | 4 ++++ ...\245\275\344\270\211\345\205\203\347\273\204.md" | 4 ++++ ...\234\200\345\260\217\346\210\220\346\234\254.md" | 4 ++++ ...\260\217\346\223\215\344\275\234\346\225\260.md" | 4 ++++ ...\275\215\345\210\206\351\232\224\346\225\260.md" | 4 ++++ ...\241\254\345\270\201\346\225\260\347\233\256.md" | 4 ++++ ...\225\260\347\273\204\351\225\277\345\272\246.md" | 4 ++++ ...\225\260\347\233\256\346\234\200\345\244\247.md" | 4 ++++ ...\234\200\345\260\217\346\210\220\346\234\254.md" | 4 ++++ ...\201\234\350\275\246\347\263\273\347\273\237.md" | 4 ++++ ...\217\257\350\241\214\347\237\251\351\230\265.md" | 4 ++++ ...\234\200\345\244\247\350\267\235\347\246\273.md" | 4 ++++ ...\266\210\350\200\227\350\267\257\345\276\204.md" | 4 ++++ ...\232\204\346\234\200\345\244\247\345\200\274.md" | 4 ++++ ...\260\217\346\223\215\344\275\234\346\225\260.md" | 4 ++++ ...\265\204\344\272\247\346\200\273\351\207\217.md" | 4 ++++ ...\234\200\345\244\247\345\276\227\345\210\206.md" | 4 ++++ ...\254\246\344\270\262\344\270\252\346\225\260.md" | 4 ++++ ...\244\247\345\215\225\345\205\203\346\225\260.md" | 4 ++++ ...\223\266\350\241\214\347\232\204\351\222\261.md" | 4 ++++ ...\220\216\347\232\204\346\225\260\347\273\204.md" | 4 ++++ ...\234\200\346\231\232\346\227\266\351\227\264.md" | 4 ++++ ...\234\200\345\244\247\346\225\260\351\207\217.md" | 4 ++++ ...\232\204\346\234\200\345\244\247\345\200\274.md" | 4 ++++ ...\235\220\346\240\207\347\232\204\347\202\271.md" | 4 ++++ ...\254\246\344\270\262\347\233\270\347\255\211.md" | 4 ++++ ...\270\255\345\277\203\350\212\202\347\202\271.md" | 4 ++++ ...\247\257\347\232\204\347\254\246\345\217\267.md" | 4 ++++ ...\234\200\345\244\247\346\225\260\351\207\217.md" | 4 ++++ ...\255\227\347\254\246\346\233\277\346\215\242.md" | 4 ++++ ...\234\200\351\225\277\345\215\225\350\257\215.md" | 4 ++++ ...\217\245\345\255\220\346\216\222\345\272\217.md" | 4 ++++ ...\255\220\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...\232\204\346\234\200\345\260\217\345\200\274.md" | 4 ++++ ...\210\226\345\200\274\344\271\213\345\222\214.md" | 4 ++++ ...\234\200\345\244\247\345\245\207\346\225\260.md" | 4 ++++ ...\273\204\347\232\204\346\225\260\347\233\256.md" | 4 ++++ ...\225\260\347\273\204\344\270\262\350\201\224.md" | 4 ++++ ...\254\241\346\225\260\347\233\270\345\220\214.md" | 4 ++++ ...\200\247\350\257\204\345\210\206\345\222\214.md" | 4 ++++ ...\275\234\346\227\266\351\227\264\346\256\265.md" | 4 ++++ ...\270\255\351\227\264\344\275\215\347\275\256.md" | 4 ++++ ...\233\206\347\232\204\346\225\260\347\233\256.md" | 4 ++++ ...\232\204\345\217\230\351\207\217\345\200\274.md" | 4 ++++ ...\255\227\347\254\246\344\270\262\345\257\271.md" | 4 ++++ ...\266\350\241\214\350\257\276\347\250\213 III.md" | 4 ++++ ...\200\274\347\232\204\345\255\220\344\270\262.md" | 4 ++++ ...\234\200\345\244\247\344\270\216\345\222\214.md" | 4 ++++ ...\225\264\346\225\260\347\233\270\345\212\240.md" | 4 ++++ ...\234\200\351\225\277\350\267\257\345\276\204.md" | 4 ++++ ...\240\274\347\202\271\346\225\260\347\233\256.md" | 4 ++++ ...\225\264\346\225\260\346\225\260\347\233\256.md" | 4 ++++ ...\211\271\346\256\212\346\225\264\346\225\260.md" | 4 ++++ ...\255\220\347\232\204\346\225\260\347\233\256.md" | 4 ++++ ...\222\214\347\232\204\345\267\256\345\200\274.md" | 4 ++++ ...\232\204\346\226\271\346\263\225\346\225\260.md" | 4 ++++ ...\225\264\346\225\260\346\225\260\347\233\256.md" | 4 ++++ ...212\250\346\200\201\350\247\204\345\210\222).md" | 4 ++++ ...\212\245\345\221\212\347\251\272\347\231\275.md" | 4 ++++ ...\244\215\347\232\204\346\225\260\345\255\227.md" | 4 ++++ ...\270\255\347\232\204\346\237\245\346\211\276.md" | 4 ++++ ...\233\277\346\215\242\347\251\272\346\240\274.md" | 4 ++++ ...\211\223\345\215\260\351\223\276\350\241\250.md" | 4 ++++ ...\273\272\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\256\236\347\216\260\351\230\237\345\210\227.md" | 4 ++++ ...\202\243\345\245\221\346\225\260\345\210\227.md" | 4 ++++ ...\217\260\351\230\266\351\227\256\351\242\230.md" | 4 ++++ ...\234\200\345\260\217\346\225\260\345\255\227.md" | 4 ++++ ...\270\255\347\232\204\350\267\257\345\276\204.md" | 4 ++++ ...\277\220\345\212\250\350\214\203\345\233\264.md" | 4 ++++ ... 14- I. \345\211\252\347\273\263\345\255\220.md" | 4 ++++ ...270\2551\347\232\204\344\270\252\346\225\260.md" | 4 ++++ ...\225\264\346\225\260\346\254\241\346\226\271.md" | 4 ++++ ...244\247\347\232\204n\344\275\215\346\225\260.md" | 4 ++++ ...\241\250\347\232\204\350\212\202\347\202\271.md" | 4 ++++ ...\201\266\346\225\260\345\211\215\351\235\242.md" | 4 ++++ ...254\254k\344\270\252\350\212\202\347\202\271.md" | 4 ++++ ...\217\215\350\275\254\351\223\276\350\241\250.md" | 4 ++++ ...\272\217\347\232\204\351\223\276\350\241\250.md" | 4 ++++ ...\232\204\345\255\220\347\273\223\346\236\204.md" | 4 ++++ ...\240\221\347\232\204\351\225\234\345\203\217.md" | 4 ++++ ...\232\204\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\211\223\345\215\260\347\237\251\351\230\265.md" | 4 ++++ ...\207\275\346\225\260\347\232\204\346\240\210.md" | 4 ++++ ...\274\271\345\207\272\345\272\217\345\210\227.md" | 4 ++++ ...\215\260\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...5\260\344\272\214\345\217\211\346\240\221 II.md" | 4 ++++ ...\260\344\272\214\345\217\211\346\240\221 III.md" | 4 ++++ ...\201\215\345\216\206\345\272\217\345\210\227.md" | 4 ++++ ...\200\274\347\232\204\350\267\257\345\276\204.md" | 4 ++++ ...\241\250\347\232\204\345\244\215\345\210\266.md" | 4 ++++ ...\217\214\345\220\221\351\223\276\350\241\250.md" | 4 ++++ ...\214\226\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\270\262\347\232\204\346\216\222\345\210\227.md" | 4 ++++ ...\215\212\347\232\204\346\225\260\345\255\227.md" | 4 ++++ ...260\217\347\232\204k\344\270\252\346\225\260.md" | 4 ++++ ...\232\204\344\270\255\344\275\215\346\225\260.md" | 4 ++++ ...\232\204\346\234\200\345\244\247\345\222\214.md" | 4 ++++ ...\275\215\347\232\204\346\225\260\345\255\227.md" | 4 ++++ ...\234\200\345\260\217\347\232\204\346\225\260.md" | 4 ++++ ...\210\220\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...\234\200\345\244\247\344\273\267\345\200\274.md" | 4 ++++ ...\255\220\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...6\214\207 Offer 49. \344\270\221\346\225\260.md" | 4 ++++ ...\254\241\347\232\204\345\255\227\347\254\246.md" | 4 ++++ ...\232\204\351\200\206\345\272\217\345\257\271.md" | 4 ++++ ...\205\254\345\205\261\350\212\202\347\202\271.md" | 4 ++++ ...37\245\346\211\276\346\225\260\345\255\227 I.md" | 4 ++++ ...\244\261\347\232\204\346\225\260\345\255\227.md" | 4 ++++ ...254\254k\345\244\247\350\212\202\347\202\271.md" | 4 ++++ ...\240\221\347\232\204\346\267\261\345\272\246.md" | 4 ++++ ...\241\241\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\216\260\347\232\204\346\254\241\346\225\260.md" | 4 ++++ ...\255\243\346\225\260\345\272\217\345\210\227.md" | 4 ++++ ...\270\244\344\270\252\346\225\260\345\255\227.md" | 4 ++++ ...\215\225\350\257\215\351\241\272\345\272\217.md" | 4 ++++ ...\275\254\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...\232\204\346\234\200\345\244\247\345\200\274.md" | 4 ++++ ...\232\204\346\234\200\345\244\247\345\200\274.md" | 4 ++++ ...\270\255\347\232\204\351\241\272\345\255\220.md" | 4 ++++ ...\270\213\347\232\204\346\225\260\345\255\227.md" | 13 ++++++++----- ...\234\200\345\244\247\345\210\251\346\266\246.md" | 4 ++++ ...207 Offer 64. \346\261\2021+2+\342\200\246+n.md" | 4 ++++ ...\231\244\345\201\232\345\212\240\346\263\225.md" | 4 ++++ ...\271\230\347\247\257\346\225\260\347\273\204.md" | 4 ++++ ...\215\242\346\210\220\346\225\264\346\225\260.md" | 4 ++++ ...\205\254\345\205\261\347\245\226\345\205\210.md" | 4 ++++ ...\205\254\345\205\261\347\245\226\345\205\210.md" | 4 ++++ ...\225\264\346\225\260\351\231\244\346\263\225.md" | 4 ++++ ...\277\233\345\210\266\345\212\240\346\263\225.md" | 4 ++++ ...0\255 1 \347\232\204\344\270\252\346\225\260.md" | 4 ++++ ...\254\241\347\232\204\346\225\260\345\255\227.md" | 4 ++++ ...\234\200\345\244\247\344\271\230\347\247\257.md" | 4 ++++ ...\225\260\345\255\227\344\271\213\345\222\214.md" | 4 ++++ ...\232\204\344\270\211\344\270\252\346\225\260.md" | 4 ++++ ...\237\255\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\232\204\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\232\204\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\232\204\345\255\220\346\225\260\347\273\204.md" | 4 ++++ ...\232\204\345\222\214\347\233\270\347\255\211.md" | 4 ++++ ...\237\251\351\230\265\347\232\204\345\222\214.md" | 4 ++++ ...\255\220\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...\237\255\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...\225\210\347\232\204\345\233\236\346\226\207.md" | 4 ++++ ...\276\227\345\210\260\345\233\236\346\226\207.md" | 4 ++++ ...\270\262\347\232\204\344\270\252\346\225\260.md" | 4 ++++ ...4\254 n \344\270\252\347\273\223\347\202\271.md" | 4 ++++ ...\205\245\345\217\243\350\212\202\347\202\271.md" | 4 ++++ ...\207\215\345\220\210\350\212\202\347\202\271.md" | 4 ++++ ...\217\215\350\275\254\351\223\276\350\241\250.md" | 4 ++++ ...\270\244\346\225\260\347\233\270\345\212\240.md" | 4 ++++ ...\207\215\346\216\222\351\223\276\350\241\250.md" | 4 ++++ ...\233\236\346\226\207\351\223\276\350\241\250.md" | 4 ++++ ...\217\214\345\220\221\351\223\276\350\241\250.md" | 4 ++++ ...\276\252\347\216\257\351\223\276\350\241\250.md" | 4 ++++ ...57 O(1) \347\232\204\345\256\271\345\231\250.md" | 4 ++++ ...\275\277\347\224\250\347\274\223\345\255\230.md" | 4 ++++ ...\232\204\345\217\230\344\275\215\350\257\215.md" | 4 ++++ ...\217\230\344\275\215\350\257\215\347\273\204.md" | 4 ++++ ...\230\257\345\220\246\346\216\222\345\272\217.md" | 4 ++++ ...\260\217\346\227\266\351\227\264\345\267\256.md" | 4 ++++ ...\274\200\350\241\250\350\276\276\345\274\217.md" | 4 ++++ ...\241\214\346\230\237\347\242\260\346\222\236.md" | 4 ++++ ...\257\217\346\227\245\346\270\251\345\272\246.md" | 4 ++++ ...\237\251\345\275\242\351\235\242\347\247\257.md" | 4 ++++ ...\232\204\345\271\263\345\235\207\345\200\274.md" | 4 ++++ ...\257\267\346\261\202\346\254\241\346\225\260.md" | 4 ++++ ...\267\273\345\212\240\350\212\202\347\202\271.md" | 4 ++++ ...\232\204\346\234\200\345\244\247\345\200\274.md" | 4 ++++ ...\267\246\350\276\271\347\232\204\345\200\274.md" | 4 ++++ ...\217\263\344\276\247\350\247\206\345\233\276.md" | 4 ++++ ...\217\211\346\240\221\345\211\252\346\236\235.md" | 4 ++++ ...\214\226\344\272\214\345\217\211\346\240\221.md" | 4 ++++ ...\225\260\345\255\227\344\271\213\345\222\214.md" | 4 ++++ ...\212\202\347\202\271\344\271\213\345\222\214.md" | 4 ++++ ...\244\247\347\232\204\350\267\257\345\276\204.md" | 4 ++++ ...\217\211\346\220\234\347\264\242\346\240\221.md" | 4 ++++ ...\270\255\345\272\217\345\220\216\347\273\247.md" | 4 ++++ ...\232\204\345\200\274\344\271\213\345\222\214.md" | 4 ++++ ...\240\221\350\277\255\344\273\243\345\231\250.md" | 4 ++++ ...\212\202\347\202\271\344\271\213\345\222\214.md" | 4 ++++ ...\232\204\350\214\203\345\233\264\345\206\205.md" | 4 ++++ ...4\254 K \345\244\247\346\225\260\345\200\274.md" | 4 ++++ ...2\204 k \344\270\252\346\225\260\345\255\227.md" | 4 ++++ ...\216\260\345\211\215\347\274\200\346\240\221.md" | 4 ++++ ...\233\277\346\215\242\345\215\225\350\257\215.md" | 4 ++++ ...\245\207\347\232\204\345\255\227\345\205\270.md" | 4 ++++ ...\215\225\350\257\215\347\274\226\347\240\201.md" | 4 ++++ ...\215\225\350\257\215\344\271\213\345\222\214.md" | 4 ++++ ...\244\247\347\232\204\345\274\202\346\210\226.md" | 4 ++++ ...\217\222\345\205\245\344\275\215\347\275\256.md" | 4 ++++ ...\261\202\345\271\263\346\226\271\346\240\271.md" | 4 ++++ ...\213\222\345\220\203\351\246\231\350\225\211.md" | 4 ++++ ...\220\210\345\271\266\345\214\272\351\227\264.md" | 4 ++++ ...\233\270\345\257\271\346\216\222\345\272\217.md" | 4 ++++ ...\244\247\347\232\204\346\225\260\345\255\227.md" | 4 ++++ ...\223\276\350\241\250\346\216\222\345\272\217.md" | 4 ++++ ...\216\222\345\272\217\351\223\276\350\241\250.md" | 4 ++++ ...\211\200\346\234\211\345\255\220\351\233\206.md" | 4 ++++ ...\264\240\347\232\204\347\273\204\345\220\210.md" | 4 ++++ ...\264\240\347\232\204\347\273\204\345\220\210.md" | 4 ++++ ...\220\210\347\232\204\347\273\204\345\220\210.md" | 4 ++++ ...\232\204\345\205\250\346\216\222\345\210\227.md" | 4 ++++ ...\232\204\345\205\250\346\216\222\345\210\227.md" | 4 ++++ ...\205\215\347\232\204\346\213\254\345\217\267.md" | 4 ++++ ...\255\220\345\255\227\347\254\246\344\270\262.md" | 4 ++++ ...07 Offer II 087. \345\244\215\345\216\237 IP.md" | 4 ++++ ...\234\200\345\260\221\346\210\220\346\234\254.md" | 4 ++++ ...\210\277\345\261\213\345\201\267\347\233\227.md" | 4 ++++ ...\210\277\345\261\213\345\201\267\347\233\227.md" | 4 ++++ ...\202\243\345\245\221\346\225\260\345\210\227.md" | 4 ++++ ...\205\261\345\255\220\345\272\217\345\210\227.md" | 4 ++++ ...\210\227\347\232\204\346\225\260\347\233\256.md" | 4 ++++ ...\276\204\347\232\204\346\225\260\347\233\256.md" | 4 ++++ ...\255\211\345\222\214\345\255\220\351\233\206.md" | 4 ++++ ...\232\204\347\233\256\346\240\207\345\200\274.md" | 4 ++++ ...\241\254\345\270\201\346\225\260\347\233\256.md" | 4 ++++ ...\210\227\347\232\204\346\225\260\347\233\256.md" | 4 ++++ ...\234\200\345\244\247\351\235\242\347\247\257.md" | 4 ++++ ...II 106. \344\272\214\345\210\206\345\233\276.md" | 4 ++++ ...\270\255\347\232\204\350\267\235\347\246\273.md" | 4 ++++ ...\215\225\350\257\215\346\274\224\345\217\230.md" | 4 ++++ ...\274\200\345\257\206\347\240\201\351\224\201.md" | 4 ++++ ...\256\241\347\256\227\351\231\244\346\263\225.md" | 4 ++++ ...\200\222\345\242\236\350\267\257\345\276\204.md" | 4 ++++ ...\257\276\347\250\213\351\241\272\345\272\217.md" | 4 ++++ ...\234\201\344\273\275\346\225\260\351\207\217.md" | 4 ++++ ...\244\232\344\275\231\347\232\204\350\276\271.md" | 4 ++++ ...\277\236\347\273\255\345\272\217\345\210\227.md" | 4 ++++ ...\227\213\350\275\254\347\237\251\351\230\265.md" | 4 ++++ ... 01.08. \351\233\266\347\237\251\351\230\265.md" | 4 ++++ ...4\254 k \344\270\252\350\212\202\347\202\271.md" | 4 ++++ ...\223\276\350\241\250\346\261\202\345\222\214.md" | 4 ++++ ...\233\236\346\226\207\351\223\276\350\241\250.md" | 4 ++++ ...\223\276\350\241\250\347\233\270\344\272\244.md" | 4 ++++ ...\216\257\350\267\257\346\243\200\346\265\213.md" | 4 ++++ ...\232\204\346\234\200\345\260\217\345\200\274.md" | 4 ++++ ...\214\226\346\240\210\344\270\272\351\230\237.md" | 4 ++++ ...\260\217\351\253\230\345\272\246\346\240\221.md" | 4 ++++ ...\217\211\346\220\234\347\264\242\346\240\221.md" | 4 ++++ ... 04.06. \345\220\216\347\273\247\350\200\205.md" | 4 ++++ ...\205\261\345\220\214\347\245\226\345\205\210.md" | 4 ++++ ...\261\202\345\222\214\350\267\257\345\276\204.md" | 4 ++++ ...\351\242\230 08.04. \345\271\202\351\233\206.md" | 4 ++++ ...\216\222\345\210\227\347\273\204\345\220\210.md" | 4 ++++ ...\216\222\345\210\227\347\273\204\345\220\210.md" | 4 ++++ ...\351\242\230 08.09. \346\213\254\345\217\267.md" | 4 ++++ ...\242\234\350\211\262\345\241\253\345\205\205.md" | 4 ++++ ... 08.12. \345\205\253\347\232\207\345\220\216.md" | 4 ++++ ...\272\217\347\232\204\346\225\260\347\273\204.md" | 4 ++++ ...\217\230\344\275\215\350\257\215\347\273\204.md" | 4 ++++ ...\237\251\351\230\265\346\237\245\346\211\276.md" | 4 ++++ ...\215\225\350\257\215\351\242\221\347\216\207.md" | 4 ++++ ...\230\266\344\271\230\345\260\276\346\225\260.md" | 4 ++++ ... 16.26. \350\256\241\347\256\227\345\231\250.md" | 4 ++++ ...\216\260\347\232\204\346\254\241\346\225\260.md" | 4 ++++ ...234\200\345\260\217K\344\270\252\346\225\260.md" | 4 ++++ ...\234\200\351\225\277\345\215\225\350\257\215.md" | 4 ++++ ...\244\232\346\254\241\346\220\234\347\264\242.md" | 4 ++++ 825 files changed, 3305 insertions(+), 6 deletions(-) diff --git "a/Solutions/0001. \344\270\244\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0001. \344\270\244\346\225\260\344\271\213\345\222\214.md" index 574dd6c2..c1b4d889 100644 --- "a/Solutions/0001. \344\270\244\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0001. \344\270\244\346\225\260\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表 - 难度:简单 +## 题目链接 + +- [0001. 两数之和 - 力扣](https://leetcode.cn/problems/two-sum/) + ## 题目大意 **描述**:给定一个整数数组 $nums$ 和一个整数目标值 $target$。 diff --git "a/Solutions/0002. \344\270\244\346\225\260\347\233\270\345\212\240.md" "b/Solutions/0002. \344\270\244\346\225\260\347\233\270\345\212\240.md" index 1c09d8fa..81ba2e09 100644 --- "a/Solutions/0002. \344\270\244\346\225\260\347\233\270\345\212\240.md" +++ "b/Solutions/0002. \344\270\244\346\225\260\347\233\270\345\212\240.md" @@ -3,6 +3,10 @@ - 标签:递归、链表、数学 - 难度:中等 +## 题目链接 + +- [0002. 两数相加 - 力扣](https://leetcode.cn/problems/add-two-numbers/) + ## 题目大意 **描述**:给定两个非空的链表 `l1` 和 `l2`。分别用来表示两个非负整数,每位数字都是按照逆序的方式存储的,每个节点存储一位数字。 diff --git "a/Solutions/0003. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" "b/Solutions/0003. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" index 63f0943c..eba49ead 100644 --- "a/Solutions/0003. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" +++ "b/Solutions/0003. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、滑动窗口 - 难度:中等 +## 题目链接 + +- [0003. 无重复字符的最长子串 - 力扣](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) + ## 题目大意 **描述**:给定一个字符串 $s$。 diff --git "a/Solutions/0004. \345\257\273\346\211\276\344\270\244\344\270\252\346\255\243\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260.md" "b/Solutions/0004. \345\257\273\346\211\276\344\270\244\344\270\252\346\255\243\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260.md" index 10268ac8..7ce95757 100644 --- "a/Solutions/0004. \345\257\273\346\211\276\344\270\244\344\270\252\346\255\243\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260.md" +++ "b/Solutions/0004. \345\257\273\346\211\276\344\270\244\344\270\252\346\255\243\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、分治 - 难度:困难 +## 题目链接 + +- [0004. 寻找两个正序数组的中位数 - 力扣](https://leetcode.cn/problems/median-of-two-sorted-arrays/) + ## 题目大意 **描述**:给定两个正序(从小到大排序)数组 $nums1$、$nums2$。 @@ -120,5 +124,5 @@ class Solution: ### 思路 1:复杂度分析 -- **时间复杂度**:$O(\log_2 (m + n))$ 。 +- **时间复杂度**:$O(\log (m + n))$ 。 - **空间复杂度**:$O(1)$。 \ No newline at end of file diff --git "a/Solutions/0005. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" "b/Solutions/0005. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" index cb323dac..522120ce 100644 --- "a/Solutions/0005. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" +++ "b/Solutions/0005. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:中等 +## 题目链接 + +- [0005. 最长回文子串 - 力扣](https://leetcode.cn/problems/longest-palindromic-substring/) + ## 题目大意 **描述**:给定一个字符串 $s$。 diff --git "a/Solutions/0007. \346\225\264\346\225\260\345\217\215\350\275\254.md" "b/Solutions/0007. \346\225\264\346\225\260\345\217\215\350\275\254.md" index 05f0791d..2fb6d63b 100644 --- "a/Solutions/0007. \346\225\264\346\225\260\345\217\215\350\275\254.md" +++ "b/Solutions/0007. \346\225\264\346\225\260\345\217\215\350\275\254.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:中等 +## 题目链接 + +- [0007. 整数反转 - 力扣](https://leetcode.cn/problems/reverse-integer/) + ## 题目大意 给定一个 32 位有符号整数 x,将 x 进行反转。 diff --git "a/Solutions/0008. \345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\225\264\346\225\260 (atoi).md" "b/Solutions/0008. \345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\225\264\346\225\260 (atoi).md" index 1366bbe4..15b0375f 100644 --- "a/Solutions/0008. \345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\225\264\346\225\260 (atoi).md" +++ "b/Solutions/0008. \345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\225\264\346\225\260 (atoi).md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:中等 +## 题目链接 + +- [0008. 字符串转换整数 (atoi) - 力扣](https://leetcode.cn/problems/string-to-integer-atoi/) + ## 题目大意 **描述**:给定一个字符串 `s`。 diff --git "a/Solutions/0009. \345\233\236\346\226\207\346\225\260.md" "b/Solutions/0009. \345\233\236\346\226\207\346\225\260.md" index 1b9ad70e..ad55c7c9 100644 --- "a/Solutions/0009. \345\233\236\346\226\207\346\225\260.md" +++ "b/Solutions/0009. \345\233\236\346\226\207\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:简单 +## 题目链接 + +- [0009. 回文数 - 力扣](https://leetcode.cn/problems/palindrome-number/) + ## 题目大意 给定整数 x,判断 x 是否是回文数。要求不能用整数转为字符串的方式来解决这个问题。 diff --git "a/Solutions/0010. \346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md" "b/Solutions/0010. \346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md" index 74ea1c1f..fa4cb589 100644 --- "a/Solutions/0010. \346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md" +++ "b/Solutions/0010. \346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md" @@ -3,6 +3,10 @@ - 标签:递归、字符串、动态规划 - 难度:困难 +## 题目链接 + +- [0010. 正则表达式匹配 - 力扣](https://leetcode.cn/problems/regular-expression-matching/) + ## 题目大意 **描述**:给定一个字符串 `s` 和一个字符模式串 `p`。 diff --git "a/Solutions/0011. \347\233\233\346\234\200\345\244\232\346\260\264\347\232\204\345\256\271\345\231\250.md" "b/Solutions/0011. \347\233\233\346\234\200\345\244\232\346\260\264\347\232\204\345\256\271\345\231\250.md" index 546a234b..53399d80 100644 --- "a/Solutions/0011. \347\233\233\346\234\200\345\244\232\346\260\264\347\232\204\345\256\271\345\231\250.md" +++ "b/Solutions/0011. \347\233\233\346\234\200\345\244\232\346\260\264\347\232\204\345\256\271\345\231\250.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、双指针 - 难度:中等 +## 题目链接 + +- [0011. 盛最多水的容器 - 力扣](https://leetcode.cn/problems/container-with-most-water/) + ## 题目大意 **描述**:给定 $n$ 个非负整数 $a_1,a_2, ...,a_n$,每个数代表坐标中的一个点 $(i, a_i)$。在坐标内画 $n$ 条垂直线,垂直线 $i$ 的两个端点分别为 $(i, a_i)$ 和 $(i, 0)$。 diff --git "a/Solutions/0012. \346\225\264\346\225\260\350\275\254\347\275\227\351\251\254\346\225\260\345\255\227.md" "b/Solutions/0012. \346\225\264\346\225\260\350\275\254\347\275\227\351\251\254\346\225\260\345\255\227.md" index e5f74701..1835edee 100644 --- "a/Solutions/0012. \346\225\264\346\225\260\350\275\254\347\275\227\351\251\254\346\225\260\345\255\227.md" +++ "b/Solutions/0012. \346\225\264\346\225\260\350\275\254\347\275\227\351\251\254\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:哈希表、数学、字符串 - 难度:中等 +## 题目链接 + +- [0012. 整数转罗马数字 - 力扣](https://leetcode.cn/problems/integer-to-roman/) + ## 题目大意 给定一个整数,将其转换为罗马数字。 diff --git "a/Solutions/0013. \347\275\227\351\251\254\346\225\260\345\255\227\350\275\254\346\225\264\346\225\260.md" "b/Solutions/0013. \347\275\227\351\251\254\346\225\260\345\255\227\350\275\254\346\225\264\346\225\260.md" index 594537c7..a6537c82 100644 --- "a/Solutions/0013. \347\275\227\351\251\254\346\225\260\345\255\227\350\275\254\346\225\264\346\225\260.md" +++ "b/Solutions/0013. \347\275\227\351\251\254\346\225\260\345\255\227\350\275\254\346\225\264\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:哈希表、数学、字符串 - 难度:简单 +## 题目链接 + +- [0013. 罗马数字转整数 - 力扣](https://leetcode.cn/problems/roman-to-integer/) + ## 题目大意 给定一个罗马数字对应的字符串,将其转换为整数。 diff --git "a/Solutions/0014. \346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md" "b/Solutions/0014. \346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md" index 64647e7a..d02b65dd 100644 --- "a/Solutions/0014. \346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md" +++ "b/Solutions/0014. \346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md" @@ -3,6 +3,10 @@ - 标签:字典树、字符串 - 难度:简单 +## 题目链接 + +- [0014. 最长公共前缀 - 力扣](https://leetcode.cn/problems/longest-common-prefix/) + ## 题目大意 **描述**:给定一个字符串数组 `strs`。 diff --git "a/Solutions/0015. \344\270\211\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0015. \344\270\211\346\225\260\344\271\213\345\222\214.md" index 7d80dbca..b132c338 100644 --- "a/Solutions/0015. \344\270\211\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0015. \344\270\211\346\225\260\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、排序 - 难度:中等 +## 题目链接 + +- [0015. 三数之和 - 力扣](https://leetcode.cn/problems/3sum/) + ## 题目大意 **描述**:给定一个整数数组 $nums$。 diff --git "a/Solutions/0016. \346\234\200\346\216\245\350\277\221\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0016. \346\234\200\346\216\245\350\277\221\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" index f80144bc..fa101277 100644 --- "a/Solutions/0016. \346\234\200\346\216\245\350\277\221\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0016. \346\234\200\346\216\245\350\277\221\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、排序 - 难度:中等 +## 题目链接 + +- [0016. 最接近的三数之和 - 力扣](https://leetcode.cn/problems/3sum-closest/) + ## 题目大意 给你一个整数数组 `nums` 和 一个目标值 `target`。 diff --git "a/Solutions/0017. \347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md" "b/Solutions/0017. \347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md" index f83820e5..97f98ba1 100644 --- "a/Solutions/0017. \347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md" +++ "b/Solutions/0017. \347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、回溯 - 难度:中等 +## 题目链接 + +- [0017. 电话号码的字母组合 - 力扣](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) + ## 题目大意 **描述**:给定一个只包含数字 2~9 的字符串 `digits`。给出数字到字母的映射如下(与电话按键相同)。注意 $1$ 不对应任何字母。 diff --git "a/Solutions/0018. \345\233\233\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0018. \345\233\233\346\225\260\344\271\213\345\222\214.md" index b68dbd51..cd1eb79c 100644 --- "a/Solutions/0018. \345\233\233\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0018. \345\233\233\346\225\260\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、排序 - 难度:中等 +## 题目链接 + +- [0018. 四数之和 - 力扣](https://leetcode.cn/problems/4sum/) + ## 题目大意 **描述**:给定一个整数数组 $nums$ 和一个目标值 $target$。 diff --git "a/Solutions/0019. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 N \344\270\252\347\273\223\347\202\271.md" "b/Solutions/0019. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 N \344\270\252\347\273\223\347\202\271.md" index ed370ef2..a2b3a524 100644 --- "a/Solutions/0019. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 N \344\270\252\347\273\223\347\202\271.md" +++ "b/Solutions/0019. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 N \344\270\252\347\273\223\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:链表、双指针 - 难度:中等 +## 题目链接 + +- [0019. 删除链表的倒数第 N 个结点 - 力扣](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) + ## 题目大意 **描述**:给定一个链表的头节点 `head`。 diff --git "a/Solutions/0020. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md" "b/Solutions/0020. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md" index cb619c9d..147cfb49 100644 --- "a/Solutions/0020. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md" +++ "b/Solutions/0020. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md" @@ -3,6 +3,10 @@ - 标签:栈、字符串 - 难度:简单 +## 题目链接 + +- [0020. 有效的括号 - 力扣](https://leetcode.cn/problems/valid-parentheses/) + ## 题目大意 **描述**:给定一个只包括 `'('`,`')'`,`'{'`,`'}'`,`'['`,`']'` 的字符串 `s` 。 diff --git "a/Solutions/0021. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.md" "b/Solutions/0021. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.md" index fbde2ded..af3f5721 100644 --- "a/Solutions/0021. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.md" +++ "b/Solutions/0021. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:递归、链表 - 难度:简单 +## 题目链接 + +- [0021. 合并两个有序链表 - 力扣](https://leetcode.cn/problems/merge-two-sorted-lists/) + ## 题目大意 **描述**:给定两个升序链表的头节点 `list1` 和 `list2`。 diff --git "a/Solutions/0022. \346\213\254\345\217\267\347\224\237\346\210\220.md" "b/Solutions/0022. \346\213\254\345\217\267\347\224\237\346\210\220.md" index 311e571d..c3357610 100644 --- "a/Solutions/0022. \346\213\254\345\217\267\347\224\237\346\210\220.md" +++ "b/Solutions/0022. \346\213\254\345\217\267\347\224\237\346\210\220.md" @@ -3,6 +3,10 @@ - 标签:字符串、回溯算法 - 难度:中等 +## 题目链接 + +- [0022. 括号生成 - 力扣](https://leetcode.cn/problems/generate-parentheses/) + ## 题目大意 **描述**:给定一个整数 $n$,代表生成括号的对数。 diff --git "a/Solutions/0023. \345\220\210\345\271\266 K \344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.md" "b/Solutions/0023. \345\220\210\345\271\266 K \344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.md" index 88256449..d2a07991 100644 --- "a/Solutions/0023. \345\220\210\345\271\266 K \344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.md" +++ "b/Solutions/0023. \345\220\210\345\271\266 K \344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:链表、分治、堆(优先队列)、归并排序 - 难度:困难 +## 题目链接 + +- [0023. 合并 K 个升序链表 - 力扣](https://leetcode.cn/problems/merge-k-sorted-lists/) + ## 题目大意 **描述**:给定一个链表数组,每个链表都已经按照升序排列。 diff --git "a/Solutions/0024. \344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" "b/Solutions/0024. \344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" index f30c5b43..fd9c75f1 100644 --- "a/Solutions/0024. \344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" +++ "b/Solutions/0024. \344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:递归、链表 - 难度:中等 +## 题目链接 + +- [0024. 两两交换链表中的节点 - 力扣](https://leetcode.cn/problems/swap-nodes-in-pairs/) + ## 题目大意 **描述**:给定一个链表的头节点 `head`。 diff --git "a/Solutions/0025. K \344\270\252\344\270\200\347\273\204\347\277\273\350\275\254\351\223\276\350\241\250.md" "b/Solutions/0025. K \344\270\252\344\270\200\347\273\204\347\277\273\350\275\254\351\223\276\350\241\250.md" index b06bb2bb..2df831e3 100644 --- "a/Solutions/0025. K \344\270\252\344\270\200\347\273\204\347\277\273\350\275\254\351\223\276\350\241\250.md" +++ "b/Solutions/0025. K \344\270\252\344\270\200\347\273\204\347\277\273\350\275\254\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:递归、链表 - 难度:困难 +## 题目链接 + +- [0025. K 个一组翻转链表 - 力扣](https://leetcode.cn/problems/reverse-nodes-in-k-group/) + ## 题目大意 **描述**:给你链表的头节点 `head` ,再给定一个正整数 `k`,`k` 的值小于或等于链表的长度。 diff --git "a/Solutions/0026. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md" "b/Solutions/0026. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md" index 0177da0b..b1709b79 100644 --- "a/Solutions/0026. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md" +++ "b/Solutions/0026. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针 - 难度:简单 +## 题目链接 + +- [0026. 删除有序数组中的重复项 - 力扣](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) + ## 题目大意 **描述**:给定一个有序数组 `nums`。 diff --git "a/Solutions/0027. \347\247\273\351\231\244\345\205\203\347\264\240.md" "b/Solutions/0027. \347\247\273\351\231\244\345\205\203\347\264\240.md" index 81e6d495..b5cfa25a 100644 --- "a/Solutions/0027. \347\247\273\351\231\244\345\205\203\347\264\240.md" +++ "b/Solutions/0027. \347\247\273\351\231\244\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针 - 难度:简单 +## 题目链接 + +- [0027. 移除元素 - 力扣](https://leetcode.cn/problems/remove-element/) + ## 题目大意 **描述**:给定一个数组 $nums$,和一个值 $val$。 diff --git "a/Solutions/0028. \346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md" "b/Solutions/0028. \346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md" index 0209e66a..0cb99923 100644 --- "a/Solutions/0028. \346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md" +++ "b/Solutions/0028. \346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md" @@ -3,6 +3,10 @@ - 标签:双指针、字符串、字符串匹配 - 难度:中等 +## 题目链接 + +- [0028. 找出字符串中第一个匹配项的下标 - 力扣](https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/) + ## 题目大意 **描述**:给定两个字符串 `haystack` 和 `needle`。 diff --git "a/Solutions/0029. \344\270\244\346\225\260\347\233\270\351\231\244.md" "b/Solutions/0029. \344\270\244\346\225\260\347\233\270\351\231\244.md" index cf0c3994..d855deca 100644 --- "a/Solutions/0029. \344\270\244\346\225\260\347\233\270\351\231\244.md" +++ "b/Solutions/0029. \344\270\244\346\225\260\347\233\270\351\231\244.md" @@ -3,6 +3,10 @@ - 标签:位运算、数学 - 难度:中等 +## 题目链接 + +- [0029. 两数相除 - 力扣](https://leetcode.cn/problems/divide-two-integers/) + ## 题目大意 给定两个整数,被除数 dividend 和除数 divisor。要求返回两数相除的商,并且不能使用乘法,除法和取余运算。取值范围在 $[-2^{31}, 2^{31}-1]$。如果结果溢出,则返回 $2^{31} - 1$。 diff --git "a/Solutions/0032. \346\234\200\351\225\277\346\234\211\346\225\210\346\213\254\345\217\267.md" "b/Solutions/0032. \346\234\200\351\225\277\346\234\211\346\225\210\346\213\254\345\217\267.md" index 3ecd5322..528054d4 100644 --- "a/Solutions/0032. \346\234\200\351\225\277\346\234\211\346\225\210\346\213\254\345\217\267.md" +++ "b/Solutions/0032. \346\234\200\351\225\277\346\234\211\346\225\210\346\213\254\345\217\267.md" @@ -3,6 +3,10 @@ - 标签:栈、字符串、动态规划 - 难度:困难 +## 题目链接 + +- [0032. 最长有效括号 - 力扣](https://leetcode.cn/problems/longest-valid-parentheses/) + ## 题目大意 **描述**:给定一个只包含 `'('` 和 `')'` 的字符串。 diff --git "a/Solutions/0033. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" "b/Solutions/0033. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" index af91e2de..8a70be0c 100644 --- "a/Solutions/0033. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" +++ "b/Solutions/0033. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:中等 +## 题目链接 + +- [0033. 搜索旋转排序数组 - 力扣](https://leetcode.cn/problems/search-in-rotated-sorted-array/) + ## 题目大意 **描述**:给定一个整数数组 $nums$,数组中值互不相同。给定的 $nums$ 是经过升序排列后的又进行了「旋转」操作的。再给定一个整数 $target$。 diff --git "a/Solutions/0034. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240\347\232\204\347\254\254\344\270\200\344\270\252\345\222\214\346\234\200\345\220\216\344\270\200\344\270\252\344\275\215\347\275\256.md" "b/Solutions/0034. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240\347\232\204\347\254\254\344\270\200\344\270\252\345\222\214\346\234\200\345\220\216\344\270\200\344\270\252\344\275\215\347\275\256.md" index 7a8ed441..fcab0e20 100644 --- "a/Solutions/0034. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240\347\232\204\347\254\254\344\270\200\344\270\252\345\222\214\346\234\200\345\220\216\344\270\200\344\270\252\344\275\215\347\275\256.md" +++ "b/Solutions/0034. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240\347\232\204\347\254\254\344\270\200\344\270\252\345\222\214\346\234\200\345\220\216\344\270\200\344\270\252\344\275\215\347\275\256.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:中等 +## 题目链接 + +- [0034. 在排序数组中查找元素的第一个和最后一个位置 - 力扣](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) + ## 题目大意 **描述**:给你一个按照非递减顺序排列的整数数组 `nums`,和一个目标值 `target`。 diff --git "a/Solutions/0035. \346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md" "b/Solutions/0035. \346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md" index e1de1996..134d20d4 100644 --- "a/Solutions/0035. \346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md" +++ "b/Solutions/0035. \346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:简单 +## 题目链接 + +- [0035. 搜索插入位置 - 力扣](https://leetcode.cn/problems/search-insert-position/) + ## 题目大意 **描述**:给定一个排好序的数组 $nums$,以及一个目标值 $target$。 diff --git "a/Solutions/0036. \346\234\211\346\225\210\347\232\204\346\225\260\347\213\254.md" "b/Solutions/0036. \346\234\211\346\225\210\347\232\204\346\225\260\347\213\254.md" index 77b17741..dc7f5211 100644 --- "a/Solutions/0036. \346\234\211\346\225\210\347\232\204\346\225\260\347\213\254.md" +++ "b/Solutions/0036. \346\234\211\346\225\210\347\232\204\346\225\260\347\213\254.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、矩阵 - 难度:中等 +## 题目链接 + +- [0036. 有效的数独 - 力扣](https://leetcode.cn/problems/valid-sudoku/) + ## 题目大意 **描述**:给定一个数独,用 `9 * 9` 的二维字符数组 `board` 来表示,其中,未填入的空白用 "." 代替。 diff --git "a/Solutions/0037. \350\247\243\346\225\260\347\213\254.md" "b/Solutions/0037. \350\247\243\346\225\260\347\213\254.md" index ecfec7d0..df5aa67b 100644 --- "a/Solutions/0037. \350\247\243\346\225\260\347\213\254.md" +++ "b/Solutions/0037. \350\247\243\346\225\260\347\213\254.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、回溯、矩阵 - 难度:困难 +## 题目链接 + +- [0037. 解数独 - 力扣](https://leetcode.cn/problems/sudoku-solver/) + ## 题目大意 **描述**:给定一个二维的字符数组 $board$ 用来表示数独,其中数字 $1 \sim 9$ 表示该位置已经填入了数字,`.` 表示该位置还没有填入数字。 diff --git "a/Solutions/0038. \345\244\226\350\247\202\346\225\260\345\210\227.md" "b/Solutions/0038. \345\244\226\350\247\202\346\225\260\345\210\227.md" index 89ead2f6..cc358b93 100644 --- "a/Solutions/0038. \345\244\226\350\247\202\346\225\260\345\210\227.md" +++ "b/Solutions/0038. \345\244\226\350\247\202\346\225\260\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:中等 +## 题目链接 + +- [0038. 外观数列 - 力扣](https://leetcode.cn/problems/count-and-say/) + ## 题目大意 给定一个正整数 n,$(1 \le n \le 30)$,要求输出外观数列的第 n 项。 diff --git "a/Solutions/0039. \347\273\204\345\220\210\346\200\273\345\222\214.md" "b/Solutions/0039. \347\273\204\345\220\210\346\200\273\345\222\214.md" index 7f0608fc..fe3ae34f 100644 --- "a/Solutions/0039. \347\273\204\345\220\210\346\200\273\345\222\214.md" +++ "b/Solutions/0039. \347\273\204\345\220\210\346\200\273\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯 - 难度:中等 +## 题目链接 + +- [0039. 组合总和 - 力扣](https://leetcode.cn/problems/combination-sum/) + ## 题目大意 **描述**:给定一个无重复元素的正整数数组 `candidates` 和一个正整数 `target`。 diff --git "a/Solutions/0040. \347\273\204\345\220\210\346\200\273\345\222\214 II.md" "b/Solutions/0040. \347\273\204\345\220\210\346\200\273\345\222\214 II.md" index 0f9b1024..53a35027 100644 --- "a/Solutions/0040. \347\273\204\345\220\210\346\200\273\345\222\214 II.md" +++ "b/Solutions/0040. \347\273\204\345\220\210\346\200\273\345\222\214 II.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯 - 难度:中等 +## 题目链接 + +- [0040. 组合总和 II - 力扣](https://leetcode.cn/problems/combination-sum-ii/) + ## 题目大意 **描述**:给定一个数组 `candidates` 和一个目标数 `target`。 diff --git "a/Solutions/0041. \347\274\272\345\244\261\347\232\204\347\254\254\344\270\200\344\270\252\346\255\243\346\225\260.md" "b/Solutions/0041. \347\274\272\345\244\261\347\232\204\347\254\254\344\270\200\344\270\252\346\255\243\346\225\260.md" index 04695407..f03e38aa 100644 --- "a/Solutions/0041. \347\274\272\345\244\261\347\232\204\347\254\254\344\270\200\344\270\252\346\255\243\346\225\260.md" +++ "b/Solutions/0041. \347\274\272\345\244\261\347\232\204\347\254\254\344\270\200\344\270\252\346\255\243\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表 - 难度:困难 +## 题目链接 + +- [0041. 缺失的第一个正数 - 力扣](https://leetcode.cn/problems/first-missing-positive/) + ## 题目大意 **描述**:给定一个未排序的整数数组 `nums`。 diff --git "a/Solutions/0042. \346\216\245\351\233\250\346\260\264.md" "b/Solutions/0042. \346\216\245\351\233\250\346\260\264.md" index e8605682..9ae6bd99 100644 --- "a/Solutions/0042. \346\216\245\351\233\250\346\260\264.md" +++ "b/Solutions/0042. \346\216\245\351\233\250\346\260\264.md" @@ -3,6 +3,10 @@ - 标签:栈、数组、双指针、动态规划、单调栈 - 难度:困难 +## 题目链接 + +- [0042. 接雨水 - 力扣](https://leetcode.cn/problems/trapping-rain-water/) + ## 题目大意 **描述**:给定 `n` 个非负整数表示每个宽度为 `1` 的柱子的高度图,用数组 `height` 表示,其中 `height[i]` 表示第 `i` 根柱子的高度。 diff --git "a/Solutions/0043. \345\255\227\347\254\246\344\270\262\347\233\270\344\271\230.md" "b/Solutions/0043. \345\255\227\347\254\246\344\270\262\347\233\270\344\271\230.md" index 49d67020..18c3949e 100644 --- "a/Solutions/0043. \345\255\227\347\254\246\344\270\262\347\233\270\344\271\230.md" +++ "b/Solutions/0043. \345\255\227\347\254\246\344\270\262\347\233\270\344\271\230.md" @@ -3,6 +3,10 @@ - 标签:数学、字符串、模拟 - 难度:中等 +## 题目链接 + +- [0043. 字符串相乘 - 力扣](https://leetcode.cn/problems/multiply-strings/) + ## 题目大意 **描述**:给定两个以字符串形式表示的非负整数 `num1` 和 `num2`。 diff --git "a/Solutions/0044. \351\200\232\351\205\215\347\254\246\345\214\271\351\205\215.md" "b/Solutions/0044. \351\200\232\351\205\215\347\254\246\345\214\271\351\205\215.md" index a4869773..35db144c 100644 --- "a/Solutions/0044. \351\200\232\351\205\215\347\254\246\345\214\271\351\205\215.md" +++ "b/Solutions/0044. \351\200\232\351\205\215\347\254\246\345\214\271\351\205\215.md" @@ -3,6 +3,10 @@ - 标签:贪心、递归、字符串、动态规划 - 难度:困难 +## 题目链接 + +- [0044. 通配符匹配 - 力扣](https://leetcode.cn/problems/wildcard-matching/) + ## 题目大意 **描述**:给定一个字符串 `s` 和一个字符模式串 `p`。 diff --git "a/Solutions/0045. \350\267\263\350\267\203\346\270\270\346\210\217 II.md" "b/Solutions/0045. \350\267\263\350\267\203\346\270\270\346\210\217 II.md" index 54883b42..a9fc3226 100644 --- "a/Solutions/0045. \350\267\263\350\267\203\346\270\270\346\210\217 II.md" +++ "b/Solutions/0045. \350\267\263\350\267\203\346\270\270\346\210\217 II.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、动态规划 - 难度:中等 +## 题目链接 + +- [0045. 跳跃游戏 II - 力扣](https://leetcode.cn/problems/jump-game-ii/) + ## 题目大意 **描述**:给定一个非负整数数组 `nums`,数组中每个元素代表在该位置可以跳跃的最大长度。开始位置为数组的第一个下标处。 diff --git "a/Solutions/0046. \345\205\250\346\216\222\345\210\227.md" "b/Solutions/0046. \345\205\250\346\216\222\345\210\227.md" index 9915462c..57890942 100644 --- "a/Solutions/0046. \345\205\250\346\216\222\345\210\227.md" +++ "b/Solutions/0046. \345\205\250\346\216\222\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯 - 难度:中等 +## 题目链接 + +- [0046. 全排列 - 力扣](https://leetcode.cn/problems/permutations/) + ## 题目大意 **描述**:给定一个不含重复数字的数组 `nums`。 diff --git "a/Solutions/0047. \345\205\250\346\216\222\345\210\227 II.md" "b/Solutions/0047. \345\205\250\346\216\222\345\210\227 II.md" index d67b5dea..c0978fa2 100644 --- "a/Solutions/0047. \345\205\250\346\216\222\345\210\227 II.md" +++ "b/Solutions/0047. \345\205\250\346\216\222\345\210\227 II.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯 - 难度:中等 +## 题目链接 + +- [0047. 全排列 II - 力扣](https://leetcode.cn/problems/permutations-ii/) + ## 题目大意 **描述**:给定一个可包含重复数字的序列 `nums`。 diff --git "a/Solutions/0048. \346\227\213\350\275\254\345\233\276\345\203\217.md" "b/Solutions/0048. \346\227\213\350\275\254\345\233\276\345\203\217.md" index 33e03826..0531905e 100644 --- "a/Solutions/0048. \346\227\213\350\275\254\345\233\276\345\203\217.md" +++ "b/Solutions/0048. \346\227\213\350\275\254\345\233\276\345\203\217.md" @@ -3,6 +3,10 @@ - 标签:数组、数学、矩阵 - 难度:中等 +## 题目链接 + +- [0048. 旋转图像 - 力扣](https://leetcode.cn/problems/rotate-image/) + ## 题目大意 **描述**:给定一个 $n \times n$ 大小的二维矩阵(代表图像)$matrix$。 diff --git "a/Solutions/0049. \345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\345\210\206\347\273\204.md" "b/Solutions/0049. \345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\345\210\206\347\273\204.md" index c9546760..9d422b1b 100644 --- "a/Solutions/0049. \345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\345\210\206\347\273\204.md" +++ "b/Solutions/0049. \345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\345\210\206\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、字符串、排序 - 难度:中等 +## 题目链接 + +- [0049. 字母异位词分组 - 力扣](https://leetcode.cn/problems/group-anagrams/) + ## 题目大意 给定一个字符串数组,将包含字母相同的字符串组合在一起,不需要考虑输出顺序。 diff --git a/Solutions/0050. Pow(x, n).md b/Solutions/0050. Pow(x, n).md index e46a51e3..140e6c9b 100644 --- a/Solutions/0050. Pow(x, n).md +++ b/Solutions/0050. Pow(x, n).md @@ -3,6 +3,10 @@ - 标签:递归、数学 - 难度:中等 +## 题目链接 + +- [0050. Pow(x, n) - 力扣](https://leetcode.cn/problems/powx-n/) + ## 题目大意 **描述**:给定浮点数 $x$ 和整数 $n$。 diff --git "a/Solutions/0051. N \347\232\207\345\220\216.md" "b/Solutions/0051. N \347\232\207\345\220\216.md" index c0cc836c..abd79e7b 100644 --- "a/Solutions/0051. N \347\232\207\345\220\216.md" +++ "b/Solutions/0051. N \347\232\207\345\220\216.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯 - 难度:困难 +## 题目链接 + +- [0051. N 皇后 - 力扣](https://leetcode.cn/problems/n-queens/) + ## 题目大意 **描述**:给定一个整数 `n`。 diff --git "a/Solutions/0052. N \347\232\207\345\220\216 II.md" "b/Solutions/0052. N \347\232\207\345\220\216 II.md" index 9dbdb452..d9dc0711 100644 --- "a/Solutions/0052. N \347\232\207\345\220\216 II.md" +++ "b/Solutions/0052. N \347\232\207\345\220\216 II.md" @@ -3,6 +3,10 @@ - 标签:回溯 - 难度:困难 +## 题目链接 + +- [0052. N 皇后 II - 力扣](https://leetcode.cn/problems/n-queens-ii/) + ## 题目大意 **描述**:给定一个整数 `n`。 diff --git "a/Solutions/0053. \346\234\200\345\244\247\345\255\220\346\225\260\347\273\204\345\222\214.md" "b/Solutions/0053. \346\234\200\345\244\247\345\255\220\346\225\260\347\273\204\345\222\214.md" index 30072c86..c4b31fe3 100644 --- "a/Solutions/0053. \346\234\200\345\244\247\345\255\220\346\225\260\347\273\204\345\222\214.md" +++ "b/Solutions/0053. \346\234\200\345\244\247\345\255\220\346\225\260\347\273\204\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、分治、动态规划 - 难度:中等 +## 题目链接 + +- [0053. 最大子数组和 - 力扣](https://leetcode.cn/problems/maximum-subarray/) + ## 题目大意 **描述**:给定一个整数数组 $nums$。 diff --git "a/Solutions/0054. \350\236\272\346\227\213\347\237\251\351\230\265.md" "b/Solutions/0054. \350\236\272\346\227\213\347\237\251\351\230\265.md" index 5f9d20e0..36303602 100644 --- "a/Solutions/0054. \350\236\272\346\227\213\347\237\251\351\230\265.md" +++ "b/Solutions/0054. \350\236\272\346\227\213\347\237\251\351\230\265.md" @@ -3,6 +3,10 @@ - 标签:数组、矩阵、模拟 - 难度:中等 +## 题目链接 + +- [0054. 螺旋矩阵 - 力扣](https://leetcode.cn/problems/spiral-matrix/) + ## 题目大意 **描述**:给定一个 $m \times n$ 大小的二维矩阵 $matrix$。 diff --git "a/Solutions/0055. \350\267\263\350\267\203\346\270\270\346\210\217.md" "b/Solutions/0055. \350\267\263\350\267\203\346\270\270\346\210\217.md" index 544d7202..300d6033 100644 --- "a/Solutions/0055. \350\267\263\350\267\203\346\270\270\346\210\217.md" +++ "b/Solutions/0055. \350\267\263\350\267\203\346\270\270\346\210\217.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、动态规划 - 难度:中等 +## 题目链接 + +- [0055. 跳跃游戏 - 力扣](https://leetcode.cn/problems/jump-game/) + ## 题目大意 **描述**:给定一个非负整数数组 `nums`,数组中每个元素代表在该位置可以跳跃的最大长度。开始位置位于数组的第一个下标处。 diff --git "a/Solutions/0056. \345\220\210\345\271\266\345\214\272\351\227\264.md" "b/Solutions/0056. \345\220\210\345\271\266\345\214\272\351\227\264.md" index 86d5d8fb..e1cd7b5b 100644 --- "a/Solutions/0056. \345\220\210\345\271\266\345\214\272\351\227\264.md" +++ "b/Solutions/0056. \345\220\210\345\271\266\345\214\272\351\227\264.md" @@ -3,6 +3,10 @@ - 标签:数组、排序 - 难度:中等 +## 题目链接 + +- [0056. 合并区间 - 力扣](https://leetcode.cn/problems/merge-intervals/) + ## 题目大意 **描述**:给定数组 `intervals` 表示若干个区间的集合,其中单个区间为 `intervals[i] = [starti, endi]` 。 diff --git "a/Solutions/0058. \346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md" "b/Solutions/0058. \346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md" index 2d241ba4..2c608249 100644 --- "a/Solutions/0058. \346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md" +++ "b/Solutions/0058. \346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:简单 +## 题目链接 + +- [0058. 最后一个单词的长度 - 力扣](https://leetcode.cn/problems/length-of-last-word/) + ## 题目大意 给定一个字符串 s,返回字符串中最后一个单词长度。 diff --git "a/Solutions/0059. \350\236\272\346\227\213\347\237\251\351\230\265 II.md" "b/Solutions/0059. \350\236\272\346\227\213\347\237\251\351\230\265 II.md" index d8090d19..d6efabe7 100644 --- "a/Solutions/0059. \350\236\272\346\227\213\347\237\251\351\230\265 II.md" +++ "b/Solutions/0059. \350\236\272\346\227\213\347\237\251\351\230\265 II.md" @@ -3,6 +3,10 @@ - 标签:数组、矩阵、模拟 - 难度:中等 +## 题目链接 + +- [0059. 螺旋矩阵 II - 力扣](https://leetcode.cn/problems/spiral-matrix-ii/) + ## 题目大意 给你一个正整数 $n$。 diff --git "a/Solutions/0061. \346\227\213\350\275\254\351\223\276\350\241\250.md" "b/Solutions/0061. \346\227\213\350\275\254\351\223\276\350\241\250.md" index 4e9f3a98..01c9a67b 100644 --- "a/Solutions/0061. \346\227\213\350\275\254\351\223\276\350\241\250.md" +++ "b/Solutions/0061. \346\227\213\350\275\254\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:链表、双指针 - 难度:中等 +## 题目链接 + +- [0061. 旋转链表 - 力扣](https://leetcode.cn/problems/rotate-list/) + ## 题目大意 给定一个链表和整数 k,将链表每个节点向右移动 k 个位置。 diff --git "a/Solutions/0062. \344\270\215\345\220\214\350\267\257\345\276\204.md" "b/Solutions/0062. \344\270\215\345\220\214\350\267\257\345\276\204.md" index 826a4dc0..45ddea61 100644 --- "a/Solutions/0062. \344\270\215\345\220\214\350\267\257\345\276\204.md" +++ "b/Solutions/0062. \344\270\215\345\220\214\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:数学、动态规划、组合数学 - 难度:中等 +## 题目链接 + +- [0062. 不同路径 - 力扣](https://leetcode.cn/problems/unique-paths/) + ## 题目大意 **描述**:给定两个整数 $m$ 和 $n$,代表大小为 $m \times n$ 的棋盘, 一个机器人位于棋盘左上角的位置,机器人每次只能向右、或者向下移动一步。 diff --git "a/Solutions/0063. \344\270\215\345\220\214\350\267\257\345\276\204 II.md" "b/Solutions/0063. \344\270\215\345\220\214\350\267\257\345\276\204 II.md" index 2ab7c21d..67584b59 100644 --- "a/Solutions/0063. \344\270\215\345\220\214\350\267\257\345\276\204 II.md" +++ "b/Solutions/0063. \344\270\215\345\220\214\350\267\257\345\276\204 II.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、矩阵 - 难度:中等 +## 题目链接 + +- [0063. 不同路径 II - 力扣](https://leetcode.cn/problems/unique-paths-ii/) + ## 题目大意 **描述**:一个机器人位于一个 $m \times n$ 网格的左上角。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。但是网格中有障碍物,不能通过。 diff --git "a/Solutions/0064. \346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" "b/Solutions/0064. \346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" index 338958c7..31a6e218 100644 --- "a/Solutions/0064. \346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" +++ "b/Solutions/0064. \346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、矩阵 - 难度:中等 +## 题目链接 + +- [0064. 最小路径和 - 力扣](https://leetcode.cn/problems/minimum-path-sum/) + ## 题目大意 **描述**:给定一个包含非负整数的 $m \times n$ 大小的网格 $grid$。 diff --git "a/Solutions/0066. \345\212\240\344\270\200.md" "b/Solutions/0066. \345\212\240\344\270\200.md" index 271b6056..ad249805 100644 --- "a/Solutions/0066. \345\212\240\344\270\200.md" +++ "b/Solutions/0066. \345\212\240\344\270\200.md" @@ -3,6 +3,10 @@ - 标签:数组、数学 - 难度:简单 +## 题目链接 + +- [0066. 加一 - 力扣](https://leetcode.cn/problems/plus-one/) + ## 题目大意 **描述**:给定一个非负整数数组,数组每一位对应整数的一位数字。 diff --git "a/Solutions/0067. \344\272\214\350\277\233\345\210\266\346\261\202\345\222\214.md" "b/Solutions/0067. \344\272\214\350\277\233\345\210\266\346\261\202\345\222\214.md" index ccdc4fdc..29a80de6 100644 --- "a/Solutions/0067. \344\272\214\350\277\233\345\210\266\346\261\202\345\222\214.md" +++ "b/Solutions/0067. \344\272\214\350\277\233\345\210\266\346\261\202\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:位运算、数学、字符串、模拟 - 难度:简单 +## 题目链接 + +- [0067. 二进制求和 - 力扣](https://leetcode.cn/problems/add-binary/) + ## 题目大意 给定两个二进制数的字符串 a、b。计算 a 和 b 的和,返回结果也用二进制表示。 diff --git "a/Solutions/0069. x \347\232\204\345\271\263\346\226\271\346\240\271.md" "b/Solutions/0069. x \347\232\204\345\271\263\346\226\271\346\240\271.md" index 8359af6a..85f1299c 100644 --- "a/Solutions/0069. x \347\232\204\345\271\263\346\226\271\346\240\271.md" +++ "b/Solutions/0069. x \347\232\204\345\271\263\346\226\271\346\240\271.md" @@ -3,6 +3,10 @@ - 标签:数学、二分查找 - 难度:简单 +## 题目链接 + +- [0069. x 的平方根 - 力扣](https://leetcode.cn/problems/sqrtx/) + ## 题目大意 **要求**:实现 `int sqrt(int x)` 函数。计算并返回 $x$ 的平方根(只保留整数部分),其中 $x$ 是非负整数。 diff --git "a/Solutions/0070. \347\210\254\346\245\274\346\242\257.md" "b/Solutions/0070. \347\210\254\346\245\274\346\242\257.md" index ee6a715c..4084516d 100644 --- "a/Solutions/0070. \347\210\254\346\245\274\346\242\257.md" +++ "b/Solutions/0070. \347\210\254\346\245\274\346\242\257.md" @@ -3,6 +3,10 @@ - 标签:记忆化搜索、数学、动态规划 - 难度:简单 +## 题目链接 + +- [0070. 爬楼梯 - 力扣](https://leetcode.cn/problems/climbing-stairs/) + ## 题目大意 **描述**:假设你正在爬楼梯。需要 $n$ 阶你才能到达楼顶。每次你可以爬 $1$ 或 $2$ 个台阶。现在给定一个整数 $n$。 diff --git "a/Solutions/0072. \347\274\226\350\276\221\350\267\235\347\246\273.md" "b/Solutions/0072. \347\274\226\350\276\221\350\267\235\347\246\273.md" index 47c01de5..4e90d4a2 100644 --- "a/Solutions/0072. \347\274\226\350\276\221\350\267\235\347\246\273.md" +++ "b/Solutions/0072. \347\274\226\350\276\221\350\267\235\347\246\273.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:困难 +## 题目链接 + +- [0072. 编辑距离 - 力扣](https://leetcode.cn/problems/edit-distance/) + ## 题目大意 **描述**:给定两个单词 $word1$、$word2$。 diff --git "a/Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" "b/Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" index 634bd106..aa27ca84 100644 --- "a/Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" +++ "b/Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、矩阵 - 难度:中等 +## 题目链接 + +- [0073. 矩阵置零 - 力扣](https://leetcode.cn/problems/set-matrix-zeroes/) + ## 题目大意 **描述**:给定一个 $m \times n$ 大小的矩阵 $matrix$。 diff --git "a/Solutions/0074. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265.md" "b/Solutions/0074. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265.md" index 588f66fb..2a2596c3 100644 --- "a/Solutions/0074. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265.md" +++ "b/Solutions/0074. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、矩阵 - 难度:中等 +## 题目链接 + +- [0074. 搜索二维矩阵 - 力扣](https://leetcode.cn/problems/search-a-2d-matrix/) + ## 题目大意 **描述**:给定一个 $m \times n$ 大小的有序二维矩阵 $matrix$。矩阵中每行元素从左到右升序排列,每列元素从上到下升序排列。再给定一个目标值 $target$。 diff --git "a/Solutions/0075. \351\242\234\350\211\262\345\210\206\347\261\273.md" "b/Solutions/0075. \351\242\234\350\211\262\345\210\206\347\261\273.md" index d7ec4f2e..5b7f365a 100644 --- "a/Solutions/0075. \351\242\234\350\211\262\345\210\206\347\261\273.md" +++ "b/Solutions/0075. \351\242\234\350\211\262\345\210\206\347\261\273.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、排序 - 难度:中等 +## 题目链接 + +- [0075. 颜色分类 - 力扣](https://leetcode.cn/problems/sort-colors/) + ## 题目大意 **描述**:给定一个数组 $nums$,元素值只有 $0$、$1$、$2$,分别代表红色、白色、蓝色。 diff --git "a/Solutions/0076. \346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262.md" "b/Solutions/0076. \346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262.md" index b82b56a8..6fae3269 100644 --- "a/Solutions/0076. \346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262.md" +++ "b/Solutions/0076. \346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、滑动窗口 - 难度:困难 +## 题目链接 + +- [0076. 最小覆盖子串 - 力扣](https://leetcode.cn/problems/minimum-window-substring/) + ## 题目大意 **描述**:给定一个字符串 `s`、一个字符串 `t`。 diff --git "a/Solutions/0077. \347\273\204\345\220\210.md" "b/Solutions/0077. \347\273\204\345\220\210.md" index 46bcebe5..7fc54b4d 100644 --- "a/Solutions/0077. \347\273\204\345\220\210.md" +++ "b/Solutions/0077. \347\273\204\345\220\210.md" @@ -3,6 +3,10 @@ - 标签:回溯 - 难度:中等 +## 题目链接 + +- [0077. 组合 - 力扣](https://leetcode.cn/problems/combinations/) + ## 题目大意 给定两个整数 `n` 和 `k`,返回范围 `[1, n]` 中所有可能的 `k` 个数的组合。可以按任何顺序返回答案。 diff --git "a/Solutions/0078. \345\255\220\351\233\206.md" "b/Solutions/0078. \345\255\220\351\233\206.md" index 5e97bd38..386ad101 100644 --- "a/Solutions/0078. \345\255\220\351\233\206.md" +++ "b/Solutions/0078. \345\255\220\351\233\206.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、回溯 - 难度:中等 +## 题目链接 + +- [0078. 子集 - 力扣](https://leetcode.cn/problems/subsets/) + ## 题目大意 **描述**:给定一个整数数组 `nums`,数组中的元素互不相同。 diff --git "a/Solutions/0079. \345\215\225\350\257\215\346\220\234\347\264\242.md" "b/Solutions/0079. \345\215\225\350\257\215\346\220\234\347\264\242.md" index ed426ebc..1d19b015 100644 --- "a/Solutions/0079. \345\215\225\350\257\215\346\220\234\347\264\242.md" +++ "b/Solutions/0079. \345\215\225\350\257\215\346\220\234\347\264\242.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯、矩阵 - 难度:中等 +## 题目链接 + +- [0079. 单词搜索 - 力扣](https://leetcode.cn/problems/word-search/) + ## 题目大意 **描述**:给定一个 $m \times n$ 大小的二维字符矩阵 $board$ 和一个字符串单词 $word$。 diff --git "a/Solutions/0080. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271 II.md" "b/Solutions/0080. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271 II.md" index 558ab094..e5e04b6a 100644 --- "a/Solutions/0080. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271 II.md" +++ "b/Solutions/0080. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271 II.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针 - 难度:中等 +## 题目链接 + +- [0080. 删除有序数组中的重复项 II - 力扣](https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/) + ## 题目大意 **描述**:给定一个有序数组 $nums$。 diff --git "a/Solutions/0081. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204 II.md" "b/Solutions/0081. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204 II.md" index a9968e0a..09a33ad6 100644 --- "a/Solutions/0081. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204 II.md" +++ "b/Solutions/0081. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204 II.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:中等 +## 题目链接 + +- [0081. 搜索旋转排序数组 II - 力扣](https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/) + ## 题目大意 **描述**:一个按照升序排列的整数数组 $nums$,在位置的某个下标 $k$ 处进行了旋转操作。(例如:$[0, 1, 2, 5, 6, 8]$ 可能变为 $[5, 6, 8, 0, 1, 2]$)。 diff --git "a/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" "b/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" index 031abdc0..912d2e22 100644 --- "a/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" +++ "b/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" @@ -3,6 +3,10 @@ - 标签:链表、双指针 - 难度:中等 +## 题目链接 + +- [0082. 删除排序链表中的重复元素 II - 力扣](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) + ## 题目大意 **描述**:给定一个已排序的链表的头 `head`。 diff --git "a/Solutions/0083. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" "b/Solutions/0083. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" index 65e7cbad..0d2f52e6 100644 --- "a/Solutions/0083. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" +++ "b/Solutions/0083. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:链表 - 难度:简单 +## 题目链接 + +- [0083. 删除排序链表中的重复元素 - 力扣](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) + ## 题目大意 **描述**:给定一个已排序的链表的头 `head`。 diff --git "a/Solutions/0084. \346\237\261\347\212\266\345\233\276\344\270\255\346\234\200\345\244\247\347\232\204\347\237\251\345\275\242.md" "b/Solutions/0084. \346\237\261\347\212\266\345\233\276\344\270\255\346\234\200\345\244\247\347\232\204\347\237\251\345\275\242.md" index dc771d44..555981a4 100644 --- "a/Solutions/0084. \346\237\261\347\212\266\345\233\276\344\270\255\346\234\200\345\244\247\347\232\204\347\237\251\345\275\242.md" +++ "b/Solutions/0084. \346\237\261\347\212\266\345\233\276\344\270\255\346\234\200\345\244\247\347\232\204\347\237\251\345\275\242.md" @@ -3,6 +3,10 @@ - 标签:栈、数组、单调栈 - 难度:困难 +## 题目链接 + +- [0084. 柱状图中最大的矩形 - 力扣](https://leetcode.cn/problems/largest-rectangle-in-histogram/) + ## 题目大意 给定一个非负整数数组 `heights` ,`heights[i]` 用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 diff --git "a/Solutions/0088. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204.md" "b/Solutions/0088. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204.md" index 7dbdb923..c3149100 100644 --- "a/Solutions/0088. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204.md" +++ "b/Solutions/0088. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、排序 - 难度:简单 +## 题目链接 + +- [0088. 合并两个有序数组 - 力扣](https://leetcode.cn/problems/merge-sorted-array/) + ## 题目大意 **描述**:给定两个有序数组 $nums1$、$nums2$。 diff --git "a/Solutions/0089. \346\240\274\351\233\267\347\274\226\347\240\201.md" "b/Solutions/0089. \346\240\274\351\233\267\347\274\226\347\240\201.md" index 1b3f085c..52cbf41b 100644 --- "a/Solutions/0089. \346\240\274\351\233\267\347\274\226\347\240\201.md" +++ "b/Solutions/0089. \346\240\274\351\233\267\347\274\226\347\240\201.md" @@ -3,6 +3,10 @@ - 标签:位运算、数学、回溯 - 难度:中等 +## 题目链接 + +- [0089. 格雷编码 - 力扣](https://leetcode.cn/problems/gray-code/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/0090. \345\255\220\351\233\206 II.md" "b/Solutions/0090. \345\255\220\351\233\206 II.md" index 5bbbabed..ccd8dd05 100644 --- "a/Solutions/0090. \345\255\220\351\233\206 II.md" +++ "b/Solutions/0090. \345\255\220\351\233\206 II.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、回溯 - 难度:中等 +## 题目链接 + +- [0090. 子集 II - 力扣](https://leetcode.cn/problems/subsets-ii/) + ## 题目大意 **描述**:给定一个整数数组 `nums`,其中可能包含重复元素。 diff --git "a/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" "b/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" index a168bc10..d2896189 100644 --- "a/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" +++ "b/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:中等 +## 题目链接 + +- [0091. 解码方法 - 力扣](https://leetcode.cn/problems/decode-ways/) + ## 题目大意 **描述**:给定一个数字字符串 $s$。该字符串已经按照下面的映射关系进行了编码: diff --git "a/Solutions/0092. \345\217\215\350\275\254\351\223\276\350\241\250 II.md" "b/Solutions/0092. \345\217\215\350\275\254\351\223\276\350\241\250 II.md" index df8b71a0..d68daf7e 100644 --- "a/Solutions/0092. \345\217\215\350\275\254\351\223\276\350\241\250 II.md" +++ "b/Solutions/0092. \345\217\215\350\275\254\351\223\276\350\241\250 II.md" @@ -3,6 +3,10 @@ - 标签:链表 - 难度:中等 +## 题目链接 + +- [0092. 反转链表 II - 力扣](https://leetcode.cn/problems/reverse-linked-list-ii/) + ## 题目大意 **描述**:给定单链表的头指针 `head` 和两个整数 `left` 和 `right` ,其中 `left <= right`。 diff --git "a/Solutions/0093. \345\244\215\345\216\237 IP \345\234\260\345\235\200.md" "b/Solutions/0093. \345\244\215\345\216\237 IP \345\234\260\345\235\200.md" index c085a047..59f4723b 100644 --- "a/Solutions/0093. \345\244\215\345\216\237 IP \345\234\260\345\235\200.md" +++ "b/Solutions/0093. \345\244\215\345\216\237 IP \345\234\260\345\235\200.md" @@ -3,6 +3,10 @@ - 标签:字符串、回溯 - 难度:中等 +## 题目链接 + +- [0093. 复原 IP 地址 - 力扣](https://leetcode.cn/problems/restore-ip-addresses/) + ## 题目大意 **描述**:给定一个只包含数字的字符串 `s`,用来表示一个 IP 地址 diff --git "a/Solutions/0094. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\255\345\272\217\351\201\215\345\216\206.md" "b/Solutions/0094. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\255\345\272\217\351\201\215\345\216\206.md" index e16ae1cc..91ab86d0 100644 --- "a/Solutions/0094. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\255\345\272\217\351\201\215\345\216\206.md" +++ "b/Solutions/0094. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\255\345\272\217\351\201\215\345\216\206.md" @@ -3,6 +3,10 @@ - 标签:栈、树、深度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0094. 二叉树的中序遍历 - 力扣](https://leetcode.cn/problems/binary-tree-inorder-traversal/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0095. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221 II.md" "b/Solutions/0095. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221 II.md" index c4ed13bb..1f96dbe7 100644 --- "a/Solutions/0095. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221 II.md" +++ "b/Solutions/0095. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221 II.md" @@ -3,6 +3,10 @@ - 标签:树、二叉搜索树、动态规划、回溯、二叉树 - 难度:中等 +## 题目链接 + +- [0095. 不同的二叉搜索树 II - 力扣](https://leetcode.cn/problems/unique-binary-search-trees-ii/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/0096. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/Solutions/0096. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" index f063b8bc..b9bd502a 100644 --- "a/Solutions/0096. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" +++ "b/Solutions/0096. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、二叉搜索树、数学、动态规划、二叉树 - 难度:中等 +## 题目链接 + +- [0096. 不同的二叉搜索树 - 力扣](https://leetcode.cn/problems/unique-binary-search-trees/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/0098. \351\252\214\350\257\201\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/Solutions/0098. \351\252\214\350\257\201\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" index 3a6a6a7c..c2c5dbfe 100644 --- "a/Solutions/0098. \351\252\214\350\257\201\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" +++ "b/Solutions/0098. \351\252\214\350\257\201\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [0098. 验证二叉搜索树 - 力扣](https://leetcode.cn/problems/validate-binary-search-tree/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0100. \347\233\270\345\220\214\347\232\204\346\240\221.md" "b/Solutions/0100. \347\233\270\345\220\214\347\232\204\346\240\221.md" index e4026967..d3978e41 100644 --- "a/Solutions/0100. \347\233\270\345\220\214\347\232\204\346\240\221.md" +++ "b/Solutions/0100. \347\233\270\345\220\214\347\232\204\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0100. 相同的树 - 力扣](https://leetcode.cn/problems/same-tree/) + ## 题目大意 **描述**:给定两个二叉树的根节点 $p$ 和 $q$。 diff --git "a/Solutions/0101. \345\257\271\347\247\260\344\272\214\345\217\211\346\240\221.md" "b/Solutions/0101. \345\257\271\347\247\260\344\272\214\345\217\211\346\240\221.md" index 306de530..d249c173 100644 --- "a/Solutions/0101. \345\257\271\347\247\260\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/0101. \345\257\271\347\247\260\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0101. 对称二叉树 - 力扣](https://leetcode.cn/problems/symmetric-tree/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0102. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" "b/Solutions/0102. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" index 1c00080d..422d0d82 100644 --- "a/Solutions/0102. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" +++ "b/Solutions/0102. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" @@ -3,6 +3,10 @@ - 标签:树、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0102. 二叉树的层序遍历 - 力扣](https://leetcode.cn/problems/binary-tree-level-order-traversal/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0103. \344\272\214\345\217\211\346\240\221\347\232\204\351\224\257\351\275\277\345\275\242\345\261\202\345\272\217\351\201\215\345\216\206.md" "b/Solutions/0103. \344\272\214\345\217\211\346\240\221\347\232\204\351\224\257\351\275\277\345\275\242\345\261\202\345\272\217\351\201\215\345\216\206.md" index b2f79dc1..084d01c9 100644 --- "a/Solutions/0103. \344\272\214\345\217\211\346\240\221\347\232\204\351\224\257\351\275\277\345\275\242\345\261\202\345\272\217\351\201\215\345\216\206.md" +++ "b/Solutions/0103. \344\272\214\345\217\211\346\240\221\347\232\204\351\224\257\351\275\277\345\275\242\345\261\202\345\272\217\351\201\215\345\216\206.md" @@ -3,6 +3,10 @@ - 标签:树、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0103. 二叉树的锯齿形层序遍历 - 力扣](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0104. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\244\247\346\267\261\345\272\246.md" "b/Solutions/0104. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\244\247\346\267\261\345\272\246.md" index 11d67699..8041e932 100644 --- "a/Solutions/0104. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\244\247\346\267\261\345\272\246.md" +++ "b/Solutions/0104. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\244\247\346\267\261\345\272\246.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0104. 二叉树的最大深度 - 力扣](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0105. \344\273\216\345\211\215\345\272\217\344\270\216\344\270\255\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" "b/Solutions/0105. \344\273\216\345\211\215\345\272\217\344\270\216\344\270\255\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" index cebb9c28..58f7605b 100644 --- "a/Solutions/0105. \344\273\216\345\211\215\345\272\217\344\270\216\344\270\255\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/0105. \344\273\216\345\211\215\345\272\217\344\270\216\344\270\255\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、数组、哈希表、分治、二叉树 - 难度:中等 +## 题目链接 + +- [0105. 从前序与中序遍历序列构造二叉树 - 力扣](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) + ## 题目大意 **描述**:给定一棵二叉树的前序遍历结果 `preorder` 和中序遍历结果 `inorder`。 diff --git "a/Solutions/0106. \344\273\216\344\270\255\345\272\217\344\270\216\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" "b/Solutions/0106. \344\273\216\344\270\255\345\272\217\344\270\216\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" index b1f69122..fc2abb52 100644 --- "a/Solutions/0106. \344\273\216\344\270\255\345\272\217\344\270\216\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/0106. \344\273\216\344\270\255\345\272\217\344\270\216\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、数组、哈希表、分治、二叉树 - 难度:中等 +## 题目链接 + +- [0106. 从中序与后序遍历序列构造二叉树 - 力扣](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) + ## 题目大意 **描述**:给定一棵二叉树的中序遍历结果 `inorder` 和后序遍历结果 `postorder`。 diff --git "a/Solutions/0107. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206 II.md" "b/Solutions/0107. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206 II.md" index a2d884f5..5bb69661 100644 --- "a/Solutions/0107. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206 II.md" +++ "b/Solutions/0107. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206 II.md" @@ -3,6 +3,10 @@ - 标签:树、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0107. 二叉树的层序遍历 II - 力扣](https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/) + ## 题目大意 **描述**:给定一个二叉树的根节点 $root$。 diff --git "a/Solutions/0108. \345\260\206\346\234\211\345\272\217\346\225\260\347\273\204\350\275\254\346\215\242\344\270\272\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/Solutions/0108. \345\260\206\346\234\211\345\272\217\346\225\260\347\273\204\350\275\254\346\215\242\344\270\272\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" index 9445bfda..982e5e48 100644 --- "a/Solutions/0108. \345\260\206\346\234\211\345\272\217\346\225\260\347\273\204\350\275\254\346\215\242\344\270\272\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" +++ "b/Solutions/0108. \345\260\206\346\234\211\345\272\217\346\225\260\347\273\204\350\275\254\346\215\242\344\270\272\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、二叉搜索树、数组、分治、二叉树 - 难度:简单 +## 题目链接 + +- [0108. 将有序数组转换为二叉搜索树 - 力扣](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/) + ## 题目大意 **描述**:给定一个升序的有序数组 `nums`。 diff --git "a/Solutions/0110. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" "b/Solutions/0110. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" index d71d3306..d79ad4bf 100644 --- "a/Solutions/0110. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/0110. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0110. 平衡二叉树 - 力扣](https://leetcode.cn/problems/balanced-binary-tree/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0111. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" "b/Solutions/0111. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" index d447e723..bee2e4cd 100644 --- "a/Solutions/0111. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" +++ "b/Solutions/0111. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索 - 难度:简单 +## 题目链接 + +- [0111. 二叉树的最小深度 - 力扣](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) + ## 题目大意 **描述**:给定一个二叉树的根节点 $root$。 diff --git "a/Solutions/0112. \350\267\257\345\276\204\346\200\273\345\222\214.md" "b/Solutions/0112. \350\267\257\345\276\204\346\200\273\345\222\214.md" index 28d697fc..d8a6c5e7 100644 --- "a/Solutions/0112. \350\267\257\345\276\204\346\200\273\345\222\214.md" +++ "b/Solutions/0112. \350\267\257\345\276\204\346\200\273\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索 - 难度:简单 +## 题目链接 + +- [0112. 路径总和 - 力扣](https://leetcode.cn/problems/path-sum/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root` 和一个值 `targetSum`。 diff --git "a/Solutions/0113. \350\267\257\345\276\204\346\200\273\345\222\214 II.md" "b/Solutions/0113. \350\267\257\345\276\204\346\200\273\345\222\214 II.md" index 0d2b5704..0254b76f 100644 --- "a/Solutions/0113. \350\267\257\345\276\204\346\200\273\345\222\214 II.md" +++ "b/Solutions/0113. \350\267\257\345\276\204\346\200\273\345\222\214 II.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、回溯、二叉树 - 难度:中等 +## 题目链接 + +- [0113. 路径总和 II - 力扣](https://leetcode.cn/problems/path-sum-ii/) + ## 题目大意 **描述**:给定一棵二叉树的根节点 `root` 和一个整数目标 `targetSum`。 diff --git "a/Solutions/0115. \344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" "b/Solutions/0115. \344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" index 9d94a0a1..5e198c1f 100644 --- "a/Solutions/0115. \344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/0115. \344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:困难 +## 题目链接 + +- [0115. 不同的子序列 - 力扣](https://leetcode.cn/problems/distinct-subsequences/) + ## 题目大意 **描述**:给定两个字符串 `s` 和 `t`。 diff --git "a/Solutions/0116. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" "b/Solutions/0116. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" index 9f675257..e25bf145 100644 --- "a/Solutions/0116. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" +++ "b/Solutions/0116. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、链表、二叉树 - 难度:中等 +## 题目链接 + +- [0116. 填充每个节点的下一个右侧节点指针 - 力扣](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/) + ## 题目大意 **描述**:给定一个完美二叉树,所有叶子节点都在同一层,每个父节点都有两个子节点。完美二叉树结构如下: diff --git "a/Solutions/0117. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210 II.md" "b/Solutions/0117. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210 II.md" index 0f561581..617c94dc 100644 --- "a/Solutions/0117. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210 II.md" +++ "b/Solutions/0117. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210 II.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、链表、二叉树 - 难度:中等 +## 题目链接 + +- [0117. 填充每个节点的下一个右侧节点指针 II - 力扣](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/) + ## 题目大意 **描述**:给定一个二叉树。二叉树结构如下: diff --git "a/Solutions/0118. \346\235\250\350\276\211\344\270\211\350\247\222.md" "b/Solutions/0118. \346\235\250\350\276\211\344\270\211\350\247\222.md" index e97957d6..ffa95931 100644 --- "a/Solutions/0118. \346\235\250\350\276\211\344\270\211\350\247\222.md" +++ "b/Solutions/0118. \346\235\250\350\276\211\344\270\211\350\247\222.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:简单 +## 题目链接 + +- [0118. 杨辉三角 - 力扣](https://leetcode.cn/problems/pascals-triangle/) + ## 题目大意 **描述**:给定一个整数 $numRows$。 diff --git "a/Solutions/0119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" "b/Solutions/0119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" index d4822053..c37b67a2 100644 --- "a/Solutions/0119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" +++ "b/Solutions/0119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:简单 +## 题目链接 + +- [0119. 杨辉三角 II - 力扣](https://leetcode.cn/problems/pascals-triangle-ii/) + ## 题目大意 **描述**:给定一个非负整数 $rowIndex$。 diff --git "a/Solutions/0120. \344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" "b/Solutions/0120. \344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" index 47a6ea0d..28e57394 100644 --- "a/Solutions/0120. \344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" +++ "b/Solutions/0120. \344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [0120. 三角形最小路径和 - 力扣](https://leetcode.cn/problems/triangle/) + ## 题目大意 **描述**:给定一个代表三角形的二维数组 $triangle$,$triangle$ 共有 $n$ 行,其中第 $i$ 行(从 $0$ 开始编号)包含了 $i + 1$ 个数。 diff --git "a/Solutions/0121. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272.md" "b/Solutions/0121. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272.md" index 62f4eb89..1a0198cf 100644 --- "a/Solutions/0121. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272.md" +++ "b/Solutions/0121. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:简单 +## 题目链接 + +- [0121. 买卖股票的最佳时机 - 力扣](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) + ## 题目大意 **描述**:给定一个数组 `prices` ,它的第 `i` 个元素 `prices[i]` 表示一支给定股票第 `i` 天的价格。只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。 diff --git "a/Solutions/0122. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 II.md" "b/Solutions/0122. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 II.md" index 1e96384b..0dd6553f 100644 --- "a/Solutions/0122. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 II.md" +++ "b/Solutions/0122. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 II.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、动态规划 - 难度:中等 +## 题目链接 + +- [0122. 买卖股票的最佳时机 II - 力扣](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) + ## 题目大意 **描述**:给定一个整数数组 `prices` ,其中 `prices[i]` 表示某支股票第 `i` 天的价格。在每一天,你可以决定是否购买 / 出售股票。你在任何时候最多只能持有一股股票。你也可以先购买,然后在同一天出售。 diff --git "a/Solutions/0123. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 III.md" "b/Solutions/0123. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 III.md" index 570eb8b9..48cfaef1 100644 --- "a/Solutions/0123. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 III.md" +++ "b/Solutions/0123. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 III.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:困难 +## 题目链接 + +- [0123. 买卖股票的最佳时机 III - 力扣](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/) + ## 题目大意 给定一个数组 `prices` 代表一只股票,其中 `prices[i]` 代表这只股票第 `i` 天的价格。最多可完成两笔交易,且不同同时参与躲避交易(必须在再次购买前出售掉之前的股票)。 diff --git "a/Solutions/0124. \344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" "b/Solutions/0124. \344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" index 12bba562..043ade00 100644 --- "a/Solutions/0124. \344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" +++ "b/Solutions/0124. \344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、动态规划、二叉树 - 难度:困难 +## 题目链接 + +- [0124. 二叉树中的最大路径和 - 力扣](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) + ## 题目大意 **描述**:给定一个二叉树的根节点 $root$。 diff --git "a/Solutions/0125. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md" "b/Solutions/0125. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md" index a004e5eb..74a46955 100644 --- "a/Solutions/0125. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md" +++ "b/Solutions/0125. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:双指针、字符串 - 难度:简单 +## 题目链接 + +- [0125. 验证回文串 - 力扣](https://leetcode.cn/problems/valid-palindrome/) + ## 题目大意 **描述**:给定一个字符串 `s`。 diff --git "a/Solutions/0127. \345\215\225\350\257\215\346\216\245\351\276\231.md" "b/Solutions/0127. \345\215\225\350\257\215\346\216\245\351\276\231.md" index 950ac389..42ebe090 100644 --- "a/Solutions/0127. \345\215\225\350\257\215\346\216\245\351\276\231.md" +++ "b/Solutions/0127. \345\215\225\350\257\215\346\216\245\351\276\231.md" @@ -3,6 +3,10 @@ - 标签:广度优先搜索、哈希表、字符串 - 难度:困难 +## 题目链接 + +- [0127. 单词接龙 - 力扣](https://leetcode.cn/problems/word-ladder/) + ## 题目大意 给定两个单词 `beginWord` 和 `endWord`,以及一个字典 `wordList`。找到从 `beginWord` 到 `endWord` 的最短转换序列中的单词数目。如果不存在这样的转换序列,则返回 0。 diff --git "a/Solutions/0128. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" "b/Solutions/0128. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" index 1bc37af8..8f24d76d 100644 --- "a/Solutions/0128. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" +++ "b/Solutions/0128. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:并查集、数组、哈希表 - 难度:中等 +## 题目链接 + +- [0128. 最长连续序列 - 力扣](https://leetcode.cn/problems/longest-consecutive-sequence/) + ## 题目大意 **描述**:给定一个未排序的整数数组 `nums`。 diff --git "a/Solutions/0129. \346\261\202\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\346\225\260\345\255\227\344\271\213\345\222\214.md" "b/Solutions/0129. \346\261\202\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\346\225\260\345\255\227\344\271\213\345\222\214.md" index 49225cd8..8f2e745f 100644 --- "a/Solutions/0129. \346\261\202\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\346\225\260\345\255\227\344\271\213\345\222\214.md" +++ "b/Solutions/0129. \346\261\202\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\346\225\260\345\255\227\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0129. 求根节点到叶节点数字之和 - 力扣](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`,树中每个节点都存放有一个 `0` 到 `9` 之间的数字。每条从根节点到叶节点的路径都代表一个数字。例如,从根节点到叶节点的路径是 `1` -> `2` -> `3`,表示数字 `123`。 diff --git "a/Solutions/0130. \350\242\253\345\233\264\347\273\225\347\232\204\345\214\272\345\237\237.md" "b/Solutions/0130. \350\242\253\345\233\264\347\273\225\347\232\204\345\214\272\345\237\237.md" index 8737f777..1521a584 100644 --- "a/Solutions/0130. \350\242\253\345\233\264\347\273\225\347\232\204\345\214\272\345\237\237.md" +++ "b/Solutions/0130. \350\242\253\345\233\264\347\273\225\347\232\204\345\214\272\345\237\237.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、数组、矩阵 - 难度:中等 +## 题目链接 + +- [0130. 被围绕的区域 - 力扣](https://leetcode.cn/problems/surrounded-regions/) + ## 题目大意 **描述**:给定一个 `m * n` 的矩阵 `board`,由若干字符 `X` 和 `O` 构成。 diff --git "a/Solutions/0131. \345\210\206\345\211\262\345\233\236\346\226\207\344\270\262.md" "b/Solutions/0131. \345\210\206\345\211\262\345\233\236\346\226\207\344\270\262.md" index d09962c4..ee2268a6 100644 --- "a/Solutions/0131. \345\210\206\345\211\262\345\233\236\346\226\207\344\270\262.md" +++ "b/Solutions/0131. \345\210\206\345\211\262\345\233\236\346\226\207\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划、回溯 - 难度:中等 +## 题目链接 + +- [0131. 分割回文串 - 力扣](https://leetcode.cn/problems/palindrome-partitioning/) + ## 题目大意 给定一个字符串 `s`,将 `s` 分割成一些子串,保证每个子串都是「回文串」。返回 `s` 所有可能的分割方案。 diff --git "a/Solutions/0133. \345\205\213\351\232\206\345\233\276.md" "b/Solutions/0133. \345\205\213\351\232\206\345\233\276.md" index c5d05591..feed92da 100644 --- "a/Solutions/0133. \345\205\213\351\232\206\345\233\276.md" +++ "b/Solutions/0133. \345\205\213\351\232\206\345\233\276.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、图、哈希表 - 难度:中等 +## 题目链接 + +- [0133. 克隆图 - 力扣](https://leetcode.cn/problems/clone-graph/) + ## 题目大意 **描述**:以每个节点的邻接列表形式(二维列表)给定一个无向连通图,其中 $adjList[i]$ 表示值为 $i + 1$ 的节点的邻接列表,$adjList[i][j]$ 表示值为 $i + 1$ 的节点与值为 $adjList[i][j]$ 的节点有一条边。 diff --git "a/Solutions/0134. \345\212\240\346\262\271\347\253\231.md" "b/Solutions/0134. \345\212\240\346\262\271\347\253\231.md" index f9cad2f5..60dc48de 100644 --- "a/Solutions/0134. \345\212\240\346\262\271\347\253\231.md" +++ "b/Solutions/0134. \345\212\240\346\262\271\347\253\231.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组 - 难度:中等 +## 题目链接 + +- [0134. 加油站 - 力扣](https://leetcode.cn/problems/gas-station/) + ## 题目大意 一条环路上有 N 个加油站,第 i 个加油站有 gas[i] 升汽油。 diff --git "a/Solutions/0135. \345\210\206\345\217\221\347\263\226\346\236\234.md" "b/Solutions/0135. \345\210\206\345\217\221\347\263\226\346\236\234.md" index 99693544..f81a6918 100644 --- "a/Solutions/0135. \345\210\206\345\217\221\347\263\226\346\236\234.md" +++ "b/Solutions/0135. \345\210\206\345\217\221\347\263\226\346\236\234.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组 - 难度:困难 +## 题目链接 + +- [0135. 分发糖果 - 力扣](https://leetcode.cn/problems/candy/) + ## 题目大意 **描述**:$n$ 个孩子站成一排。老师会根据每个孩子的表现,给每个孩子进行评分。然后根据下面的规则给孩子们分发糖果: diff --git "a/Solutions/0136. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" "b/Solutions/0136. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" index 2480ea23..a758c6fe 100644 --- "a/Solutions/0136. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/0136. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组 - 难度:简单 +## 题目链接 + +- [0136. 只出现一次的数字 - 力扣](https://leetcode.cn/problems/single-number/) + ## 题目大意 **描述**:给定一个非空整数数组 `nums`,`nums` 中除了某个元素只出现一次以外,其余每个元素均出现两次。 diff --git "a/Solutions/0137. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 II.md" "b/Solutions/0137. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 II.md" index 8896c5fb..f15493c7 100644 --- "a/Solutions/0137. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 II.md" +++ "b/Solutions/0137. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 II.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组 - 难度:中等 +## 题目链接 + +- [0137. 只出现一次的数字 II - 力扣](https://leetcode.cn/problems/single-number-ii/) + ## 题目大意 **描述**:给定一个整数数组 $nums$,除了某个元素仅出现一次外,其余每个元素恰好出现三次。 diff --git "a/Solutions/0138. \345\244\215\345\210\266\345\270\246\351\232\217\346\234\272\346\214\207\351\222\210\347\232\204\351\223\276\350\241\250.md" "b/Solutions/0138. \345\244\215\345\210\266\345\270\246\351\232\217\346\234\272\346\214\207\351\222\210\347\232\204\351\223\276\350\241\250.md" index 8b0dc838..7bea1029 100644 --- "a/Solutions/0138. \345\244\215\345\210\266\345\270\246\351\232\217\346\234\272\346\214\207\351\222\210\347\232\204\351\223\276\350\241\250.md" +++ "b/Solutions/0138. \345\244\215\345\210\266\345\270\246\351\232\217\346\234\272\346\214\207\351\222\210\347\232\204\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:哈希表、链表 - 难度:中等 +## 题目链接 + +- [0138. 复制带随机指针的链表 - 力扣](https://leetcode.cn/problems/copy-list-with-random-pointer/) + ## 题目大意 **描述**:给定一个链表的头节点 `head`,链表中每个节点除了 `next` 指针之外,还包含一个随机指针 `random`,该指针可以指向链表中的任何节点或者空节点。 diff --git "a/Solutions/0139. \345\215\225\350\257\215\346\213\206\345\210\206.md" "b/Solutions/0139. \345\215\225\350\257\215\346\213\206\345\210\206.md" index 057ae04a..5a3604c0 100644 --- "a/Solutions/0139. \345\215\225\350\257\215\346\213\206\345\210\206.md" +++ "b/Solutions/0139. \345\215\225\350\257\215\346\213\206\345\210\206.md" @@ -3,6 +3,10 @@ - 标签:字典树、记忆化搜索、数组、哈希表、字符串、动态规划 - 难度:中等 +## 题目链接 + +- [0139. 单词拆分 - 力扣](https://leetcode.cn/problems/word-break/) + ## 题目大意 **描述**:给定一个非空字符串 `s` 和一个包含非空单词的列表 `wordDict` 作为字典。 diff --git "a/Solutions/0140. \345\215\225\350\257\215\346\213\206\345\210\206 II.md" "b/Solutions/0140. \345\215\225\350\257\215\346\213\206\345\210\206 II.md" index 5ca99a10..53226b80 100644 --- "a/Solutions/0140. \345\215\225\350\257\215\346\213\206\345\210\206 II.md" +++ "b/Solutions/0140. \345\215\225\350\257\215\346\213\206\345\210\206 II.md" @@ -3,6 +3,10 @@ - 标签:字典树、记忆化搜索、数组、哈希表、字符串、动态规划、回溯 - 难度:困难 +## 题目链接 + +- [0140. 单词拆分 II - 力扣](https://leetcode.cn/problems/word-break-ii/) + ## 题目大意 给定一个非空字符串 `s` 和一个包含非空单词列表的字典 `wordDict`。 diff --git "a/Solutions/0141. \347\216\257\345\275\242\351\223\276\350\241\250.md" "b/Solutions/0141. \347\216\257\345\275\242\351\223\276\350\241\250.md" index b6cc241d..227bbcbc 100644 --- "a/Solutions/0141. \347\216\257\345\275\242\351\223\276\350\241\250.md" +++ "b/Solutions/0141. \347\216\257\345\275\242\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:哈希表、链表、双指针 - 难度:简单 +## 题目链接 + +- [0141. 环形链表 - 力扣](https://leetcode.cn/problems/linked-list-cycle/) + ## 题目大意 **描述**:给定一个链表的头节点 `head`。 diff --git "a/Solutions/0142. \347\216\257\345\275\242\351\223\276\350\241\250 II.md" "b/Solutions/0142. \347\216\257\345\275\242\351\223\276\350\241\250 II.md" index 634fae6a..a592fa20 100644 --- "a/Solutions/0142. \347\216\257\345\275\242\351\223\276\350\241\250 II.md" +++ "b/Solutions/0142. \347\216\257\345\275\242\351\223\276\350\241\250 II.md" @@ -3,6 +3,10 @@ - 标签:哈希表、链表、双指针 - 难度:中等 +## 题目链接 + +- [0142. 环形链表 II - 力扣](https://leetcode.cn/problems/linked-list-cycle-ii/) + ## 题目大意 **描述**:给定一个链表的头节点 `head`。 diff --git "a/Solutions/0143. \351\207\215\346\216\222\351\223\276\350\241\250.md" "b/Solutions/0143. \351\207\215\346\216\222\351\223\276\350\241\250.md" index daeb8e5a..92bb734f 100644 --- "a/Solutions/0143. \351\207\215\346\216\222\351\223\276\350\241\250.md" +++ "b/Solutions/0143. \351\207\215\346\216\222\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:栈、递归、链表、双指针 - 难度:中等 +## 题目链接 + +- [0143. 重排链表 - 力扣](https://leetcode.cn/problems/reorder-list/) + ## 题目大意 **描述**:给定一个单链表 `L` 的头节点 `head`,单链表 `L` 表示为:$L_0$ -> $L_1$ -> $L_2$ -> ... -> $L_{n-1}$ -> $L_n$。 diff --git "a/Solutions/0144. \344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" "b/Solutions/0144. \344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" index 3b63da6c..9e5db713 100644 --- "a/Solutions/0144. \344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" +++ "b/Solutions/0144. \344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" @@ -3,6 +3,10 @@ - 标签:栈、树、深度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0144. 二叉树的前序遍历 - 力扣](https://leetcode.cn/problems/binary-tree-preorder-traversal/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0145. \344\272\214\345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" "b/Solutions/0145. \344\272\214\345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" index e13c818b..eeeb7808 100644 --- "a/Solutions/0145. \344\272\214\345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" +++ "b/Solutions/0145. \344\272\214\345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" @@ -3,6 +3,10 @@ - 标签:栈、树、深度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0145. 二叉树的后序遍历 - 力扣](https://leetcode.cn/problems/binary-tree-postorder-traversal/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0147. \345\257\271\351\223\276\350\241\250\350\277\233\350\241\214\346\217\222\345\205\245\346\216\222\345\272\217.md" "b/Solutions/0147. \345\257\271\351\223\276\350\241\250\350\277\233\350\241\214\346\217\222\345\205\245\346\216\222\345\272\217.md" index f0e3eb44..e02ac0f8 100644 --- "a/Solutions/0147. \345\257\271\351\223\276\350\241\250\350\277\233\350\241\214\346\217\222\345\205\245\346\216\222\345\272\217.md" +++ "b/Solutions/0147. \345\257\271\351\223\276\350\241\250\350\277\233\350\241\214\346\217\222\345\205\245\346\216\222\345\272\217.md" @@ -3,6 +3,10 @@ - 标签:链表、排序 - 难度:中等 +## 题目链接 + +- [0147. 对链表进行插入排序 - 力扣](https://leetcode.cn/problems/insertion-sort-list/) + ## 题目大意 **描述**:给定链表的头节点 `head`。 diff --git "a/Solutions/0148. \346\216\222\345\272\217\351\223\276\350\241\250.md" "b/Solutions/0148. \346\216\222\345\272\217\351\223\276\350\241\250.md" index 7d19dcb6..33520d9b 100644 --- "a/Solutions/0148. \346\216\222\345\272\217\351\223\276\350\241\250.md" +++ "b/Solutions/0148. \346\216\222\345\272\217\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:链表、双指针、分治、排序、归并排序 - 难度:中等 +## 题目链接 + +- [0148. 排序链表 - 力扣](https://leetcode.cn/problems/sort-list/) + ## 题目大意 **描述**:给定链表的头节点 `head`。 diff --git "a/Solutions/0149. \347\233\264\347\272\277\344\270\212\346\234\200\345\244\232\347\232\204\347\202\271\346\225\260.md" "b/Solutions/0149. \347\233\264\347\272\277\344\270\212\346\234\200\345\244\232\347\232\204\347\202\271\346\225\260.md" index 7c98ae64..a850785a 100644 --- "a/Solutions/0149. \347\233\264\347\272\277\344\270\212\346\234\200\345\244\232\347\232\204\347\202\271\346\225\260.md" +++ "b/Solutions/0149. \347\233\264\347\272\277\344\270\212\346\234\200\345\244\232\347\232\204\347\202\271\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:几何、数组、哈希表、数学 - 难度:困难 +## 题目链接 + +- [0149. 直线上最多的点数 - 力扣](https://leetcode.cn/problems/max-points-on-a-line/) + ## 题目大意 给定一个平面上的 n 个点的坐标数组 points,求解最多有多少个点在同一条直线上。 diff --git "a/Solutions/0150. \351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md" "b/Solutions/0150. \351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md" index 43bc11ef..635ede0a 100644 --- "a/Solutions/0150. \351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md" +++ "b/Solutions/0150. \351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:栈、数组、数学 - 难度:中等 +## 题目链接 + +- [0150. 逆波兰表达式求值 - 力扣](https://leetcode.cn/problems/evaluate-reverse-polish-notation/) + ## 题目大意 **描述**:给定一个字符串数组 `tokens`,表示「逆波兰表达式」。 diff --git "a/Solutions/0151. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md" "b/Solutions/0151. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md" index 7d34abfc..cc5cce8a 100644 --- "a/Solutions/0151. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md" +++ "b/Solutions/0151. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:双指针、字符串 - 难度:中等 +## 题目链接 + +- [0151. 反转字符串中的单词 - 力扣](https://leetcode.cn/problems/reverse-words-in-a-string/) + ## 题目大意 **描述**:给定一个字符串 `s`。 diff --git "a/Solutions/0152. \344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0152. \344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204.md" index c99fcd93..fd325db7 100644 --- "a/Solutions/0152. \344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0152. \344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [0152. 乘积最大子数组 - 力扣](https://leetcode.cn/problems/maximum-product-subarray/) + ## 题目大意 **描述**:给定一个整数数组 `nums`。 diff --git "a/Solutions/0153. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274.md" "b/Solutions/0153. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274.md" index e9f721d7..4f6deffb 100644 --- "a/Solutions/0153. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274.md" +++ "b/Solutions/0153. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:中等 +## 题目链接 + +- [0153. 寻找旋转排序数组中的最小值 - 力扣](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) + ## 题目大意 **描述**:给定一个数组 $nums$,$nums$ 是有升序数组经过「旋转」得到的。但是旋转次数未知。数组中不存在重复元素。 diff --git "a/Solutions/0154. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274 II.md" "b/Solutions/0154. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274 II.md" index 6802095a..5a63ffa3 100644 --- "a/Solutions/0154. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274 II.md" +++ "b/Solutions/0154. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274 II.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:困难 +## 题目链接 + +- [154. 寻找旋转排序数组中的最小值 II - 力扣](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) + ## 题目大意 **描述**:给定一个数组 $nums$,$nums$ 是有升序数组经过 $1 \sim n$ 次「旋转」得到的。但是旋转次数未知。数组中可能存在重复元素。 diff --git "a/Solutions/0155. \346\234\200\345\260\217\346\240\210.md" "b/Solutions/0155. \346\234\200\345\260\217\346\240\210.md" index f48b7e99..2eeaf841 100644 --- "a/Solutions/0155. \346\234\200\345\260\217\346\240\210.md" +++ "b/Solutions/0155. \346\234\200\345\260\217\346\240\210.md" @@ -3,6 +3,10 @@ - 标签:栈、设计 - 难度:中等 +## 题目链接 + +- [0155. 最小栈 - 力扣](https://leetcode.cn/problems/min-stack/) + ## 题目大意 **要求**:设计一个「栈」。实现 `push` ,`pop` ,`top` ,`getMin` 操作,其中 `getMin` 要求能在常数时间内实现。 diff --git "a/Solutions/0159. \350\207\263\345\244\232\345\214\205\345\220\253\344\270\244\344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" "b/Solutions/0159. \350\207\263\345\244\232\345\214\205\345\220\253\344\270\244\344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" index 7116e678..8ae925fc 100644 --- "a/Solutions/0159. \350\207\263\345\244\232\345\214\205\345\220\253\344\270\244\344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" +++ "b/Solutions/0159. \350\207\263\345\244\232\345\214\205\345\220\253\344\270\244\344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、滑动窗口 - 难度:中等 +## 题目链接 + +- [0159. 至多包含两个不同字符的最长子串 - 力扣](https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/) + ## 题目大意 给定一个字符串 s,找出之多包含两个不同字符的最长子串 t,并返回该子串的长度。 diff --git "a/Solutions/0160. \347\233\270\344\272\244\351\223\276\350\241\250.md" "b/Solutions/0160. \347\233\270\344\272\244\351\223\276\350\241\250.md" index ae0f6ec0..3a0f883a 100644 --- "a/Solutions/0160. \347\233\270\344\272\244\351\223\276\350\241\250.md" +++ "b/Solutions/0160. \347\233\270\344\272\244\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:哈希表、链表、双指针 - 难度:简单 +## 题目链接 + +- [0160. 相交链表 - 力扣](https://leetcode.cn/problems/intersection-of-two-linked-lists/) + ## 题目大意 **描述**:给定 `listA`、`listB` 两个链表。 diff --git "a/Solutions/0162. \345\257\273\346\211\276\345\263\260\345\200\274.md" "b/Solutions/0162. \345\257\273\346\211\276\345\263\260\345\200\274.md" index c88b66da..5a28cbc0 100644 --- "a/Solutions/0162. \345\257\273\346\211\276\345\263\260\345\200\274.md" +++ "b/Solutions/0162. \345\257\273\346\211\276\345\263\260\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:中等 +## 题目链接 + +- [0162. 寻找峰值 - 力扣](https://leetcode.cn/problems/find-peak-element/) + ## 题目大意 **描述**:给定一个整数数组 `nums`。 diff --git "a/Solutions/0164. \346\234\200\345\244\247\351\227\264\350\267\235.md" "b/Solutions/0164. \346\234\200\345\244\247\351\227\264\350\267\235.md" index 821eab59..ad55f0d0 100644 --- "a/Solutions/0164. \346\234\200\345\244\247\351\227\264\350\267\235.md" +++ "b/Solutions/0164. \346\234\200\345\244\247\351\227\264\350\267\235.md" @@ -3,6 +3,10 @@ - 标签:数组、桶排序、基数排序、排序 - 难度:困难 +## 题目链接 + +- [0164. 最大间距 - 力扣](https://leetcode.cn/problems/maximum-gap/) + ## 题目大意 **描述**:给定一个无序数组 $nums$。 diff --git "a/Solutions/0166. \345\210\206\346\225\260\345\210\260\345\260\217\346\225\260.md" "b/Solutions/0166. \345\210\206\346\225\260\345\210\260\345\260\217\346\225\260.md" index f6bcd122..1ebc3258 100644 --- "a/Solutions/0166. \345\210\206\346\225\260\345\210\260\345\260\217\346\225\260.md" +++ "b/Solutions/0166. \345\210\206\346\225\260\345\210\260\345\260\217\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:哈希表、数学、字符串 - 难度:中等 +## 题目链接 + +- [0166. 分数到小数 - 力扣](https://leetcode.cn/problems/fraction-to-recurring-decimal/) + ## 题目大意 给定两个整数,分别表示分数的分子 numerator 和分母 denominator,要求以字符串的形式返回该分数对应小数结果。 diff --git "a/Solutions/0167. \344\270\244\346\225\260\344\271\213\345\222\214 II - \350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204.md" "b/Solutions/0167. \344\270\244\346\225\260\344\271\213\345\222\214 II - \350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204.md" index 920bb750..6a793753 100644 --- "a/Solutions/0167. \344\270\244\346\225\260\344\271\213\345\222\214 II - \350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204.md" +++ "b/Solutions/0167. \344\270\244\346\225\260\344\271\213\345\222\214 II - \350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、二分查找 - 难度:中等 +## 题目链接 + +- [0167. 两数之和 II - 输入有序数组 - 力扣](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) + ## 题目大意 **描述**:给定一个下标从 $1$ 开始计数、升序排列的整数数组:$numbers$ 和一个目标值 $target$。 diff --git "a/Solutions/0168. Excel\350\241\250\345\210\227\345\220\215\347\247\260.md" "b/Solutions/0168. Excel\350\241\250\345\210\227\345\220\215\347\247\260.md" index ed896e7b..0b18c679 100644 --- "a/Solutions/0168. Excel\350\241\250\345\210\227\345\220\215\347\247\260.md" +++ "b/Solutions/0168. Excel\350\241\250\345\210\227\345\220\215\347\247\260.md" @@ -3,6 +3,10 @@ - 标签:数学、字符串 - 难度:简单 +## 题目链接 + +- [0168. Excel表列名称 - 力扣](https://leetcode.cn/problems/excel-sheet-column-title/) + ## 题目大意 描述:给定一个正整数 columnNumber。 diff --git "a/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" "b/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" index b636f82a..ed7e248c 100644 --- "a/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" +++ "b/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、分治、计数、排序 - 难度:简单 +## 题目链接 + +- [0169. 多数元素 - 力扣](https://leetcode.cn/problems/majority-element/) + ## 题目大意 **描述**:给定一个大小为 $n$ 的数组 `nums`。 diff --git "a/Solutions/0170. \344\270\244\346\225\260\344\271\213\345\222\214 III - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" "b/Solutions/0170. \344\270\244\346\225\260\344\271\213\345\222\214 III - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" index d2f1e4d9..6964c88e 100644 --- "a/Solutions/0170. \344\270\244\346\225\260\344\271\213\345\222\214 III - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" +++ "b/Solutions/0170. \344\270\244\346\225\260\344\271\213\345\222\214 III - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" @@ -3,6 +3,10 @@ - 标签:设计、数组、哈希表、双指针、数据流 - 难度:简单 +## 题目链接 + +- [0170. 两数之和 III - 数据结构设计 - 力扣](https://leetcode.cn/problems/two-sum-iii-data-structure-design/) + ## 题目大意 设计一个接受整数流的数据结构,使该数据结构支持检查是否存在两数之和等于特定值。 diff --git "a/Solutions/0171. Excel \350\241\250\345\210\227\345\272\217\345\217\267.md" "b/Solutions/0171. Excel \350\241\250\345\210\227\345\272\217\345\217\267.md" index 8cacceb2..710a0621 100644 --- "a/Solutions/0171. Excel \350\241\250\345\210\227\345\272\217\345\217\267.md" +++ "b/Solutions/0171. Excel \350\241\250\345\210\227\345\272\217\345\217\267.md" @@ -3,6 +3,10 @@ - 标签:数学、字符串 - 难度:简单 +## 题目链接 + +- [0171. Excel 表列序号 - 力扣](https://leetcode.cn/problems/excel-sheet-column-number/) + ## 题目大意 给你一个字符串 `columnTitle` ,表示 Excel 表格中的列名称。 diff --git "a/Solutions/0172. \351\230\266\344\271\230\345\220\216\347\232\204\351\233\266.md" "b/Solutions/0172. \351\230\266\344\271\230\345\220\216\347\232\204\351\233\266.md" index 1febd45b..644d9f6a 100644 --- "a/Solutions/0172. \351\230\266\344\271\230\345\220\216\347\232\204\351\233\266.md" +++ "b/Solutions/0172. \351\230\266\344\271\230\345\220\216\347\232\204\351\233\266.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:中等 +## 题目链接 + +- [0172. 阶乘后的零 - 力扣](https://leetcode.cn/problems/factorial-trailing-zeroes/) + ## 题目大意 给定一个整数 `n`。 diff --git "a/Solutions/0173. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" "b/Solutions/0173. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" index dc3985ca..f24122e9 100644 --- "a/Solutions/0173. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" +++ "b/Solutions/0173. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" @@ -3,6 +3,10 @@ - 标签:栈、树、设计、二叉搜索树、二叉树、迭代器 - 难度:中等 +## 题目链接 + +- [0173. 二叉搜索树迭代器 - 力扣](https://leetcode.cn/problems/binary-search-tree-iterator/) + ## 题目大意 **要求**:实现一个二叉搜索树的迭代器 BSTIterator。表示一个按中序遍历二叉搜索树(BST)的迭代器: diff --git "a/Solutions/0179. \346\234\200\345\244\247\346\225\260.md" "b/Solutions/0179. \346\234\200\345\244\247\346\225\260.md" index f2681d25..81e87c46 100644 --- "a/Solutions/0179. \346\234\200\345\244\247\346\225\260.md" +++ "b/Solutions/0179. \346\234\200\345\244\247\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、字符串、排序 - 难度:中等 +## 题目链接 + +- [0179. 最大数 - 力扣](https://leetcode.cn/problems/largest-number/) + ## 题目大意 **描述**:给定一个非负整数数组 `nums`。 diff --git "a/Solutions/0188. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 IV.md" "b/Solutions/0188. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 IV.md" index 0dec06fa..c9edac5c 100644 --- "a/Solutions/0188. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 IV.md" +++ "b/Solutions/0188. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 IV.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:困难 +## 题目链接 + +- [0188. 买卖股票的最佳时机 IV - 力扣](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/) + ## 题目大意 给定一个数组 `prices` 代表一只股票,其中 `prices[i]` 代表这只股票第 `i` 天的价格。再给定一个整数 `k`,表示最多可完成 `k` 笔交易,且不能同时参与多笔交易(必须在再次购买前出售掉之前的股票)。 diff --git "a/Solutions/0189. \350\275\256\350\275\254\346\225\260\347\273\204.md" "b/Solutions/0189. \350\275\256\350\275\254\346\225\260\347\273\204.md" index a9d8f2c4..bcdab031 100644 --- "a/Solutions/0189. \350\275\256\350\275\254\346\225\260\347\273\204.md" +++ "b/Solutions/0189. \350\275\256\350\275\254\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、数学、双指针 - 难度:中等 +## 题目链接 + +- [0189. 轮转数组 - 力扣](https://leetcode.cn/problems/rotate-array/) + ## 题目大意 **描述**:给定一个数组 $nums$,再给定一个数字 $k$。 diff --git "a/Solutions/0190. \351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215.md" "b/Solutions/0190. \351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215.md" index fe7dc599..41657640 100644 --- "a/Solutions/0190. \351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215.md" +++ "b/Solutions/0190. \351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215.md" @@ -3,6 +3,10 @@ - 标签:位运算、分治 - 难度:简单 +## 题目链接 + +- [0190. 颠倒二进制位 - 力扣](https://leetcode.cn/problems/reverse-bits/) + ## 题目大意 **描述**:给定一个 $32$ 位无符号整数 $n$。 diff --git "a/Solutions/0191. \344\275\2151\347\232\204\344\270\252\346\225\260.md" "b/Solutions/0191. \344\275\2151\347\232\204\344\270\252\346\225\260.md" index 18a712af..3b367155 100644 --- "a/Solutions/0191. \344\275\2151\347\232\204\344\270\252\346\225\260.md" +++ "b/Solutions/0191. \344\275\2151\347\232\204\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:位运算、分治 - 难度:简单 +## 题目链接 + +- [0191. 位1的个数 - 力扣](https://leetcode.cn/problems/number-of-1-bits/) + ## 题目大意 **描述**:给定一个无符号整数 $n$。 diff --git "a/Solutions/0198. \346\211\223\345\256\266\345\212\253\350\210\215.md" "b/Solutions/0198. \346\211\223\345\256\266\345\212\253\350\210\215.md" index 097a58b3..00f70c15 100644 --- "a/Solutions/0198. \346\211\223\345\256\266\345\212\253\350\210\215.md" +++ "b/Solutions/0198. \346\211\223\345\256\266\345\212\253\350\210\215.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [0198. 打家劫舍 - 力扣](https://leetcode.cn/problems/house-robber/) + ## 题目大意 **描述**:给定一个数组 $nums$,$nums[i]$ 代表第 $i$ 间房屋存放的金额。相邻的房屋装有防盗系统,假如相邻的两间房屋同时被偷,系统就会报警。 diff --git "a/Solutions/0199. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276.md" "b/Solutions/0199. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276.md" index 9f3714cd..2db6632c 100644 --- "a/Solutions/0199. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276.md" +++ "b/Solutions/0199. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0199. 二叉树的右视图 - 力扣](https://leetcode.cn/problems/binary-tree-right-side-view/) + ## 题目大意 **描述**:给定一棵二叉树的根节点 `root`。 diff --git "a/Solutions/0200. \345\262\233\345\261\277\346\225\260\351\207\217.md" "b/Solutions/0200. \345\262\233\345\261\277\346\225\260\351\207\217.md" index 22ac0e8a..db162364 100644 --- "a/Solutions/0200. \345\262\233\345\261\277\346\225\260\351\207\217.md" +++ "b/Solutions/0200. \345\262\233\345\261\277\346\225\260\351\207\217.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、数组、矩阵 - 难度:中等 +## 题目链接 + +- [0200. 岛屿数量 - 力扣](https://leetcode.cn/problems/number-of-islands/) + ## 题目大意 **描述**:给定一个由字符 `'1'`(陆地)和字符 `'0'`(水)组成的的二维网格 $grid$。 diff --git "a/Solutions/0201. \346\225\260\345\255\227\350\214\203\345\233\264\346\214\211\344\275\215\344\270\216.md" "b/Solutions/0201. \346\225\260\345\255\227\350\214\203\345\233\264\346\214\211\344\275\215\344\270\216.md" index fbccef57..90995d1f 100644 --- "a/Solutions/0201. \346\225\260\345\255\227\350\214\203\345\233\264\346\214\211\344\275\215\344\270\216.md" +++ "b/Solutions/0201. \346\225\260\345\255\227\350\214\203\345\233\264\346\214\211\344\275\215\344\270\216.md" @@ -3,6 +3,10 @@ - 标签:位运算 - 难度:中等 +## 题目链接 + +- [0201. 数字范围按位与 - 力扣](https://leetcode.cn/problems/bitwise-and-of-numbers-range/) + ## 题目大意 **描述**:给定两个整数 $left$ 和 $right$,表示区间 $[left, right]$。 diff --git "a/Solutions/0202. \345\277\253\344\271\220\346\225\260.md" "b/Solutions/0202. \345\277\253\344\271\220\346\225\260.md" index 193f86be..6d767f65 100644 --- "a/Solutions/0202. \345\277\253\344\271\220\346\225\260.md" +++ "b/Solutions/0202. \345\277\253\344\271\220\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:哈希表、数学、双指针 - 难度:简单 +## 题目链接 + +- [0202. 快乐数 - 力扣](https://leetcode.cn/problems/happy-number/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/0203. \347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md" "b/Solutions/0203. \347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md" index e5f1fafb..71ad73e0 100644 --- "a/Solutions/0203. \347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md" +++ "b/Solutions/0203. \347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:递归、链表 - 难度:简单 +## 题目链接 + +- [0203. 移除链表元素 - 力扣](https://leetcode.cn/problems/remove-linked-list-elements/) + ## 题目大意 **描述**:给定一个链表的头节点 `head` 和一个值 `val`。 diff --git "a/Solutions/0204. \350\256\241\346\225\260\350\264\250\346\225\260.md" "b/Solutions/0204. \350\256\241\346\225\260\350\264\250\346\225\260.md" index 115fb64f..f51d749f 100644 --- "a/Solutions/0204. \350\256\241\346\225\260\350\264\250\346\225\260.md" +++ "b/Solutions/0204. \350\256\241\346\225\260\350\264\250\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、数学、枚举、数论 - 难度:中等 +## 题目链接 + +- [0204. 计数质数 - 力扣](https://leetcode.cn/problems/count-primes/) + ## 题目大意 **描述**:给定 一个非负整数 $n$。 diff --git "a/Solutions/0205. \345\220\214\346\236\204\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0205. \345\220\214\346\236\204\345\255\227\347\254\246\344\270\262.md" index 9b0c2e53..3b1be027 100644 --- "a/Solutions/0205. \345\220\214\346\236\204\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0205. \345\220\214\346\236\204\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串 - 难度:简单 +## 题目链接 + +- [0205. 同构字符串 - 力扣](https://leetcode.cn/problems/isomorphic-strings/) + ## 题目大意 **描述**:给定两个字符串 $s$ 和 $t$。 diff --git "a/Solutions/0206. \345\217\215\350\275\254\351\223\276\350\241\250.md" "b/Solutions/0206. \345\217\215\350\275\254\351\223\276\350\241\250.md" index aba16e38..a26e7504 100644 --- "a/Solutions/0206. \345\217\215\350\275\254\351\223\276\350\241\250.md" +++ "b/Solutions/0206. \345\217\215\350\275\254\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:递归、链表 - 难度:简单 +## 题目链接 + +- [0206. 反转链表 - 力扣](https://leetcode.cn/problems/reverse-linked-list/) + ## 题目大意 **描述**:给定一个单链表的头节点 `head`。 diff --git "a/Solutions/0207. \350\257\276\347\250\213\350\241\250.md" "b/Solutions/0207. \350\257\276\347\250\213\350\241\250.md" index aa0c035f..14a817b3 100644 --- "a/Solutions/0207. \350\257\276\347\250\213\350\241\250.md" +++ "b/Solutions/0207. \350\257\276\347\250\213\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、图、拓扑排序 - 难度:中等 +## 题目链接 + +- [0207. 课程表 - 力扣](https://leetcode.cn/problems/course-schedule/) + ## 题目大意 **描述**:给定一个整数 $numCourses$,代表这学期必须选修的课程数量,课程编号为 $0 \sim numCourses - 1$。再给定一个数组 $prerequisites$ 表示先修课程关系,其中 $prerequisites[i] = [ai, bi]$ 表示如果要学习课程 $ai$ 则必须要先完成课程 $bi$。 diff --git "a/Solutions/0208. \345\256\236\347\216\260 Trie (\345\211\215\347\274\200\346\240\221).md" "b/Solutions/0208. \345\256\236\347\216\260 Trie (\345\211\215\347\274\200\346\240\221).md" index 3275a58f..34144ed7 100644 --- "a/Solutions/0208. \345\256\236\347\216\260 Trie (\345\211\215\347\274\200\346\240\221).md" +++ "b/Solutions/0208. \345\256\236\347\216\260 Trie (\345\211\215\347\274\200\346\240\221).md" @@ -3,6 +3,10 @@ - 标签:设计、字典树、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [0208. 实现 Trie (前缀树) - 力扣](https://leetcode.cn/problems/implement-trie-prefix-tree/) + ## 题目大意 **要求**:实现前缀树数据结构的相关类 `Trie` 类。 diff --git "a/Solutions/0209. \351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0209. \351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md" index 97087fa8..7f3c157c 100644 --- "a/Solutions/0209. \351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0209. \351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、前缀和、滑动窗口 - 难度:中等 +## 题目链接 + +- [0209. 长度最小的子数组 - 力扣](https://leetcode.cn/problems/minimum-size-subarray-sum/) + ## 题目大意 **描述**:给定一个只包含正整数的数组 $nums$ 和一个正整数 $target$。 diff --git "a/Solutions/0210. \350\257\276\347\250\213\350\241\250 II.md" "b/Solutions/0210. \350\257\276\347\250\213\350\241\250 II.md" index 009d8fbd..ba691a45 100644 --- "a/Solutions/0210. \350\257\276\347\250\213\350\241\250 II.md" +++ "b/Solutions/0210. \350\257\276\347\250\213\350\241\250 II.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、图、拓扑排序 - 难度:中等 +## 题目链接 + +- [0210. 课程表 II - 力扣](https://leetcode.cn/problems/course-schedule-ii/) + ## 题目大意 **描述**:给定一个整数 $numCourses$,代表这学期必须选修的课程数量,课程编号为 $0 \sim numCourses - 1$。再给定一个数组 $prerequisites$ 表示先修课程关系,其中 $prerequisites[i] = [ai, bi]$ 表示如果要学习课程 $ai$ 则必须要先完成课程 $bi$。 diff --git "a/Solutions/0211. \346\267\273\345\212\240\344\270\216\346\220\234\347\264\242\345\215\225\350\257\215 - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" "b/Solutions/0211. \346\267\273\345\212\240\344\270\216\346\220\234\347\264\242\345\215\225\350\257\215 - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" index 5ad7c810..51223aaa 100644 --- "a/Solutions/0211. \346\267\273\345\212\240\344\270\216\346\220\234\347\264\242\345\215\225\350\257\215 - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" +++ "b/Solutions/0211. \346\267\273\345\212\240\344\270\216\346\220\234\347\264\242\345\215\225\350\257\215 - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、设计、字典树、字符串 - 难度:中等 +## 题目链接 + +- [0211. 添加与搜索单词 - 数据结构设计 - 力扣](https://leetcode.cn/problems/design-add-and-search-words-data-structure/) + ## 题目大意 **要求**:设计一个数据结构,支持「添加新单词」和「查找字符串是否与任何先前添加的字符串匹配」。 diff --git "a/Solutions/0212. \345\215\225\350\257\215\346\220\234\347\264\242 II.md" "b/Solutions/0212. \345\215\225\350\257\215\346\220\234\347\264\242 II.md" index 088adfb5..959a119b 100644 --- "a/Solutions/0212. \345\215\225\350\257\215\346\220\234\347\264\242 II.md" +++ "b/Solutions/0212. \345\215\225\350\257\215\346\220\234\347\264\242 II.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、字符串、回溯、矩阵 - 难度:困难 +## 题目链接 + +- [0212. 单词搜索 II - 力扣](https://leetcode.cn/problems/word-search-ii/) + ## 题目大意 给定一个 `m * n` 二维字符网格 `board` 和一个单词(字符串)列表 `words`。 diff --git "a/Solutions/0213. \346\211\223\345\256\266\345\212\253\350\210\215 II.md" "b/Solutions/0213. \346\211\223\345\256\266\345\212\253\350\210\215 II.md" index 2aa1e49f..33b70033 100644 --- "a/Solutions/0213. \346\211\223\345\256\266\345\212\253\350\210\215 II.md" +++ "b/Solutions/0213. \346\211\223\345\256\266\345\212\253\350\210\215 II.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [0213. 打家劫舍 II - 力扣](https://leetcode.cn/problems/house-robber-ii/) + ## 题目大意 **描述**:给定一个数组 $nums$,$num[i]$ 代表第 $i$ 间房屋存放的金额,假设房屋可以围成一圈,最后一间房屋跟第一间房屋可以相连。相邻的房屋装有防盗系统,假如相邻的两间房屋同时被偷,系统就会报警。 diff --git "a/Solutions/0215. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254K\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.md" "b/Solutions/0215. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254K\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.md" index e804aaed..da8b0929 100644 --- "a/Solutions/0215. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254K\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.md" +++ "b/Solutions/0215. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254K\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:数组、分治、快速排序、排序、堆(优先队列) - 难度:中等 +## 题目链接 + +- [0215. 数组中的第K个最大元素 - 力扣](https://leetcode.cn/problems/kth-largest-element-in-an-array/) + ## 题目大意 **描述**:给定一个未排序的整数数组 $nums$ 和一个整数 $k$。 diff --git "a/Solutions/0217. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240.md" "b/Solutions/0217. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240.md" index ca03782c..5a383469 100644 --- "a/Solutions/0217. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240.md" +++ "b/Solutions/0217. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、排序 - 难度:简单 +## 题目链接 + +- [0217. 存在重复元素 - 力扣](https://leetcode.cn/problems/contains-duplicate/) + ## 题目大意 **描述**:给定一个整数数组 `nums`。 diff --git "a/Solutions/0218. \345\244\251\351\231\205\347\272\277\351\227\256\351\242\230.md" "b/Solutions/0218. \345\244\251\351\231\205\347\272\277\351\227\256\351\242\230.md" index fd9174c1..e4ef5f6a 100644 --- "a/Solutions/0218. \345\244\251\351\231\205\347\272\277\351\227\256\351\242\230.md" +++ "b/Solutions/0218. \345\244\251\351\231\205\347\272\277\351\227\256\351\242\230.md" @@ -3,6 +3,10 @@ - 标签:树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) - 难度:困难 +## 题目链接 + +- [0218. 天际线问题 - 力扣](https://leetcode.cn/problems/the-skyline-problem/) + ## 题目大意 城市的天际线是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。 diff --git "a/Solutions/0219. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 II.md" "b/Solutions/0219. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 II.md" index 3c6f2207..42468b8c 100644 --- "a/Solutions/0219. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 II.md" +++ "b/Solutions/0219. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 II.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、滑动窗口 - 难度:简单 +## 题目链接 + +- [0219. 存在重复元素 II - 力扣](https://leetcode.cn/problems/contains-duplicate-ii/) + ## 题目大意 **描述**:给定一个整数数组 `nums` 和一个整数 `k`。 diff --git "a/Solutions/0220. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 III.md" "b/Solutions/0220. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 III.md" index dc9b1145..53c4f784 100644 --- "a/Solutions/0220. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 III.md" +++ "b/Solutions/0220. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 III.md" @@ -3,6 +3,10 @@ - 标签:数组、桶排序、有序集合、排序、滑动窗口 - 难度:中等 +## 题目链接 + +- [0220. 存在重复元素 III - 力扣](https://leetcode.cn/problems/contains-duplicate-iii/) + ## 题目大意 **描述**:给定一个整数数组 $nums$,以及两个整数 $k$、$t$。 diff --git "a/Solutions/0221. \346\234\200\345\244\247\346\255\243\346\226\271\345\275\242.md" "b/Solutions/0221. \346\234\200\345\244\247\346\255\243\346\226\271\345\275\242.md" index 6d34487e..13ca0919 100644 --- "a/Solutions/0221. \346\234\200\345\244\247\346\255\243\346\226\271\345\275\242.md" +++ "b/Solutions/0221. \346\234\200\345\244\247\346\255\243\346\226\271\345\275\242.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、矩阵 - 难度:中等 +## 题目链接 + +- [0221. 最大正方形 - 力扣](https://leetcode.cn/problems/maximal-square/) + ## 题目大意 **描述**:给定一个由 `'0'` 和 `'1'` 组成的二维矩阵 $matrix$。 diff --git "a/Solutions/0222. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\347\232\204\350\212\202\347\202\271\344\270\252\346\225\260.md" "b/Solutions/0222. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\347\232\204\350\212\202\347\202\271\344\270\252\346\225\260.md" index 44649f6a..6ca278b0 100644 --- "a/Solutions/0222. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\347\232\204\350\212\202\347\202\271\344\270\252\346\225\260.md" +++ "b/Solutions/0222. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\347\232\204\350\212\202\347\202\271\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二分查找、二叉树 - 难度:中等 +## 题目链接 + +- [0222. 完全二叉树的节点个数 - 力扣](https://leetcode.cn/problems/count-complete-tree-nodes/) + ## 题目大意 给定一棵完全二叉树的根节点 `root`,返回该树的节点个数。 diff --git "a/Solutions/0223. \347\237\251\345\275\242\351\235\242\347\247\257.md" "b/Solutions/0223. \347\237\251\345\275\242\351\235\242\347\247\257.md" index d891d67e..00b5b453 100644 --- "a/Solutions/0223. \347\237\251\345\275\242\351\235\242\347\247\257.md" +++ "b/Solutions/0223. \347\237\251\345\275\242\351\235\242\347\247\257.md" @@ -3,6 +3,10 @@ - 标签:几何、数学 - 难度:中等 +## 题目链接 + +- [0223. 矩形面积 - 力扣](https://leetcode.cn/problems/rectangle-area/) + ## 题目大意 给定两个矩形的左下角坐标、右上角坐标 `(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2)`。其中 `(ax1, ay1)` 表示第一个矩形左下角坐标,`(ax2, ay2)` 表示第一个矩形右上角坐标,`(bx1, by1)` 表示第二个矩形左下角坐标,`(bx2, by2)` 表示第二个矩形右上角坐标。 diff --git "a/Solutions/0225. \347\224\250\351\230\237\345\210\227\345\256\236\347\216\260\346\240\210.md" "b/Solutions/0225. \347\224\250\351\230\237\345\210\227\345\256\236\347\216\260\346\240\210.md" index 8aa684ad..2c8c6116 100644 --- "a/Solutions/0225. \347\224\250\351\230\237\345\210\227\345\256\236\347\216\260\346\240\210.md" +++ "b/Solutions/0225. \347\224\250\351\230\237\345\210\227\345\256\236\347\216\260\346\240\210.md" @@ -3,6 +3,10 @@ - 标签:栈、设计、队列 - 难度:简单 +## 题目链接 + +- [0225. 用队列实现栈 - 力扣](https://leetcode.cn/problems/implement-stack-using-queues/) + ## 题目大意 **要求**:仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的四种操作:`push`、`top`、`pop` 和 `empty`。 diff --git "a/Solutions/0226. \347\277\273\350\275\254\344\272\214\345\217\211\346\240\221.md" "b/Solutions/0226. \347\277\273\350\275\254\344\272\214\345\217\211\346\240\221.md" index 1c5098f8..847a11af 100644 --- "a/Solutions/0226. \347\277\273\350\275\254\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/0226. \347\277\273\350\275\254\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0226. 翻转二叉树 - 力扣](https://leetcode.cn/problems/invert-binary-tree/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0227. \345\237\272\346\234\254\350\256\241\347\256\227\345\231\250 II.md" "b/Solutions/0227. \345\237\272\346\234\254\350\256\241\347\256\227\345\231\250 II.md" index 51c1b998..1b873ca6 100644 --- "a/Solutions/0227. \345\237\272\346\234\254\350\256\241\347\256\227\345\231\250 II.md" +++ "b/Solutions/0227. \345\237\272\346\234\254\350\256\241\347\256\227\345\231\250 II.md" @@ -3,6 +3,10 @@ - 标签:栈、数学、字符串 - 难度:中等 +## 题目链接 + +- [0227. 基本计算器 II - 力扣](https://leetcode.cn/problems/basic-calculator-ii/) + ## 题目大意 **描述**:给定一个字符串表达式 `s`,表达式中所有整数为非负整数,运算符只有 `+`、`-`、`*`、`/`,没有括号。 diff --git "a/Solutions/0231. 2 \347\232\204\345\271\202.md" "b/Solutions/0231. 2 \347\232\204\345\271\202.md" index 1049d92f..f4a157e5 100644 --- "a/Solutions/0231. 2 \347\232\204\345\271\202.md" +++ "b/Solutions/0231. 2 \347\232\204\345\271\202.md" @@ -3,6 +3,10 @@ - 标签:位运算、递归、数学 - 难度:简单 +## 题目链接 + +- [0231. 2 的幂 - 力扣](https://leetcode.cn/problems/power-of-two/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/0232. \347\224\250\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" "b/Solutions/0232. \347\224\250\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" index 2e10bc9e..68a37503 100644 --- "a/Solutions/0232. \347\224\250\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" +++ "b/Solutions/0232. \347\224\250\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:栈、设计、队列 - 难度:简单 +## 题目链接 + +- [0232. 用栈实现队列 - 力扣](https://leetcode.cn/problems/implement-queue-using-stacks/) + ## 题目大意 **要求**:仅使用两个栈实现先入先出队列。 diff --git "a/Solutions/0233. \346\225\260\345\255\227 1 \347\232\204\344\270\252\346\225\260.md" "b/Solutions/0233. \346\225\260\345\255\227 1 \347\232\204\344\270\252\346\225\260.md" index 618ad95d..ffd8c360 100644 --- "a/Solutions/0233. \346\225\260\345\255\227 1 \347\232\204\344\270\252\346\225\260.md" +++ "b/Solutions/0233. \346\225\260\345\255\227 1 \347\232\204\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:递归、数学、动态规划 - 难度:困难 +## 题目链接 + +- [0233. 数字 1 的个数 - 力扣](https://leetcode.cn/problems/number-of-digit-one/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/0234. \345\233\236\346\226\207\351\223\276\350\241\250.md" "b/Solutions/0234. \345\233\236\346\226\207\351\223\276\350\241\250.md" index 7ca5b395..ed25b828 100644 --- "a/Solutions/0234. \345\233\236\346\226\207\351\223\276\350\241\250.md" +++ "b/Solutions/0234. \345\233\236\346\226\207\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:栈、递归、链表、双指针 - 难度:简单 +## 题目链接 + +- [0234. 回文链表 - 力扣](https://leetcode.cn/problems/palindrome-linked-list/) + ## 题目大意 **描述**:给定一个链表的头节点 `head`。 diff --git "a/Solutions/0235. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/Solutions/0235. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" index e5b8a51c..8a9d081a 100644 --- "a/Solutions/0235. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ "b/Solutions/0235. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [0235. 二叉搜索树的最近公共祖先 - 力扣](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/) + ## 题目大意 **描述**:给定一个二叉搜索树的根节点 `root`,以及两个指定节点 `p` 和 `q`。 diff --git "a/Solutions/0236. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/Solutions/0236. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" index 6aa6e4ab..89082b1e 100644 --- "a/Solutions/0236. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ "b/Solutions/0236. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0236. 二叉树的最近公共祖先 - 力扣](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`,以及二叉树中两个节点 `p` 和 `q`。 diff --git "a/Solutions/0237. \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" "b/Solutions/0237. \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" index 898596fb..f42ef5d4 100644 --- "a/Solutions/0237. \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" +++ "b/Solutions/0237. \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:链表 - 难度:中等 +## 题目链接 + +- [0237. 删除链表中的节点 - 力扣](https://leetcode.cn/problems/delete-node-in-a-linked-list/) + ## 题目大意 删除链表的给定节点。 diff --git "a/Solutions/0238. \351\231\244\350\207\252\350\272\253\344\273\245\345\244\226\346\225\260\347\273\204\347\232\204\344\271\230\347\247\257.md" "b/Solutions/0238. \351\231\244\350\207\252\350\272\253\344\273\245\345\244\226\346\225\260\347\273\204\347\232\204\344\271\230\347\247\257.md" index bfce1bb4..7b807e92 100644 --- "a/Solutions/0238. \351\231\244\350\207\252\350\272\253\344\273\245\345\244\226\346\225\260\347\273\204\347\232\204\344\271\230\347\247\257.md" +++ "b/Solutions/0238. \351\231\244\350\207\252\350\272\253\344\273\245\345\244\226\346\225\260\347\273\204\347\232\204\344\271\230\347\247\257.md" @@ -3,6 +3,10 @@ - 标签:数组、前缀和 - 难度:中等 +## 题目链接 + +- [0238. 除自身以外数组的乘积 - 力扣](https://leetcode.cn/problems/product-of-array-except-self/) + ## 题目大意 **描述**:给定一个数组 nums。 diff --git "a/Solutions/0239. \346\273\221\345\212\250\347\252\227\345\217\243\346\234\200\345\244\247\345\200\274.md" "b/Solutions/0239. \346\273\221\345\212\250\347\252\227\345\217\243\346\234\200\345\244\247\345\200\274.md" index ee7b36b7..d0409ba8 100644 --- "a/Solutions/0239. \346\273\221\345\212\250\347\252\227\345\217\243\346\234\200\345\244\247\345\200\274.md" +++ "b/Solutions/0239. \346\273\221\345\212\250\347\252\227\345\217\243\346\234\200\345\244\247\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:队列、数组、滑动窗口、单调队列、堆(优先队列) - 难度:困难 +## 题目链接 + +- [0239. 滑动窗口最大值 - 力扣](https://leetcode.cn/problems/sliding-window-maximum/) + ## 题目大意 **描述**:给定一个整数数组 `nums`,再给定一个整数 `k`,表示为大小为 `k` 的滑动窗口从数组的最左侧移动到数组的最右侧。我们只能看到滑动窗口内的 `k` 个数字,滑动窗口每次只能向右移动一位。 diff --git "a/Solutions/0240. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265 II.md" "b/Solutions/0240. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265 II.md" index 7ea64636..6af57d6f 100644 --- "a/Solutions/0240. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265 II.md" +++ "b/Solutions/0240. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265 II.md" @@ -3,6 +3,10 @@ - 标签:二分查找、分治算法 - 难度:中等 +## 题目链接 + +- [0240. 搜索二维矩阵 II - 力扣](https://leetcode.cn/problems/search-a-2d-matrix-ii/) + ## 题目大意 **描述**:给定一个 $m \times n$ 大小的有序整数矩阵 $matrix$。$matrix$ 中的每行元素从左到右升序排列,每列元素从上到下升序排列。再给定一个目标值 $target$。 diff --git "a/Solutions/0241. \344\270\272\350\277\220\347\256\227\350\241\250\350\276\276\345\274\217\350\256\276\350\256\241\344\274\230\345\205\210\347\272\247.md" "b/Solutions/0241. \344\270\272\350\277\220\347\256\227\350\241\250\350\276\276\345\274\217\350\256\276\350\256\241\344\274\230\345\205\210\347\272\247.md" index 63ccb2a2..da1094fb 100644 --- "a/Solutions/0241. \344\270\272\350\277\220\347\256\227\350\241\250\350\276\276\345\274\217\350\256\276\350\256\241\344\274\230\345\205\210\347\272\247.md" +++ "b/Solutions/0241. \344\270\272\350\277\220\347\256\227\350\241\250\350\276\276\345\274\217\350\256\276\350\256\241\344\274\230\345\205\210\347\272\247.md" @@ -3,6 +3,10 @@ - 标签:递归、记忆化搜索、数学、字符串、动态规划 - 难度:中等 +## 题目链接 + +- [0241. 为运算表达式设计优先级 - 力扣](https://leetcode.cn/problems/different-ways-to-add-parentheses/) + ## 题目大意 **描述**:给定一个由数字和运算符组成的字符串 `expression`。 diff --git "a/Solutions/0242. \346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" "b/Solutions/0242. \346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" index 28850d5a..ee8bb2ef 100644 --- "a/Solutions/0242. \346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" +++ "b/Solutions/0242. \346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、排序 - 难度:简单 +## 题目链接 + +- [0242. 有效的字母异位词 - 力扣](https://leetcode.cn/problems/valid-anagram/) + ## 题目大意 **描述**:给定两个字符串 $s$ 和 $t$。 diff --git "a/Solutions/0249. \347\247\273\344\275\215\345\255\227\347\254\246\344\270\262\345\210\206\347\273\204.md" "b/Solutions/0249. \347\247\273\344\275\215\345\255\227\347\254\246\344\270\262\345\210\206\347\273\204.md" index cb337c8d..b018c4ab 100644 --- "a/Solutions/0249. \347\247\273\344\275\215\345\255\227\347\254\246\344\270\262\345\210\206\347\273\204.md" +++ "b/Solutions/0249. \347\247\273\344\275\215\345\255\227\347\254\246\344\270\262\345\210\206\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [0249. 移位字符串分组 - 力扣](https://leetcode.cn/problems/group-shifted-strings/) + ## 题目大意 给定一个仅包含小写字母的字符串列表。其中每个字符串都可以进行「移位」操作,也就是将字符串中的每个字母变为其在字母表中后续的字母。比如:`abc` -> `bcd`。 diff --git "a/Solutions/0257. \344\272\214\345\217\211\346\240\221\347\232\204\346\211\200\346\234\211\350\267\257\345\276\204.md" "b/Solutions/0257. \344\272\214\345\217\211\346\240\221\347\232\204\346\211\200\346\234\211\350\267\257\345\276\204.md" index 44f8882f..28157c8d 100644 --- "a/Solutions/0257. \344\272\214\345\217\211\346\240\221\347\232\204\346\211\200\346\234\211\350\267\257\345\276\204.md" +++ "b/Solutions/0257. \344\272\214\345\217\211\346\240\221\347\232\204\346\211\200\346\234\211\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、字符串、回溯、二叉树 - 难度:简单 +## 题目链接 + +- [0257. 二叉树的所有路径 - 力扣](https://leetcode.cn/problems/binary-tree-paths/) + ## 题目大意 给定一个二叉树,返回所有从根节点到叶子节点的路径。 diff --git "a/Solutions/0258. \345\220\204\344\275\215\347\233\270\345\212\240.md" "b/Solutions/0258. \345\220\204\344\275\215\347\233\270\345\212\240.md" index b28c673a..c2e1e7e4 100644 --- "a/Solutions/0258. \345\220\204\344\275\215\347\233\270\345\212\240.md" +++ "b/Solutions/0258. \345\220\204\344\275\215\347\233\270\345\212\240.md" @@ -3,6 +3,10 @@ - 标签:数学、数论、模拟 - 难度:简单 +## 题目链接 + +- [0258. 各位相加 - 力扣](https://leetcode.cn/problems/add-digits/) + ## 题目大意 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 diff --git "a/Solutions/0259. \350\276\203\345\260\217\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0259. \350\276\203\345\260\217\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" index e3b53b9b..0a7b5cbd 100644 --- "a/Solutions/0259. \350\276\203\345\260\217\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0259. \350\276\203\345\260\217\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、二分查找、排序 - 难度:中等 +## 题目链接 + +- [0259. 较小的三数之和 - 力扣](https://leetcode.cn/problems/3sum-smaller/) + ## 题目大意 给定一个长度为 `n` 的整数数组和一个目标值 `target`。 diff --git "a/Solutions/0260. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 III.md" "b/Solutions/0260. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 III.md" index 406403bf..f8bbd418 100644 --- "a/Solutions/0260. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 III.md" +++ "b/Solutions/0260. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 III.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组 - 难度:中等 +## 题目链接 + +- [0260. 只出现一次的数字 III - 力扣](https://leetcode.cn/problems/single-number-iii/) + ## 题目大意 **描述**:给定一个整数数组 $nums$。$nums$ 中恰好有两个元素只出现一次,其余所有元素均出现两次。 diff --git "a/Solutions/0263. \344\270\221\346\225\260.md" "b/Solutions/0263. \344\270\221\346\225\260.md" index c317efa9..1b86e79c 100644 --- "a/Solutions/0263. \344\270\221\346\225\260.md" +++ "b/Solutions/0263. \344\270\221\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:简单 +## 题目链接 + +- [0263. 丑数 - 力扣](https://leetcode.cn/problems/ugly-number/) + ## 题目大意 给定一个整数 `n`。 diff --git "a/Solutions/0264. \344\270\221\346\225\260 II.md" "b/Solutions/0264. \344\270\221\346\225\260 II.md" index 8fdabb94..89fc28bb 100644 --- "a/Solutions/0264. \344\270\221\346\225\260 II.md" +++ "b/Solutions/0264. \344\270\221\346\225\260 II.md" @@ -3,6 +3,10 @@ - 标签:哈希表、数学、动态规划、堆(优先队列) - 难度:中等 +## 题目链接 + +- [0264. 丑数 II - 力扣](https://leetcode.cn/problems/ugly-number-ii/) + ## 题目大意 给定一个整数 `n`。 diff --git "a/Solutions/0268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.md" "b/Solutions/0268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.md" index 8f0e0250..a74594af 100644 --- "a/Solutions/0268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/0268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、哈希表、数学、二分查找、排序 - 难度:简单 +## 题目链接 + +- [0268. 丢失的数字 - 力扣](https://leetcode.cn/problems/missing-number/) + ## 题目大意 **描述**:给定一个包含 $[0, n]$ 中 $n$ 个数的数组 $nums$。 diff --git "a/Solutions/0270. \346\234\200\346\216\245\350\277\221\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\200\274.md" "b/Solutions/0270. \346\234\200\346\216\245\350\277\221\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\200\274.md" index 8544d829..864c56dd 100644 --- "a/Solutions/0270. \346\234\200\346\216\245\350\277\221\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\200\274.md" +++ "b/Solutions/0270. \346\234\200\346\216\245\350\277\221\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二分查找、二叉树 - 难度:简单 +## 题目链接 + +- [0270. 最接近的二叉搜索树值 - 力扣](https://leetcode.cn/problems/closest-binary-search-tree-value/) + ## 题目大意 给定一个不为空的二叉搜索树,以及一个目标值 target。要求在二叉搜索树中找到最接近目标值 target 的数值。 diff --git "a/Solutions/0278. \347\254\254\344\270\200\344\270\252\351\224\231\350\257\257\347\232\204\347\211\210\346\234\254.md" "b/Solutions/0278. \347\254\254\344\270\200\344\270\252\351\224\231\350\257\257\347\232\204\347\211\210\346\234\254.md" index 504f17dd..f40f0694 100644 --- "a/Solutions/0278. \347\254\254\344\270\200\344\270\252\351\224\231\350\257\257\347\232\204\347\211\210\346\234\254.md" +++ "b/Solutions/0278. \347\254\254\344\270\200\344\270\252\351\224\231\350\257\257\347\232\204\347\211\210\346\234\254.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:简单 +## 题目链接 + +- [0278. 第一个错误的版本 - 力扣](https://leetcode.cn/problems/first-bad-version/) + ## 题目大意 **描述**:给你一个整数 $n$,代表已经发布的版本号。还有一个用于检测版本是否出错的接口 `isBadVersion(version):` 。 diff --git "a/Solutions/0279. \345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" "b/Solutions/0279. \345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" index 3d206cba..a8606b19 100644 --- "a/Solutions/0279. \345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" +++ "b/Solutions/0279. \345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:广度优先搜索、数学、动态规划 - 难度:中等 +## 题目链接 + +- [0279. 完全平方数 - 力扣](https://leetcode.cn/problems/perfect-squares/) + ## 题目大意 **描述**:给定一个正整数 $n$。从中找到若干个完全平方数(比如 $1, 4, 9, 16 …$),使得它们的和等于 $n$。 diff --git "a/Solutions/0283. \347\247\273\345\212\250\351\233\266.md" "b/Solutions/0283. \347\247\273\345\212\250\351\233\266.md" index e486d41e..44cea885 100644 --- "a/Solutions/0283. \347\247\273\345\212\250\351\233\266.md" +++ "b/Solutions/0283. \347\247\273\345\212\250\351\233\266.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针 - 难度:简单 +## 题目链接 + +- [0283. 移动零 - 力扣](https://leetcode.cn/problems/move-zeroes/) + ## 题目大意 **描述**:给定一个数组 $nums$。 diff --git "a/Solutions/0285. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" "b/Solutions/0285. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" index 4fbd7cbc..3ad6e959 100644 --- "a/Solutions/0285. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" +++ "b/Solutions/0285. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [0285. 二叉搜索树中的中序后继 - 力扣](https://leetcode.cn/problems/inorder-successor-in-bst/) + ## 题目大意 给定一棵二叉搜索树的根节点 `root`。 diff --git "a/Solutions/0286. \345\242\231\344\270\216\351\227\250.md" "b/Solutions/0286. \345\242\231\344\270\216\351\227\250.md" index dec1371d..e966f2dd 100644 --- "a/Solutions/0286. \345\242\231\344\270\216\351\227\250.md" +++ "b/Solutions/0286. \345\242\231\344\270\216\351\227\250.md" @@ -3,6 +3,10 @@ - 标签:广度优先搜索、数组、矩阵 - 难度:中等 +## 题目链接 + +- [0286. 墙与门 - 力扣](https://leetcode.cn/problems/walls-and-gates/) + ## 题目大意 给定一个 `m * n` 的二维网络 `rooms`。其中每个元素有三种初始值: diff --git "a/Solutions/0287. \345\257\273\346\211\276\351\207\215\345\244\215\346\225\260.md" "b/Solutions/0287. \345\257\273\346\211\276\351\207\215\345\244\215\346\225\260.md" index 236a6bee..4e2e6bf6 100644 --- "a/Solutions/0287. \345\257\273\346\211\276\351\207\215\345\244\215\346\225\260.md" +++ "b/Solutions/0287. \345\257\273\346\211\276\351\207\215\345\244\215\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、双指针、二分查找 - 难度:中等 +## 题目链接 + +- [0287. 寻找重复数 - 力扣](https://leetcode.cn/problems/find-the-duplicate-number/) + ## 题目大意 **描述**:给定一个包含 $n + 1$ 个整数的数组 $nums$,里边包含的值都在 $1 \sim n$ 之间。可知至少存在一个重复的整数。 diff --git "a/Solutions/0288. \345\215\225\350\257\215\347\232\204\345\224\257\344\270\200\347\274\251\345\206\231.md" "b/Solutions/0288. \345\215\225\350\257\215\347\232\204\345\224\257\344\270\200\347\274\251\345\206\231.md" index eebaafd7..c38ece79 100644 --- "a/Solutions/0288. \345\215\225\350\257\215\347\232\204\345\224\257\344\270\200\347\274\251\345\206\231.md" +++ "b/Solutions/0288. \345\215\225\350\257\215\347\232\204\345\224\257\344\270\200\347\274\251\345\206\231.md" @@ -3,6 +3,10 @@ - 标签:设计、数组、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [0288. 单词的唯一缩写 - 力扣](https://leetcode.cn/problems/unique-word-abbreviation/) + ## 题目大意 单词缩写规则:<起始字母><中间字母><结尾字母>。如果单词长度不超过 2,则单词本身就是缩写。 diff --git "a/Solutions/0289. \347\224\237\345\221\275\346\270\270\346\210\217.md" "b/Solutions/0289. \347\224\237\345\221\275\346\270\270\346\210\217.md" index 11e944b5..a27dd0b6 100644 --- "a/Solutions/0289. \347\224\237\345\221\275\346\270\270\346\210\217.md" +++ "b/Solutions/0289. \347\224\237\345\221\275\346\270\270\346\210\217.md" @@ -3,6 +3,10 @@ - 标签:数组、矩阵、模拟 - 难度:中等 +## 题目链接 + +- [0289. 生命游戏 - 力扣](https://leetcode.cn/problems/game-of-life/) + ## 题目大意 **描述**:给定一个 $m \times n$ 大小的二维数组 $board$,每一个格子都可以看做是一个细胞。每个细胞都有一个初始状态:$1$ 代表活细胞,$0$ 代表死细胞。每个细胞与其相邻的八个位置(水平、垂直、对角线)细胞遵循以下生存规律: diff --git "a/Solutions/0290. \345\215\225\350\257\215\350\247\204\345\276\213.md" "b/Solutions/0290. \345\215\225\350\257\215\350\247\204\345\276\213.md" index fcedd8d8..87c1c644 100644 --- "a/Solutions/0290. \345\215\225\350\257\215\350\247\204\345\276\213.md" +++ "b/Solutions/0290. \345\215\225\350\257\215\350\247\204\345\276\213.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串 - 难度:简单 +## 题目链接 + +- [0290. 单词规律 - 力扣](https://leetcode.cn/problems/word-pattern/) + ## 题目大意 给定一种规律 `pattern` 和一个字符串 `str` ,判断 `str` 是否完全匹配相同的规律。 diff --git "a/Solutions/0292. Nim \346\270\270\346\210\217.md" "b/Solutions/0292. Nim \346\270\270\346\210\217.md" index 3bddf16b..0c1922df 100644 --- "a/Solutions/0292. Nim \346\270\270\346\210\217.md" +++ "b/Solutions/0292. Nim \346\270\270\346\210\217.md" @@ -3,6 +3,10 @@ - 标签:脑筋急转弯、数学、博弈 - 难度:简单 +## 题目链接 + +- [0292. Nim 游戏 - 力扣](https://leetcode.cn/problems/nim-game/) + ## 题目大意 两个人玩 Nim 游戏。游戏规则是这样的: diff --git "a/Solutions/0295. \346\225\260\346\215\256\346\265\201\347\232\204\344\270\255\344\275\215\346\225\260.md" "b/Solutions/0295. \346\225\260\346\215\256\346\265\201\347\232\204\344\270\255\344\275\215\346\225\260.md" index 455492c3..dd7c40e8 100644 --- "a/Solutions/0295. \346\225\260\346\215\256\346\265\201\347\232\204\344\270\255\344\275\215\346\225\260.md" +++ "b/Solutions/0295. \346\225\260\346\215\256\346\265\201\347\232\204\344\270\255\344\275\215\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:设计、双指针、数据流、排序、堆(优先队列) - 难度:困难 +## 题目链接 + +- [0295. 数据流的中位数 - 力扣](https://leetcode.cn/problems/find-median-from-data-stream/) + ## 题目大意 要求:设计一个支持一下两种操作的数组结构: diff --git "a/Solutions/0297. \344\272\214\345\217\211\346\240\221\347\232\204\345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226.md" "b/Solutions/0297. \344\272\214\345\217\211\346\240\221\347\232\204\345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226.md" index 093c0dc2..95d0bc0f 100644 --- "a/Solutions/0297. \344\272\214\345\217\211\346\240\221\347\232\204\345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226.md" +++ "b/Solutions/0297. \344\272\214\345\217\211\346\240\221\347\232\204\345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 - 难度:困难 +## 题目链接 + +- [0297. 二叉树的序列化与反序列化 - 力扣](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) + ## 题目大意 **要求**:设计一个算法,来实现二叉树的序列化与反序列化。 diff --git "a/Solutions/0300. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" "b/Solutions/0300. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" index f63c826c..11661045 100644 --- "a/Solutions/0300. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/0300. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、动态规划 - 难度:中等 +## 题目链接 + +- [0300. 最长递增子序列 - 力扣](https://leetcode.cn/problems/longest-increasing-subsequence/) + ## 题目大意 **描述**:给定一个整数数组 $nums$。 diff --git "a/Solutions/0303. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\344\270\215\345\217\257\345\217\230.md" "b/Solutions/0303. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\344\270\215\345\217\257\345\217\230.md" index d43f61ac..73111598 100644 --- "a/Solutions/0303. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\344\270\215\345\217\257\345\217\230.md" +++ "b/Solutions/0303. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\344\270\215\345\217\257\345\217\230.md" @@ -3,6 +3,10 @@ - 标签:设计、数组、前缀和 - 难度:简单 +## 题目链接 + +- [0303. 区域和检索 - 数组不可变 - 力扣](https://leetcode.cn/problems/range-sum-query-immutable/) + ## 题目大意 **描述**:给定一个整数数组 `nums`。 diff --git "a/Solutions/0304. \344\272\214\347\273\264\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \347\237\251\351\230\265\344\270\215\345\217\257\345\217\230.md" "b/Solutions/0304. \344\272\214\347\273\264\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \347\237\251\351\230\265\344\270\215\345\217\257\345\217\230.md" index b6cafff1..1d9cace0 100644 --- "a/Solutions/0304. \344\272\214\347\273\264\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \347\237\251\351\230\265\344\270\215\345\217\257\345\217\230.md" +++ "b/Solutions/0304. \344\272\214\347\273\264\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \347\237\251\351\230\265\344\270\215\345\217\257\345\217\230.md" @@ -3,6 +3,10 @@ - 标签:设计、数组、矩阵、前缀和 - 难度:中等 +## 题目链接 + +- [0304. 二维区域和检索 - 矩阵不可变 - 力扣](https://leetcode.cn/problems/range-sum-query-2d-immutable/) + ## 题目大意 给定一个二维矩阵 `matrix`。 diff --git "a/Solutions/0307. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\345\217\257\344\277\256\346\224\271.md" "b/Solutions/0307. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\345\217\257\344\277\256\346\224\271.md" index eb5d48d0..b7085f7e 100644 --- "a/Solutions/0307. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\345\217\257\344\277\256\346\224\271.md" +++ "b/Solutions/0307. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\345\217\257\344\277\256\346\224\271.md" @@ -3,6 +3,10 @@ - 标签:设计、树状数组、线段树、数组 - 难度:中等 +## 题目链接 + +- [0307. 区域和检索 - 数组可修改 - 力扣](https://leetcode.cn/problems/range-sum-query-mutable/) + ## 题目大意 **描述**:给定一个数组 `nums`。 diff --git "a/Solutions/0309. \346\234\200\344\275\263\344\271\260\345\215\226\350\202\241\347\245\250\346\227\266\346\234\272\345\220\253\345\206\267\345\206\273\346\234\237.md" "b/Solutions/0309. \346\234\200\344\275\263\344\271\260\345\215\226\350\202\241\347\245\250\346\227\266\346\234\272\345\220\253\345\206\267\345\206\273\346\234\237.md" index a456d46e..d70a62b5 100644 --- "a/Solutions/0309. \346\234\200\344\275\263\344\271\260\345\215\226\350\202\241\347\245\250\346\227\266\346\234\272\345\220\253\345\206\267\345\206\273\346\234\237.md" +++ "b/Solutions/0309. \346\234\200\344\275\263\344\271\260\345\215\226\350\202\241\347\245\250\346\227\266\346\234\272\345\220\253\345\206\267\345\206\273\346\234\237.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [0309. 最佳买卖股票时机含冷冻期 - 力扣](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) + ## 题目大意 给定一个整数数组,其中第 `i` 个元素代表了第 `i` 天的股票价格 。 diff --git "a/Solutions/0310. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" "b/Solutions/0310. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" index cec4fa52..9728d5de 100644 --- "a/Solutions/0310. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" +++ "b/Solutions/0310. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、图、拓扑排序 - 难度:中等 +## 题目链接 + +- [0310. 最小高度树 - 力扣](https://leetcode.cn/problems/minimum-height-trees/) + ## 题目大意 **描述**:有一棵包含 $n$ 个节点的树,节点编号为 $0 \sim n - 1$。给定一个数字 $n$ 和一个有 $n - 1$ 条无向边的 $edges$ 列表来表示这棵树。其中 $edges[i] = [ai, bi]$ 表示树中节点 $ai$ 和 $bi$ 之间存在一条无向边。 diff --git "a/Solutions/0312. \346\210\263\346\260\224\347\220\203.md" "b/Solutions/0312. \346\210\263\346\260\224\347\220\203.md" index f93d6779..859f66a7 100644 --- "a/Solutions/0312. \346\210\263\346\260\224\347\220\203.md" +++ "b/Solutions/0312. \346\210\263\346\260\224\347\220\203.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:困难 +## 题目链接 + +- [0312. 戳气球 - 力扣](https://leetcode.cn/problems/burst-balloons/) + ## 题目大意 **描述**:有 $n$ 个气球,编号为 $0 \sim n - 1$,每个气球上都有一个数字,这些数字存在数组 $nums$ 中。现在开始戳破气球。其中戳破第 $i$ 个气球,可以获得 $nums[i - 1] \times nums[i] \times nums[i + 1]$ 枚硬币,这里的 $i - 1$ 和 $i + 1$ 代表和 $i$ 相邻的两个气球的编号。如果 $i - 1$ 或 $i + 1$ 超出了数组的边界,那么就当它是一个数字为 $1$ 的气球。 diff --git "a/Solutions/0315. \350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.md" "b/Solutions/0315. \350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.md" index bbfe8a5d..3527604d 100644 --- "a/Solutions/0315. \350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.md" +++ "b/Solutions/0315. \350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 - 难度:困难 +## 题目链接 + +- [0315. 计算右侧小于当前元素的个数 - 力扣](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) + ## 题目大意 **描述**:给定一个整数数组 $nums$ 。 diff --git "a/Solutions/0316. \345\216\273\351\231\244\351\207\215\345\244\215\345\255\227\346\257\215.md" "b/Solutions/0316. \345\216\273\351\231\244\351\207\215\345\244\215\345\255\227\346\257\215.md" index cafa083f..45202841 100644 --- "a/Solutions/0316. \345\216\273\351\231\244\351\207\215\345\244\215\345\255\227\346\257\215.md" +++ "b/Solutions/0316. \345\216\273\351\231\244\351\207\215\345\244\215\345\255\227\346\257\215.md" @@ -3,6 +3,10 @@ - 标签:栈、贪心、字符串、单调栈 - 难度:中等 +## 题目链接 + +- [0316. 去除重复字母 - 力扣](https://leetcode.cn/problems/remove-duplicate-letters/) + ## 题目大意 **描述**:给定一个字符串 `s`。 diff --git "a/Solutions/0318. \346\234\200\345\244\247\345\215\225\350\257\215\351\225\277\345\272\246\344\271\230\347\247\257.md" "b/Solutions/0318. \346\234\200\345\244\247\345\215\225\350\257\215\351\225\277\345\272\246\344\271\230\347\247\257.md" index 24dba754..f02f2730 100644 --- "a/Solutions/0318. \346\234\200\345\244\247\345\215\225\350\257\215\351\225\277\345\272\246\344\271\230\347\247\257.md" +++ "b/Solutions/0318. \346\234\200\345\244\247\345\215\225\350\257\215\351\225\277\345\272\246\344\271\230\347\247\257.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、字符串 - 难度:中等 +## 题目链接 + +- [0318. 最大单词长度乘积 - 力扣](https://leetcode.cn/problems/maximum-product-of-word-lengths/) + ## 题目大意 给定一个字符串数组 `words`。字符串中只包含英语的小写字母。 diff --git "a/Solutions/0322. \351\233\266\351\222\261\345\205\221\346\215\242.md" "b/Solutions/0322. \351\233\266\351\222\261\345\205\221\346\215\242.md" index 80d60b4e..cd162862 100644 --- "a/Solutions/0322. \351\233\266\351\222\261\345\205\221\346\215\242.md" +++ "b/Solutions/0322. \351\233\266\351\222\261\345\205\221\346\215\242.md" @@ -3,6 +3,10 @@ - 标签:广度优先搜索、数组、动态规划 - 难度:中等 +## 题目链接 + +- [0322. 零钱兑换 - 力扣](https://leetcode.cn/problems/coin-change/) + ## 题目大意 **描述**:给定代表不同面额的硬币数组 $coins$ 和一个总金额 $amount$。 diff --git "a/Solutions/0323. \346\227\240\345\220\221\345\233\276\344\270\255\350\277\236\351\200\232\345\210\206\351\207\217\347\232\204\346\225\260\347\233\256.md" "b/Solutions/0323. \346\227\240\345\220\221\345\233\276\344\270\255\350\277\236\351\200\232\345\210\206\351\207\217\347\232\204\346\225\260\347\233\256.md" index 342b738c..b37d4b4f 100644 --- "a/Solutions/0323. \346\227\240\345\220\221\345\233\276\344\270\255\350\277\236\351\200\232\345\210\206\351\207\217\347\232\204\346\225\260\347\233\256.md" +++ "b/Solutions/0323. \346\227\240\345\220\221\345\233\276\344\270\255\350\277\236\351\200\232\345\210\206\351\207\217\347\232\204\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 +## 题目链接 + +- [0323. 无向图中连通分量的数目 - 力扣](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) + ## 题目大意 **描述**:给定 `n` 个节点(编号从 `0` 到 `n - 1`)的图的无向边列表 `edges`,其中 `edges[i] = [u, v]` 表示节点 `u` 和节点 `v` 之间有一条无向边。 diff --git "a/Solutions/0324. \346\221\206\345\212\250\346\216\222\345\272\217 II.md" "b/Solutions/0324. \346\221\206\345\212\250\346\216\222\345\272\217 II.md" index b5bb2faf..2387e012 100644 --- "a/Solutions/0324. \346\221\206\345\212\250\346\216\222\345\272\217 II.md" +++ "b/Solutions/0324. \346\221\206\345\212\250\346\216\222\345\272\217 II.md" @@ -3,6 +3,10 @@ - 标签:数组、分治、快速选择、排序 - 难度:中等 +## 题目链接 + +- [0324. 摆动排序 II - 力扣](https://leetcode.cn/problems/wiggle-sort-ii/) + ## 题目大意 给你一个整数数组 `nums`。 diff --git "a/Solutions/0326. 3 \347\232\204\345\271\202.md" "b/Solutions/0326. 3 \347\232\204\345\271\202.md" index cdcbbf5c..c733d394 100644 --- "a/Solutions/0326. 3 \347\232\204\345\271\202.md" +++ "b/Solutions/0326. 3 \347\232\204\345\271\202.md" @@ -3,6 +3,10 @@ - 标签:递归、数学 - 难度:简单 +## 题目链接 + +- [0326. 3 的幂 - 力扣](https://leetcode.cn/problems/power-of-three/) + ## 题目大意 给定一个整数 n,判断 n 是否是 3 的幂次方。$-2^{31} \le n \le 2^{31}-1$ diff --git "a/Solutions/0328. \345\245\207\345\201\266\351\223\276\350\241\250.md" "b/Solutions/0328. \345\245\207\345\201\266\351\223\276\350\241\250.md" index 75038a56..3f24c732 100644 --- "a/Solutions/0328. \345\245\207\345\201\266\351\223\276\350\241\250.md" +++ "b/Solutions/0328. \345\245\207\345\201\266\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:链表 - 难度:中等 +## 题目链接 + +- [0328. 奇偶链表 - 力扣](https://leetcode.cn/problems/odd-even-linked-list/) + ## 题目大意 **描述**:给定一个单链表的头节点 `head`。 diff --git "a/Solutions/0329. \347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" "b/Solutions/0329. \347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" index 1378031f..81f52cf1 100644 --- "a/Solutions/0329. \347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" +++ "b/Solutions/0329. \347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 - 难度:困难 +## 题目链接 + +- [0329. 矩阵中的最长递增路径 - 力扣](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) + ## 题目大意 给定一个 `m * n` 大小的整数矩阵 `matrix`。要求:找出其中最长递增路径的长度。 diff --git "a/Solutions/0334. \351\200\222\345\242\236\347\232\204\344\270\211\345\205\203\345\255\220\345\272\217\345\210\227.md" "b/Solutions/0334. \351\200\222\345\242\236\347\232\204\344\270\211\345\205\203\345\255\220\345\272\217\345\210\227.md" index d75be091..26c4cfbb 100644 --- "a/Solutions/0334. \351\200\222\345\242\236\347\232\204\344\270\211\345\205\203\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/0334. \351\200\222\345\242\236\347\232\204\344\270\211\345\205\203\345\255\220\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组 - 难度:中等 +## 题目链接 + +- [0334. 递增的三元子序列 - 力扣](https://leetcode.cn/problems/increasing-triplet-subsequence/) + ## 题目大意 给定一个整数数组 `nums`。 diff --git "a/Solutions/0336. \345\233\236\346\226\207\345\257\271.md" "b/Solutions/0336. \345\233\236\346\226\207\345\257\271.md" index eb013220..f65d6333 100644 --- "a/Solutions/0336. \345\233\236\346\226\207\345\257\271.md" +++ "b/Solutions/0336. \345\233\236\346\226\207\345\257\271.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、哈希表、字符串 - 难度:困难 +## 题目链接 + +- [0336. 回文对 - 力扣](https://leetcode.cn/problems/palindrome-pairs/) + ## 题目大意 给定一组互不相同的单词列表 `words`。 diff --git "a/Solutions/0337. \346\211\223\345\256\266\345\212\253\350\210\215 III.md" "b/Solutions/0337. \346\211\223\345\256\266\345\212\253\350\210\215 III.md" index bbf241e6..b349e40c 100644 --- "a/Solutions/0337. \346\211\223\345\256\266\345\212\253\350\210\215 III.md" +++ "b/Solutions/0337. \346\211\223\345\256\266\345\212\253\350\210\215 III.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、动态规划、二叉树 - 难度:中等 +## 题目链接 + +- [0337. 打家劫舍 III - 力扣](https://leetcode.cn/problems/house-robber-iii/) + ## 题目大意 小偷发现了一个新的可行窃的地区,这个地区的形状是一棵二叉树。这个地区只有一个入口,称为「根」。除了「根」之外,每栋房子只有一个「父」房子与之相连。如果两个直接相连的房子在同一天被打劫,房屋将自动报警。 diff --git "a/Solutions/0338. \346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" "b/Solutions/0338. \346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" index c7004630..12962015 100644 --- "a/Solutions/0338. \346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" +++ "b/Solutions/0338. \346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:位运算、动态规划 - 难度:简单 +## 题目链接 + +- [0338. 比特位计数 - 力扣](https://leetcode.cn/problems/counting-bits/) + ## 题目大意 **描述**:给定一个整数 `n`。 diff --git "a/Solutions/0340. \350\207\263\345\244\232\345\214\205\345\220\253 K \344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" "b/Solutions/0340. \350\207\263\345\244\232\345\214\205\345\220\253 K \344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" index 030f5488..2ab5d145 100644 --- "a/Solutions/0340. \350\207\263\345\244\232\345\214\205\345\220\253 K \344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" +++ "b/Solutions/0340. \350\207\263\345\244\232\345\214\205\345\220\253 K \344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、滑动窗口 - 难度:中等 +## 题目链接 + +- [0340. 至多包含 K 个不同字符的最长子串 - 力扣](https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/) + ## 题目大意 给定一个字符串 `s`, diff --git "a/Solutions/0341. \346\211\201\345\271\263\345\214\226\345\265\214\345\245\227\345\210\227\350\241\250\350\277\255\344\273\243\345\231\250.md" "b/Solutions/0341. \346\211\201\345\271\263\345\214\226\345\265\214\345\245\227\345\210\227\350\241\250\350\277\255\344\273\243\345\231\250.md" index dae241e4..0940327e 100644 --- "a/Solutions/0341. \346\211\201\345\271\263\345\214\226\345\265\214\345\245\227\345\210\227\350\241\250\350\277\255\344\273\243\345\231\250.md" +++ "b/Solutions/0341. \346\211\201\345\271\263\345\214\226\345\265\214\345\245\227\345\210\227\350\241\250\350\277\255\344\273\243\345\231\250.md" @@ -3,6 +3,10 @@ - 标签:栈、树、深度优先搜索、设计、队列、迭代器 - 难度:中等 +## 题目链接 + +- [0341. 扁平化嵌套列表迭代器 - 力扣](https://leetcode.cn/problems/flatten-nested-list-iterator/) + ## 题目大意 给定一个嵌套的整数列表 `nestedList` 。列表中元素类型为 NestedInteger 类。每个元素(NestedInteger 对象)要么是一个整数,要么是一个列表;该列表的元素也可能是整数或者是其他列表。 diff --git "a/Solutions/0342. 4\347\232\204\345\271\202.md" "b/Solutions/0342. 4\347\232\204\345\271\202.md" index 6e7dae09..05ede6ed 100644 --- "a/Solutions/0342. 4\347\232\204\345\271\202.md" +++ "b/Solutions/0342. 4\347\232\204\345\271\202.md" @@ -3,6 +3,10 @@ - 标签:位运算、递归、数学 - 难度:简单 +## 题目链接 + +- [0342. 4的幂 - 力扣](https://leetcode.cn/problems/power-of-four/) + ## 题目大意 给定一个整数 $n$,判断 $n$ 是否是 $4$ 的幂次方,如果是的话,返回 True。不是的话,返回 False。 diff --git "a/Solutions/0343. \346\225\264\346\225\260\346\213\206\345\210\206.md" "b/Solutions/0343. \346\225\264\346\225\260\346\213\206\345\210\206.md" index 30413ed6..3b7181e8 100644 --- "a/Solutions/0343. \346\225\264\346\225\260\346\213\206\345\210\206.md" +++ "b/Solutions/0343. \346\225\264\346\225\260\346\213\206\345\210\206.md" @@ -3,6 +3,10 @@ - 标签:数学、动态规划 - 难度:中等 +## 题目链接 + +- [0343. 整数拆分 - 力扣](https://leetcode.cn/problems/integer-break/) + ## 题目大意 **描述**:给定一个正整数 $n$,将其拆分为 $k (k \ge 2)$ 个正整数的和,并使这些整数的乘积最大化。 diff --git "a/Solutions/0344. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0344. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md" index 4aa3b7ab..e8867fd1 100644 --- "a/Solutions/0344. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0344. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:双指针、字符串 - 难度:简单 +## 题目链接 + +- [0344. 反转字符串 - 力扣](https://leetcode.cn/problems/reverse-string/) + ## 题目大意 **描述**:给定一个字符数组 $s$。 diff --git "a/Solutions/0345. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\351\237\263\345\255\227\346\257\215.md" "b/Solutions/0345. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\351\237\263\345\255\227\346\257\215.md" index 016f26e0..03a132a1 100644 --- "a/Solutions/0345. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\351\237\263\345\255\227\346\257\215.md" +++ "b/Solutions/0345. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\351\237\263\345\255\227\346\257\215.md" @@ -3,6 +3,10 @@ - 标签:双指针、字符串 - 难度:简单 +## 题目链接 + +- [0345. 反转字符串中的元音字母 - 力扣](https://leetcode.cn/problems/reverse-vowels-of-a-string/) + ## 题目大意 **描述**:给定一个字符串 $s$。 diff --git "a/Solutions/0346. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\247\273\345\212\250\345\271\263\345\235\207\345\200\274.md" "b/Solutions/0346. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\247\273\345\212\250\345\271\263\345\235\207\345\200\274.md" index fafbe81f..62ab03e8 100644 --- "a/Solutions/0346. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\247\273\345\212\250\345\271\263\345\235\207\345\200\274.md" +++ "b/Solutions/0346. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\247\273\345\212\250\345\271\263\345\235\207\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:设计、队列、数组、数据流 - 难度:简单 +## 题目链接 + +- [0346. 数据流中的移动平均值 - 力扣](https://leetcode.cn/problems/moving-average-from-data-stream/) + ## 题目大意 给定一个整数 `val` 和一个窗口大小 `size`。 diff --git "a/Solutions/0347. \345\211\215 K \344\270\252\351\253\230\351\242\221\345\205\203\347\264\240.md" "b/Solutions/0347. \345\211\215 K \344\270\252\351\253\230\351\242\221\345\205\203\347\264\240.md" index b32c6193..526e804d 100644 --- "a/Solutions/0347. \345\211\215 K \344\270\252\351\253\230\351\242\221\345\205\203\347\264\240.md" +++ "b/Solutions/0347. \345\211\215 K \344\270\252\351\253\230\351\242\221\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) - 难度:中等 +## 题目链接 + +- [0347. 前 K 个高频元素 - 力扣](https://leetcode.cn/problems/top-k-frequent-elements/) + ## 题目大意 **描述**:给定一个整数数组 $nums$ 和一个整数 $k$。 diff --git "a/Solutions/0349. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md" "b/Solutions/0349. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md" index 0ff90f0a..acde6f9f 100644 --- "a/Solutions/0349. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md" +++ "b/Solutions/0349. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、双指针、二分查找、排序 - 难度:简单 +## 题目链接 + +- [0349. 两个数组的交集 - 力扣](https://leetcode.cn/problems/intersection-of-two-arrays/) + ## 题目大意 **描述**:给定两个数组 $nums1$ 和 $nums2$。 diff --git "a/Solutions/0350. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206 II.md" "b/Solutions/0350. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206 II.md" index 172f6c98..1c61b03d 100644 --- "a/Solutions/0350. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206 II.md" +++ "b/Solutions/0350. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206 II.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表 - 难度:简单 +## 题目链接 + +- [0350. 两个数组的交集 II - 力扣](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) + ## 题目大意 **描述**:给定两个数组 $nums1$ 和 $nums2$。 diff --git "a/Solutions/0351. \345\256\211\345\215\223\347\263\273\347\273\237\346\211\213\345\212\277\350\247\243\351\224\201.md" "b/Solutions/0351. \345\256\211\345\215\223\347\263\273\347\273\237\346\211\213\345\212\277\350\247\243\351\224\201.md" index 01872dab..21491f10 100644 --- "a/Solutions/0351. \345\256\211\345\215\223\347\263\273\347\273\237\346\211\213\345\212\277\350\247\243\351\224\201.md" +++ "b/Solutions/0351. \345\256\211\345\215\223\347\263\273\347\273\237\346\211\213\345\212\277\350\247\243\351\224\201.md" @@ -3,6 +3,10 @@ - 标签:动态规划、回溯 - 难度:中等 +## 题目链接 + +- [0351. 安卓系统手势解锁 - 力扣](https://leetcode.cn/problems/android-unlock-patterns/) + ## 题目大意 **描述**:安卓系统手势解锁的界面是一个编号为 $1 \sim 9$、大小为 $3 \times 3$ 的网格。用户可以设定一个「解锁模式」,按照一定顺序经过 $k$ 个点,构成一个「解锁手势」。现在给定两个整数,分别为 $m$ 和 $n$。 diff --git "a/Solutions/0354. \344\277\204\347\275\227\346\226\257\345\245\227\345\250\203\344\277\241\345\260\201\351\227\256\351\242\230.md" "b/Solutions/0354. \344\277\204\347\275\227\346\226\257\345\245\227\345\250\203\344\277\241\345\260\201\351\227\256\351\242\230.md" index ae47e707..3792521e 100644 --- "a/Solutions/0354. \344\277\204\347\275\227\346\226\257\345\245\227\345\250\203\344\277\241\345\260\201\351\227\256\351\242\230.md" +++ "b/Solutions/0354. \344\277\204\347\275\227\346\226\257\345\245\227\345\250\203\344\277\241\345\260\201\351\227\256\351\242\230.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、动态规划、排序 - 难度:困难 +## 题目链接 + +- [0354. 俄罗斯套娃信封问题 - 力扣](https://leetcode.cn/problems/russian-doll-envelopes/) + ## 题目大意 给定一个二维整数数组 envelopes 表示信封,其中 $envelopes[i] = [wi, hi]$,表示第 $i$ 个信封的宽度 $w_i$ 和高度 $h_i$。 diff --git "a/Solutions/0357. \347\273\237\350\256\241\345\220\204\344\275\215\346\225\260\345\255\227\351\203\275\344\270\215\345\220\214\347\232\204\346\225\260\345\255\227\344\270\252\346\225\260.md" "b/Solutions/0357. \347\273\237\350\256\241\345\220\204\344\275\215\346\225\260\345\255\227\351\203\275\344\270\215\345\220\214\347\232\204\346\225\260\345\255\227\344\270\252\346\225\260.md" index 8d78168b..c9553448 100644 --- "a/Solutions/0357. \347\273\237\350\256\241\345\220\204\344\275\215\346\225\260\345\255\227\351\203\275\344\270\215\345\220\214\347\232\204\346\225\260\345\255\227\344\270\252\346\225\260.md" +++ "b/Solutions/0357. \347\273\237\350\256\241\345\220\204\344\275\215\346\225\260\345\255\227\351\203\275\344\270\215\345\220\214\347\232\204\346\225\260\345\255\227\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数学、动态规划、回溯 - 难度:中等 +## 题目链接 + +- [0357. 统计各位数字都不同的数字个数 - 力扣](https://leetcode.cn/problems/count-numbers-with-unique-digits/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/0359. \346\227\245\345\277\227\351\200\237\347\216\207\351\231\220\345\210\266\345\231\250.md" "b/Solutions/0359. \346\227\245\345\277\227\351\200\237\347\216\207\351\231\220\345\210\266\345\231\250.md" index ebd214a2..c65c8161 100644 --- "a/Solutions/0359. \346\227\245\345\277\227\351\200\237\347\216\207\351\231\220\345\210\266\345\231\250.md" +++ "b/Solutions/0359. \346\227\245\345\277\227\351\200\237\347\216\207\351\231\220\345\210\266\345\231\250.md" @@ -3,6 +3,10 @@ - 标签:设计、哈希表 - 难度:简单 +## 题目链接 + +- [0359. 日志速率限制器 - 力扣](https://leetcode.cn/problems/logger-rate-limiter/) + ## 题目大意 设计一个日志系统,可以流式接受消息和消息的时间戳。每条不重复的信息最多每 10 秒打印一次。即如果在时间 t 打印了 A 信息,则直到 t+10 的时间,才能再次打印这条信息。 diff --git "a/Solutions/0360. \346\234\211\345\272\217\350\275\254\345\214\226\346\225\260\347\273\204.md" "b/Solutions/0360. \346\234\211\345\272\217\350\275\254\345\214\226\346\225\260\347\273\204.md" index 52e09529..91d08037 100644 --- "a/Solutions/0360. \346\234\211\345\272\217\350\275\254\345\214\226\346\225\260\347\273\204.md" +++ "b/Solutions/0360. \346\234\211\345\272\217\350\275\254\345\214\226\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、数学、双指针、排序 - 难度:中等 +## 题目链接 + +- [0360. 有序转化数组 - 力扣](https://leetcode.cn/problems/sort-transformed-array/) + ## 题目大意 给定一个已经排好的整数数组 `nums` 和整数 `a`、`b`、`c`。 diff --git "a/Solutions/0367. \346\234\211\346\225\210\347\232\204\345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" "b/Solutions/0367. \346\234\211\346\225\210\347\232\204\345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" index 9647072d..f6483ec9 100644 --- "a/Solutions/0367. \346\234\211\346\225\210\347\232\204\345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" +++ "b/Solutions/0367. \346\234\211\346\225\210\347\232\204\345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数学、二分查找 - 难度:简单 +## 题目链接 + +- [0367. 有效的完全平方数 - 力扣](https://leetcode.cn/problems/valid-perfect-square/) + ## 题目大意 **描述**:给定一个正整数 $num$。 diff --git "a/Solutions/0370. \345\214\272\351\227\264\345\212\240\346\263\225.md" "b/Solutions/0370. \345\214\272\351\227\264\345\212\240\346\263\225.md" index c56f94da..5cb4ce19 100644 --- "a/Solutions/0370. \345\214\272\351\227\264\345\212\240\346\263\225.md" +++ "b/Solutions/0370. \345\214\272\351\227\264\345\212\240\346\263\225.md" @@ -3,6 +3,10 @@ - 标签:数组、前缀和 - 难度:中等 +## 题目链接 + +- [0370. 区间加法 - 力扣](https://leetcode.cn/problems/range-addition/) + ## 题目大意 **描述**:给定一个数组的长度 `length` ,初始情况下数组中所有数字均为 `0`。再给定 `k` 个更新操作。其中每个操作是一个三元组 `[startIndex, endIndex, inc]`,表示将子数组 `nums[startIndex ... endIndex]` (包括 `startIndex`、`endIndex`)上所有元素增加 `inc`。 diff --git "a/Solutions/0371. \344\270\244\346\225\264\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0371. \344\270\244\346\225\264\346\225\260\344\271\213\345\222\214.md" index fad4e8dc..50e9e1f4 100644 --- "a/Solutions/0371. \344\270\244\346\225\264\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0371. \344\270\244\346\225\264\346\225\260\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:位运算、数学 - 难度:中等 +## 题目链接 + +- [0371. 两整数之和 - 力扣](https://leetcode.cn/problems/sum-of-two-integers/) + ## 题目大意 **描述**:给定两个整数 $a$ 和 $b$。 diff --git "a/Solutions/0374. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217.md" "b/Solutions/0374. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217.md" index f2eb46ad..5a3a652f 100644 --- "a/Solutions/0374. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217.md" +++ "b/Solutions/0374. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217.md" @@ -3,6 +3,10 @@ - 标签:二分查找、交互 - 难度:简单 +## 题目链接 + +- [0374. 猜数字大小 - 力扣](https://leetcode.cn/problems/guess-number-higher-or-lower/) + ## 题目大意 **描述**:猜数字游戏。给定一个整数 $n$ 和一个接口 `def guess(num: int) -> int:`,题目会从 $1 \sim n$ 中随机选取一个数 $x$。我们只能通过调用接口来判断自己猜测的数是否正确。 diff --git "a/Solutions/0375. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217 II.md" "b/Solutions/0375. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217 II.md" index 114543a3..d63c784c 100644 --- "a/Solutions/0375. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217 II.md" +++ "b/Solutions/0375. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217 II.md" @@ -3,6 +3,10 @@ - 标签:数学、动态规划、博弈 - 难度:中等 +## 题目链接 + +- [0375. 猜数字大小 II - 力扣](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) + ## 题目大意 **描述**:现在两个人来玩一个猜数游戏,游戏规则如下: diff --git "a/Solutions/0376. \346\221\206\345\212\250\345\272\217\345\210\227.md" "b/Solutions/0376. \346\221\206\345\212\250\345\272\217\345\210\227.md" index bcfcd931..42054408 100644 --- "a/Solutions/0376. \346\221\206\345\212\250\345\272\217\345\210\227.md" +++ "b/Solutions/0376. \346\221\206\345\212\250\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、动态规划 - 难度:中等 +## 题目链接 + +- [0376. 摆动序列 - 力扣](https://leetcode.cn/problems/wiggle-subsequence/) + ## 题目大意 如果一个数组序列中,连续项之间的差值是严格的在正数、负数之间交替,则称该数组序列为「摆动序列」。第一个差值可能为正数,也可能为负数。只有一个元素或者还有两个不等元素的数组序列也可以看做是摆动序列。 diff --git "a/Solutions/0377. \347\273\204\345\220\210\346\200\273\345\222\214 \342\205\243.md" "b/Solutions/0377. \347\273\204\345\220\210\346\200\273\345\222\214 \342\205\243.md" index 832a17b0..82e3ba25 100644 --- "a/Solutions/0377. \347\273\204\345\220\210\346\200\273\345\222\214 \342\205\243.md" +++ "b/Solutions/0377. \347\273\204\345\220\210\346\200\273\345\222\214 \342\205\243.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [0377. 组合总和 Ⅳ - 力扣](https://leetcode.cn/problems/combination-sum-iv/) + ## 题目大意 **描述**:给定一个由不同整数组成的数组 $nums$ 和一个目标整数 $target$。 diff --git "a/Solutions/0378. \346\234\211\345\272\217\347\237\251\351\230\265\344\270\255\347\254\254 K \345\260\217\347\232\204\345\205\203\347\264\240.md" "b/Solutions/0378. \346\234\211\345\272\217\347\237\251\351\230\265\344\270\255\347\254\254 K \345\260\217\347\232\204\345\205\203\347\264\240.md" index 254620a7..13218bea 100644 --- "a/Solutions/0378. \346\234\211\345\272\217\347\237\251\351\230\265\344\270\255\347\254\254 K \345\260\217\347\232\204\345\205\203\347\264\240.md" +++ "b/Solutions/0378. \346\234\211\345\272\217\347\237\251\351\230\265\344\270\255\347\254\254 K \345\260\217\347\232\204\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、矩阵、排序、堆(优先队列) - 难度:中等 +## 题目链接 + +- [0378. 有序矩阵中第 K 小的元素 - 力扣](https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/) + ## 题目大意 给定一个 `n * n` 矩阵 `matrix`,其中每行和每列元素均按升序排序。 diff --git "a/Solutions/0380. O(1) \346\227\266\351\227\264\346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\350\216\267\345\217\226\351\232\217\346\234\272\345\205\203\347\264\240.md" "b/Solutions/0380. O(1) \346\227\266\351\227\264\346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\350\216\267\345\217\226\351\232\217\346\234\272\345\205\203\347\264\240.md" index c59b91d3..67fafee2 100644 --- "a/Solutions/0380. O(1) \346\227\266\351\227\264\346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\350\216\267\345\217\226\351\232\217\346\234\272\345\205\203\347\264\240.md" +++ "b/Solutions/0380. O(1) \346\227\266\351\227\264\346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\350\216\267\345\217\226\351\232\217\346\234\272\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:设计、数组、哈希表、数学、随机化 - 难度:中等 +## 题目链接 + +- [0380. 常数时间插入、删除和获取随机元素 - 力扣](https://leetcode.cn/problems/insert-delete-getrandom-o1/) + ## 题目大意 设计一个数据结构 ,支持时间复杂度为 O(1) 的以下操作: diff --git "a/Solutions/0383. \350\265\216\351\207\221\344\277\241.md" "b/Solutions/0383. \350\265\216\351\207\221\344\277\241.md" index 0c761f1f..d3e4e605 100644 --- "a/Solutions/0383. \350\265\216\351\207\221\344\277\241.md" +++ "b/Solutions/0383. \350\265\216\351\207\221\344\277\241.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、计数 - 难度:简单 +## 题目链接 + +- [0383. 赎金信 - 力扣](https://leetcode.cn/problems/ransom-note/) + ## 题目大意 **描述**:为了不在赎金信中暴露字迹,从杂志上搜索各个需要的字母,组成单词来表达意思。 diff --git "a/Solutions/0384. \346\211\223\344\271\261\346\225\260\347\273\204.md" "b/Solutions/0384. \346\211\223\344\271\261\346\225\260\347\273\204.md" index 27b6c0a6..6808e03d 100644 --- "a/Solutions/0384. \346\211\223\344\271\261\346\225\260\347\273\204.md" +++ "b/Solutions/0384. \346\211\223\344\271\261\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、数学、随机化 - 难度:中等 +## 题目链接 + +- [0384. 打乱数组 - 力扣](https://leetcode.cn/problems/shuffle-an-array/) + ## 题目大意 **描述**:给定一个整数数组 $nums$。 diff --git "a/Solutions/0386. \345\255\227\345\205\270\345\272\217\346\216\222\346\225\260.md" "b/Solutions/0386. \345\255\227\345\205\270\345\272\217\346\216\222\346\225\260.md" index 9c151657..14851cbe 100644 --- "a/Solutions/0386. \345\255\227\345\205\270\345\272\217\346\216\222\346\225\260.md" +++ "b/Solutions/0386. \345\255\227\345\205\270\345\272\217\346\216\222\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、字典树 - 难度:中等 +## 题目链接 + +- [0386. 字典序排数 - 力扣](https://leetcode.cn/problems/lexicographical-numbers/) + ## 题目大意 给定一个整数 `n`。 diff --git "a/Solutions/0387. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254\344\270\200\344\270\252\345\224\257\344\270\200\345\255\227\347\254\246.md" "b/Solutions/0387. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254\344\270\200\344\270\252\345\224\257\344\270\200\345\255\227\347\254\246.md" index 334a01f6..01a2c917 100644 --- "a/Solutions/0387. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254\344\270\200\344\270\252\345\224\257\344\270\200\345\255\227\347\254\246.md" +++ "b/Solutions/0387. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254\344\270\200\344\270\252\345\224\257\344\270\200\345\255\227\347\254\246.md" @@ -3,6 +3,10 @@ - 标签:队列、哈希表、字符串、计数 - 难度:简单 +## 题目链接 + +- [0387. 字符串中的第一个唯一字符 - 力扣](https://leetcode.cn/problems/first-unique-character-in-a-string/) + ## 题目大意 给定一个只包含小写字母的字符串 `s`。 diff --git "a/Solutions/0389. \346\211\276\344\270\215\345\220\214.md" "b/Solutions/0389. \346\211\276\344\270\215\345\220\214.md" index 72b6920e..6762a864 100644 --- "a/Solutions/0389. \346\211\276\344\270\215\345\220\214.md" +++ "b/Solutions/0389. \346\211\276\344\270\215\345\220\214.md" @@ -3,6 +3,10 @@ - 标签:位运算、哈希表、字符串、排序 - 难度:简单 +## 题目链接 + +- [0389. 找不同 - 力扣](https://leetcode.cn/problems/find-the-difference/) + ## 题目大意 给定两个只包含小写字母的字符串 s、t。字符串 t 是由 s 进行随机重拍之后,再在随机位置添加一个字母得到的。要求:找出字符串 t 中被添加的字母。 diff --git "a/Solutions/0391. \345\256\214\347\276\216\347\237\251\345\275\242.md" "b/Solutions/0391. \345\256\214\347\276\216\347\237\251\345\275\242.md" index 0f472859..a940e0c9 100644 --- "a/Solutions/0391. \345\256\214\347\276\216\347\237\251\345\275\242.md" +++ "b/Solutions/0391. \345\256\214\347\276\216\347\237\251\345\275\242.md" @@ -3,6 +3,10 @@ - 标签:数组、扫描线 - 难度:困难 +## 题目链接 + +- [0391. 完美矩形 - 力扣](https://leetcode.cn/problems/perfect-rectangle/) + ## 题目大意 **描述**:给定一个数组 `rectangles`,其中 `rectangles[i] = [xi, yi, ai, bi]` 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 `(xi, yi)`,右上顶点是 `(ai, bi)`。 diff --git "a/Solutions/0392. \345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" "b/Solutions/0392. \345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" index 3b20f6c9..c8611840 100644 --- "a/Solutions/0392. \345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/0392. \345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:双指针、字符串、动态规划 - 难度:简单 +## 题目链接 + +- [0392. 判断子序列 - 力扣](https://leetcode.cn/problems/is-subsequence/) + ## 题目大意 **描述**:给定字符串 $s$ 和 $t$。 diff --git "a/Solutions/0394. \345\255\227\347\254\246\344\270\262\350\247\243\347\240\201.md" "b/Solutions/0394. \345\255\227\347\254\246\344\270\262\350\247\243\347\240\201.md" index 039d9c1b..a31f3b37 100644 --- "a/Solutions/0394. \345\255\227\347\254\246\344\270\262\350\247\243\347\240\201.md" +++ "b/Solutions/0394. \345\255\227\347\254\246\344\270\262\350\247\243\347\240\201.md" @@ -3,6 +3,10 @@ - 标签:栈、递归、字符串 - 难度:中等 +## 题目链接 + +- [0394. 字符串解码 - 力扣](https://leetcode.cn/problems/decode-string/) + ## 题目大意 **描述**:给定一个经过编码的字符串 `s`。 diff --git "a/Solutions/0395. \350\207\263\345\260\221\346\234\211 K \344\270\252\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" "b/Solutions/0395. \350\207\263\345\260\221\346\234\211 K \344\270\252\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" index 71747a91..cf5c480c 100644 --- "a/Solutions/0395. \350\207\263\345\260\221\346\234\211 K \344\270\252\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" +++ "b/Solutions/0395. \350\207\263\345\260\221\346\234\211 K \344\270\252\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、分治、滑动窗口 - 难度:中等 +## 题目链接 + +- [0395. 至少有 K 个重复字符的最长子串 - 力扣](https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/) + ## 题目大意 给定一个字符串 `s` 和一个整数 `k`。 diff --git "a/Solutions/0399. \351\231\244\346\263\225\346\261\202\345\200\274.md" "b/Solutions/0399. \351\231\244\346\263\225\346\261\202\345\200\274.md" index b696edcc..078058c3 100644 --- "a/Solutions/0399. \351\231\244\346\263\225\346\261\202\345\200\274.md" +++ "b/Solutions/0399. \351\231\244\346\263\225\346\261\202\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图、数组、最短路 - 难度:中等 +## 题目链接 + +- [0399. 除法求值 - 力扣](https://leetcode.cn/problems/evaluate-division/) + ## 题目大意 **描述**:给定一个变量对数组 $equations$ 和一个实数数组 $values$ 作为已知条件,其中 $equations[i] = [Ai, Bi]$ 和 $values[i]$ 共同表示 `Ai / Bi = values[i]`。每个 $Ai$ 或 $Bi$ 是一个表示单个变量的字符串。 diff --git "a/Solutions/0400. \347\254\254 N \344\275\215\346\225\260\345\255\227.md" "b/Solutions/0400. \347\254\254 N \344\275\215\346\225\260\345\255\227.md" index ef6c5f43..7f9b0528 100644 --- "a/Solutions/0400. \347\254\254 N \344\275\215\346\225\260\345\255\227.md" +++ "b/Solutions/0400. \347\254\254 N \344\275\215\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:数学、二分查找 - 难度:中等 +## 题目链接 + +- [0400. 第 N 位数字 - 力扣](https://leetcode.cn/problems/nth-digit/) + ## 题目大意 **描述**:给你一个整数 $n$。 diff --git "a/Solutions/0403. \351\235\222\350\233\231\350\277\207\346\262\263.md" "b/Solutions/0403. \351\235\222\350\233\231\350\277\207\346\262\263.md" index ad1102eb..0f2f17e8 100644 --- "a/Solutions/0403. \351\235\222\350\233\231\350\277\207\346\262\263.md" +++ "b/Solutions/0403. \351\235\222\350\233\231\350\277\207\346\262\263.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:困难 +## 题目链接 + +- [0403. 青蛙过河 - 力扣](https://leetcode.cn/problems/frog-jump/) + ## 题目大意 **描述**:一只青蛙要过河,这条河被等分为若干个单元格,每一个单元格内可能放油一块石子(也可能没有)。青蛙只能跳到有石子的单元格内,不能跳到没有石子的单元格内。 diff --git "a/Solutions/0404. \345\267\246\345\217\266\345\255\220\344\271\213\345\222\214.md" "b/Solutions/0404. \345\267\246\345\217\266\345\255\220\344\271\213\345\222\214.md" index f57f06fc..12c2b962 100644 --- "a/Solutions/0404. \345\267\246\345\217\266\345\255\220\344\271\213\345\222\214.md" +++ "b/Solutions/0404. \345\267\246\345\217\266\345\255\220\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0404. 左叶子之和 - 力扣](https://leetcode.cn/problems/sum-of-left-leaves/) + ## 题目大意 给定一个二叉树,计算所有左叶子之和。 diff --git "a/Solutions/0405. \346\225\260\345\255\227\350\275\254\346\215\242\344\270\272\345\215\201\345\205\255\350\277\233\345\210\266\346\225\260.md" "b/Solutions/0405. \346\225\260\345\255\227\350\275\254\346\215\242\344\270\272\345\215\201\345\205\255\350\277\233\345\210\266\346\225\260.md" index 9a674cf2..6d17c2f0 100644 --- "a/Solutions/0405. \346\225\260\345\255\227\350\275\254\346\215\242\344\270\272\345\215\201\345\205\255\350\277\233\345\210\266\346\225\260.md" +++ "b/Solutions/0405. \346\225\260\345\255\227\350\275\254\346\215\242\344\270\272\345\215\201\345\205\255\350\277\233\345\210\266\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:位运算、数学 - 难度:简单 +## 题目链接 + +- [0405. 数字转换为十六进制数 - 力扣](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) + ## 题目大意 **描述**:给定一个整数 $num$。 diff --git "a/Solutions/0406. \346\240\271\346\215\256\350\272\253\351\253\230\351\207\215\345\273\272\351\230\237\345\210\227.md" "b/Solutions/0406. \346\240\271\346\215\256\350\272\253\351\253\230\351\207\215\345\273\272\351\230\237\345\210\227.md" index f6fd40a1..017f6249 100644 --- "a/Solutions/0406. \346\240\271\346\215\256\350\272\253\351\253\230\351\207\215\345\273\272\351\230\237\345\210\227.md" +++ "b/Solutions/0406. \346\240\271\346\215\256\350\272\253\351\253\230\351\207\215\345\273\272\351\230\237\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:贪心、树状数组、线段树、数组、排序 - 难度:中等 +## 题目链接 + +- [0406. 根据身高重建队列 - 力扣](https://leetcode.cn/problems/queue-reconstruction-by-height/) + ## 题目大意 n 个人打乱顺序排成一排,给定一个数组 people 表示队列中人的属性(顺序是打乱的)。其中 $people[i] = [h_i, k_i]$ 表示第 i 个人的身高为 $h_i$,前面正好有 $k_i$ 个身高大于或等于 $h_i$ 的人。 diff --git "a/Solutions/0409. \346\234\200\351\225\277\345\233\236\346\226\207\344\270\262.md" "b/Solutions/0409. \346\234\200\351\225\277\345\233\236\346\226\207\344\270\262.md" index 3d40944d..a3a23102 100644 --- "a/Solutions/0409. \346\234\200\351\225\277\345\233\236\346\226\207\344\270\262.md" +++ "b/Solutions/0409. \346\234\200\351\225\277\345\233\236\346\226\207\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:贪心、哈希表、字符串 - 难度:简单 +## 题目链接 + +- [0409. 最长回文串 - 力扣](https://leetcode.cn/problems/longest-palindrome/) + ## 题目大意 给定一个包含大写字母和小写字母的字符串 `s`。 diff --git "a/Solutions/0410. \345\210\206\345\211\262\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\200\274.md" "b/Solutions/0410. \345\210\206\345\211\262\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\200\274.md" index eb339c0c..245a6b5c 100644 --- "a/Solutions/0410. \345\210\206\345\211\262\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\200\274.md" +++ "b/Solutions/0410. \345\210\206\345\211\262\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、二分查找、动态规划、前缀和 - 难度:困难 +## 题目链接 + +- [0410. 分割数组的最大值 - 力扣](https://leetcode.cn/problems/split-array-largest-sum/) + ## 题目大意 给定一个非负整数数组 nums 和一个整数 m,将数组分成 m 个非空的连续子数组,要求使 m 个子数组各自和的最大值最小,并求出子数组各自和的最大值。 diff --git a/Solutions/0412. Fizz Buzz.md b/Solutions/0412. Fizz Buzz.md index 1ee3422c..d8f3d342 100644 --- a/Solutions/0412. Fizz Buzz.md +++ b/Solutions/0412. Fizz Buzz.md @@ -3,6 +3,10 @@ - 标签:数学、字符串、模拟 - 难度:简单 +## 题目链接 + +- [0412. Fizz Buzz - 力扣](https://leetcode.cn/problems/fizz-buzz/) + ## 题目大意 给定一个整数 n,按照规则,输出 1~n 的字符串表示。 diff --git "a/Solutions/0415. \345\255\227\347\254\246\344\270\262\347\233\270\345\212\240.md" "b/Solutions/0415. \345\255\227\347\254\246\344\270\262\347\233\270\345\212\240.md" index 6cf66ba9..53724198 100644 --- "a/Solutions/0415. \345\255\227\347\254\246\344\270\262\347\233\270\345\212\240.md" +++ "b/Solutions/0415. \345\255\227\347\254\246\344\270\262\347\233\270\345\212\240.md" @@ -3,6 +3,10 @@ - 标签:数学、字符串、模拟 - 难度:简单 +## 题目链接 + +- [0415. 字符串相加 - 力扣](https://leetcode.cn/problems/add-strings/) + ## 题目大意 **描述**:给定两个字符串形式的非负整数 `num1` 和`num2`。 diff --git "a/Solutions/0416. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" "b/Solutions/0416. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" index 8fdf6be7..93a170e4 100644 --- "a/Solutions/0416. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" +++ "b/Solutions/0416. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [0416. 分割等和子集 - 力扣](https://leetcode.cn/problems/partition-equal-subset-sum/) + ## 题目大意 **描述**:给定一个只包含正整数的非空数组 $nums$。 diff --git "a/Solutions/0417. \345\244\252\345\271\263\346\264\213\345\244\247\350\245\277\346\264\213\346\260\264\346\265\201\351\227\256\351\242\230.md" "b/Solutions/0417. \345\244\252\345\271\263\346\264\213\345\244\247\350\245\277\346\264\213\346\260\264\346\265\201\351\227\256\351\242\230.md" index f678adaa..5071e89f 100644 --- "a/Solutions/0417. \345\244\252\345\271\263\346\264\213\345\244\247\350\245\277\346\264\213\346\260\264\346\265\201\351\227\256\351\242\230.md" +++ "b/Solutions/0417. \345\244\252\345\271\263\346\264\213\345\244\247\350\245\277\346\264\213\346\260\264\346\265\201\351\227\256\351\242\230.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、数组、矩阵 - 难度:中等 +## 题目链接 + +- [0417. 太平洋大西洋水流问题 - 力扣](https://leetcode.cn/problems/pacific-atlantic-water-flow/) + ## 题目大意 **描述**:给定一个 `m * n` 大小的二维非负整数矩阵 `heights` 来表示一片大陆上各个单元格的高度。`heights[i][j]` 表示第 `i` 行第 `j` 列所代表的陆地高度。这个二维矩阵所代表的陆地被太平洋和大西洋所包围着。左上角是「太平洋」,右下角是「大西洋」。规定水流只能按照上、下、左、右四个方向流动,且只能从高处流到低处,或者在同等高度上流动。 diff --git "a/Solutions/0421. \346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\345\274\202\346\210\226\345\200\274.md" "b/Solutions/0421. \346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\345\274\202\346\210\226\345\200\274.md" index 03f6e7b8..5063c584 100644 --- "a/Solutions/0421. \346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\345\274\202\346\210\226\345\200\274.md" +++ "b/Solutions/0421. \346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\345\274\202\346\210\226\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:位运算、字典树、数组、哈希表 - 难度:中等 +## 题目链接 + +- [0421. 数组中两个数的最大异或值 - 力扣](https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/) + ## 题目大意 给定一个整数数组 `nums`。 diff --git "a/Solutions/0424. \346\233\277\346\215\242\345\220\216\347\232\204\346\234\200\351\225\277\351\207\215\345\244\215\345\255\227\347\254\246.md" "b/Solutions/0424. \346\233\277\346\215\242\345\220\216\347\232\204\346\234\200\351\225\277\351\207\215\345\244\215\345\255\227\347\254\246.md" index aba387dd..edf2299f 100644 --- "a/Solutions/0424. \346\233\277\346\215\242\345\220\216\347\232\204\346\234\200\351\225\277\351\207\215\345\244\215\345\255\227\347\254\246.md" +++ "b/Solutions/0424. \346\233\277\346\215\242\345\220\216\347\232\204\346\234\200\351\225\277\351\207\215\345\244\215\345\255\227\347\254\246.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、滑动窗口 - 难度:中等 +## 题目链接 + +- [0424. 替换后的最长重复字符 - 力扣](https://leetcode.cn/problems/longest-repeating-character-replacement/) + ## 题目大意 给定一个仅由大写英文字母组成的字符串 s,以及一个整数 k。可以将任意位置上的字符替换成另外的大写字母,最多可替换 k 次。再进行上述操作后,找到包含重复字母的最长子串长度。 diff --git "a/Solutions/0425. \345\215\225\350\257\215\346\226\271\345\235\227.md" "b/Solutions/0425. \345\215\225\350\257\215\346\226\271\345\235\227.md" index 5628fa35..540ad354 100644 --- "a/Solutions/0425. \345\215\225\350\257\215\346\226\271\345\235\227.md" +++ "b/Solutions/0425. \345\215\225\350\257\215\346\226\271\345\235\227.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、字符串、回溯 - 难度:困难 +## 题目链接 + +- [0425. 单词方块 - 力扣](https://leetcode.cn/problems/word-squares/) + ## 题目大意 给定一个单词集合 `words`(没有重复)。 diff --git "a/Solutions/0426. \345\260\206\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\345\214\226\344\270\272\346\216\222\345\272\217\347\232\204\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/Solutions/0426. \345\260\206\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\345\214\226\344\270\272\346\216\222\345\272\217\347\232\204\345\217\214\345\220\221\351\223\276\350\241\250.md" index f51214a0..8f9ebc7e 100644 --- "a/Solutions/0426. \345\260\206\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\345\214\226\344\270\272\346\216\222\345\272\217\347\232\204\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ "b/Solutions/0426. \345\260\206\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\345\214\226\344\270\272\346\216\222\345\272\217\347\232\204\345\217\214\345\220\221\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 - 难度:中等 +## 题目链接 + +- [0426. 将二叉搜索树转化为排序的双向链表 - 力扣](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) + ## 题目大意 给定一棵二叉树的根节点 `root`。 diff --git "a/Solutions/0428. \345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226 N \345\217\211\346\240\221.md" "b/Solutions/0428. \345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226 N \345\217\211\346\240\221.md" index ce8ae971..bb22265a 100644 --- "a/Solutions/0428. \345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226 N \345\217\211\346\240\221.md" +++ "b/Solutions/0428. \345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226 N \345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、字符串 - 难度:困难 +## 题目链接 + +- [0428. 序列化和反序列化 N 叉树 - 力扣](https://leetcode.cn/problems/serialize-and-deserialize-n-ary-tree/) + ## 题目大意 要求:设计一个序列化和反序列化 N 叉树的算法。序列化 / 反序列化算法的算法实现没有限制。你只需要保证 N 叉树可以被序列化为一个字符串并且该字符串可以被反序列化成原树结构即可。 diff --git "a/Solutions/0429. N \345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" "b/Solutions/0429. N \345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" index 485de8d7..b479252b 100644 --- "a/Solutions/0429. N \345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" +++ "b/Solutions/0429. N \345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" @@ -3,6 +3,10 @@ - 标签:树、广度优先搜索 - 难度:中等 +## 题目链接 + +- [0429. N 叉树的层序遍历 - 力扣](https://leetcode.cn/problems/n-ary-tree-level-order-traversal/) + ## 题目大意 给定一个 N 叉树的根节点 `root`。 diff --git "a/Solutions/0430. \346\211\201\345\271\263\345\214\226\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/Solutions/0430. \346\211\201\345\271\263\345\214\226\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" index b472f8b1..c9a3d3bb 100644 --- "a/Solutions/0430. \346\211\201\345\271\263\345\214\226\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ "b/Solutions/0430. \346\211\201\345\271\263\345\214\226\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、链表、双向链表 - 难度:中等 +## 题目链接 + +- [0430. 扁平化多级双向链表 - 力扣](https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/) + ## 题目大意 给定一个带子链表指针 child 的双向链表,将 child 的子链表进行扁平化处理,使所有节点出现在单级双向链表中。 diff --git "a/Solutions/0435. \346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.md" "b/Solutions/0435. \346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.md" index 7853fba7..5b911c02 100644 --- "a/Solutions/0435. \346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.md" +++ "b/Solutions/0435. \346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、动态规划、排序 - 难度:中等 +## 题目链接 + +- [0435. 无重叠区间 - 力扣](https://leetcode.cn/problems/non-overlapping-intervals/) + ## 题目大意 **描述**:给定一个区间的集合 `intervals`,其中 `intervals[i] = [starti, endi]`。从集合中移除部分区间,使得剩下的区间互不重叠。 diff --git "a/Solutions/0437. \350\267\257\345\276\204\346\200\273\345\222\214 III.md" "b/Solutions/0437. \350\267\257\345\276\204\346\200\273\345\222\214 III.md" index b8be8681..141efdcb 100644 --- "a/Solutions/0437. \350\267\257\345\276\204\346\200\273\345\222\214 III.md" +++ "b/Solutions/0437. \350\267\257\345\276\204\346\200\273\345\222\214 III.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0437. 路径总和 III - 力扣](https://leetcode.cn/problems/path-sum-iii/) + ## 题目大意 给定一个二叉树的根节点 `root`,和一个整数 `sum`。 diff --git "a/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" "b/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" index cc7a38f1..502ac219 100644 --- "a/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" +++ "b/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、滑动窗口 - 难度:中等 +## 题目链接 + +- [0438. 找到字符串中所有字母异位词 - 力扣](https://leetcode.cn/problems/find-all-anagrams-in-a-string/) + ## 题目大意 给定两个字符串 `s` 和 `p`。 diff --git "a/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" index 61681dde..51ddae50 100644 --- "a/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:双指针、字符串 - 难度:中等 +## 题目链接 + +- [0443. 压缩字符串 - 力扣](https://leetcode.cn/problems/string-compression/) + ## 题目大意 **描述**:给定一个字符数组 `chars`。请使用下述算法压缩: diff --git "a/Solutions/0445. \344\270\244\346\225\260\347\233\270\345\212\240 II.md" "b/Solutions/0445. \344\270\244\346\225\260\347\233\270\345\212\240 II.md" index b821e36a..6a4e0214 100644 --- "a/Solutions/0445. \344\270\244\346\225\260\347\233\270\345\212\240 II.md" +++ "b/Solutions/0445. \344\270\244\346\225\260\347\233\270\345\212\240 II.md" @@ -3,6 +3,10 @@ - 标签:栈、链表、数学 - 难度:中等 +## 题目链接 + +- [0445. 两数相加 II - 力扣](https://leetcode.cn/problems/add-two-numbers-ii/) + ## 题目大意 给定两个非空链表的头节点 `l1` 和 `l2` 来代表两个非负整数。数字最高位位于链表开始位置。每个节点只储存一位数字。除了数字 `0` 之外,这两个链表代表的数字都不会以 `0` 开头。 diff --git "a/Solutions/0447. \345\233\236\346\227\213\351\225\226\347\232\204\346\225\260\351\207\217.md" "b/Solutions/0447. \345\233\236\346\227\213\351\225\226\347\232\204\346\225\260\351\207\217.md" index 54b1419a..d5eaea85 100644 --- "a/Solutions/0447. \345\233\236\346\227\213\351\225\226\347\232\204\346\225\260\351\207\217.md" +++ "b/Solutions/0447. \345\233\236\346\227\213\351\225\226\347\232\204\346\225\260\351\207\217.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、数学 - 难度:中等 +## 题目链接 + +- [0447. 回旋镖的数量 - 力扣](https://leetcode.cn/problems/number-of-boomerangs/) + ## 题目大意 给定平面上点坐标的数组 points,其中 $points[i] = [x_i, y_i]$。判断 points 中是否存在三个点 i,j,k,满足 i 和 j 之间的距离等于 i 和 k 之间的距离,即 $dist[i, j] = dist[i, k]$。找出满足上述关系的答案数量。 diff --git "a/Solutions/0450. \345\210\240\351\231\244\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\350\212\202\347\202\271.md" "b/Solutions/0450. \345\210\240\351\231\244\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\350\212\202\347\202\271.md" index e167afc9..fbb009ba 100644 --- "a/Solutions/0450. \345\210\240\351\231\244\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\350\212\202\347\202\271.md" +++ "b/Solutions/0450. \345\210\240\351\231\244\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:树、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [0450. 删除二叉搜索树中的节点 - 力扣](https://leetcode.cn/problems/delete-node-in-a-bst/) + ## 题目大意 **描述**:给定一个二叉搜索树的根节点 `root`,以及一个值 `key`。 diff --git "a/Solutions/0451. \346\240\271\346\215\256\345\255\227\347\254\246\345\207\272\347\216\260\351\242\221\347\216\207\346\216\222\345\272\217.md" "b/Solutions/0451. \346\240\271\346\215\256\345\255\227\347\254\246\345\207\272\347\216\260\351\242\221\347\216\207\346\216\222\345\272\217.md" index 26359de3..e3b6b1ac 100644 --- "a/Solutions/0451. \346\240\271\346\215\256\345\255\227\347\254\246\345\207\272\347\216\260\351\242\221\347\216\207\346\216\222\345\272\217.md" +++ "b/Solutions/0451. \346\240\271\346\215\256\345\255\227\347\254\246\345\207\272\347\216\260\351\242\221\347\216\207\346\216\222\345\272\217.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、桶排序、计数、排序、堆(优先队列) - 难度:中等 +## 题目链接 + +- [0451. 根据字符出现频率排序 - 力扣](https://leetcode.cn/problems/sort-characters-by-frequency/) + ## 题目大意 **描述**:给定一个字符串 `s`。 diff --git "a/Solutions/0452. \347\224\250\346\234\200\345\260\221\346\225\260\351\207\217\347\232\204\347\256\255\345\274\225\347\210\206\346\260\224\347\220\203.md" "b/Solutions/0452. \347\224\250\346\234\200\345\260\221\346\225\260\351\207\217\347\232\204\347\256\255\345\274\225\347\210\206\346\260\224\347\220\203.md" index 0defaeed..0bc549da 100644 --- "a/Solutions/0452. \347\224\250\346\234\200\345\260\221\346\225\260\351\207\217\347\232\204\347\256\255\345\274\225\347\210\206\346\260\224\347\220\203.md" +++ "b/Solutions/0452. \347\224\250\346\234\200\345\260\221\346\225\260\351\207\217\347\232\204\347\256\255\345\274\225\347\210\206\346\260\224\347\220\203.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、排序 - 难度:中等 +## 题目链接 + +- [0452. 用最少数量的箭引爆气球 - 力扣](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) + ## 题目大意 **描述**:在一个坐标系中有许多球形的气球。对于每个气球,给定气球在 x 轴上的开始坐标和结束坐标 $(x_{start}, x_{end})$。 diff --git "a/Solutions/0454. \345\233\233\346\225\260\347\233\270\345\212\240 II.md" "b/Solutions/0454. \345\233\233\346\225\260\347\233\270\345\212\240 II.md" index 3d48cdff..118c27f2 100644 --- "a/Solutions/0454. \345\233\233\346\225\260\347\233\270\345\212\240 II.md" +++ "b/Solutions/0454. \345\233\233\346\225\260\347\233\270\345\212\240 II.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表 - 难度:中等 +## 题目链接 + +- [0454. 四数相加 II - 力扣](https://leetcode.cn/problems/4sum-ii/) + ## 题目大意 **描述**:给定四个整数数组 $nums1$、$nums2$、$nums3$、$nums4$。 diff --git "a/Solutions/0455. \345\210\206\345\217\221\351\245\274\345\271\262.md" "b/Solutions/0455. \345\210\206\345\217\221\351\245\274\345\271\262.md" index f2397b3c..11628322 100644 --- "a/Solutions/0455. \345\210\206\345\217\221\351\245\274\345\271\262.md" +++ "b/Solutions/0455. \345\210\206\345\217\221\351\245\274\345\271\262.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、双指针、排序 - 难度:简单 +## 题目链接 + +- [0455. 分发饼干 - 力扣](https://leetcode.cn/problems/assign-cookies/) + ## 题目大意 **描述**:一位很棒的家长为孩子们分发饼干。对于每个孩子 `i`,都有一个胃口值 `g[i]`,即每个小孩希望得到饼干的最小尺寸值。对于每块饼干 `j`,都有一个尺寸值 `s[j]`。只有当 `s[j] > g[i]` 时,我们才能将饼干 `j` 分配给孩子 `i`。每个孩子最多只能给一块饼干。 diff --git "a/Solutions/0459. \351\207\215\345\244\215\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0459. \351\207\215\345\244\215\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" index dce76e3e..16a72227 100644 --- "a/Solutions/0459. \351\207\215\345\244\215\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0459. \351\207\215\345\244\215\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:字符串、字符串匹配 - 难度:简单 +## 题目链接 + +- [0459. 重复的子字符串 - 力扣](https://leetcode.cn/problems/repeated-substring-pattern/) + ## 题目大意 **描述**:给定一个非空的字符串 `s`。 diff --git "a/Solutions/0461. \346\261\211\346\230\216\350\267\235\347\246\273.md" "b/Solutions/0461. \346\261\211\346\230\216\350\267\235\347\246\273.md" index b66c9e42..97dc0c4e 100644 --- "a/Solutions/0461. \346\261\211\346\230\216\350\267\235\347\246\273.md" +++ "b/Solutions/0461. \346\261\211\346\230\216\350\267\235\347\246\273.md" @@ -3,6 +3,10 @@ - 标签:位运算 - 难度:简单 +## 题目链接 + +- [0461. 汉明距离 - 力扣](https://leetcode.cn/problems/hamming-distance/) + ## 题目大意 给定两个整数 x 和 y,计算他们之间的汉明距离。 diff --git "a/Solutions/0463. \345\262\233\345\261\277\347\232\204\345\221\250\351\225\277.md" "b/Solutions/0463. \345\262\233\345\261\277\347\232\204\345\221\250\351\225\277.md" index 6ef3c04d..0d4cf576 100644 --- "a/Solutions/0463. \345\262\233\345\261\277\347\232\204\345\221\250\351\225\277.md" +++ "b/Solutions/0463. \345\262\233\345\261\277\347\232\204\345\221\250\351\225\277.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、数组、矩阵 - 难度:简单 +## 题目链接 + +- [0463. 岛屿的周长 - 力扣](https://leetcode.cn/problems/island-perimeter/) + ## 题目大意 **描述**:给定一个 `row * col` 大小的二维网格地图 `grid` ,其中:`grid[i][j] = 1` 表示陆地,`grid[i][j] = 0` 表示水域。 diff --git "a/Solutions/0464. \346\210\221\350\203\275\350\265\242\345\220\227.md" "b/Solutions/0464. \346\210\221\350\203\275\350\265\242\345\220\227.md" index 7aef4439..b1129749 100644 --- "a/Solutions/0464. \346\210\221\350\203\275\350\265\242\345\220\227.md" +++ "b/Solutions/0464. \346\210\221\350\203\275\350\265\242\345\220\227.md" @@ -3,6 +3,10 @@ - 标签:位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 - 难度:中等 +## 题目链接 + +- [0464. 我能赢吗 - 力扣](https://leetcode.cn/problems/can-i-win/) + ## 题目大意 **描述**:给定两个整数,$maxChoosableInteger$ 表示可以选择的最大整数,$desiredTotal$ 表示累计和。现在开始玩一个游戏,两个玩家轮流从 $1 \sim maxChoosableInteger$ 中不重复的抽取一个整数,直到累积整数和大于等于 $desiredTotal$ 时,这个人就赢得比赛。假设两位玩家玩游戏时都表现最佳。 diff --git "a/Solutions/0467. \347\216\257\347\273\225\345\255\227\347\254\246\344\270\262\344\270\255\345\224\257\344\270\200\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0467. \347\216\257\347\273\225\345\255\227\347\254\246\344\270\262\344\270\255\345\224\257\344\270\200\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" index d054977d..2eb5e95b 100644 --- "a/Solutions/0467. \347\216\257\347\273\225\345\255\227\347\254\246\344\270\262\344\270\255\345\224\257\344\270\200\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0467. \347\216\257\347\273\225\345\255\227\347\254\246\344\270\262\344\270\255\345\224\257\344\270\200\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:中等 +## 题目链接 + +- [0467. 环绕字符串中唯一的子字符串 - 力扣](https://leetcode.cn/problems/unique-substrings-in-wraparound-string/) + ## 题目大意 把字符串 `s` 看作是 `abcdefghijklmnopqrstuvwxyz` 的无限环绕字符串,所以 `s` 看起来是这样的:`...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....`。 diff --git "a/Solutions/0468. \351\252\214\350\257\201IP\345\234\260\345\235\200.md" "b/Solutions/0468. \351\252\214\350\257\201IP\345\234\260\345\235\200.md" index f9ca8b55..ffb49758 100644 --- "a/Solutions/0468. \351\252\214\350\257\201IP\345\234\260\345\235\200.md" +++ "b/Solutions/0468. \351\252\214\350\257\201IP\345\234\260\345\235\200.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:中等 +## 题目链接 + +- [0468. 验证IP地址 - 力扣](https://leetcode.cn/problems/validate-ip-address/) + ## 题目大意 **描述**:给定一个字符串 `queryIP`。 diff --git "a/Solutions/0473. \347\201\253\346\237\264\346\213\274\346\255\243\346\226\271\345\275\242.md" "b/Solutions/0473. \347\201\253\346\237\264\346\213\274\346\255\243\346\226\271\345\275\242.md" index a892a44c..0fe3cbf7 100644 --- "a/Solutions/0473. \347\201\253\346\237\264\346\213\274\346\255\243\346\226\271\345\275\242.md" +++ "b/Solutions/0473. \347\201\253\346\237\264\346\213\274\346\255\243\346\226\271\345\275\242.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、动态规划、回溯、状态压缩 - 难度:中等 +## 题目链接 + +- [0473. 火柴拼正方形 - 力扣](https://leetcode.cn/problems/matchsticks-to-square/) + ## 题目大意 **描述**:给定一个表示火柴长度的数组 $matchsticks$,其中 $matchsticks[i]$ 表示第 $i$ 根火柴的长度。 diff --git "a/Solutions/0474. \344\270\200\345\222\214\351\233\266.md" "b/Solutions/0474. \344\270\200\345\222\214\351\233\266.md" index 3fe15544..7100a833 100644 --- "a/Solutions/0474. \344\270\200\345\222\214\351\233\266.md" +++ "b/Solutions/0474. \344\270\200\345\222\214\351\233\266.md" @@ -3,6 +3,10 @@ - 标签:数组、字符串、动态规划 - 难度:中等 +## 题目链接 + +- [0474. 一和零 - 力扣](https://leetcode.cn/problems/ones-and-zeroes/) + ## 题目大意 **描述**:给定一个二进制字符串数组 $strs$,以及两个整数 $m$ 和 $n$。 diff --git "a/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" "b/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" index d89ae6bc..bd78e7e6 100644 --- "a/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" +++ "b/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、滑动窗口、堆(优先队列) - 难度:困难 +## 题目链接 + +- [0480. 滑动窗口中位数 - 力扣](https://leetcode.cn/problems/sliding-window-median/) + ## 题目大意 给定一个数组 `nums`,有一个长度为 `k` 的窗口从最左端滑动到最右端。窗口中有 `k` 个数,每次窗口向右移动 `1` 位。 diff --git "a/Solutions/0485. \346\234\200\345\244\247\350\277\236\347\273\255 1 \347\232\204\344\270\252\346\225\260.md" "b/Solutions/0485. \346\234\200\345\244\247\350\277\236\347\273\255 1 \347\232\204\344\270\252\346\225\260.md" index d4423e93..f93f9d34 100644 --- "a/Solutions/0485. \346\234\200\345\244\247\350\277\236\347\273\255 1 \347\232\204\344\270\252\346\225\260.md" +++ "b/Solutions/0485. \346\234\200\345\244\247\350\277\236\347\273\255 1 \347\232\204\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组 - 难度:简单 +## 题目链接 + +- [0485. 最大连续 1 的个数 - 力扣](https://leetcode.cn/problems/max-consecutive-ones/) + ## 题目大意 **描述**:给定一个二进制数组 $nums$, 数组中只包含 $0$ 和 $1$。 diff --git "a/Solutions/0486. \351\242\204\346\265\213\350\265\242\345\256\266.md" "b/Solutions/0486. \351\242\204\346\265\213\350\265\242\345\256\266.md" index 3b7d4ca5..a01377b4 100644 --- "a/Solutions/0486. \351\242\204\346\265\213\350\265\242\345\256\266.md" +++ "b/Solutions/0486. \351\242\204\346\265\213\350\265\242\345\256\266.md" @@ -3,6 +3,10 @@ - 标签:递归、数组、数学、动态规划、博弈 - 难度:中等 +## 题目链接 + +- [0486. 预测赢家 - 力扣](https://leetcode.cn/problems/predict-the-winner/) + ## 题目大意 **描述**:给定搞一个整数数组 $nums$。玩家 $1$ 和玩家 $2$ 基于这个数组设计了一个游戏。 diff --git "a/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" "b/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" index 53d2438a..2ddd2171 100644 --- "a/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" +++ "b/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、滑动窗口 - 难度:中等 +## 题目链接 + +- [0487. 最大连续1的个数 II - 力扣](https://leetcode.cn/problems/max-consecutive-ones-ii/) + ## 题目大意 给定一个二进制数组,可以最多将 `1` 个 `0` 翻转为 `1`。 diff --git "a/Solutions/0491. \351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" "b/Solutions/0491. \351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" index ad9bee70..b4130690 100644 --- "a/Solutions/0491. \351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/0491. \351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、哈希表、回溯 - 难度:中等 +## 题目链接 + +- [0491. 递增子序列 - 力扣](https://leetcode.cn/problems/increasing-subsequences/) + ## 题目大意 给定一个整数数组 `nums`,找出并返回该数组的所有递增子序列,递增子序列的长度至少为 2。 diff --git "a/Solutions/0494. \347\233\256\346\240\207\345\222\214.md" "b/Solutions/0494. \347\233\256\346\240\207\345\222\214.md" index b8c42663..b58181c6 100644 --- "a/Solutions/0494. \347\233\256\346\240\207\345\222\214.md" +++ "b/Solutions/0494. \347\233\256\346\240\207\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、回溯 - 难度:中等 +## 题目链接 + +- [0494. 目标和 - 力扣](https://leetcode.cn/problems/target-sum/) + ## 题目大意 **描述**:给定一个整数数组 $nums$ 和一个整数 $target$。数组长度不超过 $20$。向数组中每个整数前加 `+` 或 `-`。然后串联起来构造成一个表达式。 diff --git "a/Solutions/0496. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 I.md" "b/Solutions/0496. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 I.md" index 775d6efa..ac089808 100644 --- "a/Solutions/0496. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 I.md" +++ "b/Solutions/0496. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 I.md" @@ -3,6 +3,10 @@ - 标签:栈、数组、哈希表、单调栈 - 难度:简单 +## 题目链接 + +- [0496. 下一个更大元素 I - 力扣](https://leetcode.cn/problems/next-greater-element-i/) + ## 题目大意 **描述**:给定两个没有重复元素的数组 `nums1` 和 `nums2` ,其中 `nums1` 是 `nums2` 的子集。 diff --git "a/Solutions/0498. \345\257\271\350\247\222\347\272\277\351\201\215\345\216\206.md" "b/Solutions/0498. \345\257\271\350\247\222\347\272\277\351\201\215\345\216\206.md" index 39f88ad0..494233c8 100644 --- "a/Solutions/0498. \345\257\271\350\247\222\347\272\277\351\201\215\345\216\206.md" +++ "b/Solutions/0498. \345\257\271\350\247\222\347\272\277\351\201\215\345\216\206.md" @@ -3,6 +3,10 @@ - 标签:数组、矩阵、模拟 - 难度:中等 +## 题目链接 + +- [0498. 对角线遍历 - 力扣](https://leetcode.cn/problems/diagonal-traverse/) + ## 题目大意 **描述**:给定一个大小为 $m \times n$ 的矩阵 $mat$ 。 diff --git "a/Solutions/0501. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\274\227\346\225\260.md" "b/Solutions/0501. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\274\227\346\225\260.md" index 7508b705..b4d59cc3 100644 --- "a/Solutions/0501. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\274\227\346\225\260.md" +++ "b/Solutions/0501. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\274\227\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:简单 +## 题目链接 + +- [0501. 二叉搜索树中的众数 - 力扣](https://leetcode.cn/problems/find-mode-in-binary-search-tree/) + ## 题目大意 给定一个有相同值的二叉搜索树(BST),要求找出 BST 中所有众数(出现频率最高的元素)。 diff --git "a/Solutions/0503. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 II.md" "b/Solutions/0503. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 II.md" index 4e420c24..0c1f1a05 100644 --- "a/Solutions/0503. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 II.md" +++ "b/Solutions/0503. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 II.md" @@ -3,6 +3,10 @@ - 标签:栈、数组、单调栈 - 难度:中等 +## 题目链接 + +- [0503. 下一个更大元素 II - 力扣](https://leetcode.cn/problems/next-greater-element-ii/) + ## 题目大意 给定一个循环数组 `nums`(最后一个元素的下一个元素是数组的第一个元素)。 diff --git "a/Solutions/0504. \344\270\203\350\277\233\345\210\266\346\225\260.md" "b/Solutions/0504. \344\270\203\350\277\233\345\210\266\346\225\260.md" index 027d1c60..c4a3bf24 100644 --- "a/Solutions/0504. \344\270\203\350\277\233\345\210\266\346\225\260.md" +++ "b/Solutions/0504. \344\270\203\350\277\233\345\210\266\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:简单 +## 题目链接 + +- [0504. 七进制数 - 力扣](https://leetcode.cn/problems/base-7/) + ## 题目大意 **描述**:给定一个整数 $num$。 diff --git "a/Solutions/0506. \347\233\270\345\257\271\345\220\215\346\254\241.md" "b/Solutions/0506. \347\233\270\345\257\271\345\220\215\346\254\241.md" index 17e0fb47..9206e6ae 100644 --- "a/Solutions/0506. \347\233\270\345\257\271\345\220\215\346\254\241.md" +++ "b/Solutions/0506. \347\233\270\345\257\271\345\220\215\346\254\241.md" @@ -3,6 +3,10 @@ - 标签:数组、排序、堆(优先队列) - 难度:简单 +## 题目链接 + +- [0506. 相对名次 - 力扣](https://leetcode.cn/problems/relative-ranks/) + ## 题目大意 **描述**:给定一个长度为 $n$ 的数组 $score$。其中 $score[i]$ 表示第 $i$ 名运动员在比赛中的成绩。所有成绩互不相同。 diff --git "a/Solutions/0509. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260.md" "b/Solutions/0509. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260.md" index 093e3255..bd7e4e67 100644 --- "a/Solutions/0509. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260.md" +++ "b/Solutions/0509. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:递归、记忆化搜索、数学、动态规划 - 难度:简单 +## 题目链接 + +- [0509. 斐波那契数 - 力扣](https://leetcode.cn/problems/fibonacci-number/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/0513. \346\211\276\346\240\221\345\267\246\344\270\213\350\247\222\347\232\204\345\200\274.md" "b/Solutions/0513. \346\211\276\346\240\221\345\267\246\344\270\213\350\247\222\347\232\204\345\200\274.md" index 18e46a61..d255834e 100644 --- "a/Solutions/0513. \346\211\276\346\240\221\345\267\246\344\270\213\350\247\222\347\232\204\345\200\274.md" +++ "b/Solutions/0513. \346\211\276\346\240\221\345\267\246\344\270\213\350\247\222\347\232\204\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0513. 找树左下角的值 - 力扣](https://leetcode.cn/problems/find-bottom-left-tree-value/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0515. \345\234\250\346\257\217\344\270\252\346\240\221\350\241\214\344\270\255\346\211\276\346\234\200\345\244\247\345\200\274.md" "b/Solutions/0515. \345\234\250\346\257\217\344\270\252\346\240\221\350\241\214\344\270\255\346\211\276\346\234\200\345\244\247\345\200\274.md" index 54cc5d1a..990f2ae2 100644 --- "a/Solutions/0515. \345\234\250\346\257\217\344\270\252\346\240\221\350\241\214\344\270\255\346\211\276\346\234\200\345\244\247\345\200\274.md" +++ "b/Solutions/0515. \345\234\250\346\257\217\344\270\252\346\240\221\350\241\214\344\270\255\346\211\276\346\234\200\345\244\247\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0515. 在每个树行中找最大值 - 力扣](https://leetcode.cn/problems/find-largest-value-in-each-tree-row/) + ## 题目大意 给定一棵二叉树的根节点 `root`。 diff --git "a/Solutions/0516. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" "b/Solutions/0516. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" index ef62c6eb..7249c736 100644 --- "a/Solutions/0516. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/0516. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:中等 +## 题目链接 + +- [0516. 最长回文子序列 - 力扣](https://leetcode.cn/problems/longest-palindromic-subsequence/) + ## 题目大意 **描述**:给定一个字符串 $s$。 diff --git "a/Solutions/0518. \351\233\266\351\222\261\345\205\221\346\215\242 II.md" "b/Solutions/0518. \351\233\266\351\222\261\345\205\221\346\215\242 II.md" index 0a737f80..e8a667f5 100644 --- "a/Solutions/0518. \351\233\266\351\222\261\345\205\221\346\215\242 II.md" +++ "b/Solutions/0518. \351\233\266\351\222\261\345\205\221\346\215\242 II.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [0518. 零钱兑换 II - 力扣](https://leetcode.cn/problems/coin-change-ii/) + ## 题目大意 **描述**:给定一个整数数组 $coins$ 表示不同面额的硬币,另给一个整数 $amount$ 表示总金额。 diff --git "a/Solutions/0525. \350\277\236\347\273\255\346\225\260\347\273\204.md" "b/Solutions/0525. \350\277\236\347\273\255\346\225\260\347\273\204.md" index 6b35d6a1..b50acff3 100644 --- "a/Solutions/0525. \350\277\236\347\273\255\346\225\260\347\273\204.md" +++ "b/Solutions/0525. \350\277\236\347\273\255\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、前缀和 - 难度:中等 +## 题目链接 + +- [0525. 连续数组 - 力扣](https://leetcode.cn/problems/contiguous-array/) + ## 题目大意 给定一个二进制数组 `nums`。 diff --git "a/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" "b/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" index 27390c6a..e9491752 100644 --- "a/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" +++ "b/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、动态规划、回溯、状态压缩 - 难度:中等 +## 题目链接 + +- [0526. 优美的排列 - 力扣](https://leetcode.cn/problems/beautiful-arrangement/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/0530. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" "b/Solutions/0530. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" index 729c52cd..d0b56bea 100644 --- "a/Solutions/0530. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" +++ "b/Solutions/0530. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树 - 难度: +## 题目链接 + +- [0530. 二叉搜索树的最小绝对差 - 力扣](https://leetcode.cn/problems/minimum-absolute-difference-in-bst/) + ## 题目大意 给定一棵所有节点都为非负值的二叉搜索树,计算树中任意两节点的差的绝对值的最小值。 diff --git "a/Solutions/0538. \346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221.md" "b/Solutions/0538. \346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221.md" index 90e0cd93..21aa8ca1 100644 --- "a/Solutions/0538. \346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221.md" +++ "b/Solutions/0538. \346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [0538. 把二叉搜索树转换为累加树 - 力扣](https://leetcode.cn/problems/convert-bst-to-greater-tree/) + ## 题目大意 给定一棵二叉搜索树(BST)的根节点,且二叉搜索树的节点值各不相同。要求将其转化为「累加树」,使其每个节点 `node` 的新值等于原树中大于或等于 `node.val` 的值之和。 diff --git "a/Solutions/0539. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" "b/Solutions/0539. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" index 5a101c64..a1b851cd 100644 --- "a/Solutions/0539. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" +++ "b/Solutions/0539. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" @@ -3,6 +3,10 @@ - 标签:数组、数学、字符串、排序 - 难度:中等 +## 题目链接 + +- [0539. 最小时间差 - 力扣](https://leetcode.cn/problems/minimum-time-difference/) + ## 题目大意 给定一个 24 小时制形式(小时:分钟 "HH:MM")的时间列表 `timePoints`。 diff --git "a/Solutions/0542. 01 \347\237\251\351\230\265.md" "b/Solutions/0542. 01 \347\237\251\351\230\265.md" index 6b0ad43b..10602880 100644 --- "a/Solutions/0542. 01 \347\237\251\351\230\265.md" +++ "b/Solutions/0542. 01 \347\237\251\351\230\265.md" @@ -3,6 +3,10 @@ - 标签:广度优先搜索、数组、动态规划、矩阵 - 难度:中等 +## 题目链接 + +- [0542. 01 矩阵 - 力扣](https://leetcode.cn/problems/01-matrix/) + ## 题目大意 **描述**:给定一个 $m * n$ 大小的、由 `0` 和 `1` 组成的矩阵 $mat$。 diff --git "a/Solutions/0543. \344\272\214\345\217\211\346\240\221\347\232\204\347\233\264\345\276\204.md" "b/Solutions/0543. \344\272\214\345\217\211\346\240\221\347\232\204\347\233\264\345\276\204.md" index a683d40f..a4c42776 100644 --- "a/Solutions/0543. \344\272\214\345\217\211\346\240\221\347\232\204\347\233\264\345\276\204.md" +++ "b/Solutions/0543. \344\272\214\345\217\211\346\240\221\347\232\204\347\233\264\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0543. 二叉树的直径 - 力扣](https://leetcode.cn/problems/diameter-of-binary-tree/) + ## 题目大意 **描述**:给一个二叉树的根节点 $root$。 diff --git "a/Solutions/0546. \347\247\273\351\231\244\347\233\222\345\255\220.md" "b/Solutions/0546. \347\247\273\351\231\244\347\233\222\345\255\220.md" index 82cf3ed5..5464b36f 100644 --- "a/Solutions/0546. \347\247\273\351\231\244\347\233\222\345\255\220.md" +++ "b/Solutions/0546. \347\247\273\351\231\244\347\233\222\345\255\220.md" @@ -3,6 +3,10 @@ - 标签:记忆化搜索、数组、动态规划 - 难度:困难 +## 题目链接 + +- [0546. 移除盒子 - 力扣](https://leetcode.cn/problems/remove-boxes/) + ## 题目大意 **描述**:给定一个代表不同颜色盒子的正数数组 $boxes$,盒子的颜色由不同正数组成,其中 $boxes[i]$ 表示第 $i$ 个盒子的颜色。 diff --git "a/Solutions/0547. \347\234\201\344\273\275\346\225\260\351\207\217.md" "b/Solutions/0547. \347\234\201\344\273\275\346\225\260\351\207\217.md" index 215cb992..e8623664 100644 --- "a/Solutions/0547. \347\234\201\344\273\275\346\225\260\351\207\217.md" +++ "b/Solutions/0547. \347\234\201\344\273\275\346\225\260\351\207\217.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 +## 题目链接 + +- [0547. 省份数量 - 力扣](https://leetcode.cn/problems/number-of-provinces/) + ## 题目大意 **描述**:有 `n` 个城市,其中一些彼此相连,另一些没有相连。如果城市 `a` 与城市 `b` 直接相连,且城市 `b` 与城市 `c` 直接相连,那么城市 `a` 与城市 `c` 间接相连。 diff --git "a/Solutions/0557. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215 III.md" "b/Solutions/0557. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215 III.md" index 1f7aea38..0785a3c4 100644 --- "a/Solutions/0557. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215 III.md" +++ "b/Solutions/0557. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215 III.md" @@ -3,6 +3,10 @@ - 标签:双指针、字符串 - 难度:简单 +## 题目链接 + +- [0557. 反转字符串中的单词 III - 力扣](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) + ## 题目大意 **描述**:给定一个字符串 `s`。 diff --git "a/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" index a63454c6..32b1243c 100644 --- "a/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、前缀和 - 难度:中等 +## 题目链接 + +- [0560. 和为 K 的子数组 - 力扣](https://leetcode.cn/problems/subarray-sum-equals-k/) + ## 题目大意 **描述**:给定一个整数数组 $nums$ 和一个整数 $k$。 diff --git "a/Solutions/0561. \346\225\260\347\273\204\346\213\206\345\210\206.md" "b/Solutions/0561. \346\225\260\347\273\204\346\213\206\345\210\206.md" index c99f7286..de77920e 100644 --- "a/Solutions/0561. \346\225\260\347\273\204\346\213\206\345\210\206.md" +++ "b/Solutions/0561. \346\225\260\347\273\204\346\213\206\345\210\206.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、计数排序、排序 - 难度:简单 +## 题目链接 + +- [0561. 数组拆分 - 力扣](https://leetcode.cn/problems/array-partition/) + ## 题目大意 **描述**:给定一个长度为 $2 \times n$ 的整数数组 $nums$。 diff --git "a/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" "b/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" index 0f0ae7d5..bf3ac0e9 100644 --- "a/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" +++ "b/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:哈希表、双指针、字符串、滑动窗口 - 难度:中等 +## 题目链接 + +- [0567. 字符串的排列 - 力扣](https://leetcode.cn/problems/permutation-in-string/) + ## 题目大意 给定两个字符串 `s1` 和 `s2` 。 diff --git "a/Solutions/0575. \345\210\206\347\263\226\346\236\234.md" "b/Solutions/0575. \345\210\206\347\263\226\346\236\234.md" index 9327d624..ab5acd42 100644 --- "a/Solutions/0575. \345\210\206\347\263\226\346\236\234.md" +++ "b/Solutions/0575. \345\210\206\347\263\226\346\236\234.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表 - 难度:简单 +## 题目链接 + +- [0575. 分糖果 - 力扣](https://leetcode.cn/problems/distribute-candies/) + ## 题目大意 给定一个偶数长度为 `n` 的数组,其中不同的数字代表不同种类的糖果,每一个数字代表一个糖果。 diff --git "a/Solutions/0576. \345\207\272\347\225\214\347\232\204\350\267\257\345\276\204\346\225\260.md" "b/Solutions/0576. \345\207\272\347\225\214\347\232\204\350\267\257\345\276\204\346\225\260.md" index 9ab2e6c3..bb6b83ca 100644 --- "a/Solutions/0576. \345\207\272\347\225\214\347\232\204\350\267\257\345\276\204\346\225\260.md" +++ "b/Solutions/0576. \345\207\272\347\225\214\347\232\204\350\267\257\345\276\204\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:动态规划 - 难度:中等 +## 题目链接 + +- [0576. 出界的路径数 - 力扣](https://leetcode.cn/problems/out-of-boundary-paths/) + ## 题目大意 **描述**:有一个大小为 $m \times n$ 的网络和一个球。球的起始位置为 $(startRow, startColumn)$。你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格之外)。最多可以移动 $maxMove$ 次球。 diff --git "a/Solutions/0583. \344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\232\204\345\210\240\351\231\244\346\223\215\344\275\234.md" "b/Solutions/0583. \344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\232\204\345\210\240\351\231\244\346\223\215\344\275\234.md" index ca6f3a48..34ec8724 100644 --- "a/Solutions/0583. \344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\232\204\345\210\240\351\231\244\346\223\215\344\275\234.md" +++ "b/Solutions/0583. \344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\232\204\345\210\240\351\231\244\346\223\215\344\275\234.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:中等 +## 题目链接 + +- [0583. 两个字符串的删除操作 - 力扣](https://leetcode.cn/problems/delete-operation-for-two-strings/) + ## 题目大意 给定两个单词 `word1` 和 `word2`,找到使得 `word1` 和 `word2` 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。 diff --git "a/Solutions/0589. N \345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" "b/Solutions/0589. N \345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" index 4fa13006..5b0bd2ce 100644 --- "a/Solutions/0589. N \345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" +++ "b/Solutions/0589. N \345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" @@ -3,6 +3,10 @@ - 标签:栈、树、深度优先搜索 - 难度:简单 +## 题目链接 + +- [0589. N 叉树的前序遍历 - 力扣](https://leetcode.cn/problems/n-ary-tree-preorder-traversal/) + ## 题目大意 给定一棵 N 叉树的根节点 `root`。 diff --git "a/Solutions/0590. N \345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" "b/Solutions/0590. N \345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" index cb6d2415..b8707f01 100644 --- "a/Solutions/0590. N \345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" +++ "b/Solutions/0590. N \345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" @@ -3,6 +3,10 @@ - 标签:栈、树、深度优先搜索 - 难度:简单 +## 题目链接 + +- [0590. N 叉树的后序遍历 - 力扣](https://leetcode.cn/problems/n-ary-tree-postorder-traversal/) + ## 题目大意 给定一个 N 叉树的根节点 `root`。 diff --git "a/Solutions/0599. \344\270\244\344\270\252\345\210\227\350\241\250\347\232\204\346\234\200\345\260\217\347\264\242\345\274\225\346\200\273\345\222\214.md" "b/Solutions/0599. \344\270\244\344\270\252\345\210\227\350\241\250\347\232\204\346\234\200\345\260\217\347\264\242\345\274\225\346\200\273\345\222\214.md" index f17cd76b..e7bae488 100644 --- "a/Solutions/0599. \344\270\244\344\270\252\345\210\227\350\241\250\347\232\204\346\234\200\345\260\217\347\264\242\345\274\225\346\200\273\345\222\214.md" +++ "b/Solutions/0599. \344\270\244\344\270\252\345\210\227\350\241\250\347\232\204\346\234\200\345\260\217\347\264\242\345\274\225\346\200\273\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、字符串 - 难度:简单 +## 题目链接 + +- [0599. 两个列表的最小索引总和 - 力扣](https://leetcode.cn/problems/minimum-index-sum-of-two-lists/) + ## 题目大意 Andy 和 Doris 都有一个表示最喜欢餐厅的列表 list1、list2,每个餐厅的名字用字符串表示。 diff --git "a/Solutions/0600. \344\270\215\345\220\253\350\277\236\347\273\2551\347\232\204\351\235\236\350\264\237\346\225\264\346\225\260.md" "b/Solutions/0600. \344\270\215\345\220\253\350\277\236\347\273\2551\347\232\204\351\235\236\350\264\237\346\225\264\346\225\260.md" index 8e982082..4a45a162 100644 --- "a/Solutions/0600. \344\270\215\345\220\253\350\277\236\347\273\2551\347\232\204\351\235\236\350\264\237\346\225\264\346\225\260.md" +++ "b/Solutions/0600. \344\270\215\345\220\253\350\277\236\347\273\2551\347\232\204\351\235\236\350\264\237\346\225\264\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:动态规划 - 难度:困难 +## 题目链接 + +- [0600. 不含连续1的非负整数 - 力扣](https://leetcode.cn/problems/non-negative-integers-without-consecutive-ones/) + ## 题目大意 **描述**:给定一个正整数 $n$。 diff --git "a/Solutions/0611. \346\234\211\346\225\210\344\270\211\350\247\222\345\275\242\347\232\204\344\270\252\346\225\260.md" "b/Solutions/0611. \346\234\211\346\225\210\344\270\211\350\247\222\345\275\242\347\232\204\344\270\252\346\225\260.md" index 9130eb48..3ba58e4d 100644 --- "a/Solutions/0611. \346\234\211\346\225\210\344\270\211\350\247\222\345\275\242\347\232\204\344\270\252\346\225\260.md" +++ "b/Solutions/0611. \346\234\211\346\225\210\344\270\211\350\247\222\345\275\242\347\232\204\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、双指针、二分查找、排序 - 难度:中等 +## 题目链接 + +- [0611. 有效三角形的个数 - 力扣](https://leetcode.cn/problems/valid-triangle-number/) + ## 题目大意 给定一个包含非负整数的数组 `nums`,其中 `nums[i]` 表示第 `i` 条边的边长。 diff --git "a/Solutions/0616. \347\273\231\345\255\227\347\254\246\344\270\262\346\267\273\345\212\240\345\212\240\347\262\227\346\240\207\347\255\276.md" "b/Solutions/0616. \347\273\231\345\255\227\347\254\246\344\270\262\346\267\273\345\212\240\345\212\240\347\262\227\346\240\207\347\255\276.md" index a2a9b5c9..f894e629 100644 --- "a/Solutions/0616. \347\273\231\345\255\227\347\254\246\344\270\262\346\267\273\345\212\240\345\212\240\347\262\227\346\240\207\347\255\276.md" +++ "b/Solutions/0616. \347\273\231\345\255\227\347\254\246\344\270\262\346\267\273\345\212\240\345\212\240\347\262\227\346\240\207\347\255\276.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、哈希表、字符串、字符串匹配 - 难度:中等 +## 题目链接 + +- [0616. 给字符串添加加粗标签 - 力扣](https://leetcode.cn/problems/add-bold-tag-in-string/) + ## 题目大意 给定一个字符串 `s` 和一个字符串列表 `words`。 diff --git "a/Solutions/0617. \345\220\210\345\271\266\344\272\214\345\217\211\346\240\221.md" "b/Solutions/0617. \345\220\210\345\271\266\344\272\214\345\217\211\346\240\221.md" index 6a038e28..9f601a00 100644 --- "a/Solutions/0617. \345\220\210\345\271\266\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/0617. \345\220\210\345\271\266\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0617. 合并二叉树 - 力扣](https://leetcode.cn/problems/merge-two-binary-trees/) + ## 题目大意 给定两个二叉树,将两个二叉树合并成一个新的二叉树。合并规则如下: diff --git "a/Solutions/0621. \344\273\273\345\212\241\350\260\203\345\272\246\345\231\250.md" "b/Solutions/0621. \344\273\273\345\212\241\350\260\203\345\272\246\345\231\250.md" index 73af9abe..a4ae26f1 100644 --- "a/Solutions/0621. \344\273\273\345\212\241\350\260\203\345\272\246\345\231\250.md" +++ "b/Solutions/0621. \344\273\273\345\212\241\350\260\203\345\272\246\345\231\250.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、哈希表、计数、排序、堆(优先队列) - 难度:中等 +## 题目链接 + +- [0621. 任务调度器 - 力扣](https://leetcode.cn/problems/task-scheduler/) + ## 题目大意 给定一个字符数组 tasks 表示 CPU 需要执行的任务列表。tasks 中每个字母表示一种不同种类的任务。任务可以按任意顺序执行,并且每个任务执行时间为 1 个单位时间。在任何一个单位时间,CPU 可以完成一个任务,或者也可以处于待命状态。 diff --git "a/Solutions/0622. \350\256\276\350\256\241\345\276\252\347\216\257\351\230\237\345\210\227.md" "b/Solutions/0622. \350\256\276\350\256\241\345\276\252\347\216\257\351\230\237\345\210\227.md" index dae2d590..d60dd119 100644 --- "a/Solutions/0622. \350\256\276\350\256\241\345\276\252\347\216\257\351\230\237\345\210\227.md" +++ "b/Solutions/0622. \350\256\276\350\256\241\345\276\252\347\216\257\351\230\237\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:设计、队列、数组、链表 - 难度:中等 +## 题目链接 + +- [0622. 设计循环队列 - 力扣](https://leetcode.cn/problems/design-circular-queue/) + ## 题目大意 **要求**:设计实现一个循环队列,支持以下操作: diff --git "a/Solutions/0633. \345\271\263\346\226\271\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0633. \345\271\263\346\226\271\346\225\260\344\271\213\345\222\214.md" index 01f7954d..2795460d 100644 --- "a/Solutions/0633. \345\271\263\346\226\271\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0633. \345\271\263\346\226\271\346\225\260\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数学、双指针、二分查找 - 难度:中等 +## 题目链接 + +- [0633. 平方数之和 - 力扣](https://leetcode.cn/problems/sum-of-square-numbers/) + ## 题目大意 给定一个非负整数 c,判断是否存在两个整数 a 和 b,使得 $a^2 + b^2 = c$,如果存在则返回 True,不存在返回 False。 diff --git "a/Solutions/0639. \350\247\243\347\240\201\346\226\271\346\263\225 II.md" "b/Solutions/0639. \350\247\243\347\240\201\346\226\271\346\263\225 II.md" index 8d1500c2..e2ec6085 100644 --- "a/Solutions/0639. \350\247\243\347\240\201\346\226\271\346\263\225 II.md" +++ "b/Solutions/0639. \350\247\243\347\240\201\346\226\271\346\263\225 II.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:困难 +## 题目链接 + +- [0639. 解码方法 II - 力扣](https://leetcode.cn/problems/decode-ways-ii/) + ## 题目大意 **描述**:给定一个包含数字和字符 `'*'` 的字符串 $s$。该字符串已经按照下面的映射关系进行了编码: diff --git "a/Solutions/0642. \350\256\276\350\256\241\346\220\234\347\264\242\350\207\252\345\212\250\350\241\245\345\205\250\347\263\273\347\273\237.md" "b/Solutions/0642. \350\256\276\350\256\241\346\220\234\347\264\242\350\207\252\345\212\250\350\241\245\345\205\250\347\263\273\347\273\237.md" index cc64cafd..9fb80fa1 100644 --- "a/Solutions/0642. \350\256\276\350\256\241\346\220\234\347\264\242\350\207\252\345\212\250\350\241\245\345\205\250\347\263\273\347\273\237.md" +++ "b/Solutions/0642. \350\256\276\350\256\241\346\220\234\347\264\242\350\207\252\345\212\250\350\241\245\345\205\250\347\263\273\347\273\237.md" @@ -3,6 +3,10 @@ - 标签:设计、字典树、字符串、数据流 - 难度:困难 +## 题目链接 + +- [0642. 设计搜索自动补全系统 - 力扣](https://leetcode.cn/problems/design-search-autocomplete-system/) + ## 题目大意 要求:设计一个搜索自动补全系统。用户会输入一条语句(最少包含一个字母,以特殊字符 `#` 结尾)。除 `#` 以外用户输入的每个字符,返回历史中热度前三并以当前输入部分为前缀的句子。下面是详细规则: diff --git "a/Solutions/0643. \345\255\220\346\225\260\347\273\204\346\234\200\345\244\247\345\271\263\345\235\207\346\225\260 I.md" "b/Solutions/0643. \345\255\220\346\225\260\347\273\204\346\234\200\345\244\247\345\271\263\345\235\207\346\225\260 I.md" index ff842a2d..c1d4a8aa 100644 --- "a/Solutions/0643. \345\255\220\346\225\260\347\273\204\346\234\200\345\244\247\345\271\263\345\235\207\346\225\260 I.md" +++ "b/Solutions/0643. \345\255\220\346\225\260\347\273\204\346\234\200\345\244\247\345\271\263\345\235\207\346\225\260 I.md" @@ -3,6 +3,10 @@ - 标签:数组、滑动窗口 - 难度:简单 +## 题目链接 + +- [0643. 子数组最大平均数 I - 力扣](https://leetcode.cn/problems/maximum-average-subarray-i/) + ## 题目大意 **描述**:给定一个由 $n$ 个元素组成的整数数组 $nums$ 和一个整数 $k$。 diff --git "a/Solutions/0647. \345\233\236\346\226\207\345\255\220\344\270\262.md" "b/Solutions/0647. \345\233\236\346\226\207\345\255\220\344\270\262.md" index b83ebd0b..933aa444 100644 --- "a/Solutions/0647. \345\233\236\346\226\207\345\255\220\344\270\262.md" +++ "b/Solutions/0647. \345\233\236\346\226\207\345\255\220\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:中等 +## 题目链接 + +- [0647. 回文子串 - 力扣](https://leetcode.cn/problems/palindromic-substrings/) + ## 题目大意 给定一个字符串 `s`,计算 `s` 中有多少个回文子串。 diff --git "a/Solutions/0648. \345\215\225\350\257\215\346\233\277\346\215\242.md" "b/Solutions/0648. \345\215\225\350\257\215\346\233\277\346\215\242.md" index ac1ed6fa..d7eda529 100644 --- "a/Solutions/0648. \345\215\225\350\257\215\346\233\277\346\215\242.md" +++ "b/Solutions/0648. \345\215\225\350\257\215\346\233\277\346\215\242.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [0648. 单词替换 - 力扣](https://leetcode.cn/problems/replace-words/) + ## 题目大意 **描述**:给定一个由许多词根组成的字典列表 `dictionary`,以及一个句子字符串 `sentence`。 diff --git "a/Solutions/0650. \345\217\252\346\234\211\344\270\244\344\270\252\351\224\256\347\232\204\351\224\256\347\233\230.md" "b/Solutions/0650. \345\217\252\346\234\211\344\270\244\344\270\252\351\224\256\347\232\204\351\224\256\347\233\230.md" index d3641158..a40067e7 100644 --- "a/Solutions/0650. \345\217\252\346\234\211\344\270\244\344\270\252\351\224\256\347\232\204\351\224\256\347\233\230.md" +++ "b/Solutions/0650. \345\217\252\346\234\211\344\270\244\344\270\252\351\224\256\347\232\204\351\224\256\347\233\230.md" @@ -3,6 +3,10 @@ - 标签:数学、动态规划 - 难度:中等 +## 题目链接 + +- [0650. 只有两个键的键盘 - 力扣](https://leetcode.cn/problems/2-keys-keyboard/) + ## 题目大意 **描述**:最初记事本上只有一个字符 `'A'`。你每次可以对这个记事本进行两种操作: diff --git "a/Solutions/0652. \345\257\273\346\211\276\351\207\215\345\244\215\347\232\204\345\255\220\346\240\221.md" "b/Solutions/0652. \345\257\273\346\211\276\351\207\215\345\244\215\347\232\204\345\255\220\346\240\221.md" index 30e2f0ff..c98c8be5 100644 --- "a/Solutions/0652. \345\257\273\346\211\276\351\207\215\345\244\215\347\232\204\345\255\220\346\240\221.md" +++ "b/Solutions/0652. \345\257\273\346\211\276\351\207\215\345\244\215\347\232\204\345\255\220\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、哈希表、二叉树 - 难度:中等 +## 题目链接 + +- [0652. 寻找重复的子树 - 力扣](https://leetcode.cn/problems/find-duplicate-subtrees/) + ## 题目大意 给定一个二叉树,返回所有重复的子树。对于重复的子树,只需返回其中任意一棵的根节点。 diff --git "a/Solutions/0653. \344\270\244\346\225\260\344\271\213\345\222\214 IV - \350\276\223\345\205\245\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/Solutions/0653. \344\270\244\346\225\260\344\271\213\345\222\214 IV - \350\276\223\345\205\245\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" index bdf2d17b..5045f6aa 100644 --- "a/Solutions/0653. \344\270\244\346\225\260\344\271\213\345\222\214 IV - \350\276\223\345\205\245\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" +++ "b/Solutions/0653. \344\270\244\346\225\260\344\271\213\345\222\214 IV - \350\276\223\345\205\245\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉搜索树、哈希表、双指针、二叉树 - 难度:简单 +## 题目链接 + +- [0653. 两数之和 IV - 输入二叉搜索树 - 力扣](https://leetcode.cn/problems/two-sum-iv-input-is-a-bst/) + ## 题目大意 给定一个二叉搜索树的根节点 `root` 和一个整数 `k`。 diff --git "a/Solutions/0654. \346\234\200\345\244\247\344\272\214\345\217\211\346\240\221.md" "b/Solutions/0654. \346\234\200\345\244\247\344\272\214\345\217\211\346\240\221.md" index 0ece737f..77ba36f5 100644 --- "a/Solutions/0654. \346\234\200\345\244\247\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/0654. \346\234\200\345\244\247\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:栈、树、数组、分治、二叉树、单调栈 - 难度:中等 +## 题目链接 + +- [0654. 最大二叉树 - 力扣](https://leetcode.cn/problems/maximum-binary-tree/) + ## 题目大意 给定一个不含重复元素的整数数组 `nums`。一个以此数组构建的最大二叉树定义如下: diff --git "a/Solutions/0658. \346\211\276\345\210\260 K \344\270\252\346\234\200\346\216\245\350\277\221\347\232\204\345\205\203\347\264\240.md" "b/Solutions/0658. \346\211\276\345\210\260 K \344\270\252\346\234\200\346\216\245\350\277\221\347\232\204\345\205\203\347\264\240.md" index 39afcba5..e3401e94 100644 --- "a/Solutions/0658. \346\211\276\345\210\260 K \344\270\252\346\234\200\346\216\245\350\277\221\347\232\204\345\205\203\347\264\240.md" +++ "b/Solutions/0658. \346\211\276\345\210\260 K \344\270\252\346\234\200\346\216\245\350\277\221\347\232\204\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) - 难度:中等 +## 题目链接 + +- [0658. 找到 K 个最接近的元素 - 力扣](https://leetcode.cn/problems/find-k-closest-elements/) + ## 题目大意 给定一个有序数组 arr,以及两个整数 k、x。从数组中找到最靠近 x(两数之差最小)的 k 个数。返回包含这 k 个数的有序数组。 diff --git "a/Solutions/0662. \344\272\214\345\217\211\346\240\221\346\234\200\345\244\247\345\256\275\345\272\246.md" "b/Solutions/0662. \344\272\214\345\217\211\346\240\221\346\234\200\345\244\247\345\256\275\345\272\246.md" index 680711f1..ecb9ad59 100644 --- "a/Solutions/0662. \344\272\214\345\217\211\346\240\221\346\234\200\345\244\247\345\256\275\345\272\246.md" +++ "b/Solutions/0662. \344\272\214\345\217\211\346\240\221\346\234\200\345\244\247\345\256\275\345\272\246.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0662. 二叉树最大宽度 - 力扣](https://leetcode.cn/problems/maximum-width-of-binary-tree/) + ## 题目大意 **描述**:给你一棵二叉树的根节点 `root`。 diff --git "a/Solutions/0664. \345\245\207\346\200\252\347\232\204\346\211\223\345\215\260\346\234\272.md" "b/Solutions/0664. \345\245\207\346\200\252\347\232\204\346\211\223\345\215\260\346\234\272.md" index 86a5bdfc..1d9ba214 100644 --- "a/Solutions/0664. \345\245\207\346\200\252\347\232\204\346\211\223\345\215\260\346\234\272.md" +++ "b/Solutions/0664. \345\245\207\346\200\252\347\232\204\346\211\223\345\215\260\346\234\272.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:困难 +## 题目链接 + +- [0664. 奇怪的打印机 - 力扣](https://leetcode.cn/problems/strange-printer/) + ## 题目大意 **描述**:有一台奇怪的打印机,有以下两个功能: diff --git "a/Solutions/0665. \351\235\236\351\200\222\345\207\217\346\225\260\345\210\227.md" "b/Solutions/0665. \351\235\236\351\200\222\345\207\217\346\225\260\345\210\227.md" index 22977eee..be989df8 100644 --- "a/Solutions/0665. \351\235\236\351\200\222\345\207\217\346\225\260\345\210\227.md" +++ "b/Solutions/0665. \351\235\236\351\200\222\345\207\217\346\225\260\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:数组 - 难度:中等 +## 题目链接 + +- [0665. 非递减数列 - 力扣](https://leetcode.cn/problems/non-decreasing-array/) + ## 题目大意 给定一个整数数组 nums,问能否在最多改变 1 个元素的条件下,使数组变为非递减序列。若能,返回 True,不能则返回 False。 diff --git "a/Solutions/0669. \344\277\256\345\211\252\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/Solutions/0669. \344\277\256\345\211\252\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" index e3278f7b..07869f25 100644 --- "a/Solutions/0669. \344\277\256\345\211\252\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" +++ "b/Solutions/0669. \344\277\256\345\211\252\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [0669. 修剪二叉搜索树 - 力扣](https://leetcode.cn/problems/trim-a-binary-search-tree/) + ## 题目大意 给定一棵二叉搜索树的根节点 `root`,同时给定最小边界 `low` 和最大边界 `high`。通过修建二叉搜索树,使得所有节点值都在 `[low, high]` 中。修剪树不应该改变保留在树中的元素的相对结构(即如果没有移除节点,则该节点的父节点关系、子节点关系都应当保留)。 diff --git "a/Solutions/0673. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227\347\232\204\344\270\252\346\225\260.md" "b/Solutions/0673. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227\347\232\204\344\270\252\346\225\260.md" index e7e634f3..6035fc70 100644 --- "a/Solutions/0673. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227\347\232\204\344\270\252\346\225\260.md" +++ "b/Solutions/0673. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227\347\232\204\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:树状数组、线段树、数组、动态规划 - 难度:中等 +## 题目链接 + +- [0673. 最长递增子序列的个数 - 力扣](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) + ## 题目大意 **描述**:给定一个未排序的整数数组 `nums`。 diff --git "a/Solutions/0674. \346\234\200\351\225\277\350\277\236\347\273\255\351\200\222\345\242\236\345\272\217\345\210\227.md" "b/Solutions/0674. \346\234\200\351\225\277\350\277\236\347\273\255\351\200\222\345\242\236\345\272\217\345\210\227.md" index 8f4a5e28..0caec528 100644 --- "a/Solutions/0674. \346\234\200\351\225\277\350\277\236\347\273\255\351\200\222\345\242\236\345\272\217\345\210\227.md" +++ "b/Solutions/0674. \346\234\200\351\225\277\350\277\236\347\273\255\351\200\222\345\242\236\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:数组 - 难度:简单 +## 题目链接 + +- [0674. 最长连续递增序列 - 力扣](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/) + ## 题目大意 **描述**:给定一个未经排序的数组 $nums$。 diff --git "a/Solutions/0676. \345\256\236\347\216\260\344\270\200\344\270\252\351\255\224\346\263\225\345\255\227\345\205\270.md" "b/Solutions/0676. \345\256\236\347\216\260\344\270\200\344\270\252\351\255\224\346\263\225\345\255\227\345\205\270.md" index 560f7c0a..c60bc8a8 100644 --- "a/Solutions/0676. \345\256\236\347\216\260\344\270\200\344\270\252\351\255\224\346\263\225\345\255\227\345\205\270.md" +++ "b/Solutions/0676. \345\256\236\347\216\260\344\270\200\344\270\252\351\255\224\346\263\225\345\255\227\345\205\270.md" @@ -3,6 +3,10 @@ - 标签:设计、字典树、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [0676. 实现一个魔法字典 - 力扣](https://leetcode.cn/problems/implement-magic-dictionary/) + ## 题目大意 **要求**:设计一个使用单词表进行初始化的数据结构。单词表中的单词互不相同。如果给出一个单词,要求判定能否将该单词中的一个字母替换成另一个字母,是的所形成的新单词已经在够构建的单词表中。 diff --git "a/Solutions/0677. \351\224\256\345\200\274\346\230\240\345\260\204.md" "b/Solutions/0677. \351\224\256\345\200\274\346\230\240\345\260\204.md" index acca4c9d..3663c065 100644 --- "a/Solutions/0677. \351\224\256\345\200\274\346\230\240\345\260\204.md" +++ "b/Solutions/0677. \351\224\256\345\200\274\346\230\240\345\260\204.md" @@ -3,6 +3,10 @@ - 标签:设计、字典树、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [0677. 键值映射 - 力扣](https://leetcode.cn/problems/map-sum-pairs/) + ## 题目大意 **要求**:实现一个 MapSum 类,支持两个方法,`insert` 和 `sum`: diff --git "a/Solutions/0678. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0678. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267\345\255\227\347\254\246\344\270\262.md" index 1be9cb0e..2298cec7 100644 --- "a/Solutions/0678. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0678. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:栈、贪心、字符串、动态规划 - 难度:中等 +## 题目链接 + +- [0678. 有效的括号字符串 - 力扣](https://leetcode.cn/problems/valid-parenthesis-string/) + ## 题目大意 **描述**:给定一个只包含三种字符的字符串:`(` ,`)` 和 `*`。有效的括号字符串具有如下规则: diff --git "a/Solutions/0680. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262 II.md" "b/Solutions/0680. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262 II.md" index 322b623c..f79d471d 100644 --- "a/Solutions/0680. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262 II.md" +++ "b/Solutions/0680. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262 II.md" @@ -3,6 +3,10 @@ - 标签:贪心、双指针、字符串 - 难度:简单 +## 题目链接 + +- [0680. 验证回文串 II - 力扣](https://leetcode.cn/problems/valid-palindrome-ii/) + ## 题目大意 给定一个非空字符串 `s`。 diff --git "a/Solutions/0683. K \344\270\252\345\205\263\351\227\255\347\232\204\347\201\257\346\263\241.md" "b/Solutions/0683. K \344\270\252\345\205\263\351\227\255\347\232\204\347\201\257\346\263\241.md" index fd3acc74..ec312e84 100644 --- "a/Solutions/0683. K \344\270\252\345\205\263\351\227\255\347\232\204\347\201\257\346\263\241.md" +++ "b/Solutions/0683. K \344\270\252\345\205\263\351\227\255\347\232\204\347\201\257\346\263\241.md" @@ -3,6 +3,10 @@ - 标签:树状数组、数组、有序集合、滑动窗口 - 难度:困难 +## 题目链接 + +- [0683. K 个关闭的灯泡 - 力扣](https://leetcode.cn/problems/k-empty-slots/) + ## 题目大意 `n` 个灯泡排成一行,编号从 `1` 到 `n`。最初,所有灯泡都关闭。每天只打开一个灯泡,直到 `n` 天后所有灯泡都打开。 diff --git "a/Solutions/0684. \345\206\227\344\275\231\350\277\236\346\216\245.md" "b/Solutions/0684. \345\206\227\344\275\231\350\277\236\346\216\245.md" index 06987762..9de1644a 100644 --- "a/Solutions/0684. \345\206\227\344\275\231\350\277\236\346\216\245.md" +++ "b/Solutions/0684. \345\206\227\344\275\231\350\277\236\346\216\245.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 +## 题目链接 + +- [0684. 冗余连接 - 力扣](https://leetcode.cn/problems/redundant-connection/) + ## 题目大意 **描述**:一个 `n` 个节点的树(节点值为 `1~n`)添加一条边后就形成了图,添加的这条边不属于树中已经存在的边。图的信息记录存储与长度为 `n` 的二维数组 `edges`,`edges[i] = [ai, bi]` 表示图中在 `ai` 和 `bi` 之间存在一条边。 diff --git "a/Solutions/0686. \351\207\215\345\244\215\345\217\240\345\212\240\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" "b/Solutions/0686. \351\207\215\345\244\215\345\217\240\345\212\240\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" index 07c06506..c4fcd906 100644 --- "a/Solutions/0686. \351\207\215\345\244\215\345\217\240\345\212\240\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" +++ "b/Solutions/0686. \351\207\215\345\244\215\345\217\240\345\212\240\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" @@ -3,6 +3,10 @@ - 标签:字符串、字符串匹配 - 难度:中等 +## 题目链接 + +- [0686. 重复叠加字符串匹配 - 力扣](https://leetcode.cn/problems/repeated-string-match/) + ## 题目大意 **描述**:给定两个字符串 `a` 和 `b`。 diff --git "a/Solutions/0687. \346\234\200\351\225\277\345\220\214\345\200\274\350\267\257\345\276\204.md" "b/Solutions/0687. \346\234\200\351\225\277\345\220\214\345\200\274\350\267\257\345\276\204.md" index d684f153..45ed71e5 100644 --- "a/Solutions/0687. \346\234\200\351\225\277\345\220\214\345\200\274\350\267\257\345\276\204.md" +++ "b/Solutions/0687. \346\234\200\351\225\277\345\220\214\345\200\274\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0687. 最长同值路径 - 力扣](https://leetcode.cn/problems/longest-univalue-path/) + ## 题目大意 **描述**:给定一个二叉树的根节点 $root$。 diff --git "a/Solutions/0688. \351\252\221\345\243\253\345\234\250\346\243\213\347\233\230\344\270\212\347\232\204\346\246\202\347\216\207.md" "b/Solutions/0688. \351\252\221\345\243\253\345\234\250\346\243\213\347\233\230\344\270\212\347\232\204\346\246\202\347\216\207.md" index 6c9f331a..739744f0 100644 --- "a/Solutions/0688. \351\252\221\345\243\253\345\234\250\346\243\213\347\233\230\344\270\212\347\232\204\346\246\202\347\216\207.md" +++ "b/Solutions/0688. \351\252\221\345\243\253\345\234\250\346\243\213\347\233\230\344\270\212\347\232\204\346\246\202\347\216\207.md" @@ -3,6 +3,10 @@ - 标签:动态规划 - 难度:中等 +## 题目链接 + +- [0688. 骑士在棋盘上的概率 - 力扣](https://leetcode.cn/problems/knight-probability-in-chessboard/) + ## 题目大意 **描述**:在一个 `n * n` 的国际象棋棋盘上,一个骑士从单元格 `(row, column)` 开始,尝试进行 `k` 次 移动。行和列是从 `0` 开始的,左上角的单元格是 `(0, 0)`,右下角的单元格是 `(n - 1, n - 1)`。 diff --git "a/Solutions/0690. \345\221\230\345\267\245\347\232\204\351\207\215\350\246\201\346\200\247.md" "b/Solutions/0690. \345\221\230\345\267\245\347\232\204\351\207\215\350\246\201\346\200\247.md" index 2b32105d..a88db54d 100644 --- "a/Solutions/0690. \345\221\230\345\267\245\347\232\204\351\207\215\350\246\201\346\200\247.md" +++ "b/Solutions/0690. \345\221\230\345\267\245\347\232\204\351\207\215\350\246\201\346\200\247.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、哈希表 - 难度:中等 +## 题目链接 + +- [0690. 员工的重要性 - 力扣](https://leetcode.cn/problems/employee-importance/) + ## 题目大意 给定一个公司的所有员工信息。其中每个员工信息包含:该员工 id,该员工重要度,以及该员工的所有下属 id。 diff --git "a/Solutions/0691. \350\264\264\347\272\270\346\213\274\350\257\215.md" "b/Solutions/0691. \350\264\264\347\272\270\346\213\274\350\257\215.md" index 2d7c3aee..b3886ab0 100644 --- "a/Solutions/0691. \350\264\264\347\272\270\346\213\274\350\257\215.md" +++ "b/Solutions/0691. \350\264\264\347\272\270\346\213\274\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、字符串、动态规划、回溯、状态压缩 - 难度:困难 +## 题目链接 + +- [0691. 贴纸拼词 - 力扣](https://leetcode.cn/problems/stickers-to-spell-word/) + ## 题目大意 **描述**:给定一个字符串数组 $stickers$ 表示不同的贴纸,其中 $stickers[i]$ 表示第 $i$ 张贴纸上的小写英文单词。再给定一个字符串 $target$。为了拼出给定字符串 $target$,我们需要从贴纸中切割单个字母并重新排列它们。贴纸的数量是无限的,可以重复多次使用。 diff --git "a/Solutions/0695. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" "b/Solutions/0695. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" index 878d399f..fa2528e3 100644 --- "a/Solutions/0695. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" +++ "b/Solutions/0695. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、数组、矩阵 - 难度:中等 +## 题目链接 + +- [0695. 岛屿的最大面积 - 力扣](https://leetcode.cn/problems/max-area-of-island/) + ## 题目大意 **描述**:给定一个只包含 $0$、$1$ 元素的二维数组,$1$ 代表岛屿,$0$ 代表水。一座岛的面积就是上下左右相邻的 $1$ 所组成的连通块的数目。 diff --git "a/Solutions/0698. \345\210\222\345\210\206\344\270\272k\344\270\252\347\233\270\347\255\211\347\232\204\345\255\220\351\233\206.md" "b/Solutions/0698. \345\210\222\345\210\206\344\270\272k\344\270\252\347\233\270\347\255\211\347\232\204\345\255\220\351\233\206.md" index 3d3569a6..a1983260 100644 --- "a/Solutions/0698. \345\210\222\345\210\206\344\270\272k\344\270\252\347\233\270\347\255\211\347\232\204\345\255\220\351\233\206.md" +++ "b/Solutions/0698. \345\210\222\345\210\206\344\270\272k\344\270\252\347\233\270\347\255\211\347\232\204\345\255\220\351\233\206.md" @@ -3,6 +3,10 @@ - 标签:位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 - 难度:中等 +## 题目链接 + +- [0698. 划分为k个相等的子集 - 力扣](https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/) + ## 题目大意 **描述**:给定一个整数数组 $nums$ 和一个正整数 $k$。 diff --git "a/Solutions/0700. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\220\234\347\264\242.md" "b/Solutions/0700. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\220\234\347\264\242.md" index e9674346..16c1a678 100644 --- "a/Solutions/0700. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\220\234\347\264\242.md" +++ "b/Solutions/0700. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\220\234\347\264\242.md" @@ -3,6 +3,10 @@ - 标签:树、二叉搜索树、二叉树 - 难度:简单 +## 题目链接 + +- [0700. 二叉搜索树中的搜索 - 力扣](https://leetcode.cn/problems/search-in-a-binary-search-tree/) + ## 题目大意 **描述**:给定一个二叉搜索树和一个值 `val`。 diff --git "a/Solutions/0701. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\217\222\345\205\245\346\223\215\344\275\234.md" "b/Solutions/0701. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\217\222\345\205\245\346\223\215\344\275\234.md" index bc147561..53b4b33d 100644 --- "a/Solutions/0701. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\217\222\345\205\245\346\223\215\344\275\234.md" +++ "b/Solutions/0701. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\217\222\345\205\245\346\223\215\344\275\234.md" @@ -3,6 +3,10 @@ - 标签:树、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [0701. 二叉搜索树中的插入操作 - 力扣](https://leetcode.cn/problems/insert-into-a-binary-search-tree/) + ## 题目大意 **描述**:给定一个二叉搜索树的根节点和要插入树中的值 `val`。 diff --git "a/Solutions/0702. \346\220\234\347\264\242\351\225\277\345\272\246\346\234\252\347\237\245\347\232\204\346\234\211\345\272\217\346\225\260\347\273\204.md" "b/Solutions/0702. \346\220\234\347\264\242\351\225\277\345\272\246\346\234\252\347\237\245\347\232\204\346\234\211\345\272\217\346\225\260\347\273\204.md" index 10ad0626..da2ad5e0 100644 --- "a/Solutions/0702. \346\220\234\347\264\242\351\225\277\345\272\246\346\234\252\347\237\245\347\232\204\346\234\211\345\272\217\346\225\260\347\273\204.md" +++ "b/Solutions/0702. \346\220\234\347\264\242\351\225\277\345\272\246\346\234\252\347\237\245\347\232\204\346\234\211\345\272\217\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、交互 - 难度:中等 +## 题目链接 + +- [0702. 搜索长度未知的有序数组 - 力扣](https://leetcode.cn/problems/search-in-a-sorted-array-of-unknown-size/) + ## 题目大意 给定一个升序数组 nums,但是数组的大小是未知的,只能通过接口 `reader.get(k)` 来获取数组 nums 中第 k 个元素值。如果数组访问越界,则接口返回 `2147483647`。再给定一个数字 target。要求从 nums 中找出 target,并返回下标,如果 nums 中不存在 target,则返回 -1。 diff --git "a/Solutions/0703. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254 K \345\244\247\345\205\203\347\264\240.md" "b/Solutions/0703. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254 K \345\244\247\345\205\203\347\264\240.md" index 0e524c0c..f9d9e16e 100644 --- "a/Solutions/0703. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254 K \345\244\247\345\205\203\347\264\240.md" +++ "b/Solutions/0703. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254 K \345\244\247\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) - 难度:简单 +## 题目链接 + +- [0703. 数据流中的第 K 大元素 - 力扣](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) + ## 题目大意 **要求**:设计一个 KthLargest 类,用于找到数据流中第 $k$ 大元素。 diff --git "a/Solutions/0704. \344\272\214\345\210\206\346\237\245\346\211\276.md" "b/Solutions/0704. \344\272\214\345\210\206\346\237\245\346\211\276.md" index 12d13769..e8bc6f9a 100644 --- "a/Solutions/0704. \344\272\214\345\210\206\346\237\245\346\211\276.md" +++ "b/Solutions/0704. \344\272\214\345\210\206\346\237\245\346\211\276.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:简单 +## 题目链接 + +- [0704. 二分查找 - 力扣](https://leetcode.cn/problems/binary-search/) + ## 题目大意 **描述**:给定一个升序的数组 $nums$,和一个目标值 $target$。 diff --git "a/Solutions/0705. \350\256\276\350\256\241\345\223\210\345\270\214\351\233\206\345\220\210.md" "b/Solutions/0705. \350\256\276\350\256\241\345\223\210\345\270\214\351\233\206\345\220\210.md" index cfb4f0d3..e595fc21 100644 --- "a/Solutions/0705. \350\256\276\350\256\241\345\223\210\345\270\214\351\233\206\345\220\210.md" +++ "b/Solutions/0705. \350\256\276\350\256\241\345\223\210\345\270\214\351\233\206\345\220\210.md" @@ -3,6 +3,10 @@ - 标签:设计、数组、哈希表、链表、哈希函数 - 难度:简单 +## 题目链接 + +- [0705. 设计哈希集合 - 力扣](https://leetcode.cn/problems/design-hashset/) + ## 题目大意 **要求**:不使用内建的哈希表库,自行实现一个哈希集合(HashSet)。 diff --git "a/Solutions/0706. \350\256\276\350\256\241\345\223\210\345\270\214\346\230\240\345\260\204.md" "b/Solutions/0706. \350\256\276\350\256\241\345\223\210\345\270\214\346\230\240\345\260\204.md" index 4665b1cf..db33021c 100644 --- "a/Solutions/0706. \350\256\276\350\256\241\345\223\210\345\270\214\346\230\240\345\260\204.md" +++ "b/Solutions/0706. \350\256\276\350\256\241\345\223\210\345\270\214\346\230\240\345\260\204.md" @@ -3,6 +3,10 @@ - 标签:设计、数组、哈希表、链表、哈希函数 - 难度:简单 +## 题目链接 + +- [0706. 设计哈希映射 - 力扣](https://leetcode.cn/problems/design-hashmap/) + ## 题目大意 **要求**:不使用任何内建的哈希表库设计一个哈希映射(`HashMap`)。 diff --git "a/Solutions/0707. \350\256\276\350\256\241\351\223\276\350\241\250.md" "b/Solutions/0707. \350\256\276\350\256\241\351\223\276\350\241\250.md" index 50973c2c..25c688e6 100644 --- "a/Solutions/0707. \350\256\276\350\256\241\351\223\276\350\241\250.md" +++ "b/Solutions/0707. \350\256\276\350\256\241\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:设计、链表 - 难度:中等 +## 题目链接 + +- [0707. 设计链表 - 力扣](https://leetcode.cn/problems/design-linked-list/) + ## 题目大意 **要求**:设计实现一个链表,需要支持以下操作: diff --git "a/Solutions/0708. \345\276\252\347\216\257\346\234\211\345\272\217\345\210\227\350\241\250\347\232\204\346\217\222\345\205\245.md" "b/Solutions/0708. \345\276\252\347\216\257\346\234\211\345\272\217\345\210\227\350\241\250\347\232\204\346\217\222\345\205\245.md" index 58c35e17..6898843b 100644 --- "a/Solutions/0708. \345\276\252\347\216\257\346\234\211\345\272\217\345\210\227\350\241\250\347\232\204\346\217\222\345\205\245.md" +++ "b/Solutions/0708. \345\276\252\347\216\257\346\234\211\345\272\217\345\210\227\350\241\250\347\232\204\346\217\222\345\205\245.md" @@ -3,6 +3,10 @@ - 标签:链表 - 难度:中等 +## 题目链接 + +- [0708. 循环有序列表的插入 - 力扣](https://leetcode.cn/problems/insert-into-a-sorted-circular-linked-list/) + ## 题目大意 给定循环升序链表中的一个节点 `head` 和一个整数 `insertVal`。 diff --git "a/Solutions/0709. \350\275\254\346\215\242\346\210\220\345\260\217\345\206\231\345\255\227\346\257\215.md" "b/Solutions/0709. \350\275\254\346\215\242\346\210\220\345\260\217\345\206\231\345\255\227\346\257\215.md" index fe43b437..6e86e7cc 100644 --- "a/Solutions/0709. \350\275\254\346\215\242\346\210\220\345\260\217\345\206\231\345\255\227\346\257\215.md" +++ "b/Solutions/0709. \350\275\254\346\215\242\346\210\220\345\260\217\345\206\231\345\255\227\346\257\215.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:简单 +## 题目链接 + +- [0709. 转换成小写字母 - 力扣](https://leetcode.cn/problems/to-lower-case/) + ## 题目大意 **描述**:给定一个字符串 $s$。 diff --git "a/Solutions/0713. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0713. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" index b3a676e3..4acba49e 100644 --- "a/Solutions/0713. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0713. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、滑动窗口 - 难度:中等 +## 题目链接 + +- [0713. 乘积小于 K 的子数组 - 力扣](https://leetcode.cn/problems/subarray-product-less-than-k/) + ## 题目大意 **描述**:给定一个正整数数组 $nums$ 和整数 $k$。 diff --git "a/Solutions/0714. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272\345\220\253\346\211\213\347\273\255\350\264\271.md" "b/Solutions/0714. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272\345\220\253\346\211\213\347\273\255\350\264\271.md" index f22375c1..3e14f1c0 100644 --- "a/Solutions/0714. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272\345\220\253\346\211\213\347\273\255\350\264\271.md" +++ "b/Solutions/0714. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272\345\220\253\346\211\213\347\273\255\350\264\271.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、动态规划 - 难度:中等 +## 题目链接 + +- [0714. 买卖股票的最佳时机含手续费 - 力扣](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/) + ## 题目大意 给定一个整数数组 `prices`,其中第 `i` 个元素代表了第 `i` 天的股票价格 ;整数 `fee` 代表了交易股票的手续费用。 diff --git "a/Solutions/0715. Range \346\250\241\345\235\227.md" "b/Solutions/0715. Range \346\250\241\345\235\227.md" index 941a57c0..f79c8690 100644 --- "a/Solutions/0715. Range \346\250\241\345\235\227.md" +++ "b/Solutions/0715. Range \346\250\241\345\235\227.md" @@ -3,6 +3,10 @@ - 标签:设计、线段树、有序集合 - 难度:困难 +## 题目链接 + +- [0715. Range 模块 - 力扣](https://leetcode.cn/problems/range-module/) + ## 题目大意 **描述**:`Range` 模块是跟踪数字范围的模块。 diff --git "a/Solutions/0718. \346\234\200\351\225\277\351\207\215\345\244\215\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0718. \346\234\200\351\225\277\351\207\215\345\244\215\345\255\220\346\225\260\347\273\204.md" index 59fe557e..d212720e 100644 --- "a/Solutions/0718. \346\234\200\351\225\277\351\207\215\345\244\215\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0718. \346\234\200\351\225\277\351\207\215\345\244\215\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 - 难度:中等 +## 题目链接 + +- [0718. 最长重复子数组 - 力扣](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) + ## 题目大意 **描述**:给定两个整数数组 $nums1$、$nums2$。 diff --git "a/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" "b/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" index 5a9e7d84..97de9438 100644 --- "a/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" +++ "b/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、二分查找、排序 - 难度:困难 +## 题目链接 + +- [0719. 找出第 k 小的距离对 - 力扣](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) + ## 题目大意 给定一个整数数组 nums,对于数组中不同的数 nums[i]、nums[j] 之间的距离定义为 nums[i] 和 nums[j] 的绝对差值,即 `dist(nums[i], nums[j]) = abs(nums[i] - nums[j])`。求所有数对之间第 k 个最小距离。 diff --git "a/Solutions/0720. \350\257\215\345\205\270\344\270\255\346\234\200\351\225\277\347\232\204\345\215\225\350\257\215.md" "b/Solutions/0720. \350\257\215\345\205\270\344\270\255\346\234\200\351\225\277\347\232\204\345\215\225\350\257\215.md" index a27274ac..0ca7f5f5 100644 --- "a/Solutions/0720. \350\257\215\345\205\270\344\270\255\346\234\200\351\225\277\347\232\204\345\215\225\350\257\215.md" +++ "b/Solutions/0720. \350\257\215\345\205\270\344\270\255\346\234\200\351\225\277\347\232\204\345\215\225\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、哈希表、字符串、排序 - 难度:中等 +## 题目链接 + +- [0720. 词典中最长的单词 - 力扣](https://leetcode.cn/problems/longest-word-in-dictionary/) + ## 题目大意 给出一个字符串数组 `words` 组成的一本英语词典。 diff --git "a/Solutions/0724. \345\257\273\346\211\276\346\225\260\347\273\204\347\232\204\344\270\255\345\277\203\344\270\213\346\240\207.md" "b/Solutions/0724. \345\257\273\346\211\276\346\225\260\347\273\204\347\232\204\344\270\255\345\277\203\344\270\213\346\240\207.md" index 14b036fe..7c334a83 100644 --- "a/Solutions/0724. \345\257\273\346\211\276\346\225\260\347\273\204\347\232\204\344\270\255\345\277\203\344\270\213\346\240\207.md" +++ "b/Solutions/0724. \345\257\273\346\211\276\346\225\260\347\273\204\347\232\204\344\270\255\345\277\203\344\270\213\346\240\207.md" @@ -3,6 +3,10 @@ - 标签:数组、前缀和 - 难度:简单 +## 题目链接 + +- [0724. 寻找数组的中心下标 - 力扣](https://leetcode.cn/problems/find-pivot-index/) + ## 题目大意 **描述**:给定一个数组 $nums$。 diff --git "a/Solutions/0727. \346\234\200\345\260\217\347\252\227\345\217\243\345\255\220\345\272\217\345\210\227.md" "b/Solutions/0727. \346\234\200\345\260\217\347\252\227\345\217\243\345\255\220\345\272\217\345\210\227.md" index 593093f4..26107fa7 100644 --- "a/Solutions/0727. \346\234\200\345\260\217\347\252\227\345\217\243\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/0727. \346\234\200\345\260\217\347\252\227\345\217\243\345\255\220\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划、滑动窗口 - 难度:困难 +## 题目链接 + +- [0727. 最小窗口子序列 - 力扣](https://leetcode.cn/problems/minimum-window-subsequence/) + ## 题目大意 给定字符串 `s1` 和 `s2`。 diff --git "a/Solutions/0729. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 I.md" "b/Solutions/0729. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 I.md" index 84b0f164..a8fcd512 100644 --- "a/Solutions/0729. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 I.md" +++ "b/Solutions/0729. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 I.md" @@ -3,6 +3,10 @@ - 标签:设计、线段树、二分查找、有序集合 - 难度:中等 +## 题目链接 + +- [0729. 我的日程安排表 I - 力扣](https://leetcode.cn/problems/my-calendar-i/) + ## 题目大意 **要求**:实现一个 `MyCalendar` 类来存放你的日程安排。如果要添加的日程安排不会造成重复预订 ,则可以存储这个新的日程安排。 diff --git "a/Solutions/0731. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 II.md" "b/Solutions/0731. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 II.md" index b993b11c..287d3354 100644 --- "a/Solutions/0731. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 II.md" +++ "b/Solutions/0731. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 II.md" @@ -3,6 +3,10 @@ - 标签:设计、线段树、二分查找、有序集合 - 难度:中等 +## 题目链接 + +- [731. 我的日程安排表 II - 力扣](https://leetcode.cn/problems/my-calendar-ii/) + ## 题目大意 **要求**:实现一个 `MyCalendar` 类来存放你的日程安排。如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排。 diff --git "a/Solutions/0732. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 III.md" "b/Solutions/0732. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 III.md" index 06ee93e3..6fd5c6e5 100644 --- "a/Solutions/0732. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 III.md" +++ "b/Solutions/0732. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 III.md" @@ -3,6 +3,10 @@ - 标签:设计、线段树、二分查找、有序集合 - 难度:困难 +## 题目链接 + +- [0732. 我的日程安排表 III - 力扣](https://leetcode.cn/problems/my-calendar-iii/) + ## 题目大意 **要求**:实现一个 `MyCalendarThree` 类来存放你的日程安排,你可以一直添加新的日程安排。 diff --git "a/Solutions/0733. \345\233\276\345\203\217\346\270\262\346\237\223.md" "b/Solutions/0733. \345\233\276\345\203\217\346\270\262\346\237\223.md" index 4987c96f..7b01f948 100644 --- "a/Solutions/0733. \345\233\276\345\203\217\346\270\262\346\237\223.md" +++ "b/Solutions/0733. \345\233\276\345\203\217\346\270\262\346\237\223.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、数组、矩阵 - 难度:简单 +## 题目链接 + +- [0733. 图像渲染 - 力扣](https://leetcode.cn/problems/flood-fill/) + ## 题目大意 给定一个二维数组 image 表示图画,数组的每个元素值表示该位置的像素值大小。再给定一个坐标 (sr, sc) 表示图像渲染开始的位置。然后再给定一个新的颜色值 newColor。现在要求:将坐标 (sr, sc) 以及 (sr, sc) 相连的上下左右区域上与 (sr, sc) 原始颜色相同的区域染色为 newColor。返回染色后的二维数组。 diff --git "a/Solutions/0735. \350\241\214\346\230\237\347\242\260\346\222\236.md" "b/Solutions/0735. \350\241\214\346\230\237\347\242\260\346\222\236.md" index ff0314c0..e96f4dcd 100644 --- "a/Solutions/0735. \350\241\214\346\230\237\347\242\260\346\222\236.md" +++ "b/Solutions/0735. \350\241\214\346\230\237\347\242\260\346\222\236.md" @@ -3,6 +3,10 @@ - 标签:栈、数组 - 难度:中等 +## 题目链接 + +- [0735. 行星碰撞 - 力扣](https://leetcode.cn/problems/asteroid-collision/) + ## 题目大意 给定一个整数数组 `asteroids`,表示在同一行的小行星。 diff --git "a/Solutions/0738. \345\215\225\350\260\203\351\200\222\345\242\236\347\232\204\346\225\260\345\255\227.md" "b/Solutions/0738. \345\215\225\350\260\203\351\200\222\345\242\236\347\232\204\346\225\260\345\255\227.md" index febff1cc..c6cac012 100644 --- "a/Solutions/0738. \345\215\225\350\260\203\351\200\222\345\242\236\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/0738. \345\215\225\350\260\203\351\200\222\345\242\236\347\232\204\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:贪心、数学 - 难度:中等 +## 题目链接 + +- [0738. 单调递增的数字 - 力扣](https://leetcode.cn/problems/monotone-increasing-digits/) + ## 题目大意 给定一个非负整数 n,找出小于等于 n 的最大整数,同时该整数需要满足其各个位数上的数字是单调递增的。 diff --git "a/Solutions/0739. \346\257\217\346\227\245\346\270\251\345\272\246.md" "b/Solutions/0739. \346\257\217\346\227\245\346\270\251\345\272\246.md" index 702971c3..17fb2307 100644 --- "a/Solutions/0739. \346\257\217\346\227\245\346\270\251\345\272\246.md" +++ "b/Solutions/0739. \346\257\217\346\227\245\346\270\251\345\272\246.md" @@ -3,6 +3,10 @@ - 标签:栈、数组、单调栈 - 难度:中等 +## 题目链接 + +- [0739. 每日温度 - 力扣](https://leetcode.cn/problems/daily-temperatures/) + ## 题目大意 **描述**:给定一个列表 `temperatures`,`temperatures[i]` 表示第 `i` 天的气温。 diff --git "a/Solutions/0744. \345\257\273\346\211\276\346\257\224\347\233\256\346\240\207\345\255\227\346\257\215\345\244\247\347\232\204\346\234\200\345\260\217\345\255\227\346\257\215.md" "b/Solutions/0744. \345\257\273\346\211\276\346\257\224\347\233\256\346\240\207\345\255\227\346\257\215\345\244\247\347\232\204\346\234\200\345\260\217\345\255\227\346\257\215.md" index bd9312de..bbb86703 100644 --- "a/Solutions/0744. \345\257\273\346\211\276\346\257\224\347\233\256\346\240\207\345\255\227\346\257\215\345\244\247\347\232\204\346\234\200\345\260\217\345\255\227\346\257\215.md" +++ "b/Solutions/0744. \345\257\273\346\211\276\346\257\224\347\233\256\346\240\207\345\255\227\346\257\215\345\244\247\347\232\204\346\234\200\345\260\217\345\255\227\346\257\215.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:简单 +## 题目链接 + +- [0744. 寻找比目标字母大的最小字母 - 力扣](https://leetcode.cn/problems/find-smallest-letter-greater-than-target/) + ## 题目大意 **描述**:给你一个字符数组 $letters$,该数组按非递减顺序排序,以及一个字符 $target$。$letters$ 里至少有两个不同的字符。 diff --git "a/Solutions/0746. \344\275\277\347\224\250\346\234\200\345\260\217\350\212\261\350\264\271\347\210\254\346\245\274\346\242\257.md" "b/Solutions/0746. \344\275\277\347\224\250\346\234\200\345\260\217\350\212\261\350\264\271\347\210\254\346\245\274\346\242\257.md" index 199ca660..15509f74 100644 --- "a/Solutions/0746. \344\275\277\347\224\250\346\234\200\345\260\217\350\212\261\350\264\271\347\210\254\346\245\274\346\242\257.md" +++ "b/Solutions/0746. \344\275\277\347\224\250\346\234\200\345\260\217\350\212\261\350\264\271\347\210\254\346\245\274\346\242\257.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:简单 +## 题目链接 + +- [0746. 使用最小花费爬楼梯 - 力扣](https://leetcode.cn/problems/min-cost-climbing-stairs/) + ## 题目大意 给定一个数组 `cost` 代表一段楼梯,`cost[i]` 代表爬上第 `i` 阶楼梯醒酒药花费的体力值(下标从 `0` 开始)。 diff --git "a/Solutions/0752. \346\211\223\345\274\200\350\275\254\347\233\230\351\224\201.md" "b/Solutions/0752. \346\211\223\345\274\200\350\275\254\347\233\230\351\224\201.md" index ddd572bb..67421a98 100644 --- "a/Solutions/0752. \346\211\223\345\274\200\350\275\254\347\233\230\351\224\201.md" +++ "b/Solutions/0752. \346\211\223\345\274\200\350\275\254\347\233\230\351\224\201.md" @@ -3,6 +3,10 @@ - 标签:广度优先搜索、数组、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [0752. 打开转盘锁 - 力扣](https://leetcode.cn/problems/open-the-lock/) + ## 题目大意 **描述**:有一把带有四个数字的密码锁,每个位置上有 `0` ~ `9` 共 `10` 个数字。每次只能将其中一个位置上的数字转动一下。可以向上转,也可以向下转。比如:`1 -> 2`、`2 -> 1`。 diff --git "a/Solutions/0758. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\212\240\347\262\227\345\215\225\350\257\215.md" "b/Solutions/0758. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\212\240\347\262\227\345\215\225\350\257\215.md" index 927abaec..2d7c5c9e 100644 --- "a/Solutions/0758. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\212\240\347\262\227\345\215\225\350\257\215.md" +++ "b/Solutions/0758. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\212\240\347\262\227\345\215\225\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、哈希表、字符串、字符串匹配 - 难度:中等 +## 题目链接 + +- [0758. 字符串中的加粗单词 - 力扣](https://leetcode.cn/problems/bold-words-in-string/) + ## 题目大意 给定一个关键词集合 `words` 和一个字符串 `s`。 diff --git "a/Solutions/0763. \345\210\222\345\210\206\345\255\227\346\257\215\345\214\272\351\227\264.md" "b/Solutions/0763. \345\210\222\345\210\206\345\255\227\346\257\215\345\214\272\351\227\264.md" index 864a6762..ad819aa1 100644 --- "a/Solutions/0763. \345\210\222\345\210\206\345\255\227\346\257\215\345\214\272\351\227\264.md" +++ "b/Solutions/0763. \345\210\222\345\210\206\345\255\227\346\257\215\345\214\272\351\227\264.md" @@ -3,6 +3,10 @@ - 标签:贪心、哈希表、双指针、字符串 - 难度:中等 +## 题目链接 + +- [0763. 划分字母区间 - 力扣](https://leetcode.cn/problems/partition-labels/) + ## 题目大意 给定一个由小写字母组成的字符串 `s`。要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 diff --git "a/Solutions/0765. \346\203\205\344\276\243\347\211\265\346\211\213.md" "b/Solutions/0765. \346\203\205\344\276\243\347\211\265\346\211\213.md" index 49149139..c95c2279 100644 --- "a/Solutions/0765. \346\203\205\344\276\243\347\211\265\346\211\213.md" +++ "b/Solutions/0765. \346\203\205\344\276\243\347\211\265\346\211\213.md" @@ -3,6 +3,10 @@ - 标签:贪心、深度优先搜索、广度优先搜索、并查集、图 - 难度:困难 +## 题目链接 + +- [0765. 情侣牵手 - 力扣](https://leetcode.cn/problems/couples-holding-hands/) + ## 题目大意 **描述**:$n$ 对情侣坐在连续排列的 $2 \times n$ 个座位上,想要牵对方的手。人和座位用 $0 \sim 2 \times n - 1$ 的整数表示。情侣按顺序编号,第一对是 $(0, 1)$,第二对是 $(2, 3)$,以此类推,最后一对是 $(2 \times n - 2, 2 \times n - 1)$。 diff --git "a/Solutions/0766. \346\211\230\346\231\256\345\210\251\350\214\250\347\237\251\351\230\265.md" "b/Solutions/0766. \346\211\230\346\231\256\345\210\251\350\214\250\347\237\251\351\230\265.md" index 21393b6e..0f1fba49 100644 --- "a/Solutions/0766. \346\211\230\346\231\256\345\210\251\350\214\250\347\237\251\351\230\265.md" +++ "b/Solutions/0766. \346\211\230\346\231\256\345\210\251\350\214\250\347\237\251\351\230\265.md" @@ -3,6 +3,10 @@ - 标签:数组、矩阵 - 难度:简单 +## 题目链接 + +- [0766. 托普利茨矩阵 - 力扣](https://leetcode.cn/problems/toeplitz-matrix/) + ## 题目大意 **描述**:给定一个 $m \times n$ 大小的矩阵 $matrix$。 diff --git "a/Solutions/0771. \345\256\235\347\237\263\344\270\216\347\237\263\345\244\264.md" "b/Solutions/0771. \345\256\235\347\237\263\344\270\216\347\237\263\345\244\264.md" index f65b4a50..d9f62a6d 100644 --- "a/Solutions/0771. \345\256\235\347\237\263\344\270\216\347\237\263\345\244\264.md" +++ "b/Solutions/0771. \345\256\235\347\237\263\344\270\216\347\237\263\345\244\264.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串 - 难度:简单 +## 题目链接 + +- [0771. 宝石与石头 - 力扣](https://leetcode.cn/problems/jewels-and-stones/) + ## 题目大意 **描述**:给定一个字符串 $jewels$ 代表石头中宝石的类型,再给定一个字符串 $stones$ 代表你拥有的石头。$stones$ 中每个字符代表了一种你拥有的石头的类型。 diff --git "a/Solutions/0778. \346\260\264\344\275\215\344\270\212\345\215\207\347\232\204\346\263\263\346\261\240\344\270\255\346\270\270\346\263\263.md" "b/Solutions/0778. \346\260\264\344\275\215\344\270\212\345\215\207\347\232\204\346\263\263\346\261\240\344\270\255\346\270\270\346\263\263.md" index 6c108154..e7cc1d1a 100644 --- "a/Solutions/0778. \346\260\264\344\275\215\344\270\212\345\215\207\347\232\204\346\263\263\346\261\240\344\270\255\346\270\270\346\263\263.md" +++ "b/Solutions/0778. \346\260\264\344\275\215\344\270\212\345\215\207\347\232\204\346\263\263\346\261\240\344\270\255\346\270\270\346\263\263.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) - 难度:困难 +## 题目链接 + +- [0778. 水位上升的泳池中游泳 - 力扣](https://leetcode.cn/problems/swim-in-rising-water/) + ## 题目大意 **描述**:给定一个 $n \times n$ 大小的二维数组 $grid$,每一个方格的值 $grid[i][j]$ 表示为位置 $(i, j)$ 的高度。 diff --git "a/Solutions/0779. \347\254\254K\344\270\252\350\257\255\346\263\225\347\254\246\345\217\267.md" "b/Solutions/0779. \347\254\254K\344\270\252\350\257\255\346\263\225\347\254\246\345\217\267.md" index 259ebaee..5c46d11a 100644 --- "a/Solutions/0779. \347\254\254K\344\270\252\350\257\255\346\263\225\347\254\246\345\217\267.md" +++ "b/Solutions/0779. \347\254\254K\344\270\252\350\257\255\346\263\225\347\254\246\345\217\267.md" @@ -3,6 +3,10 @@ - 标签:位运算、递归、数学 - 难度:中等 +## 题目链接 + +- [0779. 第K个语法符号 - 力扣](https://leetcode.cn/problems/k-th-symbol-in-grammar/) + ## 题目大意 **描述**:给定两个整数 $n$ 和 $k$​。我们可以按照下面的规则来生成字符串: diff --git "a/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" "b/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" index 81e3e64a..2ac02331 100644 --- "a/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" +++ "b/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:位运算、字符串、回溯 - 难度:中等 +## 题目链接 + +- [0784. 字母大小写全排列 - 力扣](https://leetcode.cn/problems/letter-case-permutation/) + ## 题目大意 **描述**:给定一个字符串 $s$,通过将字符串 $s$ 中的每个字母转变大小写,我们可以获得一个新的字符串。 diff --git "a/Solutions/0785. \345\210\244\346\226\255\344\272\214\345\210\206\345\233\276.md" "b/Solutions/0785. \345\210\244\346\226\255\344\272\214\345\210\206\345\233\276.md" index 6da4c9b5..a0159928 100644 --- "a/Solutions/0785. \345\210\244\346\226\255\344\272\214\345\210\206\345\233\276.md" +++ "b/Solutions/0785. \345\210\244\346\226\255\344\272\214\345\210\206\345\233\276.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 +## 题目链接 + +- [0785. 判断二分图 - 力扣](https://leetcode.cn/problems/is-graph-bipartite/) + ## 题目大意 给定一个代表 n 个节点的无向图的二维数组 `graph`,其中 `graph[u]` 是一个节点数组,由节点 `u` 的邻接节点组成。对于 `graph[u]` 中的每个 `v`,都存在一条位于节点 `u` 和节点 `v` 之间的无向边。 diff --git "a/Solutions/0788. \346\227\213\350\275\254\346\225\260\345\255\227.md" "b/Solutions/0788. \346\227\213\350\275\254\346\225\260\345\255\227.md" index 5ef0e5b1..893273ff 100644 --- "a/Solutions/0788. \346\227\213\350\275\254\346\225\260\345\255\227.md" +++ "b/Solutions/0788. \346\227\213\350\275\254\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:数学、动态规划 - 难度:中等 +## 题目链接 + +- [0788. 旋转数字 - 力扣](https://leetcode.cn/problems/rotated-digits/) + ## 题目大意 **描述**:给定搞一个正整数 $n$。 diff --git "a/Solutions/0795. \345\214\272\351\227\264\345\255\220\346\225\260\347\273\204\344\270\252\346\225\260.md" "b/Solutions/0795. \345\214\272\351\227\264\345\255\220\346\225\260\347\273\204\344\270\252\346\225\260.md" index 5f373daa..5b84a58d 100644 --- "a/Solutions/0795. \345\214\272\351\227\264\345\255\220\346\225\260\347\273\204\344\270\252\346\225\260.md" +++ "b/Solutions/0795. \345\214\272\351\227\264\345\255\220\346\225\260\347\273\204\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针 - 难度:中等 +## 题目链接 + +- [0795. 区间子数组个数 - 力扣](https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum/) + ## 题目大意 给定一个元素都是正整数的数组`A` ,正整数 `L` 以及 `R` (`L <= R`)。 diff --git "a/Solutions/0796. \346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0796. \346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" index e7213c4b..360398cf 100644 --- "a/Solutions/0796. \346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0796. \346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:字符串、字符串匹配 - 难度:简单 +## 题目链接 + +- [0796. 旋转字符串 - 力扣](https://leetcode.cn/problems/rotate-string/) + ## 题目大意 **描述**:给定两个字符串 `s` 和 `goal`。 diff --git "a/Solutions/0797. \346\211\200\346\234\211\345\217\257\350\203\275\347\232\204\350\267\257\345\276\204.md" "b/Solutions/0797. \346\211\200\346\234\211\345\217\257\350\203\275\347\232\204\350\267\257\345\276\204.md" index 295cc188..b9727801 100644 --- "a/Solutions/0797. \346\211\200\346\234\211\345\217\257\350\203\275\347\232\204\350\267\257\345\276\204.md" +++ "b/Solutions/0797. \346\211\200\346\234\211\345\217\257\350\203\275\347\232\204\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、图、回溯 - 难度:中等 +## 题目链接 + +- [0797. 所有可能的路径 - 力扣](https://leetcode.cn/problems/all-paths-from-source-to-target/) + ## 题目大意 给定一个有 `n` 个节点的有向无环图(DAG),用二维数组 `graph` 表示。 diff --git "a/Solutions/0800. \347\233\270\344\274\274 RGB \351\242\234\350\211\262.md" "b/Solutions/0800. \347\233\270\344\274\274 RGB \351\242\234\350\211\262.md" index eacb4b25..5dac196a 100644 --- "a/Solutions/0800. \347\233\270\344\274\274 RGB \351\242\234\350\211\262.md" +++ "b/Solutions/0800. \347\233\270\344\274\274 RGB \351\242\234\350\211\262.md" @@ -3,6 +3,10 @@ - 标签:数学、字符串、枚举 - 难度:简单 +## 题目链接 + +- [0800. 相似 RGB 颜色 - 力扣](https://leetcode.cn/problems/similar-rgb-color/) + ## 题目大意 **描述**:RGB 颜色 `"#AABBCC"` 可以简写成 `"#ABC"` 。例如,`"#1155cc"` 可以简写为 `"#15c"`。现在给定一个按 `"#ABCDEF"` 形式定义的字符串 `color` 表示 RGB 颜色。 diff --git "a/Solutions/0801. \344\275\277\345\272\217\345\210\227\351\200\222\345\242\236\347\232\204\346\234\200\345\260\217\344\272\244\346\215\242\346\254\241\346\225\260.md" "b/Solutions/0801. \344\275\277\345\272\217\345\210\227\351\200\222\345\242\236\347\232\204\346\234\200\345\260\217\344\272\244\346\215\242\346\254\241\346\225\260.md" index edb756bb..4e651790 100644 --- "a/Solutions/0801. \344\275\277\345\272\217\345\210\227\351\200\222\345\242\236\347\232\204\346\234\200\345\260\217\344\272\244\346\215\242\346\254\241\346\225\260.md" +++ "b/Solutions/0801. \344\275\277\345\272\217\345\210\227\351\200\222\345\242\236\347\232\204\346\234\200\345\260\217\344\272\244\346\215\242\346\254\241\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:困难 +## 题目链接 + +- [0801. 使序列递增的最小交换次数 - 力扣](https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/) + ## 题目大意 给定两个长度相等的整形数组 A 和 B。可以交换两个数组相同位置上的元素,比如 A[i] 与 B[i] 交换,可以交换多个位置,但要保证交换之后保证数组 A和数组 B 是严格递增的。 diff --git "a/Solutions/0802. \346\211\276\345\210\260\346\234\200\347\273\210\347\232\204\345\256\211\345\205\250\347\212\266\346\200\201.md" "b/Solutions/0802. \346\211\276\345\210\260\346\234\200\347\273\210\347\232\204\345\256\211\345\205\250\347\212\266\346\200\201.md" index 9d27f751..9fc09562 100644 --- "a/Solutions/0802. \346\211\276\345\210\260\346\234\200\347\273\210\347\232\204\345\256\211\345\205\250\347\212\266\346\200\201.md" +++ "b/Solutions/0802. \346\211\276\345\210\260\346\234\200\347\273\210\347\232\204\345\256\211\345\205\250\347\212\266\346\200\201.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、图、拓扑排序 - 难度:中等 +## 题目链接 + +- [0802. 找到最终的安全状态 - 力扣](https://leetcode.cn/problems/find-eventual-safe-states/) + ## 题目大意 **描述**:给定一个有向图 $graph$,其中 $graph[i]$ 是与节点 $i$ 相邻的节点列表,意味着从节点 $i$ 到节点 $graph[i]$ 中的每个节点都有一条有向边。 diff --git "a/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" "b/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" index a438c2d1..9d0fc81d 100644 --- "a/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" +++ "b/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" @@ -3,6 +3,10 @@ - 标签:并查集、数组、矩阵 - 难度:困难 +## 题目链接 + +- [0803. 打砖块 - 力扣](https://leetcode.cn/problems/bricks-falling-when-hit/) + ## 题目大意 **描述**:给定一个 $m \times n$ 大小的二元网格,其中 $1$ 表示砖块,$0$ 表示空白。砖块稳定(不会掉落)的前提是: diff --git "a/Solutions/0806. \345\206\231\345\255\227\347\254\246\344\270\262\351\234\200\350\246\201\347\232\204\350\241\214\346\225\260.md" "b/Solutions/0806. \345\206\231\345\255\227\347\254\246\344\270\262\351\234\200\350\246\201\347\232\204\350\241\214\346\225\260.md" index f7cd6248..e919b4cb 100644 --- "a/Solutions/0806. \345\206\231\345\255\227\347\254\246\344\270\262\351\234\200\350\246\201\347\232\204\350\241\214\346\225\260.md" +++ "b/Solutions/0806. \345\206\231\345\255\227\347\254\246\344\270\262\351\234\200\350\246\201\347\232\204\350\241\214\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、字符串 - 难度:简单 +## 题目链接 + +- [0806. 写字符串需要的行数 - 力扣](https://leetcode.cn/problems/number-of-lines-to-write-string/) + ## 题目大意 **描述**:给定一个数组 $widths$,其中 $words[0]$ 代表 `'a'` 需要的单位,$words[1]$ 代表 `'b'` 需要的单位,…,$words[25]$ 代表 `'z'` 需要的单位。再给定一个字符串 $s$,现在需要将字符串 $s$ 从左到右写到每一行上,每一行的最大宽度为 $100$ 个单位,如果在写某个字符的时候使改行超过了 $100$ 个单位,那么我们应该将这个字母写到下一行。 diff --git "a/Solutions/0811. \345\255\220\345\237\237\345\220\215\350\256\277\351\227\256\350\256\241\346\225\260.md" "b/Solutions/0811. \345\255\220\345\237\237\345\220\215\350\256\277\351\227\256\350\256\241\346\225\260.md" index 4b1f8a85..bae9c3be 100644 --- "a/Solutions/0811. \345\255\220\345\237\237\345\220\215\350\256\277\351\227\256\350\256\241\346\225\260.md" +++ "b/Solutions/0811. \345\255\220\345\237\237\345\220\215\350\256\277\351\227\256\350\256\241\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、字符串、计数 - 难度:中等 +## 题目链接 + +- [0811. 子域名访问计数 - 力扣](https://leetcode.cn/problems/subdomain-visit-count/) + ## 题目大意 **描述**:网站域名是由多个子域名构成的。 diff --git "a/Solutions/0814. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" "b/Solutions/0814. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" index a3bb1db0..745e0f1b 100644 --- "a/Solutions/0814. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" +++ "b/Solutions/0814. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0814. 二叉树剪枝 - 力扣](https://leetcode.cn/problems/binary-tree-pruning/) + ## 题目大意 给定一棵二叉树的根节点 `root`,树的每个节点值要么是 `0`,要么是 `1`。 diff --git "a/Solutions/0819. \346\234\200\345\270\270\350\247\201\347\232\204\345\215\225\350\257\215.md" "b/Solutions/0819. \346\234\200\345\270\270\350\247\201\347\232\204\345\215\225\350\257\215.md" index 9b6c794c..0fc0d9fe 100644 --- "a/Solutions/0819. \346\234\200\345\270\270\350\247\201\347\232\204\345\215\225\350\257\215.md" +++ "b/Solutions/0819. \346\234\200\345\270\270\350\247\201\347\232\204\345\215\225\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、计数 - 难度:简单 +## 题目链接 + +- [0819. 最常见的单词 - 力扣](https://leetcode.cn/problems/most-common-word/) + ## 题目大意 **描述**:给定一个字符串 $paragraph$ 表示段落,再给定搞一个禁用单词列表 $banned$。 diff --git "a/Solutions/0820. \345\215\225\350\257\215\347\232\204\345\216\213\347\274\251\347\274\226\347\240\201.md" "b/Solutions/0820. \345\215\225\350\257\215\347\232\204\345\216\213\347\274\251\347\274\226\347\240\201.md" index 56e8ea1e..fc720c22 100644 --- "a/Solutions/0820. \345\215\225\350\257\215\347\232\204\345\216\213\347\274\251\347\274\226\347\240\201.md" +++ "b/Solutions/0820. \345\215\225\350\257\215\347\232\204\345\216\213\347\274\251\347\274\226\347\240\201.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [0820. 单词的压缩编码 - 力扣](https://leetcode.cn/problems/short-encoding-of-words/) + ## 题目大意 给定一个单词数组 `words`。要求对 `words` 进行编码成一个助记字符串,用来帮助记忆。`words` 中拥有相同字符后缀的单词可以合并成一个单词,比如`time` 和 `me` 可以合并成 `time`。同时每个不能再合并的单词末尾以 `#` 为结束符,将所有合并后的单词排列起来就是一个助记字符串。 diff --git "a/Solutions/0821. \345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\350\267\235\347\246\273.md" "b/Solutions/0821. \345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\350\267\235\347\246\273.md" index d4932c85..4b93d813 100644 --- "a/Solutions/0821. \345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\350\267\235\347\246\273.md" +++ "b/Solutions/0821. \345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\350\267\235\347\246\273.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、字符串 - 难度:简单 +## 题目链接 + +- [0821. 字符的最短距离 - 力扣](https://leetcode.cn/problems/shortest-distance-to-a-character/) + ## 题目大意 **描述**:给定一个字符串 $s$ 和一个字符 $c$,并且 $c$ 是字符串 $s$ 中出现过的字符。 diff --git "a/Solutions/0824. \345\261\261\347\276\212\346\213\211\344\270\201\346\226\207.md" "b/Solutions/0824. \345\261\261\347\276\212\346\213\211\344\270\201\346\226\207.md" index 5f9d43ad..ed4d44dd 100644 --- "a/Solutions/0824. \345\261\261\347\276\212\346\213\211\344\270\201\346\226\207.md" +++ "b/Solutions/0824. \345\261\261\347\276\212\346\213\211\344\270\201\346\226\207.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:简单 +## 题目链接 + +- [0824. 山羊拉丁文 - 力扣](https://leetcode.cn/problems/goat-latin/) + ## 题目大意 **描述**:给定一个由若干单词组成的句子 $sentence$,单词之间由空格分隔。每个单词仅由大写和小写字母组成。 diff --git "a/Solutions/0830. \350\276\203\345\244\247\345\210\206\347\273\204\347\232\204\344\275\215\347\275\256.md" "b/Solutions/0830. \350\276\203\345\244\247\345\210\206\347\273\204\347\232\204\344\275\215\347\275\256.md" index 119e9ea5..55077faa 100644 --- "a/Solutions/0830. \350\276\203\345\244\247\345\210\206\347\273\204\347\232\204\344\275\215\347\275\256.md" +++ "b/Solutions/0830. \350\276\203\345\244\247\345\210\206\347\273\204\347\232\204\344\275\215\347\275\256.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:简单 +## 题目链接 + +- [0830. 较大分组的位置 - 力扣](https://leetcode.cn/problems/positions-of-large-groups/) + ## 题目大意 **描述**:给定由小写字母构成的字符串 $s$。字符串 $s$ 包含一些连续的相同字符所构成的分组。 diff --git "a/Solutions/0832. \347\277\273\350\275\254\345\233\276\345\203\217.md" "b/Solutions/0832. \347\277\273\350\275\254\345\233\276\345\203\217.md" index 378fd3e2..033d4854 100644 --- "a/Solutions/0832. \347\277\273\350\275\254\345\233\276\345\203\217.md" +++ "b/Solutions/0832. \347\277\273\350\275\254\345\233\276\345\203\217.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、矩阵、模拟 - 难度:简单 +## 题目链接 + +- [0832. 翻转图像 - 力扣](https://leetcode.cn/problems/flipping-an-image/) + ## 题目大意 给定一个二进制矩阵 `A` 代表图像,先将矩阵进行水平翻转,再进行翻转(将 0 变为 1,1 变为 0)。 diff --git "a/Solutions/0834. \346\240\221\344\270\255\350\267\235\347\246\273\344\271\213\345\222\214.md" "b/Solutions/0834. \346\240\221\344\270\255\350\267\235\347\246\273\344\271\213\345\222\214.md" index 4876ebe4..5e58e00a 100644 --- "a/Solutions/0834. \346\240\221\344\270\255\350\267\235\347\246\273\344\271\213\345\222\214.md" +++ "b/Solutions/0834. \346\240\221\344\270\255\350\267\235\347\246\273\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、图、动态规划 - 难度:困难 +## 题目链接 + +- [0834. 树中距离之和 - 力扣](https://leetcode.cn/problems/sum-of-distances-in-tree/) + ## 题目大意 **描述**:给定一个无向、连通的树。树中有 $n$ 个标记为 $0 \sim n - 1$ 的节点以及 $n - 1$ 条边 。 diff --git "a/Solutions/0836. \347\237\251\345\275\242\351\207\215\345\217\240.md" "b/Solutions/0836. \347\237\251\345\275\242\351\207\215\345\217\240.md" index d0e10522..073328a6 100644 --- "a/Solutions/0836. \347\237\251\345\275\242\351\207\215\345\217\240.md" +++ "b/Solutions/0836. \347\237\251\345\275\242\351\207\215\345\217\240.md" @@ -3,6 +3,10 @@ - 标签:几何、数学 - 难度:简单 +## 题目链接 + +- [0836. 矩形重叠 - 力扣](https://leetcode.cn/problems/rectangle-overlap/) + ## 题目大意 给定两个矩形的左下角、右上角坐标:[x1, y1, x2, y2]。[x1, y1] 表示左下角坐标,[x2, y2] 表示右上角坐标。如果两个矩形相交面积大于 0,则称两矩形重叠。 diff --git "a/Solutions/0841. \351\222\245\345\214\231\345\222\214\346\210\277\351\227\264.md" "b/Solutions/0841. \351\222\245\345\214\231\345\222\214\346\210\277\351\227\264.md" index 278b7ffc..04e1dd0c 100644 --- "a/Solutions/0841. \351\222\245\345\214\231\345\222\214\346\210\277\351\227\264.md" +++ "b/Solutions/0841. \351\222\245\345\214\231\345\222\214\346\210\277\351\227\264.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、图 - 难度:中等 +## 题目链接 + +- [0841. 钥匙和房间 - 力扣](https://leetcode.cn/problems/keys-and-rooms/) + ## 题目大意 **描述**:有 `n` 个房间,编号为 `0` ~ `n - 1`,每个房间都有若干把钥匙,每把钥匙上都有一个编号,可以开启对应房间号的门。最初,除了 `0` 号房间外其他房间的门都是锁着的。 diff --git "a/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" index e1c38a2f..d385b6b4 100644 --- "a/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:栈、双指针、字符串、模拟 - 难度:简单 +## 题目链接 + +- [0844. 比较含退格的字符串 - 力扣](https://leetcode.cn/problems/backspace-string-compare/) + ## 题目大意 给定 `s` 和 `t` 两个字符串。字符串中的 `#` 代表退格字符。 diff --git "a/Solutions/0845. \346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\351\225\277\345\261\261\350\204\211.md" "b/Solutions/0845. \346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\351\225\277\345\261\261\350\204\211.md" index 4212a8fd..52d618b8 100644 --- "a/Solutions/0845. \346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\351\225\277\345\261\261\350\204\211.md" +++ "b/Solutions/0845. \346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\351\225\277\345\261\261\350\204\211.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、动态规划、枚举 - 难度:中等 +## 题目链接 + +- [0845. 数组中的最长山脉 - 力扣](https://leetcode.cn/problems/longest-mountain-in-array/) + ## 题目大意 给定一个整数数组 `arr`。 diff --git "a/Solutions/0846. \344\270\200\346\211\213\351\241\272\345\255\220.md" "b/Solutions/0846. \344\270\200\346\211\213\351\241\272\345\255\220.md" index e4d38fd1..355c94ba 100644 --- "a/Solutions/0846. \344\270\200\346\211\213\351\241\272\345\255\220.md" +++ "b/Solutions/0846. \344\270\200\346\211\213\351\241\272\345\255\220.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、哈希表、排序 - 难度:中等 +## 题目链接 + +- [0846. 一手顺子 - 力扣](https://leetcode.cn/problems/hand-of-straights/) + ## 题目大意 **描述**:`Alice` 手中有一把牌,她想要重新排列这些牌,分成若干组,使每一组的牌都是顺子(即由连续的牌构成),并且每一组的牌数都是 `groupSize`。现在给定一个整数数组 `hand`,其中 `hand[i]` 是表示第 `i` 张牌的数值,和一个整数 `groupSize`。 diff --git "a/Solutions/0847. \350\256\277\351\227\256\346\211\200\346\234\211\350\212\202\347\202\271\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" "b/Solutions/0847. \350\256\277\351\227\256\346\211\200\346\234\211\350\212\202\347\202\271\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" index bc73779f..e98c00f3 100644 --- "a/Solutions/0847. \350\256\277\351\227\256\346\211\200\346\234\211\350\212\202\347\202\271\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" +++ "b/Solutions/0847. \350\256\277\351\227\256\346\211\200\346\234\211\350\212\202\347\202\271\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:位运算、广度优先搜索、图、动态规划、状态压缩 - 难度:困难 +## 题目链接 + +- [0847. 访问所有节点的最短路径 - 力扣](https://leetcode.cn/problems/shortest-path-visiting-all-nodes/) + ## 题目大意 **描述**:存在一个由 $n$ 个节点组成的无向连通图,图中节点编号为 $0 \sim n - 1$。现在给定一个数组 $graph$ 表示这个图。其中,$graph[i]$ 是一个列表,由所有与节点 $i$ 直接相连的节点组成。 diff --git "a/Solutions/0850. \347\237\251\345\275\242\351\235\242\347\247\257 II.md" "b/Solutions/0850. \347\237\251\345\275\242\351\235\242\347\247\257 II.md" index fc881a04..db5273ee 100644 --- "a/Solutions/0850. \347\237\251\345\275\242\351\235\242\347\247\257 II.md" +++ "b/Solutions/0850. \347\237\251\345\275\242\351\235\242\347\247\257 II.md" @@ -3,6 +3,10 @@ - 标签:线段树、数组、有序集合、扫描线 - 难度:困难 +## 题目链接 + +- [0850. 矩形面积 II - 力扣](https://leetcode.cn/problems/rectangle-area-ii/) + ## 题目大意 **描述**:给定一个二维矩形列表 `rectangles`,其中 `rectangle[i] = [x1, y1, x2, y2]` 表示第 `i` 个矩形,`(x1, y1)` 是第 `i` 个矩形左下角的坐标,`(x2, y2)` 是第 `i` 个矩形右上角的坐标。。 diff --git "a/Solutions/0851. \345\226\247\351\227\271\345\222\214\345\257\214\346\234\211.md" "b/Solutions/0851. \345\226\247\351\227\271\345\222\214\345\257\214\346\234\211.md" index 45ee7ba8..eddcf7fd 100644 --- "a/Solutions/0851. \345\226\247\351\227\271\345\222\214\345\257\214\346\234\211.md" +++ "b/Solutions/0851. \345\226\247\351\227\271\345\222\214\345\257\214\346\234\211.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、图、拓扑排序、数组 - 难度:中等 +## 题目链接 + +- [0851. 喧闹和富有 - 力扣](https://leetcode.cn/problems/loud-and-rich/) + ## 题目大意 **描述**:有一组 `n` 个人作为实验对象,从 `0` 到 `n - 1` 编号,其中每个人都有不同数目的钱,以及不同程度的安静值 `quietness`。 diff --git "a/Solutions/0852. \345\261\261\350\204\211\346\225\260\347\273\204\347\232\204\345\263\260\351\241\266\347\264\242\345\274\225.md" "b/Solutions/0852. \345\261\261\350\204\211\346\225\260\347\273\204\347\232\204\345\263\260\351\241\266\347\264\242\345\274\225.md" index b519793b..f14c7750 100644 --- "a/Solutions/0852. \345\261\261\350\204\211\346\225\260\347\273\204\347\232\204\345\263\260\351\241\266\347\264\242\345\274\225.md" +++ "b/Solutions/0852. \345\261\261\350\204\211\346\225\260\347\273\204\347\232\204\345\263\260\351\241\266\347\264\242\345\274\225.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:中等 +## 题目链接 + +- [0852. 山脉数组的峰顶索引 - 力扣](https://leetcode.cn/problems/peak-index-in-a-mountain-array/) + ## 题目大意 **描述**:给定由整数组成的山脉数组 $arr$。 diff --git "a/Solutions/0860. \346\237\240\346\252\254\346\260\264\346\211\276\351\233\266.md" "b/Solutions/0860. \346\237\240\346\252\254\346\260\264\346\211\276\351\233\266.md" index 1d2ae6fd..b6584e64 100644 --- "a/Solutions/0860. \346\237\240\346\252\254\346\260\264\346\211\276\351\233\266.md" +++ "b/Solutions/0860. \346\237\240\346\252\254\346\260\264\346\211\276\351\233\266.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组 - 难度:简单 +## 题目链接 + +- [0860. 柠檬水找零 - 力扣](https://leetcode.cn/problems/lemonade-change/) + ## 题目大意 **描述**:一杯柠檬水的售价是 $5$ 美元。现在有 $n$ 个顾客排队购买柠檬水,每人只能购买一杯。顾客支付的钱面额有 $5$ 美元、$10$ 美元、$20$ 美元。必须给每个顾客正确找零(就是每位顾客需要向你支付 $5$ 美元,多出的钱要找还回顾客)。 diff --git "a/Solutions/0861. \347\277\273\350\275\254\347\237\251\351\230\265\345\220\216\347\232\204\345\276\227\345\210\206.md" "b/Solutions/0861. \347\277\273\350\275\254\347\237\251\351\230\265\345\220\216\347\232\204\345\276\227\345\210\206.md" index 29a38e5f..18f2f707 100644 --- "a/Solutions/0861. \347\277\273\350\275\254\347\237\251\351\230\265\345\220\216\347\232\204\345\276\227\345\210\206.md" +++ "b/Solutions/0861. \347\277\273\350\275\254\347\237\251\351\230\265\345\220\216\347\232\204\345\276\227\345\210\206.md" @@ -3,6 +3,10 @@ - 标签:贪心、位运算、数组、矩阵 - 难度:中等 +## 题目链接 + +- [0861. 翻转矩阵后的得分 - 力扣](https://leetcode.cn/problems/score-after-flipping-matrix/) + ## 题目大意 **描述**:给定一个二维矩阵 `A`,其中每个元素的值为 `0` 或 `1`。 diff --git "a/Solutions/0867. \350\275\254\347\275\256\347\237\251\351\230\265.md" "b/Solutions/0867. \350\275\254\347\275\256\347\237\251\351\230\265.md" index c5135c6a..cfeac41c 100644 --- "a/Solutions/0867. \350\275\254\347\275\256\347\237\251\351\230\265.md" +++ "b/Solutions/0867. \350\275\254\347\275\256\347\237\251\351\230\265.md" @@ -3,6 +3,10 @@ - 标签:数组、矩阵、模拟 - 难度:简单 +## 题目链接 + +- [0867. 转置矩阵 - 力扣](https://leetcode.cn/problems/transpose-matrix/) + ## 题目大意 给定一个二维数组 matrix。返回 matrix 的转置矩阵。 diff --git "a/Solutions/0872. \345\217\266\345\255\220\347\233\270\344\274\274\347\232\204\346\240\221.md" "b/Solutions/0872. \345\217\266\345\255\220\347\233\270\344\274\274\347\232\204\346\240\221.md" index b55a3318..ff0e1a72 100644 --- "a/Solutions/0872. \345\217\266\345\255\220\347\233\270\344\274\274\347\232\204\346\240\221.md" +++ "b/Solutions/0872. \345\217\266\345\255\220\347\233\270\344\274\274\347\232\204\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0872. 叶子相似的树 - 力扣](https://leetcode.cn/problems/leaf-similar-trees/) + ## 题目大意 将一棵二叉树树上所有的叶子,按照从左到右的顺序排列起来就形成了一个「叶值序列」。如果两棵二叉树的叶值序列是相同的,我们就认为它们是叶相似的。 diff --git "a/Solutions/0873. \346\234\200\351\225\277\347\232\204\346\226\220\346\263\242\351\202\243\345\245\221\345\255\220\345\272\217\345\210\227\347\232\204\351\225\277\345\272\246.md" "b/Solutions/0873. \346\234\200\351\225\277\347\232\204\346\226\220\346\263\242\351\202\243\345\245\221\345\255\220\345\272\217\345\210\227\347\232\204\351\225\277\345\272\246.md" index 0db68bfd..97aef39c 100644 --- "a/Solutions/0873. \346\234\200\351\225\277\347\232\204\346\226\220\346\263\242\351\202\243\345\245\221\345\255\220\345\272\217\345\210\227\347\232\204\351\225\277\345\272\246.md" +++ "b/Solutions/0873. \346\234\200\351\225\277\347\232\204\346\226\220\346\263\242\351\202\243\345\245\221\345\255\220\345\272\217\345\210\227\347\232\204\351\225\277\345\272\246.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、动态规划 - 难度:中等 +## 题目链接 + +- [0873. 最长的斐波那契子序列的长度 - 力扣](https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/) + ## 题目大意 **描述**:给定一个严格递增的正整数数组 $arr$。 diff --git "a/Solutions/0875. \347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.md" "b/Solutions/0875. \347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.md" index f942c661..33d6d34d 100644 --- "a/Solutions/0875. \347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.md" +++ "b/Solutions/0875. \347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:中等 +## 题目链接 + +- [0875. 爱吃香蕉的珂珂 - 力扣](https://leetcode.cn/problems/koko-eating-bananas/) + ## 题目大意 给定一个数组 `piles` 代表 `n` 堆香蕉。其中 `piles[i]` 表示第 `i` 堆香蕉的个数。再给定一个整数 `h` ,表示最多可以在 `h` 小时内吃完所有香蕉。珂珂决定以速度每小时 `k`(未知)根的速度吃香蕉。每一个小时,她讲选择其中一堆香蕉,从中吃掉 `k` 根。如果这堆香蕉少于 `k` 根,珂珂将在这一小时吃掉这堆的所有香蕉,并且这一小时不会再吃其他堆的香蕉。 diff --git "a/Solutions/0876. \351\223\276\350\241\250\347\232\204\344\270\255\351\227\264\347\273\223\347\202\271.md" "b/Solutions/0876. \351\223\276\350\241\250\347\232\204\344\270\255\351\227\264\347\273\223\347\202\271.md" index 7effbd71..3ad07f33 100644 --- "a/Solutions/0876. \351\223\276\350\241\250\347\232\204\344\270\255\351\227\264\347\273\223\347\202\271.md" +++ "b/Solutions/0876. \351\223\276\350\241\250\347\232\204\344\270\255\351\227\264\347\273\223\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:链表、双指针 - 难度:简单 +## 题目链接 + +- [0876. 链表的中间结点 - 力扣](https://leetcode.cn/problems/middle-of-the-linked-list/) + ## 题目大意 **描述**:给定一个单链表的头节点 `head`。 diff --git "a/Solutions/0877. \347\237\263\345\255\220\346\270\270\346\210\217.md" "b/Solutions/0877. \347\237\263\345\255\220\346\270\270\346\210\217.md" index 9feacac2..eccb3b22 100644 --- "a/Solutions/0877. \347\237\263\345\255\220\346\270\270\346\210\217.md" +++ "b/Solutions/0877. \347\237\263\345\255\220\346\270\270\346\210\217.md" @@ -3,6 +3,10 @@ - 标签:数组、数学、动态规划、博弈 - 难度:中等 +## 题目链接 + +- [0877. 石子游戏 - 力扣](https://leetcode.cn/problems/stone-game/) + ## 题目大意 亚历克斯和李在玩石子游戏。总共有偶数堆石子,每堆都有正整数颗石子 `piles[i]`,总共的石子数为奇数 。每回合,玩家从开始位置或者结束位置取走一整堆石子。直到没有石子堆为止结束游戏,最终手中石子颗数多的玩家获胜。假设亚历克斯和李每回合都能发挥出最佳水平,并且亚历克斯先开始。 diff --git "a/Solutions/0881. \346\225\221\347\224\237\350\211\207.md" "b/Solutions/0881. \346\225\221\347\224\237\350\211\207.md" index 37000d17..1a40fb8e 100644 --- "a/Solutions/0881. \346\225\221\347\224\237\350\211\207.md" +++ "b/Solutions/0881. \346\225\221\347\224\237\350\211\207.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、双指针、排序 - 难度:中等 +## 题目链接 + +- [0881. 救生艇 - 力扣](https://leetcode.cn/problems/boats-to-save-people/) + ## 题目大意 **描述**:给定一个整数数组 `people` 代表每个人的体重,其中第 `i` 个人的体重为 `people[i]`。再给定一个整数 `limit`,代表每艘船可以承载的最大重量。每艘船最多可同时载两人,但条件是这些人的重量之和最多为 `limit`。 diff --git "a/Solutions/0884. \344\270\244\345\217\245\350\257\235\344\270\255\347\232\204\344\270\215\345\270\270\350\247\201\345\215\225\350\257\215.md" "b/Solutions/0884. \344\270\244\345\217\245\350\257\235\344\270\255\347\232\204\344\270\215\345\270\270\350\247\201\345\215\225\350\257\215.md" index 3cd7c522..af057dcd 100644 --- "a/Solutions/0884. \344\270\244\345\217\245\350\257\235\344\270\255\347\232\204\344\270\215\345\270\270\350\247\201\345\215\225\350\257\215.md" +++ "b/Solutions/0884. \344\270\244\345\217\245\350\257\235\344\270\255\347\232\204\344\270\215\345\270\270\350\247\201\345\215\225\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串 - 难度:简单 +## 题目链接 + +- [0884. 两句话中的不常见单词 - 力扣](https://leetcode.cn/problems/uncommon-words-from-two-sentences/) + ## 题目大意 **描述**:给定两个字符串 $s1$ 和 $s2$ ,分别表示两个句子。 diff --git "a/Solutions/0886. \345\217\257\350\203\275\347\232\204\344\272\214\345\210\206\346\263\225.md" "b/Solutions/0886. \345\217\257\350\203\275\347\232\204\344\272\214\345\210\206\346\263\225.md" index a165ac31..0eeef269 100644 --- "a/Solutions/0886. \345\217\257\350\203\275\347\232\204\344\272\214\345\210\206\346\263\225.md" +++ "b/Solutions/0886. \345\217\257\350\203\275\347\232\204\344\272\214\345\210\206\346\263\225.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 +## 题目链接 + +- [0886. 可能的二分法 - 力扣](https://leetcode.cn/problems/possible-bipartition/) + ## 题目大意 把 n 个人(编号为 1, 2, ... , n)分为任意大小的两组。每个人都可能不喜欢其他人,那么他们不应该属于同一组。 diff --git "a/Solutions/0887. \351\270\241\350\233\213\346\216\211\350\220\275.md" "b/Solutions/0887. \351\270\241\350\233\213\346\216\211\350\220\275.md" index c3ebb86e..e1145faa 100644 --- "a/Solutions/0887. \351\270\241\350\233\213\346\216\211\350\220\275.md" +++ "b/Solutions/0887. \351\270\241\350\233\213\346\216\211\350\220\275.md" @@ -3,6 +3,10 @@ - 标签:数学、二分查找、动态规划 - 难度:困难 +## 题目链接 + +- [0887. 鸡蛋掉落 - 力扣](https://leetcode.cn/problems/super-egg-drop/) + ## 题目大意 **描述**:给定一个整数 `k` 和整数 `n`,分别代表 `k` 枚鸡蛋和可以使用的一栋从第 `1` 层到第 `n` 层楼的建筑。 diff --git "a/Solutions/0889. \346\240\271\346\215\256\345\211\215\345\272\217\345\222\214\345\220\216\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" "b/Solutions/0889. \346\240\271\346\215\256\345\211\215\345\272\217\345\222\214\345\220\216\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" index ef6e60e6..dc5d2b0b 100644 --- "a/Solutions/0889. \346\240\271\346\215\256\345\211\215\345\272\217\345\222\214\345\220\216\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/0889. \346\240\271\346\215\256\345\211\215\345\272\217\345\222\214\345\220\216\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、数组、哈希表、分治、二叉树 - 难度:中等 +## 题目链接 + +- [0889. 根据前序和后序遍历构造二叉树 - 力扣](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) + ## 题目大意 **描述**:给定一棵无重复值二叉树的前序遍历结果 `preorder` 和后序遍历结果 `postorder`。 diff --git "a/Solutions/0897. \351\200\222\345\242\236\351\241\272\345\272\217\346\220\234\347\264\242\346\240\221.md" "b/Solutions/0897. \351\200\222\345\242\236\351\241\272\345\272\217\346\220\234\347\264\242\346\240\221.md" index d247017d..75f44679 100644 --- "a/Solutions/0897. \351\200\222\345\242\236\351\241\272\345\272\217\346\220\234\347\264\242\346\240\221.md" +++ "b/Solutions/0897. \351\200\222\345\242\236\351\241\272\345\272\217\346\220\234\347\264\242\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:栈、树、深度优先搜索、二叉搜索树、二叉树 - 难度:简单 +## 题目链接 + +- [0897. 递增顺序搜索树 - 力扣](https://leetcode.cn/problems/increasing-order-search-tree/) + ## 题目大意 给定一棵二叉搜索树的根节点 `root`。 diff --git "a/Solutions/0901. \350\202\241\347\245\250\344\273\267\346\240\274\350\267\250\345\272\246.md" "b/Solutions/0901. \350\202\241\347\245\250\344\273\267\346\240\274\350\267\250\345\272\246.md" index 7f1c2cc8..b0fc36d8 100644 --- "a/Solutions/0901. \350\202\241\347\245\250\344\273\267\346\240\274\350\267\250\345\272\246.md" +++ "b/Solutions/0901. \350\202\241\347\245\250\344\273\267\346\240\274\350\267\250\345\272\246.md" @@ -3,6 +3,10 @@ - 标签:栈、设计、数据流、单调栈 - 难度:中等 +## 题目链接 + +- [0901. 股票价格跨度 - 力扣](https://leetcode.cn/problems/online-stock-span/) + ## 题目大意 要求:编写一个 `StockSpanner` 类,用于收集某些股票的每日报价,并返回该股票当日价格的跨度。 diff --git "a/Solutions/0902. \346\234\200\345\244\247\344\270\272 N \347\232\204\346\225\260\345\255\227\347\273\204\345\220\210.md" "b/Solutions/0902. \346\234\200\345\244\247\344\270\272 N \347\232\204\346\225\260\345\255\227\347\273\204\345\220\210.md" index 18021e54..484d5653 100644 --- "a/Solutions/0902. \346\234\200\345\244\247\344\270\272 N \347\232\204\346\225\260\345\255\227\347\273\204\345\220\210.md" +++ "b/Solutions/0902. \346\234\200\345\244\247\344\270\272 N \347\232\204\346\225\260\345\255\227\347\273\204\345\220\210.md" @@ -3,6 +3,10 @@ - 标签:数组、数学、字符串、二分查找、动态规划 - 难度:困难 +## 题目链接 + +- [0902. 最大为 N 的数字组合 - 力扣](https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/) + ## 题目大意 **描述**:给定一个按非递减序列排列的数字数组 $digits$。我们可以使用任意次数的 $digits[i]$ 来写数字。例如,如果 `digits = ["1", "3", "5"]`,我们可以写数字,如 `"13"`, `"551"`, 和 `"1351315"`。 diff --git "a/Solutions/0904. \346\260\264\346\236\234\346\210\220\347\257\256.md" "b/Solutions/0904. \346\260\264\346\236\234\346\210\220\347\257\256.md" index 9dcf0110..95f2e405 100644 --- "a/Solutions/0904. \346\260\264\346\236\234\346\210\220\347\257\256.md" +++ "b/Solutions/0904. \346\260\264\346\236\234\346\210\220\347\257\256.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、滑动窗口 - 难度:中等 +## 题目链接 + +- [0904. 水果成篮 - 力扣](https://leetcode.cn/problems/fruit-into-baskets/) + ## 题目大意 给定一个数组 `fruits`。其中 `fruits[i]` 表示第 `i` 棵树会产生 `fruits[i]` 型水果。 diff --git "a/Solutions/0908. \346\234\200\345\260\217\345\267\256\345\200\274 I.md" "b/Solutions/0908. \346\234\200\345\260\217\345\267\256\345\200\274 I.md" index 54130626..95852a7c 100644 --- "a/Solutions/0908. \346\234\200\345\260\217\345\267\256\345\200\274 I.md" +++ "b/Solutions/0908. \346\234\200\345\260\217\345\267\256\345\200\274 I.md" @@ -3,6 +3,10 @@ - 标签:数组、数学 - 难度:简单 +## 题目链接 + +- [0908. 最小差值 I - 力扣](https://leetcode.cn/problems/smallest-range-i/) + ## 题目大意 **描述**:给定一个整数数组 `nums`,和一个整数 `k`。给数组中的每个元素 `nums[i]` 都加上一个任意数字 `x` (`-k <= x <= k`),从而得到一个新数组 `result`。 diff --git "a/Solutions/0912. \346\216\222\345\272\217\346\225\260\347\273\204.md" "b/Solutions/0912. \346\216\222\345\272\217\346\225\260\347\273\204.md" index 4b9a0812..afb94090 100644 --- "a/Solutions/0912. \346\216\222\345\272\217\346\225\260\347\273\204.md" +++ "b/Solutions/0912. \346\216\222\345\272\217\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 - 难度:中等 +## 题目链接 + +- [0912. 排序数组 - 力扣](https://leetcode.cn/problems/sort-an-array/) + ## 题目大意 **描述**:给定一个整数数组 $nums$。 diff --git "a/Solutions/0918. \347\216\257\345\275\242\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" "b/Solutions/0918. \347\216\257\345\275\242\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" index 5846d299..9409a3f2 100644 --- "a/Solutions/0918. \347\216\257\345\275\242\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" +++ "b/Solutions/0918. \347\216\257\345\275\242\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:队列、数组、分治、动态规划、单调队列 - 难度:中等 +## 题目链接 + +- [0918. 环形子数组的最大和 - 力扣](https://leetcode.cn/problems/maximum-sum-circular-subarray/) + ## 题目大意 给定一个环形整数数组 nums,数组 nums 的尾部和头部是相连状态。求环形数组 nums 的非空子数组的最大和(子数组中每个位置元素最多出现一次)。 diff --git "a/Solutions/0919. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\217\222\345\205\245\345\231\250.md" "b/Solutions/0919. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\217\222\345\205\245\345\231\250.md" index 49ced4d9..3605503b 100644 --- "a/Solutions/0919. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\217\222\345\205\245\345\231\250.md" +++ "b/Solutions/0919. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\217\222\345\205\245\345\231\250.md" @@ -3,6 +3,10 @@ - 标签:树、广度优先搜索、设计、二叉树 - 难度:中等 +## 题目链接 + +- [0919. 完全二叉树插入器 - 力扣](https://leetcode.cn/problems/complete-binary-tree-inserter/) + ## 题目大意 要求:设计一个用完全二叉树初始化的数据结构 `CBTInserter`,并支持以下几种操作: diff --git "a/Solutions/0921. \344\275\277\346\213\254\345\217\267\346\234\211\346\225\210\347\232\204\346\234\200\345\260\221\346\267\273\345\212\240.md" "b/Solutions/0921. \344\275\277\346\213\254\345\217\267\346\234\211\346\225\210\347\232\204\346\234\200\345\260\221\346\267\273\345\212\240.md" index 30ecc6b7..63037724 100644 --- "a/Solutions/0921. \344\275\277\346\213\254\345\217\267\346\234\211\346\225\210\347\232\204\346\234\200\345\260\221\346\267\273\345\212\240.md" +++ "b/Solutions/0921. \344\275\277\346\213\254\345\217\267\346\234\211\346\225\210\347\232\204\346\234\200\345\260\221\346\267\273\345\212\240.md" @@ -3,6 +3,10 @@ - 标签:栈、贪心、字符串 - 难度:中等 +## 题目链接 + +- [0921. 使括号有效的最少添加 - 力扣](https://leetcode.cn/problems/minimum-add-to-make-parentheses-valid/) + ## 题目大意 **描述**:给定一个括号字符串 `s`,可以在字符串的任何位置插入一个括号。 diff --git "a/Solutions/0925. \351\225\277\346\214\211\351\224\256\345\205\245.md" "b/Solutions/0925. \351\225\277\346\214\211\351\224\256\345\205\245.md" index e7a65a90..e7f05d7d 100644 --- "a/Solutions/0925. \351\225\277\346\214\211\351\224\256\345\205\245.md" +++ "b/Solutions/0925. \351\225\277\346\214\211\351\224\256\345\205\245.md" @@ -3,6 +3,10 @@ - 标签:双指针、字符串 - 难度:简单 +## 题目链接 + +- [0925. 长按键入 - 力扣](https://leetcode.cn/problems/long-pressed-name/) + ## 题目大意 **描述**:你的朋友正在使用键盘输入他的名字 $name$。偶尔,在键入字符时,按键可能会被长按,而字符可能被输入 $1$ 次或多次。 diff --git "a/Solutions/0932. \346\274\202\344\272\256\346\225\260\347\273\204.md" "b/Solutions/0932. \346\274\202\344\272\256\346\225\260\347\273\204.md" index 9c99e7a7..2740e683 100644 --- "a/Solutions/0932. \346\274\202\344\272\256\346\225\260\347\273\204.md" +++ "b/Solutions/0932. \346\274\202\344\272\256\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、数学、分治 - 难度:中等 +## 题目链接 + +- [0932. 漂亮数组 - 力扣](https://leetcode.cn/problems/beautiful-array/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/0933. \346\234\200\350\277\221\347\232\204\350\257\267\346\261\202\346\254\241\346\225\260.md" "b/Solutions/0933. \346\234\200\350\277\221\347\232\204\350\257\267\346\261\202\346\254\241\346\225\260.md" index 3578a7b0..cfb235d0 100644 --- "a/Solutions/0933. \346\234\200\350\277\221\347\232\204\350\257\267\346\261\202\346\254\241\346\225\260.md" +++ "b/Solutions/0933. \346\234\200\350\277\221\347\232\204\350\257\267\346\261\202\346\254\241\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:设计、队列、数据流 - 难度:简单 +## 题目链接 + +- [0933. 最近的请求次数 - 力扣](https://leetcode.cn/problems/number-of-recent-calls/) + ## 题目大意 要求:实现一个用来计算特定时间范围内的最近请求的 `RecentCounter` 类: diff --git "a/Solutions/0935. \351\252\221\345\243\253\346\213\250\345\217\267\345\231\250.md" "b/Solutions/0935. \351\252\221\345\243\253\346\213\250\345\217\267\345\231\250.md" index 9b20ed21..69d6f2db 100644 --- "a/Solutions/0935. \351\252\221\345\243\253\346\213\250\345\217\267\345\231\250.md" +++ "b/Solutions/0935. \351\252\221\345\243\253\346\213\250\345\217\267\345\231\250.md" @@ -3,6 +3,10 @@ - 标签:动态规划 - 难度:中等 +## 题目链接 + +- [0935. 骑士拨号器 - 力扣](https://leetcode.cn/problems/knight-dialer/) + ## 题目大意 **描述**:象棋骑士可以垂直移动两个方格,水平移动一个方格,或者水平移动两个方格,垂直移动一个方格(两者都形成一个 $L$ 的形状),如下图所示。 diff --git "a/Solutions/0938. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\350\214\203\345\233\264\345\222\214.md" "b/Solutions/0938. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\350\214\203\345\233\264\345\222\214.md" index 6c4a5e37..1e517fd4 100644 --- "a/Solutions/0938. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\350\214\203\345\233\264\345\222\214.md" +++ "b/Solutions/0938. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\350\214\203\345\233\264\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:简单 +## 题目链接 + +- [0938. 二叉搜索树的范围和 - 力扣](https://leetcode.cn/problems/range-sum-of-bst/) + ## 题目大意 给定一个二叉搜索树,和一个范围 [low, high]。求范围 [low, high] 之间所有节点的值的和。 diff --git "a/Solutions/0946. \351\252\214\350\257\201\346\240\210\345\272\217\345\210\227.md" "b/Solutions/0946. \351\252\214\350\257\201\346\240\210\345\272\217\345\210\227.md" index b089a4df..b30210b3 100644 --- "a/Solutions/0946. \351\252\214\350\257\201\346\240\210\345\272\217\345\210\227.md" +++ "b/Solutions/0946. \351\252\214\350\257\201\346\240\210\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:栈、数组、模拟 - 难度:中等 +## 题目链接 + +- [0946. 验证栈序列 - 力扣](https://leetcode.cn/problems/validate-stack-sequences/) + ## 题目大意 **描述**:给定两个整数序列 `pushed` 和 `popped`,每个序列中的值都不重复。 diff --git "a/Solutions/0947. \347\247\273\351\231\244\346\234\200\345\244\232\347\232\204\345\220\214\350\241\214\346\210\226\345\220\214\345\210\227\347\237\263\345\244\264.md" "b/Solutions/0947. \347\247\273\351\231\244\346\234\200\345\244\232\347\232\204\345\220\214\350\241\214\346\210\226\345\220\214\345\210\227\347\237\263\345\244\264.md" index c4d82edf..4b874a4b 100644 --- "a/Solutions/0947. \347\247\273\351\231\244\346\234\200\345\244\232\347\232\204\345\220\214\350\241\214\346\210\226\345\220\214\345\210\227\347\237\263\345\244\264.md" +++ "b/Solutions/0947. \347\247\273\351\231\244\346\234\200\345\244\232\347\232\204\345\220\214\350\241\214\346\210\226\345\220\214\345\210\227\347\237\263\345\244\264.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、并查集、图 - 难度:中等 +## 题目链接 + +- [0947. 移除最多的同行或同列石头 - 力扣](https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/) + ## 题目大意 **描述**:二维平面中有 $n$ 块石头,每块石头都在整数坐标点上,且每个坐标点上最多只能有一块石头。如果一块石头的同行或者同列上有其他石头存在,那么就可以移除这块石头。 diff --git "a/Solutions/0953. \351\252\214\350\257\201\345\244\226\346\230\237\350\257\255\350\257\215\345\205\270.md" "b/Solutions/0953. \351\252\214\350\257\201\345\244\226\346\230\237\350\257\255\350\257\215\345\205\270.md" index 6cd0bb9e..95633bc0 100644 --- "a/Solutions/0953. \351\252\214\350\257\201\345\244\226\346\230\237\350\257\255\350\257\215\345\205\270.md" +++ "b/Solutions/0953. \351\252\214\350\257\201\345\244\226\346\230\237\350\257\255\350\257\215\345\205\270.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、字符串 - 难度:简单 +## 题目链接 + +- [0953. 验证外星语词典 - 力扣](https://leetcode.cn/problems/verifying-an-alien-dictionary/) + ## 题目大意 给定一组用外星语书写的单词字符串数组 `words`,以及表示外星字母表的顺序的字符串 `order` 。 diff --git "a/Solutions/0958. \344\272\214\345\217\211\346\240\221\347\232\204\345\256\214\345\205\250\346\200\247\346\243\200\351\252\214.md" "b/Solutions/0958. \344\272\214\345\217\211\346\240\221\347\232\204\345\256\214\345\205\250\346\200\247\346\243\200\351\252\214.md" index 644892ec..501174d1 100644 --- "a/Solutions/0958. \344\272\214\345\217\211\346\240\221\347\232\204\345\256\214\345\205\250\346\200\247\346\243\200\351\252\214.md" +++ "b/Solutions/0958. \344\272\214\345\217\211\346\240\221\347\232\204\345\256\214\345\205\250\346\200\247\346\243\200\351\252\214.md" @@ -3,6 +3,10 @@ - 标签:树、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [0958. 二叉树的完全性检验 - 力扣](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) + ## 题目大意 **描述**:给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/0959. \347\224\261\346\226\234\346\235\240\345\210\222\345\210\206\345\214\272\345\237\237.md" "b/Solutions/0959. \347\224\261\346\226\234\346\235\240\345\210\222\345\210\206\345\214\272\345\237\237.md" index dc78812a..97403730 100644 --- "a/Solutions/0959. \347\224\261\346\226\234\346\235\240\345\210\222\345\210\206\345\214\272\345\237\237.md" +++ "b/Solutions/0959. \347\224\261\346\226\234\346\235\240\345\210\222\345\210\206\345\214\272\345\237\237.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 +## 题目链接 + +- [0959. 由斜杠划分区域 - 力扣](https://leetcode.cn/problems/regions-cut-by-slashes/) + ## 题目大意 **描述**:在由 $1 \times 1$ 方格组成的 $n \times n$ 网格 $grid$ 中,每个 $1 \times 1$ 方块由 `'/'`、`'\'` 或 `' '` 构成。这些字符会将方块划分为一些共边的区域。 diff --git "a/Solutions/0968. \347\233\221\346\216\247\344\272\214\345\217\211\346\240\221.md" "b/Solutions/0968. \347\233\221\346\216\247\344\272\214\345\217\211\346\240\221.md" index cd0269f5..b5f7ea84 100644 --- "a/Solutions/0968. \347\233\221\346\216\247\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/0968. \347\233\221\346\216\247\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、动态规划、二叉树 - 难度:困难 +## 题目链接 + +- [0968. 监控二叉树 - 力扣](https://leetcode.cn/problems/binary-tree-cameras/) + ## 题目大意 给定一个二叉树,需要在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父节点、自身及其直接子节点。 diff --git "a/Solutions/0973. \346\234\200\346\216\245\350\277\221\345\216\237\347\202\271\347\232\204 K \344\270\252\347\202\271.md" "b/Solutions/0973. \346\234\200\346\216\245\350\277\221\345\216\237\347\202\271\347\232\204 K \344\270\252\347\202\271.md" index b6363d2b..ae462195 100644 --- "a/Solutions/0973. \346\234\200\346\216\245\350\277\221\345\216\237\347\202\271\347\232\204 K \344\270\252\347\202\271.md" +++ "b/Solutions/0973. \346\234\200\346\216\245\350\277\221\345\216\237\347\202\271\347\232\204 K \344\270\252\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:几何、数组、数学、分治、快速选择、排序、堆(优先队列) - 难度:中等 +## 题目链接 + +- [0973. 最接近原点的 K 个点 - 力扣](https://leetcode.cn/problems/k-closest-points-to-origin/) + ## 题目大意 给定一个由由平面上的点组成的列表 `points`,再给定一个整数 `K`。 diff --git "a/Solutions/0974. \345\222\214\345\217\257\350\242\253 K \346\225\264\351\231\244\347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0974. \345\222\214\345\217\257\350\242\253 K \346\225\264\351\231\244\347\232\204\345\255\220\346\225\260\347\273\204.md" index 37176f61..09aaae52 100644 --- "a/Solutions/0974. \345\222\214\345\217\257\350\242\253 K \346\225\264\351\231\244\347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0974. \345\222\214\345\217\257\350\242\253 K \346\225\264\351\231\244\347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、前缀和 - 难度:中等 +## 题目链接 + +- [974. 和可被 K 整除的子数组 - 力扣](https://leetcode.cn/problems/subarray-sums-divisible-by-k/) + ## 题目大意 给定一个整数数组 `nums` 和一个整数 `k`。 diff --git "a/Solutions/0976. \344\270\211\350\247\222\345\275\242\347\232\204\346\234\200\345\244\247\345\221\250\351\225\277.md" "b/Solutions/0976. \344\270\211\350\247\222\345\275\242\347\232\204\346\234\200\345\244\247\345\221\250\351\225\277.md" index aff797be..a4bbf0aa 100644 --- "a/Solutions/0976. \344\270\211\350\247\222\345\275\242\347\232\204\346\234\200\345\244\247\345\221\250\351\225\277.md" +++ "b/Solutions/0976. \344\270\211\350\247\222\345\275\242\347\232\204\346\234\200\345\244\247\345\221\250\351\225\277.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、数学、排序 - 难度:简单 +## 题目链接 + +- [0976. 三角形的最大周长 - 力扣](https://leetcode.cn/problems/largest-perimeter-triangle/) + ## 题目大意 **描述**:给定一些由正数(代表长度)组成的数组 `nums`。 diff --git "a/Solutions/0977. \346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md" "b/Solutions/0977. \346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md" index ede1cb29..1909151a 100644 --- "a/Solutions/0977. \346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md" +++ "b/Solutions/0977. \346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、排序 - 难度:简单 +## 题目链接 + +- [0977. 有序数组的平方 - 力扣](https://leetcode.cn/problems/squares-of-a-sorted-array/) + ## 题目大意 **描述**:给你一个按「非递减顺序」排序的整数数组 `nums`。 diff --git "a/Solutions/0978. \346\234\200\351\225\277\346\271\215\346\265\201\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0978. \346\234\200\351\225\277\346\271\215\346\265\201\345\255\220\346\225\260\347\273\204.md" index 6a5a55b1..a75c6e35 100644 --- "a/Solutions/0978. \346\234\200\351\225\277\346\271\215\346\265\201\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0978. \346\234\200\351\225\277\346\271\215\346\265\201\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、滑动窗口 - 难度:中等 +## 题目链接 + +- [0978. 最长湍流子数组 - 力扣](https://leetcode.cn/problems/longest-turbulent-subarray/) + ## 题目大意 给定一个数组 `arr`。当 `arr` 的子数组 `arr[i]`,`arr[i + 1]`,`...`, `arr[j]` 满足下列条件时,我们称其为湍流子数组: diff --git "a/Solutions/0982. \346\214\211\344\275\215\344\270\216\344\270\272\351\233\266\347\232\204\344\270\211\345\205\203\347\273\204.md" "b/Solutions/0982. \346\214\211\344\275\215\344\270\216\344\270\272\351\233\266\347\232\204\344\270\211\345\205\203\347\273\204.md" index a3c4caa3..73e79791 100644 --- "a/Solutions/0982. \346\214\211\344\275\215\344\270\216\344\270\272\351\233\266\347\232\204\344\270\211\345\205\203\347\273\204.md" +++ "b/Solutions/0982. \346\214\211\344\275\215\344\270\216\344\270\272\351\233\266\347\232\204\344\270\211\345\205\203\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、哈希表 - 难度:困难 +## 题目链接 + +- [0982. 按位与为零的三元组 - 力扣](https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/) + ## 题目大意 **描述**:给定一个整数数组 $nums$。 diff --git "a/Solutions/0990. \347\255\211\345\274\217\346\226\271\347\250\213\347\232\204\345\217\257\346\273\241\350\266\263\346\200\247.md" "b/Solutions/0990. \347\255\211\345\274\217\346\226\271\347\250\213\347\232\204\345\217\257\346\273\241\350\266\263\346\200\247.md" index 71aeff51..53e50e3b 100644 --- "a/Solutions/0990. \347\255\211\345\274\217\346\226\271\347\250\213\347\232\204\345\217\257\346\273\241\350\266\263\346\200\247.md" +++ "b/Solutions/0990. \347\255\211\345\274\217\346\226\271\347\250\213\347\232\204\345\217\257\346\273\241\350\266\263\346\200\247.md" @@ -3,6 +3,10 @@ - 标签:并查集、图、数组、字符串 - 难度:中等 +## 题目链接 + +- [0990. 等式方程的可满足性 - 力扣](https://leetcode.cn/problems/satisfiability-of-equality-equations/) + ## 题目大意 **描述**:给定一个由字符串方程组成的数组 `equations`,每个字符串方程 `equations[i]` 的长度为 `4`,有以下两种形式组成:`a==b` 或 `a!=b`。`a` 和 `b` 是小写字母,表示单字母变量名。 diff --git "a/Solutions/0992. K \344\270\252\344\270\215\345\220\214\346\225\264\346\225\260\347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0992. K \344\270\252\344\270\215\345\220\214\346\225\264\346\225\260\347\232\204\345\255\220\346\225\260\347\273\204.md" index 6d187b3e..925cd2c3 100644 --- "a/Solutions/0992. K \344\270\252\344\270\215\345\220\214\346\225\264\346\225\260\347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0992. K \344\270\252\344\270\215\345\220\214\346\225\264\346\225\260\347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、计数、滑动窗口 - 难度:困难 +## 题目链接 + +- [0992. K 个不同整数的子数组 - 力扣](https://leetcode.cn/problems/subarrays-with-k-different-integers/) + ## 题目大意 给定一个正整数数组 `nums`,再给定一个整数 `k`。如果 `nums` 的某个子数组中不同整数的个数恰好为 `k`,则称 `nums` 的这个连续、不一定不同的子数组为「好子数组」。 diff --git "a/Solutions/0993. \344\272\214\345\217\211\346\240\221\347\232\204\345\240\202\345\205\204\345\274\237\350\212\202\347\202\271.md" "b/Solutions/0993. \344\272\214\345\217\211\346\240\221\347\232\204\345\240\202\345\205\204\345\274\237\350\212\202\347\202\271.md" index 8d9e7bc6..011a47b3 100644 --- "a/Solutions/0993. \344\272\214\345\217\211\346\240\221\347\232\204\345\240\202\345\205\204\345\274\237\350\212\202\347\202\271.md" +++ "b/Solutions/0993. \344\272\214\345\217\211\346\240\221\347\232\204\345\240\202\345\205\204\345\274\237\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [0993. 二叉树的堂兄弟节点 - 力扣](https://leetcode.cn/problems/cousins-in-binary-tree/) + ## 题目大意 给定一个二叉树,和两个值 x,y。从二叉树中找出 x 和 y 对应的节点 node_x,node_y。如果两个节点是堂兄弟节点,则返回 True,否则返回 False。 diff --git "a/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" "b/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" index f14dde3f..55329d94 100644 --- "a/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" +++ "b/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:位运算、队列、数组、前缀和、滑动窗口 - 难度:困难 +## 题目链接 + +- [0995. K 连续位的最小翻转次数 - 力扣](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) + ## 题目大意 给定一个仅包含 `0` 和 `1` 的数组 `nums`,再给定一个整数 `k`。进行一次 `k` 位翻转包括选择一个长度为 `k` 的(连续)子数组,同时将子数组中的每个 `0` 更改为 `1`,而每个 `1` 更改为 `0`。 diff --git "a/Solutions/1000. \345\220\210\345\271\266\347\237\263\345\244\264\347\232\204\346\234\200\344\275\216\346\210\220\346\234\254.md" "b/Solutions/1000. \345\220\210\345\271\266\347\237\263\345\244\264\347\232\204\346\234\200\344\275\216\346\210\220\346\234\254.md" index 192acf44..ddb901ba 100644 --- "a/Solutions/1000. \345\220\210\345\271\266\347\237\263\345\244\264\347\232\204\346\234\200\344\275\216\346\210\220\346\234\254.md" +++ "b/Solutions/1000. \345\220\210\345\271\266\347\237\263\345\244\264\347\232\204\346\234\200\344\275\216\346\210\220\346\234\254.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、前缀和 - 难度:困难 +## 题目链接 + +- [1000. 合并石头的最低成本 - 力扣](https://leetcode.cn/problems/minimum-cost-to-merge-stones/) + ## 题目大意 **描述**:给定一个代表 $n$ 堆石头的整数数组 $stones$,其中 $stones[i]$ 代表第 $i$ 堆中的石头个数。再给定一个整数 $k$, 每次移动需要将连续的 $k$ 堆石头合并为一堆,而这次移动的成本为这 $k$ 堆中石头的总数。 diff --git "a/Solutions/1002. \346\237\245\346\211\276\345\205\261\347\224\250\345\255\227\347\254\246.md" "b/Solutions/1002. \346\237\245\346\211\276\345\205\261\347\224\250\345\255\227\347\254\246.md" index 93a235eb..a8be55cb 100644 --- "a/Solutions/1002. \346\237\245\346\211\276\345\205\261\347\224\250\345\255\227\347\254\246.md" +++ "b/Solutions/1002. \346\237\245\346\211\276\345\205\261\347\224\250\345\255\227\347\254\246.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、字符串 - 难度:简单 +## 题目链接 + +- [1002. 查找共用字符 - 力扣](https://leetcode.cn/problems/find-common-characters/) + ## 题目大意 **描述**:给定一个字符串数组 $words$。 diff --git "a/Solutions/1004. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 III.md" "b/Solutions/1004. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 III.md" index 856c9979..26bde514 100644 --- "a/Solutions/1004. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 III.md" +++ "b/Solutions/1004. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 III.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、前缀和、滑动窗口 - 难度:中等 +## 题目链接 + +- [1004. 最大连续1的个数 III - 力扣](https://leetcode.cn/problems/max-consecutive-ones-iii/) + ## 题目大意 **描述**:给定一个由 $0$、$1$ 组成的数组 $nums$,再给定一个整数 $k$。最多可以将 $k$ 个值从 $0$ 变到 $1$。 diff --git "a/Solutions/1005. K \346\254\241\345\217\226\345\217\215\345\220\216\346\234\200\345\244\247\345\214\226\347\232\204\346\225\260\347\273\204\345\222\214.md" "b/Solutions/1005. K \346\254\241\345\217\226\345\217\215\345\220\216\346\234\200\345\244\247\345\214\226\347\232\204\346\225\260\347\273\204\345\222\214.md" index 757da097..8170dfb9 100644 --- "a/Solutions/1005. K \346\254\241\345\217\226\345\217\215\345\220\216\346\234\200\345\244\247\345\214\226\347\232\204\346\225\260\347\273\204\345\222\214.md" +++ "b/Solutions/1005. K \346\254\241\345\217\226\345\217\215\345\220\216\346\234\200\345\244\247\345\214\226\347\232\204\346\225\260\347\273\204\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、排序 - 难度:简单 +## 题目链接 + +- [1005. K 次取反后最大化的数组和 - 力扣](https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/) + ## 题目大意 给定一个整数数组 nums 和一个整数 k。只能用下面的方法修改数组: diff --git "a/Solutions/1008. \345\211\215\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/Solutions/1008. \345\211\215\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" index d6e9a7e8..bf0958c6 100644 --- "a/Solutions/1008. \345\211\215\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" +++ "b/Solutions/1008. \345\211\215\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:栈、树、二叉搜索树、数组、二叉树、单调栈 - 难度:中等 +## 题目链接 + +- [1008. 前序遍历构造二叉搜索树 - 力扣](https://leetcode.cn/problems/construct-binary-search-tree-from-preorder-traversal/) + ## 题目大意 给定一棵二叉搜索树的前序遍历结果 `preorder`。 diff --git "a/Solutions/1009. \345\215\201\350\277\233\345\210\266\346\225\264\346\225\260\347\232\204\345\217\215\347\240\201.md" "b/Solutions/1009. \345\215\201\350\277\233\345\210\266\346\225\264\346\225\260\347\232\204\345\217\215\347\240\201.md" index a082410f..b9ce9786 100644 --- "a/Solutions/1009. \345\215\201\350\277\233\345\210\266\346\225\264\346\225\260\347\232\204\345\217\215\347\240\201.md" +++ "b/Solutions/1009. \345\215\201\350\277\233\345\210\266\346\225\264\346\225\260\347\232\204\345\217\215\347\240\201.md" @@ -3,6 +3,10 @@ - 标签:位运算 - 难度:简单 +## 题目链接 + +- [1009. 十进制整数的反码 - 力扣](https://leetcode.cn/problems/complement-of-base-10-integer/) + ## 题目大意 **描述**:给定一个十进制数 $n$。 diff --git "a/Solutions/1011. \345\234\250 D \345\244\251\345\206\205\351\200\201\350\276\276\345\214\205\350\243\271\347\232\204\350\203\275\345\212\233.md" "b/Solutions/1011. \345\234\250 D \345\244\251\345\206\205\351\200\201\350\276\276\345\214\205\350\243\271\347\232\204\350\203\275\345\212\233.md" index 448a73c7..dca6f114 100644 --- "a/Solutions/1011. \345\234\250 D \345\244\251\345\206\205\351\200\201\350\276\276\345\214\205\350\243\271\347\232\204\350\203\275\345\212\233.md" +++ "b/Solutions/1011. \345\234\250 D \345\244\251\345\206\205\351\200\201\350\276\276\345\214\205\350\243\271\347\232\204\350\203\275\345\212\233.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:中等 +## 题目链接 + +- [1011. 在 D 天内送达包裹的能力 - 力扣](https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/) + ## 题目大意 **描述**:传送带上的包裹必须在 $D$ 天内从一个港口运送到另一个港口。给定所有包裹的重量数组 $weights$,货物必须按照给定的顺序装运。且每天船上装载的重量不会超过船的最大运载重量。 diff --git "a/Solutions/1012. \350\207\263\345\260\221\346\234\211 1 \344\275\215\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" "b/Solutions/1012. \350\207\263\345\260\221\346\234\211 1 \344\275\215\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" index 22338620..2aeb6b7b 100644 --- "a/Solutions/1012. \350\207\263\345\260\221\346\234\211 1 \344\275\215\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/1012. \350\207\263\345\260\221\346\234\211 1 \344\275\215\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:数学、动态规划 - 难度:困难 +## 题目链接 + +- [1012. 至少有 1 位重复的数字 - 力扣](https://leetcode.cn/problems/numbers-with-repeated-digits/) + ## 题目大意 **描述**:给定一个正整数 $n$。 diff --git "a/Solutions/1014. \346\234\200\344\275\263\350\247\202\345\205\211\347\273\204\345\220\210.md" "b/Solutions/1014. \346\234\200\344\275\263\350\247\202\345\205\211\347\273\204\345\220\210.md" index 74760419..6dad2bd4 100644 --- "a/Solutions/1014. \346\234\200\344\275\263\350\247\202\345\205\211\347\273\204\345\220\210.md" +++ "b/Solutions/1014. \346\234\200\344\275\263\350\247\202\345\205\211\347\273\204\345\220\210.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [1014. 最佳观光组合 - 力扣](https://leetcode.cn/problems/best-sightseeing-pair/) + ## 题目大意 给你一个正整数数组 `values`,其中 `values[i]` 表示第 `i` 个观光景点的评分,并且两个景点 `i` 和 `j` 之间的距离 为 `j - i`。一对景点(`i < j`)组成的观光组合的得分为 `values[i] + values[j] + i - j`,也就是景点的评分之和减去它们两者之间的距离。 diff --git "a/Solutions/1020. \351\243\236\345\234\260\347\232\204\346\225\260\351\207\217.md" "b/Solutions/1020. \351\243\236\345\234\260\347\232\204\346\225\260\351\207\217.md" index 0eaa0ce6..be9e5cf4 100644 --- "a/Solutions/1020. \351\243\236\345\234\260\347\232\204\346\225\260\351\207\217.md" +++ "b/Solutions/1020. \351\243\236\345\234\260\347\232\204\346\225\260\351\207\217.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、数组、矩阵 - 难度:中等 +## 题目链接 + +- [1020. 飞地的数量 - 力扣](https://leetcode.cn/problems/number-of-enclaves/) + ## 题目大意 **描述**:给定一个二维数组 `grid`,每个单元格为 `0`(代表海)或 `1`(代表陆地)。我们可以从一个陆地走到另一个陆地上(朝四个方向之一),然后从边界上的陆地离开网络的边界。 diff --git "a/Solutions/1023. \351\251\274\345\263\260\345\274\217\345\214\271\351\205\215.md" "b/Solutions/1023. \351\251\274\345\263\260\345\274\217\345\214\271\351\205\215.md" index 0e1a1b70..63136441 100644 --- "a/Solutions/1023. \351\251\274\345\263\260\345\274\217\345\214\271\351\205\215.md" +++ "b/Solutions/1023. \351\251\274\345\263\260\345\274\217\345\214\271\351\205\215.md" @@ -3,6 +3,10 @@ - 标签:字典树、双指针、字符串、字符串匹配 - 难度:中等 +## 题目链接 + +- [1023. 驼峰式匹配 - 力扣](https://leetcode.cn/problems/camelcase-matching/) + ## 题目大意 **描述**:给定待查询列表 `queries`,和模式串 `pattern`。如果我们可以将小写字母(0 个或多个)插入模式串 `pattern` 中间(任意位置)得到待查询项 `queries[i]`,那么待查询项与给定模式串匹配。如果匹配,则对应答案为 `True`,否则为 `False`。 diff --git "a/Solutions/1025. \351\231\244\346\225\260\345\215\232\345\274\210.md" "b/Solutions/1025. \351\231\244\346\225\260\345\215\232\345\274\210.md" index 300dc2bd..d51fbe5b 100644 --- "a/Solutions/1025. \351\231\244\346\225\260\345\215\232\345\274\210.md" +++ "b/Solutions/1025. \351\231\244\346\225\260\345\215\232\345\274\210.md" @@ -3,6 +3,10 @@ - 标签:脑筋急转弯、数学、动态规划、博弈 - 难度:简单 +## 题目链接 + +- [1025. 除数博弈 - 力扣](https://leetcode.cn/problems/divisor-game/) + ## 题目大意 爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 `n`。在每个玩家的回合,玩家需要执行以下操作: diff --git "a/Solutions/1028. \344\273\216\345\205\210\345\272\217\351\201\215\345\216\206\350\277\230\345\216\237\344\272\214\345\217\211\346\240\221.md" "b/Solutions/1028. \344\273\216\345\205\210\345\272\217\351\201\215\345\216\206\350\277\230\345\216\237\344\272\214\345\217\211\346\240\221.md" index 8c4bb1d8..18b71f29 100644 --- "a/Solutions/1028. \344\273\216\345\205\210\345\272\217\351\201\215\345\216\206\350\277\230\345\216\237\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/1028. \344\273\216\345\205\210\345\272\217\351\201\215\345\216\206\350\277\230\345\216\237\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、字符串、二叉树 - 难度:困难 +## 题目链接 + +- [1028. 从先序遍历还原二叉树 - 力扣](https://leetcode.cn/problems/recover-a-tree-from-preorder-traversal/) + ## 题目大意 对一棵二叉树进行深度优先搜索。在遍历的过程中,遇到节点,先输出与该节点深度相同数量的短线,再输出该节点的值。如果节点深度为 `D`,则子节点深度为 `D + 1`。根节点的深度为 `0`。如果节点只有一个子节点,则该子节点一定为左子节点。 diff --git "a/Solutions/1029. \344\270\244\345\234\260\350\260\203\345\272\246.md" "b/Solutions/1029. \344\270\244\345\234\260\350\260\203\345\272\246.md" index bfd47bb5..f8f1d32d 100644 --- "a/Solutions/1029. \344\270\244\345\234\260\350\260\203\345\272\246.md" +++ "b/Solutions/1029. \344\270\244\345\234\260\350\260\203\345\272\246.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、排序 - 难度:中等 +## 题目链接 + +- [1029. 两地调度 - 力扣](https://leetcode.cn/problems/two-city-scheduling/) + ## 题目大意 **描述**:公司计划面试 `2 * n` 人。给你一个数组 `costs`,其中 `costs[i] = [aCosti, bCosti]`,表示第 `i` 人飞往 `a` 市的费用为 `aCosti` ,飞往 `b` 市的费用为 `bCosti`。 diff --git "a/Solutions/1034. \350\276\271\347\225\214\347\235\200\350\211\262.md" "b/Solutions/1034. \350\276\271\347\225\214\347\235\200\350\211\262.md" index 201c6cea..659dc26a 100644 --- "a/Solutions/1034. \350\276\271\347\225\214\347\235\200\350\211\262.md" +++ "b/Solutions/1034. \350\276\271\347\225\214\347\235\200\350\211\262.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、数组、矩阵 - 难度:中等 +## 题目链接 + +- [1034. 边界着色 - 力扣](https://leetcode.cn/problems/coloring-a-border/) + ## 题目大意 给定一个二维整数矩阵 `grid`,其中 `grid[i][j]` 表示矩阵第 `i` 行、第 `j` 列上网格块的颜色值。再给定一个起始位置 `(row, col)`,以及一个目标颜色 `color`。 diff --git "a/Solutions/1035. \344\270\215\347\233\270\344\272\244\347\232\204\347\272\277.md" "b/Solutions/1035. \344\270\215\347\233\270\344\272\244\347\232\204\347\272\277.md" index a1c4496b..c046385d 100644 --- "a/Solutions/1035. \344\270\215\347\233\270\344\272\244\347\232\204\347\272\277.md" +++ "b/Solutions/1035. \344\270\215\347\233\270\344\272\244\347\232\204\347\272\277.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [1035. 不相交的线 - 力扣](https://leetcode.cn/problems/uncrossed-lines/) + ## 题目大意 有两条独立平行的水平线,按照给定的顺序写下 `nums1` 和 `nums2` 的整数。 diff --git "a/Solutions/1037. \346\234\211\346\225\210\347\232\204\345\233\236\346\227\213\351\225\226.md" "b/Solutions/1037. \346\234\211\346\225\210\347\232\204\345\233\236\346\227\213\351\225\226.md" index 2e701bfc..b6fa1893 100644 --- "a/Solutions/1037. \346\234\211\346\225\210\347\232\204\345\233\236\346\227\213\351\225\226.md" +++ "b/Solutions/1037. \346\234\211\346\225\210\347\232\204\345\233\236\346\227\213\351\225\226.md" @@ -3,6 +3,10 @@ - 标签:几何、数组、数学 - 难度:简单 +## 题目链接 + +- [1037. 有效的回旋镖 - 力扣](https://leetcode.cn/problems/valid-boomerang/) + ## 题目大意 **描述**:给定一个数组 $points$,其中 $points[i] = [xi, yi]$ 表示平面上的一个点。 diff --git "a/Solutions/1038. \344\273\216\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\210\260\346\233\264\345\244\247\345\222\214\346\240\221.md" "b/Solutions/1038. \344\273\216\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\210\260\346\233\264\345\244\247\345\222\214\346\240\221.md" index fc981c0f..c0c84de2 100644 --- "a/Solutions/1038. \344\273\216\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\210\260\346\233\264\345\244\247\345\222\214\346\240\221.md" +++ "b/Solutions/1038. \344\273\216\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\210\260\346\233\264\345\244\247\345\222\214\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [1038. 从二叉搜索树到更大和树 - 力扣](https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/) + ## 题目大意 给定一棵二叉搜索树(BST)的根节点,且二叉搜索树的节点值各不相同。 diff --git "a/Solutions/1039. \345\244\232\350\276\271\345\275\242\344\270\211\350\247\222\345\211\226\345\210\206\347\232\204\346\234\200\344\275\216\345\276\227\345\210\206.md" "b/Solutions/1039. \345\244\232\350\276\271\345\275\242\344\270\211\350\247\222\345\211\226\345\210\206\347\232\204\346\234\200\344\275\216\345\276\227\345\210\206.md" index 0d916bd3..83550692 100644 --- "a/Solutions/1039. \345\244\232\350\276\271\345\275\242\344\270\211\350\247\222\345\211\226\345\210\206\347\232\204\346\234\200\344\275\216\345\276\227\345\210\206.md" +++ "b/Solutions/1039. \345\244\232\350\276\271\345\275\242\344\270\211\350\247\222\345\211\226\345\210\206\347\232\204\346\234\200\344\275\216\345\276\227\345\210\206.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [1039. 多边形三角剖分的最低得分 - 力扣](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) + ## 题目大意 **描述**:有一个凸的 $n$ 边形,其每个顶点都有一个整数值。给定一个整数数组 $values$,其中 $values[i]$ 是第 $i$ 个顶点的值(即顺时针顺序)。 diff --git "a/Solutions/1047. \345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md" "b/Solutions/1047. \345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md" index adce2874..6dfbc7fb 100644 --- "a/Solutions/1047. \345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md" +++ "b/Solutions/1047. \345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md" @@ -3,6 +3,10 @@ - 标签:栈、字符串 - 难度:简单 +## 题目链接 + +- [1047. 删除字符串中的所有相邻重复项 - 力扣](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) + ## 题目大意 给定一个全部由小写字母组成的字符串 S,重复的删除相邻且相同的字母,直到相邻字母不再有相同的。 diff --git "a/Solutions/1049. \346\234\200\345\220\216\344\270\200\345\235\227\347\237\263\345\244\264\347\232\204\351\207\215\351\207\217 II.md" "b/Solutions/1049. \346\234\200\345\220\216\344\270\200\345\235\227\347\237\263\345\244\264\347\232\204\351\207\215\351\207\217 II.md" index 415844ee..1e8b780d 100644 --- "a/Solutions/1049. \346\234\200\345\220\216\344\270\200\345\235\227\347\237\263\345\244\264\347\232\204\351\207\215\351\207\217 II.md" +++ "b/Solutions/1049. \346\234\200\345\220\216\344\270\200\345\235\227\347\237\263\345\244\264\347\232\204\351\207\215\351\207\217 II.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [1049. 最后一块石头的重量 II - 力扣](https://leetcode.cn/problems/last-stone-weight-ii/) + ## 题目大意 **描述**:有一堆石头,用整数数组 $stones$ 表示,其中 $stones[i]$ 表示第 $i$​ 块石头的重量。每一回合,从石头中选出任意两块石头,将这两块石头一起粉碎。假设石头的重量分别为 $x$ 和 $y$。且 $x \le y$,则结果如下: diff --git "a/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" "b/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" index 910ae357..3b5d86bb 100644 --- "a/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" +++ "b/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" @@ -3,6 +3,10 @@ - 标签:数组、滑动窗口 - 难度:中等 +## 题目链接 + +- [1052. 爱生气的书店老板 - 力扣](https://leetcode.cn/problems/grumpy-bookstore-owner/) + ## 题目大意 书店老板有一家店打算试营业 `len(customers)` 分钟。每一分钟都有一些顾客 `customers[i]` 会进入书店,这些顾客会在这一分钟结束后离开。 diff --git "a/Solutions/1065. \345\255\227\347\254\246\344\270\262\347\232\204\347\264\242\345\274\225\345\257\271.md" "b/Solutions/1065. \345\255\227\347\254\246\344\270\262\347\232\204\347\264\242\345\274\225\345\257\271.md" index 0fcc7238..22997f61 100644 --- "a/Solutions/1065. \345\255\227\347\254\246\344\270\262\347\232\204\347\264\242\345\274\225\345\257\271.md" +++ "b/Solutions/1065. \345\255\227\347\254\246\344\270\262\347\232\204\347\264\242\345\274\225\345\257\271.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、字符串、排序 - 难度:简单 +## 题目链接 + +- [1065. 字符串的索引对 - 力扣](https://leetcode.cn/problems/index-pairs-of-a-string/) + ## 题目大意 给定字符串 `text` 和单词列表 `words`。 diff --git "a/Solutions/1079. \346\264\273\345\255\227\345\215\260\345\210\267.md" "b/Solutions/1079. \346\264\273\345\255\227\345\215\260\345\210\267.md" index 93ad22d4..0958691f 100644 --- "a/Solutions/1079. \346\264\273\345\255\227\345\215\260\345\210\267.md" +++ "b/Solutions/1079. \346\264\273\345\255\227\345\215\260\345\210\267.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、回溯、计数 - 难度:中等 +## 题目链接 + +- [1079. 活字印刷 - 力扣](https://leetcode.cn/problems/letter-tile-possibilities/) + ## 题目大意 **描述**:给定一个代表活字字模的字符串 $tiles$,其中 $tiles[i]$ 表示第 $i$ 个字模上刻的字母。 diff --git "a/Solutions/1081. \344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\345\260\217\345\255\220\345\272\217\345\210\227.md" "b/Solutions/1081. \344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\345\260\217\345\255\220\345\272\217\345\210\227.md" index f24281be..b43002ed 100644 --- "a/Solutions/1081. \344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\345\260\217\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/1081. \344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\345\260\217\345\255\220\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:栈、贪心、字符串、单调栈 - 难度:中等 +## 题目链接 + +- [1081. 不同字符的最小子序列 - 力扣](https://leetcode.cn/problems/smallest-subsequence-of-distinct-characters/) + ## 题目大意 **描述**:给定一个字符串 `s`。 diff --git "a/Solutions/1089. \345\244\215\345\206\231\351\233\266.md" "b/Solutions/1089. \345\244\215\345\206\231\351\233\266.md" index 8954cedb..e835cd7c 100644 --- "a/Solutions/1089. \345\244\215\345\206\231\351\233\266.md" +++ "b/Solutions/1089. \345\244\215\345\206\231\351\233\266.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针 - 难度:简单 +## 题目链接 + +- [1089. 复写零 - 力扣](https://leetcode.cn/problems/duplicate-zeros/) + ## 题目大意 **描述**:给定搞一个长度固定的整数数组 $arr$。 diff --git "a/Solutions/1091. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" "b/Solutions/1091. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" index 6ac4cb8b..d768efd6 100644 --- "a/Solutions/1091. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" +++ "b/Solutions/1091. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:广度优先搜索、数组、矩阵 - 难度:中等 +## 题目链接 + +- [1091. 二进制矩阵中的最短路径 - 力扣](https://leetcode.cn/problems/shortest-path-in-binary-matrix/) + ## 题目大意 给定一个 `n * n` 的二进制矩阵 `grid`。 `grid` 中只含有 `0` 或者 `1`。`grid` 中的畅通路径是一条从左上角 `(0, 0)` 位置上到右下角 `(n - 1, n - 1)`位置上的路径。该路径同时满足以下要求: diff --git "a/Solutions/1095. \345\261\261\350\204\211\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\347\233\256\346\240\207\345\200\274.md" "b/Solutions/1095. \345\261\261\350\204\211\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\347\233\256\346\240\207\345\200\274.md" index 87b68c98..0ab7b19b 100644 --- "a/Solutions/1095. \345\261\261\350\204\211\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\347\233\256\346\240\207\345\200\274.md" +++ "b/Solutions/1095. \345\261\261\350\204\211\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\347\233\256\346\240\207\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、交互 - 难度:困难 +## 题目链接 + +- [1095. 山脉数组中查找目标值 - 力扣](https://leetcode.cn/problems/find-in-mountain-array/) + ## 题目大意 **描述**:给定一个山脉数组 $mountainArr$。 diff --git "a/Solutions/1099. \345\260\217\344\272\216 K \347\232\204\344\270\244\346\225\260\344\271\213\345\222\214.md" "b/Solutions/1099. \345\260\217\344\272\216 K \347\232\204\344\270\244\346\225\260\344\271\213\345\222\214.md" index 8067f974..b074577f 100644 --- "a/Solutions/1099. \345\260\217\344\272\216 K \347\232\204\344\270\244\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/1099. \345\260\217\344\272\216 K \347\232\204\344\270\244\346\225\260\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、二分查找、排序 - 难度:简单 +## 题目链接 + +- [1099. 小于 K 的两数之和 - 力扣](https://leetcode.cn/problems/two-sum-less-than-k/) + ## 题目大意 给你一个整数数组 `nums` 和整数 `k`。 diff --git "a/Solutions/1100. \351\225\277\345\272\246\344\270\272 K \347\232\204\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\345\255\220\344\270\262.md" "b/Solutions/1100. \351\225\277\345\272\246\344\270\272 K \347\232\204\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\345\255\220\344\270\262.md" index 9848d465..c5385b70 100644 --- "a/Solutions/1100. \351\225\277\345\272\246\344\270\272 K \347\232\204\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\345\255\220\344\270\262.md" +++ "b/Solutions/1100. \351\225\277\345\272\246\344\270\272 K \347\232\204\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\345\255\220\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、滑动窗口 - 难度:中等 +## 题目链接 + +- [1100. 长度为 K 的无重复字符子串 - 力扣](https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/) + ## 题目大意 给定一个字符串 `s`。 diff --git "a/Solutions/1103. \345\210\206\347\263\226\346\236\234 II.md" "b/Solutions/1103. \345\210\206\347\263\226\346\236\234 II.md" index 9a0c99d7..37f08e01 100644 --- "a/Solutions/1103. \345\210\206\347\263\226\346\236\234 II.md" +++ "b/Solutions/1103. \345\210\206\347\263\226\346\236\234 II.md" @@ -3,6 +3,10 @@ - 标签:数学、模拟 - 难度:简单 +## 题目链接 + +- [1103. 分糖果 II - 力扣](https://leetcode.cn/problems/distribute-candies-to-people/) + ## 题目大意 **描述**:给定一个整数 $candies$,代表糖果的数量。再给定一个整数 $num\underline{}people$,代表小朋友的数量。 diff --git "a/Solutions/1108. IP \345\234\260\345\235\200\346\227\240\346\225\210\345\214\226.md" "b/Solutions/1108. IP \345\234\260\345\235\200\346\227\240\346\225\210\345\214\226.md" index e3d87ac8..aa913376 100644 --- "a/Solutions/1108. IP \345\234\260\345\235\200\346\227\240\346\225\210\345\214\226.md" +++ "b/Solutions/1108. IP \345\234\260\345\235\200\346\227\240\346\225\210\345\214\226.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:简单 +## 题目链接 + +- [1108. IP 地址无效化 - 力扣](https://leetcode.cn/problems/defanging-an-ip-address/) + ## 题目大意 **描述**:给定一个有效的 IPv4 的地址 `address`。。 diff --git "a/Solutions/1109. \350\210\252\347\217\255\351\242\204\350\256\242\347\273\237\350\256\241.md" "b/Solutions/1109. \350\210\252\347\217\255\351\242\204\350\256\242\347\273\237\350\256\241.md" index ae9b2688..dd5e3104 100644 --- "a/Solutions/1109. \350\210\252\347\217\255\351\242\204\350\256\242\347\273\237\350\256\241.md" +++ "b/Solutions/1109. \350\210\252\347\217\255\351\242\204\350\256\242\347\273\237\350\256\241.md" @@ -3,6 +3,10 @@ - 标签:数组、前缀和 - 难度:中等 +## 题目链接 + +- [1109. 航班预订统计 - 力扣](https://leetcode.cn/problems/corporate-flight-bookings/) + ## 题目大意 **描述**:给定整数 `n`,代表 `n` 个航班。再给定一个包含三元组的数组 `bookings`,代表航班预订表。表中第 `i` 条预订记录 $bookings[i] = [first_i, last_i, seats_i]$ 意味着在从 $first_i$ 到 $last_i$ (包含 $first_i$ 和 $last_i$)的 每个航班上预订了 $seats_i$ 个座位。 diff --git "a/Solutions/1122. \346\225\260\347\273\204\347\232\204\347\233\270\345\257\271\346\216\222\345\272\217.md" "b/Solutions/1122. \346\225\260\347\273\204\347\232\204\347\233\270\345\257\271\346\216\222\345\272\217.md" index 42686a24..31ab0af8 100644 --- "a/Solutions/1122. \346\225\260\347\273\204\347\232\204\347\233\270\345\257\271\346\216\222\345\272\217.md" +++ "b/Solutions/1122. \346\225\260\347\273\204\347\232\204\347\233\270\345\257\271\346\216\222\345\272\217.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、计数排序、排序 - 难度:简单 +## 题目链接 + +- [1122. 数组的相对排序 - 力扣](https://leetcode.cn/problems/relative-sort-array/) + ## 题目大意 **描述**:给定两个数组,$arr1$ 和 $arr2$,其中 $arr2$ 中的元素各不相同,$arr2$ 中的每个元素都出现在 $arr1$ 中。 diff --git "a/Solutions/1136. \345\271\266\350\241\214\350\257\276\347\250\213.md" "b/Solutions/1136. \345\271\266\350\241\214\350\257\276\347\250\213.md" index 2412ca76..e0db5061 100644 --- "a/Solutions/1136. \345\271\266\350\241\214\350\257\276\347\250\213.md" +++ "b/Solutions/1136. \345\271\266\350\241\214\350\257\276\347\250\213.md" @@ -3,6 +3,10 @@ - 标签:图、拓扑排序 - 难度:中等 +## 题目链接 + +- [1136. 并行课程 - 力扣](https://leetcode.cn/problems/parallel-courses/) + ## 题目大意 有 N 门课程,分别以 1 到 N 进行编号。现在给定一份课程关系表 `relations[i] = [X, Y]`,用以表示课程 `X` 和课程 `Y` 之间的先修关系:课程 `X` 必须在课程 `Y` 之前修完。假设在一个学期里,你可以学习任何数量的课程,但前提是你已经学习了将要学习的这些课程的所有先修课程。 diff --git "a/Solutions/1137. \347\254\254 N \344\270\252\346\263\260\346\263\242\351\202\243\345\245\221\346\225\260.md" "b/Solutions/1137. \347\254\254 N \344\270\252\346\263\260\346\263\242\351\202\243\345\245\221\346\225\260.md" index 23963918..8d84c1ca 100644 --- "a/Solutions/1137. \347\254\254 N \344\270\252\346\263\260\346\263\242\351\202\243\345\245\221\346\225\260.md" +++ "b/Solutions/1137. \347\254\254 N \344\270\252\346\263\260\346\263\242\351\202\243\345\245\221\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:记忆化搜索、数学、动态规划 - 难度:简单 +## 题目链接 + +- [1137. 第 N 个泰波那契数 - 力扣](https://leetcode.cn/problems/n-th-tribonacci-number/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/1143. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" "b/Solutions/1143. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" index b7ccac26..8bf7dee0 100644 --- "a/Solutions/1143. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/1143. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:中等 +## 题目链接 + +- [1143. 最长公共子序列 - 力扣](https://leetcode.cn/problems/longest-common-subsequence/) + ## 题目大意 **描述**:给定两个字符串 $text1$ 和 $text2$。 diff --git "a/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" "b/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" index db5cb4a7..c75d29e3 100644 --- "a/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" +++ "b/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" @@ -3,6 +3,10 @@ - 标签:数组、滑动窗口 - 难度:中等 +## 题目链接 + +- [1151. 最少交换次数来组合所有的 1 - 力扣](https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together/) + ## 题目大意 给定一个二进制数组 `data`。 diff --git "a/Solutions/1155. \346\216\267\351\252\260\345\255\220\347\255\211\344\272\216\347\233\256\346\240\207\345\222\214\347\232\204\346\226\271\346\263\225\346\225\260.md" "b/Solutions/1155. \346\216\267\351\252\260\345\255\220\347\255\211\344\272\216\347\233\256\346\240\207\345\222\214\347\232\204\346\226\271\346\263\225\346\225\260.md" index fb02bdbc..c259c450 100644 --- "a/Solutions/1155. \346\216\267\351\252\260\345\255\220\347\255\211\344\272\216\347\233\256\346\240\207\345\222\214\347\232\204\346\226\271\346\263\225\346\225\260.md" +++ "b/Solutions/1155. \346\216\267\351\252\260\345\255\220\347\255\211\344\272\216\347\233\256\346\240\207\345\222\214\347\232\204\346\226\271\346\263\225\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:动态规划 - 难度:中等 +## 题目链接 + +- [1155. 掷骰子等于目标和的方法数 - 力扣](https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/) + ## 题目大意 **描述**:有 $n$ 个一样的骰子,每个骰子上都有 $k$ 个面,分别标号为 $1 \sim k$。现在给定三个整数 $n$、$k$ 和 $target$,滚动 $n$ 个骰子。 diff --git "a/Solutions/1161. \346\234\200\345\244\247\345\261\202\345\206\205\345\205\203\347\264\240\345\222\214.md" "b/Solutions/1161. \346\234\200\345\244\247\345\261\202\345\206\205\345\205\203\347\264\240\345\222\214.md" index ddfd2d9e..d838bfc3 100644 --- "a/Solutions/1161. \346\234\200\345\244\247\345\261\202\345\206\205\345\205\203\347\264\240\345\222\214.md" +++ "b/Solutions/1161. \346\234\200\345\244\247\345\261\202\345\206\205\345\205\203\347\264\240\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [1161. 最大层内元素和 - 力扣](https://leetcode.cn/problems/maximum-level-sum-of-a-binary-tree/) + ## 题目大意 **描述**:给你一个二叉树的根节点 $root$。设根节点位于二叉树的第 $1$ 层,而根节点的子节点位于第 $2$ 层,依此类推。 diff --git "a/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" "b/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" index 9e00ed50..eeb00762 100644 --- "a/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" +++ "b/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" @@ -3,6 +3,10 @@ - 标签:数组、滑动窗口 - 难度:简单 +## 题目链接 + +- [1176. 健身计划评估 - 力扣](https://leetcode.cn/problems/diet-plan-performance/) + ## 题目大意 好友给自己制定了一份健身计划。想请你帮他评估一下这份计划是否合理。 diff --git "a/Solutions/1184. \345\205\254\344\272\244\347\253\231\351\227\264\347\232\204\350\267\235\347\246\273.md" "b/Solutions/1184. \345\205\254\344\272\244\347\253\231\351\227\264\347\232\204\350\267\235\347\246\273.md" index a7a1b4bd..bad07c1c 100644 --- "a/Solutions/1184. \345\205\254\344\272\244\347\253\231\351\227\264\347\232\204\350\267\235\347\246\273.md" +++ "b/Solutions/1184. \345\205\254\344\272\244\347\253\231\351\227\264\347\232\204\350\267\235\347\246\273.md" @@ -3,6 +3,10 @@ - 标签:数组 - 难度:简单 +## 题目链接 + +- [1184. 公交站间的距离 - 力扣](https://leetcode.cn/problems/distance-between-bus-stops/) + ## 题目大意 **描述**:环形公交路线上有 $n$ 个站,序号为 $0 \sim n - 1$。给定一个数组 $distance$ 表示每一对相邻公交站之间的距离,其中 $distance[i]$ 表示编号为 $i$ 的车站与编号为 $(i + 1) \mod n$ 的车站之间的距离。再给定乘客的出发点编号 $start$ 和目的地编号 $destination$。 diff --git "a/Solutions/1202. \344\272\244\346\215\242\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\347\264\240.md" "b/Solutions/1202. \344\272\244\346\215\242\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\347\264\240.md" index 48683d57..0ac0d952 100644 --- "a/Solutions/1202. \344\272\244\346\215\242\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\347\264\240.md" +++ "b/Solutions/1202. \344\272\244\346\215\242\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [1202. 交换字符串中的元素 - 力扣](https://leetcode.cn/problems/smallest-string-with-swaps/) + ## 题目大意 **描述**:给定一个字符串 `s`,再给定一个数组 `pairs`,其中 `pairs[i] = [a, b]` 表示字符串的第 `a` 个字符可以跟第 `b` 个字符交换。只要满足 `pairs` 中的交换关系,可以任意多次交换字符串中的字符。 diff --git "a/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" "b/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" index 4af7af24..ceeb84ba 100644 --- "a/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" +++ "b/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" @@ -3,6 +3,10 @@ - 标签:字符串、二分查找、前缀和、滑动窗口 - 难度:中等 +## 题目链接 + +- [1208. 尽可能使字符串相等 - 力扣](https://leetcode.cn/problems/get-equal-substrings-within-budget/) + ## 题目大意 给定两个长度相同的字符串,`s` 和 `t`。将 `s` 中的第 `i` 个字符变到 `t` 中的第 `i` 个字符需要 $| s[i] - t[i] |$ 的开销(开销可能为 `0`),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是 `maxCost`。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。 diff --git "a/Solutions/1217. \347\216\251\347\255\271\347\240\201.md" "b/Solutions/1217. \347\216\251\347\255\271\347\240\201.md" index b678a9b0..80cfc3d5 100644 --- "a/Solutions/1217. \347\216\251\347\255\271\347\240\201.md" +++ "b/Solutions/1217. \347\216\251\347\255\271\347\240\201.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、数学 - 难度:简单 +## 题目链接 + +- [1217. 玩筹码 - 力扣](https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/) + ## 题目大意 **描述**:给定一个数组 $position$ 代表 $n$ 个筹码的位置,其中 $position[i]$ 代表第 $i$ 个筹码的位置。现在需要把所有筹码移到同一个位置。在一步中,我们可以将第 $i$ 个芯片的位置从 $position[i]$ 改变为: diff --git "a/Solutions/1220. \347\273\237\350\256\241\345\205\203\351\237\263\345\255\227\346\257\215\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" "b/Solutions/1220. \347\273\237\350\256\241\345\205\203\351\237\263\345\255\227\346\257\215\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" index 169f00f7..a1ea23bd 100644 --- "a/Solutions/1220. \347\273\237\350\256\241\345\205\203\351\237\263\345\255\227\346\257\215\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" +++ "b/Solutions/1220. \347\273\237\350\256\241\345\205\203\351\237\263\345\255\227\346\257\215\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:动态规划 - 难度:困难 +## 题目链接 + +- [1220. 统计元音字母序列的数目 - 力扣](https://leetcode.cn/problems/count-vowels-permutation/) + ## 题目大意 **描述**:给定一个整数 `n`,我们可以按照以下规则生成长度为 `n` 的字符串: diff --git "a/Solutions/1227. \351\243\236\346\234\272\345\272\247\344\275\215\345\210\206\351\205\215\346\246\202\347\216\207.md" "b/Solutions/1227. \351\243\236\346\234\272\345\272\247\344\275\215\345\210\206\351\205\215\346\246\202\347\216\207.md" index ec48ac3e..cc3b8bc9 100644 --- "a/Solutions/1227. \351\243\236\346\234\272\345\272\247\344\275\215\345\210\206\351\205\215\346\246\202\347\216\207.md" +++ "b/Solutions/1227. \351\243\236\346\234\272\345\272\247\344\275\215\345\210\206\351\205\215\346\246\202\347\216\207.md" @@ -3,6 +3,10 @@ - 标签:脑筋急转弯、数学、动态规划、概率与统计 - 难度:中等 +## 题目链接 + +- [1227. 飞机座位分配概率 - 力扣](https://leetcode.cn/problems/airplane-seat-assignment-probability/) + ## 题目大意 **描述**:给定一个整数 $n$,代表 $n$ 位乘客即将登飞机。飞机上刚好有 $n$ 个座位。第一位乘客的票丢了,他随便选择了一个座位坐下。则剩下的乘客将会: diff --git "a/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" "b/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" index 51210c99..7ded99f0 100644 --- "a/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" +++ "b/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、排序 - 难度:中等 +## 题目链接 + +- [1229. 安排会议日程 - 力扣](https://leetcode.cn/problems/meeting-scheduler/) + ## 题目大意 给定两位客户的空闲时间表:`slots1` 和 `slots2`,再给定会议的预计持续时间 `duration`。 diff --git "a/Solutions/1232. \347\274\200\347\202\271\346\210\220\347\272\277.md" "b/Solutions/1232. \347\274\200\347\202\271\346\210\220\347\272\277.md" index f853fda5..3f5017c1 100644 --- "a/Solutions/1232. \347\274\200\347\202\271\346\210\220\347\272\277.md" +++ "b/Solutions/1232. \347\274\200\347\202\271\346\210\220\347\272\277.md" @@ -3,6 +3,10 @@ - 标签:几何、数组、数学 - 难度:简单 +## 题目链接 + +- [1232. 缀点成线 - 力扣](https://leetcode.cn/problems/check-if-it-is-a-straight-line/) + ## 题目大意 给定一系列的二维坐标点的坐标 `(xi, yi)`,判断这些点是否属于同一条直线。若属于同一条直线,则返回 True,否则返回 False。 diff --git "a/Solutions/1245. \346\240\221\347\232\204\347\233\264\345\276\204.md" "b/Solutions/1245. \346\240\221\347\232\204\347\233\264\345\276\204.md" index eb021c57..ac9938c1 100644 --- "a/Solutions/1245. \346\240\221\347\232\204\347\233\264\345\276\204.md" +++ "b/Solutions/1245. \346\240\221\347\232\204\347\233\264\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、图、拓扑排序 - 难度:中等 +## 题目链接 + +- [1245. 树的直径 - 力扣](https://leetcode.cn/problems/tree-diameter/) + ## 题目大意 **描述**:给定一个数组 $edges$,用来表示一棵无向树。其中 $edges[i] = [u, v]$ 表示节点 $u$ 和节点 $v$ 之间的双向边。书上的节点编号为 $0 \sim edges.length$,共 $edges.length + 1$ 个节点。 diff --git "a/Solutions/1247. \344\272\244\346\215\242\345\255\227\347\254\246\344\275\277\345\276\227\345\255\227\347\254\246\344\270\262\347\233\270\345\220\214.md" "b/Solutions/1247. \344\272\244\346\215\242\345\255\227\347\254\246\344\275\277\345\276\227\345\255\227\347\254\246\344\270\262\347\233\270\345\220\214.md" index 36504fac..ee430f53 100644 --- "a/Solutions/1247. \344\272\244\346\215\242\345\255\227\347\254\246\344\275\277\345\276\227\345\255\227\347\254\246\344\270\262\347\233\270\345\220\214.md" +++ "b/Solutions/1247. \344\272\244\346\215\242\345\255\227\347\254\246\344\275\277\345\276\227\345\255\227\347\254\246\344\270\262\347\233\270\345\220\214.md" @@ -3,6 +3,10 @@ - 标签:贪心、数学、字符串 - 难度:中等 +## 题目链接 + +- [1247. 交换字符使得字符串相同 - 力扣](https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/) + ## 题目大意 **描述**:给定两个长度相同的字符串 $s1$ 和 $s2$,并且两个字符串中只含有字符 `'x'` 和 `'y'`。现在需要通过「交换字符」的方式使两个字符串相同。 diff --git "a/Solutions/1254. \347\273\237\350\256\241\345\260\201\351\227\255\345\262\233\345\261\277\347\232\204\346\225\260\347\233\256.md" "b/Solutions/1254. \347\273\237\350\256\241\345\260\201\351\227\255\345\262\233\345\261\277\347\232\204\346\225\260\347\233\256.md" index a23bab48..bb6ef6f7 100644 --- "a/Solutions/1254. \347\273\237\350\256\241\345\260\201\351\227\255\345\262\233\345\261\277\347\232\204\346\225\260\347\233\256.md" +++ "b/Solutions/1254. \347\273\237\350\256\241\345\260\201\351\227\255\345\262\233\345\261\277\347\232\204\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、数组、矩阵 - 难度:中等 +## 题目链接 + +- [1254. 统计封闭岛屿的数目 - 力扣](https://leetcode.cn/problems/number-of-closed-islands/) + ## 题目大意 **描述**:给定一个二维矩阵 `grid`,每个位置要么是陆地(记号为 `0`)要么是水域(记号为 `1`)。 diff --git "a/Solutions/1266. \350\256\277\351\227\256\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\346\227\266\351\227\264.md" "b/Solutions/1266. \350\256\277\351\227\256\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\346\227\266\351\227\264.md" index 1fe14afe..d0b74705 100644 --- "a/Solutions/1266. \350\256\277\351\227\256\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\346\227\266\351\227\264.md" +++ "b/Solutions/1266. \350\256\277\351\227\256\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\346\227\266\351\227\264.md" @@ -3,6 +3,10 @@ - 标签:几何、数组、数学 - 难度:简单 +## 题目链接 + +- [1266. 访问所有点的最小时间 - 力扣](https://leetcode.cn/problems/minimum-time-visiting-all-points/) + ## 题目大意 **描述**:给定 $n$ 个点的整数坐标数组 $points$。其中 $points[i] = [xi, yi]$,表示第 $i$ 个点坐标为 $(xi, yi)$。可以按照以下规则在平面上移动: diff --git "a/Solutions/1268. \346\220\234\347\264\242\346\216\250\350\215\220\347\263\273\347\273\237.md" "b/Solutions/1268. \346\220\234\347\264\242\346\216\250\350\215\220\347\263\273\347\273\237.md" index 181f3d8c..c21c0e27 100644 --- "a/Solutions/1268. \346\220\234\347\264\242\346\216\250\350\215\220\347\263\273\347\273\237.md" +++ "b/Solutions/1268. \346\220\234\347\264\242\346\216\250\350\215\220\347\263\273\347\273\237.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、字符串 - 难度:中等 +## 题目链接 + +- [1268. 搜索推荐系统 - 力扣](https://leetcode.cn/problems/search-suggestions-system/) + ## 题目大意 给定一个产品数组 `products` 和一个字符串 `searchWord` ,`products` 数组中每个产品都是一个字符串。 diff --git "a/Solutions/1281. \346\225\264\346\225\260\347\232\204\345\220\204\344\275\215\347\247\257\345\222\214\344\271\213\345\267\256.md" "b/Solutions/1281. \346\225\264\346\225\260\347\232\204\345\220\204\344\275\215\347\247\257\345\222\214\344\271\213\345\267\256.md" index 6549c35b..44723f2c 100644 --- "a/Solutions/1281. \346\225\264\346\225\260\347\232\204\345\220\204\344\275\215\347\247\257\345\222\214\344\271\213\345\267\256.md" +++ "b/Solutions/1281. \346\225\264\346\225\260\347\232\204\345\220\204\344\275\215\347\247\257\345\222\214\344\271\213\345\267\256.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:简单 +## 题目链接 + +- [1281. 整数的各位积和之差 - 力扣](https://leetcode.cn/problems/subtract-the-product-and-sum-of-digits-of-an-integer/) + ## 题目大意 **描述**:给定一个整数 `n`。 diff --git "a/Solutions/1296. \345\210\222\345\210\206\346\225\260\347\273\204\344\270\272\350\277\236\347\273\255\346\225\260\345\255\227\347\232\204\351\233\206\345\220\210.md" "b/Solutions/1296. \345\210\222\345\210\206\346\225\260\347\273\204\344\270\272\350\277\236\347\273\255\346\225\260\345\255\227\347\232\204\351\233\206\345\220\210.md" index 60078b1a..313bde76 100644 --- "a/Solutions/1296. \345\210\222\345\210\206\346\225\260\347\273\204\344\270\272\350\277\236\347\273\255\346\225\260\345\255\227\347\232\204\351\233\206\345\220\210.md" +++ "b/Solutions/1296. \345\210\222\345\210\206\346\225\260\347\273\204\344\270\272\350\277\236\347\273\255\346\225\260\345\255\227\347\232\204\351\233\206\345\220\210.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、哈希表、排序 - 难度:中等 +## 题目链接 + +- [1296. 划分数组为连续数字的集合 - 力扣](https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/) + ## 题目大意 **描述**:给定一个整数数组 `nums` 和一个正整数 `k`。 diff --git "a/Solutions/1300. \350\275\254\345\217\230\346\225\260\347\273\204\345\220\216\346\234\200\346\216\245\350\277\221\347\233\256\346\240\207\345\200\274\347\232\204\346\225\260\347\273\204\345\222\214.md" "b/Solutions/1300. \350\275\254\345\217\230\346\225\260\347\273\204\345\220\216\346\234\200\346\216\245\350\277\221\347\233\256\346\240\207\345\200\274\347\232\204\346\225\260\347\273\204\345\222\214.md" index 512f0cf3..97575119 100644 --- "a/Solutions/1300. \350\275\254\345\217\230\346\225\260\347\273\204\345\220\216\346\234\200\346\216\245\350\277\221\347\233\256\346\240\207\345\200\274\347\232\204\346\225\260\347\273\204\345\222\214.md" +++ "b/Solutions/1300. \350\275\254\345\217\230\346\225\260\347\273\204\345\220\216\346\234\200\346\216\245\350\277\221\347\233\256\346\240\207\345\200\274\347\232\204\346\225\260\347\273\204\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、排序 - 难度:中等 +## 题目链接 + +- [1300. 转变数组后最接近目标值的数组和 - 力扣](https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/) + ## 题目大意 **描述**:给定一个整数数组 $arr$ 和一个目标值 $target$。 diff --git "a/Solutions/1305. \344\270\244\346\243\265\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\211\200\346\234\211\345\205\203\347\264\240.md" "b/Solutions/1305. \344\270\244\346\243\265\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\211\200\346\234\211\345\205\203\347\264\240.md" index 50dfdd16..ea60cc0a 100644 --- "a/Solutions/1305. \344\270\244\346\243\265\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\211\200\346\234\211\345\205\203\347\264\240.md" +++ "b/Solutions/1305. \344\270\244\346\243\265\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\211\200\346\234\211\345\205\203\347\264\240.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树、排序 - 难度:中等 +## 题目链接 + +- [1305. 两棵二叉搜索树中的所有元素 - 力扣](https://leetcode.cn/problems/all-elements-in-two-binary-search-trees/) + ## 题目大意 **描述**:给定两棵二叉搜索树的根节点 $root1$ 和 $root2$。 diff --git "a/Solutions/1310. \345\255\220\346\225\260\347\273\204\345\274\202\346\210\226\346\237\245\350\257\242.md" "b/Solutions/1310. \345\255\220\346\225\260\347\273\204\345\274\202\346\210\226\346\237\245\350\257\242.md" index d05586f2..65d58a15 100644 --- "a/Solutions/1310. \345\255\220\346\225\260\347\273\204\345\274\202\346\210\226\346\237\245\350\257\242.md" +++ "b/Solutions/1310. \345\255\220\346\225\260\347\273\204\345\274\202\346\210\226\346\237\245\350\257\242.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、前缀和 - 难度:中等 +## 题目链接 + +- [1310. 子数组异或查询 - 力扣](https://leetcode.cn/problems/xor-queries-of-a-subarray/) + ## 题目大意 **描述**:给定一个正整数数组 `arr`,再给定一个对应的查询数组 `queries`,其中 `queries[i] = [Li, Ri]`。 diff --git "a/Solutions/1317. \345\260\206\346\225\264\346\225\260\350\275\254\346\215\242\344\270\272\344\270\244\344\270\252\346\227\240\351\233\266\346\225\264\346\225\260\347\232\204\345\222\214.md" "b/Solutions/1317. \345\260\206\346\225\264\346\225\260\350\275\254\346\215\242\344\270\272\344\270\244\344\270\252\346\227\240\351\233\266\346\225\264\346\225\260\347\232\204\345\222\214.md" index 67db29e2..593e8550 100644 --- "a/Solutions/1317. \345\260\206\346\225\264\346\225\260\350\275\254\346\215\242\344\270\272\344\270\244\344\270\252\346\227\240\351\233\266\346\225\264\346\225\260\347\232\204\345\222\214.md" +++ "b/Solutions/1317. \345\260\206\346\225\264\346\225\260\350\275\254\346\215\242\344\270\272\344\270\244\344\270\252\346\227\240\351\233\266\346\225\264\346\225\260\347\232\204\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:简单 +## 题目链接 + +- [1317. 将整数转换为两个无零整数的和 - 力扣](https://leetcode.cn/problems/convert-integer-to-the-sum-of-two-no-zero-integers/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/1319. \350\277\236\351\200\232\347\275\221\347\273\234\347\232\204\346\223\215\344\275\234\346\254\241\346\225\260.md" "b/Solutions/1319. \350\277\236\351\200\232\347\275\221\347\273\234\347\232\204\346\223\215\344\275\234\346\254\241\346\225\260.md" index 78d2a0be..71e46f39 100644 --- "a/Solutions/1319. \350\277\236\351\200\232\347\275\221\347\273\234\347\232\204\346\223\215\344\275\234\346\254\241\346\225\260.md" +++ "b/Solutions/1319. \350\277\236\351\200\232\347\275\221\347\273\234\347\232\204\346\223\215\344\275\234\346\254\241\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 +## 题目链接 + +- [1319. 连通网络的操作次数 - 力扣](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) + ## 题目大意 **描述**:$n$ 台计算机通过网线连接成一个网络,计算机的编号从 $0$ 到 $n - 1$。线缆用 $comnnections$ 表示,其中 $connections[i] = [a, b]$ 表示连接了计算机 $a$ 和 $b$。 diff --git "a/Solutions/1343. \345\244\247\345\260\217\344\270\272 K \344\270\224\345\271\263\345\235\207\345\200\274\345\244\247\344\272\216\347\255\211\344\272\216\351\230\210\345\200\274\347\232\204\345\255\220\346\225\260\347\273\204\346\225\260\347\233\256.md" "b/Solutions/1343. \345\244\247\345\260\217\344\270\272 K \344\270\224\345\271\263\345\235\207\345\200\274\345\244\247\344\272\216\347\255\211\344\272\216\351\230\210\345\200\274\347\232\204\345\255\220\346\225\260\347\273\204\346\225\260\347\233\256.md" index 668fb137..a9693581 100644 --- "a/Solutions/1343. \345\244\247\345\260\217\344\270\272 K \344\270\224\345\271\263\345\235\207\345\200\274\345\244\247\344\272\216\347\255\211\344\272\216\351\230\210\345\200\274\347\232\204\345\255\220\346\225\260\347\273\204\346\225\260\347\233\256.md" +++ "b/Solutions/1343. \345\244\247\345\260\217\344\270\272 K \344\270\224\345\271\263\345\235\207\345\200\274\345\244\247\344\272\216\347\255\211\344\272\216\351\230\210\345\200\274\347\232\204\345\255\220\346\225\260\347\273\204\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:数组、滑动窗口 - 难度:中等 +## 题目链接 + +- [1343. 大小为 K 且平均值大于等于阈值的子数组数目 - 力扣](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) + ## 题目大意 **描述**:给定一个整数数组 $arr$ 和两个整数 $k$ 和 $threshold$。 diff --git "a/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" "b/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" index 5e878be4..e5c87169 100644 --- "a/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" +++ "b/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、动态规划、状态压缩、矩阵 - 难度:困难 +## 题目链接 + +- [1349. 参加考试的最大学生数 - 力扣](https://leetcode.cn/problems/maximum-students-taking-exam/) + ## 题目大意 **描述**:给定一个 $m \times n$ 大小的矩阵 $seats$ 表示教室中的座位分布,其中如果座位是坏的(不可用),就用 `'#'` 表示,如果座位是好的,就用 `'.'` 表示。 diff --git "a/Solutions/1358. \345\214\205\345\220\253\346\211\200\346\234\211\344\270\211\347\247\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262\346\225\260\347\233\256.md" "b/Solutions/1358. \345\214\205\345\220\253\346\211\200\346\234\211\344\270\211\347\247\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262\346\225\260\347\233\256.md" index 61652253..30aad01f 100644 --- "a/Solutions/1358. \345\214\205\345\220\253\346\211\200\346\234\211\344\270\211\347\247\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262\346\225\260\347\233\256.md" +++ "b/Solutions/1358. \345\214\205\345\220\253\346\211\200\346\234\211\344\270\211\347\247\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、滑动窗口 - 难度:中等 +## 题目链接 + +- [1358. 包含所有三种字符的子字符串数目 - 力扣](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) + ## 题目大意 给你一个字符串 `s` ,`s` 只包含三种字符 `a`, `b` 和 `c`。 diff --git "a/Solutions/1381. \350\256\276\350\256\241\344\270\200\344\270\252\346\224\257\346\214\201\345\242\236\351\207\217\346\223\215\344\275\234\347\232\204\346\240\210.md" "b/Solutions/1381. \350\256\276\350\256\241\344\270\200\344\270\252\346\224\257\346\214\201\345\242\236\351\207\217\346\223\215\344\275\234\347\232\204\346\240\210.md" index 5eabdd7c..07bf7afd 100644 --- "a/Solutions/1381. \350\256\276\350\256\241\344\270\200\344\270\252\346\224\257\346\214\201\345\242\236\351\207\217\346\223\215\344\275\234\347\232\204\346\240\210.md" +++ "b/Solutions/1381. \350\256\276\350\256\241\344\270\200\344\270\252\346\224\257\346\214\201\345\242\236\351\207\217\346\223\215\344\275\234\347\232\204\346\240\210.md" @@ -3,6 +3,10 @@ - 标签:栈、设计、数组 - 难度:中等 +## 题目链接 + +- [1381. 设计一个支持增量操作的栈 - 力扣](https://leetcode.cn/problems/design-a-stack-with-increment-operation/) + ## 题目大意 **要求**:设计一个支持对其元素进行增量操作的栈。 diff --git "a/Solutions/1400. \346\236\204\351\200\240 K \344\270\252\345\233\236\346\226\207\345\255\227\347\254\246\344\270\262.md" "b/Solutions/1400. \346\236\204\351\200\240 K \344\270\252\345\233\236\346\226\207\345\255\227\347\254\246\344\270\262.md" index 0ae8ef97..210aa26d 100644 --- "a/Solutions/1400. \346\236\204\351\200\240 K \344\270\252\345\233\236\346\226\207\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/1400. \346\236\204\351\200\240 K \344\270\252\345\233\236\346\226\207\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:贪心、哈希表、字符串、计数 - 难度:中等 +## 题目链接 + +- [1400. 构造 K 个回文字符串 - 力扣](https://leetcode.cn/problems/construct-k-palindrome-strings/) + ## 题目大意 **描述**:给定一个字符串 $s$ 和一个整数 $k$。 diff --git "a/Solutions/1408. \346\225\260\347\273\204\344\270\255\347\232\204\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" "b/Solutions/1408. \346\225\260\347\273\204\344\270\255\347\232\204\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" index ffc9ea52..3a985c04 100644 --- "a/Solutions/1408. \346\225\260\347\273\204\344\270\255\347\232\204\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" +++ "b/Solutions/1408. \346\225\260\347\273\204\344\270\255\347\232\204\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" @@ -3,6 +3,10 @@ - 标签:数组、字符串、字符串匹配 - 难度:简单 +## 题目链接 + +- [1408. 数组中的字符串匹配 - 力扣](https://leetcode.cn/problems/string-matching-in-an-array/) + ## 题目大意 **描述**:给定一个字符串数组 `words`,数组中的每个字符串都可以看作是一个单词。如果可以删除 `words[j]` 最左侧和最右侧的若干字符得到 `word[i]`,那么字符串 `words[i]` 就是 `words[j]` 的一个子字符串。 diff --git "a/Solutions/1422. \345\210\206\345\211\262\345\255\227\347\254\246\344\270\262\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" "b/Solutions/1422. \345\210\206\345\211\262\345\255\227\347\254\246\344\270\262\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" index e6d29a01..e0313efb 100644 --- "a/Solutions/1422. \345\210\206\345\211\262\345\255\227\347\254\246\344\270\262\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" +++ "b/Solutions/1422. \345\210\206\345\211\262\345\255\227\347\254\246\344\270\262\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:简单 +## 题目链接 + +- [1422. 分割字符串的最大得分 - 力扣](https://leetcode.cn/problems/maximum-score-after-splitting-a-string/) + ## 题目大意 **描述**:给定一个由若干 $0$ 和 $1$ 组成的字符串。将字符串分割成两个非空子字符串的得分为:左子字符串中 $0$ 的数量 + 右子字符串中 $1$ 的数量。 diff --git "a/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" "b/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" index e5d7eae1..451152d9 100644 --- "a/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" +++ "b/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、前缀和、滑动窗口 - 难度:中等 +## 题目链接 + +- [1423. 可获得的最大点数 - 力扣](https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/) + ## 题目大意 将卡牌排成一行,给定每张卡片的点数数组 `cardPoints`,其中 `cardPoints[i]` 表示第 `i` 张卡牌对应点数。 diff --git "a/Solutions/1438. \347\273\235\345\257\271\345\267\256\344\270\215\350\266\205\350\277\207\351\231\220\345\210\266\347\232\204\346\234\200\351\225\277\350\277\236\347\273\255\345\255\220\346\225\260\347\273\204.md" "b/Solutions/1438. \347\273\235\345\257\271\345\267\256\344\270\215\350\266\205\350\277\207\351\231\220\345\210\266\347\232\204\346\234\200\351\225\277\350\277\236\347\273\255\345\255\220\346\225\260\347\273\204.md" index 100f1814..6c9ed18d 100644 --- "a/Solutions/1438. \347\273\235\345\257\271\345\267\256\344\270\215\350\266\205\350\277\207\351\231\220\345\210\266\347\232\204\346\234\200\351\225\277\350\277\236\347\273\255\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/1438. \347\273\235\345\257\271\345\267\256\344\270\215\350\266\205\350\277\207\351\231\220\345\210\266\347\232\204\346\234\200\351\225\277\350\277\236\347\273\255\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) - 难度:中等 +## 题目链接 + +- [1438. 绝对差不超过限制的最长连续子数组 - 力扣](https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) + ## 题目大意 给定一个整数数组 `nums`,和一个表示限制的整数 `limit`。 diff --git "a/Solutions/1446. \350\277\236\347\273\255\345\255\227\347\254\246.md" "b/Solutions/1446. \350\277\236\347\273\255\345\255\227\347\254\246.md" index 4e125760..b582cdc7 100644 --- "a/Solutions/1446. \350\277\236\347\273\255\345\255\227\347\254\246.md" +++ "b/Solutions/1446. \350\277\236\347\273\255\345\255\227\347\254\246.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:简单 +## 题目链接 + +- [1446. 连续字符 - 力扣](https://leetcode.cn/problems/consecutive-characters/) + ## 题目大意 给你一个字符串 `s` ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。 diff --git "a/Solutions/1447. \346\234\200\347\256\200\345\210\206\346\225\260.md" "b/Solutions/1447. \346\234\200\347\256\200\345\210\206\346\225\260.md" index f81f7e4a..003a4cf1 100644 --- "a/Solutions/1447. \346\234\200\347\256\200\345\210\206\346\225\260.md" +++ "b/Solutions/1447. \346\234\200\347\256\200\345\210\206\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数学、字符串、数论 - 难度:中等 +## 题目链接 + +- [1447. 最简分数 - 力扣](https://leetcode.cn/problems/simplified-fractions/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/1449. \346\225\260\344\275\215\346\210\220\346\234\254\345\222\214\344\270\272\347\233\256\346\240\207\345\200\274\347\232\204\346\234\200\345\244\247\346\225\260\345\255\227.md" "b/Solutions/1449. \346\225\260\344\275\215\346\210\220\346\234\254\345\222\214\344\270\272\347\233\256\346\240\207\345\200\274\347\232\204\346\234\200\345\244\247\346\225\260\345\255\227.md" index 8a5859e0..7fd832ee 100644 --- "a/Solutions/1449. \346\225\260\344\275\215\346\210\220\346\234\254\345\222\214\344\270\272\347\233\256\346\240\207\345\200\274\347\232\204\346\234\200\345\244\247\346\225\260\345\255\227.md" +++ "b/Solutions/1449. \346\225\260\344\275\215\346\210\220\346\234\254\345\222\214\344\270\272\347\233\256\346\240\207\345\200\274\347\232\204\346\234\200\345\244\247\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:困难 +## 题目链接 + +- [1449. 数位成本和为目标值的最大数字 - 力扣](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) + ## 题目大意 **描述**:给定一个整数数组 $cost$ 和一个整数 $target$。现在从 `""` 开始,不断通过以下规则得到一个新的整数: diff --git "a/Solutions/1450. \345\234\250\346\227\242\345\256\232\346\227\266\351\227\264\345\201\232\344\275\234\344\270\232\347\232\204\345\255\246\347\224\237\344\272\272\346\225\260.md" "b/Solutions/1450. \345\234\250\346\227\242\345\256\232\346\227\266\351\227\264\345\201\232\344\275\234\344\270\232\347\232\204\345\255\246\347\224\237\344\272\272\346\225\260.md" index 3a46fb9c..434ade0f 100644 --- "a/Solutions/1450. \345\234\250\346\227\242\345\256\232\346\227\266\351\227\264\345\201\232\344\275\234\344\270\232\347\232\204\345\255\246\347\224\237\344\272\272\346\225\260.md" +++ "b/Solutions/1450. \345\234\250\346\227\242\345\256\232\346\227\266\351\227\264\345\201\232\344\275\234\344\270\232\347\232\204\345\255\246\347\224\237\344\272\272\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组 - 难度:简单 +## 题目链接 + +- [1450. 在既定时间做作业的学生人数 - 力扣](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) + ## 题目大意 **描述**:给你两个长度相等的整数数组,一个表示开始时间的数组 $startTime$ ,另一个表示结束时间的数组 $endTime$。再给定一个整数 $queryTime$ 作为查询时间。已知第 $i$ 名学生在 $startTime[i]$ 时开始写作业并于 $endTime[i]$ 时完成作业。 diff --git "a/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" "b/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" index 6424f7a9..167fba01 100644 --- "a/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" +++ "b/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:字符串、滑动窗口 - 难度:中等 +## 题目链接 + +- [1456. 定长子串中元音的最大数目 - 力扣](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) + ## 题目大意 给定字符串 `s` 和整数 `k`。 diff --git "a/Solutions/1480. \344\270\200\347\273\264\346\225\260\347\273\204\347\232\204\345\212\250\346\200\201\345\222\214.md" "b/Solutions/1480. \344\270\200\347\273\264\346\225\260\347\273\204\347\232\204\345\212\250\346\200\201\345\222\214.md" index b2a8b0da..575a8ad0 100644 --- "a/Solutions/1480. \344\270\200\347\273\264\346\225\260\347\273\204\347\232\204\345\212\250\346\200\201\345\222\214.md" +++ "b/Solutions/1480. \344\270\200\347\273\264\346\225\260\347\273\204\347\232\204\345\212\250\346\200\201\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、前缀和 - 难度:简单 +## 题目链接 + +- [1480. 一维数组的动态和 - 力扣](https://leetcode.cn/problems/running-sum-of-1d-array/) + ## 题目大意 **描述**:给定一个数组 $nums$。 diff --git "a/Solutions/1482. \345\210\266\344\275\234 m \346\235\237\350\212\261\346\211\200\351\234\200\347\232\204\346\234\200\345\260\221\345\244\251\346\225\260.md" "b/Solutions/1482. \345\210\266\344\275\234 m \346\235\237\350\212\261\346\211\200\351\234\200\347\232\204\346\234\200\345\260\221\345\244\251\346\225\260.md" index 6615d1b1..78ead098 100644 --- "a/Solutions/1482. \345\210\266\344\275\234 m \346\235\237\350\212\261\346\211\200\351\234\200\347\232\204\346\234\200\345\260\221\345\244\251\346\225\260.md" +++ "b/Solutions/1482. \345\210\266\344\275\234 m \346\235\237\350\212\261\346\211\200\351\234\200\347\232\204\346\234\200\345\260\221\345\244\251\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:中等 +## 题目链接 + +- [1482. 制作 m 束花所需的最少天数 - 力扣](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) + ## 题目大意 给定一个整数数组 `bloomDay`,以及两个整数 `m` 和 `k`。`bloomDay` 代表花朵盛开的时间,`bloomDay[i]` 表示第 `i` 朵花的盛开时间。盛开后就可以用于一束花中。 diff --git "a/Solutions/1486. \346\225\260\347\273\204\345\274\202\346\210\226\346\223\215\344\275\234.md" "b/Solutions/1486. \346\225\260\347\273\204\345\274\202\346\210\226\346\223\215\344\275\234.md" index c7f4486e..dd548316 100644 --- "a/Solutions/1486. \346\225\260\347\273\204\345\274\202\346\210\226\346\223\215\344\275\234.md" +++ "b/Solutions/1486. \346\225\260\347\273\204\345\274\202\346\210\226\346\223\215\344\275\234.md" @@ -3,6 +3,10 @@ - 标签:位运算、数学 - 难度:简单 +## 题目链接 + +- [1486. 数组异或操作 - 力扣](https://leetcode.cn/problems/xor-operation-in-an-array/) + ## 题目大意 给定两个整数 n、start。数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)。n 为数组长度。返回数组 nums 中所有元素按位异或(XOR)后得到的结果。 diff --git "a/Solutions/1491. \345\216\273\346\216\211\346\234\200\344\275\216\345\267\245\350\265\204\345\222\214\346\234\200\351\253\230\345\267\245\350\265\204\345\220\216\347\232\204\345\267\245\350\265\204\345\271\263\345\235\207\345\200\274.md" "b/Solutions/1491. \345\216\273\346\216\211\346\234\200\344\275\216\345\267\245\350\265\204\345\222\214\346\234\200\351\253\230\345\267\245\350\265\204\345\220\216\347\232\204\345\267\245\350\265\204\345\271\263\345\235\207\345\200\274.md" index c5bbf47a..ff7774c8 100644 --- "a/Solutions/1491. \345\216\273\346\216\211\346\234\200\344\275\216\345\267\245\350\265\204\345\222\214\346\234\200\351\253\230\345\267\245\350\265\204\345\220\216\347\232\204\345\267\245\350\265\204\345\271\263\345\235\207\345\200\274.md" +++ "b/Solutions/1491. \345\216\273\346\216\211\346\234\200\344\275\216\345\267\245\350\265\204\345\222\214\346\234\200\351\253\230\345\267\245\350\265\204\345\220\216\347\232\204\345\267\245\350\265\204\345\271\263\345\235\207\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:数组、排序 - 难度:简单 +## 题目链接 + +- [1491. 去掉最低工资和最高工资后的工资平均值 - 力扣](https://leetcode.cn/problems/average-salary-excluding-the-minimum-and-maximum-salary/) + ## 题目大意 **描述**:给定一个整数数组 `salary`,数组中的每一个数都是唯一的,其中 `salary[i]` 是第 `i` 个员工的工资。 diff --git "a/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" "b/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" index b99a1782..57330f51 100644 --- "a/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、滑动窗口 - 难度:中等 +## 题目链接 + +- [1493. 删掉一个元素以后全为 1 的最长子数组 - 力扣](https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/) + ## 题目大意 给定一个二进制数组 `nums`,需要 diff --git "a/Solutions/1502. \345\210\244\346\226\255\350\203\275\345\220\246\345\275\242\346\210\220\347\255\211\345\267\256\346\225\260\345\210\227.md" "b/Solutions/1502. \345\210\244\346\226\255\350\203\275\345\220\246\345\275\242\346\210\220\347\255\211\345\267\256\346\225\260\345\210\227.md" index 523a95d7..a3cdf284 100644 --- "a/Solutions/1502. \345\210\244\346\226\255\350\203\275\345\220\246\345\275\242\346\210\220\347\255\211\345\267\256\346\225\260\345\210\227.md" +++ "b/Solutions/1502. \345\210\244\346\226\255\350\203\275\345\220\246\345\275\242\346\210\220\347\255\211\345\267\256\346\225\260\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:数组、排序 - 难度:简单 +## 题目链接 + +- [1502. 判断能否形成等差数列 - 力扣](https://leetcode.cn/problems/can-make-arithmetic-progression-from-sequence/) + ## 题目大意 **描述**:给定一个数字数组 `arr`。如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数序就称为等差数列。 diff --git "a/Solutions/1507. \350\275\254\345\217\230\346\227\245\346\234\237\346\240\274\345\274\217.md" "b/Solutions/1507. \350\275\254\345\217\230\346\227\245\346\234\237\346\240\274\345\274\217.md" index 33e04697..32c41dc6 100644 --- "a/Solutions/1507. \350\275\254\345\217\230\346\227\245\346\234\237\346\240\274\345\274\217.md" +++ "b/Solutions/1507. \350\275\254\345\217\230\346\227\245\346\234\237\346\240\274\345\274\217.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:简单 +## 题目链接 + +- [1507. 转变日期格式 - 力扣](https://leetcode.cn/problems/reformat-date/) + ## 题目大意 **描述**:给定一个字符串 $date$,它的格式为 `Day Month Year` ,其中: diff --git "a/Solutions/1523. \345\234\250\345\214\272\351\227\264\350\214\203\345\233\264\345\206\205\347\273\237\350\256\241\345\245\207\346\225\260\346\225\260\347\233\256.md" "b/Solutions/1523. \345\234\250\345\214\272\351\227\264\350\214\203\345\233\264\345\206\205\347\273\237\350\256\241\345\245\207\346\225\260\346\225\260\347\233\256.md" index 05e35d92..fb976331 100644 --- "a/Solutions/1523. \345\234\250\345\214\272\351\227\264\350\214\203\345\233\264\345\206\205\347\273\237\350\256\241\345\245\207\346\225\260\346\225\260\347\233\256.md" +++ "b/Solutions/1523. \345\234\250\345\214\272\351\227\264\350\214\203\345\233\264\345\206\205\347\273\237\350\256\241\345\245\207\346\225\260\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:简单 +## 题目链接 + +- [1523. 在区间范围内统计奇数数目 - 力扣](https://leetcode.cn/problems/count-odd-numbers-in-an-interval-range/) + ## 题目大意 **描述**:给定两个非负整数 `low` 和 `high`。 diff --git "a/Solutions/1534. \347\273\237\350\256\241\345\245\275\344\270\211\345\205\203\347\273\204.md" "b/Solutions/1534. \347\273\237\350\256\241\345\245\275\344\270\211\345\205\203\347\273\204.md" index 34311f48..2408dba8 100644 --- "a/Solutions/1534. \347\273\237\350\256\241\345\245\275\344\270\211\345\205\203\347\273\204.md" +++ "b/Solutions/1534. \347\273\237\350\256\241\345\245\275\344\270\211\345\205\203\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、枚举 - 难度:简单 +## 题目链接 + +- [1534. 统计好三元组 - 力扣](https://leetcode.cn/problems/count-good-triplets/) + ## 题目大意 **描述**:给定一个整数数组 $arr$,以及 $a$、$b$、$c$ 三个整数。 diff --git "a/Solutions/1547. \345\210\207\346\243\215\345\255\220\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" "b/Solutions/1547. \345\210\207\346\243\215\345\255\220\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" index eb0c67fe..cba7056e 100644 --- "a/Solutions/1547. \345\210\207\346\243\215\345\255\220\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" +++ "b/Solutions/1547. \345\210\207\346\243\215\345\255\220\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、排序 - 难度:困难 +## 题目链接 + +- [1547. 切棍子的最小成本 - 力扣](https://leetcode.cn/problems/minimum-cost-to-cut-a-stick/) + ## 题目大意 **描述**:给定一个整数 $n$,代表一根长度为 $n$ 个单位的木根,木棍从 $0 \sim n$ 标记了若干位置。例如,长度为 $6$ 的棍子可以标记如下: diff --git "a/Solutions/1551. \344\275\277\346\225\260\347\273\204\344\270\255\346\211\200\346\234\211\345\205\203\347\264\240\347\233\270\347\255\211\347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" "b/Solutions/1551. \344\275\277\346\225\260\347\273\204\344\270\255\346\211\200\346\234\211\345\205\203\347\264\240\347\233\270\347\255\211\347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" index 485dbc83..55419448 100644 --- "a/Solutions/1551. \344\275\277\346\225\260\347\273\204\344\270\255\346\211\200\346\234\211\345\205\203\347\264\240\347\233\270\347\255\211\347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" +++ "b/Solutions/1551. \344\275\277\346\225\260\347\273\204\344\270\255\346\211\200\346\234\211\345\205\203\347\264\240\347\233\270\347\255\211\347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:中等 +## 题目链接 + +- [1551. 使数组中所有元素相等的最小操作数 - 力扣](https://leetcode.cn/problems/minimum-operations-to-make-array-equal/) + ## 题目大意 **描述**:存在一个长度为 $n$ 的数组 $arr$,其中 $arr[i] = (2 \times i) + 1$,$(0 \le i < n)$。 diff --git "a/Solutions/1556. \345\215\203\344\275\215\345\210\206\351\232\224\346\225\260.md" "b/Solutions/1556. \345\215\203\344\275\215\345\210\206\351\232\224\346\225\260.md" index 97de9a07..fa7c57d1 100644 --- "a/Solutions/1556. \345\215\203\344\275\215\345\210\206\351\232\224\346\225\260.md" +++ "b/Solutions/1556. \345\215\203\344\275\215\345\210\206\351\232\224\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:简单 +## 题目链接 + +- [1556. 千位分隔数 - 力扣](https://leetcode.cn/problems/thousand-separator/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/1561. \344\275\240\345\217\257\344\273\245\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\241\254\345\270\201\346\225\260\347\233\256.md" "b/Solutions/1561. \344\275\240\345\217\257\344\273\245\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\241\254\345\270\201\346\225\260\347\233\256.md" index fd8ae3ed..e2c8c5d7 100644 --- "a/Solutions/1561. \344\275\240\345\217\257\344\273\245\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\241\254\345\270\201\346\225\260\347\233\256.md" +++ "b/Solutions/1561. \344\275\240\345\217\257\344\273\245\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\241\254\345\270\201\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、数学、博弈、排序 - 难度:中等 +## 题目链接 + +- [1561. 你可以获得的最大硬币数目 - 力扣](https://leetcode.cn/problems/maximum-number-of-coins-you-can-get/) + ## 题目大意 有 `3*n` 堆数目不一的硬币,三个人按照下面的规则分硬币: diff --git "a/Solutions/1567. \344\271\230\347\247\257\344\270\272\346\255\243\346\225\260\347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204\351\225\277\345\272\246.md" "b/Solutions/1567. \344\271\230\347\247\257\344\270\272\346\255\243\346\225\260\347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204\351\225\277\345\272\246.md" index 223a764c..fd7d0ae1 100644 --- "a/Solutions/1567. \344\271\230\347\247\257\344\270\272\346\255\243\346\225\260\347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204\351\225\277\345\272\246.md" +++ "b/Solutions/1567. \344\271\230\347\247\257\344\270\272\346\255\243\346\225\260\347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204\351\225\277\345\272\246.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、动态规划 - 难度:中等 +## 题目链接 + +- [1567. 乘积为正数的最长子数组长度 - 力扣](https://leetcode.cn/problems/maximum-length-of-subarray-with-positive-product/) + ## 题目大意 给定一个整数数组 `nums`。 diff --git "a/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" "b/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" index a2a0e739..969c397c 100644 --- "a/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" +++ "b/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、回溯 - 难度:中等 +## 题目链接 + +- [1593. 拆分字符串使唯一子字符串的数目最大 - 力扣](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) + ## 题目大意 **描述**:给定一个字符串 $s$。将字符串 $s$ 拆分后可以得到若干非空子字符串,这些子字符串连接后应当能够还原为原字符串。但是拆分出来的每个子字符串都必须是唯一的 。 diff --git "a/Solutions/1595. \350\277\236\351\200\232\344\270\244\347\273\204\347\202\271\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" "b/Solutions/1595. \350\277\236\351\200\232\344\270\244\347\273\204\347\202\271\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" index 879b7ae5..13e97a00 100644 --- "a/Solutions/1595. \350\277\236\351\200\232\344\270\244\347\273\204\347\202\271\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" +++ "b/Solutions/1595. \350\277\236\351\200\232\344\270\244\347\273\204\347\202\271\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、动态规划、状态压缩、矩阵 - 难度:困难 +## 题目链接 + +- [1595. 连通两组点的最小成本 - 力扣](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) + ## 题目大意 **描述**:有两组点,其中一组中有 $size_1$ 个点,第二组中有 $size_2$ 个点,且 $size_1 \ge size_2$。现在给定一个大小为 $size_1 \times size_2$ 的二维数组 $cost$ 用于表示两组点任意两点之间的链接成本。其中 $cost[i][j]$ 表示第一组中第 $i$ 个点与第二组中第 $j$ 个点的链接成本。 diff --git "a/Solutions/1603. \350\256\276\350\256\241\345\201\234\350\275\246\347\263\273\347\273\237.md" "b/Solutions/1603. \350\256\276\350\256\241\345\201\234\350\275\246\347\263\273\347\273\237.md" index d09f72cd..d5bab91e 100644 --- "a/Solutions/1603. \350\256\276\350\256\241\345\201\234\350\275\246\347\263\273\347\273\237.md" +++ "b/Solutions/1603. \350\256\276\350\256\241\345\201\234\350\275\246\347\263\273\347\273\237.md" @@ -3,6 +3,10 @@ - 标签:设计、计数、模拟 - 难度:简单 +## 题目链接 + +- [1603. 设计停车系统 - 力扣](https://leetcode.cn/problems/design-parking-system/) + ## 题目大意 给一个停车场设计一个停车系统。停车场总共有三种尺寸的车位:大、中、小,每种尺寸的车位分别有固定数目。 diff --git "a/Solutions/1605. \347\273\231\345\256\232\350\241\214\345\222\214\345\210\227\347\232\204\345\222\214\346\261\202\345\217\257\350\241\214\347\237\251\351\230\265.md" "b/Solutions/1605. \347\273\231\345\256\232\350\241\214\345\222\214\345\210\227\347\232\204\345\222\214\346\261\202\345\217\257\350\241\214\347\237\251\351\230\265.md" index fd3c48ea..8892199c 100644 --- "a/Solutions/1605. \347\273\231\345\256\232\350\241\214\345\222\214\345\210\227\347\232\204\345\222\214\346\261\202\345\217\257\350\241\214\347\237\251\351\230\265.md" +++ "b/Solutions/1605. \347\273\231\345\256\232\350\241\214\345\222\214\345\210\227\347\232\204\345\222\214\346\261\202\345\217\257\350\241\214\347\237\251\351\230\265.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、矩阵 - 难度:中等 +## 题目链接 + +- [1605. 给定行和列的和求可行矩阵 - 力扣](https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/) + ## 题目大意 **描述**:给你两个非负整数数组 `rowSum` 和 `colSum` ,其中 `rowSum[i]` 是二维矩阵中第 `i` 行元素的和,`colSum[j]` 是第 `j` 列元素的和。换句话说,我们不知道矩阵里的每个元素,只知道每一行的和,以及每一列的和。 diff --git "a/Solutions/1617. \347\273\237\350\256\241\345\255\220\346\240\221\344\270\255\345\237\216\345\270\202\344\271\213\351\227\264\346\234\200\345\244\247\350\267\235\347\246\273.md" "b/Solutions/1617. \347\273\237\350\256\241\345\255\220\346\240\221\344\270\255\345\237\216\345\270\202\344\271\213\351\227\264\346\234\200\345\244\247\350\267\235\347\246\273.md" index 6100496d..dcf64b7b 100644 --- "a/Solutions/1617. \347\273\237\350\256\241\345\255\220\346\240\221\344\270\255\345\237\216\345\270\202\344\271\213\351\227\264\346\234\200\345\244\247\350\267\235\347\246\273.md" +++ "b/Solutions/1617. \347\273\237\350\256\241\345\255\220\346\240\221\344\270\255\345\237\216\345\270\202\344\271\213\351\227\264\346\234\200\345\244\247\350\267\235\347\246\273.md" @@ -3,6 +3,10 @@ - 标签:位运算、树、动态规划、状态压缩、枚举 - 难度:困难 +## 题目链接 + +- [1617. 统计子树中城市之间最大距离 - 力扣](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) + ## 题目大意 **描述**:给定一个整数 $n$,代表 $n$ 个城市,城市编号为 $1 \sim n$。同时给定一个大小为 $n - 1$ 的数组 $edges$,其中 $edges[i] = [u_i, v_i]$ 表示城市 $u_i$ 和 $v_i$ 之间有一条双向边。题目保证任意城市之间只有唯一的一条路径。换句话说,所有城市形成了一棵树。 diff --git "a/Solutions/1631. \346\234\200\345\260\217\344\275\223\345\212\233\346\266\210\350\200\227\350\267\257\345\276\204.md" "b/Solutions/1631. \346\234\200\345\260\217\344\275\223\345\212\233\346\266\210\350\200\227\350\267\257\345\276\204.md" index ce8b4d54..ed99a9b9 100644 --- "a/Solutions/1631. \346\234\200\345\260\217\344\275\223\345\212\233\346\266\210\350\200\227\350\267\257\345\276\204.md" +++ "b/Solutions/1631. \346\234\200\345\260\217\344\275\223\345\212\233\346\266\210\350\200\227\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) - 难度:中等 +## 题目链接 + +- [1631. 最小体力消耗路径 - 力扣](https://leetcode.cn/problems/path-with-minimum-effort/) + ## 题目大意 **描述**:给定一个 $rows \times cols$ 大小的二维数组 $heights$,其中 $heights[i][j]$ 表示为位置 $(i, j)$ 的高度。 diff --git "a/Solutions/1646. \350\216\267\345\217\226\347\224\237\346\210\220\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\244\247\345\200\274.md" "b/Solutions/1646. \350\216\267\345\217\226\347\224\237\346\210\220\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\244\247\345\200\274.md" index 8358597d..df12ff9c 100644 --- "a/Solutions/1646. \350\216\267\345\217\226\347\224\237\346\210\220\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\244\247\345\200\274.md" +++ "b/Solutions/1646. \350\216\267\345\217\226\347\224\237\346\210\220\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\244\247\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、模拟 - 难度:简单 +## 题目链接 + +- [1646. 获取生成数组中的最大值 - 力扣](https://leetcode.cn/problems/get-maximum-in-generated-array/) + ## 题目大意 **描述**:给定一个整数 $n$,按照下述规则生成一个长度为 $n + 1$ 的数组 $nums$: diff --git "a/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" "b/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" index 8244e574..78af2544 100644 --- "a/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" +++ "b/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、二分查找、前缀和、滑动窗口 - 难度:中等 +## 题目链接 + +- [1658. 将 x 减到 0 的最小操作数 - 力扣](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) + ## 题目大意 给你一个整数数组 `nums` 和一个整数 `x` 。每一次操作时,你应当移除数组 `nums` 最左边或最右边的元素,然后从 `x` 中减去该元素的值。请注意,需要修改数组以供接下来的操作使用。 diff --git "a/Solutions/1672. \346\234\200\345\257\214\346\234\211\345\256\242\346\210\267\347\232\204\350\265\204\344\272\247\346\200\273\351\207\217.md" "b/Solutions/1672. \346\234\200\345\257\214\346\234\211\345\256\242\346\210\267\347\232\204\350\265\204\344\272\247\346\200\273\351\207\217.md" index e48b4072..9e0f6c7b 100644 --- "a/Solutions/1672. \346\234\200\345\257\214\346\234\211\345\256\242\346\210\267\347\232\204\350\265\204\344\272\247\346\200\273\351\207\217.md" +++ "b/Solutions/1672. \346\234\200\345\257\214\346\234\211\345\256\242\346\210\267\347\232\204\350\265\204\344\272\247\346\200\273\351\207\217.md" @@ -3,6 +3,10 @@ - 标签:数组、矩阵 - 难度:简单 +## 题目链接 + +- [1672. 最富有客户的资产总量 - 力扣](https://leetcode.cn/problems/richest-customer-wealth/) + ## 题目大意 **描述**:给定一个 $m \times n$ 的整数网格 $accounts$,其中 $accounts[i][j]$ 是第 $i$ 位客户在第 $j$ 家银行托管的资产数量。 diff --git "a/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" "b/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" index 7f878721..592590ee 100644 --- "a/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" +++ "b/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、滑动窗口 - 难度:中等 +## 题目链接 + +- [1695. 删除子数组的最大得分 - 力扣](https://leetcode.cn/problems/maximum-erasure-value/) + ## 题目大意 给你一个正整数数组 `nums`,从中删除一个含有若干不同元素的子数组。删除子数组的「得分」就是子数组各元素之和 。 diff --git "a/Solutions/1698. \345\255\227\347\254\246\344\270\262\347\232\204\344\270\215\345\220\214\345\255\220\345\255\227\347\254\246\344\270\262\344\270\252\346\225\260.md" "b/Solutions/1698. \345\255\227\347\254\246\344\270\262\347\232\204\344\270\215\345\220\214\345\255\220\345\255\227\347\254\246\344\270\262\344\270\252\346\225\260.md" index b258b851..7ba8f861 100644 --- "a/Solutions/1698. \345\255\227\347\254\246\344\270\262\347\232\204\344\270\215\345\220\214\345\255\220\345\255\227\347\254\246\344\270\262\344\270\252\346\225\260.md" +++ "b/Solutions/1698. \345\255\227\347\254\246\344\270\262\347\232\204\344\270\215\345\220\214\345\255\220\345\255\227\347\254\246\344\270\262\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:字典树、字符串、后缀数组、哈希函数、滚动哈希 - 难度:中等 +## 题目链接 + +- [1698. 字符串的不同子字符串个数 - 力扣](https://leetcode.cn/problems/number-of-distinct-substrings-in-a-string/) + ## 题目大意 给定一个字符串 `s`。 diff --git "a/Solutions/1710. \345\215\241\350\275\246\344\270\212\347\232\204\346\234\200\345\244\247\345\215\225\345\205\203\346\225\260.md" "b/Solutions/1710. \345\215\241\350\275\246\344\270\212\347\232\204\346\234\200\345\244\247\345\215\225\345\205\203\346\225\260.md" index 290ebf1a..0296c933 100644 --- "a/Solutions/1710. \345\215\241\350\275\246\344\270\212\347\232\204\346\234\200\345\244\247\345\215\225\345\205\203\346\225\260.md" +++ "b/Solutions/1710. \345\215\241\350\275\246\344\270\212\347\232\204\346\234\200\345\244\247\345\215\225\345\205\203\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、排序 - 难度:简单 +## 题目链接 + +- [1710. 卡车上的最大单元数 - 力扣](https://leetcode.cn/problems/maximum-units-on-a-truck/) + ## 题目大意 **描述**:现在需要将一些箱子装在一辆卡车上。给定一个二维数组 $boxTypes$,其中 $boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi]$。 diff --git "a/Solutions/1716. \350\256\241\347\256\227\345\212\233\346\211\243\351\223\266\350\241\214\347\232\204\351\222\261.md" "b/Solutions/1716. \350\256\241\347\256\227\345\212\233\346\211\243\351\223\266\350\241\214\347\232\204\351\222\261.md" index a7f16813..cd031eae 100644 --- "a/Solutions/1716. \350\256\241\347\256\227\345\212\233\346\211\243\351\223\266\350\241\214\347\232\204\351\222\261.md" +++ "b/Solutions/1716. \350\256\241\347\256\227\345\212\233\346\211\243\351\223\266\350\241\214\347\232\204\351\222\261.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:简单 +## 题目链接 + +- [1716. 计算力扣银行的钱 - 力扣](https://leetcode.cn/problems/calculate-money-in-leetcode-bank/) + ## 题目大意 **描述**:Hercy 每天都往力扣银行里存钱。 diff --git "a/Solutions/1720. \350\247\243\347\240\201\345\274\202\346\210\226\345\220\216\347\232\204\346\225\260\347\273\204.md" "b/Solutions/1720. \350\247\243\347\240\201\345\274\202\346\210\226\345\220\216\347\232\204\346\225\260\347\273\204.md" index 3fe8195c..ac4af67b 100644 --- "a/Solutions/1720. \350\247\243\347\240\201\345\274\202\346\210\226\345\220\216\347\232\204\346\225\260\347\273\204.md" +++ "b/Solutions/1720. \350\247\243\347\240\201\345\274\202\346\210\226\345\220\216\347\232\204\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组 - 难度:简单 +## 题目链接 + +- [1720. 解码异或后的数组 - 力扣](https://leetcode.cn/problems/decode-xored-array/) + ## 题目大意 n 个非负整数构成数组 arr,经过编码后变为长度为 n-1 的整数数组 encoded,其中 `encoded[i] = arr[i] XOR arr[i+1]`。例如 arr = [1, 0, 2, 1] 经过编码后变为 encoded = [1, 2, 3]。 diff --git "a/Solutions/1736. \346\233\277\346\215\242\351\232\220\350\227\217\346\225\260\345\255\227\345\276\227\345\210\260\347\232\204\346\234\200\346\231\232\346\227\266\351\227\264.md" "b/Solutions/1736. \346\233\277\346\215\242\351\232\220\350\227\217\346\225\260\345\255\227\345\276\227\345\210\260\347\232\204\346\234\200\346\231\232\346\227\266\351\227\264.md" index 3f67c5b0..09b090b6 100644 --- "a/Solutions/1736. \346\233\277\346\215\242\351\232\220\350\227\217\346\225\260\345\255\227\345\276\227\345\210\260\347\232\204\346\234\200\346\231\232\346\227\266\351\227\264.md" +++ "b/Solutions/1736. \346\233\277\346\215\242\351\232\220\350\227\217\346\225\260\345\255\227\345\276\227\345\210\260\347\232\204\346\234\200\346\231\232\346\227\266\351\227\264.md" @@ -3,6 +3,10 @@ - 标签:贪心、字符串 - 难度:简单 +## 题目链接 + +- [1736. 替换隐藏数字得到的最晚时间 - 力扣](https://leetcode.cn/problems/latest-time-by-replacing-hidden-digits/) + ## 题目大意 **描述**:给定一个字符串 $time$,格式为 `hh:mm`(小时:分钟),其中某几位数字被隐藏(用 `?` 表示)。 diff --git "a/Solutions/1742. \347\233\222\345\255\220\344\270\255\345\260\217\347\220\203\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" "b/Solutions/1742. \347\233\222\345\255\220\344\270\255\345\260\217\347\220\203\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" index 8bc4768e..2165d555 100644 --- "a/Solutions/1742. \347\233\222\345\255\220\344\270\255\345\260\217\347\220\203\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" +++ "b/Solutions/1742. \347\233\222\345\255\220\344\270\255\345\260\217\347\220\203\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" @@ -3,6 +3,10 @@ - 标签:哈希表、数学、计数 - 难度:简单 +## 题目链接 + +- [1742. 盒子中小球的最大数量 - 力扣](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) + ## 题目大意 **描述**:给定两个整数 $lowLimit$ 和 $highLimt$,代表 $n$ 个小球的编号(包括 $lowLimit$ 和 $highLimit$,即 $n == highLimit = lowLimit + 1$)。另外有无限个盒子。 diff --git "a/Solutions/1749. \344\273\273\346\204\217\345\255\220\346\225\260\347\273\204\345\222\214\347\232\204\347\273\235\345\257\271\345\200\274\347\232\204\346\234\200\345\244\247\345\200\274.md" "b/Solutions/1749. \344\273\273\346\204\217\345\255\220\346\225\260\347\273\204\345\222\214\347\232\204\347\273\235\345\257\271\345\200\274\347\232\204\346\234\200\345\244\247\345\200\274.md" index 3752bd37..b5a3200f 100644 --- "a/Solutions/1749. \344\273\273\346\204\217\345\255\220\346\225\260\347\273\204\345\222\214\347\232\204\347\273\235\345\257\271\345\200\274\347\232\204\346\234\200\345\244\247\345\200\274.md" +++ "b/Solutions/1749. \344\273\273\346\204\217\345\255\220\346\225\260\347\273\204\345\222\214\347\232\204\347\273\235\345\257\271\345\200\274\347\232\204\346\234\200\345\244\247\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [1749. 任意子数组和的绝对值的最大值 - 力扣](https://leetcode.cn/problems/maximum-absolute-sum-of-any-subarray/) + ## 题目大意 **描述**:给定一个整数数组 $nums$。 diff --git "a/Solutions/1779. \346\211\276\345\210\260\346\234\200\350\277\221\347\232\204\346\234\211\347\233\270\345\220\214 X \346\210\226 Y \345\235\220\346\240\207\347\232\204\347\202\271.md" "b/Solutions/1779. \346\211\276\345\210\260\346\234\200\350\277\221\347\232\204\346\234\211\347\233\270\345\220\214 X \346\210\226 Y \345\235\220\346\240\207\347\232\204\347\202\271.md" index bc10c3cb..f89ce0be 100644 --- "a/Solutions/1779. \346\211\276\345\210\260\346\234\200\350\277\221\347\232\204\346\234\211\347\233\270\345\220\214 X \346\210\226 Y \345\235\220\346\240\207\347\232\204\347\202\271.md" +++ "b/Solutions/1779. \346\211\276\345\210\260\346\234\200\350\277\221\347\232\204\346\234\211\347\233\270\345\220\214 X \346\210\226 Y \345\235\220\346\240\207\347\232\204\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:数组 - 难度:简单 +## 题目链接 + +- [1779. 找到最近的有相同 X 或 Y 坐标的点 - 力扣](https://leetcode.cn/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/) + ## 题目大意 **描述**:给定两个整数 `x` 和 `y`,表示笛卡尔坐标系下的 `(x, y)` 点。再给定一个数组 `points`,其中 `points[i] = [ai, bi]`,表示在 `(ai, bi)` 处有一个点。当一个点与 `(x, y)` 拥有相同的 `x` 坐标或者拥有相同的 `y` 坐标时,我们称这个点是有效的。 diff --git "a/Solutions/1790. \344\273\205\346\211\247\350\241\214\344\270\200\346\254\241\345\255\227\347\254\246\344\270\262\344\272\244\346\215\242\350\203\275\345\220\246\344\275\277\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" "b/Solutions/1790. \344\273\205\346\211\247\350\241\214\344\270\200\346\254\241\345\255\227\347\254\246\344\270\262\344\272\244\346\215\242\350\203\275\345\220\246\344\275\277\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" index 06795403..600f85e1 100644 --- "a/Solutions/1790. \344\273\205\346\211\247\350\241\214\344\270\200\346\254\241\345\255\227\347\254\246\344\270\262\344\272\244\346\215\242\350\203\275\345\220\246\344\275\277\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" +++ "b/Solutions/1790. \344\273\205\346\211\247\350\241\214\344\270\200\346\254\241\345\255\227\347\254\246\344\270\262\344\272\244\346\215\242\350\203\275\345\220\246\344\275\277\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、计数 - 难度:简单 +## 题目链接 + +- [1790. 仅执行一次字符串交换能否使两个字符串相等 - 力扣](https://leetcode.cn/problems/check-if-one-string-swap-can-make-strings-equal/) + ## 题目大意 **描述**:给定两个长度相等的字符串 `s1` 和 `s2`。 diff --git "a/Solutions/1791. \346\211\276\345\207\272\346\230\237\345\236\213\345\233\276\347\232\204\344\270\255\345\277\203\350\212\202\347\202\271.md" "b/Solutions/1791. \346\211\276\345\207\272\346\230\237\345\236\213\345\233\276\347\232\204\344\270\255\345\277\203\350\212\202\347\202\271.md" index 1f94e7fc..a4bc7ca1 100644 --- "a/Solutions/1791. \346\211\276\345\207\272\346\230\237\345\236\213\345\233\276\347\232\204\344\270\255\345\277\203\350\212\202\347\202\271.md" +++ "b/Solutions/1791. \346\211\276\345\207\272\346\230\237\345\236\213\345\233\276\347\232\204\344\270\255\345\277\203\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:图 - 难度:简单 +## 题目链接 + +- [1791. 找出星型图的中心节点 - 力扣](https://leetcode.cn/problems/find-center-of-star-graph/) + ## 题目大意 **描述**:有一个无向的行型图,由 $n$ 个编号 $1 \sim n$ 的节点组成。星型图有一个中心节点,并且恰好有 $n - 1$ 条边将中心节点与其他每个节点连接起来。 diff --git "a/Solutions/1822. \346\225\260\347\273\204\345\205\203\347\264\240\347\247\257\347\232\204\347\254\246\345\217\267.md" "b/Solutions/1822. \346\225\260\347\273\204\345\205\203\347\264\240\347\247\257\347\232\204\347\254\246\345\217\267.md" index 484978bd..d5578f2f 100644 --- "a/Solutions/1822. \346\225\260\347\273\204\345\205\203\347\264\240\347\247\257\347\232\204\347\254\246\345\217\267.md" +++ "b/Solutions/1822. \346\225\260\347\273\204\345\205\203\347\264\240\347\247\257\347\232\204\347\254\246\345\217\267.md" @@ -3,6 +3,10 @@ - 标签:数组、数学 - 难度:简单 +## 题目链接 + +- [1822. 数组元素积的符号 - 力扣](https://leetcode.cn/problems/sign-of-the-product-of-an-array/) + ## 题目大意 **描述**:已知函数 `signFunc(x)` 会根据 `x` 的正负返回特定值: diff --git "a/Solutions/1833. \351\233\252\347\263\225\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" "b/Solutions/1833. \351\233\252\347\263\225\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" index d576def0..efc1463d 100644 --- "a/Solutions/1833. \351\233\252\347\263\225\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" +++ "b/Solutions/1833. \351\233\252\347\263\225\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、排序 - 难度:中等 +## 题目链接 + +- [1833. 雪糕的最大数量 - 力扣](https://leetcode.cn/problems/maximum-ice-cream-bars/) + ## 题目大意 **描述**:给定一个数组 $costs$ 表示不同雪糕的定价,其中 $costs[i]$ 表示第 $i$ 支雪糕的定价。再给定一个整数 $coins$ 表示 Tony 一共有的现金数量。 diff --git "a/Solutions/1844. \345\260\206\346\211\200\346\234\211\346\225\260\345\255\227\347\224\250\345\255\227\347\254\246\346\233\277\346\215\242.md" "b/Solutions/1844. \345\260\206\346\211\200\346\234\211\346\225\260\345\255\227\347\224\250\345\255\227\347\254\246\346\233\277\346\215\242.md" index cadbdeb4..ebb1f902 100644 --- "a/Solutions/1844. \345\260\206\346\211\200\346\234\211\346\225\260\345\255\227\347\224\250\345\255\227\347\254\246\346\233\277\346\215\242.md" +++ "b/Solutions/1844. \345\260\206\346\211\200\346\234\211\346\225\260\345\255\227\347\224\250\345\255\227\347\254\246\346\233\277\346\215\242.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:简单 +## 题目链接 + +- [1844. 将所有数字用字符替换 - 力扣](https://leetcode.cn/problems/replace-all-digits-with-characters/) + ## 题目大意 **描述**:给定一个下标从 $0$ 开始的字符串 $s$。字符串 $s$ 的偶数下标处为小写英文字母,奇数下标处为数字。 diff --git "a/Solutions/1858. \345\214\205\345\220\253\346\211\200\346\234\211\345\211\215\347\274\200\347\232\204\346\234\200\351\225\277\345\215\225\350\257\215.md" "b/Solutions/1858. \345\214\205\345\220\253\346\211\200\346\234\211\345\211\215\347\274\200\347\232\204\346\234\200\351\225\277\345\215\225\350\257\215.md" index 030a8df2..f7cb942a 100644 --- "a/Solutions/1858. \345\214\205\345\220\253\346\211\200\346\234\211\345\211\215\347\274\200\347\232\204\346\234\200\351\225\277\345\215\225\350\257\215.md" +++ "b/Solutions/1858. \345\214\205\345\220\253\346\211\200\346\234\211\345\211\215\347\274\200\347\232\204\346\234\200\351\225\277\345\215\225\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、字典树 - 难度:中等 +## 题目链接 + +- [1858. 包含所有前缀的最长单词 - 力扣](https://leetcode.cn/problems/longest-word-with-all-prefixes/) + ## 题目大意 给定一个字符串数组 `words`。 diff --git "a/Solutions/1859. \345\260\206\345\217\245\345\255\220\346\216\222\345\272\217.md" "b/Solutions/1859. \345\260\206\345\217\245\345\255\220\346\216\222\345\272\217.md" index b3f248c1..24ff0f22 100644 --- "a/Solutions/1859. \345\260\206\345\217\245\345\255\220\346\216\222\345\272\217.md" +++ "b/Solutions/1859. \345\260\206\345\217\245\345\255\220\346\216\222\345\272\217.md" @@ -3,6 +3,10 @@ - 标签:字符串、排序 - 难度:简单 +## 题目链接 + +- [1859. 将句子排序 - 力扣](https://leetcode.cn/problems/sorting-the-sentence/) + ## 题目大意 **描述**:给定一个句子 $s$,句子中包含的单词不超过 $9$ 个。并且句子 $s$ 中每个单词末尾添加了「从 $1$ 开始的单词位置索引」,并且将句子中所有单词打乱顺序。 diff --git "a/Solutions/1876. \351\225\277\345\272\246\344\270\272\344\270\211\344\270\224\345\220\204\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" "b/Solutions/1876. \351\225\277\345\272\246\344\270\272\344\270\211\344\270\224\345\220\204\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" index fc6fe4a7..50aa7568 100644 --- "a/Solutions/1876. \351\225\277\345\272\246\344\270\272\344\270\211\344\270\224\345\220\204\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/1876. \351\225\277\345\272\246\344\270\272\344\270\211\344\270\224\345\220\204\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、计数、滑动窗口 - 难度:简单 +## 题目链接 + +- [1876. 长度为三且各字符不同的子字符串 - 力扣](https://leetcode.cn/problems/substrings-of-size-three-with-distinct-characters/) + ## 题目大意 **描述**:给定搞一个字符串 $s$。 diff --git "a/Solutions/1877. \346\225\260\347\273\204\344\270\255\346\234\200\345\244\247\346\225\260\345\257\271\345\222\214\347\232\204\346\234\200\345\260\217\345\200\274.md" "b/Solutions/1877. \346\225\260\347\273\204\344\270\255\346\234\200\345\244\247\346\225\260\345\257\271\345\222\214\347\232\204\346\234\200\345\260\217\345\200\274.md" index 88eb0a77..1e9ad367 100644 --- "a/Solutions/1877. \346\225\260\347\273\204\344\270\255\346\234\200\345\244\247\346\225\260\345\257\271\345\222\214\347\232\204\346\234\200\345\260\217\345\200\274.md" +++ "b/Solutions/1877. \346\225\260\347\273\204\344\270\255\346\234\200\345\244\247\346\225\260\345\257\271\345\222\214\347\232\204\346\234\200\345\260\217\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:贪心、数组、双指针、排序 - 难度:中等 +## 题目链接 + +- [1877. 数组中最大数对和的最小值 - 力扣](https://leetcode.cn/problems/minimize-maximum-pair-sum-in-array/) + ## 题目大意 **描述**:一个数对 $(a, b)$ 的数对和等于 $a + b$。最大数对和是一个数对数组中最大的数对和。 diff --git "a/Solutions/1879. \344\270\244\344\270\252\346\225\260\347\273\204\346\234\200\345\260\217\347\232\204\345\274\202\346\210\226\345\200\274\344\271\213\345\222\214.md" "b/Solutions/1879. \344\270\244\344\270\252\346\225\260\347\273\204\346\234\200\345\260\217\347\232\204\345\274\202\346\210\226\345\200\274\344\271\213\345\222\214.md" index d95fe4cb..5f9f8c88 100644 --- "a/Solutions/1879. \344\270\244\344\270\252\346\225\260\347\273\204\346\234\200\345\260\217\347\232\204\345\274\202\346\210\226\345\200\274\344\271\213\345\222\214.md" +++ "b/Solutions/1879. \344\270\244\344\270\252\346\225\260\347\273\204\346\234\200\345\260\217\347\232\204\345\274\202\346\210\226\345\200\274\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、动态规划、状态压缩 - 难度:困难 +## 题目链接 + +- [1879. 两个数组最小的异或值之和 - 力扣](https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/) + ## 题目大意 **描述**:给定两个整数数组 $nums1$ 和 $nums2$,两个数组长度都为 $n$。 diff --git "a/Solutions/1903. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\234\200\345\244\247\345\245\207\346\225\260.md" "b/Solutions/1903. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\234\200\345\244\247\345\245\207\346\225\260.md" index 102275ed..da1e2bdb 100644 --- "a/Solutions/1903. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\234\200\345\244\247\345\245\207\346\225\260.md" +++ "b/Solutions/1903. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\234\200\345\244\247\345\245\207\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:贪心、数学、字符串 - 难度:简单 +## 题目链接 + +- [1903. 字符串中的最大奇数 - 力扣](https://leetcode.cn/problems/largest-odd-number-in-string/) + ## 题目大意 **描述**:给定一个字符串 $num$,表示一个大整数。 diff --git "a/Solutions/1925. \347\273\237\350\256\241\345\271\263\346\226\271\345\222\214\344\270\211\345\205\203\347\273\204\347\232\204\346\225\260\347\233\256.md" "b/Solutions/1925. \347\273\237\350\256\241\345\271\263\346\226\271\345\222\214\344\270\211\345\205\203\347\273\204\347\232\204\346\225\260\347\233\256.md" index 191ea162..1a8c714c 100644 --- "a/Solutions/1925. \347\273\237\350\256\241\345\271\263\346\226\271\345\222\214\344\270\211\345\205\203\347\273\204\347\232\204\346\225\260\347\233\256.md" +++ "b/Solutions/1925. \347\273\237\350\256\241\345\271\263\346\226\271\345\222\214\344\270\211\345\205\203\347\273\204\347\232\204\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:数学、枚举 - 难度:简单 +## 题目链接 + +- [1925. 统计平方和三元组的数目 - 力扣](https://leetcode.cn/problems/count-square-sum-triples/) + ## 题目大意 **描述**:给你一个整数 $n$。 diff --git "a/Solutions/1929. \346\225\260\347\273\204\344\270\262\350\201\224.md" "b/Solutions/1929. \346\225\260\347\273\204\344\270\262\350\201\224.md" index 318fee64..03e2d99e 100644 --- "a/Solutions/1929. \346\225\260\347\273\204\344\270\262\350\201\224.md" +++ "b/Solutions/1929. \346\225\260\347\273\204\344\270\262\350\201\224.md" @@ -3,6 +3,10 @@ - 标签:数组 - 难度:简单 +## 题目链接 + +- [1929. 数组串联 - 力扣](https://leetcode.cn/problems/concatenation-of-array/) + ## 题目大意 **描述**:给定一个长度为 $n$ 的整数数组 $nums$。 diff --git "a/Solutions/1941. \346\243\200\346\237\245\346\230\257\345\220\246\346\211\200\346\234\211\345\255\227\347\254\246\345\207\272\347\216\260\346\254\241\346\225\260\347\233\270\345\220\214.md" "b/Solutions/1941. \346\243\200\346\237\245\346\230\257\345\220\246\346\211\200\346\234\211\345\255\227\347\254\246\345\207\272\347\216\260\346\254\241\346\225\260\347\233\270\345\220\214.md" index aec00e21..0ea0090d 100644 --- "a/Solutions/1941. \346\243\200\346\237\245\346\230\257\345\220\246\346\211\200\346\234\211\345\255\227\347\254\246\345\207\272\347\216\260\346\254\241\346\225\260\347\233\270\345\220\214.md" +++ "b/Solutions/1941. \346\243\200\346\237\245\346\230\257\345\220\246\346\211\200\346\234\211\345\255\227\347\254\246\345\207\272\347\216\260\346\254\241\346\225\260\347\233\270\345\220\214.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、计数 - 难度:简单 +## 题目链接 + +- [1941. 检查是否所有字符出现次数相同 - 力扣](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) + ## 题目大意 **描述**:给定一个字符串 $s$。如果 $s$ 中出现过的所有字符的出现次数相同,那么我们称字符串 $s$ 是「好字符串」。 diff --git "a/Solutions/1947. \346\234\200\345\244\247\345\205\274\345\256\271\346\200\247\350\257\204\345\210\206\345\222\214.md" "b/Solutions/1947. \346\234\200\345\244\247\345\205\274\345\256\271\346\200\247\350\257\204\345\210\206\345\222\214.md" index c52d5166..6b669c99 100644 --- "a/Solutions/1947. \346\234\200\345\244\247\345\205\274\345\256\271\346\200\247\350\257\204\345\210\206\345\222\214.md" +++ "b/Solutions/1947. \346\234\200\345\244\247\345\205\274\345\256\271\346\200\247\350\257\204\345\210\206\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、动态规划、回溯、状态压缩 - 难度:中等 +## 题目链接 + +- [1947. 最大兼容性评分和 - 力扣](https://leetcode.cn/problems/maximum-compatibility-score-sum/) + ## 题目大意 **描述**:有一份由 $n$ 个问题组成的调查问卷,每个问题的答案只有 $0$ 或 $1$。将这份调查问卷分发给 $m$ 名学生和 $m$ 名老师,学生和老师的编号都是 $0 \sim m - 1$。现在给定一个二维整数数组 $students$ 表示 $m$ 名学生给出的答案,其中 $studuents[i][j]$ 表示第 $i$ 名学生第 $j$ 个问题给出的答案。再给定一个二维整数数组 $mentors$ 表示 $m$ 名老师给出的答案,其中 $mentors[i][j]$ 表示第 $i$ 名导师第 $j$ 个问题给出的答案。 diff --git "a/Solutions/1986. \345\256\214\346\210\220\344\273\273\345\212\241\347\232\204\346\234\200\345\260\221\345\267\245\344\275\234\346\227\266\351\227\264\346\256\265.md" "b/Solutions/1986. \345\256\214\346\210\220\344\273\273\345\212\241\347\232\204\346\234\200\345\260\221\345\267\245\344\275\234\346\227\266\351\227\264\346\256\265.md" index 51986908..035ff4a9 100644 --- "a/Solutions/1986. \345\256\214\346\210\220\344\273\273\345\212\241\347\232\204\346\234\200\345\260\221\345\267\245\344\275\234\346\227\266\351\227\264\346\256\265.md" +++ "b/Solutions/1986. \345\256\214\346\210\220\344\273\273\345\212\241\347\232\204\346\234\200\345\260\221\345\267\245\344\275\234\346\227\266\351\227\264\346\256\265.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、动态规划、回溯、状态压缩 - 难度:中等 +## 题目链接 + +- [1986. 完成任务的最少工作时间段 - 力扣](https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/) + ## 题目大意 **描述**:给定一个整数数组 $tasks$ 代表需要完成的任务。 其中 $tasks[i]$ 表示第 $i$ 个任务需要花费的时长(单位为小时)。再给定一个整数 $sessionTime$,代表在一个工作时段中,最多可以连续工作的小时数。在连续工作至多 $sessionTime$ 小时后,需要进行休息。 diff --git "a/Solutions/1991. \346\211\276\345\210\260\346\225\260\347\273\204\347\232\204\344\270\255\351\227\264\344\275\215\347\275\256.md" "b/Solutions/1991. \346\211\276\345\210\260\346\225\260\347\273\204\347\232\204\344\270\255\351\227\264\344\275\215\347\275\256.md" index 3ed0d2fa..8d957b5c 100644 --- "a/Solutions/1991. \346\211\276\345\210\260\346\225\260\347\273\204\347\232\204\344\270\255\351\227\264\344\275\215\347\275\256.md" +++ "b/Solutions/1991. \346\211\276\345\210\260\346\225\260\347\273\204\347\232\204\344\270\255\351\227\264\344\275\215\347\275\256.md" @@ -3,6 +3,10 @@ - 标签:数组、前缀和 - 难度:简单 +## 题目链接 + +- [1991. 找到数组的中间位置 - 力扣](https://leetcode.cn/problems/find-the-middle-index-in-array/) + ## 题目大意 **描述**:给定一个下标从 $0$ 开始的整数数组 $nums$。 diff --git "a/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" "b/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" index 650043dc..f9d5bb9b 100644 --- "a/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" +++ "b/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、数学、动态规划、状态压缩 - 难度:困难 +## 题目链接 + +- [1994. 好子集的数目 - 力扣](https://leetcode.cn/problems/the-number-of-good-subsets/) + ## 题目大意 **描述**:给定一个整数数组 $nums$。 diff --git "a/Solutions/2011. \346\211\247\350\241\214\346\223\215\344\275\234\345\220\216\347\232\204\345\217\230\351\207\217\345\200\274.md" "b/Solutions/2011. \346\211\247\350\241\214\346\223\215\344\275\234\345\220\216\347\232\204\345\217\230\351\207\217\345\200\274.md" index 2a422a8f..44d72132 100644 --- "a/Solutions/2011. \346\211\247\350\241\214\346\223\215\344\275\234\345\220\216\347\232\204\345\217\230\351\207\217\345\200\274.md" +++ "b/Solutions/2011. \346\211\247\350\241\214\346\223\215\344\275\234\345\220\216\347\232\204\345\217\230\351\207\217\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:数组、字符串、模拟 - 难度:简单 +## 题目链接 + +- [2011. 执行操作后的变量值 - 力扣](https://leetcode.cn/problems/final-value-of-variable-after-performing-operations/) + ## 题目大意 存在一种支持 `4` 种操作和 `1` 个变量 `X` 的编程语言: diff --git "a/Solutions/2023. \350\277\236\346\216\245\345\220\216\347\255\211\344\272\216\347\233\256\346\240\207\345\255\227\347\254\246\344\270\262\347\232\204\345\255\227\347\254\246\344\270\262\345\257\271.md" "b/Solutions/2023. \350\277\236\346\216\245\345\220\216\347\255\211\344\272\216\347\233\256\346\240\207\345\255\227\347\254\246\344\270\262\347\232\204\345\255\227\347\254\246\344\270\262\345\257\271.md" index 55a1bd1e..d89a5f66 100644 --- "a/Solutions/2023. \350\277\236\346\216\245\345\220\216\347\255\211\344\272\216\347\233\256\346\240\207\345\255\227\347\254\246\344\270\262\347\232\204\345\255\227\347\254\246\344\270\262\345\257\271.md" +++ "b/Solutions/2023. \350\277\236\346\216\245\345\220\216\347\255\211\344\272\216\347\233\256\346\240\207\345\255\227\347\254\246\344\270\262\347\232\204\345\255\227\347\254\246\344\270\262\345\257\271.md" @@ -3,6 +3,10 @@ - 标签:数组、字符串 - 难度:中等 +## 题目链接 + +- [2023. 连接后等于目标字符串的字符串对 - 力扣](https://leetcode.cn/problems/number-of-pairs-of-strings-with-concatenation-equal-to-target/) + ## 题目大意 **描述**:给定一个数字字符串数组 `nums` 和一个数字字符串 `target`。 diff --git "a/Solutions/2050. \345\271\266\350\241\214\350\257\276\347\250\213 III.md" "b/Solutions/2050. \345\271\266\350\241\214\350\257\276\347\250\213 III.md" index 7a595260..63138fd9 100644 --- "a/Solutions/2050. \345\271\266\350\241\214\350\257\276\347\250\213 III.md" +++ "b/Solutions/2050. \345\271\266\350\241\214\350\257\276\347\250\213 III.md" @@ -3,6 +3,10 @@ - 标签:图、拓扑排序、数组、动态规划 - 难度:困难 +## 题目链接 + +- [2050. 并行课程 III - 力扣](https://leetcode.cn/problems/parallel-courses-iii/) + ## 题目大意 **描述**:给定一个整数 $n$,表示有 $n$ 节课,课程编号为 $1 \sim n$。 diff --git "a/Solutions/2156. \346\237\245\346\211\276\347\273\231\345\256\232\345\223\210\345\270\214\345\200\274\347\232\204\345\255\220\344\270\262.md" "b/Solutions/2156. \346\237\245\346\211\276\347\273\231\345\256\232\345\223\210\345\270\214\345\200\274\347\232\204\345\255\220\344\270\262.md" index 816cb5f5..eafed5cc 100644 --- "a/Solutions/2156. \346\237\245\346\211\276\347\273\231\345\256\232\345\223\210\345\270\214\345\200\274\347\232\204\345\255\220\344\270\262.md" +++ "b/Solutions/2156. \346\237\245\346\211\276\347\273\231\345\256\232\345\223\210\345\270\214\345\200\274\347\232\204\345\255\220\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:字符串、滑动窗口、哈希函数、滚动哈希 - 难度:困难 +## 题目链接 + +- [2156. 查找给定哈希值的子串 - 力扣](https://leetcode.cn/problems/find-substring-with-given-hash-value/) + ## 题目大意 **描述**:如果给定整数 `p` 和 `m`,一个长度为 `k` 且下标从 `0` 开始的字符串 `s` 的哈希值按照如下函数计算: diff --git "a/Solutions/2172. \346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\344\270\216\345\222\214.md" "b/Solutions/2172. \346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\344\270\216\345\222\214.md" index 8e5c3b38..1e5eb2c9 100644 --- "a/Solutions/2172. \346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\344\270\216\345\222\214.md" +++ "b/Solutions/2172. \346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\344\270\216\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、动态规划、状态压缩 - 难度:困难 +## 题目链接 + +- [2172. 数组的最大与和 - 力扣](https://leetcode.cn/problems/maximum-and-sum-of-array/) + ## 题目大意 **描述**:给定一个长度为 $n$ 的整数数组 $nums$ 和一个整数 $numSlots$ 满足 $2 \times numSlots \ge n$。一共有 $numSlots$ 个篮子,编号为 $1 \sim numSlots$。 diff --git "a/Solutions/2235. \344\270\244\346\225\264\346\225\260\347\233\270\345\212\240.md" "b/Solutions/2235. \344\270\244\346\225\264\346\225\260\347\233\270\345\212\240.md" index 6f4d3075..fb14746d 100644 --- "a/Solutions/2235. \344\270\244\346\225\264\346\225\260\347\233\270\345\212\240.md" +++ "b/Solutions/2235. \344\270\244\346\225\264\346\225\260\347\233\270\345\212\240.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:简单 +## 题目链接 + +- [2235. 两整数相加 - 力扣](https://leetcode.cn/problems/add-two-integers/) + ## 题目大意 **描述**:给定两个整数 $num1$ 和 $num2$。 diff --git "a/Solutions/2246. \347\233\270\351\202\273\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\346\234\200\351\225\277\350\267\257\345\276\204.md" "b/Solutions/2246. \347\233\270\351\202\273\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\346\234\200\351\225\277\350\267\257\345\276\204.md" index 2a77e1f2..2624be4d 100644 --- "a/Solutions/2246. \347\233\270\351\202\273\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\346\234\200\351\225\277\350\267\257\345\276\204.md" +++ "b/Solutions/2246. \347\233\270\351\202\273\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\346\234\200\351\225\277\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、图、拓扑排序、数组、字符串 - 难度:困难 +## 题目链接 + +- [2246. 相邻字符不同的最长路径 - 力扣](https://leetcode.cn/problems/longest-path-with-different-adjacent-characters/) + ## 题目大意 **描述**:给定一个长度为 $n$ 的数组 $parent$ 来表示一棵树(即一个连通、无向、无环图)。该树的节点编号为 $0 \sim n - 1$,共 $n$ 个节点,其中根节点的编号为 $0$。其中 $parent[i]$ 表示节点 $i$ 的父节点,由于节点 $0$ 是根节点,所以 $parent[0] == -1$。再给定一个长度为 $n$ 的字符串,其中 $s[i]$ 表示分配给节点 $i$ 的字符。 diff --git "a/Solutions/2249. \347\273\237\350\256\241\345\234\206\345\206\205\346\240\274\347\202\271\346\225\260\347\233\256.md" "b/Solutions/2249. \347\273\237\350\256\241\345\234\206\345\206\205\346\240\274\347\202\271\346\225\260\347\233\256.md" index 451d2cd3..4830d991 100644 --- "a/Solutions/2249. \347\273\237\350\256\241\345\234\206\345\206\205\346\240\274\347\202\271\346\225\260\347\233\256.md" +++ "b/Solutions/2249. \347\273\237\350\256\241\345\234\206\345\206\205\346\240\274\347\202\271\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:几何、数组、哈希表、数学、枚举 - 难度:中等 +## 题目链接 + +- [2249. 统计圆内格点数目 - 力扣](https://leetcode.cn/problems/count-lattice-points-inside-a-circle/) + ## 题目大意 **描述**:给定一个二维整数数组 `circles`。其中 `circles[i] = [xi, yi, ri]` 表示网格上圆心为 `(xi, yi)` 且半径为 `ri` 的第 $i$ 个圆。 diff --git "a/Solutions/2276. \347\273\237\350\256\241\345\214\272\351\227\264\344\270\255\347\232\204\346\225\264\346\225\260\346\225\260\347\233\256.md" "b/Solutions/2276. \347\273\237\350\256\241\345\214\272\351\227\264\344\270\255\347\232\204\346\225\264\346\225\260\346\225\260\347\233\256.md" index d36ebe20..6f8888ec 100644 --- "a/Solutions/2276. \347\273\237\350\256\241\345\214\272\351\227\264\344\270\255\347\232\204\346\225\264\346\225\260\346\225\260\347\233\256.md" +++ "b/Solutions/2276. \347\273\237\350\256\241\345\214\272\351\227\264\344\270\255\347\232\204\346\225\264\346\225\260\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:设计、线段树、有序集合 - 难度:困难 +## 题目链接 + +- [2276. 统计区间中的整数数目 - 力扣](https://leetcode.cn/problems/count-integers-in-intervals/) + ## 题目大意 **描述**:给定一个区间的空集。 diff --git "a/Solutions/2376. \347\273\237\350\256\241\347\211\271\346\256\212\346\225\264\346\225\260.md" "b/Solutions/2376. \347\273\237\350\256\241\347\211\271\346\256\212\346\225\264\346\225\260.md" index 3ab07d52..77088a36 100644 --- "a/Solutions/2376. \347\273\237\350\256\241\347\211\271\346\256\212\346\225\264\346\225\260.md" +++ "b/Solutions/2376. \347\273\237\350\256\241\347\211\271\346\256\212\346\225\264\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数学、动态规划 - 难度:困难 +## 题目链接 + +- [2376. 统计特殊整数 - 力扣](https://leetcode.cn/problems/count-special-integers/) + ## 题目大意 **描述**:给定一个正整数 $n$。 diff --git "a/Solutions/2427. \345\205\254\345\233\240\345\255\220\347\232\204\346\225\260\347\233\256.md" "b/Solutions/2427. \345\205\254\345\233\240\345\255\220\347\232\204\346\225\260\347\233\256.md" index 4f326fea..22498e4b 100644 --- "a/Solutions/2427. \345\205\254\345\233\240\345\255\220\347\232\204\346\225\260\347\233\256.md" +++ "b/Solutions/2427. \345\205\254\345\233\240\345\255\220\347\232\204\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:数学、枚举、数论 - 难度:简单 +## 题目链接 + +- [2427. 公因子的数目 - 力扣](https://leetcode.cn/problems/number-of-common-factors/) + ## 题目大意 **描述**:给定两个正整数 $a$ 和 $b$。 diff --git "a/Solutions/2538. \346\234\200\345\244\247\344\273\267\345\200\274\345\222\214\344\270\216\346\234\200\345\260\217\344\273\267\345\200\274\345\222\214\347\232\204\345\267\256\345\200\274.md" "b/Solutions/2538. \346\234\200\345\244\247\344\273\267\345\200\274\345\222\214\344\270\216\346\234\200\345\260\217\344\273\267\345\200\274\345\222\214\347\232\204\345\267\256\345\200\274.md" index 1f7a6b6e..7ac58ab9 100644 --- "a/Solutions/2538. \346\234\200\345\244\247\344\273\267\345\200\274\345\222\214\344\270\216\346\234\200\345\260\217\344\273\267\345\200\274\345\222\214\347\232\204\345\267\256\345\200\274.md" +++ "b/Solutions/2538. \346\234\200\345\244\247\344\273\267\345\200\274\345\222\214\344\270\216\346\234\200\345\260\217\344\273\267\345\200\274\345\222\214\347\232\204\345\267\256\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、数组、动态规划 - 难度:困难 +## 题目链接 + +- [2538. 最大价值和与最小价值和的差值 - 力扣](https://leetcode.cn/problems/difference-between-maximum-and-minimum-price-sum/) + ## 题目大意 **描述**:给定一个整数 $n$ 和一个长度为 $n - 1$ 的二维整数数组 $edges$ 用于表示一个 $n$ 个节点的无向无根图,节点编号为 $0 \sim n - 1$。其中 $edges[i] = [ai, bi]$ 表示树中节点 $ai$ 和 $bi$ 之间有一条边。再给定一个整数数组 $price$,其中 $price[i]$ 表示图中节点 $i$ 的价值。 diff --git "a/Solutions/2585. \350\216\267\345\276\227\345\210\206\346\225\260\347\232\204\346\226\271\346\263\225\346\225\260.md" "b/Solutions/2585. \350\216\267\345\276\227\345\210\206\346\225\260\347\232\204\346\226\271\346\263\225\346\225\260.md" index 168faf91..30e9af18 100644 --- "a/Solutions/2585. \350\216\267\345\276\227\345\210\206\346\225\260\347\232\204\346\226\271\346\263\225\346\225\260.md" +++ "b/Solutions/2585. \350\216\267\345\276\227\345\210\206\346\225\260\347\232\204\346\226\271\346\263\225\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:困难 +## 题目链接 + +- [2585. 获得分数的方法数 - 力扣](https://leetcode.cn/problems/number-of-ways-to-earn-points/) + ## 题目大意 **描述**:考试中有 $n$ 种类型的题目。给定一个整数 $target$ 和一个下标从 $0$ 开始的二维整数数组 $types$,其中 $types[i] = [count_i, marks_i]$ 表示第 $i$ 种类型的题目有 $count_i$ 道,每道题目对应 $marks_i$ 分。 diff --git "a/Solutions/2719. \347\273\237\350\256\241\346\225\264\346\225\260\346\225\260\347\233\256.md" "b/Solutions/2719. \347\273\237\350\256\241\346\225\264\346\225\260\346\225\260\347\233\256.md" index 39335ec9..4d6f8bef 100644 --- "a/Solutions/2719. \347\273\237\350\256\241\346\225\264\346\225\260\346\225\260\347\233\256.md" +++ "b/Solutions/2719. \347\273\237\350\256\241\346\225\264\346\225\260\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:数学、字符串、动态规划 - 难度:困难 +## 题目链接 + +- [2719. 统计整数数目 - 力扣](https://leetcode.cn/problems/count-of-integers/) + ## 题目大意 **描述**:给定两个数字字符串 $num1$ 和 $num2$,以及两个整数 $max\underline{}sum$ 和 $min\underline{}sum$。 diff --git "a/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275 (\345\212\250\346\200\201\350\247\204\345\210\222).md" "b/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275 (\345\212\250\346\200\201\350\247\204\345\210\222).md" index f4a9e49a..63c82cfe 100644 --- "a/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275 (\345\212\250\346\200\201\350\247\204\345\210\222).md" +++ "b/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275 (\345\212\250\346\200\201\350\247\204\345\210\222).md" @@ -3,6 +3,10 @@ - 标签: - 难度: +## 题目链接 + +- 题目相关 + ## 题目大意 **描述**: diff --git "a/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275.md" "b/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275.md" index 1e1c8ef3..e3bc0608 100644 --- "a/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275.md" +++ "b/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275.md" @@ -3,6 +3,10 @@ - 标签: - 难度: +## 题目链接 + +- 题目相关 + ## 题目大意 **描述**: diff --git "a/Solutions/\345\211\221\346\214\207 Offer 03. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 03. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" index 1bb00223..3b39660b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 03. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 03. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、排序 - 难度:简单 +## 题目链接 + +- [剑指 Offer 03. 数组中重复的数字 - 力扣](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) + ## 题目大意 给定一个包含 `n + 1` 个整数的数组 `nums`,里边包含的值都在 `1 ~ n` 之间。假设 `nums` 中只存在一个重复的整数,要求找出这个重复的数。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 04. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" "b/Solutions/\345\211\221\346\214\207 Offer 04. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" index 06439d9d..e4e93206 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 04. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 04. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、分治、矩阵 - 难度:中等 +## 题目链接 + +- [剑指 Offer 04. 二维数组中的查找 - 力扣](https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) + ## 题目大意 给定一个 `m * n` 大小的有序整数矩阵 `matrix`。每行元素从左到右升序排列,每列元素从上到下升序排列。再给定一个目标值 `target`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 05. \346\233\277\346\215\242\347\251\272\346\240\274.md" "b/Solutions/\345\211\221\346\214\207 Offer 05. \346\233\277\346\215\242\347\251\272\346\240\274.md" index ad5bbd15..b1772cc2 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 05. \346\233\277\346\215\242\347\251\272\346\240\274.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 05. \346\233\277\346\215\242\347\251\272\346\240\274.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:简单 +## 题目链接 + +- [剑指 Offer 05. 替换空格 - 力扣](https://leetcode.cn/problems/ti-huan-kong-ge-lcof/) + ## 题目大意 给定一个字符串 `s`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 06. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" "b/Solutions/\345\211\221\346\214\207 Offer 06. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" index 4bee5afe..159055e3 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 06. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 06. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:栈、递归、链表、双指针 - 难度:简单 +## 题目链接 + +- [剑指 Offer 06. 从尾到头打印链表 - 力扣](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) + ## 题目大意 给定一个链表的头节点 `head`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 07. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" "b/Solutions/\345\211\221\346\214\207 Offer 07. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" index 5305e4d0..f9c6c4a5 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 07. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 07. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、数组、哈希表、分治、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer 07. 重建二叉树 - 力扣](https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/) + ## 题目大意 给定一棵二叉树的前序遍历结果和中序遍历结果。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 09. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 09. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" index 704fda3c..ba129782 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 09. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 09. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:栈、设计、队列 - 难度:简单 +## 题目链接 + +- [剑指 Offer 09. 用两个栈实现队列 - 力扣](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) + ## 题目大意 要求:使用两个栈实现先入先出队列。需要实现对应的两个函数: diff --git "a/Solutions/\345\211\221\346\214\207 Offer 10- I. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 10- I. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" index 8cc7a2c2..fcfd3ac4 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 10- I. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 10- I. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:记忆化搜索、数学、动态规划 - 难度:简单 +## 题目链接 + +- [剑指 Offer 10- I. 斐波那契数列 - 力扣](https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/) + ## 题目大意 给定一个整数 `n`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 10- II. \351\235\222\350\233\231\350\267\263\345\217\260\351\230\266\351\227\256\351\242\230.md" "b/Solutions/\345\211\221\346\214\207 Offer 10- II. \351\235\222\350\233\231\350\267\263\345\217\260\351\230\266\351\227\256\351\242\230.md" index 45ef67ad..c1808ffb 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 10- II. \351\235\222\350\233\231\350\267\263\345\217\260\351\230\266\351\227\256\351\242\230.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 10- II. \351\235\222\350\233\231\350\267\263\345\217\260\351\230\266\351\227\256\351\242\230.md" @@ -3,6 +3,10 @@ - 标签:记忆化搜索、数学、动态规划 - 难度:简单 +## 题目链接 + +- [剑指 Offer 10- II. 青蛙跳台阶问题 - 力扣](https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/) + ## 题目大意 一直青蛙一次可以跳上 `1` 级台阶,也可以跳上 `2` 级台阶。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" index 47240b4a..3de5c887 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:简单 +## 题目链接 + +- [剑指 Offer 11. 旋转数组的最小数字 - 力扣](https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) + ## 题目大意 给定一个数组 `numbers`,`numbers` 是有升序数组经过「旋转」得到的。但是旋转次数未知。数组中可能存在重复元素。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" "b/Solutions/\345\211\221\346\214\207 Offer 12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" index 36d4f565..ed03a9a2 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯、矩阵 - 难度:中等 +## 题目链接 + +- [剑指 Offer 12. 矩阵中的路径 - 力扣](https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/) + ## 题目大意 给定一个 `m * n` 大小的二维字符矩阵 `board` 和一个字符串单词 `word`。如果 `word` 存在于网格中,返回 `True`,否则返回 `False`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 13. \346\234\272\345\231\250\344\272\272\347\232\204\350\277\220\345\212\250\350\214\203\345\233\264.md" "b/Solutions/\345\211\221\346\214\207 Offer 13. \346\234\272\345\231\250\344\272\272\347\232\204\350\277\220\345\212\250\350\214\203\345\233\264.md" index c71ace25..af601050 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 13. \346\234\272\345\231\250\344\272\272\347\232\204\350\277\220\345\212\250\350\214\203\345\233\264.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 13. \346\234\272\345\231\250\344\272\272\347\232\204\350\277\220\345\212\250\350\214\203\345\233\264.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、动态规划 - 难度:中等 +## 题目链接 + +- [剑指 Offer 13. 机器人的运动范围 - 力扣](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) + ## 题目大意 **描述**:有一个 `m * n` 大小的方格,坐标从 `(0, 0)` 到 `(m - 1, n - 1)`。一个机器人从 `(0, 0)` 处的格子开始移动,每次可以向上、下、左、右移动一格(不能移动到方格外),也不能移动到行坐标和列坐标的数位之和大于 `k` 的格子。现在给定 `3` 个整数 `m`、`n`、`k`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 14- I. \345\211\252\347\273\263\345\255\220.md" "b/Solutions/\345\211\221\346\214\207 Offer 14- I. \345\211\252\347\273\263\345\255\220.md" index 5d7ef088..57db3edf 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 14- I. \345\211\252\347\273\263\345\255\220.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 14- I. \345\211\252\347\273\263\345\255\220.md" @@ -3,6 +3,10 @@ - 标签:数学、动态规划 - 难度:中等 +## 题目链接 + +- [剑指 Offer 14- I. 剪绳子 - 力扣](https://leetcode.cn/problems/jian-sheng-zi-lcof/) + ## 题目大意 给定一根长度为 `n` 的绳子,将绳子剪成整数长度的 `m` 段,每段绳子长度即为 `k[0]`、`k[1]`、...、`k[m - 1]`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 15. \344\272\214\350\277\233\345\210\266\344\270\2551\347\232\204\344\270\252\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer 15. \344\272\214\350\277\233\345\210\266\344\270\2551\347\232\204\344\270\252\346\225\260.md" index 07700acb..792ce325 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 15. \344\272\214\350\277\233\345\210\266\344\270\2551\347\232\204\344\270\252\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 15. \344\272\214\350\277\233\345\210\266\344\270\2551\347\232\204\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:位运算 - 难度:简单 +## 题目链接 + +- [剑指 Offer 15. 二进制中1的个数 - 力扣](https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/) + ## 题目大意 给定一个无符号整数 `n`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" "b/Solutions/\345\211\221\346\214\207 Offer 16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" index df97e6f5..c995e0f9 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" @@ -3,6 +3,10 @@ - 标签:递归、数学 - 难度:中等 +## 题目链接 + +- [剑指 Offer 16. 数值的整数次方 - 力扣](https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/) + ## 题目大意 给定浮点数 `x` 和整数 `n`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 17. \346\211\223\345\215\260\344\273\2161\345\210\260\346\234\200\345\244\247\347\232\204n\344\275\215\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer 17. \346\211\223\345\215\260\344\273\2161\345\210\260\346\234\200\345\244\247\347\232\204n\344\275\215\346\225\260.md" index 4634b991..fc156377 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 17. \346\211\223\345\215\260\344\273\2161\345\210\260\346\234\200\345\244\247\347\232\204n\344\275\215\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 17. \346\211\223\345\215\260\344\273\2161\345\210\260\346\234\200\345\244\247\347\232\204n\344\275\215\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、数学 - 难度:简单 +## 题目链接 + +- [剑指 Offer 17. 打印从1到最大的n位数 - 力扣](https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) + ## 题目大意 给定一个数字 `n`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 18. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\350\212\202\347\202\271.md" "b/Solutions/\345\211\221\346\214\207 Offer 18. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\350\212\202\347\202\271.md" index fc49ce81..c5bcf1bf 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 18. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\350\212\202\347\202\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 18. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:链表 - 难度:简单 +## 题目链接 + +- [剑指 Offer 18. 删除链表的节点 - 力扣](https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/) + ## 题目大意 给定一个链表。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" "b/Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" index 233f5f0a..ca2b2665 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、排序 - 难度:简单 +## 题目链接 + +- [剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 - 力扣](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) + ## 题目大意 给定一个整数数组 `nums`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254k\344\270\252\350\212\202\347\202\271.md" "b/Solutions/\345\211\221\346\214\207 Offer 22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254k\344\270\252\350\212\202\347\202\271.md" index 18095d9a..1145bc38 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254k\344\270\252\350\212\202\347\202\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254k\344\270\252\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:链表、双指针 - 难度:简单 +## 题目链接 + +- [剑指 Offer 22. 链表中倒数第k个节点 - 力扣](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) + ## 题目大意 给定一个链表的头节点 `head`,以及一个整数 `k`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 24. \345\217\215\350\275\254\351\223\276\350\241\250.md" "b/Solutions/\345\211\221\346\214\207 Offer 24. \345\217\215\350\275\254\351\223\276\350\241\250.md" index 2dadb2da..cf955d63 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 24. \345\217\215\350\275\254\351\223\276\350\241\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 24. \345\217\215\350\275\254\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:递归、链表 - 难度:简单 +## 题目链接 + +- [剑指 Offer 24. 反转链表 - 力扣](https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/) + ## 题目大意 **描述**:给定一个链表的头节点 `head`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" "b/Solutions/\345\211\221\346\214\207 Offer 25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" index ab99337b..a54aa02c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:递归、链表 - 难度:简单 +## 题目链接 + +- [剑指 Offer 25. 合并两个排序的链表 - 力扣](https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) + ## 题目大意 给定两个升序链表。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" "b/Solutions/\345\211\221\346\214\207 Offer 26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" index ce24142f..0c8334e8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer 26. 树的子结构 - 力扣](https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/) + ## 题目大意 给定两棵二叉树的根节点 `A`、`B`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" "b/Solutions/\345\211\221\346\214\207 Offer 27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" index ec5a0f9d..c4c75b72 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [剑指 Offer 27. 二叉树的镜像 - 力扣](https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/) + ## 题目大意 给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" "b/Solutions/\345\211\221\346\214\207 Offer 28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" index f0b826ac..2cec0f3f 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [剑指 Offer 28. 对称的二叉树 - 力扣](https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/) + ## 题目大意 给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" "b/Solutions/\345\211\221\346\214\207 Offer 29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" index 1d4e0cd6..2fb38218 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" @@ -3,6 +3,10 @@ - 标签:数组、矩阵、模拟 - 难度:简单 +## 题目链接 + +- [剑指 Offer 29. 顺时针打印矩阵 - 力扣](https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/) + ## 题目大意 给定一个 `m * n` 大小的二维矩阵 `matrix`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 30. \345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.md" "b/Solutions/\345\211\221\346\214\207 Offer 30. \345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.md" index 814ee3fa..c0eac409 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 30. \345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 30. \345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.md" @@ -3,6 +3,10 @@ - 标签:栈、设计 - 难度:简单 +## 题目链接 + +- [剑指 Offer 30. 包含min函数的栈 - 力扣](https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/) + ## 题目大意 要求:设计一个「栈」,实现 `push` ,`pop` ,`top` ,`min` 操作,并且操作时间复杂度都是 `O(1)`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 31. \346\240\210\347\232\204\345\216\213\345\205\245\343\200\201\345\274\271\345\207\272\345\272\217\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 31. \346\240\210\347\232\204\345\216\213\345\205\245\343\200\201\345\274\271\345\207\272\345\272\217\345\210\227.md" index 8d83f5e4..47edc5b8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 31. \346\240\210\347\232\204\345\216\213\345\205\245\343\200\201\345\274\271\345\207\272\345\272\217\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 31. \346\240\210\347\232\204\345\216\213\345\205\245\343\200\201\345\274\271\345\207\272\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:栈、数组、模拟 - 难度:中等 +## 题目链接 + +- [剑指 Offer 31. 栈的压入、弹出序列 - 力扣](https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) + ## 题目大意 给定连个整数序列 `pushed` 和 `popped`,其中 `pushed` 表示栈的压入顺序。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 32 - I. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" "b/Solutions/\345\211\221\346\214\207 Offer 32 - I. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" index 5c2ae5c1..5929d2e9 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 32 - I. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 32 - I. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer 32 - I. 从上到下打印二叉树 - 力扣](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) + ## 题目大意 给定一棵二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 32 - II. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 II.md" "b/Solutions/\345\211\221\346\214\207 Offer 32 - II. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 II.md" index 3d1109c5..d9d6404c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 32 - II. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 II.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 32 - II. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 II.md" @@ -3,6 +3,10 @@ - 标签:树、广度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [剑指 Offer 32 - II. 从上到下打印二叉树 II - 力扣](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) + ## 题目大意 给定一棵二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 32 - III. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 III.md" "b/Solutions/\345\211\221\346\214\207 Offer 32 - III. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 III.md" index 55b7a19f..c70ab810 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 32 - III. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 III.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 32 - III. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 III.md" @@ -3,6 +3,10 @@ - 标签:树、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer 32 - III. 从上到下打印二叉树 III - 力扣](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) + ## 题目大意 给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" index 0226d050..f2b1f700 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:栈、树、二叉搜索树、递归、二叉树、单调栈 - 难度:中等 +## 题目链接 + +- [剑指 Offer 33. 二叉搜索树的后序遍历序列 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) + ## 题目大意 **描述**:给定一个整数数组 $postorder$。数组的任意两个数字都互不相同。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" "b/Solutions/\345\211\221\346\214\207 Offer 34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" index aaae05af..2cd732c8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、回溯、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer 34. 二叉树中和为某一值的路径 - 力扣](https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) + ## 题目大意 给定一棵二叉树的根节点 `root` 和一个整数 `target`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" "b/Solutions/\345\211\221\346\214\207 Offer 35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" index e55b808e..ef55af6b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" @@ -3,6 +3,10 @@ - 标签:哈希表、链表 - 难度:中等 +## 题目链接 + +- [剑指 Offer 35. 复杂链表的复制 - 力扣](https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/) + ## 题目大意 给定一个链表,每个节点除了 `next` 指针之后,还包含一个随机指针 `random`,该指针可以指向链表中的任何节点或者空节点。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/Solutions/\345\211\221\346\214\207 Offer 36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" index 7c6b4aad..18e99982 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 - 难度:中等 +## 题目链接 + +- [剑指 Offer 36. 二叉搜索树与双向链表 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) + ## 题目大意 给定一棵二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 37. \345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" "b/Solutions/\345\211\221\346\214\207 Offer 37. \345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" index 170b5b5b..f181e606 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 37. \345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 37. \345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 - 难度:困难 +## 题目链接 + +- [剑指 Offer 37. 序列化二叉树 - 力扣](https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/) + ## 题目大意 给定一棵二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 38. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 38. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" index cd82c4fa..deee93d1 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 38. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 38. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:字符串、回溯 - 难度:中等 +## 题目链接 + +- [剑指 Offer 38. 字符串的排列 - 力扣](https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/) + ## 题目大意 给定一个字符串 `s`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 39. \346\225\260\347\273\204\344\270\255\345\207\272\347\216\260\346\254\241\346\225\260\350\266\205\350\277\207\344\270\200\345\215\212\347\232\204\346\225\260\345\255\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 39. \346\225\260\347\273\204\344\270\255\345\207\272\347\216\260\346\254\241\346\225\260\350\266\205\350\277\207\344\270\200\345\215\212\347\232\204\346\225\260\345\255\227.md" index 9960eb2b..0fa6c543 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 39. \346\225\260\347\273\204\344\270\255\345\207\272\347\216\260\346\254\241\346\225\260\350\266\205\350\277\207\344\270\200\345\215\212\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 39. \346\225\260\347\273\204\344\270\255\345\207\272\347\216\260\346\254\241\346\225\260\350\266\205\350\277\207\344\270\200\345\215\212\347\232\204\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、分治、计数、排序 - 难度:简单 +## 题目链接 + +- [剑指 Offer 39. 数组中出现次数超过一半的数字 - 力扣](https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) + ## 题目大意 给定一个数组 `nums`,其中有一个数字出现次数超过数组长度一半。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 40. \346\234\200\345\260\217\347\232\204k\344\270\252\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer 40. \346\234\200\345\260\217\347\232\204k\344\270\252\346\225\260.md" index 48240732..6750b918 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 40. \346\234\200\345\260\217\347\232\204k\344\270\252\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 40. \346\234\200\345\260\217\347\232\204k\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、分治、快速选择、排序、堆(优先队列) - 难度:简单 +## 题目链接 + +- [剑指 Offer 40. 最小的k个数 - 力扣](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) + ## 题目大意 **描述**:给定整数数组 $arr$,再给定一个整数 $k$。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 41. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\344\270\255\344\275\215\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer 41. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\344\270\255\344\275\215\346\225\260.md" index 1d1c8b39..809280b4 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 41. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\344\270\255\344\275\215\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 41. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\344\270\255\344\275\215\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:设计、双指针、数据流、排序、堆(优先队列) - 难度:困难 +## 题目链接 + +- [剑指 Offer 41. 数据流中的中位数 - 力扣](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) + ## 题目大意 要求:设计一个支持一下两种操作的数组结构: diff --git "a/Solutions/\345\211\221\346\214\207 Offer 42. \350\277\236\347\273\255\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" "b/Solutions/\345\211\221\346\214\207 Offer 42. \350\277\236\347\273\255\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" index 10f1a8f9..ec253f48 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 42. \350\277\236\347\273\255\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 42. \350\277\236\347\273\255\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、分治、动态规划 - 难度:简单 +## 题目链接 + +- [剑指 Offer 42. 连续子数组的最大和 - 力扣](https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) + ## 题目大意 给定一个整数数组 `nums` 。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 44. \346\225\260\345\255\227\345\272\217\345\210\227\344\270\255\346\237\220\344\270\200\344\275\215\347\232\204\346\225\260\345\255\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 44. \346\225\260\345\255\227\345\272\217\345\210\227\344\270\255\346\237\220\344\270\200\344\275\215\347\232\204\346\225\260\345\255\227.md" index bece89ad..15e0ec34 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 44. \346\225\260\345\255\227\345\272\217\345\210\227\344\270\255\346\237\220\344\270\200\344\275\215\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 44. \346\225\260\345\255\227\345\272\217\345\210\227\344\270\255\346\237\220\344\270\200\344\275\215\347\232\204\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:数学、二分查找 - 难度:中等 +## 题目链接 + +- [剑指 Offer 44. 数字序列中某一位的数字 - 力扣](https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) + ## 题目大意 数字以 `0123456789101112131415…` 的格式序列化到一个字符序列中。在这个序列中,第 `5` 位(从下标 `0` 开始计数)是 `5`,第 `13` 位是 `1`,第 `19` 位是 `4`,等等。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 45. \346\212\212\346\225\260\347\273\204\346\216\222\346\210\220\346\234\200\345\260\217\347\232\204\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer 45. \346\212\212\346\225\260\347\273\204\346\216\222\346\210\220\346\234\200\345\260\217\347\232\204\346\225\260.md" index 3271a250..fe9b4ee8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 45. \346\212\212\346\225\260\347\273\204\346\216\222\346\210\220\346\234\200\345\260\217\347\232\204\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 45. \346\212\212\346\225\260\347\273\204\346\216\222\346\210\220\346\234\200\345\260\217\347\232\204\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:贪心、字符串、排序 - 难度:中等 +## 题目链接 + +- [剑指 Offer 45. 把数组排成最小的数 - 力扣](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) + ## 题目大意 **描述**:给定一个非负整数数组 $nums$。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 46. \346\212\212\346\225\260\345\255\227\347\277\273\350\257\221\346\210\220\345\255\227\347\254\246\344\270\262.md" "b/Solutions/\345\211\221\346\214\207 Offer 46. \346\212\212\346\225\260\345\255\227\347\277\273\350\257\221\346\210\220\345\255\227\347\254\246\344\270\262.md" index b1591d6f..2dc575de 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 46. \346\212\212\346\225\260\345\255\227\347\277\273\350\257\221\346\210\220\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 46. \346\212\212\346\225\260\345\255\227\347\277\273\350\257\221\346\210\220\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:中等 +## 题目链接 + +- [剑指 Offer 46. 把数字翻译成字符串 - 力扣](https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) + ## 题目大意 给定一个数字 `num`,按照如下规则将其翻译为字符串:`0` 翻译为 `a`,`1` 翻译为 `b`,…,`11` 翻译为 `l`,…,`25` 翻译为 `z`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 47. \347\244\274\347\211\251\347\232\204\346\234\200\345\244\247\344\273\267\345\200\274.md" "b/Solutions/\345\211\221\346\214\207 Offer 47. \347\244\274\347\211\251\347\232\204\346\234\200\345\244\247\344\273\267\345\200\274.md" index d8c7f6c8..55c1488a 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 47. \347\244\274\347\211\251\347\232\204\346\234\200\345\244\247\344\273\267\345\200\274.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 47. \347\244\274\347\211\251\347\232\204\346\234\200\345\244\247\344\273\267\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、矩阵 - 难度:中等 +## 题目链接 + +- [剑指 Offer 47. 礼物的最大价值 - 力扣](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/) + ## 题目大意 给定一个 `m * n` 大小的二维矩阵 `grid` 代表棋盘,棋盘的每一格都放有一个礼物,每个礼物有一定的价值(价值大于 `0`)。`grid[i][j]` 表示棋盘第 `i` 行第 `j` 列的礼物价值。我们可以从左上角的格子开始拿礼物,每次只能向右或者向下移动一格,直到到达棋盘的右下角。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 48. \346\234\200\351\225\277\344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" "b/Solutions/\345\211\221\346\214\207 Offer 48. \346\234\200\351\225\277\344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" index 1026fc25..b2bc6449 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 48. \346\234\200\351\225\277\344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 48. \346\234\200\351\225\277\344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、滑动窗口 - 难度:中等 +## 题目链接 + +- [剑指 Offer 48. 最长不含重复字符的子字符串 - 力扣](https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) + ## 题目大意 给定一个字符串 `s`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 49. \344\270\221\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer 49. \344\270\221\346\225\260.md" index 50d736b3..b87bc0b4 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 49. \344\270\221\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 49. \344\270\221\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:哈希表、数学、动态规划、堆(优先队列) - 难度:中等 +## 题目链接 + +- [剑指 Offer 49. 丑数 - 力扣](https://leetcode.cn/problems/chou-shu-lcof/) + ## 题目大意 给定一个整数 `n`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 50. \347\254\254\344\270\200\344\270\252\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\345\255\227\347\254\246.md" "b/Solutions/\345\211\221\346\214\207 Offer 50. \347\254\254\344\270\200\344\270\252\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\345\255\227\347\254\246.md" index 25c0698f..b97c2e2c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 50. \347\254\254\344\270\200\344\270\252\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\345\255\227\347\254\246.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 50. \347\254\254\344\270\200\344\270\252\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\345\255\227\347\254\246.md" @@ -3,6 +3,10 @@ - 标签:队列、哈希表、字符串、计数 - 难度:简单 +## 题目链接 + +- [剑指 Offer 50. 第一个只出现一次的字符 - 力扣](https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) + ## 题目大意 给定一个字符串 `s`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" "b/Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" index ee77dfe8..8f62595a 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" @@ -3,6 +3,10 @@ - 标签:树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 - 难度:困难 +## 题目链接 + +- [剑指 Offer 51. 数组中的逆序对 - 力扣](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) + ## 题目大意 **描述**:给定一个数组 $nums$。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\350\212\202\347\202\271.md" "b/Solutions/\345\211\221\346\214\207 Offer 52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\350\212\202\347\202\271.md" index cf02094c..b9311ee3 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\350\212\202\347\202\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:哈希表、链表、双指针 - 难度:简单 +## 题目链接 + +- [剑指 Offer 52. 两个链表的第一个公共节点 - 力扣](https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) + ## 题目大意 给定 A、B 两个链表,判断两个链表是否相交,返回相交的起始点。如果不相交,则返回 None。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 53 - I. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\346\225\260\345\255\227 I.md" "b/Solutions/\345\211\221\346\214\207 Offer 53 - I. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\346\225\260\345\255\227 I.md" index 0bd81eba..6327314b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 53 - I. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\346\225\260\345\255\227 I.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 53 - I. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\346\225\260\345\255\227 I.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:简单 +## 题目链接 + +- [剑指 Offer 53 - I. 在排序数组中查找数字 I - 力扣](https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) + ## 题目大意 给定一个排序数组 `nums`,以及一个整数 `target`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 53 - II. 0\357\275\236n-1\344\270\255\347\274\272\345\244\261\347\232\204\346\225\260\345\255\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 53 - II. 0\357\275\236n-1\344\270\255\347\274\272\345\244\261\347\232\204\346\225\260\345\255\227.md" index ce4f6aeb..42349a71 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 53 - II. 0\357\275\236n-1\344\270\255\347\274\272\345\244\261\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 53 - II. 0\357\275\236n-1\344\270\255\347\274\272\345\244\261\347\232\204\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、哈希表、数学、二分查找 - 难度:简单 +## 题目链接 + +- [剑指 Offer 53 - II. 0~n-1中缺失的数字 - 力扣](https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/) + ## 题目大意 给定一个 `n - 1` 个数的升序数组,数组中元素值都在 `0 ~ n - 1` 之间。 `nums` 中有且只有一个数字不在该数组中。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" "b/Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" index 3670980c..da4581ac 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:简单 +## 题目链接 + +- [剑指 Offer 54. 二叉搜索树的第k大节点 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) + ## 题目大意 **描述**:给定一棵二叉搜索树的根节点 $root$,以及一个整数 $k$。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 55 - I. \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" "b/Solutions/\345\211\221\346\214\207 Offer 55 - I. \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" index 6f5bc72e..e2d490e2 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 55 - I. \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 55 - I. \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [剑指 Offer 55 - I. 二叉树的深度 - 力扣](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/) + ## 题目大意 给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 55 - II. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" "b/Solutions/\345\211\221\346\214\207 Offer 55 - II. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" index 7342d8c9..ae199d28 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 55 - II. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 55 - II. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [剑指 Offer 55 - II. 平衡二叉树 - 力扣](https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/) + ## 题目大意 给定一棵二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 56 - I. \346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer 56 - I. \346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" index b099901a..2e6cf764 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 56 - I. \346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 56 - I. \346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组 - 难度:中等 +## 题目链接 + +- [剑指 Offer 56 - I. 数组中数字出现的次数 - 力扣](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) + ## 题目大意 给定一个整型数组 `nums` 。`nums` 里除两个数字之外,其他数字都出现了两次。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 57 - II. \345\222\214\344\270\272s\347\232\204\350\277\236\347\273\255\346\255\243\346\225\260\345\272\217\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 57 - II. \345\222\214\344\270\272s\347\232\204\350\277\236\347\273\255\346\255\243\346\225\260\345\272\217\345\210\227.md" index 8571b729..a3c66f73 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 57 - II. \345\222\214\344\270\272s\347\232\204\350\277\236\347\273\255\346\255\243\346\225\260\345\272\217\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 57 - II. \345\222\214\344\270\272s\347\232\204\350\277\236\347\273\255\346\255\243\346\225\260\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:数学、双指针、枚举 - 难度:简单 +## 题目链接 + +- [剑指 Offer 57 - II. 和为s的连续正数序列 - 力扣](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) + ## 题目大意 **描述**:给定一个正整数 `target`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 57. \345\222\214\344\270\272s\347\232\204\344\270\244\344\270\252\346\225\260\345\255\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 57. \345\222\214\344\270\272s\347\232\204\344\270\244\344\270\252\346\225\260\345\255\227.md" index 6ff5eebf..343753fa 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 57. \345\222\214\344\270\272s\347\232\204\344\270\244\344\270\252\346\225\260\345\255\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 57. \345\222\214\344\270\272s\347\232\204\344\270\244\344\270\252\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、二分查找 - 难度:简单 +## 题目链接 + +- [剑指 Offer 57. 和为s的两个数字 - 力扣](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/) + ## 题目大意 给定一个升序数组 `nums`,以及一个目标整数 `target`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 58 - I. \347\277\273\350\275\254\345\215\225\350\257\215\351\241\272\345\272\217.md" "b/Solutions/\345\211\221\346\214\207 Offer 58 - I. \347\277\273\350\275\254\345\215\225\350\257\215\351\241\272\345\272\217.md" index 06a4075f..51deea29 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 58 - I. \347\277\273\350\275\254\345\215\225\350\257\215\351\241\272\345\272\217.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 58 - I. \347\277\273\350\275\254\345\215\225\350\257\215\351\241\272\345\272\217.md" @@ -3,6 +3,10 @@ - 标签:双指针、字符串 - 难度:简单 +## 题目链接 + +- [剑指 Offer 58 - I. 翻转单词顺序 - 力扣](https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/) + ## 题目大意 给定一个字符串 `s`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 58 - II. \345\267\246\346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" "b/Solutions/\345\211\221\346\214\207 Offer 58 - II. \345\267\246\346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" index a1e45898..32bf7382 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 58 - II. \345\267\246\346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 58 - II. \345\267\246\346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:数学、双指针、字符串 - 难度:简单 +## 题目链接 + +- [剑指 Offer 58 - II. 左旋转字符串 - 力扣](https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/) + ## 题目大意 给定一个字符串 `s` 和一个整数 `n`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 59 - I. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\346\234\200\345\244\247\345\200\274.md" "b/Solutions/\345\211\221\346\214\207 Offer 59 - I. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\346\234\200\345\244\247\345\200\274.md" index cb4b252c..97e29981 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 59 - I. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\346\234\200\345\244\247\345\200\274.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 59 - I. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\346\234\200\345\244\247\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:队列、滑动窗口、单调队列、堆(优先队列) - 难度:困难 +## 题目链接 + +- [剑指 Offer 59 - I. 滑动窗口的最大值 - 力扣](https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) + ## 题目大意 给定一个整数数组 `nums` 和滑动窗口的大小 `k`。表示为大小为 `k` 的滑动窗口从数组的最左侧移动到数组的最右侧。我们只能看到滑动窗口内的 `k` 个数字,滑动窗口每次只能向右移动一位。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 59 - II. \351\230\237\345\210\227\347\232\204\346\234\200\345\244\247\345\200\274.md" "b/Solutions/\345\211\221\346\214\207 Offer 59 - II. \351\230\237\345\210\227\347\232\204\346\234\200\345\244\247\345\200\274.md" index 145e5166..75a78621 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 59 - II. \351\230\237\345\210\227\347\232\204\346\234\200\345\244\247\345\200\274.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 59 - II. \351\230\237\345\210\227\347\232\204\346\234\200\345\244\247\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:设计、队列、单调队列 - 难度:中等 +## 题目链接 + +- [剑指 Offer 59 - II. 队列的最大值 - 力扣](https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/) + ## 题目大意 要求:设计一个「队列」,实现 `max_value` 函数,可通过 `max_value` 得到大年队列的最大值。并且要求 `max_value`、`push_back`、`pop_front` 的均摊时间复杂度都是 `O(1)`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 61. \346\211\221\345\205\213\347\211\214\344\270\255\347\232\204\351\241\272\345\255\220.md" "b/Solutions/\345\211\221\346\214\207 Offer 61. \346\211\221\345\205\213\347\211\214\344\270\255\347\232\204\351\241\272\345\255\220.md" index 94a30fb0..1efb62b1 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 61. \346\211\221\345\205\213\347\211\214\344\270\255\347\232\204\351\241\272\345\255\220.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 61. \346\211\221\345\205\213\347\211\214\344\270\255\347\232\204\351\241\272\345\255\220.md" @@ -3,6 +3,10 @@ - 标签:数组、排序 - 难度:简单 +## 题目链接 + +- [剑指 Offer 61. 扑克牌中的顺子 - 力扣](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) + ## 题目大意 给定一个 `5` 位数的数组 `nums` 代表扑克牌中的 `5` 张牌。其中 `2~10` 为数字本身,`A` 用 `1` 表示,`J` 用 `11` 表示,`Q` 用 `12` 表示,`K` 用 `13` 表示,大小王用 `0` 表示,且大小王可以替换任意数字。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" "b/Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" index 003d1f37..65b74b0d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:递归、数学 - 难度:简单 +## 题目链接 + +- [剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) + ## 题目大意 **描述**:$0$、$1$、…、$n - 1$ 这 $n$ 个数字排成一个圆圈,从数字 $0$ 开始,每次从圆圈里删除第 $m$ 个数字。现在给定整数 $n$ 和 $m$。 @@ -51,14 +55,14 @@ 即等于 $n - 1$ 个数构成的环没删除 $m$ 个数后最终胜利者的位置,像右移动 $m$ 次。 -问题是现在并不是真的进行了右移,因为当前数组右移后超过数组容量的部分应该重新放到数组头部位置。所以公式应为:$f(n, m) = [f(n - 1, m) + m] % n$,$n$ 为反过来向前推的时候,每一步剩余的数字个数(比如第二步推回第一步,n $4$),则反过来递推公式为: +问题是现在并不是真的进行了右移,因为当前数组右移后超过数组容量的部分应该重新放到数组头部位置。所以公式应为:$f(n, m) = [f(n - 1, m) + m] \mod n$,$n$ 为反过来向前推的时候,每一步剩余的数字个数(比如第二步推回第一步,n $4$),则反过来递推公式为: - $f(1, m) = 0$。 -- $f(2, m) = [f(1, m) + m] % 2$。 -- $f(3, m) = [f(2, m) + m] % 3$。 +- $f(2, m) = [f(1, m) + m] \mod 2$。 +- $f(3, m) = [f(2, m) + m] \mod 3$。 - 。。。。。。 -- $f(n, m) = [f(n - 1, m) + m] % n $。 +- $f(n, m) = [f(n - 1, m) + m] \mod n $。 接下来就是递推求解了。 @@ -81,4 +85,3 @@ class Solution: ## 参考资料: - [字节题库 - #剑62 - 简单 - 圆圈中最后剩下的数字 - 1刷](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/solution/zi-jie-ti-ku-jian-62-jian-dan-yuan-quan-3hlji/) - diff --git "a/Solutions/\345\211\221\346\214\207 Offer 63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" "b/Solutions/\345\211\221\346\214\207 Offer 63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" index 9e4c9eaf..97f92a17 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [剑指 Offer 63. 股票的最大利润 - 力扣](https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/) + ## 题目大意 给定一个数组 `nums`,`nums[i]` 表示一支给定股票第 `i` 天的价格。选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。求能获取的最大利润。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 64. \346\261\2021+2+\342\200\246+n.md" "b/Solutions/\345\211\221\346\214\207 Offer 64. \346\261\2021+2+\342\200\246+n.md" index 85ee476e..728ed3da 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 64. \346\261\2021+2+\342\200\246+n.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 64. \346\261\2021+2+\342\200\246+n.md" @@ -3,6 +3,10 @@ - 标签:位运算、递归、脑筋急转弯 - 难度:中等 +## 题目链接 + +- [剑指 Offer 64. 求1+2+…+n - 力扣](https://leetcode.cn/problems/qiu-12n-lcof/) + ## 题目大意 给定一个整数 `n`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 65. \344\270\215\347\224\250\345\212\240\345\207\217\344\271\230\351\231\244\345\201\232\345\212\240\346\263\225.md" "b/Solutions/\345\211\221\346\214\207 Offer 65. \344\270\215\347\224\250\345\212\240\345\207\217\344\271\230\351\231\244\345\201\232\345\212\240\346\263\225.md" index 045a7bd3..ee9d3511 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 65. \344\270\215\347\224\250\345\212\240\345\207\217\344\271\230\351\231\244\345\201\232\345\212\240\346\263\225.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 65. \344\270\215\347\224\250\345\212\240\345\207\217\344\271\230\351\231\244\345\201\232\345\212\240\346\263\225.md" @@ -3,6 +3,10 @@ - 标签:位运算、数学 - 难度:简单 +## 题目链接 + +- [剑指 Offer 65. 不用加减乘除做加法 - 力扣](https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) + ## 题目大意 给定两个整数 `a`、`b`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" "b/Solutions/\345\211\221\346\214\207 Offer 66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" index 18d912c7..6d839c22 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、前缀和 - 难度:中等 +## 题目链接 + +- [剑指 Offer 66. 构建乘积数组 - 力扣](https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/) + ## 题目大意 给定一个数组 `A`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 67. \346\212\212\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\210\220\346\225\264\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer 67. \346\212\212\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\210\220\346\225\264\346\225\260.md" index 19082b10..b97b3760 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 67. \346\212\212\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\210\220\346\225\264\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 67. \346\212\212\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\210\220\346\225\264\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:字符串 - 难度:中等 +## 题目链接 + +- [剑指 Offer 67. 把字符串转换成整数 - 力扣](https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) + ## 题目大意 给定一个字符串 `str`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 68 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/Solutions/\345\211\221\346\214\207 Offer 68 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" index 90f5c973..e162f4b8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 68 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 68 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:简单 +## 题目链接 + +- [剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) + ## 题目大意 给定一棵二叉搜索树的根节点 `root` 和两个指定节点 `p`、`q`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 68 - II. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/Solutions/\345\211\221\346\214\207 Offer 68 - II. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" index 38412714..79a9ef48 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 68 - II. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 68 - II. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:简单 +## 题目链接 + +- [剑指 Offer 68 - II. 二叉树的最近公共祖先 - 力扣](https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) + ## 题目大意 给定一个二叉树的根节点 `root`,再给定两个指定节点 `p`、`q`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 001. \346\225\264\346\225\260\351\231\244\346\263\225.md" "b/Solutions/\345\211\221\346\214\207 Offer II 001. \346\225\264\346\225\260\351\231\244\346\263\225.md" index 7f02a963..583c3826 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 001. \346\225\264\346\225\260\351\231\244\346\263\225.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 001. \346\225\264\346\225\260\351\231\244\346\263\225.md" @@ -3,6 +3,10 @@ - 标签:位运算、数学 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 001. 整数除法 - 力扣](https://leetcode.cn/problems/xoh6Oh/) + ## 题目大意 给定两个整数,被除数 dividend 和除数 divisor。要求返回两数相除的商,并且不能使用乘法,除法和取余运算。取值范围在 $[-2^{31}, 2^{31}-1]$。如果结果溢出,则返回 $2^{31} - 1$。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225.md" "b/Solutions/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225.md" index be1943d5..99ed6ae5 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225.md" @@ -3,6 +3,10 @@ - 标签:位运算、数学、字符串、模拟 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 002. 二进制加法 - 力扣](https://leetcode.cn/problems/JFETK5/) + ## 题目大意 给定两个二进制数的字符串 `a`、`b`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 003. \345\211\215 n \344\270\252\346\225\260\345\255\227\344\272\214\350\277\233\345\210\266\344\270\255 1 \347\232\204\344\270\252\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer II 003. \345\211\215 n \344\270\252\346\225\260\345\255\227\344\272\214\350\277\233\345\210\266\344\270\255 1 \347\232\204\344\270\252\346\225\260.md" index e7a716e9..89d6f54f 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 003. \345\211\215 n \344\270\252\346\225\260\345\255\227\344\272\214\350\277\233\345\210\266\344\270\255 1 \347\232\204\344\270\252\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 003. \345\211\215 n \344\270\252\346\225\260\345\255\227\344\272\214\350\277\233\345\210\266\344\270\255 1 \347\232\204\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:位运算、动态规划 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 - 力扣](https://leetcode.cn/problems/w3tCBm/) + ## 题目大意 给定一个整数 `n`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 004. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" "b/Solutions/\345\211\221\346\214\207 Offer II 004. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" index 4a2442b7..cea40233 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 004. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 004. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 004. 只出现一次的数字 - 力扣](https://leetcode.cn/problems/WGki4K/) + ## 题目大意 给定一个整数数组 `nums`,除了某个元素仅出现一次外,其余每个元素恰好出现三次。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 005. \345\215\225\350\257\215\351\225\277\345\272\246\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md" "b/Solutions/\345\211\221\346\214\207 Offer II 005. \345\215\225\350\257\215\351\225\277\345\272\246\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md" index c6168049..7066e417 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 005. \345\215\225\350\257\215\351\225\277\345\272\246\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 005. \345\215\225\350\257\215\351\225\277\345\272\246\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、字符串 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 005. 单词长度的最大乘积 - 力扣](https://leetcode.cn/problems/aseY1I/) + ## 题目大意 给定一个字符串数组 `words`。字符串中只包含英语的小写字母。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 006. \346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\345\255\227\344\271\213\345\222\214.md" "b/Solutions/\345\211\221\346\214\207 Offer II 006. \346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\345\255\227\344\271\213\345\222\214.md" index bcd7bdbc..80d48f88 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 006. \346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\345\255\227\344\271\213\345\222\214.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 006. \346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\345\255\227\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、二分查找 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 006. 排序数组中两个数字之和 - 力扣](https://leetcode.cn/problems/kLl5u1/) + ## 题目大意 给定一个升序数组:`numbers` 和一个目标值 `target`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 007. \346\225\260\347\273\204\344\270\255\345\222\214\344\270\272 0 \347\232\204\344\270\211\344\270\252\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer II 007. \346\225\260\347\273\204\344\270\255\345\222\214\344\270\272 0 \347\232\204\344\270\211\344\270\252\346\225\260.md" index 246c6a13..680d5312 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 007. \346\225\260\347\273\204\344\270\255\345\222\214\344\270\272 0 \347\232\204\344\270\211\344\270\252\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 007. \346\225\260\347\273\204\344\270\255\345\222\214\344\270\272 0 \347\232\204\344\270\211\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、排序 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 007. 数组中和为 0 的三个数 - 力扣](https://leetcode.cn/problems/1fGaJU/) + ## 题目大意 给定一个包含 `n` 个整数的数组 `nums`,判断 `nums` 中是否存在三个元素 `a`、`b`、`c`,满足 `a + b + c = 0`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 008. \345\222\214\345\244\247\344\272\216\347\255\211\344\272\216 target \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" "b/Solutions/\345\211\221\346\214\207 Offer II 008. \345\222\214\345\244\247\344\272\216\347\255\211\344\272\216 target \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" index 1b215e44..9921d1f3 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 008. \345\222\214\345\244\247\344\272\216\347\255\211\344\272\216 target \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 008. \345\222\214\345\244\247\344\272\216\347\255\211\344\272\216 target \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、前缀和、滑动窗口 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 008. 和大于等于 target 的最短子数组 - 力扣](https://leetcode.cn/problems/2VG8Kg/) + ## 题目大意 给定一个只包含正整数的数组 `nums` 和一个正整数 `target`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 009. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/\345\211\221\346\214\207 Offer II 009. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" index 379b653a..bb7e4820 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 009. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 009. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、滑动窗口 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 009. 乘积小于 K 的子数组 - 力扣](https://leetcode.cn/problems/ZVAVXX/) + ## 题目大意 给定一个正整数数组 `nums` 和一个整数 `k`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 010. \345\222\214\344\270\272 k \347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/\345\211\221\346\214\207 Offer II 010. \345\222\214\344\270\272 k \347\232\204\345\255\220\346\225\260\347\273\204.md" index 89c3be6a..c2a438d2 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 010. \345\222\214\344\270\272 k \347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 010. \345\222\214\344\270\272 k \347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、前缀和 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 010. 和为 k 的子数组 - 力扣](https://leetcode.cn/problems/QTMn0o/) + ## 题目大意 给定一个整数数组 `nums` 和一个整数 `k`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 011. 0 \345\222\214 1 \344\270\252\346\225\260\347\233\270\345\220\214\347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/\345\211\221\346\214\207 Offer II 011. 0 \345\222\214 1 \344\270\252\346\225\260\347\233\270\345\220\214\347\232\204\345\255\220\346\225\260\347\273\204.md" index 4b6175fc..2c73929b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 011. 0 \345\222\214 1 \344\270\252\346\225\260\347\233\270\345\220\214\347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 011. 0 \345\222\214 1 \344\270\252\346\225\260\347\233\270\345\220\214\347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、前缀和 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 011. 0 和 1 个数相同的子数组 - 力扣](https://leetcode.cn/problems/A1NYOS/) + ## 题目大意 给定一个二进制数组 `nums`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 012. \345\267\246\345\217\263\344\270\244\350\276\271\345\255\220\346\225\260\347\273\204\347\232\204\345\222\214\347\233\270\347\255\211.md" "b/Solutions/\345\211\221\346\214\207 Offer II 012. \345\267\246\345\217\263\344\270\244\350\276\271\345\255\220\346\225\260\347\273\204\347\232\204\345\222\214\347\233\270\347\255\211.md" index adb9cced..b3130ca5 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 012. \345\267\246\345\217\263\344\270\244\350\276\271\345\255\220\346\225\260\347\273\204\347\232\204\345\222\214\347\233\270\347\255\211.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 012. \345\267\246\345\217\263\344\270\244\350\276\271\345\255\220\346\225\260\347\273\204\347\232\204\345\222\214\347\233\270\347\255\211.md" @@ -3,6 +3,10 @@ - 标签:数组、前缀和 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 012. 左右两边子数组的和相等 - 力扣](https://leetcode.cn/problems/tvdfij/) + ## 题目大意 给定一个数组 `nums`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 013. \344\272\214\347\273\264\345\255\220\347\237\251\351\230\265\347\232\204\345\222\214.md" "b/Solutions/\345\211\221\346\214\207 Offer II 013. \344\272\214\347\273\264\345\255\220\347\237\251\351\230\265\347\232\204\345\222\214.md" index 7b06570d..8264d767 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 013. \344\272\214\347\273\264\345\255\220\347\237\251\351\230\265\347\232\204\345\222\214.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 013. \344\272\214\347\273\264\345\255\220\347\237\251\351\230\265\347\232\204\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:设计、数组、矩阵、前缀和 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 013. 二维子矩阵的和 - 力扣](https://leetcode.cn/problems/O4NDxx/) + ## 题目大意 给定一个二维矩阵 `matrix`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 016. \344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\345\255\227\347\254\246\344\270\262.md" "b/Solutions/\345\211\221\346\214\207 Offer II 016. \344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\345\255\227\347\254\246\344\270\262.md" index 58cd1d55..0b707a9b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 016. \344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 016. \344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、滑动窗口 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 016. 不含重复字符的最长子字符串 - 力扣](https://leetcode.cn/problems/wtcaE1/) + ## 题目大意 给定一个字符串 `s`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 017. \345\220\253\346\234\211\346\211\200\346\234\211\345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\345\255\227\347\254\246\344\270\262.md" "b/Solutions/\345\211\221\346\214\207 Offer II 017. \345\220\253\346\234\211\346\211\200\346\234\211\345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\345\255\227\347\254\246\344\270\262.md" index 4f0bfe65..659ccc5a 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 017. \345\220\253\346\234\211\346\211\200\346\234\211\345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 017. \345\220\253\346\234\211\346\211\200\346\234\211\345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、滑动窗口 - 难度:困难 +## 题目链接 + +- [剑指 Offer II 017. 含有所有字符的最短字符串 - 力扣](https://leetcode.cn/problems/M1oyTv/) + ## 题目大意 给定一个字符串 `s`、一个字符串 `t`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207.md" "b/Solutions/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207.md" index 539ce5e2..952c8fba 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207.md" @@ -3,6 +3,10 @@ - 标签:双指针、字符串 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 018. 有效的回文 - 力扣](https://leetcode.cn/problems/XltzEq/) + ## 题目大意 给定一个字符串 `s`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 019. \346\234\200\345\244\232\345\210\240\351\231\244\344\270\200\344\270\252\345\255\227\347\254\246\345\276\227\345\210\260\345\233\236\346\226\207.md" "b/Solutions/\345\211\221\346\214\207 Offer II 019. \346\234\200\345\244\232\345\210\240\351\231\244\344\270\200\344\270\252\345\255\227\347\254\246\345\276\227\345\210\260\345\233\236\346\226\207.md" index 8f1927bd..7f39bd99 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 019. \346\234\200\345\244\232\345\210\240\351\231\244\344\270\200\344\270\252\345\255\227\347\254\246\345\276\227\345\210\260\345\233\236\346\226\207.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 019. \346\234\200\345\244\232\345\210\240\351\231\244\344\270\200\344\270\252\345\255\227\347\254\246\345\276\227\345\210\260\345\233\236\346\226\207.md" @@ -3,6 +3,10 @@ - 标签:贪心、双指针、字符串 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 019. 最多删除一个字符得到回文 - 力扣](https://leetcode.cn/problems/RQku0D/) + ## 题目大意 给定一个非空字符串 `s`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 020. \345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\344\270\252\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer II 020. \345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\344\270\252\346\225\260.md" index 4bd4a042..84d3b14a 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 020. \345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\344\270\252\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 020. \345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 020. 回文子字符串的个数 - 力扣](https://leetcode.cn/problems/a7VOhD/) + ## 题目大意 给定一个字符串 `s`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271.md" "b/Solutions/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271.md" index b76af31c..871bd104 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:链表、双指针 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 021. 删除链表的倒数第 n 个结点 - 力扣](https://leetcode.cn/problems/SLwz0R/) + ## 题目大意 给你一个链表的头节点 `head` 和一个整数 `n`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 022. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\350\212\202\347\202\271.md" "b/Solutions/\345\211\221\346\214\207 Offer II 022. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\350\212\202\347\202\271.md" index 35a1b9a5..9dd6c703 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 022. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\350\212\202\347\202\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 022. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:哈希表、链表、双指针 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 022. 链表中环的入口节点 - 力扣](https://leetcode.cn/problems/c32eOV/) + ## 题目大意 给定一个链表的头节点 `head`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 023. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\351\207\215\345\220\210\350\212\202\347\202\271.md" "b/Solutions/\345\211\221\346\214\207 Offer II 023. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\351\207\215\345\220\210\350\212\202\347\202\271.md" index 95061981..16f0c24b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 023. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\351\207\215\345\220\210\350\212\202\347\202\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 023. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\351\207\215\345\220\210\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:哈希表、链表、双指针 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 023. 两个链表的第一个重合节点 - 力扣](https://leetcode.cn/problems/3u1WK4/) + ## 题目大意 给定 `A`、`B` 两个链表。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 024. \345\217\215\350\275\254\351\223\276\350\241\250.md" "b/Solutions/\345\211\221\346\214\207 Offer II 024. \345\217\215\350\275\254\351\223\276\350\241\250.md" index 95383a8f..7feea5c2 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 024. \345\217\215\350\275\254\351\223\276\350\241\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 024. \345\217\215\350\275\254\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:递归、链表 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 024. 反转链表 - 力扣](https://leetcode.cn/problems/UHnkqh/) + ## 题目大意 **描述**:给定一个单链表的头节点 `head`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240.md" "b/Solutions/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240.md" index bcedfeaf..793aebd6 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240.md" @@ -3,6 +3,10 @@ - 标签:栈、链表、数学 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 025. 链表中的两数相加 - 力扣](https://leetcode.cn/problems/lMSNwu/) + ## 题目大意 给定两个非空链表的头节点 `l1` 和 `l2` 来代表两个非负整数。数字最高位位于链表开始位置。每个节点只储存一位数字。除了数字 `0` 之外,这两个链表代表的数字都不会以 `0` 开头。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 026. \351\207\215\346\216\222\351\223\276\350\241\250.md" "b/Solutions/\345\211\221\346\214\207 Offer II 026. \351\207\215\346\216\222\351\223\276\350\241\250.md" index fe6d08e7..7cbf286e 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 026. \351\207\215\346\216\222\351\223\276\350\241\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 026. \351\207\215\346\216\222\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:栈、递归、链表、双指针 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 026. 重排链表 - 力扣](https://leetcode.cn/problems/LGjMqU/) + ## 题目大意 给定一个单链表 `L` 的头节点 `head`,单链表 `L` 表示为:$L_0$ -> $L_1$ -> $L_2$ -> ... -> $L_{n-1}$ -> $L_n$。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250.md" "b/Solutions/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250.md" index 9454ef43..10eacce6 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:栈、递归、链表、双指针 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 027. 回文链表 - 力扣](https://leetcode.cn/problems/aMhZSa/) + ## 题目大意 给定一个链表的头节点 `head`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 028. \345\261\225\345\271\263\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/Solutions/\345\211\221\346\214\207 Offer II 028. \345\261\225\345\271\263\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" index b29580b1..c16124b8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 028. \345\261\225\345\271\263\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 028. \345\261\225\345\271\263\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、链表、双向链表 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 028. 展平多级双向链表 - 力扣](https://leetcode.cn/problems/Qv1Da2/) + ## 题目大意 给定一个带子链表指针 `child` 的双向链表。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 029. \346\216\222\345\272\217\347\232\204\345\276\252\347\216\257\351\223\276\350\241\250.md" "b/Solutions/\345\211\221\346\214\207 Offer II 029. \346\216\222\345\272\217\347\232\204\345\276\252\347\216\257\351\223\276\350\241\250.md" index ea2a7dea..30407c41 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 029. \346\216\222\345\272\217\347\232\204\345\276\252\347\216\257\351\223\276\350\241\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 029. \346\216\222\345\272\217\347\232\204\345\276\252\347\216\257\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:链表 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 029. 排序的循环链表 - 力扣](https://leetcode.cn/problems/4ueAj6/) + ## 题目大意 给定循环升序链表中的一个节点 `head` 和一个整数 `insertVal`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 030. \346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\351\232\217\346\234\272\350\256\277\351\227\256\351\203\275\346\230\257 O(1) \347\232\204\345\256\271\345\231\250.md" "b/Solutions/\345\211\221\346\214\207 Offer II 030. \346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\351\232\217\346\234\272\350\256\277\351\227\256\351\203\275\346\230\257 O(1) \347\232\204\345\256\271\345\231\250.md" index 28a9c053..18c33c2d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 030. \346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\351\232\217\346\234\272\350\256\277\351\227\256\351\203\275\346\230\257 O(1) \347\232\204\345\256\271\345\231\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 030. \346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\351\232\217\346\234\272\350\256\277\351\227\256\351\203\275\346\230\257 O(1) \347\232\204\345\256\271\345\231\250.md" @@ -3,6 +3,10 @@ - 标签:设计、数组、哈希表、数学、随机化 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 030. 插入、删除和随机访问都是 O(1) 的容器 - 力扣](https://leetcode.cn/problems/FortPu/) + ## 题目大意 设计一个数据结构 ,支持时间复杂度为 $O(1)$ 的以下操作: diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 031. \346\234\200\350\277\221\346\234\200\345\260\221\344\275\277\347\224\250\347\274\223\345\255\230.md" "b/Solutions/\345\211\221\346\214\207 Offer II 031. \346\234\200\350\277\221\346\234\200\345\260\221\344\275\277\347\224\250\347\274\223\345\255\230.md" index ee3a8480..11f701ef 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 031. \346\234\200\350\277\221\346\234\200\345\260\221\344\275\277\347\224\250\347\274\223\345\255\230.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 031. \346\234\200\350\277\221\346\234\200\345\260\221\344\275\277\347\224\250\347\274\223\345\255\230.md" @@ -3,6 +3,10 @@ - 标签:设计、哈希表、链表、双向链表 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 031. 最近最少使用缓存 - 力扣](https://leetcode.cn/problems/OrIXps/) + ## 题目大意 要求:实现一个 `LRU(最近最少使用)缓存机制`,并且在 `O(1)` 时间复杂度内完成 `get`、`put` 操作。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 032. \346\234\211\346\225\210\347\232\204\345\217\230\344\275\215\350\257\215.md" "b/Solutions/\345\211\221\346\214\207 Offer II 032. \346\234\211\346\225\210\347\232\204\345\217\230\344\275\215\350\257\215.md" index 7a31073b..6ac97654 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 032. \346\234\211\346\225\210\347\232\204\345\217\230\344\275\215\350\257\215.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 032. \346\234\211\346\225\210\347\232\204\345\217\230\344\275\215\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:哈希表、字符串、排序 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 032. 有效的变位词 - 力扣](https://leetcode.cn/problems/dKk3P7/) + ## 题目大意 给定两个字符串 `s` 和 `t`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 033. \345\217\230\344\275\215\350\257\215\347\273\204.md" "b/Solutions/\345\211\221\346\214\207 Offer II 033. \345\217\230\344\275\215\350\257\215\347\273\204.md" index fe5bc2b9..dbe4c21e 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 033. \345\217\230\344\275\215\350\257\215\347\273\204.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 033. \345\217\230\344\275\215\350\257\215\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、字符串、排序 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 033. 变位词组 - 力扣](https://leetcode.cn/problems/sfvd7V/) + ## 题目大意 给定一个字符串数组 `strs`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 034. \345\244\226\346\230\237\350\257\255\350\250\200\346\230\257\345\220\246\346\216\222\345\272\217.md" "b/Solutions/\345\211\221\346\214\207 Offer II 034. \345\244\226\346\230\237\350\257\255\350\250\200\346\230\257\345\220\246\346\216\222\345\272\217.md" index 30e11640..2cebf50b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 034. \345\244\226\346\230\237\350\257\255\350\250\200\346\230\257\345\220\246\346\216\222\345\272\217.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 034. \345\244\226\346\230\237\350\257\255\350\250\200\346\230\257\345\220\246\346\216\222\345\272\217.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、字符串 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 034. 外星语言是否排序 - 力扣](https://leetcode.cn/problems/lwyVBB/) + ## 题目大意 给定一组用外星语书写的单词字符串数组 `words`,以及表示外星字母表的顺序的字符串 `order` 。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 035. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" "b/Solutions/\345\211\221\346\214\207 Offer II 035. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" index 733f42d5..affdee56 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 035. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 035. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" @@ -3,6 +3,10 @@ - 标签:数组、数学、字符串、排序 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 035. 最小时间差 - 力扣](https://leetcode.cn/problems/569nqc/) + ## 题目大意 给定一个 24 小时制形式(小时:分钟 "HH:MM")的时间列表 `timePoints`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 036. \345\220\216\347\274\200\350\241\250\350\276\276\345\274\217.md" "b/Solutions/\345\211\221\346\214\207 Offer II 036. \345\220\216\347\274\200\350\241\250\350\276\276\345\274\217.md" index d7e9dea8..e73d29a9 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 036. \345\220\216\347\274\200\350\241\250\350\276\276\345\274\217.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 036. \345\220\216\347\274\200\350\241\250\350\276\276\345\274\217.md" @@ -3,6 +3,10 @@ - 标签:栈、数组、数学 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 036. 后缀表达式 - 力扣](https://leetcode.cn/problems/8Zf90G/) + ## 题目大意 给定一个字符串数组 `tokens`,表示「逆波兰表达式」,求解表达式的值。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 037. \345\260\217\350\241\214\346\230\237\347\242\260\346\222\236.md" "b/Solutions/\345\211\221\346\214\207 Offer II 037. \345\260\217\350\241\214\346\230\237\347\242\260\346\222\236.md" index a4a2966e..c5ce82f8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 037. \345\260\217\350\241\214\346\230\237\347\242\260\346\222\236.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 037. \345\260\217\350\241\214\346\230\237\347\242\260\346\222\236.md" @@ -3,6 +3,10 @@ - 标签:栈、数组 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 037. 小行星碰撞 - 力扣](https://leetcode.cn/problems/XagZNi/) + ## 题目大意 给定一个整数数组 `asteroids`,表示在同一行的小行星。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 038. \346\257\217\346\227\245\346\270\251\345\272\246.md" "b/Solutions/\345\211\221\346\214\207 Offer II 038. \346\257\217\346\227\245\346\270\251\345\272\246.md" index 9c754a3a..787656a7 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 038. \346\257\217\346\227\245\346\270\251\345\272\246.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 038. \346\257\217\346\227\245\346\270\251\345\272\246.md" @@ -3,6 +3,10 @@ - 标签:栈、数组、单调栈 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 038. 每日温度 - 力扣](https://leetcode.cn/problems/iIQa4I/) + ## 题目大意 给定一个列表 `temperatures`,每一个位置对应每天的气温。要求输出一个列表,列表上每个位置代表如果要观测到更高的气温,至少需要等待的天数。如果之后的气温不再升高,则用 `0` 来代替。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 039. \347\233\264\346\226\271\345\233\276\346\234\200\345\244\247\347\237\251\345\275\242\351\235\242\347\247\257.md" "b/Solutions/\345\211\221\346\214\207 Offer II 039. \347\233\264\346\226\271\345\233\276\346\234\200\345\244\247\347\237\251\345\275\242\351\235\242\347\247\257.md" index 376e7c05..f5f87c1b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 039. \347\233\264\346\226\271\345\233\276\346\234\200\345\244\247\347\237\251\345\275\242\351\235\242\347\247\257.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 039. \347\233\264\346\226\271\345\233\276\346\234\200\345\244\247\347\237\251\345\275\242\351\235\242\347\247\257.md" @@ -3,6 +3,10 @@ - 标签:栈、数组、单调栈 - 难度:困难 +## 题目链接 + +- [剑指 Offer II 039. 直方图最大矩形面积 - 力扣](https://leetcode.cn/problems/0ynMMM/) + ## 题目大意 给定一个非负整数数组 `heights` ,`heights[i]` 用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 041. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\345\271\263\345\235\207\345\200\274.md" "b/Solutions/\345\211\221\346\214\207 Offer II 041. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\345\271\263\345\235\207\345\200\274.md" index 27487565..ced7512d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 041. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\345\271\263\345\235\207\345\200\274.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 041. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\345\271\263\345\235\207\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:设计、队列、数组、数据流 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 041. 滑动窗口的平均值 - 力扣](https://leetcode.cn/problems/qIsx9U/) + ## 题目大意 **描述**:给定一个整数数据流和一个窗口大小 `size`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 042. \346\234\200\350\277\221\350\257\267\346\261\202\346\254\241\346\225\260.md" "b/Solutions/\345\211\221\346\214\207 Offer II 042. \346\234\200\350\277\221\350\257\267\346\261\202\346\254\241\346\225\260.md" index 8f114bd4..0f6219bd 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 042. \346\234\200\350\277\221\350\257\267\346\261\202\346\254\241\346\225\260.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 042. \346\234\200\350\277\221\350\257\267\346\261\202\346\254\241\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:设计、队列、数据流 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 042. 最近请求次数 - 力扣](https://leetcode.cn/problems/H8086Q/) + ## 题目大意 要求:实现一个用来计算特定时间范围内的最近请求的 `RecentCounter` 类: diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 043. \345\276\200\345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\267\273\345\212\240\350\212\202\347\202\271.md" "b/Solutions/\345\211\221\346\214\207 Offer II 043. \345\276\200\345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\267\273\345\212\240\350\212\202\347\202\271.md" index b20bec27..e4c35c20 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 043. \345\276\200\345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\267\273\345\212\240\350\212\202\347\202\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 043. \345\276\200\345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\267\273\345\212\240\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:树、广度优先搜索、设计、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 043. 往完全二叉树添加节点 - 力扣](https://leetcode.cn/problems/NaqhDT/) + ## 题目大意 要求:设计一个用完全二叉树初始化的数据结构 `CBTInserter`,并支持以下几种操作: diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 044. \344\272\214\345\217\211\346\240\221\346\257\217\345\261\202\347\232\204\346\234\200\345\244\247\345\200\274.md" "b/Solutions/\345\211\221\346\214\207 Offer II 044. \344\272\214\345\217\211\346\240\221\346\257\217\345\261\202\347\232\204\346\234\200\345\244\247\345\200\274.md" index 4a650447..785351a4 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 044. \344\272\214\345\217\211\346\240\221\346\257\217\345\261\202\347\232\204\346\234\200\345\244\247\345\200\274.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 044. \344\272\214\345\217\211\346\240\221\346\257\217\345\261\202\347\232\204\346\234\200\345\244\247\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 044. 二叉树每层的最大值 - 力扣](https://leetcode.cn/problems/hPov7L/) + ## 题目大意 给定一棵二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 045. \344\272\214\345\217\211\346\240\221\346\234\200\345\272\225\345\261\202\346\234\200\345\267\246\350\276\271\347\232\204\345\200\274.md" "b/Solutions/\345\211\221\346\214\207 Offer II 045. \344\272\214\345\217\211\346\240\221\346\234\200\345\272\225\345\261\202\346\234\200\345\267\246\350\276\271\347\232\204\345\200\274.md" index 1009a128..0e0f9fac 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 045. \344\272\214\345\217\211\346\240\221\346\234\200\345\272\225\345\261\202\346\234\200\345\267\246\350\276\271\347\232\204\345\200\274.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 045. \344\272\214\345\217\211\346\240\221\346\234\200\345\272\225\345\261\202\346\234\200\345\267\246\350\276\271\347\232\204\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 045. 二叉树最底层最左边的值 - 力扣](https://leetcode.cn/problems/LwUNpT/) + ## 题目大意 给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 046. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\344\276\247\350\247\206\345\233\276.md" "b/Solutions/\345\211\221\346\214\207 Offer II 046. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\344\276\247\350\247\206\345\233\276.md" index cdb1d950..6589de02 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 046. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\344\276\247\350\247\206\345\233\276.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 046. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\344\276\247\350\247\206\345\233\276.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 046. 二叉树的右侧视图 - 力扣](https://leetcode.cn/problems/WNC0Lk/) + ## 题目大意 给定一棵二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 047. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" "b/Solutions/\345\211\221\346\214\207 Offer II 047. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" index 2b08f5d3..179a4c64 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 047. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 047. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 047. 二叉树剪枝 - 力扣](https://leetcode.cn/problems/pOCWxh/) + ## 题目大意 给定一棵二叉树的根节点 `root`,树的每个节点值要么是 `0`,要么是 `1`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 048. \345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" "b/Solutions/\345\211\221\346\214\207 Offer II 048. \345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" index 34b6e031..340cfc9c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 048. \345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 048. \345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 - 难度:困难 +## 题目链接 + +- [剑指 Offer II 048. 序列化与反序列化二叉树 - 力扣](https://leetcode.cn/problems/h54YBf/) + ## 题目大意 要求:设计一个算法,来实现二叉树的序列化与反序列化。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 049. \344\273\216\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\347\232\204\350\267\257\345\276\204\346\225\260\345\255\227\344\271\213\345\222\214.md" "b/Solutions/\345\211\221\346\214\207 Offer II 049. \344\273\216\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\347\232\204\350\267\257\345\276\204\346\225\260\345\255\227\344\271\213\345\222\214.md" index 080a965c..69169059 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 049. \344\273\216\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\347\232\204\350\267\257\345\276\204\346\225\260\345\255\227\344\271\213\345\222\214.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 049. \344\273\216\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\347\232\204\350\267\257\345\276\204\346\225\260\345\255\227\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 049. 从根节点到叶节点的路径数字之和 - 力扣](https://leetcode.cn/problems/3Etpl5/) + ## 题目大意 给定一个二叉树的根节点 `root`,树中每个节点都存放有一个 `0` 到 `9` 之间的数字。每条从根节点到叶节点的路径都代表一个数字。例如,从根节点到叶节点的路径是 `1` -> `2` -> `3`,表示数字 `123`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 050. \345\220\221\344\270\213\347\232\204\350\267\257\345\276\204\350\212\202\347\202\271\344\271\213\345\222\214.md" "b/Solutions/\345\211\221\346\214\207 Offer II 050. \345\220\221\344\270\213\347\232\204\350\267\257\345\276\204\350\212\202\347\202\271\344\271\213\345\222\214.md" index e096af7c..a2d44da9 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 050. \345\220\221\344\270\213\347\232\204\350\267\257\345\276\204\350\212\202\347\202\271\344\271\213\345\222\214.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 050. \345\220\221\344\270\213\347\232\204\350\267\257\345\276\204\350\212\202\347\202\271\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 050. 向下的路径节点之和 - 力扣](https://leetcode.cn/problems/6eUYwP/) + ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 051. \350\212\202\347\202\271\344\271\213\345\222\214\346\234\200\345\244\247\347\232\204\350\267\257\345\276\204.md" "b/Solutions/\345\211\221\346\214\207 Offer II 051. \350\212\202\347\202\271\344\271\213\345\222\214\346\234\200\345\244\247\347\232\204\350\267\257\345\276\204.md" index d8d288d4..a64410b9 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 051. \350\212\202\347\202\271\344\271\213\345\222\214\346\234\200\345\244\247\347\232\204\350\267\257\345\276\204.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 051. \350\212\202\347\202\271\344\271\213\345\222\214\346\234\200\345\244\247\347\232\204\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、动态规划、二叉树 - 难度:困难 +## 题目链接 + +- [剑指 Offer II 051. 节点之和最大的路径 - 力扣](https://leetcode.cn/problems/jC7MId/) + ## 题目大意 给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/Solutions/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" index 6a5f9463..394ed157 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:栈、树、深度优先搜索、二叉搜索树、二叉树 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 052. 展平二叉搜索树 - 力扣](https://leetcode.cn/problems/NYBBNL/) + ## 题目大意 给定一棵二叉搜索树的根节点 `root`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 053. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" "b/Solutions/\345\211\221\346\214\207 Offer II 053. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" index 782ebff3..27ee7ac4 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 053. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 053. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 053. 二叉搜索树中的中序后继 - 力扣](https://leetcode.cn/problems/P5rCT8/) + ## 题目大意 给定一棵二叉搜索树的根节点 `root` 和其中一个节点 `p`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 054. \346\211\200\346\234\211\345\244\247\344\272\216\347\255\211\344\272\216\350\212\202\347\202\271\347\232\204\345\200\274\344\271\213\345\222\214.md" "b/Solutions/\345\211\221\346\214\207 Offer II 054. \346\211\200\346\234\211\345\244\247\344\272\216\347\255\211\344\272\216\350\212\202\347\202\271\347\232\204\345\200\274\344\271\213\345\222\214.md" index 2883ec05..2ec38886 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 054. \346\211\200\346\234\211\345\244\247\344\272\216\347\255\211\344\272\216\350\212\202\347\202\271\347\232\204\345\200\274\344\271\213\345\222\214.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 054. \346\211\200\346\234\211\345\244\247\344\272\216\347\255\211\344\272\216\350\212\202\347\202\271\347\232\204\345\200\274\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 054. 所有大于等于节点的值之和 - 力扣](https://leetcode.cn/problems/w6cpku/) + ## 题目大意 给定一棵二叉搜索树(BST)的根节点 `root`,且二叉搜索树的节点值各不相同。要求将其转化为「累加树」,使其每个节点 `node` 的新值等于原树中大于或等于 `node.val` 的值之和。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 055. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" "b/Solutions/\345\211\221\346\214\207 Offer II 055. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" index 0b856bb0..576aa937 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 055. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 055. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" @@ -3,6 +3,10 @@ - 标签:栈、树、设计、二叉搜索树、二叉树、迭代器 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 055. 二叉搜索树迭代器 - 力扣](https://leetcode.cn/problems/kTOapQ/) + ## 题目大意 要求:实现一个二叉搜索树的迭代器 `BSTIterator`。表示一个按中序遍历二叉搜索树(BST)的迭代器: diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 056. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\344\271\213\345\222\214.md" "b/Solutions/\345\211\221\346\214\207 Offer II 056. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\344\271\213\345\222\214.md" index 7c479a45..25511024 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 056. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\344\271\213\345\222\214.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 056. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、广度优先搜索、二叉搜索树、哈希表、双指针、二叉树 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 056. 二叉搜索树中两个节点之和 - 力扣](https://leetcode.cn/problems/opLdQZ/) + ## 题目大意 给定一个二叉搜索树的根节点 `root` 和一个整数 `k`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 057. \345\200\274\345\222\214\344\270\213\346\240\207\344\271\213\345\267\256\351\203\275\345\234\250\347\273\231\345\256\232\347\232\204\350\214\203\345\233\264\345\206\205.md" "b/Solutions/\345\211\221\346\214\207 Offer II 057. \345\200\274\345\222\214\344\270\213\346\240\207\344\271\213\345\267\256\351\203\275\345\234\250\347\273\231\345\256\232\347\232\204\350\214\203\345\233\264\345\206\205.md" index fe3dc161..3d63e036 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 057. \345\200\274\345\222\214\344\270\213\346\240\207\344\271\213\345\267\256\351\203\275\345\234\250\347\273\231\345\256\232\347\232\204\350\214\203\345\233\264\345\206\205.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 057. \345\200\274\345\222\214\344\270\213\346\240\207\344\271\213\345\267\256\351\203\275\345\234\250\347\273\231\345\256\232\347\232\204\350\214\203\345\233\264\345\206\205.md" @@ -3,6 +3,10 @@ - 标签:数组、桶排序、有序集合、排序、滑动窗口 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 057. 值和下标之差都在给定的范围内 - 力扣](https://leetcode.cn/problems/7WqeDu/) + ## 题目大意 给定一个整数数组 `nums`,以及两个整数 `k`、`t`。判断数组中是否存在两个不同下标的 `i` 和 `j`,其对应元素满足 `abs(nums[i] - nums[j]) <= t`,同时满足 `abs(i - j) <= k`。如果满足条件则返回 `True`,不满足条件返回 `False`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 059. \346\225\260\346\215\256\346\265\201\347\232\204\347\254\254 K \345\244\247\346\225\260\345\200\274.md" "b/Solutions/\345\211\221\346\214\207 Offer II 059. \346\225\260\346\215\256\346\265\201\347\232\204\347\254\254 K \345\244\247\346\225\260\345\200\274.md" index c731407e..1a3df66d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 059. \346\225\260\346\215\256\346\265\201\347\232\204\347\254\254 K \345\244\247\346\225\260\345\200\274.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 059. \346\225\260\346\215\256\346\265\201\347\232\204\347\254\254 K \345\244\247\346\225\260\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) - 难度:简单 +## 题目链接 + +- [剑指 Offer II 059. 数据流的第 K 大数值 - 力扣](https://leetcode.cn/problems/jBjn9C/) + ## 题目大意 设计一个 ` KthLargest` 类,用于找到数据流中第 `k` 大元素。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227.md" "b/Solutions/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227.md" index 0385ad06..912ee21b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) - 难度:中等 +## 题目链接 + +- [剑指 Offer II 060. 出现频率最高的 k 个数字 - 力扣](https://leetcode.cn/problems/g5c51o/) + ## 题目大意 给定一个整数数组 `nums` 和一个整数 `k`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 062. \345\256\236\347\216\260\345\211\215\347\274\200\346\240\221.md" "b/Solutions/\345\211\221\346\214\207 Offer II 062. \345\256\236\347\216\260\345\211\215\347\274\200\346\240\221.md" index 0c6eb457..15699a5f 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 062. \345\256\236\347\216\260\345\211\215\347\274\200\346\240\221.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 062. \345\256\236\347\216\260\345\211\215\347\274\200\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:设计、字典树、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 062. 实现前缀树 - 力扣](https://leetcode.cn/problems/QC3q1f/) + ## 题目大意 要求:实现前缀树数据结构的相关类 `Trie` 类。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 063. \346\233\277\346\215\242\345\215\225\350\257\215.md" "b/Solutions/\345\211\221\346\214\207 Offer II 063. \346\233\277\346\215\242\345\215\225\350\257\215.md" index 5657f6cb..584526b9 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 063. \346\233\277\346\215\242\345\215\225\350\257\215.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 063. \346\233\277\346\215\242\345\215\225\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 063. 替换单词 - 力扣](https://leetcode.cn/problems/UhWRSj/) + ## 题目大意 给定一个由许多词根组成的字典列表 `dictionary`,以及一个句子字符串 `sentence`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 064. \347\245\236\345\245\207\347\232\204\345\255\227\345\205\270.md" "b/Solutions/\345\211\221\346\214\207 Offer II 064. \347\245\236\345\245\207\347\232\204\345\255\227\345\205\270.md" index 05695991..ddce22eb 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 064. \347\245\236\345\245\207\347\232\204\345\255\227\345\205\270.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 064. \347\245\236\345\245\207\347\232\204\345\255\227\345\205\270.md" @@ -3,6 +3,10 @@ - 标签:设计、字典树、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 064. 神奇的字典 - 力扣](https://leetcode.cn/problems/US1pGT/) + ## 题目大意 要求:设计一个使用单词表进行初始化的数据结构。单词表中的单词互不相同。如果给出一个单词,要求判定能否将该单词中的一个字母替换成另一个字母,是的所形成的新单词已经在够构建的单词表中。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 065. \346\234\200\347\237\255\347\232\204\345\215\225\350\257\215\347\274\226\347\240\201.md" "b/Solutions/\345\211\221\346\214\207 Offer II 065. \346\234\200\347\237\255\347\232\204\345\215\225\350\257\215\347\274\226\347\240\201.md" index 614ba522..2cee65bf 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 065. \346\234\200\347\237\255\347\232\204\345\215\225\350\257\215\347\274\226\347\240\201.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 065. \346\234\200\347\237\255\347\232\204\345\215\225\350\257\215\347\274\226\347\240\201.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 065. 最短的单词编码 - 力扣](https://leetcode.cn/problems/iSwD2y/) + ## 题目大意 给定一个单词数组 `words`。要求对 `words` 进行编码成一个助记字符串,用来帮助记忆。`words` 中拥有相同字符后缀的单词可以合并成一个单词,比如`time` 和 `me` 可以合并成 `time`。同时每个不能再合并的单词末尾以 `#` 为结束符,将所有合并后的单词排列起来就是一个助记字符串。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 066. \345\215\225\350\257\215\344\271\213\345\222\214.md" "b/Solutions/\345\211\221\346\214\207 Offer II 066. \345\215\225\350\257\215\344\271\213\345\222\214.md" index 9692e7f2..7006ac8c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 066. \345\215\225\350\257\215\344\271\213\345\222\214.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 066. \345\215\225\350\257\215\344\271\213\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:设计、字典树、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 066. 单词之和 - 力扣](https://leetcode.cn/problems/z1R5dt/) + ## 题目大意 要求:实现一个 MapSum 类,支持两个方法,`insert` 和 `sum`: diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 067. \346\234\200\345\244\247\347\232\204\345\274\202\346\210\226.md" "b/Solutions/\345\211\221\346\214\207 Offer II 067. \346\234\200\345\244\247\347\232\204\345\274\202\346\210\226.md" index 0f40000f..1d79787b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 067. \346\234\200\345\244\247\347\232\204\345\274\202\346\210\226.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 067. \346\234\200\345\244\247\347\232\204\345\274\202\346\210\226.md" @@ -3,6 +3,10 @@ - 标签:位运算、字典树、数组、哈希表 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 067. 最大的异或 - 力扣](https://leetcode.cn/problems/ms70jA/) + ## 题目大意 给定一个整数数组 `nums`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 068. \346\237\245\346\211\276\346\217\222\345\205\245\344\275\215\347\275\256.md" "b/Solutions/\345\211\221\346\214\207 Offer II 068. \346\237\245\346\211\276\346\217\222\345\205\245\344\275\215\347\275\256.md" index d35d5241..1b0eb31d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 068. \346\237\245\346\211\276\346\217\222\345\205\245\344\275\215\347\275\256.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 068. \346\237\245\346\211\276\346\217\222\345\205\245\344\275\215\347\275\256.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 068. 查找插入位置 - 力扣](https://leetcode.cn/problems/N6YdxV/) + ## 题目大意 给定一个排好序的数组 `nums`,以及一个目标值 `target`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 072. \346\261\202\345\271\263\346\226\271\346\240\271.md" "b/Solutions/\345\211\221\346\214\207 Offer II 072. \346\261\202\345\271\263\346\226\271\346\240\271.md" index 7bf46d4e..bd51cebe 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 072. \346\261\202\345\271\263\346\226\271\346\240\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 072. \346\261\202\345\271\263\346\226\271\346\240\271.md" @@ -3,6 +3,10 @@ - 标签:数学、二分查找 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 072. 求平方根 - 力扣](https://leetcode.cn/problems/jJ0w9p/) + ## 题目大意 要求:实现 `int sqrt(int x)` 函数。计算并返回 `x` 的平方根(只保留整数部分),其中 `x` 是非负整数。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 073. \347\213\222\347\213\222\345\220\203\351\246\231\350\225\211.md" "b/Solutions/\345\211\221\346\214\207 Offer II 073. \347\213\222\347\213\222\345\220\203\351\246\231\350\225\211.md" index e3dc5c44..ae87abb7 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 073. \347\213\222\347\213\222\345\220\203\351\246\231\350\225\211.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 073. \347\213\222\347\213\222\345\220\203\351\246\231\350\225\211.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 073. 狒狒吃香蕉 - 力扣](https://leetcode.cn/problems/nZZqjQ/) + ## 题目大意 给定一个数组 `piles` 代表 `n` 堆香蕉。其中 `piles[i]` 表示第 `i` 堆香蕉的个数。再给定一个整数 `h` ,表示最多可以在 `h` 小时内吃完所有香蕉。狒狒决定以速度每小时 `k`(未知)根的速度吃香蕉。每一个小时,她将选择其中一堆香蕉,从中吃掉 `k` 根。如果这堆香蕉少于 `k` 根,狒狒将在这一小时吃掉这堆的所有香蕉,并且这一小时不会再吃其他堆的香蕉。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264.md" "b/Solutions/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264.md" index a3b62427..25bba808 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264.md" @@ -3,6 +3,10 @@ - 标签:数组、排序 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 074. 合并区间 - 力扣](https://leetcode.cn/problems/SsGoHC/) + ## 题目大意 给定一个数组 `intervals` 表示若干个区间的集合,`intervals[i] = [starti, endi]` 表示单个区间。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 075. \346\225\260\347\273\204\347\233\270\345\257\271\346\216\222\345\272\217.md" "b/Solutions/\345\211\221\346\214\207 Offer II 075. \346\225\260\347\273\204\347\233\270\345\257\271\346\216\222\345\272\217.md" index 9c49cbc5..c7ea2943 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 075. \346\225\260\347\273\204\347\233\270\345\257\271\346\216\222\345\272\217.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 075. \346\225\260\347\273\204\347\233\270\345\257\271\346\216\222\345\272\217.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、计数排序、排序 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 075. 数组相对排序 - 力扣](https://leetcode.cn/problems/0H97ZC/) + ## 题目大意 给定两个数组,`arr1` 和 `arr2`,其中 `arr2` 中的元素各不相同,`arr2` 中的每个元素都出现在 `arr1` 中。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 076. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254 k \345\244\247\347\232\204\346\225\260\345\255\227.md" "b/Solutions/\345\211\221\346\214\207 Offer II 076. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254 k \345\244\247\347\232\204\346\225\260\345\255\227.md" index a3a569a0..ea5a929c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 076. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254 k \345\244\247\347\232\204\346\225\260\345\255\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 076. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254 k \345\244\247\347\232\204\346\225\260\345\255\227.md" @@ -3,6 +3,10 @@ - 标签:数组、分治、快速选择、排序、堆(优先队列) - 难度:中等 +## 题目链接 + +- [剑指 Offer II 076. 数组中的第 k 大的数字 - 力扣](https://leetcode.cn/problems/xx4gT2/) + ## 题目大意 给定一个未排序的数组 `nums`,从中找到第 `k` 个最大的数字。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 077. \351\223\276\350\241\250\346\216\222\345\272\217.md" "b/Solutions/\345\211\221\346\214\207 Offer II 077. \351\223\276\350\241\250\346\216\222\345\272\217.md" index f8828fe0..d6cfd53f 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 077. \351\223\276\350\241\250\346\216\222\345\272\217.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 077. \351\223\276\350\241\250\346\216\222\345\272\217.md" @@ -3,6 +3,10 @@ - 标签:链表、双指针、分治、排序、归并排序 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 077. 链表排序 - 力扣](https://leetcode.cn/problems/7WHec2/) + ## 题目大意 给定链表的头节点 `head`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 078. \345\220\210\345\271\266\346\216\222\345\272\217\351\223\276\350\241\250.md" "b/Solutions/\345\211\221\346\214\207 Offer II 078. \345\220\210\345\271\266\346\216\222\345\272\217\351\223\276\350\241\250.md" index d03143f7..0ffd9591 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 078. \345\220\210\345\271\266\346\216\222\345\272\217\351\223\276\350\241\250.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 078. \345\220\210\345\271\266\346\216\222\345\272\217\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:链表、分治、堆(优先队列)、归并排序 - 难度:困难 +## 题目链接 + +- [剑指 Offer II 078. 合并排序链表 - 力扣](https://leetcode.cn/problems/vvXgSW/) + ## 题目大意 给定一个链表数组 `lists`,每个链表都已经按照升序排列。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206.md" "b/Solutions/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206.md" index e6cecce6..f7b718bd 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、回溯 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 079. 所有子集 - 力扣](https://leetcode.cn/problems/TVdhkn/) + ## 题目大意 给定一个整数数组 `nums`,数组中的元素互不相同。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" "b/Solutions/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" index 24a231c8..722bdbfc 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 080. 含有 k 个元素的组合 - 力扣](https://leetcode.cn/problems/uUsW3B/) + ## 题目大意 给定两个整数 `n` 和 `k`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 081. \345\205\201\350\256\270\351\207\215\345\244\215\351\200\211\346\213\251\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" "b/Solutions/\345\211\221\346\214\207 Offer II 081. \345\205\201\350\256\270\351\207\215\345\244\215\351\200\211\346\213\251\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" index 3d063b8d..fe9edbb7 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 081. \345\205\201\350\256\270\351\207\215\345\244\215\351\200\211\346\213\251\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 081. \345\205\201\350\256\270\351\207\215\345\244\215\351\200\211\346\213\251\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 081. 允许重复选择元素的组合 - 力扣](https://leetcode.cn/problems/Ygoe9J/) + ## 题目大意 给定一个无重复元素的正整数数组 `candidates` 和一个正整数 `target`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210.md" "b/Solutions/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210.md" index 1b6661de..cd7d752a 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 082. 含有重复元素集合的组合 - 力扣](https://leetcode.cn/problems/4sjJUc/) + ## 题目大意 给定一个数组 `candidates` 和一个目标数 `target`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 083. \346\262\241\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer II 083. \346\262\241\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" index a327b471..5935064e 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 083. \346\262\241\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 083. \346\262\241\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 083. 没有重复元素集合的全排列 - 力扣](https://leetcode.cn/problems/VvJkup/) + ## 题目大意 给定一个不含重复数字的数组 `nums` 。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 084. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer II 084. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" index 502c02e5..dc7ade0f 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 084. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 084. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 084. 含有重复元素集合的全排列 - 力扣](https://leetcode.cn/problems/7p8L0Z/) + ## 题目大意 给定一个可包含重复数字的序列 `nums` 。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267.md" "b/Solutions/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267.md" index 3166cdad..d5efe559 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划、回溯 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 085. 生成匹配的括号 - 力扣](https://leetcode.cn/problems/IDBivT/) + ## 题目大意 给定一个整数 `n`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 086. \345\210\206\345\211\262\345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262.md" "b/Solutions/\345\211\221\346\214\207 Offer II 086. \345\210\206\345\211\262\345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262.md" index 7baed53d..170b41f2 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 086. \345\210\206\345\211\262\345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 086. \345\210\206\345\211\262\345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、图、哈希表 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 086. 分割回文子字符串 - 力扣](https://leetcode.cn/problems/M99OJA/) + ## 题目大意 给定一个字符串 `s`将 `s` 分割成一些子串,保证每个子串都是「回文串」。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 087. \345\244\215\345\216\237 IP.md" "b/Solutions/\345\211\221\346\214\207 Offer II 087. \345\244\215\345\216\237 IP.md" index 65ec9111..8bb162d2 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 087. \345\244\215\345\216\237 IP.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 087. \345\244\215\345\216\237 IP.md" @@ -3,6 +3,10 @@ - 标签:字符串、回溯 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 087. 复原 IP - 力扣](https://leetcode.cn/problems/0on3uN/) + ## 题目大意 给定一个只包含数字的字符串,用来表示一个 IP 地址。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 088. \347\210\254\346\245\274\346\242\257\347\232\204\346\234\200\345\260\221\346\210\220\346\234\254.md" "b/Solutions/\345\211\221\346\214\207 Offer II 088. \347\210\254\346\245\274\346\242\257\347\232\204\346\234\200\345\260\221\346\210\220\346\234\254.md" index 47158b9b..eb2de0dd 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 088. \347\210\254\346\245\274\346\242\257\347\232\204\346\234\200\345\260\221\346\210\220\346\234\254.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 088. \347\210\254\346\245\274\346\242\257\347\232\204\346\234\200\345\260\221\346\210\220\346\234\254.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 088. 爬楼梯的最少成本 - 力扣](https://leetcode.cn/problems/GzCJIP/) + ## 题目大意 给定一个数组 `cost` 代表一段楼梯,`cost[i]` 代表爬上第 `i` 阶楼梯醒酒药花费的体力值(下标从 `0` 开始)。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 089. \346\210\277\345\261\213\345\201\267\347\233\227.md" "b/Solutions/\345\211\221\346\214\207 Offer II 089. \346\210\277\345\261\213\345\201\267\347\233\227.md" index f462ab3e..3fd0fdd2 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 089. \346\210\277\345\261\213\345\201\267\347\233\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 089. \346\210\277\345\261\213\345\201\267\347\233\227.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 089. 房屋偷盗 - 力扣](https://leetcode.cn/problems/Gu0c2T/) + ## 题目大意 给定一个数组 `nums`,`num[i]` 代表第 `i` 间房屋存放的金额。相邻的房屋装有防盗系统,假如相邻的两间房屋同时被偷,系统就会报警。假如你是一名专业的小偷。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 090. \347\216\257\345\275\242\346\210\277\345\261\213\345\201\267\347\233\227.md" "b/Solutions/\345\211\221\346\214\207 Offer II 090. \347\216\257\345\275\242\346\210\277\345\261\213\345\201\267\347\233\227.md" index 90b33ec2..33c7667f 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 090. \347\216\257\345\275\242\346\210\277\345\261\213\345\201\267\347\233\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 090. \347\216\257\345\275\242\346\210\277\345\261\213\345\201\267\347\233\227.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 090. 环形房屋偷盗 - 力扣](https://leetcode.cn/problems/PzWKhm/) + ## 题目大意 给定一个数组 `nums`,`num[i]` 代表第 `i` 间房屋存放的金额,假设房屋可以围成一圈,首尾相连。相邻的房屋装有防盗系统,假如相邻的两间房屋同时被偷,系统就会报警。假如你是一名专业的小偷。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 093. \346\234\200\351\225\277\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer II 093. \346\234\200\351\225\277\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" index 58967187..c4b8df27 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 093. \346\234\200\351\225\277\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 093. \346\234\200\351\225\277\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、动态规划 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 093. 最长斐波那契数列 - 力扣](https://leetcode.cn/problems/Q91FMA/) + ## 题目大意 给定一个严格递增的正整数数组 `arr`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 095. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer II 095. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" index 32c6c7e8..bee95db4 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 095. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 095. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 095. 最长公共子序列 - 力扣](https://leetcode.cn/problems/qJnOS7/) + ## 题目大意 给定两个字符串 `text1` 和 `text2`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" "b/Solutions/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" index f3068bfd..002657b8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划 - 难度:困难 +## 题目链接 + +- [剑指 Offer II 097. 子序列的数目 - 力扣](https://leetcode.cn/problems/21dk04/) + ## 题目大意 给定两个字符串 `s` 和 `t`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 098. \350\267\257\345\276\204\347\232\204\346\225\260\347\233\256.md" "b/Solutions/\345\211\221\346\214\207 Offer II 098. \350\267\257\345\276\204\347\232\204\346\225\260\347\233\256.md" index 2ad108f5..d86c4f90 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 098. \350\267\257\345\276\204\347\232\204\346\225\260\347\233\256.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 098. \350\267\257\345\276\204\347\232\204\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:数学、动态规划、组合数学 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 098. 路径的数目 - 力扣](https://leetcode.cn/problems/2AoeFn/) + ## 题目大意 给定一个 `m * n` 的棋盘, 机器人在左上角的位置,机器人每次只能向右、或者向下移动一步。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 101. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" "b/Solutions/\345\211\221\346\214\207 Offer II 101. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" index 4e9c50e2..5f28b479 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 101. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 101. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" @@ -3,6 +3,10 @@ - 标签:数学、字符串、模拟 - 难度:简单 +## 题目链接 + +- [剑指 Offer II 101. 分割等和子集 - 力扣](https://leetcode.cn/problems/NUPfPr/) + ## 题目大意 给定一个只包含正整数的非空数组 `nums`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274.md" "b/Solutions/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274.md" index 8ad9c352..8f243470 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划、回溯 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 102. 加减的目标值 - 力扣](https://leetcode.cn/problems/YaVDxD/) + ## 题目大意 给定一个整数数组 `nums` 和一个整数 `target`。数组长度不超过 `20`。向数组中每个整数前加 `+` 或 `-`。然后串联起来构造成一个表达式。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256.md" "b/Solutions/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256.md" index 0546b3ea..ffc1db51 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:广度优先搜索、数组、动态规划 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 103. 最少的硬币数目 - 力扣](https://leetcode.cn/problems/gaM7Ch/) + ## 题目大意 给定不同面额的硬币 `coins` 和一个总金额 `amount`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256.md" "b/Solutions/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256.md" index e0ad3d4e..eef9162a 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256.md" @@ -3,6 +3,10 @@ - 标签:数组、动态规划 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 104. 排列的数目 - 力扣](https://leetcode.cn/problems/D0F0SV/) + ## 题目大意 给定一个由不同整数组成的数组 `nums` 和一个目标整数 `target`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" "b/Solutions/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" index f147f252..03765059 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、数组、矩阵 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 105. 岛屿的最大面积 - 力扣](https://leetcode.cn/problems/ZL6zAn/) + ## 题目大意 给定一个只包含 `0`、`1` 元素的二维数组,`1` 代表岛屿,`0` 代表水。一座岛的面积就是上下左右相邻相邻的 `1` 所组成的连通块的数目。找到最大的岛屿面积。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 106. \344\272\214\345\210\206\345\233\276.md" "b/Solutions/\345\211\221\346\214\207 Offer II 106. \344\272\214\345\210\206\345\233\276.md" index 115b7f9d..3b55f18d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 106. \344\272\214\345\210\206\345\233\276.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 106. \344\272\214\345\210\206\345\233\276.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 106. 二分图 - 力扣](https://leetcode.cn/problems/vEAB3K/) + ## 题目大意 给定一个代表 n 个节点的无向图的二维数组 `graph`,其中 `graph[u]` 是一个节点数组,由节点 `u` 的邻接节点组成。对于 `graph[u]` 中的每个 `v`,都存在一条位于节点 `u` 和节点 `v` 之间的无向边。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 107. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\235\347\246\273.md" "b/Solutions/\345\211\221\346\214\207 Offer II 107. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\235\347\246\273.md" index 0fece48b..235b3ff4 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 107. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\235\347\246\273.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 107. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\235\347\246\273.md" @@ -3,6 +3,10 @@ - 标签:广度优先搜索、数组、动态规划、矩阵 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 107. 矩阵中的距离 - 力扣](https://leetcode.cn/problems/2bCMpM/) + ## 题目大意 给定一个由 `0` 和 `1` 组成的矩阵,两个相邻元素间的距离为 `1` 。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 108. \345\215\225\350\257\215\346\274\224\345\217\230.md" "b/Solutions/\345\211\221\346\214\207 Offer II 108. \345\215\225\350\257\215\346\274\224\345\217\230.md" index f42ef7c0..57dc3638 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 108. \345\215\225\350\257\215\346\274\224\345\217\230.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 108. \345\215\225\350\257\215\346\274\224\345\217\230.md" @@ -3,6 +3,10 @@ - 标签:广度优先搜索、哈希表、字符串 - 难度:困难 +## 题目链接 + +- [剑指 Offer II 108. 单词演变 - 力扣](https://leetcode.cn/problems/om3reC/) + ## 题目大意 给定两个单词 `beginWord` 和 `endWord`,以及一个字典 `wordList`。找到从 `beginWord` 到 `endWord` 的最短转换序列中的单词数目。如果不存在这样的转换序列,则返回 0。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 109. \345\274\200\345\257\206\347\240\201\351\224\201.md" "b/Solutions/\345\211\221\346\214\207 Offer II 109. \345\274\200\345\257\206\347\240\201\351\224\201.md" index 2f9d7233..75524f10 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 109. \345\274\200\345\257\206\347\240\201\351\224\201.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 109. \345\274\200\345\257\206\347\240\201\351\224\201.md" @@ -3,6 +3,10 @@ - 标签:广度优先搜索、数组、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 109. 开密码锁 - 力扣](https://leetcode.cn/problems/zlDJc7/) + ## 题目大意 有一把带有四个数字的密码锁,每个位置上有 0~9 共 10 个数字。每次只能将其中一个位置上的数字转动一下。可以向上转,也可以向下转。比如:1 -> 2、2 -> 1。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 111. \350\256\241\347\256\227\351\231\244\346\263\225.md" "b/Solutions/\345\211\221\346\214\207 Offer II 111. \350\256\241\347\256\227\351\231\244\346\263\225.md" index 31cb5e2a..06c3db6d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 111. \350\256\241\347\256\227\351\231\244\346\263\225.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 111. \350\256\241\347\256\227\351\231\244\346\263\225.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图、数组、最短路 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 111. 计算除法 - 力扣](https://leetcode.cn/problems/vlzXQL/) + ## 题目大意 给定一个变量对数组 `equations` 和一个实数数组 `values` 作为已知条件,其中 `equations[i] = [Ai, Bi]` 和 `values[i]` 共同表示 `Ai / Bi = values[i]`。每个 `Ai` 或 `Bi` 是一个表示单个变量的字符串。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 112. \346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" "b/Solutions/\345\211\221\346\214\207 Offer II 112. \346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" index 08bd1435..35d4a239 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 112. \346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 112. \346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 - 难度:困难 +## 题目链接 + +- [剑指 Offer II 112. 最长递增路径 - 力扣](https://leetcode.cn/problems/fpTFWP/) + ## 题目大意 给定一个 `m * n` 大小的整数矩阵 `matrix`。要求:找出其中最长递增路径的长度。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 113. \350\257\276\347\250\213\351\241\272\345\272\217.md" "b/Solutions/\345\211\221\346\214\207 Offer II 113. \350\257\276\347\250\213\351\241\272\345\272\217.md" index be9e83b2..2f4b7268 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 113. \350\257\276\347\250\213\351\241\272\345\272\217.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 113. \350\257\276\347\250\213\351\241\272\345\272\217.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、图、拓扑排序 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 113. 课程顺序 - 力扣](https://leetcode.cn/problems/QA2IGt/) + ## 题目大意 给定一个整数 `numCourses`,代表这学期必须选修的课程数量,课程编号为 `0` 到 `numCourses - 1`。再给定一个数组 `prerequisites` 表示先修课程关系,其中 `prerequisites[i] = [ai, bi]` 表示如果要学习课程 `ai` 则必须要学习课程 `bi`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 116. \347\234\201\344\273\275\346\225\260\351\207\217.md" "b/Solutions/\345\211\221\346\214\207 Offer II 116. \347\234\201\344\273\275\346\225\260\351\207\217.md" index 9e0dc625..1ab9cace 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 116. \347\234\201\344\273\275\346\225\260\351\207\217.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 116. \347\234\201\344\273\275\346\225\260\351\207\217.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 116. 省份数量 - 力扣](https://leetcode.cn/problems/bLyHh0/) + ## 题目大意 一个班上有 `n` 个同学,其中一些彼此是朋友,另一些不是。如果 `a` 与 `b` 是直接朋友,且 `b` 与 `c` 也是直接朋友,那么 `a` 与 `c` 是间接朋友。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271.md" "b/Solutions/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271.md" index f34af08c..bab8778f 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 118. 多余的边 - 力扣](https://leetcode.cn/problems/7LpjUW/) + ## 题目大意 一个 `n` 个节点的树(节点值为 `1~n`)添加一条边后就形成了图,添加的这条边不属于树中已经存在的边。图的信息记录存储与长度为 `n` 的二维数组 `edges`,`edges[i] = [ai, bi]` 表示图中在 `ai` 和 `bi` 之间存在一条边。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" "b/Solutions/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" index e5a87c1a..c3f073c2 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" @@ -3,6 +3,10 @@ - 标签:并查集、数组、哈希表 - 难度:中等 +## 题目链接 + +- [剑指 Offer II 119. 最长连续序列 - 力扣](https://leetcode.cn/problems/WhsWhI/) + ## 题目大意 给定一个未排序的整数数组 `nums`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 01.07. \346\227\213\350\275\254\347\237\251\351\230\265.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 01.07. \346\227\213\350\275\254\347\237\251\351\230\265.md" index e812c7a9..275cbe8f 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 01.07. \346\227\213\350\275\254\347\237\251\351\230\265.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 01.07. \346\227\213\350\275\254\347\237\251\351\230\265.md" @@ -3,6 +3,10 @@ - 标签:数组、数学、矩阵 - 难度:中等 +## 题目链接 + +- [面试题 01.07. 旋转矩阵 - 力扣](https://leetcode.cn/problems/rotate-matrix-lcci/) + ## 题目大意 给定一个 `n * n` 大小的二维矩阵用来表示图像,其中每个像素的大小为 4 字节。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 01.08. \351\233\266\347\237\251\351\230\265.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 01.08. \351\233\266\347\237\251\351\230\265.md" index 18088f93..6f9f855b 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 01.08. \351\233\266\347\237\251\351\230\265.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 01.08. \351\233\266\347\237\251\351\230\265.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、矩阵 - 难度:中等 +## 题目链接 + +- [面试题 01.08. 零矩阵 - 力扣](https://leetcode.cn/problems/zero-matrix-lcci/) + ## 题目大意 给定一个 `m * n` 大小的二维矩阵 `matrix`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 02.02. \350\277\224\345\233\236\345\200\222\346\225\260\347\254\254 k \344\270\252\350\212\202\347\202\271.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 02.02. \350\277\224\345\233\236\345\200\222\346\225\260\347\254\254 k \344\270\252\350\212\202\347\202\271.md" index 2ea95755..adec3b65 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 02.02. \350\277\224\345\233\236\345\200\222\346\225\260\347\254\254 k \344\270\252\350\212\202\347\202\271.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 02.02. \350\277\224\345\233\236\345\200\222\346\225\260\347\254\254 k \344\270\252\350\212\202\347\202\271.md" @@ -3,6 +3,10 @@ - 标签:链表、双指针 - 难度:简单 +## 题目链接 + +- [面试题 02.02. 返回倒数第 k 个节点 - 力扣](https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/) + ## 题目大意 给定一个链表的头节点 `head`,以及一个整数 `k`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 02.05. \351\223\276\350\241\250\346\261\202\345\222\214.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 02.05. \351\223\276\350\241\250\346\261\202\345\222\214.md" index 9708ba11..7962b73d 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 02.05. \351\223\276\350\241\250\346\261\202\345\222\214.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 02.05. \351\223\276\350\241\250\346\261\202\345\222\214.md" @@ -3,6 +3,10 @@ - 标签:递归、链表、数学 - 难度:中等 +## 题目链接 + +- [面试题 02.05. 链表求和 - 力扣](https://leetcode.cn/problems/sum-lists-lcci/) + ## 题目大意 给定两个非空的链表 `l1` 和 `l2`,表示两个非负整数,每位数字都是按照逆序的方式存储的,每个节点存储一位数字。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 02.06. \345\233\236\346\226\207\351\223\276\350\241\250.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 02.06. \345\233\236\346\226\207\351\223\276\350\241\250.md" index bc2f1d0b..9907bb09 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 02.06. \345\233\236\346\226\207\351\223\276\350\241\250.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 02.06. \345\233\236\346\226\207\351\223\276\350\241\250.md" @@ -3,6 +3,10 @@ - 标签:栈、递归、链表、双指针 - 难度:简单 +## 题目链接 + +- [面试题 02.06. 回文链表 - 力扣](https://leetcode.cn/problems/palindrome-linked-list-lcci/) + ## 题目大意 给定一个链表的头节点 `head`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 02.07. \351\223\276\350\241\250\347\233\270\344\272\244.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 02.07. \351\223\276\350\241\250\347\233\270\344\272\244.md" index 06137e81..a985f070 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 02.07. \351\223\276\350\241\250\347\233\270\344\272\244.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 02.07. \351\223\276\350\241\250\347\233\270\344\272\244.md" @@ -3,6 +3,10 @@ - 标签:哈希表、链表、双指针 - 难度:简单 +## 题目链接 + +- [面试题 02.07. 链表相交 - 力扣](https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/) + ## 题目大意 给定两个链表的头节点 `headA`、`headB`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 02.08. \347\216\257\350\267\257\346\243\200\346\265\213.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 02.08. \347\216\257\350\267\257\346\243\200\346\265\213.md" index f0e36c02..bc98e81f 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 02.08. \347\216\257\350\267\257\346\243\200\346\265\213.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 02.08. \347\216\257\350\267\257\346\243\200\346\265\213.md" @@ -3,6 +3,10 @@ - 标签:哈希表、链表、双指针 - 难度:中等 +## 题目链接 + +- [面试题 02.08. 环路检测 - 力扣](https://leetcode.cn/problems/linked-list-cycle-lcci/) + ## 题目大意 给定一个链表的头节点 `head`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 03.02. \346\240\210\347\232\204\346\234\200\345\260\217\345\200\274.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 03.02. \346\240\210\347\232\204\346\234\200\345\260\217\345\200\274.md" index 2e539d31..44a538ff 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 03.02. \346\240\210\347\232\204\346\234\200\345\260\217\345\200\274.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 03.02. \346\240\210\347\232\204\346\234\200\345\260\217\345\200\274.md" @@ -3,6 +3,10 @@ - 标签:栈、设计 - 难度:简单 +## 题目链接 + +- [面试题 03.02. 栈的最小值 - 力扣](https://leetcode.cn/problems/min-stack-lcci/) + ## 题目大意 设计一个「栈」,要求实现 `push` ,`pop` ,`top` ,`getMin` 操作,其中 `getMin` 要求能在常数时间内实现。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 03.04. \345\214\226\346\240\210\344\270\272\351\230\237.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 03.04. \345\214\226\346\240\210\344\270\272\351\230\237.md" index 391036ae..64993a2f 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 03.04. \345\214\226\346\240\210\344\270\272\351\230\237.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 03.04. \345\214\226\346\240\210\344\270\272\351\230\237.md" @@ -3,6 +3,10 @@ - 标签:栈、设计、队列 - 难度:简单 +## 题目链接 + +- [面试题 03.04. 化栈为队 - 力扣](https://leetcode.cn/problems/implement-queue-using-stacks-lcci/) + ## 题目大意 要求:实现一个 MyQueue 类,要求仅使用两个栈实现先入先出队列。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 04.02. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 04.02. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" index 3c5f5041..7b22bf8f 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 04.02. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 04.02. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、二叉搜索树、数组、分治、二叉树 - 难度:简单 +## 题目链接 + +- [面试题 04.02. 最小高度树 - 力扣](https://leetcode.cn/problems/minimum-height-tree-lcci/) + ## 题目大意 给定一个升序的有序数组 `nums`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 04.05. \345\220\210\346\263\225\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 04.05. \345\220\210\346\263\225\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" index a04e652c..d78f5baf 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 04.05. \345\220\210\346\263\225\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 04.05. \345\220\210\346\263\225\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [面试题 04.05. 合法二叉搜索树 - 力扣](https://leetcode.cn/problems/legal-binary-search-tree-lcci/) + ## 题目大意 给定一个二叉树的根节点 `root`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 04.06. \345\220\216\347\273\247\350\200\205.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 04.06. \345\220\216\347\273\247\350\200\205.md" index f344b8f8..0576afea 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 04.06. \345\220\216\347\273\247\350\200\205.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 04.06. \345\220\216\347\273\247\350\200\205.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 +## 题目链接 + +- [面试题 04.06. 后继者 - 力扣](https://leetcode.cn/problems/successor-lcci/) + ## 题目大意 给定一棵二叉搜索树的根节点 `root` 和其中一个节点 `p`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 04.08. \351\246\226\344\270\252\345\205\261\345\220\214\347\245\226\345\205\210.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 04.08. \351\246\226\344\270\252\345\205\261\345\220\214\347\245\226\345\205\210.md" index 029ca286..f1fb498b 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 04.08. \351\246\226\344\270\252\345\205\261\345\220\214\347\245\226\345\205\210.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 04.08. \351\246\226\344\270\252\345\205\261\345\220\214\347\245\226\345\205\210.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [面试题 04.08. 首个共同祖先 - 力扣](https://leetcode.cn/problems/first-common-ancestor-lcci/) + ## 题目大意 给定一个二叉树,要求找到该树中指定节点 `p`、`q` 的最近公共祖先: diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 04.12. \346\261\202\345\222\214\350\267\257\345\276\204.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 04.12. \346\261\202\345\222\214\350\267\257\345\276\204.md" index c1d57d5a..0cec25c8 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 04.12. \346\261\202\345\222\214\350\267\257\345\276\204.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 04.12. \346\261\202\345\222\214\350\267\257\345\276\204.md" @@ -3,6 +3,10 @@ - 标签:树、深度优先搜索、二叉树 - 难度:中等 +## 题目链接 + +- [面试题 04.12. 求和路径 - 力扣](https://leetcode.cn/problems/paths-with-sum-lcci/) + ## 题目大意 给定一个二叉树的根节点 `root`,和一个整数 `targetSum`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.04. \345\271\202\351\233\206.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 08.04. \345\271\202\351\233\206.md" index 4ae7a3e4..b6f4d166 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 08.04. \345\271\202\351\233\206.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 08.04. \345\271\202\351\233\206.md" @@ -3,6 +3,10 @@ - 标签:位运算、数组、回溯 - 难度:中等 +## 题目链接 + +- [面试题 08.04. 幂集 - 力扣](https://leetcode.cn/problems/power-set-lcci/) + ## 题目大意 给定一个集合 `nums`,集合中不包含重复元素。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.07. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 08.07. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" index 0ad3836e..f5cd4488 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 08.07. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 08.07. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" @@ -3,6 +3,10 @@ - 标签:字符串、回溯 - 难度:中等 +## 题目链接 + +- [面试题 08.07. 无重复字符串的排列组合 - 力扣](https://leetcode.cn/problems/permutation-i-lcci/) + ## 题目大意 给定一个字符串 `S`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.08. \346\234\211\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 08.08. \346\234\211\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" index 4d289e24..8f9edeb5 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 08.08. \346\234\211\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 08.08. \346\234\211\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" @@ -3,6 +3,10 @@ - 标签:字符串、回溯 - 难度:中等 +## 题目链接 + +- [面试题 08.08. 有重复字符串的排列组合 - 力扣](https://leetcode.cn/problems/permutation-ii-lcci/) + ## 题目大意 给定一个字符串 `s`,字符串中包含有重复字符。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.09. \346\213\254\345\217\267.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 08.09. \346\213\254\345\217\267.md" index 52c7f584..afb671f1 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 08.09. \346\213\254\345\217\267.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 08.09. \346\213\254\345\217\267.md" @@ -3,6 +3,10 @@ - 标签:字符串、动态规划、回溯 - 难度:中等 +## 题目链接 + +- [面试题 08.09. 括号 - 力扣](https://leetcode.cn/problems/bracket-lcci/) + ## 题目大意 给定一个整数 `n`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.10. \351\242\234\350\211\262\345\241\253\345\205\205.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 08.10. \351\242\234\350\211\262\345\241\253\345\205\205.md" index 90b8a60c..0581382e 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 08.10. \351\242\234\350\211\262\345\241\253\345\205\205.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 08.10. \351\242\234\350\211\262\345\241\253\345\205\205.md" @@ -3,6 +3,10 @@ - 标签:深度优先搜索、广度优先搜索、数组、矩阵 - 难度:简单 +## 题目链接 + +- [面试题 08.10. 颜色填充 - 力扣](https://leetcode.cn/problems/color-fill-lcci/) + ## 题目大意 给定一个二维整数矩阵 `image`,其中 `image[i][j]` 表示矩阵第 `i` 行、第 `j` 列上网格块的颜色值。再给定一个起始位置 `(sr, sc)`,以及一个目标颜色 `newColor`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.12. \345\205\253\347\232\207\345\220\216.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 08.12. \345\205\253\347\232\207\345\220\216.md" index f006a44f..d1447849 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 08.12. \345\205\253\347\232\207\345\220\216.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 08.12. \345\205\253\347\232\207\345\220\216.md" @@ -3,6 +3,10 @@ - 标签:数组、回溯 - 难度:困难 +## 题目链接 + +- [面试题 08.12. 八皇后 - 力扣](https://leetcode.cn/problems/eight-queens-lcci/) + ## 题目大意 - n 皇后问题:将 n 个皇后放置在 `n * n` 的棋盘上,并且使得皇后彼此之间不能攻击。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 10.01. \345\220\210\345\271\266\346\216\222\345\272\217\347\232\204\346\225\260\347\273\204.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 10.01. \345\220\210\345\271\266\346\216\222\345\272\217\347\232\204\346\225\260\347\273\204.md" index 32c5c1b9..ea05bd85 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 10.01. \345\220\210\345\271\266\346\216\222\345\272\217\347\232\204\346\225\260\347\273\204.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 10.01. \345\220\210\345\271\266\346\216\222\345\272\217\347\232\204\346\225\260\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、双指针、排序 - 难度:简单 +## 题目链接 + +- [面试题 10.01. 合并排序的数组 - 力扣](https://leetcode.cn/problems/sorted-merge-lcci/) + ## 题目大意 **描述**:给定两个排序后的数组 `A` 和 `B`,以及 `A` 的元素数量 `m` 和 `B` 的元素数量 `n`。 `A` 的末端有足够的缓冲空间容纳 `B`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 10.02. \345\217\230\344\275\215\350\257\215\347\273\204.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 10.02. \345\217\230\344\275\215\350\257\215\347\273\204.md" index 8243e315..ccde9231 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 10.02. \345\217\230\344\275\215\350\257\215\347\273\204.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 10.02. \345\217\230\344\275\215\350\257\215\347\273\204.md" @@ -3,6 +3,10 @@ - 标签:数组、哈希表、字符串、排序 - 难度:中等 +## 题目链接 + +- [面试题 10.02. 变位词组 - 力扣](https://leetcode.cn/problems/group-anagrams-lcci/) + ## 题目大意 给定一个字符串数组 `strs`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 10.09. \346\216\222\345\272\217\347\237\251\351\230\265\346\237\245\346\211\276.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 10.09. \346\216\222\345\272\217\347\237\251\351\230\265\346\237\245\346\211\276.md" index 002edcd5..61c554e6 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 10.09. \346\216\222\345\272\217\347\237\251\351\230\265\346\237\245\346\211\276.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 10.09. \346\216\222\345\272\217\347\237\251\351\230\265\346\237\245\346\211\276.md" @@ -3,6 +3,10 @@ - 标签:数组、二分查找、分治、矩阵 - 难度:中等 +## 题目链接 + +- [面试题 10.09. 排序矩阵查找 - 力扣](https://leetcode.cn/problems/sorted-matrix-search-lcci/) + ## 题目大意 给定一个 `m * n` 大小的有序整数矩阵。每一行、每一列都按升序排列。再给定一个目标值 `target`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 16.02. \345\215\225\350\257\215\351\242\221\347\216\207.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 16.02. \345\215\225\350\257\215\351\242\221\347\216\207.md" index 0d243ae1..6211c194 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 16.02. \345\215\225\350\257\215\351\242\221\347\216\207.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 16.02. \345\215\225\350\257\215\351\242\221\347\216\207.md" @@ -3,6 +3,10 @@ - 标签:设计、字典树、数组、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [面试题 16.02. 单词频率 - 力扣](https://leetcode.cn/problems/words-frequency-lcci/) + ## 题目大意 要求:设计一个方法,找出任意指定单词在一本书中的出现频率。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 16.05. \351\230\266\344\271\230\345\260\276\346\225\260.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 16.05. \351\230\266\344\271\230\345\260\276\346\225\260.md" index c28581ac..6f3f8770 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 16.05. \351\230\266\344\271\230\345\260\276\346\225\260.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 16.05. \351\230\266\344\271\230\345\260\276\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数学 - 难度:简单 +## 题目链接 + +- [面试题 16.05. 阶乘尾数 - 力扣](https://leetcode.cn/problems/factorial-zeros-lcci/) + ## 题目大意 给定一个整数 `n`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 16.26. \350\256\241\347\256\227\345\231\250.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 16.26. \350\256\241\347\256\227\345\231\250.md" index 6f6ca980..ce90dafb 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 16.26. \350\256\241\347\256\227\345\231\250.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 16.26. \350\256\241\347\256\227\345\231\250.md" @@ -3,6 +3,10 @@ - 标签:栈、数学、字符串 - 难度:中等 +## 题目链接 + +- [面试题 16.26. 计算器 - 力扣](https://leetcode.cn/problems/calculator-lcci/) + ## 题目大意 给定一个包含正整数、加(`+`)、减(`-`)、乘(`*`)、除(`/`)的算出表达式(括号除外)。表达式仅包含非负整数,`+`、`-`、`*`、`/` 四种运算符和空格 ` `。整数除法仅保留整数部分。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 17.06. 2\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 17.06. 2\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" index 57d3fb43..3fe09ff1 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 17.06. 2\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 17.06. 2\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:递归、数学、动态规划 - 难度:困难 +## 题目链接 + +- [面试题 17.06. 2出现的次数 - 力扣](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) + ## 题目大意 **描述**:给定一个整数 $n$。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 17.14. \346\234\200\345\260\217K\344\270\252\346\225\260.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 17.14. \346\234\200\345\260\217K\344\270\252\346\225\260.md" index f5c1492c..cc05a832 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 17.14. \346\234\200\345\260\217K\344\270\252\346\225\260.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 17.14. \346\234\200\345\260\217K\344\270\252\346\225\260.md" @@ -3,6 +3,10 @@ - 标签:数组、分治、快速选择、排序、堆(优先队列) - 难度:中等 +## 题目链接 + +- [面试题 17.14. 最小K个数 - 力扣](https://leetcode.cn/problems/smallest-k-lcci/) + ## 题目大意 给定整数数组 `arr`,再给定一个整数 `k`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 17.15. \346\234\200\351\225\277\345\215\225\350\257\215.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 17.15. \346\234\200\351\225\277\345\215\225\350\257\215.md" index bf7e48d8..015aab7e 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 17.15. \346\234\200\351\225\277\345\215\225\350\257\215.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 17.15. \346\234\200\351\225\277\345\215\225\350\257\215.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、哈希表、字符串 - 难度:中等 +## 题目链接 + +- [面试题 17.15. 最长单词 - 力扣](https://leetcode.cn/problems/longest-word-lcci/) + ## 题目大意 给定一组单词 `words`。 diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 17.17. \345\244\232\346\254\241\346\220\234\347\264\242.md" "b/Solutions/\351\235\242\350\257\225\351\242\230 17.17. \345\244\232\346\254\241\346\220\234\347\264\242.md" index 7415bd19..12891e29 100644 --- "a/Solutions/\351\235\242\350\257\225\351\242\230 17.17. \345\244\232\346\254\241\346\220\234\347\264\242.md" +++ "b/Solutions/\351\235\242\350\257\225\351\242\230 17.17. \345\244\232\346\254\241\346\220\234\347\264\242.md" @@ -3,6 +3,10 @@ - 标签:字典树、数组、哈希表、字符串、字符串匹配、滑动窗口 - 难度:中等 +## 题目链接 + +- [面试题 17.17. 多次搜索 - 力扣](https://leetcode.cn/problems/multi-search-lcci/) + ## 题目大意 给定一个较长字符串 `big` 和一个包含较短字符串的数组 `smalls`。 From a684af292a63281d6c30569ba61175c0ec77c498 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 29 Dec 2023 17:55:45 +0800 Subject: [PATCH 043/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...11\346\225\260\344\271\213\345\222\214.md" | 52 ++++++++++--- ...11\346\225\260\344\271\213\345\222\214.md" | 54 ++++++++++--- ...34\347\264\242\346\240\221\345\200\274.md" | 49 ++++++++++-- ...54\345\214\226\346\225\260\347\273\204.md" | 76 +++++++++++++------ ...04\346\234\200\345\244\247\345\200\274.md" | 49 ++++++++++-- ...51\345\255\227\347\254\246\344\270\262.md" | 45 +++++++---- ...42\347\232\204\344\270\252\346\225\260.md" | 56 +++++++++++--- ...21\347\232\204\345\205\203\347\264\240.md" | 54 ++++++++++--- ...11\345\272\217\346\225\260\347\273\204.md" | 44 ++++++++++- ...60\345\257\271\350\267\235\347\246\273.md" | 51 +++++++++++-- ...31\345\205\250\346\216\222\345\210\227.md" | 2 +- ...11\347\232\204\347\217\202\347\217\202.md" | 49 +++++++++--- ...04\347\232\204\345\271\263\346\226\271.md" | 73 +++++++++++++----- ...44\346\225\260\344\271\213\345\222\214.md" | 49 +++++++++--- ...00\345\260\221\345\244\251\346\225\260.md" | 75 +++++++++++++----- ...66\346\225\260\345\211\215\351\235\242.md" | 36 +++++++-- 16 files changed, 642 insertions(+), 172 deletions(-) diff --git "a/Solutions/0016. \346\234\200\346\216\245\350\277\221\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0016. \346\234\200\346\216\245\350\277\221\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" index fa101277..02665284 100644 --- "a/Solutions/0016. \346\234\200\346\216\245\350\277\221\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0016. \346\234\200\346\216\245\350\277\221\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" @@ -9,25 +9,50 @@ ## 题目大意 -给你一个整数数组 `nums` 和 一个目标值 `target`。 +**描述**:给定一个整数数组 $nums$ 和 一个目标值 $target$。 -要求:从 `nums` 中选出三个整数,使它们的和与 `target` 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。 +**要求**:从 $nums$ 中选出三个整数,使它们的和与 $target$ 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。 + +**说明**: + +- $3 \le nums.length \le 1000$。 +- $-1000 \le nums[i] \le 1000$。 +- $-10^4 \le target \le 10^4$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [-1,2,1,-4], target = 1 +输出:2 +解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2)。 +``` + +- 示例 2: + +```python +输入:nums = [0,0,0], target = 1 +输出:0 +``` ## 解题思路 +### 思路 1:对撞指针 + 直接暴力枚举三个数的时间复杂度是 $O(n^3)$。很明显的容易超时。考虑使用双指针减少循环内的时间复杂度。具体做法如下: -- 先对数组进行从小到大排序,使用 `ans` 记录最接近的三数之和。 -- 遍历数组,对于数组元素 `nums[i]`,使用两个指针 `left`、`right`。`left` 指向第 `0` 个元素位置,`right` 指向第 `i - 1` 个元素位置。 -- 计算 `nums[i]`、`nums[left]`、`nums[right]` 的和与 `target` 的差值,将其与 `ans` 与 `target` 的差值作比较。如果差值小,则更新 `ans`。 - - 如果 `nums[i] + nums[left] + nums[right] < target`,则说明 `left` 小了,应该将 `left` 右移,继续查找。 - - 如果 `nums[i] + nums[left] + nums[right] >= target`,则说明 `right` 太大了,应该将 `right` 左移,然后继续判断。 -- 当 `left == right` 时,区间搜索完毕,继续遍历 `nums[i + 1]`。 -- 最后输出 `ans`。 +- 先对数组进行从小到大排序,使用 $ans$ 记录最接近的三数之和。 +- 遍历数组,对于数组元素 $nums[i]$,使用两个指针 $left$、$right$。$left$ 指向第 $0$ 个元素位置,$right$ 指向第 $i - 1$ 个元素位置。 +- 计算 $nums[i]$、$nums[left]$、$nums[right]$ 的和与 $target$ 的差值,将其与 $ans$ 与 $target$ 的差值作比较。如果差值小,则更新 $ans$。 + - 如果 $nums[i] + nums[left] + nums[right] < target$,则说明 $left$ 小了,应该将 $left$ 右移,继续查找。 + - 如果 $nums[i] + nums[left] + nums[right] \ge target$,则说明 $right$ 太大了,应该将 $right$ 左移,然后继续判断。 +- 当 $left == right$ 时,区间搜索完毕,继续遍历 $nums[i + 1]$。 +- 最后输出 $ans$。 -这种思路使用了两重循环,其中内层循环当 `left == right` 时循环结束,时间复杂度为 $O(n)$,外层循环时间复杂度也是 $O(n)$。所以算法的整体时间复杂度为 $O(n^2)$。 +这种思路使用了两重循环,其中内层循环当 $left == right$ 时循环结束,时间复杂度为 $O(n)$,外层循环时间复杂度也是 $O(n)$。所以算法的整体时间复杂度为 $O(n^2)$。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -50,3 +75,8 @@ class Solution: return res ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$,其中 $n$ 为数组中元素的个数。 +- **空间复杂度**:$O(\log n)$,排序需要 $\log n$ 的栈空间。 + diff --git "a/Solutions/0259. \350\276\203\345\260\217\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" "b/Solutions/0259. \350\276\203\345\260\217\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" index 0a7b5cbd..c8640507 100644 --- "a/Solutions/0259. \350\276\203\345\260\217\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/0259. \350\276\203\345\260\217\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" @@ -9,27 +9,54 @@ ## 题目大意 -给定一个长度为 `n` 的整数数组和一个目标值 `target`。 +**描述**:给定一个长度为 $n$ 的整数数组和一个目标值 $target$。 -要求:寻找能够使条件 `nums[i] + nums[j] + nums[k] < target` 成立的三元组 (`i`, `j`, `k`) 的个数(`0 <= i < j < k < n`)。 +**要求**:寻找能够使条件 $nums[i] + nums[j] + nums[k] < target$ 成立的三元组 ($i$, $j$, $k$) 的个数($0 <= i < j < k < n$)。 -注意:最好在 $O(n^2)$ 的时间复杂度内解决问题。 +**说明**: + +- 最好在 $O(n^2)$ 的时间复杂度内解决问题。 +- $n == nums.length$。 +- $0 \le n \le 3500$。 +- $-100 \le nums[i] \le 100$。 +- $-100 \le target \le 100$。 + +**示例**: + +- 示例 1: + +```python +输入: nums = [-2,0,1,3], target = 2 +输出: 2 +解释: 因为一共有两个三元组满足累加和小于 2: + [-2,0,1] + [-2,0,3] +``` + +- 示例 2: + +```python +输入: nums = [], target = 0 +输出: 0 +``` ## 解题思路 +### 思路 1:排序 + 双指针 + 三元组直接枚举的时间复杂度是 $O(n^3)$,明显不符合题目要求。那么可以考虑使用双指针减少循环内的时间复杂度。具体做法如下: - 先对数组进行从小到大排序。 -- 遍历数组,对于数组元素 `nums[i]`,使用两个指针 `left`、`right`。`left` 指向第 `i + 1` 个元素位置,`right` 指向数组的最后一个元素位置。 -- 在区间 `[left, right]` 中查找满足 `nums[i] + nums[left] + nums[right] < target`的方案数。 -- 计算 `nums[i]`、`nums[left]`、`nums[right]` 的和,将其与 `target` 比较。 - - 如果 `nums[i] + nums[left] + nums[right] < target`,则说明 `i`、`left`、`right` 作为三元组满足题目要求,同时说明区间 `[left, right]` 中的元素作为 `right` 都满足条件,此时将 `left` 右移,继续判断。 - - 如果 `nums[i] + nums[left] + nums[right] >= target`,则说明 `right` 太大了,应该缩小 `right`,然后继续判断。 -- 当 `left == right` 时,区间搜索完毕,继续遍历 `nums[i + 1]`。 +- 遍历数组,对于数组元素 $nums[i]$,使用两个指针 $left$、$right$。$left$ 指向第 $i + 1$ 个元素位置,$right$ 指向数组的最后一个元素位置。 +- 在区间 $[left, right]$ 中查找满足 $nums[i] + nums[left] + nums[right] < target$的方案数。 +- 计算 $nums[i]$、$nums[left]$、$nums[right]$ 的和,将其与 $target$ 比较。 + - 如果 $nums[i] + nums[left] + nums[right] < target$,则说明 $i$、$left$、$right$ 作为三元组满足题目要求,同时说明区间 $[left, right]$ 中的元素作为 $right$ 都满足条件,此时将 $left$ 右移,继续判断。 + - 如果 $nums[i] + nums[left] + nums[right] \ge target$,则说明 $right$ 太大了,应该缩小 $right$,然后继续判断。 +- 当 $left == right$ 时,区间搜索完毕,继续遍历 $nums[i + 1]$。 -这种思路使用了两重循环,其中内层循环当 `left == right` 时循环结束,时间复杂度为 $O(n)$,外层循环时间复杂度也是 $O(n)$。所以算法的整体时间复杂度为 $O(n^2)$,符合题目要求。 +这种思路使用了两重循环,其中内层循环当 $left == right$ 时循环结束,时间复杂度为 $O(n)$,外层循环时间复杂度也是 $O(n)$。所以算法的整体时间复杂度为 $O(n^2)$,符合题目要求。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -49,3 +76,8 @@ class Solution: return res ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$。 +- **空间复杂度**:$O(\log n)$。 + diff --git "a/Solutions/0270. \346\234\200\346\216\245\350\277\221\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\200\274.md" "b/Solutions/0270. \346\234\200\346\216\245\350\277\221\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\200\274.md" index 864c56dd..1205ba22 100644 --- "a/Solutions/0270. \346\234\200\346\216\245\350\277\221\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\200\274.md" +++ "b/Solutions/0270. \346\234\200\346\216\245\350\277\221\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\200\274.md" @@ -9,20 +9,48 @@ ## 题目大意 -给定一个不为空的二叉搜索树,以及一个目标值 target。要求在二叉搜索树中找到最接近目标值 target 的数值。 +**描述**:给定一个不为空的二叉搜索树的根节点,以及一个目标值 $target$。 + +**要求**:在二叉搜索树中找到最接近目标值 $target$ 的数值。 + +**说明**: + +- 树中节点的数目在范围 $[1, 10^4]$ 内。 +- $0 \le Node.val \le 10^9$。 +- $-10^9 \le target \le 10^9$。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2021/03/12/closest1-1-tree.jpg) + +```python +输入:root = [4,2,5,1,3], target = 3.714286 +输出:4 +``` + +- 示例 2: + +```python +输入:root = [1], target = 4.428571 +输出:1 +``` ## 解题思路 -题目中最接近目标值 target 的数值指的就是 与 target 相减绝对值最小的数值。 +### 思路 1:二分查找算法 + +题目中最接近目标值 $target$ 的数值指的就是与 $target$ 相减绝对值最小的数值。 -而且根据二叉搜索树的性质,我们可以利用二分搜索的方式,查找与 target 相减绝对值最小的数值。具体做法为: +而且根据二叉搜索树的性质,我们可以利用二分搜索的方式,查找与 $target$ 相减绝对值最小的数值。具体做法为: -- 定义一个变量 closest 表示与 target 最接近的数值,初始赋值为根节点的值 root.val。 -- 判断当前节点的值域 closet 值哪个更接近 target,如果当前值更接近,则更新 closest。 -- 如果 target < 当前节点值,则从当前节点的左子树继续查找。 -- 如果 target ≥ 当前节点值,则从当前节点的右子树继续查找。 +- 定义一个变量 $closest$ 表示与 $target$ 最接近的数值,初始赋值为根节点的值 $root.val$。 +- 判断当前节点的值域 $closet$ 值哪个更接近 $target$,如果当前值更接近,则更新 $closest$。 +- 如果 $target$ < 当前节点值,则从当前节点的左子树继续查找。 +- 如果 $target$ ≥ 当前节点值,则从当前节点的右子树继续查找。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -38,3 +66,8 @@ class Solution: return closest ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(\log n)$,其中 $n$ 为二叉搜索树的节点个数。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/0360. \346\234\211\345\272\217\350\275\254\345\214\226\346\225\260\347\273\204.md" "b/Solutions/0360. \346\234\211\345\272\217\350\275\254\345\214\226\346\225\260\347\273\204.md" index 91d08037..7720eceb 100644 --- "a/Solutions/0360. \346\234\211\345\272\217\350\275\254\345\214\226\346\225\260\347\273\204.md" +++ "b/Solutions/0360. \346\234\211\345\272\217\350\275\254\345\214\226\346\225\260\347\273\204.md" @@ -9,37 +9,60 @@ ## 题目大意 -给定一个已经排好的整数数组 `nums` 和整数 `a`、`b`、`c`。 +**描述**:给定一个已经排好的整数数组 $nums$ 和整数 $a$、$b$、$c$。 -要求:对于数组中的每一个数 `x`,计算函数值 $f(x) = ax^2 + bx + c$,请将函数值产生的数组返回。 +**要求**:对于数组中的每一个数 $x$,计算函数值 $f(x) = ax^2 + bx + c$,请将函数值产生的数组返回。 -注意:返回的这个数组必须按照升序排列,并且我们所期望的解法时间复杂度为 $O(n)$。 +**说明**: + +- 返回的这个数组必须按照升序排列,并且我们所期望的解法时间复杂度为 $O(n)$。 +- $1 \le nums.length \le 200$。 +- $-100 \le nums[i], a, b, c \le 100$。 +- $nums$ 按照升序排列。 + +**示例**: + +- 示例 1: + +```python +输入: nums = [-4,-2,2,4], a = 1, b = 3, c = 5 +输出: [3,9,15,33] +``` + +- 示例 2: + +```python +输入: nums = [-4,-2,2,4], a = -1, b = 3, c = 5 +输出: [-23,-5,1,7] +``` ## 解题思路 +### 思路 1: 数学 + 对撞指针 + 这是一道数学题。需要根据一元二次函数的性质来解决问题。因为返回的数组必须按照升序排列,并且期望的解法时间复杂度为 $O(n)$。这就不能先计算再排序了,而是要在线性时间复杂度内考虑问题。 -我们先定义一个函数用来计算 `f(x)`。然后进行分情况讨论。 - -- 如果 `a == 0`,说明函数是一条直线。则根据 `b` 值的正负来确定数组遍历顺序。 - - 如果 `b >= 0`,说明这条直线是一条递增直线。则按照从头到尾的顺序依次计算函数值,并依次存入答案数组。 - - 如果 `b < 0`,说明这条直线是一条递减直线。则按照从尾到头的顺序依次计算函数值,并依次存入答案数组。 -- 如果 `a > 0`,说明函数是一条开口向上的抛物线,最小值横坐标为 $diad = \frac{-b}{2.0 * a}$,离 diad 越远,函数值越大。则可以使用双指针从远到近,由大到小依次填入数组。具体步骤如下: - - 使用双指针 `left`、`right`,令 `left` 指向数组第一个元素位置,`right` 指向数组最后一个元素位置。再定义 `index = len(nums) - 1` 作为答案数组填入顺序的索引值。 - - 比较 `left - diad` 与 `right - diad` 的绝对值大小。大的就是目前距离 `diad` 最远的那个。 - - 如果 `abs(nums[left] - diad)` 更大,则将其填入答案数组对应位置,并令 `left += 1`。 - - 如果 `abs(nums[right] - diad)` 更大,则将其填入答案数组对应位置,并令 `right -= 1`。 - - 令 `index -= 1`。 - - 直到 `left == right`,最后将 `nums[left]` 填入答案数组对应位置。 -- 如果 `a < 0`,说明函数是一条开口向下的抛物线,最大值横坐标为 $diad = \frac{-b}{2.0 * a}$,离 diad 越远,函数值越小。则可以使用双指针从远到近,由小到大一次填入数组。具体步骤如下: - - 使用双指针 `left`、`right`,令 `left` 指向数组第一个元素位置,`right` 指向数组最后一个元素位置。再定义 `index = 0` 作为答案数组填入顺序的索引值。 - - 比较 `left - diad` 与 `right - diad` 的绝对值大小。大的就是目前距离 `diad` 最远的那个。 - - 如果 `abs(nums[left] - diad)` 更大,则将其填入答案数组对应位置,并令 `left += 1`。 - - 如果 `abs(nums[right] - diad)` 更大,则将其填入答案数组对应位置,并令 `right -= 1`。 - - 令 `index += 1`。 - - 直到 `left == right`,最后将 `nums[left]` 填入答案数组对应位置。 - -## 代码 +我们先定义一个函数用来计算 $f(x)$。然后进行分情况讨论。 + +- 如果 $a == 0$,说明函数是一条直线。则根据 $b$ 值的正负来确定数组遍历顺序。 + - 如果 $b \ge 0$,说明这条直线是一条递增直线。则按照从头到尾的顺序依次计算函数值,并依次存入答案数组。 + - 如果 $b < 0$,说明这条直线是一条递减直线。则按照从尾到头的顺序依次计算函数值,并依次存入答案数组。 +- 如果 $a > 0$,说明函数是一条开口向上的抛物线,最小值横坐标为 $diad = \frac{-b}{2.0 * a}$,离 diad 越远,函数值越大。则可以使用双指针从远到近,由大到小依次填入数组。具体步骤如下: + - 使用双指针 $left$、$right$,令 $left$ 指向数组第一个元素位置,$right$ 指向数组最后一个元素位置。再定义 $index = len(nums) - 1$ 作为答案数组填入顺序的索引值。 + - 比较 $left - diad$ 与 $right - diad$ 的绝对值大小。大的就是目前距离 $diad$ 最远的那个。 + - 如果 $abs(nums[left] - diad)$ 更大,则将其填入答案数组对应位置,并令 $left += 1$。 + - 如果 $abs(nums[right] - diad)$ 更大,则将其填入答案数组对应位置,并令 $right -= 1$。 + - 令 $index -= 1$。 + - 直到 $left == right$,最后将 $nums[left]$ 填入答案数组对应位置。 +- 如果 $a < 0$,说明函数是一条开口向下的抛物线,最大值横坐标为 $diad = \frac{-b}{2.0 * a}$,离 diad 越远,函数值越小。则可以使用双指针从远到近,由小到大一次填入数组。具体步骤如下: + - 使用双指针 $left$、$right$,令 $left$ 指向数组第一个元素位置,$right$ 指向数组最后一个元素位置。再定义 $index = 0$ 作为答案数组填入顺序的索引值。 + - 比较 $left - diad$ 与 $right - diad$ 的绝对值大小。大的就是目前距离 $diad$ 最远的那个。 + - 如果 $abs(nums[left] - diad)$ 更大,则将其填入答案数组对应位置,并令 $left += 1$。 + - 如果 $abs(nums[right] - diad)$ 更大,则将其填入答案数组对应位置,并令 $right -= 1$。 + - 令 $index += 1$。 + - 直到 $left == right$,最后将 $nums[left]$ 填入答案数组对应位置。 + +### 思路 1:代码 ```python class Solution: @@ -93,3 +116,8 @@ class Solution: return res ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$。 +- **空间复杂度**:$O(1)$,不考虑最终返回值的空间占用。 + diff --git "a/Solutions/0410. \345\210\206\345\211\262\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\200\274.md" "b/Solutions/0410. \345\210\206\345\211\262\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\200\274.md" index 245a6b5c..58e024ab 100644 --- "a/Solutions/0410. \345\210\206\345\211\262\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\200\274.md" +++ "b/Solutions/0410. \345\210\206\345\211\262\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\200\274.md" @@ -9,21 +9,51 @@ ## 题目大意 -给定一个非负整数数组 nums 和一个整数 m,将数组分成 m 个非空的连续子数组,要求使 m 个子数组各自和的最大值最小,并求出子数组各自和的最大值。 +**描述**:给定一个非负整数数组 $nums$ 和一个整数 $k$,将数组分成 $m$ 个非空的连续子数组。 + +**要求**:使 $m$ 个子数组各自和的最大值最小,并求出子数组各自和的最大值。 + +**说明**: + +- $1 \le nums.length \le 1000$。 +- $0 \le nums[i] \le 10^6$。 +- $1 \le k \le min(50, nums.length)$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [7,2,5,10,8], k = 2 +输出:18 +解释: +一共有四种方法将 nums 分割为 2 个子数组。 +其中最好的方式是将其分为 [7,2,5] 和 [10,8] 。 +因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。 +``` + +- 示例 2: + +```python +输入:nums = [1,2,3,4,5], k = 2 +输出:9 +``` ## 解题思路 -先来理解清楚题意。题目的目的是使得 m 个连续子数组各自和的最大值最小。意思是将数组按顺序分成 m 个子数组,然后计算每个子数组的和,然后找出 m 个和中的最大值,要求使这个最大值尽可能小。最后输出这个尽可能小的和最大值。 +### 思路 1:二分查找算法 -可以用二分查找来找这个子数组和的最大值,我们用 ans 来表示这个值。ans 最小为数组 nums 所有元素的最大值,最大为数组 nums 所有元素的和。即 ans 范围是 [max(nums), sum(nums)]。 +先来理解清楚题意。题目的目的是使得 $m$ 个连续子数组各自和的最大值最小。意思是将数组按顺序分成 $m$ 个子数组,然后计算每个子数组的和,然后找出 $m$ 个和中的最大值,要求使这个最大值尽可能小。最后输出这个尽可能小的和最大值。 -所以就确定了二分查找的两个指针位置。left 指向 max(nums),right 指向 sum(nums)。然后取中间值 mid,计算当子数组和的最大值为 mid 时,所需要分割的子数组最少个数。 +可以用二分查找来找这个子数组和的最大值,我们用 $ans$ 来表示这个值。$ans$ 最小为数组 $nums$ 所有元素的最大值,最大为数组 $nums$ 所有元素的和。即 $ans$ 范围是 $[max(nums), sum(nums)]$。 -- 如果需要分割的子数组最少个数大于 m 个,则说明子数组和的最大值取小了,不满足条件,应该继续调大,将 left 右移,从右区间继续查找。 -- 如果需要分割的子数组最少个数小于或等于 m 个,则说明子数组和的最大值满足条件,并且还可以继续调小,将 right 左移,从左区间继续查找,看是否有更小的数组和满足条件。 +所以就确定了二分查找的两个指针位置。$left$ 指向 $max(nums)$,$right$ 指向 $sum(nums)$。然后取中间值 $mid$,计算当子数组和的最大值为 mid 时,所需要分割的子数组最少个数。 + +- 如果需要分割的子数组最少个数大于 $m$ 个,则说明子数组和的最大值取小了,不满足条件,应该继续调大,将 $left$ 右移,从右区间继续查找。 +- 如果需要分割的子数组最少个数小于或等于 $m$ 个,则说明子数组和的最大值满足条件,并且还可以继续调小,将 $right$ 左移,从左区间继续查找,看是否有更小的数组和满足条件。 - 最终,返回符合条件的最小值即可。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -50,3 +80,8 @@ class Solution: return left ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times \log (\sum nums))$,其中 $n$ 为数组中的元素个数。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" index 51ddae50..1a39b476 100644 --- "a/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" @@ -9,21 +9,21 @@ ## 题目大意 -**描述**:给定一个字符数组 `chars`。请使用下述算法压缩: +**描述**:给定一个字符数组 $chars$。请使用下述算法压缩: -从一个空字符串 `s` 开始。对于 `chars` 中的每组连续重复字符: +从一个空字符串 $s$ 开始。对于 $chars$ 中的每组连续重复字符: -- 如果这一组长度为 `1`,则将字符追加到 `s` 中。 -- 如果这一组长度超过 `1`,则需要向 `s` 追加字符,后跟这一组的长度。 +- 如果这一组长度为 $1$,则将字符追加到 $s$ 中。 +- 如果这一组长度超过 $1$,则需要向 $s$ 追加字符,后跟这一组的长度。 -压缩后得到的字符串 `s` 不应该直接返回 ,需要转储到字符数组 `chars` 中。需要注意的是,如果组长度为 `10` 或 `10` 以上,则在 `chars` 数组中会被拆分为多个字符。 +压缩后得到的字符串 $s$ 不应该直接返回 ,需要转储到字符数组 $chars$ 中。需要注意的是,如果组长度为 $10$ 或 $10$ 以上,则在 $chars$ 数组中会被拆分为多个字符。 **要求**:在修改完输入数组后,返回该数组的新长度。 **说明**: - $1 \le chars.length \le 2000$。 -- `chars[i]` 可以是小写英文字母、大写英文字母、数字或符号。 +- $chars[i]$ 可以是小写英文字母、大写英文字母、数字或符号。 - 必须设计并实现一个只使用常量额外空间的算法来解决此问题。 **示例**: @@ -36,23 +36,31 @@ 解释:"aa" 被 "a2" 替代。"bb" 被 "b2" 替代。"ccc" 被 "c3" 替代。 ``` +- 示例 2: + +```python +输入:chars = ["a"] +输出:返回 1 ,输入数组的前 1 个字符应该是:["a"] +解释:唯一的组是“a”,它保持未压缩,因为它是一个字符。 +``` + ## 解题思路 ### 思路 1:快慢指针 题目要求原地修改字符串数组。我们可以使用快慢指针来解决原地修改问题,具体解决方法如下: -- 定义两个快慢指针 `slow`,`fast`。其中 `slow` 指向压缩后的当前字符位置,`fast` 指向压缩前的当前字符位置。 -- 记录下当前待压缩字符的起始位置 `fast_start = start`,然后过滤掉连续相同的字符。 -- 将待压缩字符的起始位置的字符存入压缩后的当前字符位置,即 `chars[slow] = chars[fast_start]`,并向右移动压缩后的当前字符位置,即 `slow += 1`。 -- 判断一下待压缩字符的数目是否大于 `1`: - - 如果数量为 `1`,则不用记录该数量。 - - 如果数量大于 `1`(即 `fast - fast_start > 0`),则我们需要将对应数量存入压缩后的当前字符位置。这时候还需要判断一下数量是否大于等于 `10`。 - - 如果数量大于等于 `10`,则需要先将数字从个位到高位转为字符,存入压缩后的当前字符位置(此时数字为反,比如原数字是 `321`,则此时存入后为 `123`)。因为数字为反,所以我们需要将对应位置上的子字符串进行反转。 - - 如果数量小于 `10`,则直接将数字存入压缩后的当前字符位置,无需取反。 -- 判断完之后向右移动压缩前的当前字符位置 `fast`,然后继续压缩字符串,直到全部压缩完,则返回压缩后的当前字符位置 `slow` 即为答案。 +- 定义两个快慢指针 $slow$,$fast$。其中 $slow$ 指向压缩后的当前字符位置,$fast$ 指向压缩前的当前字符位置。 +- 记录下当前待压缩字符的起始位置 $fast\underline{}start = start$,然后过滤掉连续相同的字符。 +- 将待压缩字符的起始位置的字符存入压缩后的当前字符位置,即 $chars[slow] = chars[fast\underline{}start]$,并向右移动压缩后的当前字符位置,即 $slow += 1$。 +- 判断一下待压缩字符的数目是否大于 $1$: + - 如果数量为 $1$,则不用记录该数量。 + - 如果数量大于 $1$(即 $fast - fast\underline{}start > 0$),则我们需要将对应数量存入压缩后的当前字符位置。这时候还需要判断一下数量是否大于等于 $10$。 + - 如果数量大于等于 $10$,则需要先将数字从个位到高位转为字符,存入压缩后的当前字符位置(此时数字为反,比如原数字是 $321$,则此时存入后为 $123$)。因为数字为反,所以我们需要将对应位置上的子字符串进行反转。 + - 如果数量小于 $10$,则直接将数字存入压缩后的当前字符位置,无需取反。 +- 判断完之后向右移动压缩前的当前字符位置 $fast$,然后继续压缩字符串,直到全部压缩完,则返回压缩后的当前字符位置 $slow$ 即为答案。 -### 思路 1:快慢指针代码 +### 思路 1:代码 ```python class Solution: @@ -85,3 +93,8 @@ class Solution: fast += 1 return slow ``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为字符串 $s$ 的长度。 +- **空间复杂度**:$O(1)$。 diff --git "a/Solutions/0611. \346\234\211\346\225\210\344\270\211\350\247\222\345\275\242\347\232\204\344\270\252\346\225\260.md" "b/Solutions/0611. \346\234\211\346\225\210\344\270\211\350\247\222\345\275\242\347\232\204\344\270\252\346\225\260.md" index 3ba58e4d..84a29e84 100644 --- "a/Solutions/0611. \346\234\211\346\225\210\344\270\211\350\247\222\345\275\242\347\232\204\344\270\252\346\225\260.md" +++ "b/Solutions/0611. \346\234\211\346\225\210\344\270\211\350\247\222\345\275\242\347\232\204\344\270\252\346\225\260.md" @@ -9,26 +9,53 @@ ## 题目大意 -给定一个包含非负整数的数组 `nums`,其中 `nums[i]` 表示第 `i` 条边的边长。 +**描述**:给定一个包含非负整数的数组 $nums$,其中 $nums[i]$ 表示第 $i$ 条边的边长。 -要求:统计数组中可以组成三角形三条边的三元组个数。 +**要求**:统计数组中可以组成三角形三条边的三元组个数。 + +**说明**: + +- $1 \le nums.length \le 1000$。 +- $0 \le nums[i] \le 1000$。 + +**示例**: + +- 示例 1: + +```python +输入: nums = [2,2,3,4] +输出: 3 +解释:有效的组合是: +2,3,4 (使用第一个 2) +2,3,4 (使用第二个 2) +2,2,3 +``` + +- 示例 2: + +```python +输入: nums = [4,2,3,4] +输出: 4 +``` ## 解题思路 -构成三角形的条件为:任意两边和大于第三边,或者任意两边差小于第三边。只要满足这两个条件之一就可以构成三角形。以任意两边和大于第三边为例,如果用 `a`、`b`、`c` 来表示的话,应该同时满足 `a + b > c`、`a + c > b`、`b + c > a`。如果我们将三条边升序排序,假设 `a <= b <= c`,则如果满足 `a + b > c`,则 `a + c > b` 和 `b + c > a` 一定成立。 +### 思路 1:对撞指针 -所以我们可以先对 `nums` 进行排序。然后固定最大边 `i`,利用对撞指针 `left`、`right` 查找较小的两条边。然后判断是否构成三角形并统计三元组个数。 +构成三角形的条件为:任意两边和大于第三边,或者任意两边差小于第三边。只要满足这两个条件之一就可以构成三角形。以任意两边和大于第三边为例,如果用 $a$、$b$、$c$ 来表示的话,应该同时满足 $a + b > c$、$a + c > b$、$b + c > a$。如果我们将三条边升序排序,假设 $a \le b \le c$,则如果满足 $a + b > c$,则 $a + c > b$ 和 $b + c > a$ 一定成立。 -为了避免重复计算和漏解,要严格保证三条边的序号关系为:`left < right < i`。具体做法如下: +所以我们可以先对 $nums$ 进行排序。然后固定最大边 $i$,利用对撞指针 $left$、$right$ 查找较小的两条边。然后判断是否构成三角形并统计三元组个数。 -- 对数组从小到大排序,使用 `ans` 记录三元组个数。 -- 从 `i = 2` 开始遍历数组的每一条边,`i` 作为最大边。 -- 使用双指针 `left`、`right`。`left` 指向 `0`,`right` 指向 `i - 1`。 - - 如果 `nums[left] + nums[right] <= nums[i]`,说明第一条边太短了,可以增加第一条边长度,所以将 `left` 右移,即 `left += 1`。 - - 如果 `nums[left] + nums[right] > nums[i]`,说明可以构成三角形,并且第二条边固定为 `right` 边的话,第一条边可以在 `[left, right - 1]` 中任意选择。所以三元组个数要加上 `right - left`。即 `ans += (right - left)`。 -- 直到 `left == right` 跳出循环,输出三元组个数 `ans`。 +为了避免重复计算和漏解,要严格保证三条边的序号关系为:$left < right < i$。具体做法如下: -## 代码 +- 对数组从小到大排序,使用 $ans$ 记录三元组个数。 +- 从 $i = 2$ 开始遍历数组的每一条边,$i$ 作为最大边。 +- 使用双指针 $left$、$right$。$left$ 指向 $0$,$right$ 指向 $i - 1$。 + - 如果 $nums[left] + nums[right] \le nums[i]$,说明第一条边太短了,可以增加第一条边长度,所以将 $left$ 右移,即 `left += 1`。 + - 如果 $nums[left] + nums[right] > nums[i]$,说明可以构成三角形,并且第二条边固定为 $right$ 边的话,第一条边可以在 $[left, right - 1]$ 中任意选择。所以三元组个数要加上 $right - left$。即 `ans += (right - left)`。 +- 直到 $left == right$ 跳出循环,输出三元组个数 $ans$。 + +### 思路 1:代码 ```python class Solution: @@ -49,3 +76,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$,其中 $n$ 为数组中的元素个数。 +- **空间复杂度**:$O(\log n)$,排序需要 $\log n$ 的栈空间。 + diff --git "a/Solutions/0658. \346\211\276\345\210\260 K \344\270\252\346\234\200\346\216\245\350\277\221\347\232\204\345\205\203\347\264\240.md" "b/Solutions/0658. \346\211\276\345\210\260 K \344\270\252\346\234\200\346\216\245\350\277\221\347\232\204\345\205\203\347\264\240.md" index e3401e94..9ef4125b 100644 --- "a/Solutions/0658. \346\211\276\345\210\260 K \344\270\252\346\234\200\346\216\245\350\277\221\347\232\204\345\205\203\347\264\240.md" +++ "b/Solutions/0658. \346\211\276\345\210\260 K \344\270\252\346\234\200\346\216\245\350\277\221\347\232\204\345\205\203\347\264\240.md" @@ -9,26 +9,57 @@ ## 题目大意 -给定一个有序数组 arr,以及两个整数 k、x。从数组中找到最靠近 x(两数之差最小)的 k 个数。返回包含这 k 个数的有序数组。 +**描述**:给定一个有序数组 $arr$,以及两个整数 $k$、$x$。 + +**要求**:从数组中找到最靠近 $x$(两数之差最小)的 $k$ 个数。返回包含这 $k$ 个数的有序数组。 + +**说明**: + +- 整数 $a$ 比整数 $b$ 更接近 $x$ 需要满足: + - $|a - x| < |b - x|$ 或者 + - $|a - x| == |b - x|$ 且 $a < b$。 + +- $1 \le k \le arr.length$。 +- $1 \le arr.length \le 10^4$。 +- $arr$ 按升序排列。 +- $-10^4 \le arr[i], x \le 10^4$。 + +**示例**: + +- 示例 1: + +```python +输入:arr = [1,2,3,4,5], k = 4, x = 3 +输出:[1,2,3,4] +``` + +- 示例 2: + +```python +输入:arr = [1,2,3,4,5], k = 4, x = -1 +输出:[1,2,3,4] +``` ## 解题思路 -数组的区间为 [0, n-1],查找的子区间长度为 k。我们可以通过查找子区间左端点位置,从而确定子区间。 +### 思路 1:二分查找算法 + +数组的区间为 $[0, n-1]$,查找的子区间长度为 $k$。我们可以通过查找子区间左端点位置,从而确定子区间。 查找子区间左端点可以通过二分查找来降低复杂度。 -因为子区间为 k,所以左端点最多取到 n-k 的位置。 +因为子区间为 $k$,所以左端点最多取到 $n - k$ 的位置。 -设定两个指针 left,right。left 指向 0,right 指向 n-k。 +设定两个指针 $left$,$right$。$left$ 指向 $0$,$right$ 指向 $n - k$。 -每次取 left 和 right 中间位置,判断 x 与左右边界的差值。x 与左边的差值为 x - arr[mid],x 与右边界的差值为 arr[mid + k] - x。 +每次取 $left$ 和 $right$ 中间位置,判断 $x$ 与左右边界的差值。$x$ 与左边的差值为 $x - arr[mid]$,$x$ 与右边界的差值为 $arr[mid + k] - x$。 -- 如果 x 与左边界的差值 > x 与右边界的差值,即 x - arr[mid] > arr[mid + k] - x,将 left 右移,left = mid + 1,从右侧继续查找。 -- 如果 x 与左边界的差值 <= x 与右边界的差值, 即 x - arr[mid] <= arr[mid + k] - x,则将 right 向左侧靠拢,right = mid,从左侧继续查找。 +- 如果 $x$ 与左边界的差值大于 $x$ 与右边界的差值,即 $x - arr[mid] > arr[mid + k] - x$,将 $left$ 右移,$left = mid + 1$,从右侧继续查找。 +- 如果 $x$ 与左边界的差值小于等于 $x$ 与右边界的差值, 即 $x - arr[mid] \le arr[mid + k] - x$,则将 $right$ 向左侧靠拢,$right = mid$,从左侧继续查找。 -最后返回 arr[left, left + k] 即可。 +最后返回 $arr[left, left + k]$ 即可。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -45,3 +76,8 @@ class Solution: return arr[left: left + k] ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(\log (n - k) + k)$,其中 $n$ 为数组中的元素个数。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/0702. \346\220\234\347\264\242\351\225\277\345\272\246\346\234\252\347\237\245\347\232\204\346\234\211\345\272\217\346\225\260\347\273\204.md" "b/Solutions/0702. \346\220\234\347\264\242\351\225\277\345\272\246\346\234\252\347\237\245\347\232\204\346\234\211\345\272\217\346\225\260\347\273\204.md" index da2ad5e0..ce894519 100644 --- "a/Solutions/0702. \346\220\234\347\264\242\351\225\277\345\272\246\346\234\252\347\237\245\347\232\204\346\234\211\345\272\217\346\225\260\347\273\204.md" +++ "b/Solutions/0702. \346\220\234\347\264\242\351\225\277\345\272\246\346\234\252\347\237\245\347\232\204\346\234\211\345\272\217\346\225\260\347\273\204.md" @@ -9,13 +9,46 @@ ## 题目大意 -给定一个升序数组 nums,但是数组的大小是未知的,只能通过接口 `reader.get(k)` 来获取数组 nums 中第 k 个元素值。如果数组访问越界,则接口返回 `2147483647`。再给定一个数字 target。要求从 nums 中找出 target,并返回下标,如果 nums 中不存在 target,则返回 -1。 +**描述**:给定一个升序数组 $secret$,但是数组的大小是未知的。我们无法直接访问数组,智能通过 `ArrayReader` 接口去访问他。我们可以通过接口 `reader.get(k)`: + +1. 如果数组访问未越界,则返回数组 $secret$ 中第 $k$ 个下标位置的元素值。 +2. 如果数组访问越界,则接口返回 $2^{31} - 1$。 + +现在再给定一个数字 $target$。 + +**要求**:从 $secret$ 中找出 $secret[k] == target$ 的下标位置 $k$,如果 $secret$ 中不存在 $target$,则返回 $-1$。 + +**说明**: + +- $1 \le secret.length \le 10^4$。 +- $-10^4 \le secret[i], target \le 10^4$。 +- $secret$ 严格递增。 + +**示例**: + +- 示例 1: + +```python +输入: secret = [-1,0,3,5,9,12], target = 9 +输出: 4 +解释: 9 存在在 nums 中,下标为 4 +``` + +- 示例 2: + +```python +输入: secret = [-1,0,3,5,9,12], target = 2 +输出: -1 +解释: 2 不在数组中所以返回 -1 +``` ## 解题思路 -这道题的关键点在于找到数组的大小,以便确定查找的右边界位置。右边界可以通过倍增的方式快速查找。在查找右边界的同时,也能将左边界的范围进一步缩小。等确定了左右边界,就可以使用二分查找算法快速查找 target。 +### 思路 1:二分查找算法 + +这道题的关键点在于找到数组的大小,以便确定查找的右边界位置。右边界可以通过倍增的方式快速查找。在查找右边界的同时,也能将左边界的范围进一步缩小。等确定了左右边界,就可以使用二分查找算法快速查找 $target$。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -41,3 +74,8 @@ class Solution: return self.binarySearch(reader, left, right, target) ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(\log n)$,其中 $n$ 为数组长度。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" "b/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" index 97de9438..c39c55b3 100644 --- "a/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" +++ "b/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" @@ -9,19 +9,56 @@ ## 题目大意 -给定一个整数数组 nums,对于数组中不同的数 nums[i]、nums[j] 之间的距离定义为 nums[i] 和 nums[j] 的绝对差值,即 `dist(nums[i], nums[j]) = abs(nums[i] - nums[j])`。求所有数对之间第 k 个最小距离。 +**描述**:给定一个整数数组 $nums$,对于数组中不同的数 $nums[i]$、$nums[j]$ 之间的距离定义为 $nums[i]$ 和 $nums[j]$ 的绝对差值,即 $dist(nums[i], nums[j]) = abs(nums[i] - nums[j])$。 + +**要求**:求所有数对之间第 $k$ 个最小距离。 + +**说明**: + +- $n == nums.length$ +- $2 \le n \le 10^4$。 +- $0 \le nums[i] \le 10^6$。 +- $1 \le k \le n \times (n - 1) / 2$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [1,3,1], k = 1 +输出:0 +解释:数对和对应的距离如下: +(1,3) -> 2 +(1,1) -> 0 +(3,1) -> 2 +距离第 1 小的数对是 (1,1) ,距离为 0。 +``` + +- 示例 2: + +```python +输入:nums = [1,1,1], k = 2 +输出:0 +``` ## 解题思路 +### 思路 1:二分查找算法 + 一般来说 topK 问题都可以用堆排序来解决。但是这道题使用堆排序超时了。所以需要换其他方法。 -先来考虑第 k 个最小距离的范围。这个范围一定在 `[0, max(nums) - min(nums)]` 之间。 +先来考虑第 $k$ 个最小距离的范围。这个范围一定在 $[0, max(nums) - min(nums)]$ 之间。 + +我们可以对 $nums$ 先进行排序,然后得到最小距离为 $0$,最大距离为 $nums[-1] - nums[0]$。我们可以在这个区间上进行二分,对于二分的位置 $mid$,统计距离小于等于 $mid$ 的距离对数,并根据它和 $k$ 的关系调整区间上下界。 -我们可以对 nums 先进行排序,然后得到最小距离为 0,最大距离为 `nums[-1] - nums[0]`。我们可以在这个区间上进行二分,对于二分的位置 mid,统计距离小于等于 mid 的距离对数,并根据它和 k 的关系调整区间上下界。 +统计对数可以使用双指针来计算出所有小于等于 $mid$ 的距离对数目。 -统计对数可以使用双指针来计算出所有小于等于 mid 的距离对数目。维护两个指针 left、right。left、right 都指向数组开头位置。然后不断移动 right,计算 nums[right] 和 nums[left] 之间的距离,如果大于 mid,则 left 向右移动,直到 距离小于等于 mid 时,统计当前距离对数为 right - left。最终将这些符合要求的距离对数累加,就得到了所有小于等于 mid 的距离对数目。 +1. 维护两个指针 $left$、$right$。$left$、$right$ 都指向数组开头位置。 +2. 然后不断移动 $right$,计算 $nums[right]$ 和 $nums[left]$ 之间的距离。 +3. 如果大于 $mid$,则 $left$ 向右移动,直到距离小于等于 $mid$ 时,统计当前距离对数为 $right - left$。 +4. 最终将这些符合要求的距离对数累加,就得到了所有小于等于 $mid$ 的距离对数目。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -45,3 +82,7 @@ class Solution: return left ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times \log n)$,其中 $n$ 为数组 $nums$ 中的元素个数。 +- **空间复杂度**:$O(\log n)$,排序算法所用到的空间复杂度为 $O(\log n)$。 diff --git "a/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" "b/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" index 2ac02331..e00a92e9 100644 --- "a/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" +++ "b/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" @@ -69,5 +69,5 @@ class Solution: ### 思路 1:复杂度分析 - **时间复杂度**:$n \times 2^n$,其中 $n$ 为字符串的长度。 -- **空间复杂度**:$O(1)$,初返回值外不需要额外的空间。 +- **空间复杂度**:$O(1)$,除返回值外不需要额外的空间。 diff --git "a/Solutions/0875. \347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.md" "b/Solutions/0875. \347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.md" index 33d6d34d..80191aa6 100644 --- "a/Solutions/0875. \347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.md" +++ "b/Solutions/0875. \347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.md" @@ -9,24 +9,48 @@ ## 题目大意 -给定一个数组 `piles` 代表 `n` 堆香蕉。其中 `piles[i]` 表示第 `i` 堆香蕉的个数。再给定一个整数 `h` ,表示最多可以在 `h` 小时内吃完所有香蕉。珂珂决定以速度每小时 `k`(未知)根的速度吃香蕉。每一个小时,她讲选择其中一堆香蕉,从中吃掉 `k` 根。如果这堆香蕉少于 `k` 根,珂珂将在这一小时吃掉这堆的所有香蕉,并且这一小时不会再吃其他堆的香蕉。 +**描述**:给定一个数组 $piles$ 代表 $n$ 堆香蕉。其中 $piles[i]$ 表示第 $i$ 堆香蕉的个数。再给定一个整数 $h$ ,表示最多可以在 $h$ 小时内吃完所有香蕉。珂珂决定以速度每小时 $k$(未知)根的速度吃香蕉。每一个小时,她讲选择其中一堆香蕉,从中吃掉 $k$ 根。如果这堆香蕉少于 $k$ 根,珂珂将在这一小时吃掉这堆的所有香蕉,并且这一小时不会再吃其他堆的香蕉。 -要求:返回珂珂可以在 `h` 小时内吃掉所有香蕉的最小速度 `k`(`k` 为整数)。 +**要求**:返回珂珂可以在 $h$ 小时内吃掉所有香蕉的最小速度 $k$($k$ 为整数)。 + +**说明**: + +- $1 \le piles.length \le 10^4$。 +- $piles.length \le h \le 10^9$。 +- $1 \le piles[i] \le 10^9$。 + +**示例**: + +- 示例 1: + +```python +输入:piles = [3,6,7,11], h = 8 +输出:4 +``` + +- 示例 2: + +```python +输入:piles = [30,11,23,4,20], h = 5 +输出:30 +``` ## 解题思路 - 先来看 `k` 的取值范围,因为 `k` 是整数,且速度肯定不能为 `0` 吧,为 `0` 的话就永远吃不完了。所以`k` 的最小值可以取 `1`。`k` 的最大值根香蕉中最大堆的香蕉个数有关,因为 `1` 个小时内只能选择一堆吃,不能再吃其他堆的香蕉,则 `k` 的最大值取香蕉堆的最大值即可。即 `k` 的最大值为 `max(piles)`。 +### 思路 1:二分查找算法 -我们的目标是求出 `h` 小时内吃掉所有香蕉的最小速度 `k`。现在有了区间「`[1, max(piles)]`」,有了目标「最小速度 `k`」。接下来使用二分查找算法来查找「最小速度 `k`」。至于计算 `h` 小时内能否以 `k` 的速度吃完香蕉,我们可以再写一个方法 `canEat` 用于判断。如果能吃完就返回 `True`,不能吃完则返回 `False`。下面说一下算法的具体步骤。 +先来看 $k$ 的取值范围,因为 $k$ 是整数,且速度肯定不能为 $0$ 吧,为 $0$ 的话就永远吃不完了。所以$k$ 的最小值可以取 $1$。$k$ 的最大值根香蕉中最大堆的香蕉个数有关,因为 $1$ 个小时内只能选择一堆吃,不能再吃其他堆的香蕉,则 $k$ 的最大值取香蕉堆的最大值即可。即 $k$ 的最大值为 $max(piles)$。 -- 使用两个指针 `left`、`right`。令 `left` 指向 `1`,`right` 指向 `max(piles)`。代表待查找区间为 `[left, right]` +我们的目标是求出 $h$ 小时内吃掉所有香蕉的最小速度 $k$。现在有了区间「$[1, max(piles)]$」,有了目标「最小速度 $k$」。接下来使用二分查找算法来查找「最小速度 $k$」。至于计算 $h$ 小时内能否以 $k$ 的速度吃完香蕉,我们可以再写一个方法 $canEat$ 用于判断。如果能吃完就返回 $True$,不能吃完则返回 $False$。下面说一下算法的具体步骤。 -- 取两个节点中心位置 `mid`,判断是否能在 `h` 小时内以 `k` 的速度吃完香蕉。 - - 如果不能吃完,则将区间 `[left, mid]` 排除掉,继续在区间 `[mid + 1, right]` 中查找。 - - 如果能吃完,说明 `k` 还可以继续减小,则继续在区间 `[left, mid]` 中查找。 -- 当 `left == right` 时跳出循环,返回 `left`。 +- 使用两个指针 $left$、$right$。令 $left$ 指向 $1$,$right$ 指向 $max(piles)$。代表待查找区间为 $[left, right]$ -## 代码 +- 取两个节点中心位置 $mid$,判断是否能在 $h$ 小时内以 $k$ 的速度吃完香蕉。 + - 如果不能吃完,则将区间 $[left, mid]$ 排除掉,继续在区间 $[mid + 1, right]$ 中查找。 + - 如果能吃完,说明 $k$ 还可以继续减小,则继续在区间 $[left, mid]$ 中查找。 +- 当 $left == right$ 时跳出循环,返回 $left$。 + +### 思路 1:代码 ```python class Solution: @@ -49,3 +73,8 @@ class Solution: return left ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times \log max(piles))$,$n$ 表示数组 $piles$ 中的元素个数。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/0977. \346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md" "b/Solutions/0977. \346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md" index 1909151a..3de0a2da 100644 --- "a/Solutions/0977. \346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md" +++ "b/Solutions/0977. \346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md" @@ -9,42 +9,56 @@ ## 题目大意 -**描述**:给你一个按「非递减顺序」排序的整数数组 `nums`。 +**描述**:给定一个按「非递减顺序」排序的整数数组 $nums$。 **要求**:返回「每个数字的平方」组成的新数组,要求也按「非递减顺序」排序。 -## 解题思路 +**说明**: -### 思路 1:双指针 +- 要求使用时间复杂度为 $O(n)$ 的算法解决本问题。 +- $1 \le nums.length \le 10^4$。 +- $-10^4 \le nums[i] \le 10^4$。 +- $nums$ 已按非递减顺序排序。 -原数组是按「非递减顺序」排序的,可能会存在负数元素。但是无论是否存在负数,数字的平方最大值一定在原数组的两端。题目要求返回的新数组也要按照「非递减顺序」排序。那么,我们可以利用双指针,从两端向中间移动,然后不断将数的平方最大值填入数组。具体做法如下: +**示例**: -- 使用两个指针 `left`、`right`。`left` 指向数组第一个元素位置,`right` 指向数组最后一个元素位置。再定义 `index = len(nums) - 1` 作为答案数组填入顺序的索引值。`res` 作为答案数组。 +- 示例 1: -- 比较 `nums[left]` 与 `nums[right]` 的绝对值大小。大的就是平方最大的的那个数。 +```python +输入:nums = [-4,-1,0,3,10] +输出:[0,1,9,16,100] +解释:平方后,数组变为 [16,1,0,9,100] +排序后,数组变为 [0,1,9,16,100] +``` - - 如果 `abs(nums[right])` 更大,则将其填入答案数组对应位置,并令 `right -= 1`。 +- 示例 2: + +```python +输入:nums = [-7,-3,2,3,11] +输出:[4,9,9,49,121] +``` - - 如果 `abs(nums[left])` 更大,则将其填入答案数组对应位置,并令 `left += 1`。 +## 解题思路 - - 令 `index -= 1`。 +### 思路 1:对撞指针 -- 直到 `left == right`,最后将 `nums[left]` 填入答案数组对应位置。 +原数组是按「非递减顺序」排序的,可能会存在负数元素。但是无论是否存在负数,数字的平方最大值一定在原数组的两端。题目要求返回的新数组也要按照「非递减顺序」排序。那么,我们可以利用双指针,从两端向中间移动,然后不断将数的平方最大值填入数组。具体做法如下: -返回答案数组 `res`。 +- 使用两个指针 $left$、$right$。$left$ 指向数组第一个元素位置,$right$ 指向数组最后一个元素位置。再定义 $index = len(nums) - 1$ 作为答案数组填入顺序的索引值。$res$ 作为答案数组。 -## 思路 2:排序算法 +- 比较 $nums[left]$ 与 $nums[right]$ 的绝对值大小。大的就是平方最大的的那个数。 -可以通过各种排序算法来对平方后的数组进行排序。以快速排序为例,具体步骤如下: + - 如果 $abs(nums[right])$ 更大,则将其填入答案数组对应位置,并令 `right -= 1`。 -1. 遍历数组,将数组中各个元素变为平方项。 -2. 从数组中找到一个基准数。 -3. 然后将数组中比基准数大的元素移动到基准数右侧,比他小的元素移动到基准数左侧,从而把数组拆分为左右两个部分。 -4. 再对左右两个部分分别重复第 2、3 步,直到各个部分只有一个数,则排序结束。 + - 如果 $abs(nums[left])$ 更大,则将其填入答案数组对应位置,并令 `left += 1`。 -## 代码 + - 令 $index -= 1$。 -- 双指针: +- 直到 $left == right$,最后将 $nums[left]$ 填入答案数组对应位置。 + +返回答案数组 $res$。 + +### 思路 1:代码 ```python class Solution: @@ -67,7 +81,21 @@ class Solution: return res ``` -- 排序算法 +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $nums$ 中的元素数量。 +- **空间复杂度**:$O(1)$,不考虑最终返回值的空间占用。 + +### 思路 2:排序算法 + +可以通过各种排序算法来对平方后的数组进行排序。以快速排序为例,具体步骤如下: + +1. 遍历数组,将数组中各个元素变为平方项。 +2. 从数组中找到一个基准数。 +3. 然后将数组中比基准数大的元素移动到基准数右侧,比他小的元素移动到基准数左侧,从而把数组拆分为左右两个部分。 +4. 再对左右两个部分分别重复第 2、3 步,直到各个部分只有一个数,则排序结束。 + +### 思路 2:代码 ```python import random @@ -104,3 +132,8 @@ class Solution: return self.quickSort(nums, 0, len(nums) - 1) ``` +### 思路 2:复杂度分析 + +- **时间复杂度**:$O(n \log n)$,其中 $n$ 为数组 $nums$ 中的元素数量。 +- **空间复杂度**:$O(\log n)$。 + diff --git "a/Solutions/1099. \345\260\217\344\272\216 K \347\232\204\344\270\244\346\225\260\344\271\213\345\222\214.md" "b/Solutions/1099. \345\260\217\344\272\216 K \347\232\204\344\270\244\346\225\260\344\271\213\345\222\214.md" index b074577f..73aa5eb7 100644 --- "a/Solutions/1099. \345\260\217\344\272\216 K \347\232\204\344\270\244\346\225\260\344\271\213\345\222\214.md" +++ "b/Solutions/1099. \345\260\217\344\272\216 K \347\232\204\344\270\244\346\225\260\344\271\213\345\222\214.md" @@ -9,22 +9,48 @@ ## 题目大意 -给你一个整数数组 `nums` 和整数 `k`。 +**描述**:给定一个整数数组 $nums$ 和整数 $k$。 -要求:返回最大和 `sum`,满足存在 `i < j` 使得 `nums[i] + nums[j] = sum` 且 `sum < k`。如果没有满足此等式的 `i`, `j` 存在,则返回 `-1`。 +**要求**:返回最大和 $sum$,满足存在 $i < j$ 使得 $nums[i] + nums[j] = sum$ 且 $sum < k$。如果没有满足此等式的 $i$, $j$ 存在,则返回 $-1$。 + +**说明**: + +- $1 \le nums.length \le 100$。 +- $1 \le nums[i] \le 1000$。 +- $1 \le k \le 2000$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [34,23,1,24,75,33,54,8], k = 60 +输出:58 +解释:34 和 24 相加得到 58,58 小于 60,满足题意。 +``` + +- 示例 2: + +```python +输入:nums = [10,20,30], k = 15 +输出:-1 +解释:我们无法找到和小于 15 的两个元素。 +``` ## 解题思路 +### 思路 1:对撞指针 + 常规暴力枚举时间复杂度为 $O(n^2)$。可以通过双指针降低时间复杂度。具体做法如下: -- 先对数组进行排序(时间复杂度为 $O(n \log n$),使用 `res` 记录答案,初始赋值为最小值 `float('-inf')`。 -- 使用两个指针 `left`、`right`。`left` 指向第 `0` 个元素位置,`right` 指向数组的最后一个元素位置。 -- 计算 `nums[left] + nums[right]`,与 `k` 进行比较。 - - 如果 `nums[left] + nums[right] >= k`,则将 `right` 左移,继续查找。 - - 如果 `nums[left] + nums[rigth] < k`,则将 `left` 右移,并更新答案值。 -- 当 `left == right` 时,区间搜索完毕,判断 `res` 是否等于 `fload('-inf')`,如果等于,则返回 `-1`,否则返回 `res`。 +- 先对数组进行排序(时间复杂度为 $O(n \log n$),使用 $res$ 记录答案,初始赋值为最小值 `float('-inf')`。 +- 使用两个指针 $left$、$right$。$left$ 指向第 $0$ 个元素位置,$right$ 指向数组的最后一个元素位置。 +- 计算 $nums[left] + nums[right]$,与 $k$ 进行比较。 + - 如果 $nums[left] + nums[right] \ge k$,则将 $right$ 左移,继续查找。 + - 如果 $nums[left] + nums[rigth] < k$,则将 $left$ 右移,并更新答案值。 +- 当 $left == right$ 时,区间搜索完毕,判断 $res$ 是否等于 `float('-inf')`,如果等于,则返回 $-1$,否则返回 $res$。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -44,3 +70,8 @@ class Solution: return res if res != float('-inf') else -1 ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$,其中 $n$ 为数组中元素的个数。 +- **空间复杂度**:$O(\log n)$,排序需要 $\log n$ 的栈空间。 + diff --git "a/Solutions/1482. \345\210\266\344\275\234 m \346\235\237\350\212\261\346\211\200\351\234\200\347\232\204\346\234\200\345\260\221\345\244\251\346\225\260.md" "b/Solutions/1482. \345\210\266\344\275\234 m \346\235\237\350\212\261\346\211\200\351\234\200\347\232\204\346\234\200\345\260\221\345\244\251\346\225\260.md" index 78ead098..cc8c9e5d 100644 --- "a/Solutions/1482. \345\210\266\344\275\234 m \346\235\237\350\212\261\346\211\200\351\234\200\347\232\204\346\234\200\345\260\221\345\244\251\346\225\260.md" +++ "b/Solutions/1482. \345\210\266\344\275\234 m \346\235\237\350\212\261\346\211\200\351\234\200\347\232\204\346\234\200\345\260\221\345\244\251\346\225\260.md" @@ -9,40 +9,72 @@ ## 题目大意 -给定一个整数数组 `bloomDay`,以及两个整数 `m` 和 `k`。`bloomDay` 代表花朵盛开的时间,`bloomDay[i]` 表示第 `i` 朵花的盛开时间。盛开后就可以用于一束花中。 +**描述**:给定一个整数数组 $bloomDay$,以及两个整数 $m$ 和 $k$。$bloomDay$ 代表花朵盛开的时间,$bloomDay[i]$ 表示第 $i$ 朵花的盛开时间。盛开后就可以用于一束花中。 -现在需要制作 `m` 束花。制作花束时,需要使用花园中相邻的 `k` 朵花 。 +现在需要制作 $m$ 束花。制作花束时,需要使用花园中相邻的 $k$ 朵花 。 -要求:返回从花园中摘 `m` 束花需要等待的最少的天数。如果不能摘到 `m` 束花则返回 `-1`。 +**要求**:返回从花园中摘 $m$ 束花需要等待的最少的天数。如果不能摘到 $m$ 束花则返回 $-1$。 + +**说明**: + +- $bloomDay.length == n$。 +- $1 \le n \le 10^5$。 +- $1 \le bloomDay[i] \le 10^9$。 +- $1 \le m \le 10^6$。 +- $1 \le k \le n$。 + +**示例**: + +- 示例 1: + +```python +输入:bloomDay = [1,10,3,10,2], m = 3, k = 1 +输出:3 +解释:让我们一起观察这三天的花开过程,x 表示花开,而 _ 表示花还未开。 +现在需要制作 3 束花,每束只需要 1 朵。 +1 天后:[x, _, _, _, _] // 只能制作 1 束花 +2 天后:[x, _, _, _, x] // 只能制作 2 束花 +3 天后:[x, _, x, _, x] // 可以制作 3 束花,答案为 3 +``` + +- 示例 2: + +```python +输入:bloomDay = [1,10,3,10,2], m = 3, k = 2 +输出:-1 +解释:要制作 3 束花,每束需要 2 朵花,也就是一共需要 6 朵花。而花园中只有 5 朵花,无法满足制作要求,返回 -1。 +``` ## 解题思路 +### 思路 1:二分查找算法 + 这道题跟「[0875. 爱吃香蕉的珂珂](https://leetcode.cn/problems/koko-eating-bananas/)」、「[1011. 在 D 天内送达包裹的能力](https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/)」有点相似。 根据题目可知: -- 制作花束最少使用时间跟花朵开花最短时间有关系,即 `min(bloomDay)`。 -- 制作花束最多使用时间跟花朵开花最长时间有关系,即 `max(bloomDay)`。 -- 则制作花束所需要的天数就变成了一个区间 `[min(bloomDay), max(bloomDay)]`。 +- 制作花束最少使用时间跟花朵开花最短时间有关系,即 $min(bloomDay)$。 +- 制作花束最多使用时间跟花朵开花最长时间有关系,即 $max(bloomDay)$。 +- 则制作花束所需要的天数就变成了一个区间 $[min(bloomDay), max(bloomDay)]$。 -那么,我们就可以根据这个区间,利用二分查找算法找到一个符合题意的最少天数。而判断某个天数下能否摘到 `m` 束花则可以写个方法判断。具体步骤如下: +那么,我们就可以根据这个区间,利用二分查找算法找到一个符合题意的最少天数。而判断某个天数下能否摘到 $m$ 束花则可以写个方法判断。具体步骤如下: -- 遍历数组 `bloomDay`。 - - 如果 `bloomDay[i]` 小于等于天数 `days`。就将花朵数量 + 1。 - - 当能摘的花朵数等于 `k` 时,能摘的花束数目 + 1,花朵数量置为 `0`。 - - 如果 `bloomDay[i]` 大于天数 `days`。就将花朵数置为 `0`。 -- 最后判断能摘的花束数目是否大于等于 `m`。 +- 遍历数组 $bloomDay$。 + - 如果 $bloomDay[i] \le days$。就将花朵数量加 $1$。 + - 当能摘的花朵数等于 $k$ 时,能摘的花束数目加 $1$,花朵数量置为 $0$。 + - 如果 $bloomDay[i] > days$。就将花朵数置为 $0$。 +- 最后判断能摘的花束数目是否大于等于 $m$。 整个算法的步骤如下: -- 如果 `m * k` 大于 `len(bloomDay)`,说明无法满足要求,直接返回 `-1`。 -- 使用两个指针 `left`、`right`。令 `left` 指向 `min(bloomDay)`,`right` 指向 `max(bloomDay)`。代表待查找区间为 `[left, right]`。 -- 取两个节点中心位置 `mid`,判断是否能在 `mid` 天制作 `m` 束花。 - - 如果不能,则将区间 `[left, mid]` 排除掉,继续在区间 `[mid + 1, right]` 中查找。 - - 如果能,说明天数还可以继续减少,则继续在区间 `[left, mid]` 中查找。 -- 当 `left == right` 时跳出循环,返回 `left`。 +- 如果 $m \times k > len(bloomDay)$,说明无法满足要求,直接返回 $-1$。 +- 使用两个指针 $left$、$right$。令 $left$ 指向 $min(bloomDay)$,$right$ 指向 $max(bloomDay)$。代表待查找区间为 $[left, right]$。 +- 取两个节点中心位置 $mid$,判断是否能在 $mid$ 天制作 $m$ 束花。 + - 如果不能,则将区间 $[left, mid]$ 排除掉,继续在区间 $[mid + 1, right]$ 中查找。 + - 如果能,说明天数还可以继续减少,则继续在区间 $[left, mid]$ 中查找。 +- 当 $left == right$ 时跳出循环,返回 $left$。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -75,6 +107,11 @@ class Solution: return left ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times \log (max(bloomDay) - min(bloomDay)))$。 +- **空间复杂度**:$O(1)$。 + ## 参考资料 - 【题解】[【赤小豆】为什么是二分法,思路及模板 python - 制作 m 束花所需的最少天数 - 力扣(LeetCode)](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/solution/chi-xiao-dou-python-wei-shi-yao-shi-er-f-24p7/) diff --git "a/Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" "b/Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" index ca2b2665..6cd03adf 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" @@ -9,19 +9,36 @@ ## 题目大意 -给定一个整数数组 `nums`。 +**描述**:给定一个整数数组 $nums$。 -要求:将奇数元素位于数组的前半部分,偶数元素位于数组的后半部分。 +**要求**:将奇数元素位于数组的前半部分,偶数元素位于数组的后半部分。 + +**说明**: + +- $0 \le nums.length \le 50000$。 +- $0 \le nums[i] \le 10000$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [1,2,3,4,5] +输出:[1,3,5,2,4] +解释:为正确答案之一 +``` ## 解题思路 -定义快慢指针 `slow`、`fast`,开始时都指向 `0`。 +### 思路 1:快慢指针 + +定义快慢指针 $slow$、$fast$,开始时都指向 $0$。 -- `fast` 向前搜索奇数位置,`slow` 指向下一个奇数应当存放的位置。 -- `fast` 不断进行右移,当遇到奇数时,将该奇数与 `slow` 指向的元素进行交换,并将 `slow` 进行右移。 -- 重复上面操作,直到 `fast` 指向数组末尾。 +- $fast$ 向前搜索奇数位置,$slow$ 指向下一个奇数应当存放的位置。 +- $fast$ 不断进行右移,当遇到奇数时,将该奇数与 $slow$ 指向的元素进行交换,并将 $slow$ 进行右移。 +- 重复上面操作,直到 $fast$ 指向数组末尾。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -36,3 +53,8 @@ class Solution: return nums ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $nums$ 中的元素个数。 +- **空间复杂度**:$O(1)$。 + From 5317114d02376f1032f9fc24b427d8e9c7d10e84 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 2 Jan 2024 14:48:00 +0800 Subject: [PATCH 044/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...03\345\255\220\345\272\217\345\210\227.md" | 58 ++++++++++++++----- ...00\351\225\277\345\261\261\350\204\211.md" | 52 ++++++++++++++--- ...01\345\255\220\346\225\260\347\273\204.md" | 53 +++++++++++++---- ...46\346\243\200\346\237\245\345\231\250.md" | 57 ++++++++++++++++++ 4 files changed, 185 insertions(+), 35 deletions(-) create mode 100644 "Solutions/1051. \351\253\230\345\272\246\346\243\200\346\237\245\345\231\250.md" diff --git "a/Solutions/0334. \351\200\222\345\242\236\347\232\204\344\270\211\345\205\203\345\255\220\345\272\217\345\210\227.md" "b/Solutions/0334. \351\200\222\345\242\236\347\232\204\344\270\211\345\205\203\345\255\220\345\272\217\345\210\227.md" index 26c4cfbb..86f080b1 100644 --- "a/Solutions/0334. \351\200\222\345\242\236\347\232\204\344\270\211\345\205\203\345\255\220\345\272\217\345\210\227.md" +++ "b/Solutions/0334. \351\200\222\345\242\236\347\232\204\344\270\211\345\205\203\345\255\220\345\272\217\345\210\227.md" @@ -9,35 +9,60 @@ ## 题目大意 -给定一个整数数组 `nums`。 +**描述**:给定一个整数数组 $nums$。 -要求:判断数组中是否存在长度为 3 的递增子序列。要求算法时间复杂度为 $O(n)$、空间复杂度为 $O(1)$。 +**要求**:判断数组中是否存在长度为 3 的递增子序列。 -- 长度为 3 的递增子序列:存在这样的三元组下标 (`i`, `j`, `k`) 且满足 `i < j < k` ,使得 `nums[i] < nums[j] < nums[k]`。 +**说明**: + +- 要求算法时间复杂度为 $O(n)$、空间复杂度为 $O(1)$。 +- **长度为 $3$ 的递增子序列**:存在这样的三元组下标 ($i$, $j$, $k$) 且满足 $i < j < k$ ,使得 $nums[i] < nums[j] < nums[k]$。 +- $1 \le nums.length \le 5 \times 10^5$。 +- $-2^{31} \le nums[i] \le 2^{31} - 1$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [1,2,3,4,5] +输出:true +解释:任何 i < j < k 的三元组都满足题意 +``` + +- 示例 2: + +```python +输入:nums = [5,4,3,2,1] +输出:false +解释:不存在满足题意的三元组 +``` ## 解题思路 +### 思路 1:快慢指针 + 常规方法是三重 `for` 循环遍历三个数,但是时间复杂度为 $O(n^3)$,肯定会超时的。 那么如何才能只进行一次遍历,就找到长度为 3 的递增子序列呢? -假设长度为 3 的递增子序列元素为 `a`、`b`、`c`,`a < b < c`。 +假设长度为 3 的递增子序列元素为 $a$、$b$、$c$,$a < b < c$。 -先来考虑 `a` 和 `b`。如果我们要使得一个数组 `i < j`,并且 `nums[i] < nums[j]`。那么应该使得 `a` 尽可能的小,这样子我们下一个数字 `b` 才可以尽可能地满足条件。 +先来考虑 $a$ 和 $b$。如果我们要使得一个数组 $i < j$,并且 $nums[i] < nums[j]$。那么应该使得 $a$ 尽可能的小,这样子我们下一个数字 $b$ 才可以尽可能地满足条件。 -同样对于 `b` 和 `c`,也应该使得 `b` 尽可能的小,下一个数字 `c` 才可以尽可能的满足条件。 +同样对于 $b$ 和 $c$,也应该使得 $b$ 尽可能的小,下一个数字 $c$ 才可以尽可能的满足条件。 -所以,我们的目的是:在 `a < b` 的前提下,保证 a 尽可能小。在 `b < c` 的条件下,保证 `b` 尽可能小。 +所以,我们的目的是:在 $a < b$ 的前提下,保证 a 尽可能小。在 $b < c$ 的条件下,保证 $b$ 尽可能小。 -我们可以使用两个数 `a`、`b` 指向无穷大。遍历数组: +我们可以使用两个数 $a$、$b$ 指向无穷大。遍历数组: -- 如果当前数字小于等于 `a` ,则更新 `a = num`; -- 如果当前数字大于等于 `a`,则说明当前数满足 `num > a`,则判断: - - 如果 `num` 小于等于 `b`,则更新 `b = num`; - - 如果 `num` 大于 `b`,则说明找到了长度为 3 的递增子序列,直接输出 `True`。 -- 如果遍历完仍未找到,则输出 `False`。 +- 如果当前数字小于等于 $a$ ,则更新 `a = num`; +- 如果当前数字大于等于 $a$,则说明当前数满足 $num > a$,则判断: + - 如果 $num \le b$,则更新 `b = num`; + - 如果 $num > b$,则说明找到了长度为 3 的递增子序列,直接输出 $True$。 +- 如果遍历完仍未找到,则输出 $False$。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -54,3 +79,8 @@ class Solution: return False ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/0845. \346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\351\225\277\345\261\261\350\204\211.md" "b/Solutions/0845. \346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\351\225\277\345\261\261\350\204\211.md" index 52d618b8..72b21a62 100644 --- "a/Solutions/0845. \346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\351\225\277\345\261\261\350\204\211.md" +++ "b/Solutions/0845. \346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\351\225\277\345\261\261\350\204\211.md" @@ -9,21 +9,50 @@ ## 题目大意 -给定一个整数数组 `arr`。 +**描述**:给定一个整数数组 $arr$。 -要求:返回最长「山脉」长度。如果不含有 「山脉」 则返回 0。 +**要求**:返回最长山脉子数组的长度。如果不存在山脉子数组,返回 $0$。 -- 山脉:数组`arr` 中满足 `arr[i - a] < ... < arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[i + b]` 的连续子数组。 +**说明**: + +- **山脉数组**:符合下列属性的数组 $arr$ 称为山脉数组。 + - $arr.length \ge 3$。 + - 存在下标 $i(0 < i < arr.length - 1)$ 满足: + - $arr[0] < arr[1] < … < arr[i]$ + - $arr[i] > arr[i + 1] > … > arr[arr.length - 1]$ + +- $1 \le arr.length \le 10^4$。 +- $0 \le arr[i] \le 10^4$。 + +**示例**: + +- 示例 1: + +```python +输入:arr = [2,1,4,7,3,2,5] +输出:5 +解释:最长的山脉子数组是 [1,4,7,3,2],长度为 5。 +``` + +- 示例 2: + +```python +输入:arr = [2,2,2] +输出:0 +解释:不存在山脉子数组。 +``` ## 解题思路 -- 使用变量 `ans` 保存最长山脉长度。 -- 遍历数组,假定当前节点为山峰。 -- 使用双指针 `left`、`right` 分别向左、向右查找山脉的长度。 -- 如果当前山脉的长度比最长山脉长度更长,则更新最长山脉长度。 -- 最后输出 `ans`。 +### 思路 1:快慢指针 -## 代码 +1. 使用变量 $ans$ 保存最长山脉长度。 +2. 遍历数组,假定当前节点为山峰。 +3. 使用双指针 $left$、$right$ 分别向左、向右查找山脉的长度。 +4. 如果当前山脉的长度比最长山脉长度更长,则更新最长山脉长度。 +5. 最后输出 $ans$。 + +### 思路 1:代码 ```python class Solution: @@ -44,3 +73,8 @@ class Solution: return res ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $arr$ 中的元素数量。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/0978. \346\234\200\351\225\277\346\271\215\346\265\201\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0978. \346\234\200\351\225\277\346\271\215\346\265\201\345\255\220\346\225\260\347\273\204.md" index a75c6e35..ee68e168 100644 --- "a/Solutions/0978. \346\234\200\351\225\277\346\271\215\346\265\201\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0978. \346\234\200\351\225\277\346\271\215\346\265\201\345\255\220\346\225\260\347\273\204.md" @@ -9,26 +9,50 @@ ## 题目大意 -给定一个数组 `arr`。当 `arr` 的子数组 `arr[i]`,`arr[i + 1]`,`...`, `arr[j]` 满足下列条件时,我们称其为湍流子数组: +**描述**:给定一个数组 $arr$。当 $arr$ 的子数组 $arr[i]$,$arr[i + 1]$,$...$, $arr[j]$ 满足下列条件时,我们称其为湍流子数组: -- 若 `i <= k < j`,当 `k` 为奇数时, `arr[k] > arr[k + 1]`,且当 `k` 为偶数时,`arr[k] < arr[k + 1]`; -- 或若 `i <= k < j`,当 `k` 为偶数时,`arr[k] > arr[k + 1]` ,且当 `k` 为奇数时,`arr[k] < arr[k + 1]`。 +- 如果 $i \le k < j$,当 $k$ 为奇数时, $arr[k] > arr[k + 1]$,且当 $k$ 为偶数时,$arr[k] < arr[k + 1]$; +- 或如果 $i \le k < j$,当 $k$ 为偶数时,$arr[k] > arr[k + 1]$ ,且当 $k$ 为奇数时,$arr[k] < arr[k + 1]$。 - 也就是说,如果比较符号在子数组中的每个相邻元素对之间翻转,则该子数组是湍流子数组。 -要求:返回给定数组 `arr` 的最大湍流子数组的长度。 +**要求**:返回给定数组 $arr$ 的最大湍流子数组的长度。 + +**说明**: + +- $1 \le arr.length \le 4 \times 10^4$。 +- $0 \le arr[i] \le 10^9$。 + +**示例**: + +- 示例 1: + +```python +输入:arr = [9,4,2,10,7,8,8,1,9] +输出:5 +解释:arr[1] > arr[2] < arr[3] > arr[4] < arr[5] +``` + +- 示例 2: + +```python +输入:arr = [4,8,12,16] +输出:2 +``` ## 解题思路 -湍流子数组实际上像波浪一样,比如 `arr[i - 2] > arr[i - 1] < arr[i] > arr[i + 1] < arr[i + 2]`。所以我们可以使用双指针的做法。具体做法如下: +### 思路 1:快慢指针 -- 使用两个指针 `left`、`right`。`left` 指向湍流子数组的左端,`right` 指向湍流子数组的右端。 -- 如果 `arr[right - 1] == arr[right]`,则更新 `left = right`,重新开始计算最长湍流子数组大小。 -- 如果 `arr[right - 2] < arr[right - 1] < arr[right]`,此时为递增数组,则 `left` 从 `right - 1` 开始重新计算最长湍流子数组大小。 -- 如果 `arr[right - 2] > arr[right - 1] > arr[right]`,此时为递减数组,则 `left` 从 `right - 1` 开始重新计算最长湍流子数组大小。 -- 其他情况(即 `arr[right - 2] < arr[right - 1] > arr[right]` 或 `arr[right - 2] > arr[right - 1] < arr[right]`)时,不用更新 `left`值。 -- 更新最大湍流子数组的长度,并向右移动 `right`。直到 `right >= len(arr)` 时,返回答案 `ans`。 +湍流子数组实际上像波浪一样,比如 $arr[i - 2] > arr[i - 1] < arr[i] > arr[i + 1] < arr[i + 2]$。所以我们可以使用双指针的做法。具体做法如下: -## 代码 +- 使用两个指针 $left$、$right$。$left$ 指向湍流子数组的左端,$right$ 指向湍流子数组的右端。 +- 如果 $arr[right - 1] == arr[right]$,则更新 `left = right`,重新开始计算最长湍流子数组大小。 +- 如果 $arr[right - 2] < arr[right - 1] < arr[right]$,此时为递增数组,则 $left$ 从 $right - 1$ 开始重新计算最长湍流子数组大小。 +- 如果 $arr[right - 2] > arr[right - 1] > arr[right]$,此时为递减数组,则 $left$ 从 $right - 1$ 开始重新计算最长湍流子数组大小。 +- 其他情况(即 $arr[right - 2] < arr[right - 1] > arr[right]$ 或 $arr[right - 2] > arr[right - 1] < arr[right]$)时,不用更新 $left$值。 +- 更新最大湍流子数组的长度,并向右移动 $right$。直到 $right \ge len(arr)$ 时,返回答案 $ans$。 + +### 思路 1:代码 ```python class Solution: @@ -49,3 +73,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $arr$ 中的元素数量。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1051. \351\253\230\345\272\246\346\243\200\346\237\245\345\231\250.md" "b/Solutions/1051. \351\253\230\345\272\246\346\243\200\346\237\245\345\231\250.md" new file mode 100644 index 00000000..40528871 --- /dev/null +++ "b/Solutions/1051. \351\253\230\345\272\246\346\243\200\346\237\245\345\231\250.md" @@ -0,0 +1,57 @@ +# [1051. 高度检查器](https://leetcode.cn/problems/height-checker/) + +- 标签:数组、计数排序、排序 +- 难度:简单 + +## 题目链接 + +- [1051. 高度检查器 - 力扣](https://leetcode.cn/problems/height-checker/) + +## 题目大意 + +**描述**: + +**要求**: + +**说明**: + +- + +**示例**: + +- 示例 1: + +```python +``` + +- 示例 2: + +```python +``` + +## 解题思路 + +### 思路 1: + +### 思路 1:代码 + +```Python +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**: +- **空间复杂度**: + +### 思路 2: + +### 思路 2:代码 + +```python +``` + +### 思路 2:复杂度分析 + +- **时间复杂度**: +- **空间复杂度**: + From 298eb25fcba139311d432dee6ad82cdb84c4300e Mon Sep 17 00:00:00 2001 From: ITCharge Date: Wed, 3 Jan 2024 14:29:02 +0800 Subject: [PATCH 045/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...62\347\232\204\346\216\222\345\210\227.md" | 55 +++++++++--- ...04\345\255\227\347\254\246\344\270\262.md" | 86 +++++++++++++------ ...46\345\272\227\350\200\201\346\235\277.md" | 56 +++++++++--- ...27\347\254\246\345\255\220\344\270\262.md" | 39 ++++++++- ...32\350\256\256\346\227\245\347\250\213.md" | 57 +++++++++--- ...00\345\244\247\347\202\271\346\225\260.md" | 59 ++++++++++--- ...00\345\244\247\346\225\260\347\233\256.md" | 52 ++++++++--- 7 files changed, 310 insertions(+), 94 deletions(-) diff --git "a/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" "b/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" index bf3ac0e9..752a1525 100644 --- "a/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" +++ "b/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" @@ -9,26 +9,50 @@ ## 题目大意 -给定两个字符串 `s1` 和 `s2` 。 +**描述**:给定两个字符串 $s1$ 和 $s2$ 。 -要求:判断 `s2` 是否包含 `s1` 的排列。如果包含,返回 `True`;否则,返回 `False`。 +**要求**:判断 $s2$ 是否包含 $s1$ 的排列。如果包含,返回 $True$;否则,返回 $False$。 + +**说明**: + +- $1 \le s1.length, s2.length \le 10^4$。 +- $s1$ 和 $s2$ 仅包含小写字母。 + +**示例**: + +- 示例 1: + +```python +输入:s1 = "ab" s2 = "eidbaooo" +输出:true +解释:s2 包含 s1 的排列之一 ("ba"). +``` + +- 示例 2: + +```python +输入:s1= "ab" s2 = "eidboaoo" +输出:False +``` ## 解题思路 -题目要求判断 `s2` 是否包含 `s1` 的排列,则 `s2` 的子串长度等于 `s1` 的长度。我们可以维护一个长度为字符串 `s1` 长度的固定长度的滑动窗口。 +### 思路 1:滑动窗口 -先统计出字符串 `s1` 中各个字符的数量,我们用 `s1_count` 来表示。这个过程可以用字典、数组来实现,也可以直接用 `collections.Counter()` 实现。再统计 `s2` 对应窗口内的字符数量 `window_count`,然后不断向右滑动,然后进行比较。如果对应字符数量相同,则返回 `True`,否则继续滑动。直到末尾时,返回 `False`。整个解题步骤具体如下: +题目要求判断 $s2$ 是否包含 $s1$ 的排列,则 $s2$ 的子串长度等于 $s1$ 的长度。我们可以维护一个长度为字符串 $s1$ 长度的固定长度的滑动窗口。 -1. `s1_count` 用来统计 `s1` 中各个字符数量。`window_count` 用来维护窗口中 `s2` 对应子串的各个字符数量。`window_size` 表示固定窗口的长度,值为 `len(s1)`。 -2. 先统计出 `s1` 中各个字符数量。 -3. `left` 、`right` 都指向序列的第一个元素,即:`left = 0`,`right = 0`。 -4. 向右移动 `right`,先将 `len(s1)` 个元素填入窗口中。 -5. 当窗口元素个数为 `window_size` 时,即:`right - left + 1 >= window_size` 时,判断窗口内各个字符数量 `window_count` 是否等于 `s1 ` 中各个字符数量 `s1_count`。 - 1. 如果等于,直接返回 `True`。 - 2. 如果不等于,则向右移动 `left`,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 `window_size`。 -6. 重复 4 ~ 5 步,直到 `right` 到达数组末尾。返回 `False`。 +先统计出字符串 $s1$ 中各个字符的数量,我们用 $s1\underline{}count$ 来表示。这个过程可以用字典、数组来实现,也可以直接用 `collections.Counter()` 实现。再统计 $s2$ 对应窗口内的字符数量 $window\underline{}count$,然后不断向右滑动,然后进行比较。如果对应字符数量相同,则返回 $True$,否则继续滑动。直到末尾时,返回 $False$。整个解题步骤具体如下: -## 代码 +1. $s1\underline{}count$ 用来统计 $s1$ 中各个字符数量。$window\underline{}count$ 用来维护窗口中 $s2$ 对应子串的各个字符数量。$window\underline{}size$ 表示固定窗口的长度,值为 $len(s1)$。 +2. 先统计出 $s1$ 中各个字符数量。 +3. $left$ 、$right$ 都指向序列的第一个元素,即:`left = 0`,`right = 0`。 +4. 向右移动 $right$,先将 $len(s1)$ 个元素填入窗口中。 +5. 当窗口元素个数为 $window\underline{}size$ 时,即:$right - left + 1 \ge window\underline{}size$ 时,判断窗口内各个字符数量 $window\underline{}count$ 是否等于 $s1 $ 中各个字符数量 $s1\underline{}count$。 + 1. 如果等于,直接返回 $True$。 + 2. 如果不等于,则向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $window\underline{}size$。 +6. 重复 $4 \sim 5$ 步,直到 $right$ 到达数组末尾。返回 $False$。 + +### 思路 1:代码 ```python import collections @@ -54,3 +78,8 @@ class Solution: return False ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n + m + |\sum|)$,其中 $n$、$m$ 分别是字符串 $s1$、$s2$ 的长度,$\sum$ 是字符集,本题中 $|\sum| = 26$。 +- **空间复杂度**:$O(|\sum|)$。 + diff --git "a/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" index d385b6b4..19311b32 100644 --- "a/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" @@ -9,46 +9,47 @@ ## 题目大意 -给定 `s` 和 `t` 两个字符串。字符串中的 `#` 代表退格字符。 +**描述**:给定 $s$ 和 $t$ 两个字符串。字符串中的 `#` 代表退格字符。 -要求:当它们分别被输入到空白的文本编辑器后,判断二者是否相等。如果相等,返回 `True`;否则,返回 `False`。 +**要求**:当它们分别被输入到空白的文本编辑器后,判断二者是否相等。如果相等,返回 $True$;否则,返回 $False$。 -注意:如果对空文本输入退格字符,文本继续为空。 +**说明**: + +- 如果对空文本输入退格字符,文本继续为空。 +- $1 \le s.length, t.length \le 200$。 +- $s$ 和 $t$ 只含有小写字母以及字符 `#`。 + +**示例**: + +- 示例 1: + +```python +输入:s = "ab#c", t = "ad#c" +输出:true +解释:s 和 t 都会变成 "ac"。 +``` + +- 示例 2: + +```python +输入:s = "ab##", t = "c#d#" +输出:true +解释:s 和 t 都会变成 ""。 +``` ## 解题思路 这道题的第一个思路是用栈,第二个思路是使用分离双指针。 -思路一:栈。 +### 思路 1:栈 - 定义一个构建方法,用来将含有退格字符串构建为删除退格的字符串。构建方法如下。 - 使用一个栈存放删除退格的字符串。 - 遍历字符串,如果遇到的字符不是 `#`,则将其插入到栈中。 - 如果遇到的字符是 `#`,且当前栈不为空,则将当前栈顶元素弹出。 -- 分别使用构建方法处理字符串 `s` 和 `t`,如果处理完的字符串 `s` 和 `t` 相等,则返回 `True`,否则返回 `False`。 - -思路二:分离双指针。 +- 分别使用构建方法处理字符串 $s$ 和 $t$,如果处理完的字符串 $s$ 和 $t$ 相等,则返回 $True$,否则返回 $False$。 -由于 `#` 会消除左侧字符,而不会影响右侧字符,所以我们选择从字符串尾端遍历 `s`、`t` 字符串。具体做法如下: - -- 使用分离双指针 `left_1`、`left_2`。`left_1` 指向字符串 `s` 末尾,`left_2` 指向字符串 `t` 末尾。使用 `sign_1`、`sign_2` 标记字符串 `s`、`t` 中当前退格字符个数。 -- 从后到前遍历字符串 `s`、`t`。 - - 先来循环处理字符串 `s` 尾端 `#` 的影响,具体如下: - - 如果当前字符是 `#`,则更新 `s` 当前退格字符个数,即 `sign_1 += 1`。同时将 `left_1` 左移。 - - 如果 `s` 当前退格字符个数大于 `0`,则退格数减一,即 `sign_1 -= 1`。同时将 `left_1` 左移。 - - 如果 `s` 当前为普通字符,则跳出循环。 - - 同理再来处理字符串 `t` 尾端 `#` 的影响,具体如下: - - 如果当前字符是 `#`,则更新 `t` 当前退格字符个数,即 `sign_2 += 1`。同时将 `left_2` 左移。 - - 如果 `t` 当前退格字符个数大于 `0`,则退格数减一,即 `sign_2 -= 1`。同时将 `left_2` 左移。 - - 如果 `t` 当前为普通字符,则跳出循环。 - - 处理完,如果两个字符串为空,则说明匹配,直接返回 `True`。 - - 再先排除长度不匹配的情况,直接返回 `False`。 - - 最后判断 `s[left_1]` 是否等于 `s[left_2]`。不等于则直接返回 `False`,等于则令 `left_1`、`left_2` 左移,继续遍历。 -- 遍历完没有出现不匹配的情况,则返回 `True`。 - -## 代码 - -- 思路一: +### 思路 1:代码 ```python class Solution: @@ -65,7 +66,31 @@ class Solution: return self.build(s) == self.build(t) ``` -- 思路二: +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n + m)$,其中 $n$ 和 $m$ 分别为字符串 $s$、$t$ 的长度。 +- **空间复杂度**:$O(n + m)$。 + +### 思路 2:分离双指针 + +由于 `#` 会消除左侧字符,而不会影响右侧字符,所以我们选择从字符串尾端遍历 $s$、$t$ 字符串。具体做法如下: + +- 使用分离双指针 $left\underline{}1$、$left\underline{}2$。$left\underline{}1$ 指向字符串 $s$ 末尾,$left\underline{}2$ 指向字符串 $t$ 末尾。使用 $sign\underline{}1$、$sign\underline{}2$ 标记字符串 $s$、$t$ 中当前退格字符个数。 +- 从后到前遍历字符串 $s$、$t$。 + - 先来循环处理字符串 $s$ 尾端 `#` 的影响,具体如下: + - 如果当前字符是 `#`,则更新 $s$ 当前退格字符个数,即 `sign_1 += 1`。同时将 $left\underline{}1$ 左移。 + - 如果 $s$ 当前退格字符个数大于 $0$,则退格数减一,即 `sign_1 -= 1`。同时将 $left\underline{}1$ 左移。 + - 如果 $s$ 当前为普通字符,则跳出循环。 + - 同理再来处理字符串 $t$ 尾端 `#` 的影响,具体如下: + - 如果当前字符是 `#`,则更新 $t$ 当前退格字符个数,即 `sign_2 += 1`。同时将 $left\underline{}2$ 左移。 + - 如果 $t$ 当前退格字符个数大于 $0$,则退格数减一,即 `sign_2 -= 1`。同时将 $left\underline{}2$ 左移。 + - 如果 $t$ 当前为普通字符,则跳出循环。 + - 处理完,如果两个字符串为空,则说明匹配,直接返回 $True$。 + - 再先排除长度不匹配的情况,直接返回 $False$。 + - 最后判断 $s[left\underline{}1]$ 是否等于 $s[left\underline{}2]$。不等于则直接返回 $False$,等于则令 $left\underline{}1$、$left\underline{}2$ 左移,继续遍历。 +- 遍历完没有出现不匹配的情况,则返回 $True$。 + +### 思路 2:代码 ```python class Solution: @@ -108,3 +133,8 @@ class Solution: return True ``` +### 思路 2:复杂度分析 + +- **时间复杂度**:$O(n + m)$,其中 $n$ 和 $m$ 分别为字符串 $s$、$t$ 的长度。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" "b/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" index 3b5d86bb..1e1a2072 100644 --- "a/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" +++ "b/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" @@ -9,28 +9,55 @@ ## 题目大意 -书店老板有一家店打算试营业 `len(customers)` 分钟。每一分钟都有一些顾客 `customers[i]` 会进入书店,这些顾客会在这一分钟结束后离开。 +**描述**:书店老板有一家店打算试营业 $len(customers)$ 分钟。每一分钟都有一些顾客 $customers[i]$ 会进入书店,这些顾客会在这一分钟结束后离开。 -在某些时候,书店老板会生气。如果书店老板在第 `i` 分钟生气,则 `grumpy[i] = 1`,如果第 `i` 分钟不生气,则 `grumpy[i] = 0`。当书店老板生气时,这一分钟的顾客会不满意。当书店老板不生气时,这一分钟的顾客是满意的。 +在某些时候,书店老板会生气。如果书店老板在第 $i$ 分钟生气,则 `grumpy[i] = 1`,如果第 $i$ 分钟不生气,则 `grumpy[i] = 0`。当书店老板生气时,这一分钟的顾客会不满意。当书店老板不生气时,这一分钟的顾客是满意的。 -假设老板知道一个秘密技巧,能保证自己连续 `minutes` 分钟不生气,但只能使用一次。 +假设老板知道一个秘密技巧,能保证自己连续 $minutes$ 分钟不生气,但只能使用一次。 -现在给定代表每分钟进入书店的顾客数量的数组 `customes`,和代表老板生气状态的数组 `grumpy`,以及老板保证连续不生气的分钟数 `minutes`。 +现在给定代表每分钟进入书店的顾客数量的数组 $customes$,和代表老板生气状态的数组 $grumpy$,以及老板保证连续不生气的分钟数 $minutes$。 -要求:计算出试营业下来,最多有多少客户能够感到满意。 +**要求**:计算出试营业下来,最多有多少客户能够感到满意。 + +**说明**: + +- $n == customers.length == grumpy.length$。 +- $1 \le minutes \le n \le 2 \times 10^4$。 +- $0 \le customers[i] \le 1000$。 +- $grumpy[i] == 0 \text{ or } 1$。 + +**示例**: + +- 示例 1: + +```python +输入:customers = [1,0,1,2,1,1,7,5], grumpy = [0,1,0,1,0,1,0,1], minutes = 3 +输出:16 +解释:书店老板在最后 3 分钟保持冷静。 +感到满意的最大客户数量 = 1 + 1 + 1 + 1 + 7 + 5 = 16. +``` + +- 示例 2: + +```python +输入:customers = [1], grumpy = [0], minutes = 1 +输出:1 +``` ## 解题思路 -固定长度的滑动窗口题目。我们可以维护一个窗口大小为 `minutes` 的滑动窗口。使用 `window_count` 记录当前窗口内生气的顾客人数。然后滑动求出窗口中最大顾客数,然后累加上老板未生气时的顾客数,就是答案。具体做法如下: +### 思路 1:滑动窗口 -1. `ans` 用来维护答案数目。`window_count` 用来维护窗口中生气的顾客人数。 -2. `left` 、`right` 都指向序列的第一个元素,即:`left = 0`,`right = 0`。 -3. 如果书店老板生气,则将这一分钟的顾客数量加入到 `window_count` 中,然后向右移动 `right`。 -4. 当窗口元素个数大于 `minutes` 时,即:`right - left + 1 > count` 时,如果最左侧边界老板处于生气状态,则向右移动 `left`,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为小于 `minutes`。 -5. 重复 3 ~ 4 步,直到 `right` 到达数组末尾。 +固定长度的滑动窗口题目。我们可以维护一个窗口大小为 $minutes$ 的滑动窗口。使用 $window_count$ 记录当前窗口内生气的顾客人数。然后滑动求出窗口中最大顾客数,然后累加上老板未生气时的顾客数,就是答案。具体做法如下: + +1. $ans$ 用来维护答案数目。$window\underline{}count$ 用来维护窗口中生气的顾客人数。 +2. $left$ 、$right$ 都指向序列的第一个元素,即:`left = 0`,`right = 0`。 +3. 如果书店老板生气,则将这一分钟的顾客数量加入到 $window\underline{}count$ 中,然后向右移动 $right$。 +4. 当窗口元素个数大于 $minutes$ 时,即:$right - left + 1 > count$ 时,如果最左侧边界老板处于生气状态,则向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为小于 $minutes$。 +5. 重复 $3 \sim 4$ 步,直到 $right$ 到达数组末尾。 6. 然后累加上老板未生气时的顾客数,最后输出答案。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -58,3 +85,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $coustomer$、$grumpy$ 的长度。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1100. \351\225\277\345\272\246\344\270\272 K \347\232\204\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\345\255\220\344\270\262.md" "b/Solutions/1100. \351\225\277\345\272\246\344\270\272 K \347\232\204\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\345\255\220\344\270\262.md" index c5385b70..917f3e11 100644 --- "a/Solutions/1100. \351\225\277\345\272\246\344\270\272 K \347\232\204\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\345\255\220\344\270\262.md" +++ "b/Solutions/1100. \351\225\277\345\272\246\344\270\272 K \347\232\204\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\345\255\220\344\270\262.md" @@ -9,12 +9,40 @@ ## 题目大意 -给定一个字符串 `s`。 +**描述**:给定一个字符串 `s`。 -要求:找出所有长度为 `k` 且不含重复字符的子串,返回全部满足要求的子串的数目。 +**要求**:找出所有长度为 `k` 且不含重复字符的子串,返回全部满足要求的子串的数目。 + +**说明**: + +- $1 \le s.length \le 10^4$。 +- $s$ 中的所有字符均为小写英文字母。 +- $1 <= k <= 10^4$。 + +**示例**: + +- 示例 1: + +```python +输入:s = "havefunonleetcode", k = 5 +输出:6 +解释: +这里有 6 个满足题意的子串,分别是:'havef','avefu','vefun','efuno','etcod','tcode'。 +``` + +- 示例 2: + +```python +输入:s = "home", K = 5 +输出:0 +解释: +注意:k 可能会大于 s 的长度。在这种情况下,就无法找到任何长度为 k 的子串。 +``` ## 解题思路 +### 思路 1:滑动窗口 + 固定长度滑动窗口的题目。维护一个长度为 `k` 的滑动窗口。用 `window_count` 来表示窗口内所有字符个数。可以用字典、数组来实现,也可以直接用 `collections.Counter()` 实现。然后不断向右滑动,然后进行比较。如果窗口内字符无重复,则答案数目 + 1。然后继续滑动。直到末尾时。整个解题步骤具体如下: 1. `window_count` 用来维护窗口中 `2` 对应子串的各个字符数量。 @@ -25,7 +53,7 @@ 2. 如果不等于,则向右移动 `left`,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 `k`。 5. 重复 3 ~ 4 步,直到 `right` 到达数组末尾。返回答案。 -## 代码 +### 思路 1:代码 ```python import collections @@ -52,3 +80,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为字符串 $s$ 的长度。 +- **空间复杂度**:$O(|\sum|)$,其中 $\sum$ 是字符集。 + diff --git "a/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" "b/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" index 7ded99f0..94cd6e0a 100644 --- "a/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" +++ "b/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" @@ -9,28 +9,54 @@ ## 题目大意 -给定两位客户的空闲时间表:`slots1` 和 `slots2`,再给定会议的预计持续时间 `duration`。 +**描述**:给定两位客户的空闲时间表:$slots1$ 和 $slots2$,再给定会议的预计持续时间 $duration$。 -其中 `slots1[i] = [start_i, end_i]` 表示空闲时间第从 `start_i` 开始,到 `end_i` 结束。 `slots2` 也是如此。 +其中 $slots1[i] = [start_i, end_i]$ 表示空闲时间第从 $start_i$ 开始,到 $end_i$ 结束。$slots2$ 也是如此。 -要求:为他们安排合适的会议时间,如果有合适的会议时间,则返回该时间的起止时刻。如果没有满足要求的会议时间,就请返回一个 空数组。 +**要求**:为他们安排合适的会议时间,如果有合适的会议时间,则返回该时间的起止时刻。如果没有满足要求的会议时间,就请返回一个 空数组。 -- 会议时间:两位客户都有空参加,并且持续时间能够满足预计时间 `duration` 的最早的时间间隔。 +**说明**: -注意: 题目保证数据有效。同一个人的空闲时间不会出现交叠的情况,也就是说,对于同一个人的两个空闲时间 `[start1, end1]` 和 `[start2, end2]`,要么 `start1 > end2`,要么 `start2 > end1`。 +- **会议时间**:两位客户都有空参加,并且持续时间能够满足预计时间 $duration$ 的最早的时间间隔。 +- 题目保证数据有效。同一个人的空闲时间不会出现交叠的情况,也就是说,对于同一个人的两个空闲时间 $[start1, end1]$ 和 $[start2, end2]$,要么 $start1 > end2$,要么 $start2 > end1$。 +- $1 \le slots1.length, slots2.length \le 10^4$。 +- $slots1[i].length, slots2[i].length == 2$。 +- $slots1[i][0] < slots1[i][1]$。 +- $slots2[i][0] < slots2[i][1]$。 +- $0 \le slots1[i][j], slots2[i][j] \le 10^9$。 +- $1 \le duration \le 10^6$。 + +**示例**: + +- 示例 1: + +```python +输入:slots1 = [[10,50],[60,120],[140,210]], slots2 = [[0,15],[60,70]], duration = 8 +输出:[60,68] +``` + +- 示例 2: + +```python +输入:slots1 = [[10,50],[60,120],[140,210]], slots2 = [[0,15],[60,70]], duration = 12 +输出:[] +``` ## 解题思路 -题目保证了同一个人的空闲时间不会出现交叠。那么可以先直接对两个客户的空间时间表按照开始时间从小到大排序。然后使用分离双指针来遍历两个数组,求出重合部分,并判断重合区间是否大于等于 `duration`。具体做法如下: +### 思路 1:分离双指针 -- 先对两个数组排序。使用两个指针 `left_1`、`left_2`。`left_1` 指向第一个数组开始位置,`left_2` 指向第二个数组开始位置。 -- 遍历两个数组。计算当前两个空闲时间区间的重叠范围。 - - 如果重叠范围大于等于 `duration`,直接返回当前重叠范围开始时间和会议结束时间,即 `[start, start + duration]`,`start` 为重叠范围开始时间。 - - 如果第一个客户的空闲结束时间小于第二个客户的空闲结束时间,则令 `left_1` 右移,即 `left_1 += 1`,继续比较重叠范围。 - - 如果第一个客户的空闲结束时间大于等于第二个客户的空闲结束时间,则令 `left_2` 右移,即 `left_2 += 1`,继续比较重叠范围。 -- 直到 `left_1 == len(slots1)` 或者 `left_2 == len(slots2)` 时跳出循环,返回空数组 `[]`。 +题目保证了同一个人的空闲时间不会出现交叠。那么可以先直接对两个客户的空间时间表按照开始时间从小到大排序。然后使用分离双指针来遍历两个数组,求出重合部分,并判断重合区间是否大于等于 $duration$。具体做法如下: -## 代码 +1. 先对两个数组排序。 +2. 然后使用两个指针 $left\underline{}1$、$left\underline{}2$。$left\underline{}1$ 指向第一个数组开始位置,$left\underline{}2$ 指向第二个数组开始位置。 +3. 遍历两个数组。计算当前两个空闲时间区间的重叠范围。 + 1. 如果重叠范围大于等于 $duration$,直接返回当前重叠范围开始时间和会议结束时间,即 $[start, start + duration]$,$start$ 为重叠范围开始时间。 + 2. 如果第一个客户的空闲结束时间小于第二个客户的空闲结束时间,则令 $left\underline{}1$ 右移,即 `left_1 += 1`,继续比较重叠范围。 + 3. 如果第一个客户的空闲结束时间大于等于第二个客户的空闲结束时间,则令 $left\underline{}2$ 右移,即 `left_2 += 1`,继续比较重叠范围。 +4. 直到 $left\underline{}1 == len(slots1)$ 或者 $left\underline{}2 == len(slots2)$ 时跳出循环,返回空数组 $[]$。 + +### 思路 1:代码 ```python class Solution: @@ -54,3 +80,8 @@ class Solution: return [] ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times \log n + m \times \log m)$,其中 $n$、$m$ 分别为数组 $slots1$、$slots2$ 中的元素个数。 +- **空间复杂度**:$O(\log n + \log m)$。 + diff --git "a/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" "b/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" index 451152d9..84c14cdd 100644 --- "a/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" +++ "b/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" @@ -9,31 +9,57 @@ ## 题目大意 -将卡牌排成一行,给定每张卡片的点数数组 `cardPoints`,其中 `cardPoints[i]` 表示第 `i` 张卡牌对应点数。 +**描述**:将卡牌排成一行,给定每张卡片的点数数组 $cardPoints$,其中 $cardPoints[i]$ 表示第 $i$ 张卡牌对应点数。 -每次行动,可以从行的开头或者末尾拿一张卡牌,最终保证正好拿到了 `k` 张卡牌。所得点数就是你拿到手中的所有卡牌的点数之和。 +每次行动,可以从行的开头或者末尾拿一张卡牌,最终保证正好拿到了 $k$ 张卡牌。所得点数就是你拿到手中的所有卡牌的点数之和。 -现在给定一个整数数组 `cardPoints` 和整数 `k`。 +现在给定一个整数数组 $cardPoints$ 和整数 $k$。 -要求:返回可以获得的最大点数。 +**要求**:返回可以获得的最大点数。 + +**说明**: + +- $1 \le cardPoints.length \le 10^5$。 +- $1 \le cardPoints[i] \le 10^4$ +- $1 \le k \le cardPoints.length$。 + +**示例**: + +- 示例 1: + +```python +输入:cardPoints = [1,2,3,4,5,6,1], k = 3 +输出:12 +解释:第一次行动,不管拿哪张牌,你的点数总是 1 。但是,先拿最右边的卡牌将会最大化你的可获得点数。最优策略是拿右边的三张牌,最终点数为 1 + 6 + 5 = 12。 +``` + +- 示例 2: + +```python +输入:cardPoints = [2,2,2], k = 2 +输出:4 +解释:无论你拿起哪两张卡牌,可获得的点数总是 4。 +``` ## 解题思路 +### 思路 1:滑动窗口 + 可以用固定长度的滑动窗口来做。 -由于只能从开头或末尾位置拿 `k` 张牌,则最后剩下的肯定是连续的 `len(cardPoints) - k` 张牌。要求求出 `k` 张牌可以获得的最大收益,我们可以反向先求出连续 `len(cardPoints) - k` 张牌的最小点数。则答案为 `sum(cardPoints) - min_sum`。维护一个固定长度为 `len(cardPoints) - k` 的滑动窗口,求最小和。具体做法如下: +由于只能从开头或末尾位置拿 $k$ 张牌,则最后剩下的肯定是连续的 $len(cardPoints) - k$ 张牌。要求求出 $k$ 张牌可以获得的最大收益,我们可以反向先求出连续 $len(cardPoints) - k$ 张牌的最小点数。则答案为 $sum(cardPoints) - min\underline{}sum$。维护一个固定长度为 $len(cardPoints) - k$ 的滑动窗口,求最小和。具体做法如下: -1. `window_sum` 用来维护窗口内的元素和,初始值为 `0`。`min_sum` 用来维护滑动窗口元素的最小和。初始值为 `sum(cardPoints)`。滑动窗口的长度为 `window_size`,值为 `len(cardPoints) - k`。 -2. 使用双指针 `left`、`right`。`left` 、`right` 都指向序列的第一个元素,即:`left = 0`,`right = 0`。 -3. 向右移动 `right`,先将 `window_size` 个元素填入窗口中。 -4. 当窗口元素个数为 `window_size` 时,即:`right - left + 1 >= window_size` 时,计算窗口内的元素和,并维护子数组最小和 `min_sum`。 -5. 然后向右移动 `left`,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 `k`。 -6. 重复 4 ~ 5 步,直到 `right` 到达数组末尾。 -6. 最后输出 `sum(cardPoints) - min_sum` 即为答案。 +1. $window\underline{}sum$ 用来维护窗口内的元素和,初始值为 $0$。$min\underline{}sum$ 用来维护滑动窗口元素的最小和。初始值为 $sum(cardPoints)$。滑动窗口的长度为 $window\underline{}size$,值为 $len(cardPoints) - k$。 +2. 使用双指针 $left$、$right$。$left$ 、$right$ 都指向序列的第一个元素,即:`left = 0`,`right = 0`。 +3. 向右移动 $right$,先将 $window\underline{}size$ 个元素填入窗口中。 +4. 当窗口元素个数为 $window\underline{}size$ 时,即:$right - left + 1 \ge window\underline{}size$ 时,计算窗口内的元素和,并维护子数组最小和 $min\underline{}sum$。 +5. 然后向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $k$。 +6. 重复 4 ~ 5 步,直到 $right$ 到达数组末尾。 +7. 最后输出 $sum(cardPoints) - min\underline{}sum$ 即为答案。 -注意:如果 `window_size` 为 `0` 时需要特殊判断,此时答案为数组和 `sum(cardPoints)`。 +注意:如果 $window\underline{}size$ 为 $0$ 时需要特殊判断,此时答案为数组和 $sum(cardPoints)$。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -60,3 +86,8 @@ class Solution: return cards_sum - min_sum ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $cardPoints$ 中的元素数量。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" "b/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" index 167fba01..ec62fbf1 100644 --- "a/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" +++ "b/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" @@ -9,24 +9,49 @@ ## 题目大意 -给定字符串 `s` 和整数 `k`。 +**描述**:给定字符串 $s$ 和整数 $k$。 -要求:返回字符串 `s` 中长度为 `k` 的单个子字符串中可能包含的最大元音字母数。 +**要求**:返回字符串 $s$ 中长度为 $k$ 的单个子字符串中可能包含的最大元音字母数。 -注意:英文中的元音字母为(`a`, `e`, `i`, `o`, `u`)。 +**说明**: + +- 英文中的元音字母为($a$, $e$, $i$, $o$, $u$)。 +- $1 <= s.length <= 10^5$。 +- $s$ 由小写英文字母组成。 +- $1 <= k <= s.length$。 + +**示例**: + +- 示例 1: + +```python +输入:s = "abciiidef", k = 3 +输出:3 +解释:子字符串 "iii" 包含 3 个元音字母。 +``` + +- 示例 2: + +```python +输入:s = "aeiou", k = 2 +输出:2 +解释:任意长度为 2 的子字符串都包含 2 个元音字母。 +``` ## 解题思路 -固定长度的滑动窗口题目。维护一个长度为 `k` 的窗口,并统计滑动窗口中最大元音字母数。具体做法如下: +### 思路 1:滑动窗口 -1. `ans` 用来维护长度为 `k` 的单个字符串中最大元音字母数。`window_count` 用来维护窗口中元音字母数。集合 `vowel_set` 用来存储元音字母。 -2. `left` 、`right` 都指向字符串 `s` 的第一个元素,即:`left = 0`,`right = 0`。 -3. 判断 `s[right]` 是否在元音字母集合中,如果在则用 `window_count` 进行计数。 -4. 当窗口元素个数为 `k` 时,即:`right - left + 1 >= k` 时,更新 `ans`。然后判断 `s[left]` 是否为元音字母,如果是则 `window_count -= 1`,并向右移动 `left`,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 `k`。 -5. 重复 3 ~ 4 步,直到 `right` 到达数组末尾。 -6. 最后输出 `ans`。 +固定长度的滑动窗口题目。维护一个长度为 $k$ 的窗口,并统计滑动窗口中最大元音字母数。具体做法如下: -## 代码 +1. $ans$ 用来维护长度为 $k$ 的单个字符串中最大元音字母数。$window\underline{}count$ 用来维护窗口中元音字母数。集合 $vowel\underline{}set$ 用来存储元音字母。 +2. $left$ 、$right$ 都指向字符串 $s$ 的第一个元素,即:$left = 0$,$right = 0$。 +3. 判断 $s[right]$ 是否在元音字母集合中,如果在则用 $window\underline{}count$ 进行计数。 +4. 当窗口元素个数为 $k$ 时,即:$right - left + 1 \ge k$ 时,更新 $ans$。然后判断 $s[left]$ 是否为元音字母,如果是则 `window_count -= 1`,并向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $k$。 +5. 重复 $3 \sim 4$ 步,直到 $right$ 到达数组末尾。 +6. 最后输出 $ans$。 + +### 思路 1:代码 ```python class Solution: @@ -50,3 +75,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为字符串 $s$ 的长度。 +- **空间复杂度**:$O(1)$。 + From 67d6e535d1f4a4bcdec457e9ca0cf128b041ec18 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 4 Jan 2024 13:38:22 +0800 Subject: [PATCH 046/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...15\345\274\202\344\275\215\350\257\215.md" | 60 +++++++++++---- ...46\346\243\200\346\237\245\345\231\250.md" | 75 ++++++++++++++++--- ...\346\211\200\346\234\211\347\232\204 1.md" | 60 ++++++++++++--- ...41\345\210\222\350\257\204\344\274\260.md" | 61 +++++++++++---- 4 files changed, 207 insertions(+), 49 deletions(-) diff --git "a/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" "b/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" index 502ac219..f264ab23 100644 --- "a/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" +++ "b/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" @@ -9,26 +9,55 @@ ## 题目大意 -给定两个字符串 `s` 和 `p`。 +**描述**:给定两个字符串 $s$ 和 $p$。 -要求:找到 `s` 中所有 `p` 的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 +**要求**:找到 $s$ 中所有 $p$ 的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 -- 异位词:指由相同字母重排列形成的字符串(包括相同的字符串)。 +**说明**: + +- **异位词**:指由相同字母重排列形成的字符串(包括相同的字符串)。 +- $1 <= s.length, p.length <= 3 * 10^4$。 +- $s$ 和 $p$ 仅包含小写字母。 + +**示例**: + +- 示例 1: + +```python +输入: s = "cbaebabacd", p = "abc" +输出: [0,6] +解释: +起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。 +起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。 +``` + +- 示例 2: + +```python +输入: s = "abab", p = "ab" +输出: [0,1,2] +解释: +起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。 +起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。 +起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。 +``` ## 解题思路 -维护一个固定长度为 `len(p)` 的滑动窗口。于是问题的难点变为了如何判断 `s` 的子串和 `p` 是异位词。可以使用两个字典来分别存储 `s` 的子串中各个字符个数和 `p` 中各个字符个数。如果两个字典对应的键值全相等,则说明 `s` 的子串和 `p` 是异位词。但是这样每一次比较的操作时间复杂度是 $O(n)$,我们可以通过在滑动数组中逐字符比较的方式来减少两个字典之间相互比较的复杂度,并用 `valid` 记录经过验证的字符个数。整个算法步骤如下: +### 思路 1:滑动窗口 -- 使用哈希表 `need` 记录 `p` 中各个字符出现次数。使用字典 `window` 记录 `s` 的子串中各个字符出现的次数。使用数组 `res` 记录答案。使用 `valid` 记录 `s` 的子串中经过验证的字符个数。使用 `window_size` 表示窗口大小,值为 `len(p)`。使用两个指针 `left`、`right`。分别指向滑动窗口的左右边界。 -- 一开始,`left`、`right` 都指向 `0`。 -- 如果 `s[right]` 出现在 `need` 中,将最右侧字符 `s[right]` 加入当前窗口 `window` 中,记录该字符个数。并验证该字符是否和 `need` 中个对应字符个数相等。如果相等则验证的字符个数 +1,即 `valid += 1`。 -- 如果该窗口字符长度大于等于 `window_size` 个,即 `right - left + 1 >= window_size`。则不断右移 `left`,缩小滑动窗口长度。 - - 如果验证字符个数 `valid` 等于窗口长度 `window_size`,则 `s[left, right + 1]` 为 `p` 的异位词,所以将 `left` 加入到答案数组中。 - - 如果`s[left]` 在 `need` 中,则更新窗口中对应字符的个数,同时维护 `valid` 值。 -- 右移 `right`,直到 `right >= len(nums)` 结束。 -- 输出答案数组 `res`。 +维护一个固定长度为 $len(p)$ 的滑动窗口。于是问题的难点变为了如何判断 $s$ 的子串和 $p$ 是异位词。可以使用两个字典来分别存储 $s$ 的子串中各个字符个数和 $p$ 中各个字符个数。如果两个字典对应的键值全相等,则说明 $s$ 的子串和 $p$ 是异位词。但是这样每一次比较的操作时间复杂度是 $O(n)$,我们可以通过在滑动数组中逐字符比较的方式来减少两个字典之间相互比较的复杂度,并用 $valid$ 记录经过验证的字符个数。整个算法步骤如下: -## 代码 +- 使用哈希表 $need$ 记录 $p$ 中各个字符出现次数。使用字典 $window$ 记录 $s$ 的子串中各个字符出现的次数。使用数组 $res$ 记录答案。使用 $valid$ 记录 $s$ 的子串中经过验证的字符个数。使用 $window\underline{}size$ 表示窗口大小,值为 $len(p)$。使用两个指针 $left$、$right$。分别指向滑动窗口的左右边界。 +- 一开始,$left$、$right$ 都指向 $0$。 +- 如果 $s[right]$ 出现在 $need$ 中,将最右侧字符 $s[right]$ 加入当前窗口 $window$ 中,记录该字符个数。并验证该字符是否和 $need$ 中个对应字符个数相等。如果相等则验证的字符个数加 $1$,即 `valid += 1`。 +- 如果该窗口字符长度大于等于 $window\underline{}size$ 个,即 $right - left + 1 \ge window\underline{}size$。则不断右移 $left$,缩小滑动窗口长度。 + - 如果验证字符个数 $valid$ 等于窗口长度 $window\underline{}size$,则 $s[left, right + 1]$ 为 $p$ 的异位词,所以将 $left$ 加入到答案数组中。 + - 如果$s[left]$ 在 $need$ 中,则更新窗口中对应字符的个数,同时维护 $valid$ 值。 +- 右移 $right$,直到 $right \ge len(nums)$ 结束。 +- 输出答案数组 $res$。 + +### 思路 1:代码 ```python class Solution: @@ -60,3 +89,8 @@ class Solution: return res ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n + m + |\sum|)$,其中 $n$、$m$ 分别为字符串 $s$、$p$ 的长度,$\sum$ 为字符集,本题中 $|\sum| = 26$。 +- **空间复杂度**:$|\sum|$。 + diff --git "a/Solutions/1051. \351\253\230\345\272\246\346\243\200\346\237\245\345\231\250.md" "b/Solutions/1051. \351\253\230\345\272\246\346\243\200\346\237\245\345\231\250.md" index 40528871..e0c12fce 100644 --- "a/Solutions/1051. \351\253\230\345\272\246\346\243\200\346\237\245\345\231\250.md" +++ "b/Solutions/1051. \351\253\230\345\272\246\346\243\200\346\237\245\345\231\250.md" @@ -9,49 +9,106 @@ ## 题目大意 -**描述**: +**描述**:学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。 -**要求**: +排序后的高度情况用整数数组 $expected$ 表示,其中 $expected[i]$ 是预计排在这一行中第 $i$ 位的学生的高度(下标从 $0$ 开始)。 + +给定一个整数数组 $heights$ ,表示当前学生站位的高度情况。$heights[i]$ 是这一行中第 $i$ 位学生的高度(下标从 $0$ 开始)。 + +**要求**:返回满足 $heights[i] \ne expected[i]$ 的下标数量 。 **说明**: -- +- $1 \le heights.length \le 100$。 +- $1 \le heights[i] \le 100$。 **示例**: - 示例 1: ```python +输入:heights = [1,1,4,2,1,3] +输出:3 +解释: +高度:[1,1,4,2,1,3] +预期:[1,1,1,2,3,4] +下标 2 、4 、5 处的学生高度不匹配。 ``` - 示例 2: ```python +输入:heights = [5,1,2,3,4] +输出:5 +解释: +高度:[5,1,2,3,4] +预期:[1,2,3,4,5] +所有下标的对应学生高度都不匹配。 ``` ## 解题思路 -### 思路 1: +### 思路 1:排序算法 + +1. 将数组 $heights$ 复制一份,记为 $expected$。 +2. 对数组 $expected$ 进行排序。 +3. 排序之后,对比并统计 $heights[i] \ne expected[i]$ 的下标数量,记为 $ans$。 +4. 返回 $ans$。 ### 思路 1:代码 ```Python +class Solution: + def heightChecker(self, heights: List[int]) -> int: + expected = sorted(heights) + + ans = 0 + for i in range(len(heights)): + if expected[i] != heights[i]: + ans += 1 + return ans ``` ### 思路 1:复杂度分析 -- **时间复杂度**: -- **空间复杂度**: +- **时间复杂度**:$O(n \times \log n)$,其中 $n$ 为数组 $heights$ 的长度。 +- **空间复杂度**:$O(n)$。 + +### 思路 2:计数排序 -### 思路 2: +题目中 $heights[i]$ 的数据范围为 $[1, 100]$,所以我们可以使用计数排序。 ### 思路 2:代码 ```python +class Solution: + def heightChecker(self, heights: List[int]) -> int: + # 待排序数组中最大值元素 heights_max = 100 和最小值元素 heights_min = 1 + heights_min, heights_max = 1, 100 + # 定义计数数组 counts,大小为 最大值元素 - 最小值元素 + 1 + size = heights_max - heights_min + 1 + counts = [0 for _ in range(size)] + + # 统计值为 height 的元素出现的次数 + for height in heights: + counts[height - heights_min] += 1 + + ans = 0 + idx = 0 + # 从小到大遍历 counts 的元素值范围 + for height in range(heights_min, heights_max + 1): + while counts[height - heights_min]: + # 对于每个元素值,判断是否与对应位置上的 heights[idx] 相等 + if heights[idx] != height: + ans += 1 + idx += 1 + counts[height - heights_min] -= 1 + + return ans ``` ### 思路 2:复杂度分析 -- **时间复杂度**: -- **空间复杂度**: +- **时间复杂度**:$O(n + k)$,其中 $n$ 为数组 $heights$ 的长度,$k$ 为数组 $heights$ 的值域范围。 +- **空间复杂度**:$O(k)$。 diff --git "a/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" "b/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" index c75d29e3..df34446e 100644 --- "a/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" +++ "b/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" @@ -9,25 +9,56 @@ ## 题目大意 -给定一个二进制数组 `data`。 +**描述**:给定一个二进制数组 $data$。 -要求:通过交换位置,将数组中任何位置上的 `1` 组合到一起,并返回所有可能中所需的最少交换次数。 +**要求**:通过交换位置,将数组中任何位置上的 $1$ 组合到一起,并返回所有可能中所需的最少交换次数。c + +**说明**: + +- $1 \le data.length \le 10^5$。 +- $data[i] == 0 \text{ or } 1$。 + +**示例**: + +- 示例 1: + +```python +输入: data = [1,0,1,0,1] +输出: 1 +解释: +有三种可能的方法可以把所有的 1 组合在一起: +[1,1,1,0,0],交换 1 次; +[0,1,1,1,0],交换 2 次; +[0,0,1,1,1],交换 1 次。 +所以最少的交换次数为 1。 +``` + +- 示例 2: + +```python +输入:data = [0,0,0,1,0] +输出:0 +解释: +由于数组中只有一个 1,所以不需要交换。 +``` ## 解题思路 -将数组中任何位置上的 `1` 组合到一起,并要求最少的交换次数。也就是说交换之后,某个连续子数组中全是 `1`,数组其他位置全是 `0`。为此,我们可以维护一个固定长度为 `1` 的个数的滑动窗口,找到滑动窗口中 `0` 最少的个数,这样最终交换出去的 `0` 最少,交换次数也最少。 +### 思路 1:滑动窗口 -求最少交换次数,也就是求滑动窗口中最少的 `0` 的个数。具体做法如下: +将数组中任何位置上的 $1$ 组合到一起,并要求最少的交换次数。也就是说交换之后,某个连续子数组中全是 $1$,数组其他位置全是 $0$。为此,我们可以维护一个固定长度为 $1$ 的个数的滑动窗口,找到滑动窗口中 $0$ 最少的个数,这样最终交换出去的 $0$ 最少,交换次数也最少。 -1. 统计 `1` 的个数,并设置为窗口长度 `window_size`。使用 `window_count` 维护窗口中 `0` 的个数。使用 `ans` 维护窗口中最少的 `0` 的个数,也可以叫做最少交换次数。 -2. 如果 `window_size` 为 `0`,则说明不用交换,直接返回 `0`。 -3. 使用两个指针 `left`、`right`。`left` 、`right` 都指向数组的第一个元素,即:`left = 0`,`right = 0`。 -4. 如果 `data[right] == 0`,则更新窗口中 `0` 的个数,即 `window_count += 1`。然后向右移动 `right`。 -5. 当窗口元素个数为 `window_size` 时,即:`right - left + 1 >= window_size` 时,更新窗口中最少的 `0` 的个数。 -6. 然后如果左侧 `data[left] == 0`,则更新窗口中 `0` 的个数,即 `window_count -= 1`。然后向右移动 `left`,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 `window_size`。 -7. 重复 4 ~ 6 步,直到 `right` 到达数组末尾。返回答案 `ans`。 +求最少交换次数,也就是求滑动窗口中最少的 $0$ 的个数。具体做法如下: -## 代码 +1. 统计 $1$ 的个数,并设置为窗口长度 $window\underline{}size$。使用 $window\underline{}count$ 维护窗口中 $0$ 的个数。使用 $ans$ 维护窗口中最少的 $0$ 的个数,也可以叫做最少交换次数。 +2. 如果 $window\underline{}size$ 为 $0$,则说明不用交换,直接返回 $0$。 +3. 使用两个指针 $left$、$right$。$left$、$right$ 都指向数组的第一个元素,即:`left = 0`,`right = 0`。 +4. 如果 $data[right] == 0$,则更新窗口中 $0$ 的个数,即 `window_count += 1`。然后向右移动 $right$。 +5. 当窗口元素个数为 $window\underline{}size$ 时,即:$right - left + 1 \ge window\underline{}size$ 时,更新窗口中最少的 $0$ 的个数。 +6. 然后如果左侧 $data[left] == 0$,则更新窗口中 $0$ 的个数,即 `window_count -= 1`。然后向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $window\underline{}size$。 +7. 重复 4 ~ 6 步,直到 $right$ 到达数组末尾。返回答案 $ans$。 + +### 思路 1:代码 ```python class Solution: @@ -55,3 +86,8 @@ class Solution: return ans if ans != float('inf') else 0 ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $data$ 的长度。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" "b/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" index eeb00762..c1360d71 100644 --- "a/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" +++ "b/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" @@ -9,30 +9,56 @@ ## 题目大意 -好友给自己制定了一份健身计划。想请你帮他评估一下这份计划是否合理。 +**描述**:好友给自己制定了一份健身计划。想请你帮他评估一下这份计划是否合理。 -给定一个数组 `calories`,其中 `calories[i]` 代表好友第 `i` 天需要消耗的卡路里总量。再给定 `lower` 代表较低消耗的卡路里,`upper` 代表较高消耗的卡路里。再给定一个整数 `k`,代表连续 `k` 天。 +给定一个数组 $calories$,其中 $calories[i]$ 代表好友第 $i$ 天需要消耗的卡路里总量。再给定 $lower$ 代表较低消耗的卡路里,$upper$ 代表较高消耗的卡路里。再给定一个整数 $k$,代表连续 $k$ 天。 -- 如果你的好友在这一天以及之后连续 `k` 天内消耗的总卡路里 `T` 小于 `lower`,则这一天的计划相对糟糕,并失去 `1` 分。 -- 如果你的好友在这一天以及之后连续 `k` 天内消耗的总卡路里 `T` 高于 `upper`,则这一天的计划相对优秀,并得到 `1` 分。 -- 如果你的好友在这一天以及之后连续 `k` 天内消耗的总卡路里 `T` 大于等于 `lower`,并且小于等于 `upper`,则这份计划普普通通,分值不做变动。 +- 如果你的好友在这一天以及之后连续 $k$ 天内消耗的总卡路里 $T$ 小于 $lower$,则这一天的计划相对糟糕,并失去 $1$ 分。 +- 如果你的好友在这一天以及之后连续 $k$ 天内消耗的总卡路里 $T$ 高于 $upper$,则这一天的计划相对优秀,并得到 $1$ 分。 +- 如果你的好友在这一天以及之后连续 $k$ 天内消耗的总卡路里 $T$ 大于等于 $lower$,并且小于等于 $upper$,则这份计划普普通通,分值不做变动。 -输出最后评估的得分情况。 +**要求**:输出最后评估的得分情况。 + +**说明**: + +- $1 \le k \le calories.length \le 10^5$。 +- $0 \le calories[i] \le 20000$。 +- $0 \le lower \le upper$。 + +**示例**: + +- 示例 1: + +```python +输入:calories = [1,2,3,4,5], k = 1, lower = 3, upper = 3 +输出:0 +解释:calories[0], calories[1] < lower 而 calories[3], calories[4] > upper, 总分 = 0. +``` + +- 示例 2: + +```python +输入:calories = [3,2], k = 2, lower = 0, upper = 1 +输出:1 +解释:calories[0] + calories[1] > upper, 总分 = 1. +``` ## 解题思路 -固定长度为 `k` 的滑动窗口题目。具体做法如下: +### 思路 1:滑动窗口 -1. `score` 用来维护得分情况,初始值为 `0`。`window_sum` 用来维护窗口中卡路里总量。 -2. `left` 、`right` 都指向数组的第一个元素,即:`left = 0`,`right = 0`。 -3. 向右移动 `right`,先将 `k` 个元素填入窗口中。 -4. 当窗口元素个数为 `k` 时,即:`right - left + 1 >= k` 时,计算窗口内的卡路里总量,并判断和 `upper`、`lower` 的关系。同时维护得分情况。 -5. 然后向右移动 `left`,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 `k`。 -6. 重复 4 ~ 5 步,直到 `right` 到达数组末尾。 +固定长度为 $k$ 的滑动窗口题目。具体做法如下: -最后输出得分情况 `score`。 +1. $score$ 用来维护得分情况,初始值为 $0$。$window\underline{}sum$ 用来维护窗口中卡路里总量。 +2. $left$ 、$right$ 都指向数组的第一个元素,即:`left = 0`,`right = 0`。 +3. 向右移动 $right$,先将 $k$ 个元素填入窗口中。 +4. 当窗口元素个数为 $k$ 时,即:$right - left + 1 \ge k$ 时,计算窗口内的卡路里总量,并判断和 $upper$、$lower$ 的关系。同时维护得分情况。 +5. 然后向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $k$。 +6. 重复 $4 \sim 5$ 步,直到 $right$ 到达数组末尾。 -## 代码 +最后输出得分情况 $score$。 + +### 思路 1:代码 ```python class Solution: @@ -55,3 +81,8 @@ class Solution: return score ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $calories$ 的长度。 +- **空间复杂度**:$O(1)$。 + From a9a7a98ac418724214b3e02e312bfb490862ff0b Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 5 Jan 2024 11:17:36 +0800 Subject: [PATCH 047/158] Update 01.Data-Structures-Algorithms.md --- Contents/00.Introduction/01.Data-Structures-Algorithms.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/00.Introduction/01.Data-Structures-Algorithms.md b/Contents/00.Introduction/01.Data-Structures-Algorithms.md index de771c8d..2f84fc46 100644 --- a/Contents/00.Introduction/01.Data-Structures-Algorithms.md +++ b/Contents/00.Introduction/01.Data-Structures-Algorithms.md @@ -22,7 +22,7 @@ > **数据结构(Data Structure)**:带有结构特性的数据元素的集合。 -简单而言,**「数据结构」**指的是:**数据的组织结构,用来组织、存储数据**。 +简单而言,**「数据结构」** 指的是:**数据的组织结构,用来组织、存储数据**。 展开来讲,数据结构研究的是数据的逻辑结构、物理结构以及它们之间的相互关系,并对这种结构定义相应的运算,设计出相应的算法,并确保经过这些运算以后所得到的新结构仍保持原来的结构类型。 From ace6e174cca5682e1ef489b034dbeaf3ec09cebd Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 5 Jan 2024 11:29:03 +0800 Subject: [PATCH 048/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...43\344\270\255\344\275\215\346\225\260.md" | 79 +++++++++++++------ ...55\347\232\204\347\201\257\346\263\241.md" | 61 +++++++++++--- ...73\350\275\254\346\254\241\346\225\260.md" | 66 ++++++++++++---- 3 files changed, 152 insertions(+), 54 deletions(-) diff --git "a/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" "b/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" index bd78e7e6..84fc869d 100644 --- "a/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" +++ "b/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" @@ -9,55 +9,77 @@ ## 题目大意 -给定一个数组 `nums`,有一个长度为 `k` 的窗口从最左端滑动到最右端。窗口中有 `k` 个数,每次窗口向右移动 `1` 位。 +**描述**:给定一个数组 $nums$,有一个长度为 $k$ 的窗口从最左端滑动到最右端。窗口中有 $k$ 个数,每次窗口向右移动 $1$ 位。 -要求:找出每次窗口移动后得到的新窗口中元素的中位数,并输出由它们组成的数组。 +**要求**:找出每次窗口移动后得到的新窗口中元素的中位数,并输出由它们组成的数组。 -- 中位数:有序序列最中间的那个数。如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。 +**说明**: -例如: +- **中位数**:有序序列最中间的那个数。如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。 +- 例如: + - $[2,3,4]$,中位数是 $3$ + - $[2,3]$,中位数是 $(2 + 3) / 2 = 2.5$。 +- 你可以假设 $k$ 始终有效,即:$k$ 始终小于等于输入的非空数组的元素个数。 +- 与真实值误差在 $10 ^ {-5}$ 以内的答案将被视作正确答案。 -- `[2, 3, 4]`,中位数是 `3`。 -- `[2, 3]`,中位数是 `(2 + 3) / 2 = 2.5`。 +**示例**: + +- 示例 1: + +```python +给出 nums = [1,3,-1,-3,5,3,6,7],以及 k = 3。 + +窗口位置 中位数 +--------------- ----- +[1 3 -1] -3 5 3 6 7 1 + 1 [3 -1 -3] 5 3 6 7 -1 + 1 3 [-1 -3 5] 3 6 7 -1 + 1 3 -1 [-3 5 3] 6 7 3 + 1 3 -1 -3 [5 3 6] 7 5 + 1 3 -1 -3 5 [3 6 7] 6 + 因此,返回该滑动窗口的中位数数组 [1,-1,-1,3,5,6]。 +``` ## 解题思路 -题目要求动态维护长度为 `k` 的窗口中元素的中位数。如果对窗口元素进行排序,时间复杂度一般是 $O(k * log_2k)$。如果对每个区间都进行排序,那时间复杂度就更大了,肯定会超时。 +### 思路 1:小顶堆 + 大顶堆 -我们需要借助一个内部有序的数据结构,来降低取窗口中位数的时间复杂度。`Python` 可以借助 `heapq` 构建大顶堆和小顶堆。通过 `k` 的奇偶性和堆顶元素来获取中位数。 +题目要求动态维护长度为 $k$ 的窗口中元素的中位数。如果对窗口元素进行排序,时间复杂度一般是 $O(k \times \log k)$。如果对每个区间都进行排序,那时间复杂度就更大了,肯定会超时。 + +我们需要借助一个内部有序的数据结构,来降低取窗口中位数的时间复杂度。Python 可以借助 `heapq` 构建大顶堆和小顶堆。通过 $k$ 的奇偶性和堆顶元素来获取中位数。 接下来还要考虑几个问题:初始化问题、取中位数问题、窗口滑动中元素的添加删除操作。接下来一一解决。 初始化问题: -我们将所有大于中位数的元素放到 `heap_max`(小顶堆)中,并且元素个数向上取整。然后再将所有小于等于中位数的元素放到 `heap_min`(大顶堆)中,并且元素个数向下取整。这样当 `k` 为奇数时,`heap_max` 比 `heap_min` 多一个元素,中位数就是 `heap_max` 堆顶元素。当 `k` 为偶数时,`heap_max` 和 `heap_min` 中的元素个数相同,中位数就是 `heap_min` 堆顶元素和 `heap_max` 堆顶元素的平均数。这个过程操作如下: +我们将所有大于中位数的元素放到 $heap\underline{}max$(小顶堆)中,并且元素个数向上取整。然后再将所有小于等于中位数的元素放到 $heap\underline{}min$(大顶堆)中,并且元素个数向下取整。这样当 $k$ 为奇数时,$heap\underline{}max$ 比 $heap\underline{}min$ 多一个元素,中位数就是 $heap\underline{}max$ 堆顶元素。当 $k$ 为偶数时,$heap\underline{}max$ 和 $heap\underline{}min$ 中的元素个数相同,中位数就是 $heap\underline{}min$ 堆顶元素和 $heap\underline{}max$ 堆顶元素的平均数。这个过程操作如下: -- 先将数组中前 `k` 个元素放到 `heap_max` 中。 -- 再从 `heap_max` 中取出 `k // 2` 个堆顶元素放到 `heap_min` 中。 +- 先将数组中前 $k$ 个元素放到 $heap\underline{}max$ 中。 +- 再从 $heap\underline{}max$ 中取出 $k // 2$ 个堆顶元素放到 $heap\underline{}min$ 中。 取中位数问题(上边提到过): -- 当 `k` 为奇数时,中位数就是 `heap_max` 堆顶元素。当 `k` 为偶数时,中位数就是 `heap_max` 堆顶元素和 `heap_min` 堆顶元素的平均数。 +- 当 $k$ 为奇数时,中位数就是 $heap\underline{}max$ 堆顶元素。当 $k$ 为偶数时,中位数就是 $heap\underline{}max$ 堆顶元素和 $heap\underline{}min$ 堆顶元素的平均数。 窗口滑动过程中元素的添加和删除问题: -- 删除:每次滑动将窗口左侧元素删除。由于 `heapq` 没有提供删除中间特定元素相对应的方法。所以我们使用「延迟删除」的方式先把待删除的元素标记上,等到待删除的元素出现在堆顶时,再将其移除。我们使用 `removes` (哈希表)来记录待删除元素个数。 +- 删除:每次滑动将窗口左侧元素删除。由于 `heapq` 没有提供删除中间特定元素相对应的方法。所以我们使用「延迟删除」的方式先把待删除的元素标记上,等到待删除的元素出现在堆顶时,再将其移除。我们使用 $removes$ (哈希表)来记录待删除元素个数。 - 将窗口左侧元素删除的操作为:`removes[nums[left]] += 1`。 -- 添加:每次滑动在窗口右侧添加元素。需要根据上一步删除的结果来判断需要添加到哪一个堆上。我们用 `banlance` 记录 `heap_max` 和 `heap_min` 元素个数的差值。 - - 如果窗口左边界 `nums[left]`小于等于 `heap_max` 堆顶元素 ,则说明上一步删除的元素在 `heap_min` 上,则让 `banlance -= 1`。 - - 如果窗口左边界 `nums[left]` 大于 `heap_max` 堆顶元素,则说明上一步删除的元素在 `heap_max` 上,则上 `banlance += 1`。 - - 如果窗口右边界 `nums[right]` 小于等于 `heap_max` 堆顶元素,则说明待添加元素需要添加到 `heap_min` 上,则让 `banlance += 1`。 - - 如果窗口右边界 `nums[right]` 大于 `heap_max` 堆顶元素,则说明待添加元素需要添加到 `heap_max` 上,则让 `banlance -= 1`。 -- 经过上述操作,`banlance` 的取值为 `0`、`-2`、`2` 中的一种。需要经过调整使得 `banlance == 0`。 - - 如果 `banlance == 0`,已经平衡,不需要再做操作。 - - 如果 `banlance == -2`,则说明 `heap_min` 比 `heap_max` 的元素多了两个。则从 `heap_min` 中取出堆顶元素添加到 `heap_max` 中。 - - 如果 `banlance == 2`,则说明 `heap_max` 比 `heap_min` 的元素多了两个。则从 `heap_max` 中取出堆顶元素添加到 `heap_min` 中。 -- 调整完之后,分别检查 `heap_max` 和 `heap_min` 的堆顶元素。 - - 如果 `heap_max` 堆顶元素恰好为待删除元素,即 `removes[-heap_max[0]] > 0`,则弹出 `heap_max` 堆顶元素。 - - 如果 `heap_min` 堆顶元素恰好为待删除元素,即 `removes[heap_min[0]] > 0`,则弹出 `heap_min` 堆顶元素。 +- 添加:每次滑动在窗口右侧添加元素。需要根据上一步删除的结果来判断需要添加到哪一个堆上。我们用 $banlance$ 记录 $heap\underline{}max$ 和 $heap\underline{}min$ 元素个数的差值。 + - 如果窗口左边界 $nums[left]$小于等于 $heap\underline{}max$ 堆顶元素 ,则说明上一步删除的元素在 $heap\underline{}min$ 上,则让 `banlance -= 1`。 + - 如果窗口左边界 $nums[left]$ 大于 $heap\underline{}max$ 堆顶元素,则说明上一步删除的元素在 $heap\underline{}max$ 上,则上 `banlance += 1`。 + - 如果窗口右边界 $nums[right]$ 小于等于 $heap\underline{}max$ 堆顶元素,则说明待添加元素需要添加到 $heap\underline{}min$ 上,则让 `banlance += 1`。 + - 如果窗口右边界 $nums[right]$ 大于 $heap\underline{}max$ 堆顶元素,则说明待添加元素需要添加到 $heap\underline{}max$ 上,则让 `banlance -= 1`。 +- 经过上述操作,$banlance$ 的取值为 $0$、$-2$、$2$ 中的一种。需要经过调整使得 $banlance == 0$。 + - 如果 $banlance == 0$,已经平衡,不需要再做操作。 + - 如果 $banlance == -2$,则说明 $heap\underline{}min$ 比 $heap\underline{}max$ 的元素多了两个。则从 $heap\underline{}min$ 中取出堆顶元素添加到 $heap\underline{}max$ 中。 + - 如果 $banlance == 2$,则说明 $heap\underline{}max$ 比 $heap\underline{}min$ 的元素多了两个。则从 $heap\underline{}max$ 中取出堆顶元素添加到 $heap\underline{}min$ 中。 +- 调整完之后,分别检查 $heap\underline{}max$ 和 $heap\underline{}min$ 的堆顶元素。 + - 如果 $heap\underline{}max$ 堆顶元素恰好为待删除元素,即 $removes[-heap\underline{}max[0]] > 0$,则弹出 $heap\underline{}max$ 堆顶元素。 + - 如果 $heap\underline{}min$ 堆顶元素恰好为待删除元素,即 $removes[heap\underline{}min[0]] > 0$,则弹出 $heap\underline{}min$ 堆顶元素。 - 最后取中位数放入答案数组中,然后继续滑动窗口。 -## 代码 +### 思路 1:代码 ```python import collections @@ -111,6 +133,11 @@ class Solution: return res ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times \log n)$。 +- **空间复杂度**:$O(n)$。 + ## 参考资料 - 【题解】[《风 险 对 冲》:双堆对顶,大堆小堆同时维护,44ms - 滑动窗口中位数 - 力扣](https://leetcode.cn/problems/sliding-window-median/solution/feng-xian-dui-chong-shuang-dui-dui-ding-hq1dt/) diff --git "a/Solutions/0683. K \344\270\252\345\205\263\351\227\255\347\232\204\347\201\257\346\263\241.md" "b/Solutions/0683. K \344\270\252\345\205\263\351\227\255\347\232\204\347\201\257\346\263\241.md" index ec312e84..553312ae 100644 --- "a/Solutions/0683. K \344\270\252\345\205\263\351\227\255\347\232\204\347\201\257\346\263\241.md" +++ "b/Solutions/0683. K \344\270\252\345\205\263\351\227\255\347\232\204\347\201\257\346\263\241.md" @@ -9,26 +9,58 @@ ## 题目大意 -`n` 个灯泡排成一行,编号从 `1` 到 `n`。最初,所有灯泡都关闭。每天只打开一个灯泡,直到 `n` 天后所有灯泡都打开。 +**描述**:$n$ 个灯泡排成一行,编号从 $1$ 到 $n$。最初,所有灯泡都关闭。每天只打开一个灯泡,直到 $n$ 天后所有灯泡都打开。 -给定一个长度为 `n` 的灯泡数组 `blubs`,其中 `bulls[i] = x` 意味着在第`i + 1` 天,我们会把在位置 `x` 的灯泡打开,其中 `i` 从 `0` 开始,`x` 从 `1` 开始。 +给定一个长度为 $n$ 的灯泡数组 $blubs$,其中 `bulls[i] = x` 意味着在第 $i + 1$ 天,我们会把在位置 $x$ 的灯泡打开,其中 $i$ 从 $0$ 开始,$x$ 从 $1$ 开始。 -再给定一个整数 `k`。 +再给定一个整数 $k$。 -要求:输出在第几天恰好有两个打开的灯泡,使得它们中间正好有 `k` 个灯泡且这些灯泡全部是关闭的 。如果不存在这种情况,则返回 `-1`。如果有多天都出现这种情况,请返回最小的天数 。 +**要求**:输出在第几天恰好有两个打开的灯泡,使得它们中间正好有 $k$ 个灯泡且这些灯泡全部是关闭的 。如果不存在这种情况,则返回 $-1$。如果有多天都出现这种情况,请返回最小的天数 。 + +**说明**: + +- $n == bulbs.length$。 +- $1 \le n \le 2 \times 10^4$。 +- $1 \le bulbs[i] \le n$。 +- $bulbs$ 是一个由从 $1$ 到 $n$ 的数字构成的排列。 +- $0 \le k \le 2 \times 10^4$。 + +**示例**: + +- 示例 1: + +```python +输入: +bulbs = [1,3,2],k = 1 +输出:2 +解释: +第一天 bulbs[0] = 1,打开第一个灯泡 [1,0,0] +第二天 bulbs[1] = 3,打开第三个灯泡 [1,0,1] +第三天 bulbs[2] = 2,打开第二个灯泡 [1,1,1] +返回2,因为在第二天,两个打开的灯泡之间恰好有一个关闭的灯泡。 +``` + +- 示例 2: + +```python +输入:bulbs = [1,2,3],k = 1 +输出:-1 +``` ## 解题思路 -`blubs[i]` 记录的是第 `i + 1` 天开灯的位置。我们将其转换一下,使用另一个数组 `days` 来存储每个灯泡的开灯时间,其中 `days[i]` 表示第 `i` 个位置上的灯泡的开灯时间。 +### 思路 1:滑动窗口 -- 使用 `ans` 记录最小满足条件的天数。维护一个窗口 `left`、`right`。其中 `right = left + k + 1`。使得区间 `(left, right)` 中所有灯泡(总共为 `k` 个)开灯时间都晚于 `days[left]` 和 `days[right]`。 -- 对于区间 `[left, right]`,`left < i < right`: - - 如果出现 `days[i] < days[left]` 或者 `days[i] < days[right]`,说明不符合要求。将 `left`、`right` 移动到 `[i, i + k + 1]`,继续进行判断。 - - 如果对于 `left < i < right` 中所有的 `i`,都满足 `days[i] >= days[left]` 并且 `days[i] >= days[right]`,说明此时满足要求。将当前答案与 `days[left]` 和 `days[right]` 中的较大值作比较。如果比当前答案更小,则更新答案。同时将窗口向右移动 `k `位。继续检测新的不相交间隔 `[right, right + k + 1]`。 - - 注意:之所以检测新的不相交间隔,是因为如果检测的是相交间隔,原来的 `right` 位置元素仍在区间中,肯定会出现 `days[right] < days[right_new]`,不满足要求。所以此时相交的区间可以直接跳过,直接检测不相交的间隔。 -- 直到 `right >= len(days)` 时跳出循环,判断是否有符合要求的答案,并返回答案 `ans`。 +$blubs[i]$ 记录的是第 $i + 1$ 天开灯的位置。我们将其转换一下,使用另一个数组 $days$ 来存储每个灯泡的开灯时间,其中 $days[i]$ 表示第 $i$ 个位置上的灯泡的开灯时间。 -## 代码 +- 使用 $ans$ 记录最小满足条件的天数。维护一个窗口 $left$、$right$。其中 `right = left + k + 1`。使得区间 $(left, right)$ 中所有灯泡(总共为 $k$ 个)开灯时间都晚于 $days[left]$ 和 $days[right]$。 +- 对于区间 $[left, right]$,$left < i < right$: + - 如果出现 $days[i] < days[left]$ 或者 $days[i] < days[right]$,说明不符合要求。将 $left$、$right$ 移动到 $[i, i + k + 1]$,继续进行判断。 + - 如果对于 $left < i < right$ 中所有的 $i$,都满足 $days[i] \ge days[left]$ 并且 $days[i] \ge days[right]$,说明此时满足要求。将当前答案与 $days[left]$ 和 $days[right]$ 中的较大值作比较。如果比当前答案更小,则更新答案。同时将窗口向右移动 $k $位。继续检测新的不相交间隔 $[right, right + k + 1]$。 + - 注意:之所以检测新的不相交间隔,是因为如果检测的是相交间隔,原来的 $right$ 位置元素仍在区间中,肯定会出现 $days[right] < days[right_new]$,不满足要求。所以此时相交的区间可以直接跳过,直接检测不相交的间隔。 +- 直到 $right \ge len(days)$ 时跳出循环,判断是否有符合要求的答案,并返回答案 $ans$。 + +### 思路 1:代码 ```python class Solution: @@ -57,3 +89,8 @@ class Solution: return -1 ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $bulbs$ 的长度。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" "b/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" index 55329d94..c28e4509 100644 --- "a/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" +++ "b/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" @@ -9,41 +9,70 @@ ## 题目大意 -给定一个仅包含 `0` 和 `1` 的数组 `nums`,再给定一个整数 `k`。进行一次 `k` 位翻转包括选择一个长度为 `k` 的(连续)子数组,同时将子数组中的每个 `0` 更改为 `1`,而每个 `1` 更改为 `0`。 +**描述**:给定一个仅包含 $0$ 和 $1$ 的数组 $nums$,再给定一个整数 $k$。进行一次 $k$ 位翻转包括选择一个长度为 $k$ 的(连续)子数组,同时将子数组中的每个 $0$ 更改为 $1$,而每个 $1$ 更改为 $0$。 -要求:返回所需的 `k` 位翻转的最小次数,以便数组没有值为 `0` 的元素。如果不可能,返回 `-1`。 +**要求**:返回所需的 $k$ 位翻转的最小次数,以便数组没有值为 $0$ 的元素。如果不可能,返回 $-1$。 + +**说明**: + +- **子数组**:数组的连续部分。 +- $1 <= nums.length <= 105$。 +- $1 <= k <= nums.length$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [0,1,0], K = 1 +输出:2 +解释:先翻转 A[0],然后翻转 A[2]。 +``` + +- 示例 2: + +```python +输入:nums = [0,0,0,1,0,1,1,0], K = 3 +输出:3 +解释: +翻转 A[0],A[1],A[2]: A变成 [1,1,1,1,0,1,1,0] +翻转 A[4],A[5],A[6]: A变成 [1,1,1,1,1,0,0,0] +翻转 A[5],A[6],A[7]: A变成 [1,1,1,1,1,1,1,1] +``` ## 解题思路 -每次需要翻转的起始位置肯定是遇到第一个元素为 `0` 的位置开始反转,如果能够使得整个数组不存在 `0`,即返回 `ans` 作为反转次数。 +### 思路 1:滑动窗口 + +每次需要翻转的起始位置肯定是遇到第一个元素为 $0$ 的位置开始反转,如果能够使得整个数组不存在 $0$,即返回 $ans$ 作为反转次数。 同时我们还可以发现: -- 如果某个元素反转次数为奇数次,元素会由 `0 -> 1`,`1 -> 0`。 +- 如果某个元素反转次数为奇数次,元素会由 $0 \rightarrow 1$,$1 \rightarrow 0$。 - 如果某个元素反转次数为偶数次,元素不会发生变化。 -每个第 `i` 位置上的元素只会被前面 `[i - k + 1, i - 1]` 的元素影响。所以我们只需要知道前面 `k - 1` 个元素翻转次数的奇偶性就可以了。 +每个第 $i$ 位置上的元素只会被前面 $[i - k + 1, i - 1]$ 的元素影响。所以我们只需要知道前面 $k - 1$ 个元素翻转次数的奇偶性就可以了。 -同时如果我们知道了前面 `k - 1` 个元素的翻转次数就可以直接修改 `nums[i]` 了。 +同时如果我们知道了前面 $k - 1$ 个元素的翻转次数就可以直接修改 $nums[i]$ 了。 -我们使用 `flip_count` 记录第 `i` 个元素之前 `k - 1` 个位置总共被反转了多少次,或者 `flip_count` 是大小为 `k - 1` 的滑动窗口。 +我们使用 $flip\underline{}count$ 记录第 $i$ 个元素之前 $k - 1$ 个位置总共被反转了多少次,或者 $flip\underline{}count$ 是大小为 $k - 1$ 的滑动窗口。 -- 如果前面第 `k - 1` 个元素翻转了奇数次,则如果 `nums[i] == 1`,则 `nums[i]` 也被翻转成了 `0`,需要再翻转 `1` 次。 -- 如果前面第 `k - 1` 个元素翻转了偶数次,则如果 `nums[i] == 0`,则 `nums[i]` 也被翻转成为了 `0`,需要再翻转 `1` 次。 +- 如果前面第 $k - 1$ 个元素翻转了奇数次,则如果 $nums[i] == 1$,则 $nums[i]$ 也被翻转成了 $0$,需要再翻转 $1$ 次。 +- 如果前面第 $k - 1$ 个元素翻转了偶数次,则如果 $nums[i] == 0$,则 $nums[i]$ 也被翻转成为了 $0$,需要再翻转 $1$ 次。 这两句写成判断语句可以写为:`if (flip_count + nums[i]) % 2 == 0:`。 -因为 `0 <= nums[i] <= 1`,所以我们可以用 `0` 和 `1` 以外的数,比如 `2` 来标记第 `i` 个元素发生了翻转,即 `nums[i] = 2`。这样在遍历到第 `i` 个元素时,如果有 `nums[i - k] == 2`,则说明 `nums[i - k]` 发生了翻转。同时根据 `flip_count` 和 `nums[i]` 来判断第 `i` 位是否需要进行翻转。 +因为 $0 <= nums[i] <= 1$,所以我们可以用 $0$ 和 $1$ 以外的数,比如 $2$ 来标记第 $i$ 个元素发生了翻转,即 `nums[i] = 2`。这样在遍历到第 $i$ 个元素时,如果有 $nums[i - k] == 2$,则说明 $nums[i - k]$ 发生了翻转。同时根据 $flip\underline{}count$ 和 $nums[i]$ 来判断第 $i$ 位是否需要进行翻转。 整个算法的具体步骤如下: -- 使用 `res` 记录最小翻转次数。使用 `flip_count` 记录窗口内前 `k - 1 ` 位元素的翻转次数。 -- 遍历数组 `nums`,对于第 `i` 位元素: - - 如果 `i - k >= 0`,并且 `nums[i - k] == 2`,需要缩小窗口,将翻转次数减一。(此时窗口范围为 `[i - k + 1, i - 1]`)。 - - 如果 `(flip_count + nums[i]) % 2 == 0`,则说明 `nums[i]` 还需要再翻转一次,将 `nums[i]` 标记为 `2`,同时更新窗口内翻转次数 `flip_count` 和答案最小翻转次数 `ans`。 -- 遍历完之后,返回 `res`。 +- 使用 $res$ 记录最小翻转次数。使用 $flip\underline{}count$ 记录窗口内前 $k - 1 $ 位元素的翻转次数。 +- 遍历数组 $nums$,对于第 $i$ 位元素: + - 如果 $i - k >= 0$,并且 $nums[i - k] == 2$,需要缩小窗口,将翻转次数减一。(此时窗口范围为 $[i - k + 1, i - 1]$)。 + - 如果 $(flip\underline{}count + nums[i]) \mod 2 == 0$,则说明 $nums[i]$ 还需要再翻转一次,将 $nums[i]$ 标记为 $2$,同时更新窗口内翻转次数 $flip\underline{}count$ 和答案最小翻转次数 $ans$。 +- 遍历完之后,返回 $res$。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -62,3 +91,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $nums$ 的长度。 +- **空间复杂度**:$O(1)$。 + From 2b2eaf9f389d8959818a42e9553e09fc32b9e493 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 5 Jan 2024 18:06:00 +0800 Subject: [PATCH 049/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 6 +- README.md | 2 +- ...17\347\273\235\345\257\271\345\267\256.md" | 81 ++++++++++++---- ...00\345\260\217\350\267\235\347\246\273.md" | 93 +++++++++++++++++++ ...47\345\260\217\345\207\217\345\215\212.md" | 76 +++++++++++++++ ...00\345\260\217\345\267\256\345\200\274.md" | 87 +++++++++++++++++ 6 files changed, 326 insertions(+), 19 deletions(-) create mode 100644 "Solutions/0783. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\212\202\347\202\271\346\234\200\345\260\217\350\267\235\347\246\273.md" create mode 100644 "Solutions/1338. \346\225\260\347\273\204\345\244\247\345\260\217\345\207\217\345\215\212.md" create mode 100644 "Solutions/1984. \345\255\246\347\224\237\345\210\206\346\225\260\347\232\204\346\234\200\345\260\217\345\267\256\345\200\274.md" diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index f2f33c1a..61d27926 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 823 道) +# LeetCode 题解(已完成 827 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -414,6 +414,7 @@ | 0771 | [宝石与石头](https://leetcode.cn/problems/jewels-and-stones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0771.%20%E5%AE%9D%E7%9F%B3%E4%B8%8E%E7%9F%B3%E5%A4%B4.md) | 哈希表、字符串 | 简单 | | 0778 | [水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0778.%20%E6%B0%B4%E4%BD%8D%E4%B8%8A%E5%8D%87%E7%9A%84%E6%B3%B3%E6%B1%A0%E4%B8%AD%E6%B8%B8%E6%B3%B3.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | | 0779 | [第K个语法符号](https://leetcode.cn/problems/k-th-symbol-in-grammar/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0779.%20%E7%AC%ACK%E4%B8%AA%E8%AF%AD%E6%B3%95%E7%AC%A6%E5%8F%B7.md) | 位运算、递归、数学 | 中等 | +| 0783 | [二叉搜索树节点最小距离](https://leetcode.cn/problems/minimum-distance-between-bst-nodes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0783.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%8A%82%E7%82%B9%E6%9C%80%E5%B0%8F%E8%B7%9D%E7%A6%BB.md) | 树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树 | 简单 | | 0784 | [字母大小写全排列](https://leetcode.cn/problems/letter-case-permutation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0784.%20%E5%AD%97%E6%AF%8D%E5%A4%A7%E5%B0%8F%E5%86%99%E5%85%A8%E6%8E%92%E5%88%97.md) | 位运算、字符串、回溯 | 中等 | | 0785 | [判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0785.%20%E5%88%A4%E6%96%AD%E4%BA%8C%E5%88%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | | 0788 | [旋转数字](https://leetcode.cn/problems/rotated-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0788.%20%E6%97%8B%E8%BD%AC%E6%95%B0%E5%AD%97.md) | 数学、动态规划 | 中等 | @@ -507,6 +508,7 @@ | 1039 | [多边形三角剖分的最低得分](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1039.%20%E5%A4%9A%E8%BE%B9%E5%BD%A2%E4%B8%89%E8%A7%92%E5%89%96%E5%88%86%E7%9A%84%E6%9C%80%E4%BD%8E%E5%BE%97%E5%88%86.md) | 数组、动态规划 | 中等 | | 1047 | [删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1047.%20%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E7%9B%B8%E9%82%BB%E9%87%8D%E5%A4%8D%E9%A1%B9.md) | 栈、字符串 | 简单 | | 1049 | [最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1049.%20%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7%9A%84%E9%87%8D%E9%87%8F%20II.md) | 数组、动态规划 | 中等 | +| 1051 | [高度检查器](https://leetcode.cn/problems/height-checker/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1051.%20%E9%AB%98%E5%BA%A6%E6%A3%80%E6%9F%A5%E5%99%A8.md) | 数组、计数排序、排序 | 简单 | | 1052 | [爱生气的书店老板](https://leetcode.cn/problems/grumpy-bookstore-owner/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1052.%20%E7%88%B1%E7%94%9F%E6%B0%94%E7%9A%84%E4%B9%A6%E5%BA%97%E8%80%81%E6%9D%BF.md) | 数组、滑动窗口 | 中等 | | 1065 | [字符串的索引对](https://leetcode.cn/problems/index-pairs-of-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1065.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E7%B4%A2%E5%BC%95%E5%AF%B9.md) | 字典树、数组、字符串、排序 | 简单 | | 1079 | [活字印刷](https://leetcode.cn/problems/letter-tile-possibilities/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1079.%20%E6%B4%BB%E5%AD%97%E5%8D%B0%E5%88%B7.md) | 哈希表、字符串、回溯、计数 | 中等 | @@ -547,6 +549,7 @@ | 1310 | [子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1310.%20%E5%AD%90%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%9F%A5%E8%AF%A2.md) | 位运算、数组、前缀和 | 中等 | | 1317 | [将整数转换为两个无零整数的和](https://leetcode.cn/problems/convert-integer-to-the-sum-of-two-no-zero-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1317.%20%E5%B0%86%E6%95%B4%E6%95%B0%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%B8%A4%E4%B8%AA%E6%97%A0%E9%9B%B6%E6%95%B4%E6%95%B0%E7%9A%84%E5%92%8C.md) | 数学 | 简单 | | 1319 | [连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1319.%20%E8%BF%9E%E9%80%9A%E7%BD%91%E7%BB%9C%E7%9A%84%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| 1338 | [数组大小减半](https://leetcode.cn/problems/reduce-array-size-to-the-half/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1338.%20%E6%95%B0%E7%BB%84%E5%A4%A7%E5%B0%8F%E5%87%8F%E5%8D%8A.md) | 贪心、数组、哈希表、排序、堆(优先队列) | 中等 | | 1343 | [大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1343.%20%E5%A4%A7%E5%B0%8F%E4%B8%BA%20K%20%E4%B8%94%E5%B9%B3%E5%9D%87%E5%80%BC%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E9%98%88%E5%80%BC%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md) | 数组、滑动窗口 | 中等 | | 1349 | [参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1349.%20%E5%8F%82%E5%8A%A0%E8%80%83%E8%AF%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | | 1358 | [包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1358.%20%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E4%B8%89%E7%A7%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%9B%AE.md) | 哈希表、字符串、滑动窗口 | 中等 | @@ -608,6 +611,7 @@ | 1929 | [数组串联](https://leetcode.cn/problems/concatenation-of-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1929.%20%E6%95%B0%E7%BB%84%E4%B8%B2%E8%81%94.md) | 数组 | 简单 | | 1941 | [检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1941.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E7%9B%B8%E5%90%8C.md) | 哈希表、字符串、计数 | 简单 | | 1947 | [最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1947.%20%E6%9C%80%E5%A4%A7%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%84%E5%88%86%E5%92%8C.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| 1984 | [学生分数的最小差值](https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1984.%20%E5%AD%A6%E7%94%9F%E5%88%86%E6%95%B0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%B7%AE%E5%80%BC.md) | 数组、排序、滑动窗口 | 简单 | | 1986 | [完成任务的最少工作时间段](https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1986.%20%E5%AE%8C%E6%88%90%E4%BB%BB%E5%8A%A1%E7%9A%84%E6%9C%80%E5%B0%91%E5%B7%A5%E4%BD%9C%E6%97%B6%E9%97%B4%E6%AE%B5.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | | 1991 | [找到数组的中间位置](https://leetcode.cn/problems/find-the-middle-index-in-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1991.%20%E6%89%BE%E5%88%B0%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E9%97%B4%E4%BD%8D%E7%BD%AE.md) | 数组、前缀和 | 简单 | | 1994 | [好子集的数目](https://leetcode.cn/problems/the-number-of-good-subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1994.%20%E5%A5%BD%E5%AD%90%E9%9B%86%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 位运算、数组、数学、动态规划、状态压缩 | 困难 | diff --git a/README.md b/README.md index c50b2ac7..6c64d5d7 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 823 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 827 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/0530. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" "b/Solutions/0530. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" index d0b56bea..89abd0de 100644 --- "a/Solutions/0530. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" +++ "b/Solutions/0530. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" @@ -9,10 +9,40 @@ ## 题目大意 -给定一棵所有节点都为非负值的二叉搜索树,计算树中任意两节点的差的绝对值的最小值。 +**描述**:给定一个二叉搜索树的根节点 $root$。 + +**要求**:返回树中任意两不同节点值之间的最小差值。 + +**说明**: + +- **差值**:是一个正数,其数值等于两值之差的绝对值。 +- 树中节点的数目范围是 $[2, 10^4]$。 +- $0 \le Node.val \le 10^5$。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2021/02/05/bst1.jpg) + +```python +输入:root = [4,2,6,1,3] +输出:1 +``` + +- 示例 2: + +![](https://assets.leetcode.com/uploads/2021/02/05/bst2.jpg) + +```python +输入:root = [1,0,48,null,null,12,49] +输出:1 +``` ## 解题思路 +### 思路 1:中序遍历 + 先来看二叉搜索树的定义: - 若左子树不为空,则左子树上所有节点值均小于它的根节点值; @@ -23,24 +53,41 @@ 二叉树的中序遍历顺序是:左 -> 根 -> 右,二叉搜索树的中序遍历最终得到就是一个升序数组。而升序数组中绝对值差的最小值就是比较相邻两节点差值的绝对值,找出其中最小值。 -那么我们就可以在中序遍历的同时,比较搜索二叉树相邻节点的差值绝对值大小。这就需要维护两个变量:`ans` 和 `pre`。`ans` 用于存储差的绝对值的最小值,`pre`用于保存上一节点的值,用于和当前节点计算差值的绝对值。 +那么我们就可以先对二叉搜索树进行中序遍历,并保存中序遍历的结果。然后再比较相邻节点差值的最小值,从而找出最小值。 -## 代码 +### 思路 1:代码 -```python +```Python +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right class Solution: - ans = 999 - pre = 999 - def dfs(self, root: TreeNode): - if not root: - return - self.dfs(root.left) - self.ans = min(self.ans, abs(self.pre - root.val)) - self.pre = root.val - self.dfs(root.right) - - def getMinimumDifference(self, root: TreeNode) -> int: - self.dfs(root) - return self.ans + def inorderTraversal(self, root: TreeNode) -> List[int]: + res = [] + def inorder(root): + if not root: + return + inorder(root.left) + res.append(root.val) + inorder(root.right) + + inorder(root) + return res + + def getMinimumDifference(self, root: Optional[TreeNode]) -> int: + inorder = self.inorderTraversal(root) + ans = float('inf') + for i in range(1, len(inorder)): + ans = min(ans, abs(inorder[i - 1] - inorder[i])) + + return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为二叉搜索树中的节点数量。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/0783. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\212\202\347\202\271\346\234\200\345\260\217\350\267\235\347\246\273.md" "b/Solutions/0783. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\212\202\347\202\271\346\234\200\345\260\217\350\267\235\347\246\273.md" new file mode 100644 index 00000000..e9b10bfa --- /dev/null +++ "b/Solutions/0783. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\212\202\347\202\271\346\234\200\345\260\217\350\267\235\347\246\273.md" @@ -0,0 +1,93 @@ +# [0783. 二叉搜索树节点最小距离](https://leetcode.cn/problems/minimum-distance-between-bst-nodes/) + +- 标签:树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树 +- 难度:简单 + +## 题目链接 + +- [0783. 二叉搜索树节点最小距离 - 力扣](https://leetcode.cn/problems/minimum-distance-between-bst-nodes/) + +## 题目大意 + +**描述**:给定一个二叉搜索树的根节点 $root$。 + +**要求**:返回树中任意两不同节点值之间的最小差值。 + +**说明**: + +- **差值**:是一个正数,其数值等于两值之差的绝对值。 +- 树中节点的数目范围是 $[2, 100]$。 +- $0 \le Node.val \le 10^5$。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2021/02/05/bst1.jpg) + +```python +输入:root = [4,2,6,1,3] +输出:1 +``` + +- 示例 2: + +![](https://assets.leetcode.com/uploads/2021/02/05/bst2.jpg) + +```python +输入:root = [1,0,48,null,null,12,49] +输出:1 +``` + +## 解题思路 + +### 思路 1:中序遍历 + +先来看二叉搜索树的定义: + +- 若左子树不为空,则左子树上所有节点值均小于它的根节点值; +- 若右子树不为空,则右子树上所有节点值均大于它的根节点值; +- 任意节点的左、右子树也分别为二叉搜索树。 + +题目要求二叉搜索树上任意两节点的差的绝对值的最小值。 + +二叉树的中序遍历顺序是:左 -> 根 -> 右,二叉搜索树的中序遍历最终得到就是一个升序数组。而升序数组中绝对值差的最小值就是比较相邻两节点差值的绝对值,找出其中最小值。 + +那么我们就可以先对二叉搜索树进行中序遍历,并保存中序遍历的结果。然后再比较相邻节点差值的最小值,从而找出最小值。 + +### 思路 1:代码 + +```Python +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def inorderTraversal(self, root: TreeNode) -> List[int]: + res = [] + def inorder(root): + if not root: + return + inorder(root.left) + res.append(root.val) + inorder(root.right) + + inorder(root) + return res + + def minDiffInBST(self, root: Optional[TreeNode]) -> int: + inorder = self.inorderTraversal(root) + ans = float('inf') + for i in range(1, len(inorder)): + ans = min(ans, abs(inorder[i - 1] - inorder[i])) + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为二叉搜索树中的节点数量。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/1338. \346\225\260\347\273\204\345\244\247\345\260\217\345\207\217\345\215\212.md" "b/Solutions/1338. \346\225\260\347\273\204\345\244\247\345\260\217\345\207\217\345\215\212.md" new file mode 100644 index 00000000..84221d8f --- /dev/null +++ "b/Solutions/1338. \346\225\260\347\273\204\345\244\247\345\260\217\345\207\217\345\215\212.md" @@ -0,0 +1,76 @@ +- [1338. 数组大小减半](https://leetcode.cn/problems/reduce-array-size-to-the-half/) + +- 标签:贪心、数组、哈希表、排序、堆(优先队列) +- 难度:中等 + +## 题目链接 + +- [1338. 数组大小减半 - 力扣](https://leetcode.cn/problems/reduce-array-size-to-the-half/) + +## 题目大意 + +**描述**:给定过一个整数数组 $arr$。你可以从中选出一个整数集合,并在数组 $arr$ 删除所有整数集合对应的数。 + +**要求**:返回至少能删除数组中的一半整数的整数集合的最小大小。 + +**说明**: + +- $1 \le arr.length \le 10^5$。 +- $arr.length$ 为偶数。 +- $1 \le arr[i] \le 10^5$。 + +**示例**: + +- 示例 1: + +```python +输入:arr = [3,3,3,3,5,5,5,2,2,7] +输出:2 +解释:选择 {3,7} 使得结果数组为 [5,5,5,2,2]、长度为 5(原数组长度的一半)。 +大小为 2 的可行集合有 {3,5},{3,2},{5,2}。 +选择 {2,7} 是不可行的,它的结果数组为 [3,3,3,3,5,5,5],新数组长度大于原数组的二分之一。 +``` + +- 示例 2: + +```python +输入:arr = [7,7,7,7,7,7] +输出:1 +解释:我们只能选择集合 {7},结果数组为空。 +``` + +## 解题思路 + +### 思路 1:贪心算法 + +对于选出的整数集合中每一个数 $x$ 来说,我们会删除数组 $arr$ 中所有值为 $x$ 的整数。 + +因为题目要求我们选出的整数集合最小,所以在每一次选择整数 $x$ 加入整数集合时,我们都应该选择数组 $arr$ 中出现次数最多的数。 + +因此,我们可以统计出数组 $arr$ 中每个整数的出现次数,用哈希表存储,并依照出现次数进行降序排序。 + +然后,依次选择出现次数最多的数进行删除,并统计个数,直到删除了至少一半的数时停止。 + +最后,将统计个数作为答案返回。 + +### 思路 1:代码 + +```Python +class Solution: + def minSetSize(self, arr: List[int]) -> int: + cnts = Counter(arr) + ans, cnt = 0, 0 + for num, freq in cnts.most_common(): + cnt += freq + ans += 1 + if cnt * 2 >= len(arr): + break + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times \log n)$,其中 $n$ 为数组 $arr$ 的长度。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/1984. \345\255\246\347\224\237\345\210\206\346\225\260\347\232\204\346\234\200\345\260\217\345\267\256\345\200\274.md" "b/Solutions/1984. \345\255\246\347\224\237\345\210\206\346\225\260\347\232\204\346\234\200\345\260\217\345\267\256\345\200\274.md" new file mode 100644 index 00000000..48b819a5 --- /dev/null +++ "b/Solutions/1984. \345\255\246\347\224\237\345\210\206\346\225\260\347\232\204\346\234\200\345\260\217\345\267\256\345\200\274.md" @@ -0,0 +1,87 @@ +# [1984. 学生分数的最小差值](https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/) + +- 标签:数组、排序、滑动窗口 +- 难度:简单 + +## 题目链接 + +- [1984. 学生分数的最小差值 - 力扣](https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/) + +## 题目大意 + +**描述**:给定一个下标从 $0$ 开始的整数数组 $nums$,其中 $nums[i]$ 表示第 $i$ 名学生的分数。另给定一个整数 $k$。 + +**要求**:从数组中选出任意 $k$ 名学生的分数,使这 $k$ 个分数间最高分和最低分的差值达到最小化。返回可能的最小差值 。 + +**说明**: + +- $1 \le k \le nums.length \le 1000$。 +- $0 \le nums[i] \le 10^5$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [90], k = 1 +输出:0 +解释:选出 1 名学生的分数,仅有 1 种方法: +- [90] 最高分和最低分之间的差值是 90 - 90 = 0 +可能的最小差值是 0 +``` + +- 示例 2: + +```python +输入:nums = [9,4,1,7], k = 2 +输出:2 +解释:选出 2 名学生的分数,有 6 种方法: +- [9,4,1,7] 最高分和最低分之间的差值是 9 - 4 = 5 +- [9,4,1,7] 最高分和最低分之间的差值是 9 - 1 = 8 +- [9,4,1,7] 最高分和最低分之间的差值是 9 - 7 = 2 +- [9,4,1,7] 最高分和最低分之间的差值是 4 - 1 = 3 +- [9,4,1,7] 最高分和最低分之间的差值是 7 - 4 = 3 +- [9,4,1,7] 最高分和最低分之间的差值是 7 - 1 = 6 +可能的最小差值是 2 +``` + +## 解题思路 + +### 思路 1:排序 + 滑动窗口 + +如果想要最小化选择的 $k$ 名学生中最高分与最低分的差值,我们应该在排序后的数组中连续选择 $k$ 名学生。这是因为如果将连续 $k$ 名学生中的某位学生替换成不连续的学生,其最高分 / 最低分一定会发生变化,并且一定会使最高分变得最高 / 最低分变得最低。从而导致差值增大。 + +因此,最优方案一定是在排序后的数组中连续选择 $k$ 名学生中的所有情况中的其中一种。 + +这样,我们可以先对数组 $nums$ 进行升序排序。然后使用一个固定长度为 $k$ 的滑动窗口计算连续选择 $k$ 名学生的最高分与最低分的差值。并记录下最小的差值 $ans$,最后作为答案并返回结果。 + +### 思路 1:代码 + +```Python +class Solution: + def minimumDifference(self, nums: List[int], k: int) -> int: + nums.sort() + ans = float('inf') + for i in range(k - 1, len(nums)): + ans = min(ans, nums[i] - nums[i - k + 1]) + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times \log n)$,其中 $n$ 为数组 $nums$ 的长度。 +- **空间复杂度**:$O(1)$。 + +### 思路 2: + +### 思路 2:代码 + +```python +``` + +### 思路 2:复杂度分析 + +- **时间复杂度**: +- **空间复杂度**: + From f819b24fe711d7edbfbd40557348519d5d67fd21 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Sun, 7 Jan 2024 22:32:01 +0800 Subject: [PATCH 050/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 7 +- .../00.Introduction/05.Categories-List.md | 2 +- .../02.Binary-Indexed-Tree-List.md | 2 +- README.md | 2 +- ...57\345\257\206\347\240\201\350\257\215.md" | 87 +++++++++++++++++++ ...33\345\210\266\351\227\264\350\267\235.md" | 72 +++++++++++++++ ...55\347\232\204\345\215\225\350\257\215.md" | 75 ++++++++++++++++ ...75\350\242\253\350\246\206\347\233\226.md" | 75 ++++++++++++++++ ...62\351\203\275\347\233\270\347\255\211.md" | 78 +++++++++++++++++ 9 files changed, 396 insertions(+), 4 deletions(-) create mode 100644 "Solutions/0804. \345\224\257\344\270\200\346\221\251\345\260\224\346\226\257\345\257\206\347\240\201\350\257\215.md" create mode 100644 "Solutions/0868. \344\272\214\350\277\233\345\210\266\351\227\264\350\267\235.md" create mode 100644 "Solutions/1451. \351\207\215\346\226\260\346\216\222\345\210\227\345\217\245\345\255\220\344\270\255\347\232\204\345\215\225\350\257\215.md" create mode 100644 "Solutions/1893. \346\243\200\346\237\245\346\230\257\345\220\246\345\214\272\345\237\237\345\206\205\346\211\200\346\234\211\346\225\264\346\225\260\351\203\275\350\242\253\350\246\206\347\233\226.md" create mode 100644 "Solutions/1897. \351\207\215\346\226\260\345\210\206\351\205\215\345\255\227\347\254\246\344\275\277\346\211\200\346\234\211\345\255\227\347\254\246\344\270\262\351\203\275\347\233\270\347\255\211.md" diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index 61d27926..7013c6dd 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 827 道) +# LeetCode 题解(已完成 832 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -425,6 +425,7 @@ | 0801 | [使序列递增的最小交换次数](https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0801.%20%E4%BD%BF%E5%BA%8F%E5%88%97%E9%80%92%E5%A2%9E%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0.md) | 数组、动态规划 | 困难 | | 0802 | [找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0802.%20%E6%89%BE%E5%88%B0%E6%9C%80%E7%BB%88%E7%9A%84%E5%AE%89%E5%85%A8%E7%8A%B6%E6%80%81.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | | 0803 | [打砖块](https://leetcode.cn/problems/bricks-falling-when-hit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0803.%20%E6%89%93%E7%A0%96%E5%9D%97.md) | 并查集、数组、矩阵 | 困难 | +| 0804 | [唯一摩尔斯密码词](https://leetcode.cn/problems/unique-morse-code-words/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0804.%20%E5%94%AF%E4%B8%80%E6%91%A9%E5%B0%94%E6%96%AF%E5%AF%86%E7%A0%81%E8%AF%8D.md) | 数组、哈希表、字符串 | 简单 | | 0806 | [写字符串需要的行数](https://leetcode.cn/problems/number-of-lines-to-write-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0806.%20%E5%86%99%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%9C%80%E8%A6%81%E7%9A%84%E8%A1%8C%E6%95%B0.md) | 数组、字符串 | 简单 | | 0811 | [子域名访问计数](https://leetcode.cn/problems/subdomain-visit-count/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0811.%20%E5%AD%90%E5%9F%9F%E5%90%8D%E8%AE%BF%E9%97%AE%E8%AE%A1%E6%95%B0.md) | 数组、哈希表、字符串、计数 | 中等 | | 0814 | [二叉树剪枝](https://leetcode.cn/problems/binary-tree-pruning/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0814.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E5%89%AA%E6%9E%9D.md) | 树、深度优先搜索、二叉树 | 中等 | @@ -447,6 +448,7 @@ | 0860 | [柠檬水找零](https://leetcode.cn/problems/lemonade-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0860.%20%E6%9F%A0%E6%AA%AC%E6%B0%B4%E6%89%BE%E9%9B%B6.md) | 贪心、数组 | 简单 | | 0861 | [翻转矩阵后的得分](https://leetcode.cn/problems/score-after-flipping-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0861.%20%E7%BF%BB%E8%BD%AC%E7%9F%A9%E9%98%B5%E5%90%8E%E7%9A%84%E5%BE%97%E5%88%86.md) | 贪心、位运算、数组、矩阵 | 中等 | | 0867 | [转置矩阵](https://leetcode.cn/problems/transpose-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0867.%20%E8%BD%AC%E7%BD%AE%E7%9F%A9%E9%98%B5.md) | 数组、矩阵、模拟 | 简单 | +| 0868 | [二进制间距](https://leetcode.cn/problems/binary-gap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0868.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E9%97%B4%E8%B7%9D.md) | 位运算 | 简单 | | 0872 | [叶子相似的树](https://leetcode.cn/problems/leaf-similar-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0872.%20%E5%8F%B6%E5%AD%90%E7%9B%B8%E4%BC%BC%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、二叉树 | 简单 | | 0873 | [最长的斐波那契子序列的长度](https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0873.%20%E6%9C%80%E9%95%BF%E7%9A%84%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E9%95%BF%E5%BA%A6.md) | 数组、哈希表、动态规划 | 中等 | | 0875 | [爱吃香蕉的珂珂](https://leetcode.cn/problems/koko-eating-bananas/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0875.%20%E7%88%B1%E5%90%83%E9%A6%99%E8%95%89%E7%9A%84%E7%8F%82%E7%8F%82.md) | 数组、二分查找 | 中等 | @@ -563,6 +565,7 @@ | 1447 | [最简分数](https://leetcode.cn/problems/simplified-fractions/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1447.%20%E6%9C%80%E7%AE%80%E5%88%86%E6%95%B0.md) | 数学、字符串、数论 | 中等 | | 1449 | [数位成本和为目标值的最大数字](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1449.%20%E6%95%B0%E4%BD%8D%E6%88%90%E6%9C%AC%E5%92%8C%E4%B8%BA%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E5%AD%97.md) | 数组、动态规划 | 困难 | | 1450 | [在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1450.%20%E5%9C%A8%E6%97%A2%E5%AE%9A%E6%97%B6%E9%97%B4%E5%81%9A%E4%BD%9C%E4%B8%9A%E7%9A%84%E5%AD%A6%E7%94%9F%E4%BA%BA%E6%95%B0.md) | 数组 | 简单 | +| 1451 | [重新排列句子中的单词](https://leetcode.cn/problems/rearrange-words-in-a-sentence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1451.%20%E9%87%8D%E6%96%B0%E6%8E%92%E5%88%97%E5%8F%A5%E5%AD%90%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D.md) | 字符串、排序 | 中等 | | 1456 | [定长子串中元音的最大数目](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1456.%20%E5%AE%9A%E9%95%BF%E5%AD%90%E4%B8%B2%E4%B8%AD%E5%85%83%E9%9F%B3%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md) | 字符串、滑动窗口 | 中等 | | 1480 | [一维数组的动态和](https://leetcode.cn/problems/running-sum-of-1d-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1480.%20%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84%E7%9A%84%E5%8A%A8%E6%80%81%E5%92%8C.md) | 数组、前缀和 | 简单 | | 1482 | [制作 m 束花所需的最少天数](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1482.%20%E5%88%B6%E4%BD%9C%20m%20%E6%9D%9F%E8%8A%B1%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E5%B0%91%E5%A4%A9%E6%95%B0.md) | 数组、二分查找 | 中等 | @@ -606,6 +609,8 @@ | 1876 | [长度为三且各字符不同的子字符串](https://leetcode.cn/problems/substrings-of-size-three-with-distinct-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1876.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%E4%B8%89%E4%B8%94%E5%90%84%E5%AD%97%E7%AC%A6%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 哈希表、字符串、计数、滑动窗口 | 简单 | | 1877 | [数组中最大数对和的最小值](https://leetcode.cn/problems/minimize-maximum-pair-sum-in-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1877.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9C%80%E5%A4%A7%E6%95%B0%E5%AF%B9%E5%92%8C%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md) | 贪心、数组、双指针、排序 | 中等 | | 1879 | [两个数组最小的异或值之和](https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1879.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E6%9C%80%E5%B0%8F%E7%9A%84%E5%BC%82%E6%88%96%E5%80%BC%E4%B9%8B%E5%92%8C.md) | 位运算、数组、动态规划、状态压缩 | 困难 | +| 1893 | [检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1893.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%8C%BA%E5%9F%9F%E5%86%85%E6%89%80%E6%9C%89%E6%95%B4%E6%95%B0%E9%83%BD%E8%A2%AB%E8%A6%86%E7%9B%96.md) | 数组、哈希表、前缀和 | 简单 | +| 1897 | [重新分配字符使所有字符串都相等](https://leetcode.cn/problems/redistribute-characters-to-make-all-strings-equal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1897.%20%E9%87%8D%E6%96%B0%E5%88%86%E9%85%8D%E5%AD%97%E7%AC%A6%E4%BD%BF%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%83%BD%E7%9B%B8%E7%AD%89.md) | 哈希表、字符串、计数 | 简单 | | 1903 | [字符串中的最大奇数](https://leetcode.cn/problems/largest-odd-number-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1903.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%A5%87%E6%95%B0.md) | 贪心、数学、字符串 | 简单 | | 1925 | [统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1925.%20%E7%BB%9F%E8%AE%A1%E5%B9%B3%E6%96%B9%E5%92%8C%E4%B8%89%E5%85%83%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、枚举 | 简单 | | 1929 | [数组串联](https://leetcode.cn/problems/concatenation-of-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1929.%20%E6%95%B0%E7%BB%84%E4%B8%B2%E8%81%94.md) | 数组 | 简单 | diff --git a/Contents/00.Introduction/05.Categories-List.md b/Contents/00.Introduction/05.Categories-List.md index 46706346..976ef435 100644 --- a/Contents/00.Introduction/05.Categories-List.md +++ b/Contents/00.Introduction/05.Categories-List.md @@ -551,7 +551,7 @@ | 0354 | [俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0354.%20%E4%BF%84%E7%BD%97%E6%96%AF%E5%A5%97%E5%A8%83%E4%BF%A1%E5%B0%81%E9%97%AE%E9%A2%98.md) | 数组、二分查找、动态规划、排序 | 困难 | | 0673 | [最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0673.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、动态规划 | 中等 | | 1310 | [子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1310.%20%E5%AD%90%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%9F%A5%E8%AF%A2.md) | 位运算、数组、前缀和 | 中等 | -| 1893 | [检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | | 数组、哈希表、前缀和 | 简单 | +| 1893 | [检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1893.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%8C%BA%E5%9F%9F%E5%86%85%E6%89%80%E6%9C%89%E6%95%B4%E6%95%B0%E9%83%BD%E8%A2%AB%E8%A6%86%E7%9B%96.md) | 数组、哈希表、前缀和 | 简单 | ### 并查集题目 diff --git a/Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md b/Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md index c67d720a..9e5d5a02 100644 --- a/Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md +++ b/Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md @@ -9,5 +9,5 @@ | 0354 | [俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0354.%20%E4%BF%84%E7%BD%97%E6%96%AF%E5%A5%97%E5%A8%83%E4%BF%A1%E5%B0%81%E9%97%AE%E9%A2%98.md) | 数组、二分查找、动态规划、排序 | 困难 | | 0673 | [最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0673.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、动态规划 | 中等 | | 1310 | [子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1310.%20%E5%AD%90%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%9F%A5%E8%AF%A2.md) | 位运算、数组、前缀和 | 中等 | -| 1893 | [检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | | 数组、哈希表、前缀和 | 简单 | +| 1893 | [检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1893.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%8C%BA%E5%9F%9F%E5%86%85%E6%89%80%E6%9C%89%E6%95%B4%E6%95%B0%E9%83%BD%E8%A2%AB%E8%A6%86%E7%9B%96.md) | 数组、哈希表、前缀和 | 简单 | diff --git a/README.md b/README.md index 6c64d5d7..12595e21 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 827 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 832 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/0804. \345\224\257\344\270\200\346\221\251\345\260\224\346\226\257\345\257\206\347\240\201\350\257\215.md" "b/Solutions/0804. \345\224\257\344\270\200\346\221\251\345\260\224\346\226\257\345\257\206\347\240\201\350\257\215.md" new file mode 100644 index 00000000..f4d10cc9 --- /dev/null +++ "b/Solutions/0804. \345\224\257\344\270\200\346\221\251\345\260\224\346\226\257\345\257\206\347\240\201\350\257\215.md" @@ -0,0 +1,87 @@ +# [0804. 唯一摩尔斯密码词](https://leetcode.cn/problems/unique-morse-code-words/) + +- 标签:数组、哈希表、字符串 +- 难度:简单 + +## 题目链接 + +- [0804. 唯一摩尔斯密码词 - 力扣](https://leetcode.cn/problems/unique-morse-code-words/) + +## 题目大意 + +**描述**:国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: + +- `'a'` 对应 `".-"`, +- `'b'` 对应 `"-..."`, +- `'c'` 对应 `"-.-."` ,以此类推。 + +为了方便,所有 $26$ 个英文字母的摩尔斯密码表如下: + +`[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]` + +给定一个字符串数组 $words$,每个单词可以写成每个字母对应摩尔斯密码的组合。 + +- 例如,`"cab"` 可以写成 `"-.-..--..."` ,(即 `"-.-."` + `".-"` + `"-..."` 字符串的结合)。我们将这样一个连接过程称作单词翻译。 + +**要求**:对 $words$ 中所有单词进行单词翻译,返回不同单词翻译的数量。 + +**说明**: + +- $1 \le words.length \le 100$。 +- $1 \le words[i].length \le 12$。 +- $words[i]$ 由小写英文字母组成。 + +**示例**: + +- 示例 1: + +```python +输入: words = ["gin", "zen", "gig", "msg"] +输出: 2 +解释: +各单词翻译如下: +"gin" -> "--...-." +"zen" -> "--...-." +"gig" -> "--...--." +"msg" -> "--...--." + +共有 2 种不同翻译, "--...-." 和 "--...--.". +``` + +- 示例 2: + +```python +输入:words = ["a"] +输出:1 +``` + +## 解题思路 + +### 思路 1:模拟 + 哈希表 + +1. 根据题目要求,将所有单词都转换为对应摩斯密码。 +2. 使用哈希表存储所有转换后的摩斯密码。 +3. 返回哈希表中不同的摩斯密码个数(脊哈希表的长度)作为答案。 + +### 思路 1:代码 + +```Python +class Solution: + def uniqueMorseRepresentations(self, words: List[str]) -> int: + table = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."] + word_set = set() + + for word in words: + word_mose = "" + for ch in word: + word_mose += table[ord(ch) - ord('a')] + word_set.add(word_mose) + + return len(word_set) +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(s)$,其中 $s$ 为数组 $words$ 中所有单词的长度之和。 +- **空间复杂度**:$O(s)$。 + diff --git "a/Solutions/0868. \344\272\214\350\277\233\345\210\266\351\227\264\350\267\235.md" "b/Solutions/0868. \344\272\214\350\277\233\345\210\266\351\227\264\350\267\235.md" new file mode 100644 index 00000000..9b76fb1c --- /dev/null +++ "b/Solutions/0868. \344\272\214\350\277\233\345\210\266\351\227\264\350\267\235.md" @@ -0,0 +1,72 @@ +# [0868. 二进制间距](https://leetcode.cn/problems/binary-gap/) + +- 标签:位运算 +- 难度:简单 + +## 题目链接 + +- [0868. 二进制间距 - 力扣](https://leetcode.cn/problems/binary-gap/) + +## 题目大意 + +**描述**:给定一个正整数 $n$。 + +**要求**:找到并返回 $n$ 的二进制表示中两个相邻 $1$ 之间的最长距离。如果不存在两个相邻的 $1$,返回 $0$。 + +**说明**: + +- $1 \le n \le 10^9$。 + +**示例**: + +- 示例 1: + +```python +输入:n = 22 +输出:2 +解释:22 的二进制是 "10110"。 +在 22 的二进制表示中,有三个 1,组成两对相邻的 1。 +第一对相邻的 1 中,两个 1 之间的距离为 2。 +第二对相邻的 1 中,两个 1 之间的距离为 1。 +答案取两个距离之中最大的,也就是 2。 +``` + +- 示例 2: + +```python +输入:n = 8 +输出:0 +解释:8 的二进制是 "1000"。 +在 8 的二进制表示中没有相邻的两个 1,所以返回 0。 +``` + +## 解题思路 + +### 思路 1:遍历 + +1. 将正整数 $n$ 转为二进制字符串形式 $bin\underline{}n$。 +2. 使用变量 $pre$ 记录二进制字符串中上一个 $1$ 的位置,使用变量 $ans$ 存储两个相邻 $1$ 之间的最长距离。 +3. 遍历二进制字符串形式 $bin\underline{}n$ 的每一位,遇到 $1$ 时判断并更新两个相邻 $1$ 之间的最长距离。 +4. 遍历完返回两个相邻 $1$ 之间的最长距离,即 $ans$。 + +### 思路 1:代码 + +```Python +class Solution: + def binaryGap(self, n: int) -> int: + bin_n = bin(n) + pre, ans = 2, 0 + + for i in range(2, len(bin_n)): + if bin_n[i] == '1': + ans = max(ans, i - pre) + pre = i + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(\log n)$。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1451. \351\207\215\346\226\260\346\216\222\345\210\227\345\217\245\345\255\220\344\270\255\347\232\204\345\215\225\350\257\215.md" "b/Solutions/1451. \351\207\215\346\226\260\346\216\222\345\210\227\345\217\245\345\255\220\344\270\255\347\232\204\345\215\225\350\257\215.md" new file mode 100644 index 00000000..bf685290 --- /dev/null +++ "b/Solutions/1451. \351\207\215\346\226\260\346\216\222\345\210\227\345\217\245\345\255\220\344\270\255\347\232\204\345\215\225\350\257\215.md" @@ -0,0 +1,75 @@ +# [1451. 重新排列句子中的单词](https://leetcode.cn/problems/rearrange-words-in-a-sentence/) + +- 标签:字符串、排序 +- 难度:中等 + +## 题目链接 + +- [1451. 重新排列句子中的单词 - 力扣](https://leetcode.cn/problems/rearrange-words-in-a-sentence/) + +## 题目大意 + +**描述**:「句子」是一个用空格分隔单词的字符串。给定一个满足下述格式的句子 $text$: + +- 句子的首字母大写。 +- $text$ 中的每个单词都用单个空格分隔。 + +**要求**:重新排列 $text$ 中的单词,使所有单词按其长度的升序排列。如果两个单词的长度相同,则保留其在原句子中的相对顺序。 + +请同样按上述格式返回新的句子。 + +**说明**: + +- $text$ 以大写字母开头,然后包含若干小写字母以及单词间的单个空格。 +- $1 \le text.length \le 10^5$。 + +**示例**: + +- 示例 1: + +```python +输入:text = "Leetcode is cool" +输出:"Is cool leetcode" +解释:句子中共有 3 个单词,长度为 8 的 "Leetcode" ,长度为 2 的 "is" 以及长度为 4 的 "cool"。 +输出需要按单词的长度升序排列,新句子中的第一个单词首字母需要大写。 +``` + +- 示例 2: + +```python +输入:text = "Keep calm and code on" +输出:"On and keep calm code" +解释:输出的排序情况如下: +"On" 2 个字母。 +"and" 3 个字母。 +"keep" 4 个字母,因为存在长度相同的其他单词,所以它们之间需要保留在原句子中的相对顺序。 +"calm" 4 个字母。 +"code" 4 个字母。 +``` + +## 解题思路 + +### 思路 1:模拟 + +1. 将 $text$ 按照 `" "` 进行分割为单词数组 $words$。 +2. 将单词数组按照「单词长度」进行升序排序。 +3. 将单词数组用 `" "` 连接起来,并将首字母转为大写字母,其他字母转为小写字母,将结果存入答案字符串 $ans$ 中。 +4. 返回答案字符串 $ans$。 + +### 思路 1:代码 + +```Python +class Solution: + def arrangeWords(self, text: str) -> str: + words = text.split(' ') + words.sort(key=lambda word:len(word)) + ans = " ".join(words).capitalize() + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times \log n)$,其中 $n$ 为字符串 $text$ 的长度。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/1893. \346\243\200\346\237\245\346\230\257\345\220\246\345\214\272\345\237\237\345\206\205\346\211\200\346\234\211\346\225\264\346\225\260\351\203\275\350\242\253\350\246\206\347\233\226.md" "b/Solutions/1893. \346\243\200\346\237\245\346\230\257\345\220\246\345\214\272\345\237\237\345\206\205\346\211\200\346\234\211\346\225\264\346\225\260\351\203\275\350\242\253\350\246\206\347\233\226.md" new file mode 100644 index 00000000..8254aab6 --- /dev/null +++ "b/Solutions/1893. \346\243\200\346\237\245\346\230\257\345\220\246\345\214\272\345\237\237\345\206\205\346\211\200\346\234\211\346\225\264\346\225\260\351\203\275\350\242\253\350\246\206\347\233\226.md" @@ -0,0 +1,75 @@ +# [1893. 检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) + +- 标签:数组、哈希表、前缀和 +- 难度:简单 + +## 题目链接 + +- [1893. 检查是否区域内所有整数都被覆盖 - 力扣](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) + +## 题目大意 + +**描述**:给定一个二维整数数组 $ranges$ 和两个整数 $left$ 和 $right$。每个 $ranges[i] = [start_i, end_i]$ 表示一个从 $start_i$ 到 $end_i$ 的 闭区间 。 + +**要求**:如果闭区间 $[left, right]$ 内每个整数都被 $ranges$ 中至少一个区间覆盖,那么请你返回 $True$ ,否则返回 $False$。 + +**说明**: + +- $1 \le ranges.length \le 50$。 +- $1 \le start_i \le end_i \le 50$。 +- $1 \le left \le right \le 50$。 + +**示例**: + +- 示例 1: + +```python +输入:ranges = [[1,2],[3,4],[5,6]], left = 2, right = 5 +输出:True +解释:2 到 5 的每个整数都被覆盖了: +- 2 被第一个区间覆盖。 +- 3 和 4 被第二个区间覆盖。 +- 5 被第三个区间覆盖。 +``` + +- 示例 2: + +```python +输入:ranges = [[1,10],[10,20]], left = 21, right = 21 +输出:False +解释:21 没有被任何一个区间覆盖。 +``` + +## 解题思路 + +### 思路 1:暴力 + +区间的范围为 $[1, 50]$,所以我们可以使用一个长度为 $51$ 的标志数组 $flags$ 用于标记区间内的所有整数。 + +1. 遍历数组 $ranges$ 中的所有区间 $[l, r]$。 +2. 对于区间 $[l, r]$ 和区间 $[left, right]$,将两区间相交部分标记为 $True$。 +3. 遍历区间 $[left, right]$ 上的所有整数,判断对应标志位是否为 $False$。 +4. 如果对应标志位出现 $False$,则返回 $False$。 +5. 如果遍历完所有标志位都为 $True$,则返回 $True$。 + +### 思路 1:代码 + +```Python +class Solution: + def isCovered(self, ranges: List[List[int]], left: int, right: int) -> bool: + flags = [False for _ in range(51)] + for l, r in ranges: + for i in range(max(l, left), min(r, right) + 1): + flags[i] = True + + for i in range(left, right + 1): + if not flags[i]: + return False + + return True +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(50 \times n)$。 +- **空间复杂度**:$O(50)$。 diff --git "a/Solutions/1897. \351\207\215\346\226\260\345\210\206\351\205\215\345\255\227\347\254\246\344\275\277\346\211\200\346\234\211\345\255\227\347\254\246\344\270\262\351\203\275\347\233\270\347\255\211.md" "b/Solutions/1897. \351\207\215\346\226\260\345\210\206\351\205\215\345\255\227\347\254\246\344\275\277\346\211\200\346\234\211\345\255\227\347\254\246\344\270\262\351\203\275\347\233\270\347\255\211.md" new file mode 100644 index 00000000..c6bd6f13 --- /dev/null +++ "b/Solutions/1897. \351\207\215\346\226\260\345\210\206\351\205\215\345\255\227\347\254\246\344\275\277\346\211\200\346\234\211\345\255\227\347\254\246\344\270\262\351\203\275\347\233\270\347\255\211.md" @@ -0,0 +1,78 @@ +# [1897. 重新分配字符使所有字符串都相等](https://leetcode.cn/problems/redistribute-characters-to-make-all-strings-equal/) + +- 标签:哈希表、字符串、计数 +- 难度:简单 + +## 题目链接 + +- [1897. 重新分配字符使所有字符串都相等 - 力扣](https://leetcode.cn/problems/redistribute-characters-to-make-all-strings-equal/) + +## 题目大意 + +**描述**:给定一个字符串数组 $words$(下标从 $0$ 开始计数)。 + +在一步操作中,需先选出两个 不同 下标 $i$ 和 $j$,其中 $words[i]$ 是一个非空字符串,接着将 $words[i]$ 中的任一字符移动到 $words[j]$ 中的 任一 位置上。 + +**要求**:如果执行任意步操作可以使 $words$ 中的每个字符串都相等,返回 $True$;否则,返回 $False$。 + +**说明**: + +- $1 <= words.length <= 100$。 +- $1 <= words[i].length <= 100$ +- $words[i]$ 由小写英文字母组成。 + +**示例**: + +- 示例 1: + +```python +输入:words = ["abc","aabc","bc"] +输出:true +解释:将 words[1] 中的第一个 'a' 移动到 words[2] 的最前面。 +使 words[1] = "abc" 且 words[2] = "abc"。 +所有字符串都等于 "abc" ,所以返回 True。 +``` + +- 示例 2: + +```python +输入:words = ["ab","a"] +输出:False +解释:执行操作无法使所有字符串都相等。 +``` + +## 解题思路 + +### 思路 1:哈希表 + +如果通过重新分配字符能够使所有字符串都相等,则所有字符串的字符需要满足: + +1. 每个字符串中字符种类相同, +2. 每个字符串中各种字符的个数相同。 + +则我们可以使用哈希表来统计字符串中字符种类及个数。具体步骤如下: + +1. 遍历单词数组 $words$ 中的所有单词 $word$。 +2. 遍历所有单词 $word$ 中的所有字符 $ch$。 +3. 使用哈希表 $cnts$ 统计字符种类及个数。 +4. 如果所有字符个数都是单词个数的倍数,则说明通过重新分配字符能够使所有字符串都相等,则返回 $True$。 +5. 否则返回 $False$。 + +### 思路 1:代码 + +```Python +class Solution: + def makeEqual(self, words: List[str]) -> bool: + size = len(words) + cnts = Counter() + for word in words: + for ch in word: + cnts[ch] += 1 + + return all(value % size == 0 for key, value in cnts.items()) +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(s + |\sum|)$,其中 $s$ 为数组 $words$ 中所有单词的长度之和,$\sum$ 是字符集,本题中 $|\sum| = 26$。 +- **空间复杂度**:$O(|\sum|)$。 From 0209deb3774271fea9831f38195a538b015e04ba Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 8 Jan 2024 11:54:48 +0800 Subject: [PATCH 051/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 4 +- README.md | 2 +- ...347\232\204\344\270\252\346\225\260 II.md" | 51 +++++++-- ...02\347\232\204\346\213\254\345\217\267.md" | 101 ++++++++++++++++++ ...60\347\273\204\351\200\222\345\242\236.md" | 75 +++++++++++++ 5 files changed, 220 insertions(+), 13 deletions(-) create mode 100644 "Solutions/1021. \345\210\240\351\231\244\346\234\200\345\244\226\345\261\202\347\232\204\346\213\254\345\217\267.md" create mode 100644 "Solutions/1827. \346\234\200\345\260\221\346\223\215\344\275\234\344\275\277\346\225\260\347\273\204\351\200\222\345\242\236.md" diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index 7013c6dd..ce608f12 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 832 道) +# LeetCode 题解(已完成 834 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -499,6 +499,7 @@ | 1012 | [至少有 1 位重复的数字](https://leetcode.cn/problems/numbers-with-repeated-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1012.%20%E8%87%B3%E5%B0%91%E6%9C%89%201%20%E4%BD%8D%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97.md) | 数学、动态规划 | 困难 | | 1014 | [最佳观光组合](https://leetcode.cn/problems/best-sightseeing-pair/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1014.%20%E6%9C%80%E4%BD%B3%E8%A7%82%E5%85%89%E7%BB%84%E5%90%88.md) | 数组、动态规划 | 中等 | | 1020 | [飞地的数量](https://leetcode.cn/problems/number-of-enclaves/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1020.%20%E9%A3%9E%E5%9C%B0%E7%9A%84%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| 1021 | [删除最外层的括号](https://leetcode.cn/problems/remove-outermost-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1021.%20%E5%88%A0%E9%99%A4%E6%9C%80%E5%A4%96%E5%B1%82%E7%9A%84%E6%8B%AC%E5%8F%B7.md) | 栈、字符串 | 简单 | | 1023 | [驼峰式匹配](https://leetcode.cn/problems/camelcase-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1023.%20%E9%A9%BC%E5%B3%B0%E5%BC%8F%E5%8C%B9%E9%85%8D.md) | 字典树、双指针、字符串、字符串匹配 | 中等 | | 1025 | [除数博弈](https://leetcode.cn/problems/divisor-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1025.%20%E9%99%A4%E6%95%B0%E5%8D%9A%E5%BC%88.md) | 脑筋急转弯、数学、动态规划、博弈 | 简单 | | 1028 | [从先序遍历还原二叉树](https://leetcode.cn/problems/recover-a-tree-from-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1028.%20%E4%BB%8E%E5%85%88%E5%BA%8F%E9%81%8D%E5%8E%86%E8%BF%98%E5%8E%9F%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、字符串、二叉树 | 困难 | @@ -602,6 +603,7 @@ | 1790 | [仅执行一次字符串交换能否使两个字符串相等](https://leetcode.cn/problems/check-if-one-string-swap-can-make-strings-equal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1790.%20%E4%BB%85%E6%89%A7%E8%A1%8C%E4%B8%80%E6%AC%A1%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BA%A4%E6%8D%A2%E8%83%BD%E5%90%A6%E4%BD%BF%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E7%AD%89.md) | 哈希表、字符串、计数 | 简单 | | 1791 | [找出星型图的中心节点](https://leetcode.cn/problems/find-center-of-star-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1791.%20%E6%89%BE%E5%87%BA%E6%98%9F%E5%9E%8B%E5%9B%BE%E7%9A%84%E4%B8%AD%E5%BF%83%E8%8A%82%E7%82%B9.md) | 图 | 简单 | | 1822 | [数组元素积的符号](https://leetcode.cn/problems/sign-of-the-product-of-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1822.%20%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E7%A7%AF%E7%9A%84%E7%AC%A6%E5%8F%B7.md) | 数组、数学 | 简单 | +| 1827 | [最少操作使数组递增](https://leetcode.cn/problems/minimum-operations-to-make-the-array-increasing/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1827.%20%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E4%BD%BF%E6%95%B0%E7%BB%84%E9%80%92%E5%A2%9E.md) | 贪心、数组 | 简单 | | 1833 | [雪糕的最大数量](https://leetcode.cn/problems/maximum-ice-cream-bars/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1833.%20%E9%9B%AA%E7%B3%95%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md) | 贪心、数组、排序 | 中等 | | 1844 | [将所有数字用字符替换](https://leetcode.cn/problems/replace-all-digits-with-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1844.%20%E5%B0%86%E6%89%80%E6%9C%89%E6%95%B0%E5%AD%97%E7%94%A8%E5%AD%97%E7%AC%A6%E6%9B%BF%E6%8D%A2.md) | 字符串 | 简单 | | 1858 | [包含所有前缀的最长单词](https://leetcode.cn/problems/longest-word-with-all-prefixes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1858.%20%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E5%89%8D%E7%BC%80%E7%9A%84%E6%9C%80%E9%95%BF%E5%8D%95%E8%AF%8D.md) | 深度优先搜索、字典树 | 中等 | diff --git a/README.md b/README.md index 12595e21..2b3b7a9b 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 832 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 834 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" "b/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" index 2ddd2171..aa181a7a 100644 --- "a/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" +++ "b/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" @@ -9,25 +9,49 @@ ## 题目大意 -给定一个二进制数组,可以最多将 `1` 个 `0` 翻转为 `1`。 +**描述**:给定一个二进制数组 $nums$,可以最多将 $1$ 个 $0$ 翻转为 $1$。 -要求:找出其中最大连续 `1` 的个数。 +**要求**:如果最多可以翻转一个 $0$,则返回数组中连续 $1$ 的最大个数。 + +**说明**: + +- 1 <= nums.length <= 105 + nums[i] 不是 0 就是 1. + +**示例**: + +- 示例 1: + +```python +输入:nums = [1,0,1,1,0] +输出:4 +解释:翻转第一个 0 可以得到最长的连续 1。当翻转以后,最大连续 1 的个数为 4。 +``` + +- 示例 2: + +```python +输入:nums = [1,0,1,1,0,1] +输出:4 +``` ## 解题思路 -暴力做法是尝试将每个位置的 `0` 分别变为 `1`,然后统计最大连续 `1` 的个数。但这样复杂度就太高了。 +### 思路 1:滑动窗口 -我们可以使用滑动窗口来解决问题。保证滑动窗口内最多有 `1` 个 `0`。具体做法如下: +暴力做法是尝试将每个位置的 $0$ 分别变为 $1$,然后统计最大连续 $1$ 的个数。但这样复杂度就太高了。 -设定两个指针:`left`、`right`,分别指向滑动窗口的左右边界,保证滑动窗口内最多有 `1` 个 `0`。使用 `zero_count` 统计窗口内 `1` 的个数。使用 `ans` 记录答案。 +我们可以使用滑动窗口来解决问题。保证滑动窗口内最多有 $1$ 个 $0$。具体做法如下: -- 一开始,`left`、`right` 都指向 `0`。 -- 如果 `nums[right] == 0`,则窗口内 `1` 的个数 + 1。 -- 如果该窗口中 `1` 的个数多于 `1` 个,即 `zero_count > 1`,则不断右移 `left`,缩小滑动窗口长度,并更新窗口中 `1` 的个数,直到 `zero_count <= 1`。 -- 维护更新最大连续 `1` 的个数。然后右移 `right`,直到 `right >= len(nums)` 结束。 -- 输出最大连续 `1` 的个数。 +设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证滑动窗口内最多有 $1$ 个 $0$。使用 $zero\underline{}count$ 统计窗口内 $1$ 的个数。使用 $ans$ 记录答案。 -## 代码 +- 一开始,$left$、$right$ 都指向 $0$。 +- 如果 $nums[right] == 0$,则窗口内 $1$ 的个数加 $1$。 +- 如果该窗口中 $1$ 的个数多于 $1$ 个,即 $zero\underline{}count > 1$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口中 $1$ 的个数,直到 $zero\underline{}count \le 1$。 +- 维护更新最大连续 $1$ 的个数。然后右移 $right$,直到 $right \ge len(nums)$ 结束。 +- 输出最大连续 $1$ 的个数。 + +### 思路 1:代码 ```python class Solution: @@ -49,3 +73,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $nums$ 的长度。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1021. \345\210\240\351\231\244\346\234\200\345\244\226\345\261\202\347\232\204\346\213\254\345\217\267.md" "b/Solutions/1021. \345\210\240\351\231\244\346\234\200\345\244\226\345\261\202\347\232\204\346\213\254\345\217\267.md" new file mode 100644 index 00000000..3f9243fb --- /dev/null +++ "b/Solutions/1021. \345\210\240\351\231\244\346\234\200\345\244\226\345\261\202\347\232\204\346\213\254\345\217\267.md" @@ -0,0 +1,101 @@ +# [1021. 删除最外层的括号](https://leetcode.cn/problems/remove-outermost-parentheses/) + +- 标签:栈、字符串 +- 难度:简单 + +## 题目链接 + +- [1021. 删除最外层的括号 - 力扣](https://leetcode.cn/problems/remove-outermost-parentheses/) + +## 题目大意 + +**描述**:有效括号字符串为空 `""`、`"("` + $A$ + `")"` 或 $A + B$ ,其中 $A$ 和 $B$ 都是有效的括号字符串,$+$ 代表字符串的连接。 + +- 例如,`""`,`"()"`,`"(())()"` 和 `"(()(()))"` 都是有效的括号字符串。 + +如果有效字符串 $s$ 非空,且不存在将其拆分为 $s = A + B$ 的方法,我们称其为原语(primitive),其中 $A$ 和 $B$ 都是非空有效括号字符串。 + +给定一个非空有效字符串 $s$,考虑将其进行原语化分解,使得:$s = P_1 + P_2 + ... + P_k$,其中 $P_i$ 是有效括号字符串原语。 + +**要求**:对 $s$ 进行原语化分解,删除分解中每个原语字符串的最外层括号,返回 $s$。 + +**说明**: + +- $1 \le s.length \le 10^5$。 +- $s[i]$ 为 `'('` 或 `')'`。 +- $s$ 是一个有效括号字符串。 + +**示例**: + +- 示例 1: + +```python +输入:s = "(()())(())" +输出:"()()()" +解释: +输入字符串为 "(()())(())",原语化分解得到 "(()())" + "(())", +删除每个部分中的最外层括号后得到 "()()" + "()" = "()()()"。 +``` + +- 示例 2: + +```python +输入:s = "(()())(())(()(()))" +输出:"()()()()(())" +解释: +输入字符串为 "(()())(())(()(()))",原语化分解得到 "(()())" + "(())" + "(()(()))", +删除每个部分中的最外层括号后得到 "()()" + "()" + "()(())" = "()()()()(())"。 +``` + +## 解题思路 + +### 思路 1:计数遍历 + +题目要求我们对 $s$ 进行原语化分解,并且删除分解中每个原语字符串的最外层括号。 + +通过观察可以发现,每个原语其实就是一组有效的括号对(左右括号匹配时),此时我们需要删除这组有效括号对的最外层括号。 + +我们可以使用一个计数器 $cnt$ 来进行原语化分解,并删除每个原语的最外层括号。 + +当计数器遇到左括号时,令计数器 $cnt$ 加 $1$,当计数器遇到右括号时,令计数器 $cnt$ 减 $1$。这样当计数器为 $0$ 时表示当前左右括号匹配。 + +为了删除每个原语的最外层括号,当遇到每个原语最外侧的左括号时(此时 $cnt$ 必然等于 $0$,因为之前字符串为空或者为上一个原语字符串),因为我们不需要最外层的左括号,所以此时我们不需要将其存入答案字符串中。只有当 $cnt > 0$ 时,才将其存入答案字符串中。 + +同理,当遇到每个原语最外侧的右括号时(此时 $cnt$ 必然等于 $1$,因为之前字符串差一个右括号匹配),因为我们不需要最外层的右括号,所以此时我们不需要将其存入答案字符串中。只有当 $cnt > 1$ 时,才将其存入答案字符串中。 + +具体步骤如下: + +1. 遍历字符串 $s$。 +2. 如果遇到 `'('`,判断当前计数器是否大于 $0$: + 1. 如果 $cnt > 0$,则将 `'('` 存入答案字符串中,并令计数器加 $1$,即:`cnt += 1`。 + 2. 如果 $cnt == 0$,则令计数器加 $1$,即:`cnt += 1`。 +3. 如果遇到 `')'`,判断当前计数器是否大于 $1$: + 1. 如果 $cnt > 1$,则将 `')'` 存入答案字符串中,并令计数器减 $1$,即:`cnt -= 1`。 + 2. 如果 $cnt == 1$,则令计数器减 $1$,即:`cnt -= 1`。 +4. 遍历完返回答案字符串 $ans$。 + +### 思路 1:代码 + +```Python +class Solution: + def removeOuterParentheses(self, s: str) -> str: + cnt, ans = 0, "" + + for ch in s: + if ch == '(': + if cnt > 0: + ans += ch + cnt += 1 + else: + if cnt > 1: + ans += ch + cnt -= 1 + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为字符串 $s$ 的长度。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/1827. \346\234\200\345\260\221\346\223\215\344\275\234\344\275\277\346\225\260\347\273\204\351\200\222\345\242\236.md" "b/Solutions/1827. \346\234\200\345\260\221\346\223\215\344\275\234\344\275\277\346\225\260\347\273\204\351\200\222\345\242\236.md" new file mode 100644 index 00000000..b222ce54 --- /dev/null +++ "b/Solutions/1827. \346\234\200\345\260\221\346\223\215\344\275\234\344\275\277\346\225\260\347\273\204\351\200\222\345\242\236.md" @@ -0,0 +1,75 @@ +# [1827. 最少操作使数组递增](https://leetcode.cn/problems/minimum-operations-to-make-the-array-increasing/) + +- 标签:贪心、数组 +- 难度:简单 + +## 题目链接 + +- [1827. 最少操作使数组递增 - 力扣](https://leetcode.cn/problems/minimum-operations-to-make-the-array-increasing/) + +## 题目大意 + +**描述**:给定一个整数数组 $nums$(下标从 $0$ 开始)。每一次操作中,你可以选择数组中的一个元素,并将它增加 $1$。 + +- 比方说,如果 $nums = [1,2,3]$,你可以选择增加 $nums[1]$ 得到 $nums = [1,3,3]$。 + +**要求**:请你返回使 $nums$ 严格递增的最少操作次数。 + +**说明**: + +- 我们称数组 $nums$ 是严格递增的,当它满足对于所有的 $0 \le i < nums.length - 1$ 都有 $nums[i] < nums[i + 1]$。一个长度为 $1$ 的数组是严格递增的一种特殊情况。 +- $1 \le nums.length \le 5000$。 +- $1 \le nums[i] \le 10^4$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [1,1,1] +输出:3 +解释:你可以进行如下操作: +1) 增加 nums[2] ,数组变为 [1,1,2]。 +2) 增加 nums[1] ,数组变为 [1,2,2]。 +3) 增加 nums[2] ,数组变为 [1,2,3]。 +``` + +- 示例 2: + +```python +输入:nums = [1,5,2,4,1] +输出:14 +``` + +## 解题思路 + +### 思路 1:贪心算法 + +题目要求使 $nums$ 严格递增的最少操作次数。当遇到 $nums[i - 1] \ge nums[i]$ 时,我们应该在满足要求的同时,尽可能使得操作次数最少,则 $nums[i]$ 应增加到 $nums[i - 1] + 1$ 时,此时操作次数最少,并且满足 $nums[i - 1] < nums[i]$。 + +具体操作步骤如下: + +1. 从左到右依次遍历数组元素。 +2. 如果遇到 $nums[i - 1] \ge nums[i]$ 时: + 1. 本次增加的最少操作次数为 $nums[i - 1] + 1 - nums[i]$,将其计入答案中。 + 2. 将 $nums[i]$ 变为 $nums[i - 1] + 1$。 +3. 遍历完返回答案 $ans$。 + +### 思路 1:代码 + +```Python +class Solution: + def minOperations(self, nums: List[int]) -> int: + ans = 0 + for i in range(1, len(nums)): + if nums[i - 1] >= nums[i]: + ans += nums[i - 1] + 1 - nums[i] + nums[i] = nums[i - 1] + 1 + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $nums$ 的长度。 +- **空间复杂度**:$O(1)$。 From 9ad7c09bfa83f17fed3e8b5c05fede56e745212b Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 8 Jan 2024 18:04:23 +0800 Subject: [PATCH 052/158] =?UTF-8?q?Create=200862.=20=E5=92=8C=E8=87=B3?= =?UTF-8?q?=E5=B0=91=E4=B8=BA=20K=20=E7=9A=84=E6=9C=80=E7=9F=AD=E5=AD=90?= =?UTF-8?q?=E6=95=B0=E7=BB=84.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...55\345\255\220\346\225\260\347\273\204.md" | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 "Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" diff --git "a/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" new file mode 100644 index 00000000..4b154852 --- /dev/null +++ "b/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" @@ -0,0 +1,102 @@ +# [0862. 和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) + +- 标签:队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) +- 难度:困难 + +## 题目链接 + +- [0862. 和至少为 K 的最短子数组 - 力扣](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) + +## 题目大意 + +**描述**:给定一个整数数组 $nums$ 和一个整数 $k$。 + +**要求**:找出 $nums$ 中和至少为 $k$ 的最短非空子数组,并返回该子数组的长度。如果不存在这样的子数组,返回 $-1$。 + +**说明**: + +- **子数组**:数组中连续的一部分。 +- $1 \le nums.length \le 10^5$。 +- $-10^5 \le nums[i] \le 10^5$。 +- $1 \le k \le 10^9$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [1], k = 1 +输出:1 +``` + +- 示例 2: + +```python +输入:nums = [1,2], k = 4 +输出:-1 +``` + +## 解题思路 + +### 思路 1:前缀和 + 单调队列 + +题目要求得到满足和至少为 $k$ 的子数组的最短长度。 + +先来考虑暴力做法。如果使用两重循环分别遍历子数组的开始和结束位置,则可以直接求出所有满足条件的子数组,以及对应长度。但是这种做法的时间复杂度为 $O(n^2)$。我们需要对其进行优化。 + +#### 1. 前缀和优化 + +首先对于子数组和,我们可以使用「前缀和」的方式,方便快速的得到某个子数组的和。 + +对于区间 $[left, right]$,通过 $pre\underline{}sum[right + 1] - prefix\underline{}cnts[left]$ 即可快速求解出区间 $[left, right]$ 的子数组和。 + +此时问题就转变为:是否能找到满足 $i > j$ 且 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$ 两个条件的子数组 $[j, i)$?如果能找到,则找出 $i - j$ 差值最小的作为答案。 + +#### 2. 单调队列优化 + +对于区间 $[j, i)$ 来说,我们应该尽可能的减少不成立的区间枚举。 + +1. 对于某个区间 $[j, i)$ 来说,如果 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$,那么大于 $i$ 的索引值就不用再进行枚举了,不可能比 $i - j$ 的差值更优了。此时我们应该尽可能的向右移动 $j$,从而使得 $i - j$ 更小。 +2. 对于某个区间 $[j, i)$ 来说,如果 $pre\underline{}sum[j] \ge pre\underline{}sum[i]$,对于任何大于等于 $i$ 的索引值 $r$ 来说,$pre\underline{}sum[r] - pre\underline{}sum[i]$ 一定比 $pre\underline{}sum[i] - pre\underline{}sum[j]$ 更小且长度更小。此时 $pre\underline{}sum[j]$ 可以直接忽略掉。 + +因此,我们可以使用单调队列来保存单调递增的 $pre\underline{}sum[x]$ 值的下标。 + +对于每一个位置 $i$ 我们可以判断其之前存入在单调队列中的 $pre\underline{}sum[j]$ 值,如果 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$,则更新答案,并将 $j$ 从队头位置弹出。直到 $pre\underline{}sum[i] - pre\underline{}sum[j] < k$ 时为止。 + +如果队尾 $pre\underline{}sum[j] \ge pre\underline{}sum[i]$,那么 $$ + +使用一重循环遍历 $i$,对于 $pre\underline{}sum[i]$,我们希望使用某个数据结构,能够使得在满足 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$ 当前前提下,能够尽可能的向右移动 $j$,从而使得 $i - j$ 最小。 + +### 思路 1:代码 + +```Python +class Solution: + def shortestSubarray(self, nums: List[int], k: int) -> int: + size = len(nums) + + pre_sum = [0 for _ in range(size + 1)] + for i in range(size): + pre_sum[i + 1] = pre_sum[i] + nums[i] + + ans = float('inf') + queue = collections.deque() + + for i in range(size + 1): + # 优化 1 + while queue and pre_sum[i] - pre_sum[queue[0]] >= k: + ans = min(ans, i - queue.popleft()) + # 优化 2 + while queue and pre_sum[queue[-1]] >= pre_sum[i]: + queue.pop() + queue.append(i) + + if ans == float('inf'): + return -1 + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $nums$ 的长度。 +- **空间复杂度**:$O(n)$。 + From 8a8154b4683feb3a487d30a160e833a2ba798f16 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 8 Jan 2024 20:08:50 +0800 Subject: [PATCH 053/158] =?UTF-8?q?Update=200862.=20=E5=92=8C=E8=87=B3?= =?UTF-8?q?=E5=B0=91=E4=B8=BA=20K=20=E7=9A=84=E6=9C=80=E7=9F=AD=E5=AD=90?= =?UTF-8?q?=E6=95=B0=E7=BB=84.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...55\345\255\220\346\225\260\347\273\204.md" | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git "a/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" index 4b154852..49d4e76b 100644 --- "a/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" @@ -57,15 +57,14 @@ 对于区间 $[j, i)$ 来说,我们应该尽可能的减少不成立的区间枚举。 1. 对于某个区间 $[j, i)$ 来说,如果 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$,那么大于 $i$ 的索引值就不用再进行枚举了,不可能比 $i - j$ 的差值更优了。此时我们应该尽可能的向右移动 $j$,从而使得 $i - j$ 更小。 -2. 对于某个区间 $[j, i)$ 来说,如果 $pre\underline{}sum[j] \ge pre\underline{}sum[i]$,对于任何大于等于 $i$ 的索引值 $r$ 来说,$pre\underline{}sum[r] - pre\underline{}sum[i]$ 一定比 $pre\underline{}sum[i] - pre\underline{}sum[j]$ 更小且长度更小。此时 $pre\underline{}sum[j]$ 可以直接忽略掉。 +2. 对于某个区间 $[j, i)$ 来说,如果 $pre\underline{}sum[j] \ge pre\underline{}sum[i]$,对于任何大于等于 $i$ 的索引值 $r$ 来说,$pre\underline{}sum[r] - pre\underline{}sum[i]$ 一定比 $pre\underline{}sum[i] - pre\underline{}sum[j]$ 更小且长度更小,此时 $pre\underline{}sum[j]$ 可以直接忽略掉。 -因此,我们可以使用单调队列来保存单调递增的 $pre\underline{}sum[x]$ 值的下标。 +因此,我们可以使用单调队列来维护单调递增的前缀数组 $pre\underline{}sum$。其中存放了下标 $x:x_0, x_1, …$,满足 $pre\underline{}sum[x_0] < pre\underline{}sum[x_1] < …$ 单调递增。 -对于每一个位置 $i$ 我们可以判断其之前存入在单调队列中的 $pre\underline{}sum[j]$ 值,如果 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$,则更新答案,并将 $j$ 从队头位置弹出。直到 $pre\underline{}sum[i] - pre\underline{}sum[j] < k$ 时为止。 - -如果队尾 $pre\underline{}sum[j] \ge pre\underline{}sum[i]$,那么 $$ - -使用一重循环遍历 $i$,对于 $pre\underline{}sum[i]$,我们希望使用某个数据结构,能够使得在满足 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$ 当前前提下,能够尽可能的向右移动 $j$,从而使得 $i - j$ 最小。 +1. 使用一重循环遍历位置 $i$,将当前位置 $i$ 存入倒掉队列中。 +2. 对于每一个位置 $i$,如果单调队列不为空,则可以判断其之前存入在单调队列中的 $pre\underline{}sum[j]$ 值,如果 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$,则更新答案,并将 $j$ 从队头位置弹出。直到不再满足 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$ 时为止(即 $pre\underline{}sum[i] - pre\underline{}sum[j] < k$)。 +3. 如果队尾 $pre\underline{}sum[j] \ge pre\underline{}sum[i]$,那么说明以后无论如何都不会再考虑 $pre\underline{}sum[j]$ 了,则将其从队尾弹出。 +4. 最后遍历完返回答案。 ### 思路 1:代码 @@ -74,6 +73,7 @@ class Solution: def shortestSubarray(self, nums: List[int], k: int) -> int: size = len(nums) + # 优化 1 pre_sum = [0 for _ in range(size + 1)] for i in range(size): pre_sum[i + 1] = pre_sum[i] + nums[i] @@ -81,11 +81,10 @@ class Solution: ans = float('inf') queue = collections.deque() - for i in range(size + 1): - # 优化 1 + for i in range(size + 1): + # 优化 2 while queue and pre_sum[i] - pre_sum[queue[0]] >= k: ans = min(ans, i - queue.popleft()) - # 优化 2 while queue and pre_sum[queue[-1]] >= pre_sum[i]: queue.pop() queue.append(i) From 0dc15ee307d6845c7e454e9afae66852a8dc511f Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 8 Jan 2024 20:13:29 +0800 Subject: [PATCH 054/158] =?UTF-8?q?Update=200862.=20=E5=92=8C=E8=87=B3?= =?UTF-8?q?=E5=B0=91=E4=B8=BA=20K=20=E7=9A=84=E6=9C=80=E7=9F=AD=E5=AD=90?= =?UTF-8?q?=E6=95=B0=E7=BB=84.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\200\347\237\255\345\255\220\346\225\260\347\273\204.md" | 6 ++++++ 1 file changed, 6 insertions(+) diff --git "a/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" index 49d4e76b..8bef1d78 100644 --- "a/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" @@ -99,3 +99,9 @@ class Solution: - **时间复杂度**:$O(n)$,其中 $n$ 为数组 $nums$ 的长度。 - **空间复杂度**:$O(n)$。 +## 参考资料 + +- 【题解】[862. 和至少为 K 的最短子数组 - 力扣](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/solutions/1925036/liang-zhang-tu-miao-dong-dan-diao-dui-li-9fvh/) +- 【题解】[Leetcode 862:和至少为 K 的最短子数组 - 掘金](https://juejin.cn/post/7076316608460750856) +- 【题解】[LeetCode 862. 和至少为 K 的最短子数组 - AcWing](https://www.acwing.com/solution/leetcode/content/612/) +- 【题解】[0862. Shortest Subarray With Sum at Least K | LeetCode Cookbook](https://books.halfrost.com/leetcode/ChapterFour/0800~0899/0862.Shortest-Subarray-with-Sum-at-Least-K/) From dfd20dfeee86157cba12b104b9c2187b1fef0c1f Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 9 Jan 2024 12:20:43 +0800 Subject: [PATCH 055/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Origins/Categories-List.md | 4 +- Contents/00.Introduction/04.Solutions-List.md | 5 +- .../00.Introduction/05.Categories-List.md | 2 +- .../00.Introduction/07.Interview-200-List.md | 2 +- .../02.Array-Sliding-Window-List.md | 1 - .../02.Monotone-Stack-List.md | 1 + README.md | 2 +- ...15\345\244\215\345\255\227\347\254\246.md" | 46 +++++++-- ...04\346\243\213\345\255\220\346\225\260.md" | 93 +++++++++++++++++++ ...26\347\240\201\345\210\227\350\241\250.md" | 69 ++++++++++++++ ...17\346\223\215\344\275\234\346\225\260.md" | 53 ++++++++--- ...00\345\244\247\345\276\227\345\210\206.md" | 47 ++++++++-- 12 files changed, 293 insertions(+), 32 deletions(-) create mode 100644 "Solutions/0999. \345\217\257\344\273\245\350\242\253\344\270\200\346\255\245\346\215\225\350\216\267\347\232\204\346\243\213\345\255\220\346\225\260.md" create mode 100644 "Solutions/1313. \350\247\243\345\216\213\347\274\251\347\274\226\347\240\201\345\210\227\350\241\250.md" diff --git a/Assets/Origins/Categories-List.md b/Assets/Origins/Categories-List.md index 333d9bd1..4b27c52e 100644 --- a/Assets/Origins/Categories-List.md +++ b/Assets/Origins/Categories-List.md @@ -93,7 +93,7 @@ #### 不定长度窗口题目 -###### 0674. 最长连续递增序列、0485. 最大连续 1 的个数、0487. 最大连续1的个数 II、0076. 最小覆盖子串、0718. 最长重复子数组、0209. 长度最小的子数组、0862. 和至少为 K 的最短子数组、1004. 最大连续1的个数 III、1658. 将 x 减到 0 的最小操作数、0424. 替换后的最长重复字符、0003. 无重复字符的最长子串、1695. 删除子数组的最大得分、1208. 尽可能使字符串相等、1493. 删掉一个元素以后全为 1 的最长子数组、0727. 最小窗口子序列、0159. 至多包含两个不同字符的最长子串、0340. 至多包含 K 个不同字符的最长子串、0795. 区间子数组个数、0992. K 个不同整数的子数组、0713. 乘积小于 K 的子数组、0904. 水果成篮、1358. 包含所有三种字符的子字符串数目、0467. 环绕字符串中唯一的子字符串、1438. 绝对差不超过限制的最长连续子数组 +###### 0674. 最长连续递增序列、0485. 最大连续 1 的个数、0487. 最大连续1的个数 II、0076. 最小覆盖子串、0718. 最长重复子数组、0209. 长度最小的子数组、1004. 最大连续1的个数 III、1658. 将 x 减到 0 的最小操作数、0424. 替换后的最长重复字符、0003. 无重复字符的最长子串、1695. 删除子数组的最大得分、1208. 尽可能使字符串相等、1493. 删掉一个元素以后全为 1 的最长子数组、0727. 最小窗口子序列、0159. 至多包含两个不同字符的最长子串、0340. 至多包含 K 个不同字符的最长子串、0795. 区间子数组个数、0992. K 个不同整数的子数组、0713. 乘积小于 K 的子数组、0904. 水果成篮、1358. 包含所有三种字符的子字符串数目、0467. 环绕字符串中唯一的子字符串、1438. 绝对差不超过限制的最长连续子数组 ## 02. 链表 @@ -117,7 +117,7 @@ ### [单调栈](../../Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) -###### 0739. 每日温度、0496. 下一个更大元素 I、0503. 下一个更大元素 II、0901. 股票价格跨度、0084. 柱状图中最大的矩形、0316. 去除重复字母、0042. 接雨水、0085. 最大矩形 +###### 0739. 每日温度、0496. 下一个更大元素 I、0503. 下一个更大元素 II、0901. 股票价格跨度、0084. 柱状图中最大的矩形、0316. 去除重复字母、0042. 接雨水、0085. 最大矩形、0862. 和至少为 K 的最短子数组 ## 04. 队列 diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index ce608f12..07fbc226 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 834 道) +# LeetCode 题解(已完成 837 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -447,6 +447,7 @@ | 0852 | [山脉数组的峰顶索引](https://leetcode.cn/problems/peak-index-in-a-mountain-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0852.%20%E5%B1%B1%E8%84%89%E6%95%B0%E7%BB%84%E7%9A%84%E5%B3%B0%E9%A1%B6%E7%B4%A2%E5%BC%95.md) | 数组、二分查找 | 中等 | | 0860 | [柠檬水找零](https://leetcode.cn/problems/lemonade-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0860.%20%E6%9F%A0%E6%AA%AC%E6%B0%B4%E6%89%BE%E9%9B%B6.md) | 贪心、数组 | 简单 | | 0861 | [翻转矩阵后的得分](https://leetcode.cn/problems/score-after-flipping-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0861.%20%E7%BF%BB%E8%BD%AC%E7%9F%A9%E9%98%B5%E5%90%8E%E7%9A%84%E5%BE%97%E5%88%86.md) | 贪心、位运算、数组、矩阵 | 中等 | +| 0862 | [和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0862.%20%E5%92%8C%E8%87%B3%E5%B0%91%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | | 0867 | [转置矩阵](https://leetcode.cn/problems/transpose-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0867.%20%E8%BD%AC%E7%BD%AE%E7%9F%A9%E9%98%B5.md) | 数组、矩阵、模拟 | 简单 | | 0868 | [二进制间距](https://leetcode.cn/problems/binary-gap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0868.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E9%97%B4%E8%B7%9D.md) | 位运算 | 简单 | | 0872 | [叶子相似的树](https://leetcode.cn/problems/leaf-similar-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0872.%20%E5%8F%B6%E5%AD%90%E7%9B%B8%E4%BC%BC%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、二叉树 | 简单 | @@ -489,6 +490,7 @@ | 0992 | [K 个不同整数的子数组](https://leetcode.cn/problems/subarrays-with-k-different-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0992.%20K%20%E4%B8%AA%E4%B8%8D%E5%90%8C%E6%95%B4%E6%95%B0%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、计数、滑动窗口 | 困难 | | 0993 | [二叉树的堂兄弟节点](https://leetcode.cn/problems/cousins-in-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0993.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%A0%82%E5%85%84%E5%BC%9F%E8%8A%82%E7%82%B9.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | | 0995 | [K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0995.%20K%20%E8%BF%9E%E7%BB%AD%E4%BD%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BF%BB%E8%BD%AC%E6%AC%A1%E6%95%B0.md) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | +| 0999 | [可以被一步捕获的棋子数](https://leetcode.cn/problems/available-captures-for-rook/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0999.%20%E5%8F%AF%E4%BB%A5%E8%A2%AB%E4%B8%80%E6%AD%A5%E6%8D%95%E8%8E%B7%E7%9A%84%E6%A3%8B%E5%AD%90%E6%95%B0.md) | 数组、矩阵、模拟 | 简单 | | 1000 | [合并石头的最低成本](https://leetcode.cn/problems/minimum-cost-to-merge-stones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1000.%20%E5%90%88%E5%B9%B6%E7%9F%B3%E5%A4%B4%E7%9A%84%E6%9C%80%E4%BD%8E%E6%88%90%E6%9C%AC.md) | 数组、动态规划、前缀和 | 困难 | | 1002 | [查找共用字符](https://leetcode.cn/problems/find-common-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1002.%20%E6%9F%A5%E6%89%BE%E5%85%B1%E7%94%A8%E5%AD%97%E7%AC%A6.md) | 数组、哈希表、字符串 | 简单 | | 1004 | [最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1004.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20III.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | @@ -550,6 +552,7 @@ | 1300 | [转变数组后最接近目标值的数组和](https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1300.%20%E8%BD%AC%E5%8F%98%E6%95%B0%E7%BB%84%E5%90%8E%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、二分查找、排序 | 中等 | | 1305 | [两棵二叉搜索树中的所有元素](https://leetcode.cn/problems/all-elements-in-two-binary-search-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1305.%20%E4%B8%A4%E6%A3%B5%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0.md) | 树、深度优先搜索、二叉搜索树、二叉树、排序 | 中等 | | 1310 | [子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1310.%20%E5%AD%90%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%9F%A5%E8%AF%A2.md) | 位运算、数组、前缀和 | 中等 | +| 1313 | [解压缩编码列表](https://leetcode.cn/problems/decompress-run-length-encoded-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1313.%20%E8%A7%A3%E5%8E%8B%E7%BC%A9%E7%BC%96%E7%A0%81%E5%88%97%E8%A1%A8.md) | 数组 | 简单 | | 1317 | [将整数转换为两个无零整数的和](https://leetcode.cn/problems/convert-integer-to-the-sum-of-two-no-zero-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1317.%20%E5%B0%86%E6%95%B4%E6%95%B0%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%B8%A4%E4%B8%AA%E6%97%A0%E9%9B%B6%E6%95%B4%E6%95%B0%E7%9A%84%E5%92%8C.md) | 数学 | 简单 | | 1319 | [连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1319.%20%E8%BF%9E%E9%80%9A%E7%BD%91%E7%BB%9C%E7%9A%84%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | | 1338 | [数组大小减半](https://leetcode.cn/problems/reduce-array-size-to-the-half/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1338.%20%E6%95%B0%E7%BB%84%E5%A4%A7%E5%B0%8F%E5%87%8F%E5%8D%8A.md) | 贪心、数组、哈希表、排序、堆(优先队列) | 中等 | diff --git a/Contents/00.Introduction/05.Categories-List.md b/Contents/00.Introduction/05.Categories-List.md index 976ef435..ba0be143 100644 --- a/Contents/00.Introduction/05.Categories-List.md +++ b/Contents/00.Introduction/05.Categories-List.md @@ -246,7 +246,6 @@ | 0076 | [最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0076.%20%E6%9C%80%E5%B0%8F%E8%A6%86%E7%9B%96%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 困难 | | 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | | 0209 | [长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0209.%20%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 0862 | [和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | | 1004 | [最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1004.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20III.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | | 1658 | [将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1658.%20%E5%B0%86%20x%20%E5%87%8F%E5%88%B0%200%20%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | | 0424 | [替换后的最长重复字符](https://leetcode.cn/problems/longest-repeating-character-replacement/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0424.%20%E6%9B%BF%E6%8D%A2%E5%90%8E%E7%9A%84%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6.md) | 哈希表、字符串、滑动窗口 | 中等 | @@ -339,6 +338,7 @@ | 0316 | [去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0316.%20%E5%8E%BB%E9%99%A4%E9%87%8D%E5%A4%8D%E5%AD%97%E6%AF%8D.md) | 栈、贪心、字符串、单调栈 | 中等 | | 0042 | [接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0042.%20%E6%8E%A5%E9%9B%A8%E6%B0%B4.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | | 0085 | [最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | | 栈、数组、动态规划、矩阵、单调栈 | 困难 | +| 0862 | [和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0862.%20%E5%92%8C%E8%87%B3%E5%B0%91%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | ## 04. 队列 diff --git a/Contents/00.Introduction/07.Interview-200-List.md b/Contents/00.Introduction/07.Interview-200-List.md index 2c2f0798..1a597a0b 100644 --- a/Contents/00.Introduction/07.Interview-200-List.md +++ b/Contents/00.Introduction/07.Interview-200-List.md @@ -166,7 +166,7 @@ | 0076 | [最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0076.%20%E6%9C%80%E5%B0%8F%E8%A6%86%E7%9B%96%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 困难 | | 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | | 0209 | [长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0209.%20%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 0862 | [和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | +| 0862 | [和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0862.%20%E5%92%8C%E8%87%B3%E5%B0%91%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | | 1004 | [最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1004.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20III.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | ## 02. 链表 diff --git a/Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md b/Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md index 12e27653..9d613a70 100644 --- a/Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md +++ b/Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md @@ -30,7 +30,6 @@ | 0076 | [最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0076.%20%E6%9C%80%E5%B0%8F%E8%A6%86%E7%9B%96%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 困难 | | 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | | 0209 | [长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0209.%20%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 0862 | [和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | | 1004 | [最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1004.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20III.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | | 1658 | [将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1658.%20%E5%B0%86%20x%20%E5%87%8F%E5%88%B0%200%20%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | | 0424 | [替换后的最长重复字符](https://leetcode.cn/problems/longest-repeating-character-replacement/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0424.%20%E6%9B%BF%E6%8D%A2%E5%90%8E%E7%9A%84%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6.md) | 哈希表、字符串、滑动窗口 | 中等 | diff --git a/Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md b/Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md index bbed1109..acab1306 100644 --- a/Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md +++ b/Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md @@ -10,4 +10,5 @@ | 0316 | [去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0316.%20%E5%8E%BB%E9%99%A4%E9%87%8D%E5%A4%8D%E5%AD%97%E6%AF%8D.md) | 栈、贪心、字符串、单调栈 | 中等 | | 0042 | [接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0042.%20%E6%8E%A5%E9%9B%A8%E6%B0%B4.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | | 0085 | [最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | | 栈、数组、动态规划、矩阵、单调栈 | 困难 | +| 0862 | [和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0862.%20%E5%92%8C%E8%87%B3%E5%B0%91%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | diff --git a/README.md b/README.md index 2b3b7a9b..749c674c 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 834 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 837 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/0424. \346\233\277\346\215\242\345\220\216\347\232\204\346\234\200\351\225\277\351\207\215\345\244\215\345\255\227\347\254\246.md" "b/Solutions/0424. \346\233\277\346\215\242\345\220\216\347\232\204\346\234\200\351\225\277\351\207\215\345\244\215\345\255\227\347\254\246.md" index edf2299f..4668e405 100644 --- "a/Solutions/0424. \346\233\277\346\215\242\345\220\216\347\232\204\346\234\200\351\225\277\351\207\215\345\244\215\345\255\227\347\254\246.md" +++ "b/Solutions/0424. \346\233\277\346\215\242\345\220\216\347\232\204\346\234\200\351\225\277\351\207\215\345\244\215\345\255\227\347\254\246.md" @@ -9,7 +9,36 @@ ## 题目大意 -给定一个仅由大写英文字母组成的字符串 s,以及一个整数 k。可以将任意位置上的字符替换成另外的大写字母,最多可替换 k 次。再进行上述操作后,找到包含重复字母的最长子串长度。 +**描述**:给定一个仅由大写英文字母组成的字符串 $s$,以及一个整数 $k$。可以将任意位置上的字符替换成另外的大写字母,最多可替换 $k$ 次。 + +**要求**:在进行上述操作后,找到包含重复字母的最长子串长度。 + +**说明**: + +- $1 \le s.length \le 10^5$。 +- $s$ 仅由大写英文字母组成。 +- $0 \le k \le s.length$。 + +**示例**: + +- 示例 1: + +```python +输入:s = "ABAB", k = 2 +输出:4 +解释:用两个'A'替换为两个'B',反之亦然。 +``` + +- 示例 2: + +```python +输入:s = "AABABBA", k = 1 +输出:4 +解释: +将中间的一个'A'替换为'B',字符串变为 "AABBBBA"。 +子串 "BBBB" 有最长重复字母, 答案为 4。 +可能存在其他的方法来得到同样的结果。 +``` ## 解题思路 @@ -20,13 +49,13 @@ 但是这种暴力求法中,枚举子串的时间复杂度为 $O(n^2)$,统计出现次数最多的字符和替换字符时间复杂度为 $0(n)$,且两者属于平行处理,总体下来的时间复杂度为 $O(n^3)$。这样做会超时。 -下面采用滑动窗口来做。 +### 思路 1:滑动窗口 -- 使用 counts 数组来统计字母频数。使用 left、right 双指针分别指向滑动窗口的首尾位置,使用 max_count 来维护最长子串的长度。 -- 不断右移 right 指针,增加滑动窗口的长度。 -- 对于当前滑动窗口的子串,如果当前窗口的间距 > 当前出现最大次数的字符的次数 + k 时,意味着替换 k 次仍不能使当前窗口中的字符全变为相同字符,则此时应该将左边界右移,同时将原先左边界的字符频次减少。 +1. 使用 counts 数组来统计字母频数。使用 left、right 双指针分别指向滑动窗口的首尾位置,使用 max_count 来维护最长子串的长度。 +2. 不断右移 right 指针,增加滑动窗口的长度。 +3. 对于当前滑动窗口的子串,如果当前窗口的间距 > 当前出现最大次数的字符的次数 + k 时,意味着替换 k 次仍不能使当前窗口中的字符全变为相同字符,则此时应该将左边界右移,同时将原先左边界的字符频次减少。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -47,3 +76,8 @@ class Solution: return right - left ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为字符串的长度。 +- **空间复杂度**:$O(|\sum|)$,其中 $\sum$ 是字符集,本题中 $| \sum | = 26$。 + diff --git "a/Solutions/0999. \345\217\257\344\273\245\350\242\253\344\270\200\346\255\245\346\215\225\350\216\267\347\232\204\346\243\213\345\255\220\346\225\260.md" "b/Solutions/0999. \345\217\257\344\273\245\350\242\253\344\270\200\346\255\245\346\215\225\350\216\267\347\232\204\346\243\213\345\255\220\346\225\260.md" new file mode 100644 index 00000000..5394446c --- /dev/null +++ "b/Solutions/0999. \345\217\257\344\273\245\350\242\253\344\270\200\346\255\245\346\215\225\350\216\267\347\232\204\346\243\213\345\255\220\346\225\260.md" @@ -0,0 +1,93 @@ +# [0999. 可以被一步捕获的棋子数](https://leetcode.cn/problems/available-captures-for-rook/) + +- 标签:数组、矩阵、模拟 +- 难度:简单 + +## 题目链接 + +- [0999. 可以被一步捕获的棋子数 - 力扣](https://leetcode.cn/problems/available-captures-for-rook/) + +## 题目大意 + +**描述**:在一个 $8 \times 8$ 的棋盘上,有一个白色的车(Rook),用字符 `'R'` 表示。棋盘上还可能存在空方块,白色的象(Bishop)以及黑色的卒(pawn),分别用字符 `'.'`,`'B'` 和 `'p'` 表示。不难看出,大写字符表示的是白棋,小写字符表示的是黑棋。 + +**要求**:你现在可以控制车移动一次,请你统计有多少敌方的卒处于你的捕获范围内(即,可以被一步捕获的棋子数)。 + +**说明**: + +- 车按国际象棋中的规则移动。东,西,南,北四个基本方向任选其一,然后一直向选定的方向移动,直到满足下列四个条件之一: + - 棋手选择主动停下来。 + - 棋子因到达棋盘的边缘而停下。 + - 棋子移动到某一方格来捕获位于该方格上敌方(黑色)的卒,停在该方格内。 + - 车不能进入/越过已经放有其他友方棋子(白色的象)的方格,停在友方棋子前。 + +- $board.length == board[i].length == 8$ +- $board[i][j]$ 可以是 `'R'`,`'.'`,`'B'` 或 `'p'`。 +- 只有一个格子上存在 $board[i][j] == 'R'$。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/02/23/1253_example_1_improved.PNG) + +```python +输入:[[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".","R",".",".",".","p"],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".","p",".",".",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]] +输出:3 +解释:在本例中,车能够捕获所有的卒。 +``` + +- 示例 2: + +![img](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/02/23/1253_example_2_improved.PNG) + +```python +输入:[[".",".",".",".",".",".",".","."],[".","p","p","p","p","p",".","."],[".","p","p","B","p","p",".","."],[".","p","B","R","B","p",".","."],[".","p","p","B","p","p",".","."],[".","p","p","p","p","p",".","."],[".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".","."]] +输出:0 +解释:象阻止了车捕获任何卒。 +``` + +## 解题思路 + +### 思路 1:模拟 + +1. 双重循环遍历确定白色车的位置 $(pos\underline{}i,poss\underline{}j)$。 +2. 让车向上、下、左、右四个方向进行移动,直到超出边界 / 碰到白色象 / 碰到卒为止。使用计数器 $cnt$ 记录捕获的卒的数量。 +3. 返回答案 $cnt$。 + +### 思路 1:代码 + +```Python +class Solution: + def numRookCaptures(self, board: List[List[str]]) -> int: + directions = {(1, 0), (-1, 0), (0, 1), (0, -1)} + pos_i, pos_j = -1, -1 + for i in range(len(board)): + if pos_i != -1 and pos_j != -1: + break + for j in range(len(board[i])): + if board[i][j] == 'R': + pos_i, pos_j = i, j + break + + cnt = 0 + for direction in directions: + setp = 0 + while True: + new_i = pos_i + setp * direction[0] + new_j = pos_j + setp * direction[1] + if new_i < 0 or new_i >= 8 or new_j < 0 or new_j >= 8 or board[new_i][new_j] == 'B': + break + if board[new_i][new_j] == 'p': + cnt += 1 + break + setp += 1 + + return cnt +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$,其中 $n$ 为棋盘的边长。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1313. \350\247\243\345\216\213\347\274\251\347\274\226\347\240\201\345\210\227\350\241\250.md" "b/Solutions/1313. \350\247\243\345\216\213\347\274\251\347\274\226\347\240\201\345\210\227\350\241\250.md" new file mode 100644 index 00000000..06e73ebf --- /dev/null +++ "b/Solutions/1313. \350\247\243\345\216\213\347\274\251\347\274\226\347\240\201\345\210\227\350\241\250.md" @@ -0,0 +1,69 @@ +# [1313. 解压缩编码列表](https://leetcode.cn/problems/decompress-run-length-encoded-list/) + +- 标签:数组 +- 难度:简单 + +## 题目链接 + +- [1313. 解压缩编码列表 - 力扣](https://leetcode.cn/problems/decompress-run-length-encoded-list/) + +## 题目大意 + +**描述**:给定一个以行程长度编码压缩的整数列表 $nums$。 + +考虑每对相邻的两个元素 $[freq, val] = [nums[2 \times i], nums[2 \times i + 1]]$ (其中 $i \ge 0$ ),每一对都表示解压后子列表中有 $freq$ 个值为 $val$ 的元素,你需要从左到右连接所有子列表以生成解压后的列表。 + +**要求**:返回解压后的列表。 + +**说明**: + +- $2 \le nums.length \le 100$。 +- $nums.length \mod 2 == 0$。 +- $1 \le nums[i] \le 100$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [1,2,3,4] +输出:[2,4,4,4] +解释:第一对 [1,2] 代表着 2 的出现频次为 1,所以生成数组 [2]。 +第二对 [3,4] 代表着 4 的出现频次为 3,所以生成数组 [4,4,4]。 +最后将它们串联到一起 [2] + [4,4,4] = [2,4,4,4]。 +``` + +- 示例 2: + +```python +输入:nums = [1,1,2,3] +输出:[1,3,3] +``` + +## 解题思路 + +### 思路 1:模拟 + +1. 以步长为 $2$,遍历数组 $nums$。 +2. 对于遍历到的元素 $nums[i]$、$nnums[i + 1]$,将 $nums[i]$ 个 $nums[i + 1]$ 存入答案数组中。 +3. 返回答案数组。 + +### 思路 1:代码 + +```Python +class Solution: + def decompressRLElist(self, nums: List[int]) -> List[int]: + res = [] + for i in range(0, len(nums), 2): + cnts = nums[i] + for cnt in range(cnts): + res.append(nums[i + 1]) + + return res +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n + s)$,其中 $n$ 为数组 $nums$ 的长度,$s$ 是数组 $nums$ 中所有偶数下标对应元素之和。 +- **空间复杂度**:$O(s)$。 + diff --git "a/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" "b/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" index 78af2544..4301bd88 100644 --- "a/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" +++ "b/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" @@ -9,25 +9,51 @@ ## 题目大意 -给你一个整数数组 `nums` 和一个整数 `x` 。每一次操作时,你应当移除数组 `nums` 最左边或最右边的元素,然后从 `x` 中减去该元素的值。请注意,需要修改数组以供接下来的操作使用。 +**描述**:给定一个整数数组 $nums$ 和一个整数 $x$ 。每一次操作时,你应当移除数组 $nums$ 最左边或最右边的元素,然后从 $x$ 中减去该元素的值。请注意,需要修改数组以供接下来的操作使用。 -要求:如果可以将 `x` 恰好减到 `0`,返回最小操作数;否则,返回 `-1`。 +**要求**:如果可以将 $x$ 恰好减到 $0$,返回最小操作数;否则,返回 $-1$。 + +**说明**: + +- $1 \le nums.length \le 10^5$。 +- $1 \le nums[i] \le 10^4$。 +- $1 \le x \le 10^9$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [1,1,4,2,3], x = 5 +输出:2 +解释:最佳解决方案是移除后两个元素,将 x 减到 0。 +``` + +- 示例 2: + +```python +输入:nums = [3,2,20,1,1,3], x = 10 +输出:5 +解释:最佳解决方案是移除后三个元素和前两个元素(总共 5 次操作),将 x 减到 0。 +``` ## 解题思路 -将 `x` 减到 `0` 的最小操作数可以转换为求和等于 `sum(nums) - x` 的最长连续子数组长度。我们可以维护一个区间和为 `sum(nums) - x` 的滑动窗口,求出最长的窗口长度。具体做法如下: +### 思路 1:滑动窗口 -令 `target = sum(nums) - x`,使用 `max_len` 维护和等于 `target` 的最长连续子数组长度。然后用滑动窗口 `window_sum` 来记录连续子数组的和,设定两个指针:`left`、`right`,分别指向滑动窗口的左右边界,保证窗口中的和刚好等于 `target`。 +将 $x$ 减到 $0$ 的最小操作数可以转换为求和等于 $sum(nums) - x$ 的最长连续子数组长度。我们可以维护一个区间和为 $sum(nums) - x$ 的滑动窗口,求出最长的窗口长度。具体做法如下: -- 一开始,`left`、`right` 都指向 `0`。 -- 向右移动 `right`,将最右侧元素加入当前窗口和 `window_sum` 中。 -- 如果 `window_sum > target`,则不断右移 `left`,缩小滑动窗口长度,并更新窗口和的最小值,直到 `window_sum <= target`。 -- 如果 `window_sum == target`,则更新最长连续子数组长度。 -- 然后继续右移 `right`,直到 `right >= len(nums)` 结束。 -- 输出 `len(nums) - max_len` 作为答案。 +令 `target = sum(nums) - x`,使用 $max\underline{}len$ 维护和等于 $target$ 的最长连续子数组长度。然后用滑动窗口 $window\underline{}sum$ 来记录连续子数组的和,设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口中的和刚好等于 $target$。 + +- 一开始,$left$、$right$ 都指向 $0$。 +- 向右移动 $right$,将最右侧元素加入当前窗口和 $window\underline{}sum$ 中。 +- 如果 $window\underline{}sum > target$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口和的最小值,直到 $window\underline{}sum \le target$。 +- 如果 $window\underline{}sum == target$,则更新最长连续子数组长度。 +- 然后继续右移 $right$,直到 $right \ge len(nums)$ 结束。 +- 输出 $len(nums) - max\underline{}len$ 作为答案。 - 注意判断题目中的特殊情况。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -54,3 +80,8 @@ class Solution: return len(nums) - max_len if max_len != float('-inf') else -1 ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $nums$ 的长度。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" "b/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" index 592590ee..e9119f47 100644 --- "a/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" +++ "b/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" @@ -9,23 +9,49 @@ ## 题目大意 -给你一个正整数数组 `nums`,从中删除一个含有若干不同元素的子数组。删除子数组的「得分」就是子数组各元素之和 。 +**描述**:给定一个正整数数组 $nums$,从中删除一个含有若干不同元素的子数组。删除子数组的「得分」就是子数组各元素之和 。 -要求:返回只删除一个子数组可获得的最大得分 。 +**要求**:返回只删除一个子数组可获得的最大得分。 + +**说明**: + +- **子数组**:如果数组 $b$ 是数组 $a$ 的一个连续子序列,即如果它等于 $a[l],a[l+1],...,a[r]$ ,那么它就是 $a$ 的一个子数组。 +- $1 \le nums.length \le 10^5$。 +- $1 \le nums[i] \le 10^4$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [4,2,4,5,6] +输出:17 +解释:最优子数组是 [2,4,5,6] +``` + +- 示例 2: + +```python +输入:nums = [5,2,1,2,5,2,1,2,5] +输出:8 +解释:最优子数组是 [5,2,1] 或 [1,2,5] +``` ## 解题思路 +### 思路 1:滑动窗口 + 题目要求的是含有不同元素的连续子数组最大和,我们可以用滑动窗口来做,维护一个不包含重复元素的滑动窗口,计算最大的窗口和。具体方法如下: -- 用滑动窗口 `window` 来记录不重复的元素个数,`window` 为哈希表类型。用 `window_sum` 来记录窗口内子数组元素和,`ans` 用来维护最大子数组和。设定两个指针:`left`、`right`,分别指向滑动窗口的左右边界,保证窗口中没有重复元素。 +- 用滑动窗口 $window$ 来记录不重复的元素个数,$window$ 为哈希表类型。用 $window\underline{}sum$ 来记录窗口内子数组元素和,$ans$ 用来维护最大子数组和。设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口中没有重复元素。 -- 一开始,`left`、`right` 都指向 `0`。 -- 将最右侧数组元素 `nums[right]` 加入当前窗口 `window` 中,记录该元素个数。 -- 如果该窗口中该元素的个数多于 `1` 个,即 `window[s[right]] > 1`,则不断右移 `left`,缩小滑动窗口长度,并更新窗口中对应元素的个数,直到 `window[s[right]] <= 1`。 -- 维护更新无重复元素的最大子数组和。然后右移 `right`,直到 `right >= len(nums)` 结束。 +- 一开始,$left$、$right$ 都指向 $0$。 +- 将最右侧数组元素 $nums[right]$ 加入当前窗口 $window$ 中,记录该元素个数。 +- 如果该窗口中该元素的个数多于 $1$ 个,即 $window[s[right]] > 1$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口中对应元素的个数,直到 $window[s[right]] \le 1$。 +- 维护更新无重复元素的最大子数组和。然后右移 $right$,直到 $right \ge len(nums)$ 结束。 - 输出无重复元素的最大子数组和。 -## 代码 +### 思路 1:代码 ```python class Solution: @@ -50,3 +76,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $nums$ 的长度。 +- **空间复杂度**:$O(n)$。 + From 02fec6cd1d709824862ba1eddd64b2505ec69567 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Wed, 10 Jan 2024 13:21:49 +0800 Subject: [PATCH 056/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 6 +- README.md | 2 +- ...10\347\232\204\345\244\271\350\247\222.md" | 66 +++++++++++++++ ...71\346\256\212\344\275\215\347\275\256.md" | 83 +++++++++++++++++++ ...14\345\245\227\346\267\261\345\272\246.md" | 83 +++++++++++++++++++ ...21\345\217\260\351\230\266\346\225\260.md" | 73 ++++++++++++++++ 6 files changed, 311 insertions(+), 2 deletions(-) create mode 100644 "Solutions/1344. \346\227\266\351\222\237\346\214\207\351\222\210\347\232\204\345\244\271\350\247\222.md" create mode 100644 "Solutions/1582. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\347\211\271\346\256\212\344\275\215\347\275\256.md" create mode 100644 "Solutions/1614. \346\213\254\345\217\267\347\232\204\346\234\200\345\244\247\345\265\214\345\245\227\346\267\261\345\272\246.md" create mode 100644 "Solutions/1936. \346\226\260\345\242\236\347\232\204\346\234\200\345\260\221\345\217\260\351\230\266\346\225\260.md" diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index 07fbc226..f6950702 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 837 道) +# LeetCode 题解(已完成 841 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -557,6 +557,7 @@ | 1319 | [连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1319.%20%E8%BF%9E%E9%80%9A%E7%BD%91%E7%BB%9C%E7%9A%84%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | | 1338 | [数组大小减半](https://leetcode.cn/problems/reduce-array-size-to-the-half/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1338.%20%E6%95%B0%E7%BB%84%E5%A4%A7%E5%B0%8F%E5%87%8F%E5%8D%8A.md) | 贪心、数组、哈希表、排序、堆(优先队列) | 中等 | | 1343 | [大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1343.%20%E5%A4%A7%E5%B0%8F%E4%B8%BA%20K%20%E4%B8%94%E5%B9%B3%E5%9D%87%E5%80%BC%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E9%98%88%E5%80%BC%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md) | 数组、滑动窗口 | 中等 | +| 1344 | [时钟指针的夹角](https://leetcode.cn/problems/angle-between-hands-of-a-clock/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1344.%20%E6%97%B6%E9%92%9F%E6%8C%87%E9%92%88%E7%9A%84%E5%A4%B9%E8%A7%92.md) | 数学 | 中等 | | 1349 | [参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1349.%20%E5%8F%82%E5%8A%A0%E8%80%83%E8%AF%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | | 1358 | [包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1358.%20%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E4%B8%89%E7%A7%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%9B%AE.md) | 哈希表、字符串、滑动窗口 | 中等 | | 1381 | [设计一个支持增量操作的栈](https://leetcode.cn/problems/design-a-stack-with-increment-operation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1381.%20%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E6%94%AF%E6%8C%81%E5%A2%9E%E9%87%8F%E6%93%8D%E4%BD%9C%E7%9A%84%E6%A0%88.md) | 栈、设计、数组 | 中等 | @@ -585,10 +586,12 @@ | 1556 | [千位分隔数](https://leetcode.cn/problems/thousand-separator/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1556.%20%E5%8D%83%E4%BD%8D%E5%88%86%E9%9A%94%E6%95%B0.md) | 字符串 | 简单 | | 1561 | [你可以获得的最大硬币数目](https://leetcode.cn/problems/maximum-number-of-coins-you-can-get/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1561.%20%E4%BD%A0%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%BE%97%E7%9A%84%E6%9C%80%E5%A4%A7%E7%A1%AC%E5%B8%81%E6%95%B0%E7%9B%AE.md) | 贪心、数组、数学、博弈、排序 | 中等 | | 1567 | [乘积为正数的最长子数组长度](https://leetcode.cn/problems/maximum-length-of-subarray-with-positive-product/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1567.%20%E4%B9%98%E7%A7%AF%E4%B8%BA%E6%AD%A3%E6%95%B0%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E6%95%B0%E7%BB%84%E9%95%BF%E5%BA%A6.md) | 贪心、数组、动态规划 | 中等 | +| 1582 | [二进制矩阵中的特殊位置](https://leetcode.cn/problems/special-positions-in-a-binary-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1582.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E7%89%B9%E6%AE%8A%E4%BD%8D%E7%BD%AE.md) | 数组、矩阵 | 简单 | | 1593 | [拆分字符串使唯一子字符串的数目最大](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1593.%20%E6%8B%86%E5%88%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BD%BF%E5%94%AF%E4%B8%80%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE%E6%9C%80%E5%A4%A7.md) | 哈希表、字符串、回溯 | 中等 | | 1595 | [连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1595.%20%E8%BF%9E%E9%80%9A%E4%B8%A4%E7%BB%84%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | | 1603 | [设计停车系统](https://leetcode.cn/problems/design-parking-system/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1603.%20%E8%AE%BE%E8%AE%A1%E5%81%9C%E8%BD%A6%E7%B3%BB%E7%BB%9F.md) | 设计、计数、模拟 | 简单 | | 1605 | [给定行和列的和求可行矩阵](https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1605.%20%E7%BB%99%E5%AE%9A%E8%A1%8C%E5%92%8C%E5%88%97%E7%9A%84%E5%92%8C%E6%B1%82%E5%8F%AF%E8%A1%8C%E7%9F%A9%E9%98%B5.md) | 贪心、数组、矩阵 | 中等 | +| 1614 | [括号的最大嵌套深度](https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1614.%20%E6%8B%AC%E5%8F%B7%E7%9A%84%E6%9C%80%E5%A4%A7%E5%B5%8C%E5%A5%97%E6%B7%B1%E5%BA%A6.md) | 栈、字符串 | 简单 | | 1617 | [统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1617.%20%E7%BB%9F%E8%AE%A1%E5%AD%90%E6%A0%91%E4%B8%AD%E5%9F%8E%E5%B8%82%E4%B9%8B%E9%97%B4%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | | 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | | 1646 | [获取生成数组中的最大值](https://leetcode.cn/problems/get-maximum-in-generated-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1646.%20%E8%8E%B7%E5%8F%96%E7%94%9F%E6%88%90%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 数组、动态规划、模拟 | 简单 | @@ -619,6 +622,7 @@ | 1903 | [字符串中的最大奇数](https://leetcode.cn/problems/largest-odd-number-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1903.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%A5%87%E6%95%B0.md) | 贪心、数学、字符串 | 简单 | | 1925 | [统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1925.%20%E7%BB%9F%E8%AE%A1%E5%B9%B3%E6%96%B9%E5%92%8C%E4%B8%89%E5%85%83%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、枚举 | 简单 | | 1929 | [数组串联](https://leetcode.cn/problems/concatenation-of-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1929.%20%E6%95%B0%E7%BB%84%E4%B8%B2%E8%81%94.md) | 数组 | 简单 | +| 1936 | [新增的最少台阶数](https://leetcode.cn/problems/add-minimum-number-of-rungs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1936.%20%E6%96%B0%E5%A2%9E%E7%9A%84%E6%9C%80%E5%B0%91%E5%8F%B0%E9%98%B6%E6%95%B0.md) | 贪心、数组 | 中等 | | 1941 | [检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1941.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E7%9B%B8%E5%90%8C.md) | 哈希表、字符串、计数 | 简单 | | 1947 | [最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1947.%20%E6%9C%80%E5%A4%A7%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%84%E5%88%86%E5%92%8C.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | | 1984 | [学生分数的最小差值](https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1984.%20%E5%AD%A6%E7%94%9F%E5%88%86%E6%95%B0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%B7%AE%E5%80%BC.md) | 数组、排序、滑动窗口 | 简单 | diff --git a/README.md b/README.md index 749c674c..05b88802 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 837 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 841 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/1344. \346\227\266\351\222\237\346\214\207\351\222\210\347\232\204\345\244\271\350\247\222.md" "b/Solutions/1344. \346\227\266\351\222\237\346\214\207\351\222\210\347\232\204\345\244\271\350\247\222.md" new file mode 100644 index 00000000..a7563efb --- /dev/null +++ "b/Solutions/1344. \346\227\266\351\222\237\346\214\207\351\222\210\347\232\204\345\244\271\350\247\222.md" @@ -0,0 +1,66 @@ +# [1344. 时钟指针的夹角](https://leetcode.cn/problems/angle-between-hands-of-a-clock/) + +- 标签:数学 +- 难度:中等 + +## 题目链接 + +- [1344. 时钟指针的夹角 - 力扣](https://leetcode.cn/problems/angle-between-hands-of-a-clock/) + +## 题目大意 + +**描述**:给定两个数 $hour$ 和 $minutes$。 + +**要求**:请你返回在时钟上,由给定时间的时针和分针组成的较小角的角度($60$ 单位制)。 + +**说明**: + +- $1 \le hour \le 12$。 +- $0 \le minutes \le 59$。 +- 与标准答案误差在 $10^{-5}$ 以内的结果都被视为正确结果。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/02/08/sample_1_1673.png) + +```python +输入:hour = 12, minutes = 30 +输出:165 +``` + +- 示例 2: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/02/08/sample_2_1673.png) + +```python +输入:hour = 3, minutes = 30 +输出;75 +``` + +## 解题思路 + +### 思路 1:数学 + +1. 我们以 $00:00$ 为基准,分别计算出分针与 $00:00$ 中垂线的夹角,以及时针与 $00:00$ 中垂线的夹角。 +2. 然后计算出两者差值的绝对值 $diff$。当前差值可能为较小的角(小于 $180°$ 的角),也可能为较大的角(大于等于 $180°$ 的角)。 +3. 将差值的绝对值 $diff$ 与 $360 - diff$ 进行比较,取较小值作为答案。 + +### 思路 1:代码 + +```Python +class Solution: + def angleClock(self, hour: int, minutes: int) -> float: + mins_angle = 6 * minutes + hours_angle = (hour % 12 + minutes / 60) * 30 + + diff = abs(hours_angle - mins_angle) + return min(diff, 360 - diff) +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(1)$。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1582. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\347\211\271\346\256\212\344\275\215\347\275\256.md" "b/Solutions/1582. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\347\211\271\346\256\212\344\275\215\347\275\256.md" new file mode 100644 index 00000000..e883f1fa --- /dev/null +++ "b/Solutions/1582. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\347\211\271\346\256\212\344\275\215\347\275\256.md" @@ -0,0 +1,83 @@ +# [1582. 二进制矩阵中的特殊位置](https://leetcode.cn/problems/special-positions-in-a-binary-matrix/) + +- 标签:数组、矩阵 +- 难度:简单 + +## 题目链接 + +- [1582. 二进制矩阵中的特殊位置 - 力扣](https://leetcode.cn/problems/special-positions-in-a-binary-matrix/) + +## 题目大意 + +**描述**:给定一个 $m \times n$ 的二进制矩阵 $mat$。 + +**要求**:返回矩阵 $mat$ 中特殊位置的数量。 + +**说明**: + +- **特殊位置**:如果位置 $(i, j)$ 满足 $mat[i][j] == 1$ 并且行 $i$ 与列 $j$ 中的所有其他元素都是 $0$(行和列的下标从 $0$ 开始计数),那么它被称为特殊位置。 +- $m == mat.length$。 +- $n == mat[i].length$。 +- $1 \le m, n \le 100$。 +- $mat[i][j]$ 是 $0$ 或 $1$。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2021/12/23/special1.jpg) + +```python +输入:mat = [[1,0,0],[0,0,1],[1,0,0]] +输出:1 +解释:位置 (1, 2) 是一个特殊位置,因为 mat[1][2] == 1 且第 1 行和第 2 列的其他所有元素都是 0。 +``` + +- 示例 2: + +![img](https://assets.leetcode.com/uploads/2021/12/24/special-grid.jpg) + +```python +输入:mat = [[1,0,0],[0,1,0],[0,0,1]] +输出:3 +解释:位置 (0, 0),(1, 1) 和 (2, 2) 都是特殊位置。 +``` + +## 解题思路 + +### 思路 1:模拟 + +1. 按照行、列遍历二位数组 $mat$。 +2. 使用数组 $row\underline{}cnts$、$col\underline{}cnts$ 分别记录每行和每列所含 $1$ 的个数。 +3. 再次按照行、列遍历二维数组 $mat$。 +4. 统计满足 $mat[row][col] == 1$ 并且 $row\underline{}cnts[row] == col\underline{}cnts[col] == 1$ 的位置个数。 +5. 返回答案。 + +### 思路 1:代码 + +```Python +class Solution: + def numSpecial(self, mat: List[List[int]]) -> int: + rows, cols = len(mat), len(mat[0]) + row_cnts = [0 for _ in range(rows)] + col_cnts = [0 for _ in range(cols)] + + for row in range(rows): + for col in range(cols): + row_cnts[row] += mat[row][col] + col_cnts[col] += mat[row][col] + + ans = 0 + for row in range(rows): + for col in range(cols): + if mat[row][col] == 1 and row_cnts[row] == 1 and col_cnts[col] == 1: + ans += 1 + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(m \times n)$,其中 $m$、$n$ 分别为数组 $mat$ 的行数和列数。 +- **空间复杂度**:$O(m + n)$。 + diff --git "a/Solutions/1614. \346\213\254\345\217\267\347\232\204\346\234\200\345\244\247\345\265\214\345\245\227\346\267\261\345\272\246.md" "b/Solutions/1614. \346\213\254\345\217\267\347\232\204\346\234\200\345\244\247\345\265\214\345\245\227\346\267\261\345\272\246.md" new file mode 100644 index 00000000..d8de88d8 --- /dev/null +++ "b/Solutions/1614. \346\213\254\345\217\267\347\232\204\346\234\200\345\244\247\345\265\214\345\245\227\346\267\261\345\272\246.md" @@ -0,0 +1,83 @@ +# [1614. 括号的最大嵌套深度](https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/) + +- 标签:栈、字符串 +- 难度:简单 + +## 题目链接 + +- [1614. 括号的最大嵌套深度 - 力扣](https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/) + +## 题目大意 + +**描述**:给你一个有效括号字符串 $s$。 + +**要求**:返回该字符串 $s$ 的嵌套深度 。 + +**说明**: + +- 如果字符串满足以下条件之一,则可以称之为 有效括号字符串(valid parentheses string,可以简写为 VPS): + - 字符串是一个空字符串 `""`,或者是一个不为 `"("` 或 `")"` 的单字符。 + - 字符串可以写为 $AB$($A$ 与 B 字符串连接),其中 $A$ 和 $B$ 都是有效括号字符串 。 + - 字符串可以写为 ($A$),其中 $A$ 是一个有效括号字符串。 + +- 类似地,可以定义任何有效括号字符串 $s$ 的 嵌套深度 $depth(s)$: + + - `depth("") = 0`。 + - `depth(C) = 0`,其中 $C$ 是单个字符的字符串,且该字符不是 `"("` 或者 `")"`。 + - `depth(A + B) = max(depth(A), depth(B))`,其中 $A$ 和 $B$ 都是 有效括号字符串。 + - `depth("(" + A + ")") = 1 + depth(A)`,其中 A 是一个 有效括号字符串。 +- $1 \le s.length \le 100$。 +- $s$ 由数字 $0 \sim 9$ 和字符 `'+'`、`'-'`、`'*'`、`'/'`、`'('`、`')'` 组成。 +- 题目数据保证括号表达式 $s$ 是有效的括号表达式。 + +**示例**: + +- 示例 1: + +```python +输入:s = "(1+(2*3)+((8)/4))+1" +输出:3 +解释:数字 8 在嵌套的 3 层括号中。 +``` + +- 示例 2: + +```python +输入:s = "(1)+((2))+(((3)))" +输出:3 +``` + +## 解题思路 + +### 思路 1:模拟 + +我们可以使用栈来进行模拟括号匹配。遍历字符串 $s$,如果遇到左括号,则将其入栈,如果遇到右括号,则弹出栈中的左括号,与当前右括号进行匹配。在整个过程中栈的大小的最大值,就是我们要求的 $s$ 的嵌套深度,其实也是求最大的连续左括号的数量(跳过普通字符,并且与右括号匹配后)。具体步骤如下: + +1. 使用 $ans$ 记录最大的连续左括号数量,使用 $cnt$ 记录当前栈中左括号的数量。 +2. 遍历字符串 $s$: + 1. 如果遇到左括号,则令 $cnt$ 加 $1$。 + 2. 如果遇到右括号,则令 $cnt$ 减 $1$。 + 3. 将 $cnt$ 与答案进行比较,更新最大的连续左括号数量。 +3. 遍历完字符串 $s$,返回答案 $ans$。 + +### 思路 1:代码 + +```Python +class Solution: + def maxDepth(self, s: str) -> int: + ans, cnt = 0, 0 + for ch in s: + if ch == '(': + cnt += 1 + elif ch == ')': + cnt -= 1 + ans = max(ans, cnt) + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为字符串 $s$ 的长度。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1936. \346\226\260\345\242\236\347\232\204\346\234\200\345\260\221\345\217\260\351\230\266\346\225\260.md" "b/Solutions/1936. \346\226\260\345\242\236\347\232\204\346\234\200\345\260\221\345\217\260\351\230\266\346\225\260.md" new file mode 100644 index 00000000..c5e2e49f --- /dev/null +++ "b/Solutions/1936. \346\226\260\345\242\236\347\232\204\346\234\200\345\260\221\345\217\260\351\230\266\346\225\260.md" @@ -0,0 +1,73 @@ +# [1936. 新增的最少台阶数](https://leetcode.cn/problems/add-minimum-number-of-rungs/) + +- 标签:贪心、数组 +- 难度:中等 + +## 题目链接 + +- [1936. 新增的最少台阶数 - 力扣](https://leetcode.cn/problems/add-minimum-number-of-rungs/) + +## 题目大意 + +**描述**:给定一个严格递增的整数数组 $rungs$,用于表示梯子上每一台阶的高度。当前你正站在高度为 $0$ 的地板上,并打算爬到最后一个台阶。 + +另给定一个整数 $dist$。每次移动中,你可以到达下一个距离当前位置(地板或台阶)不超过 $dist$ 高度的台阶。当前,你也可以在任何正整数高度插入尚不存在的新台阶。 + +**要求**:返回爬到最后一阶时必须添加到梯子上的最少台阶数。 + +**说明**: + +- + +**示例**: + +- 示例 1: + +```python +输入:rungs = [1,3,5,10], dist = 2 +输出:2 +解释: +现在无法到达最后一阶。 +在高度为 7 和 8 的位置增设新的台阶,以爬上梯子。 +梯子在高度为 [1,3,5,7,8,10] 的位置上有台阶。 +``` + +- 示例 2: + +```python +输入:rungs = [3,4,6,7], dist = 2 +输出:1 +解释: +现在无法从地板到达梯子的第一阶。 +在高度为 1 的位置增设新的台阶,以爬上梯子。 +梯子在高度为 [1,3,4,6,7] 的位置上有台阶。 +``` + +## 解题思路 + +### 思路 1:贪心算法 + 模拟 + +1. 遍历梯子的每一层台阶。 +2. 计算每一层台阶与上一层台阶之间的差值 $diff$。 +3. 每层最少需要新增的台阶数为 $\lfloor \frac{diff - 1}{dist} \rfloor$,将其计入答案 $ans$ 中。 +4. 遍历完返回答案。 + +### 思路 1:代码 + +```Python +class Solution: + def addRungs(self, rungs: List[int], dist: int) -> int: + ans, cur = 0, 0 + for h in rungs: + diff = h - cur + ans += (diff - 1) // dist + cur = h + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $rungs$ 的长度。 +- **空间复杂度**:$O(1)$。 + From fd1e206c13e6b9ab1bf86ee8c3f344868d9c2bd5 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 11 Jan 2024 15:00:34 +0800 Subject: [PATCH 057/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 5 +- README.md | 2 +- ...46\344\270\262\347\233\270\347\255\211.md" | 53 ++++++-- ...23\345\215\260\345\215\225\350\257\215.md" | 87 +++++++++++++ ...17\346\255\245\351\252\244\346\225\260.md" | 74 +++++++++++ ...51\345\275\242\346\237\245\350\257\242.md" | 115 ++++++++++++++++++ ...77\345\255\220\346\225\260\347\273\204.md" | 50 ++++++-- 7 files changed, 363 insertions(+), 23 deletions(-) create mode 100644 "Solutions/1324. \347\253\226\347\233\264\346\211\223\345\215\260\345\215\225\350\257\215.md" create mode 100644 "Solutions/1347. \345\210\266\351\200\240\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\347\232\204\346\234\200\345\260\217\346\255\245\351\252\244\346\225\260.md" create mode 100644 "Solutions/1476. \345\255\220\347\237\251\345\275\242\346\237\245\350\257\242.md" diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index f6950702..e787248c 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 841 道) +# LeetCode 题解(已完成 844 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -555,9 +555,11 @@ | 1313 | [解压缩编码列表](https://leetcode.cn/problems/decompress-run-length-encoded-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1313.%20%E8%A7%A3%E5%8E%8B%E7%BC%A9%E7%BC%96%E7%A0%81%E5%88%97%E8%A1%A8.md) | 数组 | 简单 | | 1317 | [将整数转换为两个无零整数的和](https://leetcode.cn/problems/convert-integer-to-the-sum-of-two-no-zero-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1317.%20%E5%B0%86%E6%95%B4%E6%95%B0%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%B8%A4%E4%B8%AA%E6%97%A0%E9%9B%B6%E6%95%B4%E6%95%B0%E7%9A%84%E5%92%8C.md) | 数学 | 简单 | | 1319 | [连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1319.%20%E8%BF%9E%E9%80%9A%E7%BD%91%E7%BB%9C%E7%9A%84%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| 1324 | [竖直打印单词](https://leetcode.cn/problems/print-words-vertically/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1324.%20%E7%AB%96%E7%9B%B4%E6%89%93%E5%8D%B0%E5%8D%95%E8%AF%8D.md) | 数组、字符串、模拟 | 中等 | | 1338 | [数组大小减半](https://leetcode.cn/problems/reduce-array-size-to-the-half/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1338.%20%E6%95%B0%E7%BB%84%E5%A4%A7%E5%B0%8F%E5%87%8F%E5%8D%8A.md) | 贪心、数组、哈希表、排序、堆(优先队列) | 中等 | | 1343 | [大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1343.%20%E5%A4%A7%E5%B0%8F%E4%B8%BA%20K%20%E4%B8%94%E5%B9%B3%E5%9D%87%E5%80%BC%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E9%98%88%E5%80%BC%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md) | 数组、滑动窗口 | 中等 | | 1344 | [时钟指针的夹角](https://leetcode.cn/problems/angle-between-hands-of-a-clock/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1344.%20%E6%97%B6%E9%92%9F%E6%8C%87%E9%92%88%E7%9A%84%E5%A4%B9%E8%A7%92.md) | 数学 | 中等 | +| 1347 | [制造字母异位词的最小步骤数](https://leetcode.cn/problems/minimum-number-of-steps-to-make-two-strings-anagram/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1347.%20%E5%88%B6%E9%80%A0%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E6%AD%A5%E9%AA%A4%E6%95%B0.md) | 哈希表、字符串、计数 | 中等 | | 1349 | [参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1349.%20%E5%8F%82%E5%8A%A0%E8%80%83%E8%AF%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | | 1358 | [包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1358.%20%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E4%B8%89%E7%A7%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%9B%AE.md) | 哈希表、字符串、滑动窗口 | 中等 | | 1381 | [设计一个支持增量操作的栈](https://leetcode.cn/problems/design-a-stack-with-increment-operation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1381.%20%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E6%94%AF%E6%8C%81%E5%A2%9E%E9%87%8F%E6%93%8D%E4%BD%9C%E7%9A%84%E6%A0%88.md) | 栈、设计、数组 | 中等 | @@ -572,6 +574,7 @@ | 1450 | [在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1450.%20%E5%9C%A8%E6%97%A2%E5%AE%9A%E6%97%B6%E9%97%B4%E5%81%9A%E4%BD%9C%E4%B8%9A%E7%9A%84%E5%AD%A6%E7%94%9F%E4%BA%BA%E6%95%B0.md) | 数组 | 简单 | | 1451 | [重新排列句子中的单词](https://leetcode.cn/problems/rearrange-words-in-a-sentence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1451.%20%E9%87%8D%E6%96%B0%E6%8E%92%E5%88%97%E5%8F%A5%E5%AD%90%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D.md) | 字符串、排序 | 中等 | | 1456 | [定长子串中元音的最大数目](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1456.%20%E5%AE%9A%E9%95%BF%E5%AD%90%E4%B8%B2%E4%B8%AD%E5%85%83%E9%9F%B3%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md) | 字符串、滑动窗口 | 中等 | +| 1476 | [子矩形查询](https://leetcode.cn/problems/subrectangle-queries/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1476.%20%E5%AD%90%E7%9F%A9%E5%BD%A2%E6%9F%A5%E8%AF%A2.md) | 设计、数组、矩阵 | 中等 | | 1480 | [一维数组的动态和](https://leetcode.cn/problems/running-sum-of-1d-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1480.%20%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84%E7%9A%84%E5%8A%A8%E6%80%81%E5%92%8C.md) | 数组、前缀和 | 简单 | | 1482 | [制作 m 束花所需的最少天数](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1482.%20%E5%88%B6%E4%BD%9C%20m%20%E6%9D%9F%E8%8A%B1%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E5%B0%91%E5%A4%A9%E6%95%B0.md) | 数组、二分查找 | 中等 | | 1486 | [数组异或操作](https://leetcode.cn/problems/xor-operation-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1486.%20%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%93%8D%E4%BD%9C.md) | 位运算、数学 | 简单 | diff --git a/README.md b/README.md index 05b88802..1fa7bbc3 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 841 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 844 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" "b/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" index ceeb84ba..3868494d 100644 --- "a/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" +++ "b/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" @@ -9,24 +9,50 @@ ## 题目大意 -给定两个长度相同的字符串,`s` 和 `t`。将 `s` 中的第 `i` 个字符变到 `t` 中的第 `i` 个字符需要 $| s[i] - t[i] |$ 的开销(开销可能为 `0`),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是 `maxCost`。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。 +**描述**:给定两个长度相同的字符串,$s$ 和 $t$。将 $s$ 中的第 $i$ 个字符变到 $t$ 中的第 $i$ 个字符需要 $| s[i] - t[i] |$ 的开销(开销可能为 $0$),也就是两个字符的 ASCII 码值的差的绝对值。用于变更字符串的最大预算是 $maxCost$。在转化字符串时,总开销应当小于等于该预算,这也意味着字符串的转化可能是不完全的。 -要求:如果你可以将 `s` 的子字符串转化为它在 `t` 中对应的子字符串,则返回可以转化的最大长度。如果 `s` 中没有子字符串可以转化成 `t` 中对应的子字符串,则返回 `0`。 +**要求**:如果你可以将 $s$ 的子字符串转化为它在 $t$ 中对应的子字符串,则返回可以转化的最大长度。如果 $s$ 中没有子字符串可以转化成 $t$ 中对应的子字符串,则返回 $0$。 + +**说明**: + +- $1 \le s.length, t.length \le 10^5$。 +- $0 \le maxCost \le 10^6$。 +- $s$ 和 $t$ 都只含小写英文字母。 + +**示例**: + +- 示例 1: + +```python +输入:s = "abcd", t = "bcdf", maxCost = 3 +输出:3 +解释:s 中的 "abc" 可以变为 "bcd"。开销为 3,所以最大长度为 3。 +``` + +- 示例 2: + +```python +输入:s = "abcd", t = "cdef", maxCost = 3 +输出:1 +解释:s 中的任一字符要想变成 t 中对应的字符,其开销都是 2。因此,最大长度为 1。 +``` ## 解题思路 -维护一个滑动窗口 `window_sum` 用于记录窗口内的开销总和,保证窗口内的开销总和小于等于 `maxCost`。使用 `ans` 记录可以转化的最大长度。具体做法如下: +### 思路 1:滑动窗口 -使用两个指针 `left`、`right`。分别指向滑动窗口的左右边界,保证窗口内所有元素转化开销总和小于等于 `maxCost`。 +维护一个滑动窗口 $window\underline{}sum$ 用于记录窗口内的开销总和,保证窗口内的开销总和小于等于 $maxCost$。使用 $ans$ 记录可以转化的最大长度。具体做法如下: -- 先统计出 `s` 中第 `i` 个字符变为 `t` 的第 `i` 个字符的开销,用数组 `costs` 保存。 -- 一开始,`left`、`right` 都指向 `0`。 -- 将最右侧字符的转变开销填入窗口中,向右移动 `right`。 -- 直到窗口内开销总和 `window_sum` 大于 `maxCost`。则不断右移 `left`,缩小窗口长度。直到 `window_sum <= maxCost` 时,更新可以转换的最大长度 `ans`。 -- 向右移动 `right`,直到 `right >= len(s)` 为止。 -- 输出答案 `ans`。 +使用两个指针 $left$、$right$。分别指向滑动窗口的左右边界,保证窗口内所有元素转化开销总和小于等于 $maxCost$。 -## 代码 +- 先统计出 $s$ 中第 $i$ 个字符变为 $t$ 的第 $i$ 个字符的开销,用数组 $costs$ 保存。 +- 一开始,$left$、$right$ 都指向 $0$。 +- 将最右侧字符的转变开销填入窗口中,向右移动 $right$。 +- 直到窗口内开销总和 $window\underline{}sum$ 大于 $maxCost$。则不断右移 $left$,缩小窗口长度。直到 $window\underline{}sum \le maxCost$ 时,更新可以转换的最大长度 $ans$。 +- 向右移动 $right$,直到 $right \ge len(s)$ 为止。 +- 输出答案 $ans$。 + +### 思路 1:代码 ```python class Solution: @@ -50,3 +76,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**: +- **空间复杂度**: + diff --git "a/Solutions/1324. \347\253\226\347\233\264\346\211\223\345\215\260\345\215\225\350\257\215.md" "b/Solutions/1324. \347\253\226\347\233\264\346\211\223\345\215\260\345\215\225\350\257\215.md" new file mode 100644 index 00000000..3688821d --- /dev/null +++ "b/Solutions/1324. \347\253\226\347\233\264\346\211\223\345\215\260\345\215\225\350\257\215.md" @@ -0,0 +1,87 @@ +# [1324. 竖直打印单词](https://leetcode.cn/problems/print-words-vertically/) + +- 标签:数组、字符串、模拟 +- 难度:中等 + +## 题目链接 + +- [1324. 竖直打印单词 - 力扣](https://leetcode.cn/problems/print-words-vertically/) + +## 题目大意 + +**描述**:给定一个字符串 $s$。 + +**要求**:按照单词在 $s$ 中出现顺序将它们全部竖直返回。 + +**说明**: + +- 单词应该以字符串列表的形式返回,必要时用空格补位,但输出尾部的空格需要删除(不允许尾随空格)。 +- 每个单词只能放在一列上,每一列中也只能有一个单词。 +- $1 \le s.length \le 200$。 +- $s$ 仅含大写英文字母。 +- 题目数据保证两个单词之间只有一个空格。 + +**示例**: + +- 示例 1: + +```python +输入:s = "HOW ARE YOU" +输出:["HAY","ORO","WEU"] +解释:每个单词都应该竖直打印。 + "HAY" + "ORO" + "WEU" +``` + +- 示例 2: + +```python +输入:s = "TO BE OR NOT TO BE" +输出:["TBONTB","OEROOE"," T"] +解释:题目允许使用空格补位,但不允许输出末尾出现空格。 +"TBONTB" +"OEROOE" +" T" +``` + +## 解题思路 + +### 思路 1:模拟 + +1. 将字符串 $s$ 按空格分割为单词数组 $words$。 +2. 计算出单词数组 $words$ 中单词的最大长度 $max\underline{}len$。 +3. 第一重循环遍历竖直单词的每个单词位置 $i$,第二重循环遍历当前第 $j$ 个单词。 + 1. 如果当前单词没有第 $i$ 个字符(当前单词的长度超过了单词位置 $i$),则将空格插入到竖直单词中。 + 2. 如果当前单词有第 $i$ 个字符,泽讲当前单词的第 $i$ 个字符插入到竖直单词中。 +4. 第二重循环遍历完,将竖直单词去除尾随空格,并加入到答案数组中。 +5. 第一重循环遍历完,则返回答案数组。 + +### 思路 1:代码 + +```Python +class Solution: + def printVertically(self, s: str) -> List[str]: + words = s.split(' ') + max_len = 0 + for word in words: + max_len = max(len(word), max_len) + + res = [] + for i in range(max_len): + ans = "" + for j in range(len(words)): + if i + 1 > len(words[j]): + ans += ' ' + else: + ans += words[j][i] + res.append(ans.rstrip()) + + return res +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times max(|word|))$,其中 $n$ 为字符串 $s$ 中的单词个数,$max(|word|)$ 是最长的单词长度。。 +- **空间复杂度**:$O(n \times max(|word|))$。 + diff --git "a/Solutions/1347. \345\210\266\351\200\240\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\347\232\204\346\234\200\345\260\217\346\255\245\351\252\244\346\225\260.md" "b/Solutions/1347. \345\210\266\351\200\240\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\347\232\204\346\234\200\345\260\217\346\255\245\351\252\244\346\225\260.md" new file mode 100644 index 00000000..17a4612c --- /dev/null +++ "b/Solutions/1347. \345\210\266\351\200\240\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\347\232\204\346\234\200\345\260\217\346\255\245\351\252\244\346\225\260.md" @@ -0,0 +1,74 @@ +# [1347. 制造字母异位词的最小步骤数](https://leetcode.cn/problems/minimum-number-of-steps-to-make-two-strings-anagram/) + +- 标签:哈希表、字符串、计数 +- 难度:中等 + +## 题目链接 + +- [1347. 制造字母异位词的最小步骤数 - 力扣](https://leetcode.cn/problems/minimum-number-of-steps-to-make-two-strings-anagram/) + +## 题目大意 + +**描述**:给定两个长度相等的字符串 $s$ 和 $t$。每一个步骤中,你可以选择将 $t$ 中任一个字符替换为另一个字符。 + +**要求**:返回使 $t$ 成为 $s$ 的字母异位词的最小步骤数。 + +**说明**: + +- **字母异位词**:指字母相同,但排列不同(也可能相同)的字符串。 +- $1 \le s.length \le 50000$。 +- $s.length == t.length$。 +- $s$ 和 $t$ 只包含小写英文字母。 + +**示例**: + +- 示例 1: + +```python +输出:s = "bab", t = "aba" +输出:1 +提示:用 'b' 替换 t 中的第一个 'a',t = "bba" 是 s 的一个字母异位词。 +``` + +- 示例 2: + +```python +输出:s = "leetcode", t = "practice" +输出:5 +提示:用合适的字符替换 t 中的 'p', 'r', 'a', 'i' 和 'c',使 t 变成 s 的字母异位词。 +``` + +## 解题思路 + +### 思路 1:哈希表 + +题目要求使 $t$ 成为 $s$ 的字母异位词,则只需要 $t$ 和 $s$ 对应的每种字符数量相一致即可,无需考虑字符位置。 + +因为每一次转换都会减少一个字符,并增加另一个字符。 + +1. 我们使用两个哈希表 $cnts\underline{}s$、$cnts\underline{}t$ 分别对 $t$ 和 $s$ 中的字符进行计数,并求出两者的交集。 +2. 遍历交集中的字符种类,以及对应的字符数量。 +3. 对于当前字符 $key$,如果当前字符串 $s$ 中的字符 $key$ 的数量小于字符串 $t$ 中字符 $key$ 的数量,即 $cnts\underline{}s[key] < cnts\underline{}t[key]$。则 $s$ 中需要补齐的字符数量就是需要的最小步数,将其累加到答案中。 +4. 遍历完返回答案。 + +### 思路 1:代码 + +```Python +class Solution: + def minSteps(self, s: str, t: str) -> int: + cnts_s, cnts_t = Counter(s), Counter(t) + cnts = cnts_s | cnts_t + + ans = 0 + for key, cnt in cnts.items(): + if cnts_s[key] < cnts_t[key]: + ans += cnts_t[key] - cnts_s[key] + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(m + n)$,其中 $m$、$n$ 分别为字符串 $s$、$t$ 的长度。 +- **空间复杂度**:$O(|\sum|)$,其中 $\sum$ 是字符集,本题中 $| \sum | = 26$。 + diff --git "a/Solutions/1476. \345\255\220\347\237\251\345\275\242\346\237\245\350\257\242.md" "b/Solutions/1476. \345\255\220\347\237\251\345\275\242\346\237\245\350\257\242.md" new file mode 100644 index 00000000..42d7bb27 --- /dev/null +++ "b/Solutions/1476. \345\255\220\347\237\251\345\275\242\346\237\245\350\257\242.md" @@ -0,0 +1,115 @@ +# [1476. 子矩形查询](https://leetcode.cn/problems/subrectangle-queries/) + +- 标签:设计、数组、矩阵 +- 难度:中等 + +## 题目链接 + +- [1476. 子矩形查询 - 力扣](https://leetcode.cn/problems/subrectangle-queries/) + +## 题目大意 + +**要求**:实现一个类 SubrectangleQueries,它的构造函数的参数是一个 $rows \times cols $的矩形(这里用整数矩阵表示),并支持以下两种操作: + +1. `updateSubrectangle(int row1, int col1, int row2, int col2, int newValue)`:用 $newValue$ 更新以 $(row1,col1)$ 为左上角且以 $(row2,col2)$ 为右下角的子矩形。 + +2. `getValue(int row, int col)`:返回矩形中坐标 (row,col) 的当前值。 + +**说明**: + +- 最多有 $500$ 次 `updateSubrectangle` 和 `getValue` 操作。 +- $1 <= rows, cols <= 100$。 +- $rows == rectangle.length$。 +- $cols == rectangle[i].length$。 +- $0 <= row1 <= row2 < rows$。 +- $0 <= col1 <= col2 < cols$。 +- $1 <= newValue, rectangle[i][j] <= 10^9$。 +- $0 <= row < rows$。 +- $0 <= col < cols$。 + +**示例**: + +- 示例 1: + +```python +输入: +["SubrectangleQueries","getValue","updateSubrectangle","getValue","getValue","updateSubrectangle","getValue","getValue"] +[[[[1,2,1],[4,3,4],[3,2,1],[1,1,1]]],[0,2],[0,0,3,2,5],[0,2],[3,1],[3,0,3,2,10],[3,1],[0,2]] +输出: +[null,1,null,5,5,null,10,5] +解释: +SubrectangleQueries subrectangleQueries = new SubrectangleQueries([[1,2,1],[4,3,4],[3,2,1],[1,1,1]]); +// 初始的 (4x3) 矩形如下: +// 1 2 1 +// 4 3 4 +// 3 2 1 +// 1 1 1 +subrectangleQueries.getValue(0, 2); // 返回 1 +subrectangleQueries.updateSubrectangle(0, 0, 3, 2, 5); +// 此次更新后矩形变为: +// 5 5 5 +// 5 5 5 +// 5 5 5 +// 5 5 5 +subrectangleQueries.getValue(0, 2); // 返回 5 +subrectangleQueries.getValue(3, 1); // 返回 5 +subrectangleQueries.updateSubrectangle(3, 0, 3, 2, 10); +// 此次更新后矩形变为: +// 5 5 5 +// 5 5 5 +// 5 5 5 +// 10 10 10 +subrectangleQueries.getValue(3, 1); // 返回 10 +subrectangleQueries.getValue(0, 2); // 返回 5 +``` + +- 示例 2: + +```python +输入: +["SubrectangleQueries","getValue","updateSubrectangle","getValue","getValue","updateSubrectangle","getValue"] +[[[[1,1,1],[2,2,2],[3,3,3]]],[0,0],[0,0,2,2,100],[0,0],[2,2],[1,1,2,2,20],[2,2]] +输出: +[null,1,null,100,100,null,20] +解释: +SubrectangleQueries subrectangleQueries = new SubrectangleQueries([[1,1,1],[2,2,2],[3,3,3]]); +subrectangleQueries.getValue(0, 0); // 返回 1 +subrectangleQueries.updateSubrectangle(0, 0, 2, 2, 100); +subrectangleQueries.getValue(0, 0); // 返回 100 +subrectangleQueries.getValue(2, 2); // 返回 100 +subrectangleQueries.updateSubrectangle(1, 1, 2, 2, 20); +subrectangleQueries.getValue(2, 2); // 返回 20 + +``` + +## 解题思路 + +### 思路 1:暴力 + +矩形最大为 $row \times col == 100 \times 100$,则每次更新最多需要更新 $10000$ 个值,更新次数最多为 $500$ 次。 + +用暴力更新的方法最多需要更新 $5000000$ 次,我们可以尝试一下用暴力更新的方法解决本题(提交后发现可以通过)。 + +### 思路 1:代码 + +```Python +class SubrectangleQueries: + + def __init__(self, rectangle: List[List[int]]): + self.rectangle = rectangle + + + def updateSubrectangle(self, row1: int, col1: int, row2: int, col2: int, newValue: int) -> None: + for row in range(row1, row2 + 1): + for col in range(col1, col2 + 1): + self.rectangle[row][col] = newValue + + + def getValue(self, row: int, col: int) -> int: + return self.rectangle[row][col] +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(row \times col \times 500)$。 +- **空间复杂度**:$O(row \times col)$。 diff --git "a/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" "b/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" index 57330f51..ce16204f 100644 --- "a/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" @@ -9,25 +9,50 @@ ## 题目大意 -给定一个二进制数组 `nums`,需要 +**描述**:给定一个二进制数组 $nums$,需要从数组中删掉一个元素。 -要求:从数组中删掉一个元素,并返回最长的且只包含 `1` 的非空子数组的长度。如果不存在这样的子数组,请返回 `0`。 +**要求**:返回最长的且只包含 $1$ 的非空子数组的长度。如果不存在这样的子数组,请返回 $0$。 + +**说明**: + +- $1 \le nums.length \le 10^5$。 +- $nums[i]$ 要么是 $0$ 要么是 $1$。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [1,1,0,1] +输出:3 +解释:删掉位置 2 的数后,[1,1,1] 包含 3 个 1。 +``` + +- 示例 2: + +```python +输入:nums = [0,1,1,1,0,1,1,0,1] +输出:5 +解释:删掉位置 4 的数字后,[0,1,1,1,1,1,0,1] 的最长全 1 子数组为 [1,1,1,1,1]。 +``` ## 解题思路 -维护一个元素值为 `0` 的元素数量少于 `1` 个的滑动窗口。则答案为滑动窗口长度减去窗口内 `0` 的个数求最大值。具体做法如下: +### 思路 1:滑动窗口 -设定两个指针:`left`、`right`,分别指向滑动窗口的左右边界,保证窗口 `0` 的个数小于 `1` 个。使用 `window_count` 记录窗口中 `0` 的个数,使用 `ans` 记录删除一个元素后,最长的只包含 `1` 的非空子数组长度。 +维护一个元素值为 $0$ 的元素数量少于 $1$ 个的滑动窗口。则答案为滑动窗口长度减去窗口内 $0$ 的个数求最大值。具体做法如下: -- 一开始,`left`、`right` 都指向 `0`。 +设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口 $0$ 的个数小于 $1$ 个。使用 $window\underline{}count$ 记录窗口中 $0$ 的个数,使用 $ans$ 记录删除一个元素后,最长的只包含 $1$ 的非空子数组长度。 -- 如果最右侧元素等于 `0`,则 `window_count += 1` 。 +- 一开始,$left$、$right$ 都指向 $0$。 -- 如果 `window_count > 1` ,则不断右移 `left`,缩小滑动窗口长度。并更新当前窗口中 `0` 的个数,直到 `window_count <= 1`。 -- 更新答案值,然后向右移动 `right`,直到 `right >= len(nums)` 结束。 -- 输出答案 `ans`。 +- 如果最右侧元素等于 $0$,则 `window_count += 1` 。 -## 代码 +- 如果 $window\underline{}count > 1$ ,则不断右移 $left$,缩小滑动窗口长度。并更新当前窗口中 $0$ 的个数,直到 $window\underline{}count \le 1$。 +- 更新答案值,然后向右移动 $right$,直到 $right \ge len(nums)$ 结束。 +- 输出答案 $ans$。 + +### 思路 1:代码 ```python class Solution: @@ -53,3 +78,8 @@ class Solution: return ans ``` +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $nums$ 的长度。 +- **空间复杂度**:$O(1)$。 + From f15eb48db858f0f5d01eabc0b4b5762c4f44b53b Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 11 Jan 2024 15:00:52 +0800 Subject: [PATCH 058/158] Update 02.String-Rabin-Karp.md --- .../02.String-Rabin-Karp.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md b/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md index dadf7423..40671189 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md @@ -12,8 +12,8 @@ 2. 通过滚动哈希算法求出模式串 $p$ 的哈希值 $hash\underline{}p$。 3. 再通过滚动哈希算法对文本串 $T$ 中 $n - m + 1$ 个子串分别求哈希值 $hash\underline{}t$。 4. 然后逐个与模式串的哈希值比较大小。 - 1. 如果当前子串的哈希值 $hash\underline{}t$ 与模式串的哈希值 $hash_p$ 不同,则说明两者不匹配,则继续向后匹配。 - 2. 如果当前子串的哈希值 $hash\underline{}t$ 与模式串的哈希值 $hash_p$ 相等,则验证当前子串和模式串的每个字符是否真的相等(避免哈希冲突)。 + 1. 如果当前子串的哈希值 $hash\underline{}t$ 与模式串的哈希值 $hash\underline{}p$ 不同,则说明两者不匹配,则继续向后匹配。 + 2. 如果当前子串的哈希值 $hash\underline{}t$ 与模式串的哈希值 $hash\underline{}p$ 相等,则验证当前子串和模式串的每个字符是否真的相等(避免哈希冲突)。 1. 如果当前子串和模式串的每个字符相等,则说明当前子串和模式串匹配。 2. 如果当前子串和模式串的每个字符不相等,则说明两者不匹配,继续向后匹配。 5. 比较到末尾,如果仍未成功匹配,则说明文本串 $T$ 中不包含模式串 $p$,方法返回 $-1$。 @@ -32,17 +32,17 @@ RK 算法中的滚动哈希算法主要是利用了 **「Rabin fingerprint 思 比如 `"cat"` 的哈希值就可以表示为: -$\begin{align} Hash(cat) &= c \times 26 \times 26 + a \times 26 + t \times 1 \cr &= 2 \times 26 \times 26 + 0 \times 26 + 19 \times 1 \cr &= 1371 \end{align}$ +$\begin{aligned} Hash(cat) &= c \times 26 \times 26 + a \times 26 + t \times 1 \cr &= 2 \times 26 \times 26 + 0 \times 26 + 19 \times 1 \cr &= 1371 \end{aligned}$ 这种按位计算哈希值的哈希函数有一个特点:在计算相邻子串时,可以利用上一个子串的哈希值。 比如说 $cat$ 的相邻子串为 `"ate"`。按照刚才哈希函数计算,可以得出 `"ate"` 的哈希值为: -$\begin{align} Hash(ate) &= a \times 26 \times 26 + t \times 26 + e \times 1 \cr &= 0 \times 26 \times 26 + 19 \times 26 + 4 \times 1 \cr &= 498 \end{align}$ +$\begin{aligned} Hash(ate) &= a \times 26 \times 26 + t \times 26 + e \times 1 \cr &= 0 \times 26 \times 26 + 19 \times 26 + 4 \times 1 \cr &= 498 \end{aligned}$ 如果利用上一个子串 `"cat"` 的哈希值计算 `"ate"`,则 `"ate"` 的哈希值为: -$\begin{align} Hash(ate) &= (Hash(cat) - c \times 26 \times 26) * 26 + e \times 26 \cr &= (1371 - 2 \times 26 \times 26) \times 26 + 4 \times 1 \cr &= 498 \end{align}$ +$\begin{aligned} Hash(ate) &= (Hash(cat) - c \times 26 \times 26) * 26 + e \times 26 \cr &= (1371 - 2 \times 26 \times 26) \times 26 + 4 \times 1 \cr &= 498 \end{aligned}$ 可以看出,这两种方式计算出的哈希值是相同的。但是第二种计算方式不需要再遍历子串,只需要进行一位字符的计算即可得出整个子串的哈希值。这样每次计算子串哈希值的时间复杂度就降到了 $O(1)$。然后我们就可以通过滚动哈希算法快速计算出子串的哈希值了。 @@ -94,7 +94,7 @@ def rabinKarp(T: str, p: str, d, q) -> int: RK 算法可以看做是 BF 算法的一种改进。在 BF 算法中,每一个字符都需要进行比较。而在 RK 算法中,判断模式串的哈希值与每个子串的哈希值之间是否相等的时间复杂度为 $O(1)$。总共需要比较 $n - m + 1$ 个子串的哈希值,所以 RK 算法的整体时间复杂度为 $O(n)$。跟 BF 算法相比,RK 算法的效率提高了很多。 -但是如果存在冲突的情况下,算法的效率会降低。最坏情况是每一次比较模式串的哈希值和子串的哈希值时都相等,但是每一次都会出现冲突,那么每一次都需要验证模式串和子串每个字符是否完全相同,那么总的比较次数就是 $m \times (n - m + 1) $,时间复杂度就会退化为 $O(m \times n)$。 +但是如果存在冲突的情况下,算法的效率会降低。最坏情况是每一次比较模式串的哈希值和子串的哈希值时都相等,但是每一次都会出现冲突,那么每一次都需要验证模式串和子串每个字符是否完全相同,那么总的比较次数就是 $m \times (n - m + 1)$,时间复杂度就会退化为 $O(m \times n)$。 ## 参考资料 From 5a3469338122dd5d60420780cfa09d26772a7e76 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 12 Jan 2024 17:46:41 +0800 Subject: [PATCH 059/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 5 +- README.md | 2 +- ...E \350\277\255\344\273\243\345\231\250.md" | 92 ++++++++++++++++++ ...21\347\232\204\345\233\240\346\225\260.md" | 76 +++++++++++++++ ...07\345\255\220\345\272\217\345\210\227.md" | 95 +++++++++++++++++++ 5 files changed, 268 insertions(+), 2 deletions(-) create mode 100644 "Solutions/0900. RLE \350\277\255\344\273\243\345\231\250.md" create mode 100644 "Solutions/1362. \346\234\200\346\216\245\350\277\221\347\232\204\345\233\240\346\225\260.md" create mode 100644 "Solutions/1930. \351\225\277\345\272\246\344\270\272 3 \347\232\204\344\270\215\345\220\214\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index e787248c..6e4fa944 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 844 道) +# LeetCode 题解(已完成 847 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -461,6 +461,7 @@ | 0887 | [鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0887.%20%E9%B8%A1%E8%9B%8B%E6%8E%89%E8%90%BD.md) | 数学、二分查找、动态规划 | 困难 | | 0889 | [根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0889.%20%E6%A0%B9%E6%8D%AE%E5%89%8D%E5%BA%8F%E5%92%8C%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | | 0897 | [递增顺序搜索树](https://leetcode.cn/problems/increasing-order-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0897.%20%E9%80%92%E5%A2%9E%E9%A1%BA%E5%BA%8F%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 栈、树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| 0900 | [RLE 迭代器](https://leetcode.cn/problems/rle-iterator/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0900.%20RLE%20%E8%BF%AD%E4%BB%A3%E5%99%A8.md) | 设计、数组、计数、迭代器 | 中等 | | 0901 | [股票价格跨度](https://leetcode.cn/problems/online-stock-span/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0901.%20%E8%82%A1%E7%A5%A8%E4%BB%B7%E6%A0%BC%E8%B7%A8%E5%BA%A6.md) | 栈、设计、数据流、单调栈 | 中等 | | 0902 | [最大为 N 的数字组合](https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0902.%20%E6%9C%80%E5%A4%A7%E4%B8%BA%20N%20%E7%9A%84%E6%95%B0%E5%AD%97%E7%BB%84%E5%90%88.md) | 数组、数学、字符串、二分查找、动态规划 | 困难 | | 0904 | [水果成篮](https://leetcode.cn/problems/fruit-into-baskets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0904.%20%E6%B0%B4%E6%9E%9C%E6%88%90%E7%AF%AE.md) | 数组、哈希表、滑动窗口 | 中等 | @@ -562,6 +563,7 @@ | 1347 | [制造字母异位词的最小步骤数](https://leetcode.cn/problems/minimum-number-of-steps-to-make-two-strings-anagram/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1347.%20%E5%88%B6%E9%80%A0%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E6%AD%A5%E9%AA%A4%E6%95%B0.md) | 哈希表、字符串、计数 | 中等 | | 1349 | [参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1349.%20%E5%8F%82%E5%8A%A0%E8%80%83%E8%AF%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | | 1358 | [包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1358.%20%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E4%B8%89%E7%A7%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%9B%AE.md) | 哈希表、字符串、滑动窗口 | 中等 | +| 1362 | [最接近的因数](https://leetcode.cn/problems/closest-divisors/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1362.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E5%9B%A0%E6%95%B0.md) | 数学 | 中等 | | 1381 | [设计一个支持增量操作的栈](https://leetcode.cn/problems/design-a-stack-with-increment-operation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1381.%20%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E6%94%AF%E6%8C%81%E5%A2%9E%E9%87%8F%E6%93%8D%E4%BD%9C%E7%9A%84%E6%A0%88.md) | 栈、设计、数组 | 中等 | | 1400 | [构造 K 个回文字符串](https://leetcode.cn/problems/construct-k-palindrome-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1400.%20%E6%9E%84%E9%80%A0%20K%20%E4%B8%AA%E5%9B%9E%E6%96%87%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 贪心、哈希表、字符串、计数 | 中等 | | 1408 | [数组中的字符串匹配](https://leetcode.cn/problems/string-matching-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1408.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D.md) | 数组、字符串、字符串匹配 | 简单 | @@ -625,6 +627,7 @@ | 1903 | [字符串中的最大奇数](https://leetcode.cn/problems/largest-odd-number-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1903.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%A5%87%E6%95%B0.md) | 贪心、数学、字符串 | 简单 | | 1925 | [统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1925.%20%E7%BB%9F%E8%AE%A1%E5%B9%B3%E6%96%B9%E5%92%8C%E4%B8%89%E5%85%83%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、枚举 | 简单 | | 1929 | [数组串联](https://leetcode.cn/problems/concatenation-of-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1929.%20%E6%95%B0%E7%BB%84%E4%B8%B2%E8%81%94.md) | 数组 | 简单 | +| 1930 | [长度为 3 的不同回文子序列](https://leetcode.cn/problems/unique-length-3-palindromic-subsequences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1930.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%203%20%E7%9A%84%E4%B8%8D%E5%90%8C%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97.md) | 哈希表、字符串、前缀和 | 中等 | | 1936 | [新增的最少台阶数](https://leetcode.cn/problems/add-minimum-number-of-rungs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1936.%20%E6%96%B0%E5%A2%9E%E7%9A%84%E6%9C%80%E5%B0%91%E5%8F%B0%E9%98%B6%E6%95%B0.md) | 贪心、数组 | 中等 | | 1941 | [检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1941.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E7%9B%B8%E5%90%8C.md) | 哈希表、字符串、计数 | 简单 | | 1947 | [最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1947.%20%E6%9C%80%E5%A4%A7%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%84%E5%88%86%E5%92%8C.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | diff --git a/README.md b/README.md index 1fa7bbc3..25322b95 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 844 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 847 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/0900. RLE \350\277\255\344\273\243\345\231\250.md" "b/Solutions/0900. RLE \350\277\255\344\273\243\345\231\250.md" new file mode 100644 index 00000000..d806bc71 --- /dev/null +++ "b/Solutions/0900. RLE \350\277\255\344\273\243\345\231\250.md" @@ -0,0 +1,92 @@ +# [0900. RLE 迭代器](https://leetcode.cn/problems/rle-iterator/) + +- 标签:设计、数组、计数、迭代器 +- 难度:中等 + +## 题目链接 + +- [0900. RLE 迭代器 - 力扣](https://leetcode.cn/problems/rle-iterator/) + +## 题目大意 + +**描述**:我们可以使用游程编码(即 RLE)来编码一个整数序列。在偶数长度 $encoding$ ( 从 $0$ 开始 )的游程编码数组中,对于所有偶数 $i$,$encoding[i]$ 告诉我们非负整数 $encoding[i + 1]$ 在序列中重复的次数。 + +- 例如,序列 $arr = [8,8,8,5,5]$ 可以被编码为 $encoding =[3,8,2,5]$。$encoding =[3,8,0,9,2,5]$ 和 $encoding =[2,8,1,8,2,5]$ 也是 $arr$ 有效的 RLE。 + +给定一个游程长度的编码数组 $encoding$。 + +**要求**:设计一个迭代器来遍历它。 + +实现 `RLEIterator` 类: + +- `RLEIterator(int[] encoded)` 用编码后的数组初始化对象。 +- `int next(int n)` 以这种方式耗尽后 $n$ 个元素并返回最后一个耗尽的元素。如果没有剩余的元素要耗尽,则返回 $-1$。 + +**说明**: + +- $2 \le encoding.length \le 1000$。 +- $encoding.length$ 为偶。 +- $0 \le encoding[i] \le 10^9$。 +- $1 \le n \le 10^9$。 +- 每个测试用例调用 `next` 不高于 $1000$ 次。 + +**示例**: + +- 示例 1: + +```python +输入: +["RLEIterator","next","next","next","next"] +[[[3,8,0,9,2,5]],[2],[1],[1],[2]] +输出: +[null,8,8,5,-1] +解释: +RLEIterator rLEIterator = new RLEIterator([3, 8, 0, 9, 2, 5]); // 这映射到序列 [8,8,8,5,5]。 +rLEIterator.next(2); // 耗去序列的 2 个项,返回 8。现在剩下的序列是 [8, 5, 5]。 +rLEIterator.next(1); // 耗去序列的 1 个项,返回 8。现在剩下的序列是 [5, 5]。 +rLEIterator.next(1); // 耗去序列的 1 个项,返回 5。现在剩下的序列是 [5]。 +rLEIterator.next(2); // 耗去序列的 2 个项,返回 -1。 这是由于第一个被耗去的项是 5, +但第二个项并不存在。由于最后一个要耗去的项不存在,我们返回 -1。 +``` + +## 解题思路 + +### 思路 1:模拟 + +1. 初始化时: + 1. 保存数组 $encoding$ 作为成员变量。 + 2. 保存当前位置 $index$,表示当前迭代器指向元素 $encoding[index + 1]$。初始化赋值为 $0$。 + 3. 保存当前指向元素 $encoding[index + 1]$ 已经被删除的元素个数 $d\underline{}cnt$。初始化赋值为 $0$。 +2. 调用 `next(n)` 时: + 1. 对于当前元素,先判断当前位置是否超出 $encoding$ 范围,超过则直接返回 $-1$。 + 2. 如果未超过,再判断当前元素剩余个数 $encoding[index] - d\underline{}cnt$ 是否小于 $n$ 个。 + 1. 如果小于 $n$ 个,则删除当前元素剩余所有个数,并指向下一位置继续删除剩余元素。 + 2. 如果等于大于等于 $n$ 个,则令当前指向元素 $encoding[index + 1]$ 已经被删除的元素个数 $d\underline{}cnt$ 加上 $n$。 + +### 思路 1:代码 + +```Python +class RLEIterator: + + def __init__(self, encoding: List[int]): + self.encoding = encoding + self.index = 0 + self.d_cnt = 0 + + def next(self, n: int) -> int: + while self.index < len(self.encoding): + if self.d_cnt + n > self.encoding[self.index]: + n -= self.encoding[self.index] - self.d_cnt + self.d_cnt = 0 + self.index += 2 + else: + self.d_cnt += n + return self.encoding[self.index + 1] + return -1 +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n + m)$,其中 $n$ 为数组 $encoding$ 的长度,$m$ 是调用 `next(n)` 的次数。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/1362. \346\234\200\346\216\245\350\277\221\347\232\204\345\233\240\346\225\260.md" "b/Solutions/1362. \346\234\200\346\216\245\350\277\221\347\232\204\345\233\240\346\225\260.md" new file mode 100644 index 00000000..9ccf4b17 --- /dev/null +++ "b/Solutions/1362. \346\234\200\346\216\245\350\277\221\347\232\204\345\233\240\346\225\260.md" @@ -0,0 +1,76 @@ +# [1362. 最接近的因数](https://leetcode.cn/problems/closest-divisors/) + +- 标签:数学 +- 难度:中等 + +## 题目链接 + +- [1362. 最接近的因数 - 力扣](https://leetcode.cn/problems/closest-divisors/) + +## 题目大意 + +**描述**:给定一个整数 $num$。 + +**要求**:找出同时满足下面全部要求的两个整数: + +- 两数乘积等于 $num + 1$ 或 $num + 2$。 +- 以绝对差进行度量,两数大小最接近。 + +你可以按照任意顺序返回这两个整数。 + +**说明**: + +- $1 \le num \le 10^9$。 + +**示例**: + +- 示例 1: + +```python +输入:num = 8 +输出:[3,3] +解释:对于 num + 1 = 9,最接近的两个因数是 3 & 3;对于 num + 2 = 10, 最接近的两个因数是 2 & 5,因此返回 3 & 3。 +``` + +- 示例 2: + +```python +输入:num = 123 +输出:[5,25] +``` + +## 解题思路 + +### 思路 1:数学 + +对于整数的任意一个范围在 $[\sqrt{n}, n]$ 的因数而言,一定存在一个范围在 $[1, \sqrt{n}]$ 的因数与其对应。因此,我们在遍历整数因数时,我们只需遍历 $[1, \sqrt{n}]$ 范围内的因数即可。 + +则这道题的具体解题步骤如下: + +1. 对于整数 $num + 1$、从 $\sqrt{num + 1}$ 的位置开始,到 $1$ 为止,以递减的顺序在 $[1, \sqrt{num + 1}]$ 范围内找到最接近的小因数 $a1$,并根据 $num // a1$ 获得另一个因数 $a2$。 +2. 用同样的方式,对于整数 $num + 2$、从 $\sqrt{num + 2}$ 的位置开始,到 $1$ 为止,以递减的顺序在 $[1, \sqrt{num + 2}]$ 范围内找到最接近的小因数 $b1$,并根据 $num // b1$ 获得另一个因数 $b2$。 +3. 判断 $abs(a1 - a2)$ 与 $abs(b1 - b2)$ 的大小,返回差值绝对值较小的一对因子数作为答案。 + +### 思路 1:代码 + +```Python +class Solution: + def disassemble(self, num): + for i in range(int(sqrt(num) + 1), 1, -1): + if num % i == 0: + return (i, num // i) + return (1, num) + + def closestDivisors(self, num: int) -> List[int]: + a1, a2 = self.disassemble(num + 1) + b1, b2 = self.disassemble(num + 2) + if abs(a1 - a2) <= abs(b1 - b2): + return [a1, a2] + return [b1, b2] +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$(\sqrt{n})$。 +- **空间复杂度**:$O(1)$。 + diff --git "a/Solutions/1930. \351\225\277\345\272\246\344\270\272 3 \347\232\204\344\270\215\345\220\214\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" "b/Solutions/1930. \351\225\277\345\272\246\344\270\272 3 \347\232\204\344\270\215\345\220\214\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" new file mode 100644 index 00000000..f02dd0fc --- /dev/null +++ "b/Solutions/1930. \351\225\277\345\272\246\344\270\272 3 \347\232\204\344\270\215\345\220\214\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" @@ -0,0 +1,95 @@ +# [1930. 长度为 3 的不同回文子序列](https://leetcode.cn/problems/unique-length-3-palindromic-subsequences/) + +- 标签:哈希表、字符串、前缀和 +- 难度:中等 + +## 题目链接 + +- [1930. 长度为 3 的不同回文子序列 - 力扣](https://leetcode.cn/problems/unique-length-3-palindromic-subsequences/) + +## 题目大意 + +**描述**:给定一个人字符串 $s$。 + +**要求**:返回 $s$ 中长度为 $s$ 的不同回文子序列的个数。即便存在多种方法来构建相同的子序列,但相同的子序列只计数一次。 + +**说明**: + +- **回文**:指正着读和反着读一样的字符串。 +- **子序列**:由原字符串删除其中部分字符(也可以不删除)且不改变剩余字符之间相对顺序形成的一个新字符串。 + - 例如,`"ace"` 是 `"abcde"` 的一个子序列。 + +- $3 \le s.length \le 10^5$。 +- $s$ 仅由小写英文字母组成。 + +**示例**: + +- 示例 1: + +```python +输入:s = "aabca" +输出:3 +解释:长度为 3 的 3 个回文子序列分别是: +- "aba" ("aabca" 的子序列) +- "aaa" ("aabca" 的子序列) +- "aca" ("aabca" 的子序列) +``` + +- 示例 2: + +```python +输入:s = "bbcbaba" +输出:4 +解释:长度为 3 的 4 个回文子序列分别是: +- "bbb" ("bbcbaba" 的子序列) +- "bcb" ("bbcbaba" 的子序列) +- "bab" ("bbcbaba" 的子序列) +- "aba" ("bbcbaba" 的子序列) +``` + +## 解题思路 + +### 思路 1:枚举 + 哈希表 + +字符集只包含 $26$ 个小写字母,所以我们可以枚举这 $26$ 个小写字母。 + +对于每个小写字母,使用对撞双指针,找到字符串 $s$ 首尾两侧与小写字母相同的最左位置和最右位置。 + +如果两个位置不同,则我们可以将两个位置中间不重复的字符当作是长度为 $3$ 的子序列最中间的那个字符。 + +则我们可以统计出两个位置中间不重复字符的个数,将其累加到答案中。 + +遍历完,返回答案。 + +### 思路 1:代码 + +```Python +class Solution: + def countPalindromicSubsequence(self, s: str) -> int: + size = len(s) + ans = 0 + + for i in range(26): + left, right = 0, size - 1 + + while left < size and ord(s[left]) - ord('a') != i: + left += 1 + + while right >= 0 and ord(s[right]) - ord('a') != i: + right -= 1 + + if right - left < 2: + continue + + char_set = set() + for j in range(left + 1, right): + char_set.add(s[j]) + ans += len(char_set) + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$n \times | \sum | + | \sum |^2$,其中 $n$ 为字符串 $s$ 的长度,$\sum$ 为字符集,本题中 $| \sum | = 26$。 +- **空间复杂度**:$O(| \sum |)$。 From 5699c387005021c0ec5a5a4273324ada8836ef0b Mon Sep 17 00:00:00 2001 From: kukayiyi <68359995+kukayiyi@users.noreply.github.com> Date: Fri, 12 Jan 2024 17:52:15 +0800 Subject: [PATCH 060/158] Update 01.Linear-DP-01.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 更改'最长重复子数组'中状态转移方程描述 --- .../03.Linear-DP/01.Linear-DP-01.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md b/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md index 1f7497e3..b4da79d4 100644 --- a/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md +++ b/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md @@ -588,7 +588,7 @@ class Solution: ###### 2. 定义状态 -定义状态 $dp[i][j]$ 为:「以 $nums1$ 中前 $i$ 个元素为子数组($nums1[0]...nums2[i - 1]$)」和「以 $nums2$ 中前 $j$ 个元素为子数组($nums2[0]...nums2[j - 1]$)」的最长公共子数组长度。 +定义状态 $dp[i][j]$ 为:「在 $nums1$ 中以第 $i - 1$ 个元素结尾的子数组 」和「在 $nums2$ 中以第 $j - 1$ 个元素结尾的子数组 」的最长公共子数组长度。 ###### 3. 状态转移方程 @@ -597,12 +597,12 @@ class Solution: ###### 4. 初始条件 -- 当 $i = 0$ 时,$nums1[0]...nums1[i - 1]$ 表示的是空数组,空数组与 $nums2[0]...nums2[j - 1]$ 的最长公共子序列长度为 $0$,即 $dp[0][j] = 0$。 -- 当 $j = 0$ 时,$nums2[0]...nums2[j - 1]$ 表示的是空数组,空数组与 $nums1[0]...nums1[i - 1]$ 的最长公共子序列长度为 $0$,即 $dp[i][0] = 0$。 +- 当 $i = 0$ 时,$nums1[0]...nums1[i - 1]$ 表示的是空数组,空数组与 $nums2$ 中任意子数组的最长公共子序列长度为 $0$,即 $dp[0][j] = 0$。 +- 当 $j = 0$ 时,$nums2[0]...nums2[j - 1]$ 表示的是空数组,空数组与 $nums1$ 中任意子数组的最长公共子序列长度为 $0$,即 $dp[i][0] = 0$。 ###### 5. 最终结果 -- 根据状态定义, $dp[i][j]$ 为:「以 $nums1$ 中前 $i$ 个元素为子数组($nums1[0]...nums2[i - 1]$)」和「以 $nums2$ 中前 $j$ 个元素为子数组($nums2[0]...nums2[j - 1]$)」的最长公共子数组长度。在遍历过程中,我们可以使用 $res$ 记录下所有 $dp[i][j]$ 中最大值即为答案。 +- 根据状态定义, $dp[i][j]$ 为:「在 $nums1$ 中以第 $i - 1$ 个元素结尾的子数组 」和「在 $nums2$ 中以第 $j - 1$ 个元素结尾的子数组 」的最长公共子数组长度。在遍历过程中,我们可以使用 $res$ 记录下所有 $dp[i][j]$ 中最大值即为答案。 ##### 思路 1:代码 @@ -742,4 +742,4 @@ class Solution: ## 参考资料 - 【书籍】算法竞赛进阶指南 -- 【文章】[动态规划概念和基础线性DP | 潮汐朝夕](https://chengzhaoxi.xyz/1a4a2483.html) \ No newline at end of file +- 【文章】[动态规划概念和基础线性DP | 潮汐朝夕](https://chengzhaoxi.xyz/1a4a2483.html) From 8ea6473d0287d15c33a7b7c29405df1444ca06b6 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 15 Jan 2024 11:51:18 +0800 Subject: [PATCH 061/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 5 +- README.md | 2 +- ...57\345\220\246\346\216\245\350\277\221.md" | 77 ++++++++++++++++ ...14\347\247\257\345\205\203\347\273\204.md" | 78 +++++++++++++++++ ...00\345\244\247\346\225\260\351\207\217.md" | 87 +++++++++++++++++++ 5 files changed, 247 insertions(+), 2 deletions(-) create mode 100644 "Solutions/1657. \347\241\256\345\256\232\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\346\230\257\345\220\246\346\216\245\350\277\221.md" create mode 100644 "Solutions/1726. \345\220\214\347\247\257\345\205\203\347\273\204.md" create mode 100644 "Solutions/1921. \346\266\210\347\201\255\346\200\252\347\211\251\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index 6e4fa944..938051cc 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 847 道) +# LeetCode 题解(已完成 850 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -600,6 +600,7 @@ | 1617 | [统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1617.%20%E7%BB%9F%E8%AE%A1%E5%AD%90%E6%A0%91%E4%B8%AD%E5%9F%8E%E5%B8%82%E4%B9%8B%E9%97%B4%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | | 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | | 1646 | [获取生成数组中的最大值](https://leetcode.cn/problems/get-maximum-in-generated-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1646.%20%E8%8E%B7%E5%8F%96%E7%94%9F%E6%88%90%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 数组、动态规划、模拟 | 简单 | +| 1657 | [确定两个字符串是否接近](https://leetcode.cn/problems/determine-if-two-strings-are-close/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1657.%20%E7%A1%AE%E5%AE%9A%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E6%8E%A5%E8%BF%91.md) | 哈希表、字符串、排序 | 中等 | | 1658 | [将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1658.%20%E5%B0%86%20x%20%E5%87%8F%E5%88%B0%200%20%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | | 1672 | [最富有客户的资产总量](https://leetcode.cn/problems/richest-customer-wealth/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1672.%20%E6%9C%80%E5%AF%8C%E6%9C%89%E5%AE%A2%E6%88%B7%E7%9A%84%E8%B5%84%E4%BA%A7%E6%80%BB%E9%87%8F.md) | 数组、矩阵 | 简单 | | 1695 | [删除子数组的最大得分](https://leetcode.cn/problems/maximum-erasure-value/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1695.%20%E5%88%A0%E9%99%A4%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md) | 数组、哈希表、滑动窗口 | 中等 | @@ -607,6 +608,7 @@ | 1710 | [卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1710.%20%E5%8D%A1%E8%BD%A6%E4%B8%8A%E7%9A%84%E6%9C%80%E5%A4%A7%E5%8D%95%E5%85%83%E6%95%B0.md) | 贪心、数组、排序 | 简单 | | 1716 | [计算力扣银行的钱](https://leetcode.cn/problems/calculate-money-in-leetcode-bank/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1716.%20%E8%AE%A1%E7%AE%97%E5%8A%9B%E6%89%A3%E9%93%B6%E8%A1%8C%E7%9A%84%E9%92%B1.md) | 数学 | 简单 | | 1720 | [解码异或后的数组](https://leetcode.cn/problems/decode-xored-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1720.%20%E8%A7%A3%E7%A0%81%E5%BC%82%E6%88%96%E5%90%8E%E7%9A%84%E6%95%B0%E7%BB%84.md) | 位运算、数组 | 简单 | +| 1726 | [同积元组](https://leetcode.cn/problems/tuple-with-same-product/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1726.%20%E5%90%8C%E7%A7%AF%E5%85%83%E7%BB%84.md) | 数组、哈希表 | 中等 | | 1736 | [替换隐藏数字得到的最晚时间](https://leetcode.cn/problems/latest-time-by-replacing-hidden-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1736.%20%E6%9B%BF%E6%8D%A2%E9%9A%90%E8%97%8F%E6%95%B0%E5%AD%97%E5%BE%97%E5%88%B0%E7%9A%84%E6%9C%80%E6%99%9A%E6%97%B6%E9%97%B4.md) | 贪心、字符串 | 简单 | | 1742 | [盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1742.%20%E7%9B%92%E5%AD%90%E4%B8%AD%E5%B0%8F%E7%90%83%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md) | 哈希表、数学、计数 | 简单 | | 1749 | [任意子数组和的绝对值的最大值](https://leetcode.cn/problems/maximum-absolute-sum-of-any-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1749.%20%E4%BB%BB%E6%84%8F%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C%E7%9A%84%E7%BB%9D%E5%AF%B9%E5%80%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 数组、动态规划 | 中等 | @@ -625,6 +627,7 @@ | 1893 | [检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1893.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%8C%BA%E5%9F%9F%E5%86%85%E6%89%80%E6%9C%89%E6%95%B4%E6%95%B0%E9%83%BD%E8%A2%AB%E8%A6%86%E7%9B%96.md) | 数组、哈希表、前缀和 | 简单 | | 1897 | [重新分配字符使所有字符串都相等](https://leetcode.cn/problems/redistribute-characters-to-make-all-strings-equal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1897.%20%E9%87%8D%E6%96%B0%E5%88%86%E9%85%8D%E5%AD%97%E7%AC%A6%E4%BD%BF%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%83%BD%E7%9B%B8%E7%AD%89.md) | 哈希表、字符串、计数 | 简单 | | 1903 | [字符串中的最大奇数](https://leetcode.cn/problems/largest-odd-number-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1903.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%A5%87%E6%95%B0.md) | 贪心、数学、字符串 | 简单 | +| 1921 | [消灭怪物的最大数量](https://leetcode.cn/problems/eliminate-maximum-number-of-monsters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1921.%20%E6%B6%88%E7%81%AD%E6%80%AA%E7%89%A9%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md) | 贪心、数组、排序 | 中等 | | 1925 | [统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1925.%20%E7%BB%9F%E8%AE%A1%E5%B9%B3%E6%96%B9%E5%92%8C%E4%B8%89%E5%85%83%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、枚举 | 简单 | | 1929 | [数组串联](https://leetcode.cn/problems/concatenation-of-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1929.%20%E6%95%B0%E7%BB%84%E4%B8%B2%E8%81%94.md) | 数组 | 简单 | | 1930 | [长度为 3 的不同回文子序列](https://leetcode.cn/problems/unique-length-3-palindromic-subsequences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1930.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%203%20%E7%9A%84%E4%B8%8D%E5%90%8C%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97.md) | 哈希表、字符串、前缀和 | 中等 | diff --git a/README.md b/README.md index 25322b95..3ee255d0 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 847 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 850 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/1657. \347\241\256\345\256\232\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\346\230\257\345\220\246\346\216\245\350\277\221.md" "b/Solutions/1657. \347\241\256\345\256\232\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\346\230\257\345\220\246\346\216\245\350\277\221.md" new file mode 100644 index 00000000..fa995021 --- /dev/null +++ "b/Solutions/1657. \347\241\256\345\256\232\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\346\230\257\345\220\246\346\216\245\350\277\221.md" @@ -0,0 +1,77 @@ +# [1657. 确定两个字符串是否接近](https://leetcode.cn/problems/determine-if-two-strings-are-close/) + +- 标签:哈希表、字符串、排序 +- 难度:中等 + +## 题目链接 + +- [1657. 确定两个字符串是否接近 - 力扣](https://leetcode.cn/problems/determine-if-two-strings-are-close/) + +## 题目大意 + +**描述**:如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 : + +- 操作 1:交换任意两个现有字符。 + - 例如,`abcde` -> `aecdb`。 +- 操作 2:将一个 现有 字符的每次出现转换为另一个现有字符,并对另一个字符执行相同的操作。 + - 例如,`aacabb` -> `bbcbaa`(所有 `a` 转化为 `b`,而所有的 `b` 转换为 `a` )。 + +给定两个字符串,$word1$ 和 $word2$。 + +**要求**:如果 $word1$ 和 $word2$ 接近 ,就返回 $True$;否则,返回 $False$。 + +**说明**: + +- $1 \le word1.length, word2.length \le 10^5$。 +- $word1$ 和 $word2$ 仅包含小写英文字母。 + +**示例**: + +- 示例 1: + +```python +输入:word1 = "abc", word2 = "bca" +输出:True +解释:2 次操作从 word1 获得 word2 。 +执行操作 1:"abc" -> "acb" +执行操作 1:"acb" -> "bca" +``` + +- 示例 2: + +```python +输入:word1 = "a", word2 = "aa" +输出:False +解释:不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。 +``` + +## 解题思路 + +### 思路 1:模拟 + +无论是操作 1,还是操作 2,只是对字符位置进行交换,而不会产生或者删除字符。 + +则我们只需要检查两个字符串的字符种类以及每种字符的个数是否相同即可。 + +具体步骤如下: + +1. 分别使用哈希表 $cnts1$、$cnts2$ 统计每个字符串中的字符种类,每种字符的个数。 +2. 判断两者的字符种类是否相等,并且判断每种字符的个数是否相同。 +3. 如果字符种类相同,且每种字符的个数完全相同,则返回 $True$,否则,返回 $False$。 + +### 思路 1:代码 + +```Python +class Solution: + def closeStrings(self, word1: str, word2: str) -> bool: + cnts1 = Counter(word1) + cnts2 = Counter(word2) + + return cnts1.keys() == cnts2.keys() and sorted(cnts1.values()) == sorted(cnts2.values()) +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(max(n1, n2) + |\sum| \times \log | \sum |)$,其中 $n1$、$n2$ 分别为字符串 $word1$、$word2$ 的长度,$\sum$ 为字符集,本题中 $| \sum | = 26$。 +- **空间复杂度**:$O(| \sum |)$。 + diff --git "a/Solutions/1726. \345\220\214\347\247\257\345\205\203\347\273\204.md" "b/Solutions/1726. \345\220\214\347\247\257\345\205\203\347\273\204.md" new file mode 100644 index 00000000..86483c7b --- /dev/null +++ "b/Solutions/1726. \345\220\214\347\247\257\345\205\203\347\273\204.md" @@ -0,0 +1,78 @@ +# [1726. 同积元组](https://leetcode.cn/problems/tuple-with-same-product/) + +- 标签:数组、哈希表 +- 难度:中等 + +## 题目链接 + +- [1726. 同积元组 - 力扣](https://leetcode.cn/problems/tuple-with-same-product/) + +## 题目大意 + +**描述**:给定一个由不同正整数组成的数组 $nums$。 + +**要求**:返回满足 $a \times b = c \times d$ 的元组 $(a, b, c, d)$ 的数量。其中 $a$、$b$、$c$ 和 $d$ 都是 $nums$ 中的元素,且 $a \ne b \ne c \ne d$。 + +**说明**: + +- $1 \le nums.length \le 1000$。 +- $1 \le nums[i] \le 10^4$。 +- $nums$ 中的所有元素互不相同。 + +**示例**: + +- 示例 1: + +```python +输入:nums = [2,3,4,6] +输出:8 +解释:存在 8 个满足题意的元组: +(2,6,3,4) , (2,6,4,3) , (6,2,3,4) , (6,2,4,3) +(3,4,2,6) , (4,3,2,6) , (3,4,6,2) , (4,3,6,2) +``` + +- 示例 2: + +```python +输入:nums = [1,2,4,5,10] +输出:16 +解释:存在 16 个满足题意的元组: +(1,10,2,5) , (1,10,5,2) , (10,1,2,5) , (10,1,5,2) +(2,5,1,10) , (2,5,10,1) , (5,2,1,10) , (5,2,10,1) +(2,10,4,5) , (2,10,5,4) , (10,2,4,5) , (10,2,5,4) +(4,5,2,10) , (4,5,10,2) , (5,4,2,10) , (5,4,10,2) +``` + +## 解题思路 + +### 思路 1:哈希表 + 数学 + +1. 二重循环遍历数组 $nums$,使用哈希表 $cnts$ 记录下所有不同 $nums[i] \times nums[j]$ 的结果。 +2. 因为满足 $a \times b = c \times d$ 的元组 $(a, b, c, d)$ 可以按照不同顺序进行组和,所以对于 $x$ 个 $nums[i] \times nums[j]$,就有 $C_x^2$ 种组和方法。 +3. 遍历哈希表 $cnts$ 中所有值 $value$,将不同组和的方法数累积到答案 $ans$ 中。 +4. 遍历完返回答案 $ans$。 + +### 思路 1:代码 + +```Python +class Solution: + def tupleSameProduct(self, nums: List[int]) -> int: + cnts = Counter() + size = len(nums) + for i in range(size): + for j in range(i + 1, size): + product = nums[i] * nums[j] + cnts[product] += 1 + + ans = 0 + for key, value in cnts.items(): + ans += value * (value - 1) * 4 + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$,其中 $n$ 表示数组 $nums$ 的长度。 +- **空间复杂度**:$O(n^2)$。 + diff --git "a/Solutions/1921. \346\266\210\347\201\255\346\200\252\347\211\251\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" "b/Solutions/1921. \346\266\210\347\201\255\346\200\252\347\211\251\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" new file mode 100644 index 00000000..5ddee890 --- /dev/null +++ "b/Solutions/1921. \346\266\210\347\201\255\346\200\252\347\211\251\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" @@ -0,0 +1,87 @@ +# [1921. 消灭怪物的最大数量](https://leetcode.cn/problems/eliminate-maximum-number-of-monsters/) + +- 标签:贪心、数组、排序 +- 难度:中等 + +## 题目链接 + +- [1921. 消灭怪物的最大数量 - 力扣](https://leetcode.cn/problems/eliminate-maximum-number-of-monsters/) + +## 题目大意 + +**描述**:你正在玩一款电子游戏,在游戏中你需要保护城市免受怪物侵袭。给定一个下标从 $0$ 开始且大小为 $n$ 的整数数组 $dist$,其中 $dist[i]$ 是第 $i$ 个怪物与城市的初始距离(单位:米)。 + +怪物以恒定的速度走向城市。每个怪物的速度都以一个长度为 $n$ 的整数数组 $speed$ 表示,其中 $speed[i]$ 是第 $i$ 个怪物的速度(单位:千米/分)。 + +你有一种武器,一旦充满电,就可以消灭 一个 怪物。但是,武器需要 一分钟 才能充电。武器在游戏开始时是充满电的状态,怪物从 第 $0$ 分钟时开始移动。 + +一旦任一怪物到达城市,你就输掉了这场游戏。如果某个怪物 恰好 在某一分钟开始时到达城市(距离表示为 $0$),这也会被视为输掉 游戏,在你可以使用武器之前,游戏就会结束。 + +**要求**:返回在你输掉游戏前可以消灭的怪物的最大数量。如果你可以在所有怪物到达城市前将它们全部消灭,返回 $n$。 + +**说明**: + +- + +**示例**: + +- 示例 1: + +```python +输入:dist = [1,3,4], speed = [1,1,1] +输出:3 +解释: +第 0 分钟开始时,怪物的距离是 [1,3,4],你消灭了第一个怪物。 +第 1 分钟开始时,怪物的距离是 [X,2,3],你消灭了第二个怪物。 +第 3 分钟开始时,怪物的距离是 [X,X,2],你消灭了第三个怪物。 +所有 3 个怪物都可以被消灭。 +``` + +- 示例 2: + +```python +输入:dist = [1,1,2,3], speed = [1,1,1,1] +输出:1 +解释: +第 0 分钟开始时,怪物的距离是 [1,1,2,3],你消灭了第一个怪物。 +第 1 分钟开始时,怪物的距离是 [X,0,1,2],所以你输掉了游戏。 +你只能消灭 1 个怪物。 +``` + +## 解题思路 + +### 思路 1:排序 + 贪心算法 + +对于第 $i$ 个怪物,最晚可被消灭的时间为 $times[i] = \lfloor \frac{dist[i] - 1}{speed[i]} \rfloor$。我们可以根据以上公式,将所有怪物最晚可被消灭时间存入数组 $times$ 中,然后对 $times$ 进行升序排序。 + +然后遍历数组 $times$,对于第 $i$ 个怪物: + +1. 如果 $times[i] < i$,则说明第 $i$ 个怪物无法被消灭,直接返回 $i$ 即可。 +2. 如果 $times[i] \ge i$,则说明第 $i$ 个怪物可以被消灭,继续向下遍历。 + +如果遍历完数组 $times$,则说明所有怪物都可以被消灭,则返回 $n$。 + +### 思路 1:代码 + +```Python +class Solution: + def eliminateMaximum(self, dist: List[int], speed: List[int]) -> int: + times = [] + for d, s in zip(dist, speed): + time = (d - 1) // s + times.append(time) + times.sort() + + size = len(times) + for i in range(size): + if times[i] < i: + return i + + return size +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n \times \log n)$,其中 $n$ 为数组 $dist$ 的长度。 +- **空间复杂度**:$O(n)$。 + From 6596885f1e59070540f10e4748bd4a8f0a50b37c Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 15 Jan 2024 20:11:08 +0800 Subject: [PATCH 062/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...00\351\225\277\345\255\220\344\270\262.md" | 2 +- ...345\244\215\345\205\203\347\264\240 II.md" | 14 ++++++------ ...15\345\244\215\345\205\203\347\264\240.md" | 8 +++---- ...25\350\257\215\346\213\206\345\210\206.md" | 22 +++++++++---------- ...15\346\216\222\351\223\276\350\241\250.md" | 4 ++-- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git "a/Solutions/0003. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" "b/Solutions/0003. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" index eba49ead..888ebc90 100644 --- "a/Solutions/0003. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" +++ "b/Solutions/0003. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" @@ -16,7 +16,7 @@ **说明**: - $0 \le s.length \le 5 * 10^4$。 -- `s` 由英文字母、数字、符号和空格组成。 +- $s$ 由英文字母、数字、符号和空格组成。 **示例**: diff --git "a/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" "b/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" index 912d2e22..13d9b780 100644 --- "a/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" +++ "b/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" @@ -9,7 +9,7 @@ ## 题目大意 -**描述**:给定一个已排序的链表的头 `head`。 +**描述**:给定一个已排序的链表的头 $head$。 **要求**:删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。 @@ -34,12 +34,12 @@ 这道题的题意是需要保留所有不同数字,而重复出现的所有数字都要删除。因为给定的链表是升序排列的,所以我们要删除的重复元素在链表中的位置是连续的。所以我们可以对链表进行一次遍历,然后将连续的重复元素从链表中删除即可。具体步骤如下: -- 先使用哑节点 `dummy_head` 构造一个指向 `head` 的指针,使得可以防止从 `head` 开始就是重复元素。 -- 然后使用指针 `cur` 表示链表中当前元素,从 `head` 开始遍历。 -- 当指针 `cur` 的下一个元素和下下一个元素存在时: - - 如果下一个元素值和下下一个元素值相同,则我们使用指针 `temp` 保存下一个元素,并使用 `temp` 向后遍历,跳过所有重复元素,然后令 `cur` 的下一个元素指向 `temp` 的下一个元素,继续向后遍历。 - - 如果下一个元素值和下下一个元素值不同,则令 `cur` 向右移动一位,继续向后遍历。 -- 当指针 `cur` 的下一个元素或者下下一个元素不存在时,说明已经遍历完,则返回哑节点 `dummy_head` 的下一个节点作为头节点。 +- 先使用哑节点 $dummy\underline{}head$ 构造一个指向 $head$ 的指针,使得可以防止从 $head$ 开始就是重复元素。 +- 然后使用指针 $cur$ 表示链表中当前元素,从 $head$ 开始遍历。 +- 当指针 $cur$ 的下一个元素和下下一个元素存在时: + - 如果下一个元素值和下下一个元素值相同,则我们使用指针 $temp$ 保存下一个元素,并使用 $temp$ 向后遍历,跳过所有重复元素,然后令 $cur$ 的下一个元素指向 $temp$ 的下一个元素,继续向后遍历。 + - 如果下一个元素值和下下一个元素值不同,则令 $cur$ 向右移动一位,继续向后遍历。 +- 当指针 $cur$ 的下一个元素或者下下一个元素不存在时,说明已经遍历完,则返回哑节点 $dummy\underline{}head$ 的下一个节点作为头节点。 ### 思路 1:代码 diff --git "a/Solutions/0083. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" "b/Solutions/0083. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" index 0d2f52e6..f4f0f90a 100644 --- "a/Solutions/0083. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" +++ "b/Solutions/0083. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" @@ -9,7 +9,7 @@ ## 题目大意 -**描述**:给定一个已排序的链表的头 `head`。 +**描述**:给定一个已排序的链表的头 $head$。 **要求**:删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。 @@ -32,11 +32,11 @@ ### 思路 1:遍历 -- 使用指针 `curr` 遍历链表,先将 `head` 保存到 `curr` 指针。 +- 使用指针 $curr$ 遍历链表,先将 $head$ 保存到 $curr$ 指针。 - 判断当前元素的值和当前元素下一个节点元素值是否相等。 - 如果相等,则让当前指针指向当前指针下两个节点。 -- 否则,让 `curr` 继续向后遍历。 -- 遍历完之后返回头节点 `head`。 +- 否则,让 $curr$ 继续向后遍历。 +- 遍历完之后返回头节点 $head$。 ### 思路 1:遍历代码 diff --git "a/Solutions/0139. \345\215\225\350\257\215\346\213\206\345\210\206.md" "b/Solutions/0139. \345\215\225\350\257\215\346\213\206\345\210\206.md" index 5a3604c0..309de356 100644 --- "a/Solutions/0139. \345\215\225\350\257\215\346\213\206\345\210\206.md" +++ "b/Solutions/0139. \345\215\225\350\257\215\346\213\206\345\210\206.md" @@ -9,9 +9,9 @@ ## 题目大意 -**描述**:给定一个非空字符串 `s` 和一个包含非空单词的列表 `wordDict` 作为字典。 +**描述**:给定一个非空字符串 $s$ 和一个包含非空单词的列表 $wordDict$ 作为字典。 -**要求**:判断是否可以利用字典中出现的单词拼接出 `s` 。 +**要求**:判断是否可以利用字典中出现的单词拼接出 $s$ 。 **说明**: @@ -19,8 +19,8 @@ - $1 \le s.length \le 300$。 - $1 \le wordDict.length \le 1000$。 - $1 \le wordDict[i].length \le 20$。 -- `s` 和 `wordDict[i]` 仅有小写英文字母组成。 -- `wordDict` 中的所有字符串互不相同。 +- $s$ 和 $wordDict[i]$ 仅有小写英文字母组成。 +- $wordDict$ 中的所有字符串互不相同。 **示例**: @@ -51,25 +51,25 @@ ###### 2. 定义状态 -`s` 能否拆分为单词表的单词,可以分解为: +$s$ 能否拆分为单词表的单词,可以分解为: - 前 $i$ 个字符构成的字符串,能否分解为单词。 - 剩余字符串,能否分解为单词。 -定义状态 `dp[i]` 表示:长度为 $i$ 的字符串 `s[0: i]` 能否拆分成单词,如果为 `True` 则表示可以拆分,如果为 `False` 则表示不能拆分。 +定义状态 $dp[i]$ 表示:长度为 $i$ 的字符串 $s[0: i]$ 能否拆分成单词,如果为 $True$ 则表示可以拆分,如果为 $False$ 则表示不能拆分。 ###### 3. 状态转移方程 -- 如果 `s[0: j]` 可以拆分为单词(即 `dp[j] == True`),并且字符串 `s[j: i]` 出现在字典中,则 `dp[i] = True`。 -- 如果 `s[0: j]` 不可以拆分为单词(即 `dp[j] == False`),或者字符串 `s[j: i]` 没有出现在字典中,则 `dp[i] = False`。 +- 如果 $s[0: j]$ 可以拆分为单词(即 $dp[j] == True$),并且字符串 $s[j: i]$ 出现在字典中,则 `dp[i] = True`。 +- 如果 $s[0: j]$ 不可以拆分为单词(即 $dp[j] == False$),或者字符串 $s[j: i]$ 没有出现在字典中,则 `dp[i] = False`。 ###### 4. 初始条件 -- 长度为 $0$ 的字符串 `s[0: i]` 可以拆分为单词,即 `dp[0] = True`。 +- 长度为 $0$ 的字符串 $s[0: i]$ 可以拆分为单词,即 $dp[0] = True$。 ###### 5. 最终结果 -根据我们之前定义的状态,`dp[i]` 表示:长度为 $i$ 的字符串 `s[0: i]` 能否拆分成单词。则最终结果为 `dp[size]`,`size` 为字符串长度。 +根据我们之前定义的状态,$dp[i]$ 表示:长度为 $i$ 的字符串 $s[0: i]$ 能否拆分成单词。则最终结果为 $dp[size]$,$size$ 为字符串长度。 ### 思路 1:代码 @@ -88,6 +88,6 @@ class Solution: ### 思路 1:复杂度分析 -- **时间复杂度**:$O(n^2)$,其中 $n$ 为字符串 `s` 的长度。 +- **时间复杂度**:$O(n^2)$,其中 $n$ 为字符串 $s$ 的长度。 - **空间复杂度**:$O(n)$。 diff --git "a/Solutions/0143. \351\207\215\346\216\222\351\223\276\350\241\250.md" "b/Solutions/0143. \351\207\215\346\216\222\351\223\276\350\241\250.md" index 92bb734f..3240f331 100644 --- "a/Solutions/0143. \351\207\215\346\216\222\351\223\276\350\241\250.md" +++ "b/Solutions/0143. \351\207\215\346\216\222\351\223\276\350\241\250.md" @@ -9,9 +9,9 @@ ## 题目大意 -**描述**:给定一个单链表 `L` 的头节点 `head`,单链表 `L` 表示为:$L_0$ -> $L_1$ -> $L_2$ -> ... -> $L_{n-1}$ -> $L_n$。 +**描述**:给定一个单链表 $L$ 的头节点 $head$,单链表 $L$ 表示为:$L_0 \rightarrow L_1 \rightarrow L_2 \rightarrow ... \rightarrow L_{n-1} \rightarrow L_n$。 -**要求**:将单链表 `L` 重新排列为:$L_0$ -> $L_n$ -> $L_1$ -> $L_{n-1}$ -> $L_2$ -> $L_{n-2}$ -> $L_3$ -> $L_{n-3}$ -> ...。 +**要求**:将单链表 $L$ 重新排列为:$L_0 \rightarrow L_n \rightarrow L_1 \rightarrow L_{n-1} \rightarrow L_2 \rightarrow L_{n-2} \rightarrow L_3 \rightarrow L_{n-3} \rightarrow ...$。 **说明**: From a514b488bb43a63b979a5f2e1326068aadd57273 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 16 Jan 2024 17:10:57 +0800 Subject: [PATCH 063/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 4 +- README.md | 2 +- ...04\346\234\272\345\231\250\344\272\272.md" | 106 ++++++++++++++++++ ...20\345\255\227\347\254\246\344\270\262.md" | 80 +++++++++++++ 4 files changed, 190 insertions(+), 2 deletions(-) create mode 100644 "Solutions/1041. \345\233\260\344\272\216\347\216\257\344\270\255\347\232\204\346\234\272\345\231\250\344\272\272.md" create mode 100644 "Solutions/1763. \346\234\200\351\225\277\347\232\204\347\276\216\345\245\275\345\255\220\345\255\227\347\254\246\344\270\262.md" diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index 938051cc..d26d4a5f 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 850 道) +# LeetCode 题解(已完成 852 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -512,6 +512,7 @@ | 1037 | [有效的回旋镖](https://leetcode.cn/problems/valid-boomerang/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1037.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%9B%9E%E6%97%8B%E9%95%96.md) | 几何、数组、数学 | 简单 | | 1038 | [从二叉搜索树到更大和树](https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1038.%20%E4%BB%8E%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E5%88%B0%E6%9B%B4%E5%A4%A7%E5%92%8C%E6%A0%91.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | | 1039 | [多边形三角剖分的最低得分](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1039.%20%E5%A4%9A%E8%BE%B9%E5%BD%A2%E4%B8%89%E8%A7%92%E5%89%96%E5%88%86%E7%9A%84%E6%9C%80%E4%BD%8E%E5%BE%97%E5%88%86.md) | 数组、动态规划 | 中等 | +| 1041 | [困于环中的机器人](https://leetcode.cn/problems/robot-bounded-in-circle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1041.%20%E5%9B%B0%E4%BA%8E%E7%8E%AF%E4%B8%AD%E7%9A%84%E6%9C%BA%E5%99%A8%E4%BA%BA.md) | 数学、字符串、模拟 | 中等 | | 1047 | [删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1047.%20%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E7%9B%B8%E9%82%BB%E9%87%8D%E5%A4%8D%E9%A1%B9.md) | 栈、字符串 | 简单 | | 1049 | [最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1049.%20%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7%9A%84%E9%87%8D%E9%87%8F%20II.md) | 数组、动态规划 | 中等 | | 1051 | [高度检查器](https://leetcode.cn/problems/height-checker/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1051.%20%E9%AB%98%E5%BA%A6%E6%A3%80%E6%9F%A5%E5%99%A8.md) | 数组、计数排序、排序 | 简单 | @@ -612,6 +613,7 @@ | 1736 | [替换隐藏数字得到的最晚时间](https://leetcode.cn/problems/latest-time-by-replacing-hidden-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1736.%20%E6%9B%BF%E6%8D%A2%E9%9A%90%E8%97%8F%E6%95%B0%E5%AD%97%E5%BE%97%E5%88%B0%E7%9A%84%E6%9C%80%E6%99%9A%E6%97%B6%E9%97%B4.md) | 贪心、字符串 | 简单 | | 1742 | [盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1742.%20%E7%9B%92%E5%AD%90%E4%B8%AD%E5%B0%8F%E7%90%83%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md) | 哈希表、数学、计数 | 简单 | | 1749 | [任意子数组和的绝对值的最大值](https://leetcode.cn/problems/maximum-absolute-sum-of-any-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1749.%20%E4%BB%BB%E6%84%8F%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C%E7%9A%84%E7%BB%9D%E5%AF%B9%E5%80%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 数组、动态规划 | 中等 | +| 1763 | [最长的美好子字符串](https://leetcode.cn/problems/longest-nice-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1763.%20%E6%9C%80%E9%95%BF%E7%9A%84%E7%BE%8E%E5%A5%BD%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 位运算、哈希表、字符串、分治、滑动窗口 | 简单 | | 1779 | [找到最近的有相同 X 或 Y 坐标的点](https://leetcode.cn/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1779.%20%E6%89%BE%E5%88%B0%E6%9C%80%E8%BF%91%E7%9A%84%E6%9C%89%E7%9B%B8%E5%90%8C%20X%20%E6%88%96%20Y%20%E5%9D%90%E6%A0%87%E7%9A%84%E7%82%B9.md) | 数组 | 简单 | | 1790 | [仅执行一次字符串交换能否使两个字符串相等](https://leetcode.cn/problems/check-if-one-string-swap-can-make-strings-equal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1790.%20%E4%BB%85%E6%89%A7%E8%A1%8C%E4%B8%80%E6%AC%A1%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BA%A4%E6%8D%A2%E8%83%BD%E5%90%A6%E4%BD%BF%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E7%AD%89.md) | 哈希表、字符串、计数 | 简单 | | 1791 | [找出星型图的中心节点](https://leetcode.cn/problems/find-center-of-star-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1791.%20%E6%89%BE%E5%87%BA%E6%98%9F%E5%9E%8B%E5%9B%BE%E7%9A%84%E4%B8%AD%E5%BF%83%E8%8A%82%E7%82%B9.md) | 图 | 简单 | diff --git a/README.md b/README.md index 3ee255d0..3dbc7374 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 850 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 852 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/1041. \345\233\260\344\272\216\347\216\257\344\270\255\347\232\204\346\234\272\345\231\250\344\272\272.md" "b/Solutions/1041. \345\233\260\344\272\216\347\216\257\344\270\255\347\232\204\346\234\272\345\231\250\344\272\272.md" new file mode 100644 index 00000000..1ab38240 --- /dev/null +++ "b/Solutions/1041. \345\233\260\344\272\216\347\216\257\344\270\255\347\232\204\346\234\272\345\231\250\344\272\272.md" @@ -0,0 +1,106 @@ +# [1041. 困于环中的机器人](https://leetcode.cn/problems/robot-bounded-in-circle/) + +- 标签:数学、字符串、模拟 +- 难度:中等 + +## 题目链接 + +- [1041. 困于环中的机器人 - 力扣](https://leetcode.cn/problems/robot-bounded-in-circle/) + +## 题目大意 + +**描述**:在无限的平面上,机器人最初位于 $(0, 0)$ 处,面朝北方。注意: + +- 北方向 是 $y$ 轴的正方向。 +- 南方向 是 $y$ 轴的负方向。 +- 东方向 是 $x$ 轴的正方向。 +- 西方向 是 $x$ 轴的负方向。 + +机器人可以接受下列三条指令之一: + +- `"G"`:直走 $1$ 个单位 +- `"L"`:左转 $90$ 度 +- `"R"`:右转 $90$ 度 + +给定一个字符串 $instructions$,机器人按顺序执行指令 $instructions$,并一直重复它们。 + +**要求**:只有在平面中存在环使得机器人永远无法离开时,返回 $True$。否则,返回 $False$。 + +**说明**: + +- $1 \le instructions.length \le 100$。 +- $instructions[i]$ 仅包含 `'G'`,`'L'`,`'R'`。 + +**示例**: + +- 示例 1: + +```python +输入:instructions = "GGLLGG" +输出:True +解释:机器人最初在(0,0)处,面向北方。 +“G”:移动一步。位置:(0,1)方向:北。 +“G”:移动一步。位置:(0,2).方向:北。 +“L”:逆时针旋转90度。位置:(0,2).方向:西。 +“L”:逆时针旋转90度。位置:(0,2)方向:南。 +“G”:移动一步。位置:(0,1)方向:南。 +“G”:移动一步。位置:(0,0)方向:南。 +重复指令,机器人进入循环:(0,0)——>(0,1)——>(0,2)——>(0,1)——>(0,0)。 +在此基础上,我们返回 True。 +``` + +- 示例 2: + +```python +输入:instructions = "GG" +输出:False +解释:机器人最初在(0,0)处,面向北方。 +“G”:移动一步。位置:(0,1)方向:北。 +“G”:移动一步。位置:(0,2).方向:北。 +重复这些指示,继续朝北前进,不会进入循环。 +在此基础上,返回 False。 +``` + +## 解题思路 + +### 思路 1:模拟 + +设定初始位置为 $(0, 0)$,初始方向 $direction = 0$,假设按照给定字符串 $instructions$ 执行一遍之后,位于 $(x, y)$ 处,且方向为 $direction$,则可能出现的所有情况为: + +1. 方向不变($direction == 0$),且 $(x, y) == (0, 0)$,则会一直在原点,无法走出去。 +2. 方向不变($direction == 0$),且 $(x, y) \ne (0, 0)$,则可以走出去。 +3. 方向相反($direction == 2$),无论是否产生位移,则再执行 $1$ 遍将会回到原点。 +4. 方向逆时针 / 顺时针改变 $90°$($direction == 1 \text{ or } 3$),无论是否产生位移,则再执行 $3$ 遍将会回到原点。 + +综上所述,最多模拟 $4$ 次即可知道能否回到原点。 + +从上面也可以等出结论:如果不产生位移,则一定会回到原点。如果改变方向,同样一定会回到原点。 + +我们只需要根据以上结论,按照 $instructions$ 执行一遍之后,通过判断是否产生位移和改变方向,即可判断是否一定会回到原点。 + +### 思路 1:代码 + +```Python +class Solution: + def isRobotBounded(self, instructions: str) -> bool: + # 分别代表北、东、南、西 + directions = [(0, 1), (-1, 0), (0, -1), (1, 0)] + x, y = 0, 0 + # 初始方向为北 + direction = 0 + for step in instructions: + if step == 'G': + x += directions[direction][0] + y += directions[direction][1] + elif step == 'L': + direction = (direction + 1) % 4 + else: + direction = (direction + 3) % 4 + + return (x == 0 and y == 0) or direction != 0 +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为字符串 $instructions$ 的长度。 +- **空间复杂度**:$O(1)$。 diff --git "a/Solutions/1763. \346\234\200\351\225\277\347\232\204\347\276\216\345\245\275\345\255\220\345\255\227\347\254\246\344\270\262.md" "b/Solutions/1763. \346\234\200\351\225\277\347\232\204\347\276\216\345\245\275\345\255\220\345\255\227\347\254\246\344\270\262.md" new file mode 100644 index 00000000..a0c91b95 --- /dev/null +++ "b/Solutions/1763. \346\234\200\351\225\277\347\232\204\347\276\216\345\245\275\345\255\220\345\255\227\347\254\246\344\270\262.md" @@ -0,0 +1,80 @@ +# [1763. 最长的美好子字符串](https://leetcode.cn/problems/longest-nice-substring/) + +- 标签:位运算、哈希表、字符串、分治、滑动窗口 +- 难度:简单 + +## 题目链接 + +- [1763. 最长的美好子字符串 - 力扣](https://leetcode.cn/problems/longest-nice-substring/) + +## 题目大意 + +**描述**: 给定一个字符串 $s$。 + +**要求**:返回 $s$ 最长的美好子字符串。 + +**说明**: + +- **美好字符串**:当一个字符串 $s$ 包含的每一种字母的大写和小写形式同时出现在 $s$ 中,就称这个字符串 $s$ 是美好字符串。 +- $1 \le s.length \le 100$。 + +**示例**: + +- 示例 1: + +```python +输入:s = "YazaAay" +输出:"aAa" +解释:"aAa" 是一个美好字符串,因为这个子串中仅含一种字母,其小写形式 'a' 和大写形式 'A' 也同时出现了。 +"aAa" 是最长的美好子字符串。 +``` + +- 示例 2: + +```python +输入:s = "Bb" +输出:"Bb" +解释:"Bb" 是美好字符串,因为 'B' 和 'b' 都出现了。整个字符串也是原字符串的子字符串。 +``` + +## 解题思路 + +### 思路 1:枚举 + +字符串 $s$ 的范围为 $[1, 100]$,长度较小,我们可以枚举所有的子串,判断该子串是否为美好字符串。 + +由于大小写英文字母各有 $26$ 位,则我们可以利用二进制来标记某字符是否在子串中出现过,我们使用 $lower$ 标记子串中出现过的小写字母,使用 $upper$ 标记子串中出现过的大写字母。如果满足 $lower == upper$,则说明该子串为美好字符串。 + +具体解法步骤如下: + +1. 使用二重循环遍历字符串。对于子串 $s[i]…s[j]$,使用 $lower$ 标记子串中出现过的小写字母,使用 $upper$ 标记子串中出现过的大写字母。 +2. 如果 $s[j]$ 为小写字母,则 $lower$ 对应位置标记为出现过该小写字母,即:`lower |= 1 << (ord(s[j]) - ord('a'))`。 +3. 如果 $s[j]$ 为大写字母,则 $upper$ 对应位置标记为出现过该小写字母,即:`upper |= 1 << (ord(s[j]) - ord('A'))`。 +4. 判断当前子串对应 $lower$ 和 $upper$ 是否相等,如果相等,并且子串长度大于记录的最长美好字符串长度,则更新最长美好字符串长度。 +5. 遍历完返回记录的最长美好字符串长度。 + +### 思路 1:代码 + +```Python +class Solution: + def longestNiceSubstring(self, s: str) -> str: + size = len(s) + max_pos, max_len = 0, 0 + for i in range(size): + lower, upper = 0, 0 + for j in range(i, size): + if s[j].islower(): + lower |= 1 << (ord(s[j]) - ord('a')) + else: + upper |= 1 << (ord(s[j]) - ord('A')) + if lower == upper and j - i + 1 > max_len: + max_len = j - i + 1 + max_pos = i + return s[max_pos: max_pos + max_len] +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$,其中 $n$ 为字符串 $s$ 的长度。 +- **空间复杂度**:$O(1)$。 + From 50a5609ba31583ff23ebfa728ac3c31599105b70 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Wed, 17 Jan 2024 18:00:59 +0800 Subject: [PATCH 064/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...40\347\202\271\346\210\220\346\236\227.md" | 85 +++++++++++++++++++ ...62\347\232\204\346\225\260\347\233\256.md" | 67 +++++++++++++++ 2 files changed, 152 insertions(+) create mode 100644 "Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" create mode 100644 "Solutions/1641. \347\273\237\350\256\241\345\255\227\345\205\270\345\272\217\345\205\203\351\237\263\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256.md" diff --git "a/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" "b/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" new file mode 100644 index 00000000..13f25f77 --- /dev/null +++ "b/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" @@ -0,0 +1,85 @@ +# [1110. 删点成林](https://leetcode.cn/problems/delete-nodes-and-return-forest/) + +- 标签:树、深度优先搜索、数组、哈希表、二叉树 +- 难度:中等 + +## 题目链接 + +- [1110. 删点成林 - 力扣](https://leetcode.cn/problems/delete-nodes-and-return-forest/) + +## 题目大意 + +**描述**:给定二叉树的根节点 $root$,树上每个节点都有一个不同的值。 + +如果节点值在 $to\underline{}delete$ 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。 + +**要求**:返回森林中的每棵树。你可以按任意顺序组织答案。 + +**说明**: + +- 树中的节点数最大为 $1000$。 +- 每个节点都有一个介于 $1$ 到 $1000$ 之间的值,且各不相同。 +- $to\underline{}delete.length \le 1000$。 +- $to\underline{}delete$ 包含一些从 $1$ 到 $1000$、各不相同的值。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/07/05/screen-shot-2019-07-01-at-53836-pm.png) + +```python +输入:root = [1,2,3,4,5,6,7], to_delete = [3,5] +输出:[[1,2,null,4],[6],[7]] +``` + +- 示例 2: + +```python +输入:root = [1,2,4,null,3], to_delete = [3] +输出:[[1,2,4]] +``` + +## 解题思路 + +### 思路 1:深度优先搜索 + +将待删除节点数组 $to\underline{}delete$ 转为集合 $deletes$,则每次能以 $O(1)$ 的时间复杂度判断节点值是否在待删除节点数组中。 + +如果当前节点值在待删除节点数组中,则删除当前节点后,需要将其左右子树作为一棵树的节点加入到答案数组中。 + +而如果当前节点值不在待删除节点数组中, + +### 思路 1:代码 + +```Python +class Solution: + def delNodes(self, root: Optional[TreeNode], to_delete: List[int]) -> List[TreeNode]: + forest = [] + deletes = set(to_delete) + def dfs(root): + if not root: + return None + root.left = dfs(root.left) + root.right = dfs(root.right) + + if root.val in deletes: + if root.left: + forest.append(root.left) + if root.right: + forest.append(root.right) + return None + else: + return root + + + if dfs(root): + forest.append(root) + return forest +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为二叉树中节点个数。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/1641. \347\273\237\350\256\241\345\255\227\345\205\270\345\272\217\345\205\203\351\237\263\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256.md" "b/Solutions/1641. \347\273\237\350\256\241\345\255\227\345\205\270\345\272\217\345\205\203\351\237\263\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256.md" new file mode 100644 index 00000000..f3c8abe3 --- /dev/null +++ "b/Solutions/1641. \347\273\237\350\256\241\345\255\227\345\205\270\345\272\217\345\205\203\351\237\263\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256.md" @@ -0,0 +1,67 @@ +# [1641. 统计字典序元音字符串的数目](https://leetcode.cn/problems/count-sorted-vowel-strings/) + +- 标签:数学、动态规划、组合数学 +- 难度:中等 + +## 题目链接 + +- [1641. 统计字典序元音字符串的数目 - 力扣](https://leetcode.cn/problems/count-sorted-vowel-strings/) + +## 题目大意 + +**描述**:给定一个整数 $n$。 + +**要求**:返回长度为 $n$、仅由原音($a$、$e$、$i$、$o$、$u$)组成且按字典序排序的字符串数量。 + +**说明**: + +- 字符串 $a$ 按字典序排列需要满足:对于所有有效的 $i$,$s[i]$ 在字母表中的位置总是与 $s[i + 1]$ 相同或在 $s[i+1] $之前。 +- $1 \le n \le 50$。 + +**示例**: + +- 示例 1: + +```python +输入:n = 1 +输出:5 +解释:仅由元音组成的 5 个字典序字符串为 ["a","e","i","o","u"] +``` + +- 示例 2: + +```python +输入:n = 2 +输出:15 +解释:仅由元音组成的 15 个字典序字符串为 +["aa","ae","ai","ao","au","ee","ei","eo","eu","ii","io","iu","oo","ou","uu"] +注意,"ea" 不是符合题意的字符串,因为 'e' 在字母表中的位置比 'a' 靠后 +``` + +## 解题思路 + +### 思路 1:组和数学 + +题目要求按照字典序排列,则如果确定了每个元音的出现次数可以确定一个序列。 + +对于长度为 $n$ 的序列,$a$、$e$、$i$、$o$、$u$ 出现次数加起来为 $n$ 次,且顺序为 $a…a \rightarrow e…e \rightarrow i…i \rightarrow o…o \rightarrow u…u$。 + +我们可以看作是将 $n$ 分隔成了 $5$ 份,每一份对应一个原音字母的数量。 + +我们可以使用「隔板法」的方式,看作有 $n$ 个球,$4$ 个板子,将 $n$ 个球分隔成 $5$ 份。 + +则一共有 $n + 4$ 个位置可以放板子,总共需要放 $4$ 个板子,则答案为 $C_{n + 4}^4$,其中 $C$ 为组和数。 + +### 思路 1:代码 + +```Python +class Solution: + def countVowelStrings(self, n: int) -> int: + return comb(n + 4, 4) +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(| \sum |)$,其中 $\sum$ 为字符集,本题中 $| \sum | = 5$ 。 +- **空间复杂度**:$O(1)$。 + From c5354d4ef22d93feaf8203088ae8eefc74a7a530 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 18 Jan 2024 17:59:38 +0800 Subject: [PATCH 065/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 4 +++- README.md | 2 +- ...\240\347\202\271\346\210\220\346\236\227.md" | 17 +++++++++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index d26d4a5f..ca572ed9 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 852 道) +# LeetCode 题解(已完成 854 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -528,6 +528,7 @@ | 1103 | [分糖果 II](https://leetcode.cn/problems/distribute-candies-to-people/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1103.%20%E5%88%86%E7%B3%96%E6%9E%9C%20II.md) | 数学、模拟 | 简单 | | 1108 | [IP 地址无效化](https://leetcode.cn/problems/defanging-an-ip-address/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1108.%20IP%20%E5%9C%B0%E5%9D%80%E6%97%A0%E6%95%88%E5%8C%96.md) | 字符串 | 简单 | | 1109 | [航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1109.%20%E8%88%AA%E7%8F%AD%E9%A2%84%E8%AE%A2%E7%BB%9F%E8%AE%A1.md) | 数组、前缀和 | 中等 | +| 1110 | [删点成林](https://leetcode.cn/problems/delete-nodes-and-return-forest/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1110.%20%E5%88%A0%E7%82%B9%E6%88%90%E6%9E%97.md) | 树、深度优先搜索、数组、哈希表、二叉树 | 中等 | | 1122 | [数组的相对排序](https://leetcode.cn/problems/relative-sort-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1122.%20%E6%95%B0%E7%BB%84%E7%9A%84%E7%9B%B8%E5%AF%B9%E6%8E%92%E5%BA%8F.md) | 数组、哈希表、计数排序、排序 | 简单 | | 1136 | [并行课程](https://leetcode.cn/problems/parallel-courses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1136.%20%E5%B9%B6%E8%A1%8C%E8%AF%BE%E7%A8%8B.md) | 图、拓扑排序 | 中等 | | 1137 | [第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1137.%20%E7%AC%AC%20N%20%E4%B8%AA%E6%B3%B0%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 记忆化搜索、数学、动态规划 | 简单 | @@ -600,6 +601,7 @@ | 1614 | [括号的最大嵌套深度](https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1614.%20%E6%8B%AC%E5%8F%B7%E7%9A%84%E6%9C%80%E5%A4%A7%E5%B5%8C%E5%A5%97%E6%B7%B1%E5%BA%A6.md) | 栈、字符串 | 简单 | | 1617 | [统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1617.%20%E7%BB%9F%E8%AE%A1%E5%AD%90%E6%A0%91%E4%B8%AD%E5%9F%8E%E5%B8%82%E4%B9%8B%E9%97%B4%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | | 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | +| 1641 | [统计字典序元音字符串的数目](https://leetcode.cn/problems/count-sorted-vowel-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1641.%20%E7%BB%9F%E8%AE%A1%E5%AD%97%E5%85%B8%E5%BA%8F%E5%85%83%E9%9F%B3%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、动态规划、组合数学 | 中等 | | 1646 | [获取生成数组中的最大值](https://leetcode.cn/problems/get-maximum-in-generated-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1646.%20%E8%8E%B7%E5%8F%96%E7%94%9F%E6%88%90%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 数组、动态规划、模拟 | 简单 | | 1657 | [确定两个字符串是否接近](https://leetcode.cn/problems/determine-if-two-strings-are-close/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1657.%20%E7%A1%AE%E5%AE%9A%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E6%8E%A5%E8%BF%91.md) | 哈希表、字符串、排序 | 中等 | | 1658 | [将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1658.%20%E5%B0%86%20x%20%E5%87%8F%E5%88%B0%200%20%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | diff --git a/README.md b/README.md index 3dbc7374..6c0732a8 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 852 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 854 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" "b/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" index 13f25f77..de2d2f16 100644 --- "a/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" +++ "b/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" @@ -46,9 +46,22 @@ 将待删除节点数组 $to\underline{}delete$ 转为集合 $deletes$,则每次能以 $O(1)$ 的时间复杂度判断节点值是否在待删除节点数组中。 -如果当前节点值在待删除节点数组中,则删除当前节点后,需要将其左右子树作为一棵树的节点加入到答案数组中。 +如果当前节点值在待删除节点数组中,则删除当前节点后,我们还需要判断其左右子节点是否也在待删除节点数组中。 -而如果当前节点值不在待删除节点数组中, +以此类推,还需要判断左右子节点的左右子节点。。。 + +因此,我们应该递归遍历处理完所有的左右子树,再判断当前节点的左右子节点是否在待删除节点数组中。如果在,则将其加入到答案数组中。 + +为此我们可以写一个深度优先搜索算法,具体步骤如下: + +1. 如果当前根节点为空,则返回 `None`。 +2. 递归遍历处理完当前根节点的左右子树,更新当前节点的左右子树(子节点被删除的情况下需要更新当前根节点的左右子树)。 +3. 如果当前根节点值在待删除节点数组中: + 1. 如果当前根节点的左子树没有在被删除节点数组中,将左子树节点加入到答案数组中。 + 2. 如果当前根节点的右子树没有在被删除节点数组中,将右子树节点加入到答案数组中。 + 3. 返回 `None`,表示当前节点被删除。 +4. 如果当前根节点值不在待删除节点数组中: + 1. 返回根节点,表示当前节点没有被删除。 ### 思路 1:代码 From 2df62745ecc5a2d15b8f2f2a0c7a91699cf83065 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 19 Jan 2024 17:53:13 +0800 Subject: [PATCH 066/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 4 +- README.md | 2 +- ...57\345\220\246\347\233\270\344\272\244.md" | 86 +++++++++++++++++++ ...40\351\231\244\346\254\241\346\225\260.md" | 75 ++++++++++++++++ 4 files changed, 165 insertions(+), 2 deletions(-) create mode 100644 "Solutions/1496. \345\210\244\346\226\255\350\267\257\345\276\204\346\230\257\345\220\246\347\233\270\344\272\244.md" create mode 100644 "Solutions/1647. \345\255\227\347\254\246\351\242\221\346\254\241\345\224\257\344\270\200\347\232\204\346\234\200\345\260\217\345\210\240\351\231\244\346\254\241\346\225\260.md" diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index ca572ed9..d56865d3 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 854 道) +# LeetCode 题解(已完成 856 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -584,6 +584,7 @@ | 1486 | [数组异或操作](https://leetcode.cn/problems/xor-operation-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1486.%20%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%93%8D%E4%BD%9C.md) | 位运算、数学 | 简单 | | 1491 | [去掉最低工资和最高工资后的工资平均值](https://leetcode.cn/problems/average-salary-excluding-the-minimum-and-maximum-salary/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1491.%20%E5%8E%BB%E6%8E%89%E6%9C%80%E4%BD%8E%E5%B7%A5%E8%B5%84%E5%92%8C%E6%9C%80%E9%AB%98%E5%B7%A5%E8%B5%84%E5%90%8E%E7%9A%84%E5%B7%A5%E8%B5%84%E5%B9%B3%E5%9D%87%E5%80%BC.md) | 数组、排序 | 简单 | | 1493 | [删掉一个元素以后全为 1 的最长子数组](https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1493.%20%E5%88%A0%E6%8E%89%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%E4%BB%A5%E5%90%8E%E5%85%A8%E4%B8%BA%201%20%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划、滑动窗口 | 中等 | +| 1496 | [判断路径是否相交](https://leetcode.cn/problems/path-crossing/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1496.%20%E5%88%A4%E6%96%AD%E8%B7%AF%E5%BE%84%E6%98%AF%E5%90%A6%E7%9B%B8%E4%BA%A4.md) | 哈希表、字符串 | 简单 | | 1502 | [判断能否形成等差数列](https://leetcode.cn/problems/can-make-arithmetic-progression-from-sequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1502.%20%E5%88%A4%E6%96%AD%E8%83%BD%E5%90%A6%E5%BD%A2%E6%88%90%E7%AD%89%E5%B7%AE%E6%95%B0%E5%88%97.md) | 数组、排序 | 简单 | | 1507 | [转变日期格式](https://leetcode.cn/problems/reformat-date/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1507.%20%E8%BD%AC%E5%8F%98%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F.md) | 字符串 | 简单 | | 1523 | [在区间范围内统计奇数数目](https://leetcode.cn/problems/count-odd-numbers-in-an-interval-range/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1523.%20%E5%9C%A8%E5%8C%BA%E9%97%B4%E8%8C%83%E5%9B%B4%E5%86%85%E7%BB%9F%E8%AE%A1%E5%A5%87%E6%95%B0%E6%95%B0%E7%9B%AE.md) | 数学 | 简单 | @@ -603,6 +604,7 @@ | 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | | 1641 | [统计字典序元音字符串的数目](https://leetcode.cn/problems/count-sorted-vowel-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1641.%20%E7%BB%9F%E8%AE%A1%E5%AD%97%E5%85%B8%E5%BA%8F%E5%85%83%E9%9F%B3%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、动态规划、组合数学 | 中等 | | 1646 | [获取生成数组中的最大值](https://leetcode.cn/problems/get-maximum-in-generated-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1646.%20%E8%8E%B7%E5%8F%96%E7%94%9F%E6%88%90%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 数组、动态规划、模拟 | 简单 | +| 1647 | [字符频次唯一的最小删除次数](https://leetcode.cn/problems/minimum-deletions-to-make-character-frequencies-unique/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1647.%20%E5%AD%97%E7%AC%A6%E9%A2%91%E6%AC%A1%E5%94%AF%E4%B8%80%E7%9A%84%E6%9C%80%E5%B0%8F%E5%88%A0%E9%99%A4%E6%AC%A1%E6%95%B0.md) | 贪心、哈希表、字符串、排序 | 中等 | | 1657 | [确定两个字符串是否接近](https://leetcode.cn/problems/determine-if-two-strings-are-close/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1657.%20%E7%A1%AE%E5%AE%9A%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E6%8E%A5%E8%BF%91.md) | 哈希表、字符串、排序 | 中等 | | 1658 | [将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1658.%20%E5%B0%86%20x%20%E5%87%8F%E5%88%B0%200%20%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | | 1672 | [最富有客户的资产总量](https://leetcode.cn/problems/richest-customer-wealth/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1672.%20%E6%9C%80%E5%AF%8C%E6%9C%89%E5%AE%A2%E6%88%B7%E7%9A%84%E8%B5%84%E4%BA%A7%E6%80%BB%E9%87%8F.md) | 数组、矩阵 | 简单 | diff --git a/README.md b/README.md index 6c0732a8..1ee270f0 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 854 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 856 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/1496. \345\210\244\346\226\255\350\267\257\345\276\204\346\230\257\345\220\246\347\233\270\344\272\244.md" "b/Solutions/1496. \345\210\244\346\226\255\350\267\257\345\276\204\346\230\257\345\220\246\347\233\270\344\272\244.md" new file mode 100644 index 00000000..0850e901 --- /dev/null +++ "b/Solutions/1496. \345\210\244\346\226\255\350\267\257\345\276\204\346\230\257\345\220\246\347\233\270\344\272\244.md" @@ -0,0 +1,86 @@ +# [1496. 判断路径是否相交](https://leetcode.cn/problems/path-crossing/) + +- 标签:哈希表、字符串 +- 难度:简单 + +## 题目链接 + +- [1496. 判断路径是否相交 - 力扣](https://leetcode.cn/problems/path-crossing/) + +## 题目大意 + +**描述**:给定一个字符串 $path$,其中 $path[i]$ 的值可以是 `'N'`、`'S'`、`'E'` 或者 `'W'`,分别表示向北、向南、向东、向西移动一个单位。 + +你从二维平面上的原点 $(0, 0)$ 处开始出发,按 $path$ 所指示的路径行走。 + +**要求**:如果路径在任何位置上与自身相交,也就是走到之前已经走过的位置,请返回 $True$;否则,返回 $False$。 + +**说明**: + +- $1 \le path.length \le 10^4$。 +- $path[i]$ 为 `'N'`、`'S'`、`'E'` 或 `'W'`。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/06/28/screen-shot-2020-06-10-at-123929-pm.png) + +```python +输入:path = "NES" +输出:false +解释:该路径没有在任何位置相交。 +``` + +- 示例 2: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2020/06/28/screen-shot-2020-06-10-at-123843-pm.png) + +```python +输入:path = "NESWW" +输出:true +解释:该路径经过原点两次。 +``` + +## 解题思路 + +### 思路 1:哈希表 + 模拟 + +1. 使用哈希表将 `'N'`、`'S'`、`'E'`、`'W'` 对应横纵坐标轴上的改变表示出来。 +2. 使用集合 $visited$ 存储走过的坐标元组。 +3. 遍历 $path$,按照 $path$ 所指示的路径模拟行走,并将所走过的坐标使用 $visited$ 存储起来。 +4. 如果在 $visited$ 遇到已经走过的坐标,则返回 $True$。 +5. 如果遍历完仍未发现已经走过的坐标,则返回 $False$。 + +### 思路 1:代码 + +```Python +class Solution: + def isPathCrossing(self, path: str) -> bool: + directions = { + "N" : (-1, 0), + "S" : (1, 0), + "W" : (0, -1), + "E" : (0, 1), + } + + x, y = 0, 0 + + visited = set() + visited.add((x, y)) + + for ch in path: + x += directions[ch][0] + y += directions[ch][1] + if (x, y) in visited: + return True + visited.add((x, y)) + + return False +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$,其中 $n$ 为数组 $path$ 的长度。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/1647. \345\255\227\347\254\246\351\242\221\346\254\241\345\224\257\344\270\200\347\232\204\346\234\200\345\260\217\345\210\240\351\231\244\346\254\241\346\225\260.md" "b/Solutions/1647. \345\255\227\347\254\246\351\242\221\346\254\241\345\224\257\344\270\200\347\232\204\346\234\200\345\260\217\345\210\240\351\231\244\346\254\241\346\225\260.md" new file mode 100644 index 00000000..b56470ed --- /dev/null +++ "b/Solutions/1647. \345\255\227\347\254\246\351\242\221\346\254\241\345\224\257\344\270\200\347\232\204\346\234\200\345\260\217\345\210\240\351\231\244\346\254\241\346\225\260.md" @@ -0,0 +1,75 @@ +# [1647. 字符频次唯一的最小删除次数](https://leetcode.cn/problems/minimum-deletions-to-make-character-frequencies-unique/) + +- 标签:贪心、哈希表、字符串、排序 +- 难度:中等 + +## 题目链接 + +- [1647. 字符频次唯一的最小删除次数 - 力扣](https://leetcode.cn/problems/minimum-deletions-to-make-character-frequencies-unique/) + +## 题目大意 + +**描述**:给定一个字符串 $s$。 + +**要求**:返回使 $s$ 成为优质字符串需要删除的最小字符数。 + +**说明**: + +- **频次**:指的是该字符在字符串中的出现次数。例如,在字符串 `"aab"` 中,`'a'` 的频次是 $2$,而 `'b'` 的频次是 $1$。 +- **优质字符串**:如果字符串 $s$ 中不存在两个不同字符频次相同的情况,就称 $s$ 是优质字符串。 +- $1 \le s.length \le 10^5$。 +- $s$ 仅含小写英文字母。 + +**示例**: + +- 示例 1: + +```python +输入:s = "aab" +输出:0 +解释:s 已经是优质字符串。 +``` + +- 示例 2: + +```python +输入:s = "aaabbbcc" +输出:2 +解释:可以删除两个 'b' , 得到优质字符串 "aaabcc" 。 +另一种方式是删除一个 'b' 和一个 'c' ,得到优质字符串 "aaabbc"。 +``` + +## 解题思路 + +### 思路 1:贪心算法 + 哈希表 + +1. 使用哈希表 $cnts$ 统计每字符串中每个字符出现次数。 +2. 然后使用集合 $s\underline{}set$ 保存不同的出现次数。 +3. 遍历哈希表中所偶出现次数: + 1. 如果当前出现次数不在集合 $s\underline{}set$ 中,则将该次数添加到集合 $s\underline{}set$ 中。 + 2. 如果当前出现次数在集合 $s\underline{}set$ 中,则不断减少该次数,直到该次数不在集合 $s\underline{}set$ 中停止,将次数添加到集合 $s\underline{}set$ 中,同时将减少次数累加到答案 $ans$ 中。 +4. 遍历完哈希表后返回答案 $ans$。 + +### 思路 1:代码 + +```Python +class Solution: + def minDeletions(self, s: str) -> int: + cnts = Counter(s) + s_set = set() + + ans = 0 + for key, value in cnts.items(): + while value > 0 and value in s_set: + value -= 1 + ans += 1 + s_set.add(value) + + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$。 +- **空间复杂度**:$O(n)$。 + From a76200665c428938fa5ef7a9e08e928787732984 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 22 Jan 2024 20:35:02 +0800 Subject: [PATCH 067/158] =?UTF-8?q?Create=200892.=20=E4=B8=89=E7=BB=B4?= =?UTF-8?q?=E5=BD=A2=E4=BD=93=E7=9A=84=E8=A1=A8=E9=9D=A2=E7=A7=AF.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...04\350\241\250\351\235\242\347\247\257.md" | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 "Solutions/0892. \344\270\211\347\273\264\345\275\242\344\275\223\347\232\204\350\241\250\351\235\242\347\247\257.md" diff --git "a/Solutions/0892. \344\270\211\347\273\264\345\275\242\344\275\223\347\232\204\350\241\250\351\235\242\347\247\257.md" "b/Solutions/0892. \344\270\211\347\273\264\345\275\242\344\275\223\347\232\204\350\241\250\351\235\242\347\247\257.md" new file mode 100644 index 00000000..a936587b --- /dev/null +++ "b/Solutions/0892. \344\270\211\347\273\264\345\275\242\344\275\223\347\232\204\350\241\250\351\235\242\347\247\257.md" @@ -0,0 +1,88 @@ +# [0892. 三维形体的表面积](https://leetcode.cn/problems/surface-area-of-3d-shapes/) + +- 标签:几何、数组、数学、矩阵 +- 难度:简单 + +## 题目链接 + +- [0892. 三维形体的表面积 - 力扣](https://leetcode.cn/problems/surface-area-of-3d-shapes/) + +## 题目大意 + +**描述**:给定一个 $n \times n$ 的网格 $grid$,上面放置着一些 $1 \times 1 \times 1$ 的正方体。每个值 $v = grid[i][j]$ 表示 $v$ 个正方体叠放在对应单元格 $(i, j)$ 上。 + +放置好正方体后,任何直接相邻的正方体都会互相粘在一起,形成一些不规则的三维形体。 + +**要求**:返回最终这些形体的总面积。 + +**说明**: + +- 每个形体的底面也需要计入表面积中。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2021/01/08/tmp-grid2.jpg) + +```python +输入:grid = [[1,2],[3,4]] +输出:34 +``` + +- 示例 2: + +![](https://assets.leetcode.com/uploads/2021/01/08/tmp-grid4.jpg) + +```python +输入:grid = [[1,1,1],[1,0,1],[1,1,1]] +输出:32 +``` + +## 解题思路 + +### 思路 1:模拟 + +使用二重循环遍历所有的正方体,计算每一个正方体所贡献的表面积,将其累积起来即为答案。 + +而每一个正方体所贡献的表面积,可以通过枚举当前正方体前后左右相邻四个方向上的正方体的个数,从而通过判断计算得出。 + +- 如果当前位置 $(row, col)$ 存在正方体,则正方体在上下位置上起码贡献了 $2$ 的表面积。 +- 如果当前位置 $(row, col)$ 的相邻位置 $(new\underline{}row, new\underline{}col)$ 上不存在正方体,说明当前正方体在该方向为最外侧,则 $(row, col)$ 位置所贡献的表面积为当前位置上的正方体个数,即 $grid[row][col]$。 +- 如果当前位置 $(row, col)$ 的相邻位置 $(new\underline{}row, new\underline{}col)$ 上存在正方体: + - 如果 $grid[row][col] > grid[new\underline{}row][new\underline{}col]$,说明 $grid[row][col]$ 在该方向上底面一部分被 $grid[new\underline{}row][new\underline{}col]$ 遮盖了,则 $(row, col)$ 位置所贡献的表面积为 $grid[row][col] - grid[new_row][new_col]$。 + - 如果 $grid[row][col] \le grid[new\underline{}row][new\underline{}col]$,说明 $grid[row][col]$ 在该方向上完全被 $grid[new\underline{}row][new\underline{}col]$ 遮盖了,则 $(row, col)$ 位置所贡献的表面积为 $0$。 + +### 思路 1:代码 + +```Python +class Solution: + def surfaceArea(self, grid: List[List[int]]) -> int: + directions = [(-1, 0), (0, 1), (1, 0), (0, -1)] + size = len(grid) + + ans = 0 + for row in range(size): + for col in range(size): + if grid[row][col]: + # 底部、顶部贡献表面积 + ans += 2 + for direction in directions: + new_row = row + direction[0] + new_col = col + direction[1] + if 0 <= new_row < size and 0 <= new_col < size: + if grid[row][col] > grid[new_row][new_col]: + add = grid[row][col] - grid[new_row][new_col] + else: + add = 0 + else: + add = grid[row][col] + ans += add + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$,其中 $n$ 为二位数组 $grid$ 的行数或列数。 +- **空间复杂度**:$O(1)$。 + From 0459f479671187225a0c0ef83f0abd8c9d4fd3c7 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 12 Mar 2024 14:35:48 +0800 Subject: [PATCH 068/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 4 +- README.md | 2 +- ...33\345\210\266\347\237\251\351\230\265.md" | 91 ++++++++++++++ ...45\346\211\276\345\205\203\347\264\240.md" | 115 ++++++++++++++++++ 4 files changed, 210 insertions(+), 2 deletions(-) create mode 100644 "Solutions/1253. \351\207\215\346\236\204 2 \350\241\214\344\272\214\350\277\233\345\210\266\347\237\251\351\230\265.md" create mode 100644 "Solutions/1261. \345\234\250\345\217\227\346\261\241\346\237\223\347\232\204\344\272\214\345\217\211\346\240\221\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240.md" diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index d56865d3..4c680834 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 856 道) +# LeetCode 题解(已完成 858 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -547,7 +547,9 @@ | 1232 | [缀点成线](https://leetcode.cn/problems/check-if-it-is-a-straight-line/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1232.%20%E7%BC%80%E7%82%B9%E6%88%90%E7%BA%BF.md) | 几何、数组、数学 | 简单 | | 1245 | [树的直径](https://leetcode.cn/problems/tree-diameter/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1245.%20%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md) | 树、深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | | 1247 | [交换字符使得字符串相同](https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1247.%20%E4%BA%A4%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%BD%BF%E5%BE%97%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%90%8C.md) | 贪心、数学、字符串 | 中等 | +| 1253 | [重构 2 行二进制矩阵](https://leetcode.cn/problems/reconstruct-a-2-row-binary-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1253.%20%E9%87%8D%E6%9E%84%202%20%E8%A1%8C%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9F%A9%E9%98%B5.md) | 贪心、数组、矩阵 | 中等 | | 1254 | [统计封闭岛屿的数目](https://leetcode.cn/problems/number-of-closed-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1254.%20%E7%BB%9F%E8%AE%A1%E5%B0%81%E9%97%AD%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| 1261 | [在受污染的二叉树中查找元素](https://leetcode.cn/problems/find-elements-in-a-contaminated-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1261.%20%E5%9C%A8%E5%8F%97%E6%B1%A1%E6%9F%93%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%85%83%E7%B4%A0.md) | 树、深度优先搜索、广度优先搜索、设计、哈希表、二叉树 | 中等 | | 1266 | [访问所有点的最小时间](https://leetcode.cn/problems/minimum-time-visiting-all-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1266.%20%E8%AE%BF%E9%97%AE%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%97%B6%E9%97%B4.md) | 几何、数组、数学 | 简单 | | 1268 | [搜索推荐系统](https://leetcode.cn/problems/search-suggestions-system/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1268.%20%E6%90%9C%E7%B4%A2%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F.md) | 字典树、数组、字符串 | 中等 | | 1281 | [整数的各位积和之差](https://leetcode.cn/problems/subtract-the-product-and-sum-of-digits-of-an-integer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1281.%20%E6%95%B4%E6%95%B0%E7%9A%84%E5%90%84%E4%BD%8D%E7%A7%AF%E5%92%8C%E4%B9%8B%E5%B7%AE.md) | 数学 | 简单 | diff --git a/README.md b/README.md index 1ee270f0..cdb3a19d 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 856 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 858 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/1253. \351\207\215\346\236\204 2 \350\241\214\344\272\214\350\277\233\345\210\266\347\237\251\351\230\265.md" "b/Solutions/1253. \351\207\215\346\236\204 2 \350\241\214\344\272\214\350\277\233\345\210\266\347\237\251\351\230\265.md" new file mode 100644 index 00000000..c7439211 --- /dev/null +++ "b/Solutions/1253. \351\207\215\346\236\204 2 \350\241\214\344\272\214\350\277\233\345\210\266\347\237\251\351\230\265.md" @@ -0,0 +1,91 @@ +# [1253. 重构 2 行二进制矩阵](https://leetcode.cn/problems/reconstruct-a-2-row-binary-matrix/) + +- 标签:贪心、数组、矩阵 +- 难度:中等 + +## 题目链接 + +- [1253. 重构 2 行二进制矩阵 - 力扣](https://leetcode.cn/problems/reconstruct-a-2-row-binary-matrix/) + +## 题目大意 + +**描述**:给定一个 $2$ 行 $n$ 列的二进制数组: + +- 矩阵是一个二进制矩阵,这意味着矩阵中的每个元素不是 $0$ 就是 $1$。 +- 第 $0$ 行的元素之和为 $upper$。 +- 第 $1$ 行的元素之和为 $lowe$r。 +- 第 $i$ 列(从 $0$ 开始编号)的元素之和为 $colsum[i]$,$colsum$ 是一个长度为 $n$ 的整数数组。 + +**要求**:你需要利用 $upper$,$lower$ 和 $colsum$ 来重构这个矩阵,并以二维整数数组的形式返回它。 + +**说明**: + +- 如果有多个不同的答案,那么任意一个都可以通过本题。 +- 如果不存在符合要求的答案,就请返回一个空的二维数组。 +- $1 \le colsum.length \le 10^5$。 +- $0 \le upper, lower \le colsum.length$。 +- $0 \le colsum[i] \le 2$。 + +**示例**: + +- 示例 1: + +```python +输入:upper = 2, lower = 1, colsum = [1,1,1] +输出:[[1,1,0],[0,0,1]] +解释:[[1,0,1],[0,1,0]] 和 [[0,1,1],[1,0,0]] 也是正确答案。 +``` + +- 示例 2: + +```python +输入:upper = 2, lower = 3, colsum = [2,2,1,1] +输出:[] +``` + +## 解题思路 + +### 思路 1:贪心算法 + +1. 先构建一个 $2 \times n$ 的答案数组 $ans$,其中 $ans[0]$ 表示矩阵的第 $0$ 行,$ans[1]$ 表示矩阵的第 $1$​ 行。 +2. 遍历数组 $colsum$,对于当前列的和 $colsum[i]$ 来说: + 1. 如果 $colsum[i] == 2$,则需要将 $ans[0][i]$ 和 $ans[1][i]$ 都置为 $1$,此时 $upper$ 和 $lower$ 各自减去 $1$。 + 2. 如果 $colsum[i] == 1$,则需要将 $ans[0][i]$ 置为 $1$ 或将 $ans[1][i]$ 置为 $1$。我们优先使用元素和多的那一项。 + 1. 如果 $upper > lower$,则优先使用 $upper$,将 $ans[0][i]$ 置为 $1$,并且令 $upper$ 减去 $1$。 + 2. 如果 $upper \le lower$,则优先使用 $lower$,将 $ans[1][i]$ 置为 $1$,并且令 $lower$ 减去 $1$。 + 3. 如果 $colsum[i] == 0$,则需要将 $ans[0][i]$ 和 $ans[1][i]$ 都置为 $0$。 +3. 在遍历过程中,如果出现 $upper < 0$ 或者 $lower < 0$,则说明无法构造出满足要求的矩阵,则直接返回空数组。 +4. 遍历结束后,如果 $upper$ 和 $lower$ 都为 $0$,则返回答案数组 $ans$;否则返回空数组。 + +### 思路 1:代码 + +```Python +class Solution: + def reconstructMatrix(self, upper: int, lower: int, colsum: List[int]) -> List[List[int]]: + size = len(colsum) + ans = [[0 for _ in range(size)] for _ in range(2)] + + for i in range(size): + if colsum[i] == 2: + ans[0][i] = ans[1][i] = 1 + upper -= 1 + lower -= 1 + elif colsum[i] == 1: + if upper > lower: + ans[0][i] = 1 + upper -= 1 + else: + ans[1][i] = 1 + lower -= 1 + if upper < 0 or lower < 0: + return [] + if lower != 0 or upper != 0: + return [] + return ans +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n)$。 +- **空间复杂度**:$O(n)$。 + diff --git "a/Solutions/1261. \345\234\250\345\217\227\346\261\241\346\237\223\347\232\204\344\272\214\345\217\211\346\240\221\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240.md" "b/Solutions/1261. \345\234\250\345\217\227\346\261\241\346\237\223\347\232\204\344\272\214\345\217\211\346\240\221\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240.md" new file mode 100644 index 00000000..fa6b37a9 --- /dev/null +++ "b/Solutions/1261. \345\234\250\345\217\227\346\261\241\346\237\223\347\232\204\344\272\214\345\217\211\346\240\221\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240.md" @@ -0,0 +1,115 @@ +# [1261. 在受污染的二叉树中查找元素](https://leetcode.cn/problems/find-elements-in-a-contaminated-binary-tree/) + +- 标签:树、深度优先搜索、广度优先搜索、设计、哈希表、二叉树 +- 难度:中等 + +## 题目链接 + +- [1261. 在受污染的二叉树中查找元素 - 力扣](https://leetcode.cn/problems/find-elements-in-a-contaminated-binary-tree/) + +## 题目大意 + +**描述**:给出一满足下属规则的二叉树的根节点 $root$: + +1. $root.val == 0$。 +2. 如果 $node.val == x$ 且 $node.left \ne None$,那么 $node.left.val == 2 \times x + 1$。 +3. 如果 $node.val == x$ 且 $node.right \ne None$,那么 $node.left.val == 2 \times x + 2$​。 + +现在这个二叉树受到「污染」,所有的 $node.val$ 都变成了 $-1$。 + +**要求**:请你先还原二叉树,然后实现 `FindElements` 类: + +- `FindElements(TreeNode* root)` 用受污染的二叉树初始化对象,你需要先把它还原。 +- `bool find(int target)` 判断目标值 $target$ 是否存在于还原后的二叉树中并返回结果。 + +**说明**: + +- $node.val == -1$ +- 二叉树的高度不超过 $20$。 +- 节点的总数在 $[1, 10^4]$ 之间。 +- 调用 `find()` 的总次数在 $[1, 10^4]$ 之间。 +- $0 \le target \le 10^6$。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/11/16/untitled-diagram-4-1.jpg) + +```python +输入: +["FindElements","find","find"] +[[[-1,null,-1]],[1],[2]] +输出: +[null,false,true] +解释: +FindElements findElements = new FindElements([-1,null,-1]); +findElements.find(1); // return False +findElements.find(2); // return True +``` + +- 示例 2: + +![](https://assets.leetcode-cn.com/aliyun-lc-upload/uploads/2019/11/16/untitled-diagram-4.jpg) + +```python +输入: +["FindElements","find","find","find"] +[[[-1,-1,-1,-1,-1]],[1],[3],[5]] +输出: +[null,true,true,false] +解释: +FindElements findElements = new FindElements([-1,-1,-1,-1,-1]); +findElements.find(1); // return True +findElements.find(3); // return True +findElements.find(5); // return False +``` + +## 解题思路 + +### 思路 1:哈希表 + 深度优先搜索 + +1. 从根节点开始进行还原。 +2. 然后使用深度优先搜索的方式,依次递归还原左右两个孩子节点。 +3. 递归还原的同时,将还原之后的所有节点值,存入集合 $val\underline{}set$ 中。 + +这样就可以在 $O(1)$ 的时间复杂度内判断目标值 $target$ 是否在还原后的二叉树中了。 + +### 思路 1:代码 + +```Python +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class FindElements: + + def __init__(self, root: Optional[TreeNode]): + self.val_set = set() + def dfs(node, val): + if not node: + return + self.val_set.add(val) + dfs(node.left, val * 2 + 1) + dfs(node.right, val * 2 + 2) + + dfs(root, 0) + + + def find(self, target: int) -> bool: + return target in self.val_set + + + +# Your FindElements object will be instantiated and called as such: +# obj = FindElements(root) +# param_1 = obj.find(target) +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:还原二叉树:$O(n)$,其中 $n$ 为二叉树中的节点个数。查找目标值:$O(1)$。 +- **空间复杂度**:$O(n)$。 + From 838aaa2c10b039bce4404a30cc4822b462ecfec5 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 12 Mar 2024 14:35:50 +0800 Subject: [PATCH 069/158] Update Update-Time.md --- Contents/Others/Update-Time.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Contents/Others/Update-Time.md b/Contents/Others/Update-Time.md index 70e54f9d..9d252961 100644 --- a/Contents/Others/Update-Time.md +++ b/Contents/Others/Update-Time.md @@ -1,3 +1,7 @@ +## 2023-12 + +- 2023-12-26 完成「全部题目解析」的题目链接优化 + ## 2023-09 - 2023-09-07 完成「滑动窗口」内容优化 From 1c3e5e5ed64d02faede2181e207a05b9ac961d96 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 12 Mar 2024 14:36:29 +0800 Subject: [PATCH 070/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 3 ++- README.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index 4c680834..5ef506c8 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 858 道) +# LeetCode 题解(已完成 859 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -460,6 +460,7 @@ | 0886 | [可能的二分法](https://leetcode.cn/problems/possible-bipartition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0886.%20%E5%8F%AF%E8%83%BD%E7%9A%84%E4%BA%8C%E5%88%86%E6%B3%95.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | | 0887 | [鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0887.%20%E9%B8%A1%E8%9B%8B%E6%8E%89%E8%90%BD.md) | 数学、二分查找、动态规划 | 困难 | | 0889 | [根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0889.%20%E6%A0%B9%E6%8D%AE%E5%89%8D%E5%BA%8F%E5%92%8C%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | +| 0892 | [三维形体的表面积](https://leetcode.cn/problems/surface-area-of-3d-shapes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0892.%20%E4%B8%89%E7%BB%B4%E5%BD%A2%E4%BD%93%E7%9A%84%E8%A1%A8%E9%9D%A2%E7%A7%AF.md) | 几何、数组、数学、矩阵 | 简单 | | 0897 | [递增顺序搜索树](https://leetcode.cn/problems/increasing-order-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0897.%20%E9%80%92%E5%A2%9E%E9%A1%BA%E5%BA%8F%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 栈、树、深度优先搜索、二叉搜索树、二叉树 | 简单 | | 0900 | [RLE 迭代器](https://leetcode.cn/problems/rle-iterator/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0900.%20RLE%20%E8%BF%AD%E4%BB%A3%E5%99%A8.md) | 设计、数组、计数、迭代器 | 中等 | | 0901 | [股票价格跨度](https://leetcode.cn/problems/online-stock-span/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0901.%20%E8%82%A1%E7%A5%A8%E4%BB%B7%E6%A0%BC%E8%B7%A8%E5%BA%A6.md) | 栈、设计、数据流、单调栈 | 中等 | diff --git a/README.md b/README.md index cdb3a19d..cf33e302 100644 --- a/README.md +++ b/README.md @@ -255,4 +255,4 @@ - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) ## 11. 附加内容 -## [12. LeetCode 题解(已完成 858 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +## [12. LeetCode 题解(已完成 859 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file From 1a654bba158c9c98600371cfd2f4d52380b17371 Mon Sep 17 00:00:00 2001 From: Mikel Brislin <1299178488@qq.com> Date: Mon, 18 Mar 2024 11:29:09 +0800 Subject: [PATCH 071/158] Update 02.Graph-Structure.md --- Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md b/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md index 48271f9b..ec12ab5d 100644 --- a/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md +++ b/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md @@ -425,7 +425,7 @@ graph.printGraph() ## 2. 图论问题应用 -图论和图论算法在计算机科学中扮演这很重要的角色,它提供了对很多问题都有效的一种简单而系统的建模方式。很多实际问题都可以转化为图论问题,然后使用图论的景点算法加以解决。例如: +图论和图论算法在计算机科学中扮演着很重要的角色,它提供了对很多问题都有效的一种简单而系统的建模方式。很多实际问题都可以转化为图论问题,然后使用图论的景点算法加以解决。例如: - 集成电路的设计和布线。 - 互联网和路由移动电话网的路由设计。 @@ -471,7 +471,7 @@ graph.printGraph() - **单源最短路径问题**:从一个顶点出发到图中其余各个顶点之间的最短路径问题。 - **多源最短路径问题**:图中任意两点之间的最短路径问题。 -**单元最短路径问题** 的求解还是 **差分约束系统问题** 的基础。 +**单源最短路径问题** 的求解还是 **差分约束系统问题** 的基础。 除此之外,在实际应用中,有时候除了需要知道最短路径外,还需要知道次最短路径或者第三最短路径。这样的多条最短路径问题称为 **`k` 最短路径问题**。 From 51098dccb80242d7be31155cdb0cb6dc654e0d09 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 26 Mar 2024 17:58:59 +0800 Subject: [PATCH 072/158] Update 01.Priority-Queue.md --- Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md b/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md index 41b9a8f4..18e97dfb 100644 --- a/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md +++ b/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md @@ -32,7 +32,7 @@ - **数组(顺序存储)实现优先队列**:入队操作直接插入到数组队尾,时间复杂度为 $O(1)$。出队操作需要遍历整个数组,找到优先级最高的元素,返回并删除该元素,时间复杂度为 $O(n)$。 - **链表(链式存储)实现优先队列**:链表中的元素按照优先级排序,入队操作需要为待插入元素创建节点,并在链表中找到合适的插入位置,时间复杂度为 $O(n)$。出队操作直接返回链表队头元素,并删除队头元素,时间复杂度为 $O(1)$。 -- **二叉堆结构实现优先队列**:构建一个二叉堆结构,二叉堆按照优先级进行排序。入队操作就是将元素插入到二叉堆中合适位置,时间复杂度为 $O(\log_2n)$。吹对操作则返回二叉堆中优先级最大节点并删除,时间复杂度也是 $O(\log n)$。 +- **二叉堆结构实现优先队列**:构建一个二叉堆结构,二叉堆按照优先级进行排序。入队操作就是将元素插入到二叉堆中合适位置,时间复杂度为 $O(\log_2n)$。出队操作则返回二叉堆中优先级最大节点并删除,时间复杂度也是 $O(\log n)$。 下面是三种结构实现的优先队列入队操作和出队操作的时间复杂度总结。 From 9c08e02455a52c9fb32f72b0bc8b74edee68d6bc Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 26 Mar 2024 17:59:20 +0800 Subject: [PATCH 073/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index cf33e302..78013587 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 算法通关手册(LeetCode) -## 项目简介 +## 01. 项目简介 - **「算法与数据结构」** 基础知识的讲解教程,「LeetCode」800+ 道题目的详细解析。本项目易于理解,没有大跨度的思维跳跃,项目中使用部分图示、例子来帮助理解。 @@ -8,7 +8,7 @@ - 本教程采用 Python 作为编程语言,要求学习者已有基本 Python 程序设计的知识与经验。 -## 项目地址 +## 02. 项目地址 欢迎右上角 **「Star ⭐️ 」** 和 **「Fork」**,这是对我最大的鼓励和支持。 @@ -22,7 +22,7 @@ ![](./Assets/Images/algo-book-dark.png) -## 关于作者 +## 03. 关于作者 我是一名 iOS / macOS 的开发程序员,另外也是北航软院的一名非全硕士(在读)。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。 @@ -35,23 +35,25 @@ ![](./Assets/Images/itcharge-qr-code.png) -## 版权说明 +## 04. 版权说明 - 本教程采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 - 本教程题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 -# 内容章节 +## 05. 章节目录 -## 00. 绪论 +![算法通关手册 (LeetCode)](http://qcdn.itcharge.cn/images/20240326175628.png) + +### 00. 绪论 - [算法与数据结构](./Contents/00.Introduction/01.Data-Structures-Algorithms.md) - [算法复杂度](./Contents/00.Introduction/02.Algorithm-Complexity.md) - [LeetCode 入门与攻略](./Contents/00.Introduction/03.LeetCode-Guide.md) -- [LeetCode 题解(字典序排序,700+ 道题解)](./Contents/00.Introduction/04.Solutions-List.md) +- [LeetCode 题解(字典序排序,850+ 道题解)](./Contents/00.Introduction/04.Solutions-List.md) - [LeetCode 题解(按分类排序,推荐刷题列表 ★★★)](./Contents/00.Introduction/05.Categories-List.md) - [LeetCode 面试最常考 100 题(按分类排序)](./Contents/00.Introduction/06.Interview-100-List.md) - [LeetCode 面试最常考 200 题(按分类排序)](./Contents/00.Introduction/07.Interview-200-List.md) -## 01. 数组 +### 01. 数组 - 数组基础知识 - [数组基础知识](./Contents/01.Array/01.Array-Basic/01.Array-Basic.md) @@ -79,7 +81,7 @@ - [数组滑动窗口知识](./Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md) - [数组滑动窗口题目](./Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) -## 02. 链表 +### 02. 链表 - 链表基础知识 - [链表基础知识](./Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md) @@ -91,7 +93,7 @@ - [链表双指针知识](./Contents/02.Linked-List/03.Linked-List-Two-Pointers/01.Linked-List-Two-Pointers.md) - [链表双指针题目](./Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md) -## 03. 堆栈 +### 03. 堆栈 - 堆栈基础知识 - [堆栈基础知识](./Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md) @@ -100,7 +102,7 @@ - [单调栈知识](./Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md) - [单调栈题目](./Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) -## 04. 队列 +### 04. 队列 - 队列基础知识 - [队列基础知识](./Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md) @@ -109,12 +111,12 @@ - [优先队列知识](./Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md) - [优先队列题目](./Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md) -## 05. 哈希表 +### 05. 哈希表 - [哈希表知识](./Contents/05.Hash-Table/01.Hash-Table.md) - [哈希表题目](./Contents/05.Hash-Table/02.Hash-Table-List.md) -## 06. 字符串 +### 06. 字符串 - 字符串基础知识 - [字符串基础知识](./Contents/06.String/01.String-Basic/01.String-Basic.md) @@ -136,7 +138,7 @@ - [后缀数组题目](./Contents/06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md) -## 07. 树 +### 07. 树 - 二叉树 - [树与二叉树基础知识](./Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md) @@ -157,7 +159,7 @@ - [并查集知识](./Contents/07.Tree/05.Union-Find/01.Union-Find.md) - [并查集题目](./Contents/07.Tree/05.Union-Find/02.Union-Find-List.md) -## 08. 图论 +### 08. 图论 - 图的基础知识 - [图的定义和分类](./Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md) @@ -190,7 +192,7 @@ - [Hopcroft-Karp 算法](./Contents/08.Graph/05.Graph-Bipartite/05.Graph-Hopcroft-Karp.md) - [二分图最大匹配题目](./Contents/08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md) -## 09. 基础算法 +### 09. 基础算法 - 枚举算法 - [枚举算法知识](./Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md) @@ -211,7 +213,7 @@ - [位运算知识](./Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md) - [位运算题目](./Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) -## 10. 动态规划 +### 10. 动态规划 - 动态规划基础 - [动态规划基础知识](./Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md) @@ -254,5 +256,8 @@ - [四边形不等式优化](./Contents/10.Dynamic-Programming/11.DP-Optimization/03.Quadrangle-Optimization.md) - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) -## 11. 附加内容 -## [12. LeetCode 题解(已完成 859 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +### 11. 附加内容 + +- [内容完成时间线](./Contents/Others/Update-Time.md) + +### [12. LeetCode 题解(已完成 859 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file From 5dc0286320768e3041bbe379c15bbe5398ebf475 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 26 Mar 2024 18:06:26 +0800 Subject: [PATCH 074/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Images/algo-book-contents.png | Bin 0 -> 515744 bytes README.md | 6 +++--- 2 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 Assets/Images/algo-book-contents.png diff --git a/Assets/Images/algo-book-contents.png b/Assets/Images/algo-book-contents.png new file mode 100644 index 0000000000000000000000000000000000000000..7c30a25d59dea9f51e8dc203d0109ae102cb685b GIT binary patch literal 515744 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≥aC1TEBC-bS?5U;HSK_om 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

(djn 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�dUlqxK3m>Rcnrl^qd>rm6o{lVV7`!pGaVE}*L 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 78013587..a3dac973 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,9 @@ - 电子书地址:[https://algo.itcharge.cn](https://algo.itcharge.cn) -![](./Assets/Images/algo-book-light.png) +![电子书浅色模式](./Assets/Images/algo-book-light.png) -![](./Assets/Images/algo-book-dark.png) +![电子书深色模式](./Assets/Images/algo-book-dark.png) ## 03. 关于作者 @@ -41,7 +41,7 @@ - 本教程题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 ## 05. 章节目录 -![算法通关手册 (LeetCode)](http://qcdn.itcharge.cn/images/20240326175628.png) +![章节目录](./Assets/Images/algo-book-contents.png) ### 00. 绪论 From 8faecc94cda2a97019fe35982969f7c60aa701d5 Mon Sep 17 00:00:00 2001 From: YiluSu <6344500+YiluSu@users.noreply.github.com> Date: Sun, 5 May 2024 14:15:40 +0800 Subject: [PATCH 075/158] Update typo in 01.Priority-Queue.md --- Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md b/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md index 18e97dfb..b958db65 100644 --- a/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md +++ b/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md @@ -57,7 +57,7 @@ ### 4.2 二叉堆的基本操作 -二叉树主要涉及两个基本操作:「堆调整方法」和「将数组构建为二叉堆方法」。 +二叉堆主要涉及两个基本操作:「堆调整方法」和「将数组构建为二叉堆方法」。 - **堆调整方法 `heapAdjust`**:把移走了最大值元素以后的剩余元素组成的序列再构造为一个新的堆积。具体步骤如下: - 从根节点开始,自上而下地调整节点的位置,使其成为堆积。即把序号为 $i$ 的节点与其左子树节点(序号为 $2 \times i$)、右子树节点(序号为 $2 \times i + 1$)中值最大的节点交换位置。 @@ -399,4 +399,4 @@ class Solution: - 【博文】[Python3,手写一个堆及其简易功能,并实现优先队列,最小堆任务调度等 - pythonstrat 的博客](https://blog.csdn.net/pythonstrat/article/details/119378788) - 【文档】[实现一个优先级队列 - python3-cookbook 3.0.0 文档](https://python3-cookbook.readthedocs.io/zh_CN/latest/c01/p05_implement_a_priority_queue.html) - 【文档】[heapq - 堆队列算法 - Python 3.10.1 文档](https://docs.python.org/zh-cn/3/library/heapq.html) -- 【题解】[239. 滑动窗口最大值 (优先队列&单调栈) - 滑动窗口最大值 - 力扣](https://leetcode.cn/problems/sliding-window-maximum/solution/239-hua-dong-chuang-kou-zui-da-zhi-you-x-9qur/) \ No newline at end of file +- 【题解】[239. 滑动窗口最大值 (优先队列&单调栈) - 滑动窗口最大值 - 力扣](https://leetcode.cn/problems/sliding-window-maximum/solution/239-hua-dong-chuang-kou-zui-da-zhi-you-x-9qur/) From 4f9fbe1fcd3916102fbfefa7f08549d4667abcc2 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 6 May 2024 14:02:09 +0800 Subject: [PATCH 076/158] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20Latex=20=E5=85=AC?= =?UTF-8?q?=E5=BC=8F=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../02.Array-Sort/02.Array-Selection-Sort.md | 10 +++---- .../02.Array-Sort/05.Array-Merge-Sort.md | 6 ++-- .../02.Array-Sort/08.Array-Counting-Sort.md | 12 ++++---- .../01.Array-Two-Pointers.md | 16 +++++----- .../01.Array-Sliding-Window.md | 20 ++++++------- .../02.Monotone-Stack/01.Monotone-Stack.md | 6 ++-- .../02.String-Rabin-Karp.md | 8 ++--- .../01.Graph-Basic/02.Graph-Structure.md | 6 ++-- .../02.Graph-Traversal/03.Graph-BFS.md | 10 +++---- .../01.Greedy-Algorithm.md | 12 ++++---- .../02.Memoization/01.Memoization.md | 26 ++++++++-------- .../04.Knapsack-Problem-04.md | 14 ++++----- .../06.Tree-DP/01.Tree-DP.md | 14 ++++----- .../07.State-DP/01.State-DP.md | 14 ++++----- ...36\346\226\207\345\255\220\344\270\262.md" | 2 +- ...51\351\230\265\347\275\256\351\233\266.md" | 4 +-- ...345\244\215\345\205\203\347\264\240 II.md" | 4 +-- ...47\350\267\257\345\276\204\345\222\214.md" | 6 ++-- .... \345\205\213\351\232\206\345\233\276.md" | 8 ++--- ...04\345\255\220\346\225\260\347\273\204.md" | 4 +-- ...40\347\232\204\344\270\252\346\225\260.md" | 6 ++-- ...04\347\232\204\344\272\244\351\233\206.md" | 8 ++--- ...N \344\275\215\346\225\260\345\255\227.md" | 4 +-- ...15\345\274\202\344\275\215\350\257\215.md" | 6 ++-- ...51\345\255\227\347\254\246\344\270\262.md" | 6 ++-- .... \344\270\200\345\222\214\351\233\266.md" | 4 +-- ...43\344\270\255\344\275\215\346\225\260.md" | 28 ++++++++--------- ...347\232\204\344\270\252\346\225\260 II.md" | 4 +-- .... \347\233\256\346\240\207\345\222\214.md" | 30 +++++++++---------- ...16\347\232\204\346\216\222\345\210\227.md" | 4 +-- ...04\345\255\220\346\225\260\347\273\204.md" | 18 +++++------ ...62\347\232\204\346\216\222\345\210\227.md" | 8 ++--- ...\345\271\263\345\235\207\346\225\260 I.md" | 2 +- ...22\345\242\236\345\272\217\345\210\227.md" | 4 +-- ...64\347\272\270\346\213\274\350\257\215.md" | 6 ++-- ...00\345\244\247\351\235\242\347\247\257.md" | 2 +- ...11\347\232\204\345\255\220\351\233\206.md" | 4 +-- ...04\345\255\220\346\225\260\347\273\204.md" | 6 ++-- .... \346\211\223\347\240\226\345\235\227.md" | 6 ++-- ...01\347\232\204\350\241\214\346\225\260.md" | 2 +- ...01\347\232\204\345\215\225\350\257\215.md" | 2 +- ...04\345\255\227\347\254\246\344\270\262.md" | 12 ++++---- ...55\345\255\220\346\225\260\347\273\204.md" | 14 ++++----- ...33\345\210\266\351\227\264\350\267\235.md" | 4 +-- ...04\350\241\250\351\235\242\347\247\257.md" | 8 ++--- ...E \350\277\255\344\273\243\345\231\250.md" | 6 ++-- ...22\345\272\217\346\225\260\347\273\204.md" | 26 ++++++++-------- ...77\346\214\211\351\224\256\345\205\245.md" | 16 +++++----- ...73\350\275\254\346\254\241\346\225\260.md" | 8 ++--- ...04\346\243\213\345\255\220\346\225\260.md" | 2 +- ...47\232\204\344\270\252\346\225\260 III.md" | 6 ++-- ...347\232\204\351\207\215\351\207\217 II.md" | 4 +-- ...46\345\272\227\350\200\201\346\235\277.md" | 4 +-- ...345\210\206\347\263\226\346\236\234 II.md" | 6 ++-- ...40\347\202\271\346\210\220\346\236\227.md" | 8 ++--- ...\346\211\200\346\234\211\347\232\204 1.md" | 8 ++--- ...05\345\205\203\347\264\240\345\222\214.md" | 4 +-- ...41\345\210\222\350\257\204\344\274\260.md" | 2 +- ...46\344\270\262\347\233\270\347\255\211.md" | 4 +-- ...32\350\256\256\346\227\245\347\250\213.md" | 8 ++--- ...21\347\232\204\347\233\264\345\276\204.md" | 8 ++--- ...45\346\211\276\345\205\203\347\264\240.md" | 2 +- ...04\346\225\260\347\273\204\345\222\214.md" | 4 +-- ...23\345\215\260\345\215\225\350\257\215.md" | 2 +- ...17\346\255\245\351\252\244\346\225\260.md" | 4 +-- ...47\345\255\246\347\224\237\346\225\260.md" | 10 +++---- ...00\345\244\247\347\202\271\346\225\260.md" | 12 ++++---- ...00\345\244\247\346\225\260\347\233\256.md" | 4 +-- ...77\345\255\220\346\225\260\347\273\204.md" | 4 +-- ...75\344\270\211\345\205\203\347\273\204.md" | 6 ++-- ...71\346\256\212\344\275\215\347\275\256.md" | 4 +-- ...60\347\233\256\346\234\200\345\244\247.md" | 4 +-- ...40\351\231\244\346\254\241\346\225\260.md" | 6 ++-- ...17\346\223\215\344\275\234\346\225\260.md" | 10 +++---- ...04\344\272\247\346\200\273\351\207\217.md" | 6 ++-- ...00\345\244\247\345\276\227\345\210\206.md" | 2 +- ...45\345\255\220\346\216\222\345\272\217.md" | 4 +-- ...26\345\200\274\344\271\213\345\222\214.md" | 2 +- ...47\350\257\204\345\210\206\345\222\214.md" | 4 +-- ...55\351\227\264\344\275\215\347\275\256.md" | 8 ++--- ...06\347\232\204\346\225\260\347\233\256.md" | 4 +-- ...00\345\244\247\344\270\216\345\222\214.md" | 6 ++-- ...00\351\225\277\350\267\257\345\276\204.md" | 8 ++--- ...14\347\232\204\345\267\256\345\200\274.md" | 16 +++++----- ...64\346\225\260\346\225\260\347\233\256.md" | 14 ++++----- ...04\351\200\206\345\272\217\345\257\271.md" | 10 +++---- 86 files changed, 338 insertions(+), 338 deletions(-) diff --git a/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md b/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md index ed31b9a6..5bd13d0b 100644 --- a/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md +++ b/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md @@ -12,12 +12,12 @@ 1. 初始状态下,无已排序区间,未排序区间为 $[0, n - 1]$。 2. 第 $1$ 趟选择: - 1. 遍历未排序区间 $[0, n - 1]$,使用变量 $min\underline{}i$ 记录区间中值最小的元素位置。 - 2. 将 $min\underline{}i$ 与下标为 $0$ 处的元素交换位置。如果下标为 $0$ 处元素就是值最小的元素位置,则不用交换。 + 1. 遍历未排序区间 $[0, n - 1]$,使用变量 $min\underline{\hspace{0.5em}}i$ 记录区间中值最小的元素位置。 + 2. 将 $min\underline{\hspace{0.5em}}i$ 与下标为 $0$ 处的元素交换位置。如果下标为 $0$ 处元素就是值最小的元素位置,则不用交换。 3. 此时,$[0, 0]$ 为已排序区间,$[1, n - 1]$(总共 $n - 1$ 个元素)为未排序区间。 3. 第 $2$ 趟选择: - 1. 遍历未排序区间 $[1, n - 1]$,使用变量 $min\underline{}i$ 记录区间中值最小的元素位置。 - 2. 将 $min\underline{}i$ 与下标为 $1$ 处的元素交换位置。如果下标为 $1$ 处元素就是值最小的元素位置,则不用交换。 + 1. 遍历未排序区间 $[1, n - 1]$,使用变量 $min\underline{\hspace{0.5em}}i$ 记录区间中值最小的元素位置。 + 2. 将 $min\underline{\hspace{0.5em}}i$ 与下标为 $1$ 处的元素交换位置。如果下标为 $1$ 处元素就是值最小的元素位置,则不用交换。 3. 此时,$[0, 1]$ 为已排序区间,$[2, n - 1]$(总共 $n - 2$ 个元素)为未排序区间。 4. 依次类推,对剩余未排序区间重复上述选择过程,直到所有元素都划分到已排序区间,排序结束。 @@ -79,7 +79,7 @@ class Solution: - **时间复杂度**:$O(n^2)$。排序法所进行的元素之间的比较次数与序列的原始状态无关,时间复杂度总是 $O(n^2)$。 - 这是因为无论序列中元素的初始排列状态如何,第 $i$ 趟排序要找出值最小元素都需要进行 $n − i$ 次元素之间的比较。因此,整个排序过程需要进行的元素之间的比较次数都相同,为 $∑^n_{i=2}(i - 1) = \frac{n(n−1)}{2}$ 次。 -- **空间复杂度**:$O(1)$。选择排序算法为原地排序算法,只用到指针变量 $i$、$j$ 以及最小值位置 $min\underline{}i$ 等常数项的变量。 +- **空间复杂度**:$O(1)$。选择排序算法为原地排序算法,只用到指针变量 $i$、$j$ 以及最小值位置 $min\underline{\hspace{0.5em}}i$ 等常数项的变量。 - **选择排序适用情况**:选择排序方法在排序过程中需要移动较多次数的元素,并且排序时间效率比较低。因此,选择排序方法比较适合于参加排序序列的数据量较小的情况。选择排序的主要优点是仅需要原地操作无需占用其他空间就可以完成排序,因此在空间复杂度要求较高时,可以考虑选择排序。 - **排序稳定性**:由于值最小元素与未排序区间第 $1$ 个元素的交换动作是在不相邻的元素之间进行的,因此很有可能会改变相等元素的相对顺序,因此,选择排序法是一种 **不稳定排序算法**。 diff --git a/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md b/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md index b9f989c1..af223533 100644 --- a/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md +++ b/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md @@ -9,12 +9,12 @@ 假设数组的元素个数为 $n$ 个,则归并排序的算法步骤如下: 1. **分解过程**:先递归地将当前数组平均分成两半,直到子数组长度为 $1$。 - 1. 找到数组中心位置 $mid$,从中心位置将数组分成左右两个子数组 $left\underline{}nums$、$right\underline{}nums$。 - 2. 对左右两个子数组 $left\underline{}nums$、$right\underline{}nums$ 分别进行递归分解。 + 1. 找到数组中心位置 $mid$,从中心位置将数组分成左右两个子数组 $left\underline{\hspace{0.5em}}nums$、$right\underline{\hspace{0.5em}}nums$。 + 2. 对左右两个子数组 $left\underline{\hspace{0.5em}}nums$、$right\underline{\hspace{0.5em}}nums$ 分别进行递归分解。 3. 最终将数组分解为 $n$ 个长度均为 $1$ 的有序子数组。 2. **归并过程**:从长度为 $1$ 的有序子数组开始,依次将有序数组两两合并,直到合并成一个长度为 $n$ 的有序数组。 1. 使用数组变量 $nums$ 存放合并后的有序数组。 - 2. 使用两个指针 $left\underline{}i$、$right\underline{}i$ 分别指向两个有序子数组 $left\underline{}nums$、$right\underline{}nums$ 的开始位置。 + 2. 使用两个指针 $left\underline{\hspace{0.5em}}i$、$right\underline{\hspace{0.5em}}i$ 分别指向两个有序子数组 $left\underline{\hspace{0.5em}}nums$、$right\underline{\hspace{0.5em}}nums$ 的开始位置。 3. 比较两个指针指向的元素,将两个有序子数组中较小元素依次存入到结果数组 $nums$ 中,并将指针移动到下一位置。 4. 重复步骤 $3$,直到某一指针到达子数组末尾。 5. 将另一个子数组中的剩余元素存入到结果数组 $nums$ 中。 diff --git a/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md b/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md index 29c05587..05e4c2e1 100644 --- a/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md +++ b/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md @@ -6,15 +6,15 @@ ## 2. 计数排序算法步骤 -1. **计算排序范围**:遍历数组,找出待排序序列中最大值元素 $nums\underline{}max$ 和最小值元素 $nums\underline{}min$,计算出排序范围为 $nums\underline{}max - nums\underline{}min + 1$。 +1. **计算排序范围**:遍历数组,找出待排序序列中最大值元素 $nums\underline{\hspace{0.5em}}max$ 和最小值元素 $nums\underline{\hspace{0.5em}}min$,计算出排序范围为 $nums\underline{\hspace{0.5em}}max - nums\underline{\hspace{0.5em}}min + 1$。 2. **定义计数数组**:定义一个大小为排序范围的计数数组 $counts$,用于统计每个元素的出现次数。其中: - 1. 数组的索引值 $num - nums\underline{}min$ 表示元素的值为 $num$。 - 2. 数组的值 $counts[num - nums\underline{}min]$ 表示元素 $num$ 的出现次数。 + 1. 数组的索引值 $num - nums\underline{\hspace{0.5em}}min$ 表示元素的值为 $num$。 + 2. 数组的值 $counts[num - nums\underline{\hspace{0.5em}}min]$ 表示元素 $num$ 的出现次数。 -3. **对数组元素进行计数统计**:遍历待排序数组 $nums$,对每个元素在计数数组中进行计数,即将待排序数组中「每个元素值减去最小值」作为索引,将「对计数数组中的值」加 $1$,即令 $counts[num - nums\underline{}min]$ 加 $1$。 -4. **生成累积计数数组**:从 $counts$ 中的第 $1$ 个元素开始,每一项累家前一项和。此时 $counts[num - nums\underline{}min]$ 表示值为 $num$ 的元素在排序数组中最后一次出现的位置。 +3. **对数组元素进行计数统计**:遍历待排序数组 $nums$,对每个元素在计数数组中进行计数,即将待排序数组中「每个元素值减去最小值」作为索引,将「对计数数组中的值」加 $1$,即令 $counts[num - nums\underline{\hspace{0.5em}}min]$ 加 $1$。 +4. **生成累积计数数组**:从 $counts$ 中的第 $1$ 个元素开始,每一项累家前一项和。此时 $counts[num - nums\underline{\hspace{0.5em}}min]$ 表示值为 $num$ 的元素在排序数组中最后一次出现的位置。 5. **逆序填充目标数组**:逆序遍历数组 $nums$,将每个元素 $num$ 填入正确位置。 - 1. 将其填充到结果数组 $res$ 的索引 $counts[num - nums\underline{}min]$ 处。 + 1. 将其填充到结果数组 $res$ 的索引 $counts[num - nums\underline{\hspace{0.5em}}min]$ 处。 2. 放入后,令累积计数数组中对应索引减 $1$,从而得到下个元素 $num$ 的放置位置。 我们以 $[3, 0, 4, 2, 5, 1, 3, 1, 4, 5]$ 为例,演示一下计数排序的整个步骤。 diff --git a/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md b/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md index d8068ee6..2f2d18c7 100644 --- a/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md +++ b/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md @@ -380,10 +380,10 @@ class Solution: ### 4.1 分离双指针求解步骤 -1. 使用两个指针 $left\underline{}1$、$left\underline{}2$。$left\underline{}1$ 指向第一个数组的第一个元素,即:$left\underline{}1 = 0$,$left\underline{}2$ 指向第二个数组的第一个元素,即:$left\underline{}2 = 0$。 -2. 当满足一定条件时,两个指针同时右移,即 $left\underline{}1 += 1$、$left\underline{}2 += 1$。 -3. 当满足另外一定条件时,将 $left\underline{}1$ 指针右移,即 $left\underline{}1 += 1$。 -4. 当满足其他一定条件时,将 $left\underline{}2$ 指针右移,即 $left\underline{}2 += 1$。 +1. 使用两个指针 $left\underline{\hspace{0.5em}}1$、$left\underline{\hspace{0.5em}}2$。$left\underline{\hspace{0.5em}}1$ 指向第一个数组的第一个元素,即:$left\underline{\hspace{0.5em}}1 = 0$,$left\underline{\hspace{0.5em}}2$ 指向第二个数组的第一个元素,即:$left\underline{\hspace{0.5em}}2 = 0$。 +2. 当满足一定条件时,两个指针同时右移,即 $left\underline{\hspace{0.5em}}1 += 1$、$left\underline{\hspace{0.5em}}2 += 1$。 +3. 当满足另外一定条件时,将 $left\underline{\hspace{0.5em}}1$ 指针右移,即 $left\underline{\hspace{0.5em}}1 += 1$。 +4. 当满足其他一定条件时,将 $left\underline{\hspace{0.5em}}2$ 指针右移,即 $left\underline{\hspace{0.5em}}2 += 1$。 5. 当其中一个数组遍历完时或者满足其他特殊条件时跳出循环体。 ### 4.2 分离双指针伪代码模板 @@ -448,10 +448,10 @@ while left_1 < len(nums1) and left_2 < len(nums2): ##### 思路 1:分离双指针 1. 对数组 $nums1$、$nums2$ 先排序。 -2. 使用两个指针 $left\underline{}1$、$left\underline{}2$。$left\underline{}1$ 指向第一个数组的第一个元素,即:$left\underline{}1 = 0$,$left\underline{}2$ 指向第二个数组的第一个元素,即:$left\underline{}2 = 0$。 -3. 如果 $nums1[left\underline{}1] == nums2[left\underline{}2]$,则将其加入答案数组(注意去重),并将 $left\underline{}1$ 和 $left\underline{}2$ 右移。 -4. 如果 $nums1[left\underline{}1] < nums2[left\underline{}2]$,则将 $left\underline{}1$ 右移。 -5. 如果 $nums1[left\underline{}1] > nums2[left\underline{}2]$,则将 $left\underline{}2$ 右移。 +2. 使用两个指针 $left\underline{\hspace{0.5em}}1$、$left\underline{\hspace{0.5em}}2$。$left\underline{\hspace{0.5em}}1$ 指向第一个数组的第一个元素,即:$left\underline{\hspace{0.5em}}1 = 0$,$left\underline{\hspace{0.5em}}2$ 指向第二个数组的第一个元素,即:$left\underline{\hspace{0.5em}}2 = 0$。 +3. 如果 $nums1[left\underline{\hspace{0.5em}}1] == nums2[left\underline{\hspace{0.5em}}2]$,则将其加入答案数组(注意去重),并将 $left\underline{\hspace{0.5em}}1$ 和 $left\underline{\hspace{0.5em}}2$ 右移。 +4. 如果 $nums1[left\underline{\hspace{0.5em}}1] < nums2[left\underline{\hspace{0.5em}}2]$,则将 $left\underline{\hspace{0.5em}}1$ 右移。 +5. 如果 $nums1[left\underline{\hspace{0.5em}}1] > nums2[left\underline{\hspace{0.5em}}2]$,则将 $left\underline{\hspace{0.5em}}2$ 右移。 6. 最后返回答案数组。 ##### 思路 1:代码 diff --git a/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md b/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md index 5b2ec775..56b7a0db 100644 --- a/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md +++ b/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md @@ -33,13 +33,13 @@ ### 3.1 固定长度滑动窗口算法步骤 -假设窗口的固定大小为 $window\underline{}size$。 +假设窗口的固定大小为 $window\underline{\hspace{0.5em}}size$。 1. 使用两个指针 $left$、$right$。初始时,$left$、$right$ 都指向序列的第一个元素,即:$left = 0$,$right = 0$,区间 $[left, right]$ 被称为一个「窗口」。 -2. 当窗口未达到 $window\underline{}size$ 大小时,不断移动 $right$,先将数组前 $window\underline{}size$ 个元素填入窗口中,即 `window.append(nums[right])`。 -2. 当窗口达到 $window\underline{}size$ 大小时,即满足 `right - left + 1 >= window_size` 时,判断窗口内的连续元素是否满足题目限定的条件。 +2. 当窗口未达到 $window\underline{\hspace{0.5em}}size$ 大小时,不断移动 $right$,先将数组前 $window\underline{\hspace{0.5em}}size$ 个元素填入窗口中,即 `window.append(nums[right])`。 +2. 当窗口达到 $window\underline{\hspace{0.5em}}size$ 大小时,即满足 `right - left + 1 >= window_size` 时,判断窗口内的连续元素是否满足题目限定的条件。 1. 如果满足,再根据要求更新最优解。 - 2. 然后向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $window\underline{}size$。 + 2. 然后向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $window\underline{\hspace{0.5em}}size$。 3. 向右移动 $right$,将元素填入窗口中,即 `window.append(nums[right])`。 4. 重复 $2 \sim 4$ 步,直到 $right$ 到达数组末尾。 @@ -107,7 +107,7 @@ while right < len(nums): 这道题目是典型的固定窗口大小的滑动窗口题目。窗口大小为 $k$。具体做法如下: -1. $ans$ 用来维护答案数目。$window\underline{}sum$ 用来维护窗口中元素的和。 +1. $ans$ 用来维护答案数目。$window\underline{\hspace{0.5em}}sum$ 用来维护窗口中元素的和。 2. $left$ 、$right$ 都指向序列的第一个元素,即:$left = 0$,$right = 0$。 3. 向右移动 $right$,先将 $k$ 个元素填入窗口中,即 `window_sum += arr[right]`。 4. 当窗口元素个数为 $k$ 时,即满足 `right - left + 1 >= k` 时,判断窗口内的元素和平均值是否大于等于阈值 $threshold$。 @@ -301,8 +301,8 @@ class Solution: 用滑动窗口来记录连续子数组的和,设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口中的和刚好大于等于 $target$。 1. 一开始,$left$、$right$ 都指向 $0$。 -2. 向右移动 $right$,将最右侧元素加入当前窗口和 $window\underline{}sum$ 中。 -3. 如果 $window\underline{}sum \ge target$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口和的最小值,直到 $window\underline{}sum < target$。 +2. 向右移动 $right$,将最右侧元素加入当前窗口和 $window\underline{\hspace{0.5em}}sum$ 中。 +3. 如果 $window\underline{\hspace{0.5em}}sum \ge target$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口和的最小值,直到 $window\underline{\hspace{0.5em}}sum < target$。 4. 然后继续右移 $right$,直到 $right \ge len(nums)$ 结束。 5. 输出窗口和的最小值作为答案。 @@ -374,10 +374,10 @@ class Solution: ##### 思路 1:滑动窗口(不定长度) -1. 设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口内所有数的乘积 $window\underline{}product$ 都小于 $k$。使用 $window\underline{}product$ 记录窗口中的乘积值,使用 $count$ 记录符合要求的子数组个数。 +1. 设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口内所有数的乘积 $window\underline{\hspace{0.5em}}product$ 都小于 $k$。使用 $window\underline{\hspace{0.5em}}product$ 记录窗口中的乘积值,使用 $count$ 记录符合要求的子数组个数。 2. 一开始,$left$、$right$ 都指向 $0$。 -3. 向右移动 $right$,将最右侧元素加入当前子数组乘积 $window\underline{}product$ 中。 -4. 如果 $window\underline{}product \ge k$,则不断右移 $left$,缩小滑动窗口长度,并更新当前乘积值 $window\underline{}product$ 直到 $window\underline{}product < k$。 +3. 向右移动 $right$,将最右侧元素加入当前子数组乘积 $window\underline{\hspace{0.5em}}product$ 中。 +4. 如果 $window\underline{\hspace{0.5em}}product \ge k$,则不断右移 $left$,缩小滑动窗口长度,并更新当前乘积值 $window\underline{\hspace{0.5em}}product$ 直到 $window\underline{\hspace{0.5em}}product < k$。 5. 记录累积答案个数加 $1$,继续右移 $right$,直到 $right \ge len(nums)$ 结束。 6. 输出累积答案个数。 diff --git a/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md b/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md index 495c0d97..70699198 100644 --- a/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md +++ b/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md @@ -173,14 +173,14 @@ def monotoneDecreasingStack(nums): 第二种思路是使用单调递增栈。因为 $nums1$ 是 $nums2$ 的子集,所以我们可以先遍历一遍 $nums2$,并构造单调递增栈,求出 $nums2$ 中每个元素右侧下一个更大的元素。然后将其存储到哈希表中。然后再遍历一遍 $nums1$,从哈希表中取出对应结果,存放到答案数组中。这种解法的时间复杂度是 $O(n)$。具体做法如下: -- 使用数组 $res$ 存放答案。使用 $stack$ 表示单调递增栈。使用哈希表 $num\underline{}map$ 用于存储 $nums2$ 中下一个比当前元素大的数值,映射关系为 **当前元素值:下一个比当前元素大的数值**。 +- 使用数组 $res$ 存放答案。使用 $stack$ 表示单调递增栈。使用哈希表 $num\underline{\hspace{0.5em}}map$ 用于存储 $nums2$ 中下一个比当前元素大的数值,映射关系为 **当前元素值:下一个比当前元素大的数值**。 - 遍历数组 $nums2$,对于当前元素: - 如果当前元素值较小,则直接让当前元素值入栈。 - 如果当前元素值较大,则一直出栈,直到当前元素值小于栈顶元素。 - - 出栈时,出栈元素是第一个大于当前元素值的元素。则将其映射到 $num\underline{}map$ 中。 + - 出栈时,出栈元素是第一个大于当前元素值的元素。则将其映射到 $num\underline{\hspace{0.5em}}map$ 中。 - 遍历完数组 $nums2$,建立好所有元素下一个更大元素的映射关系之后,再遍历数组 $nums1$。 -- 从 $num\underline{}map$ 中取出对应的值,将其加入到答案数组中。 +- 从 $num\underline{\hspace{0.5em}}map$ 中取出对应的值,将其加入到答案数组中。 - 最终输出答案数组 $res$。 #### 4.1.4 代码 diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md b/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md index 40671189..9adc6642 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md @@ -9,11 +9,11 @@ ### 2.1 Rabin Karp 算法整体步骤 1. 对于给定的文本串 $T$ 与模式串 $p$,求出文本串 $T$ 的长度为 $n$,模式串 $p$ 的长度为 $m$。 -2. 通过滚动哈希算法求出模式串 $p$ 的哈希值 $hash\underline{}p$。 -3. 再通过滚动哈希算法对文本串 $T$ 中 $n - m + 1$ 个子串分别求哈希值 $hash\underline{}t$。 +2. 通过滚动哈希算法求出模式串 $p$ 的哈希值 $hash\underline{\hspace{0.5em}}p$。 +3. 再通过滚动哈希算法对文本串 $T$ 中 $n - m + 1$ 个子串分别求哈希值 $hash\underline{\hspace{0.5em}}t$。 4. 然后逐个与模式串的哈希值比较大小。 - 1. 如果当前子串的哈希值 $hash\underline{}t$ 与模式串的哈希值 $hash\underline{}p$ 不同,则说明两者不匹配,则继续向后匹配。 - 2. 如果当前子串的哈希值 $hash\underline{}t$ 与模式串的哈希值 $hash\underline{}p$ 相等,则验证当前子串和模式串的每个字符是否真的相等(避免哈希冲突)。 + 1. 如果当前子串的哈希值 $hash\underline{\hspace{0.5em}}t$ 与模式串的哈希值 $hash\underline{\hspace{0.5em}}p$ 不同,则说明两者不匹配,则继续向后匹配。 + 2. 如果当前子串的哈希值 $hash\underline{\hspace{0.5em}}t$ 与模式串的哈希值 $hash\underline{\hspace{0.5em}}p$ 相等,则验证当前子串和模式串的每个字符是否真的相等(避免哈希冲突)。 1. 如果当前子串和模式串的每个字符相等,则说明当前子串和模式串匹配。 2. 如果当前子串和模式串的每个字符不相等,则说明两者不匹配,继续向后匹配。 5. 比较到末尾,如果仍未成功匹配,则说明文本串 $T$ 中不包含模式串 $p$,方法返回 $-1$。 diff --git a/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md b/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md index ec12ab5d..7a0512ea 100644 --- a/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md +++ b/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md @@ -10,10 +10,10 @@ #### 1.1.1 邻接矩阵的原理描述 -> **邻接矩阵(Adjacency Matrix)**:使用一个二维数组 $adj\underline{}matrix$ 来存储顶点之间的邻接关系。 +> **邻接矩阵(Adjacency Matrix)**:使用一个二维数组 $adj\underline{\hspace{0.5em}}matrix$ 来存储顶点之间的邻接关系。 > -> - 对于无权图来说,如果 $adj\underline{}matrix[i][j]$ 为 $1$,则说明顶点 $v_i$ 到 $v_j$ 存在边,如果 $adj\underline{}matrix[i][j]$ 为 $0$,则说明顶点 $v_i$ 到 $v_j$ 不存在边。 -> - 对于带权图来说,如果 $adj\underline{}matrix[i][j]$ 为 $w$,并且 $w \ne \infty$(即 `w != float('inf')`),则说明顶点 $v_i$ 到 $v_j$ 的权值为 $w$。如果 $adj\underline{}matrix[i][j]$ 为 $\infty$(即 `float('inf')`),则说明顶点 $v_i$ 到 $v_j$ 不存在边。 +> - 对于无权图来说,如果 $adj\underline{\hspace{0.5em}}matrix[i][j]$ 为 $1$,则说明顶点 $v_i$ 到 $v_j$ 存在边,如果 $adj\underline{\hspace{0.5em}}matrix[i][j]$ 为 $0$,则说明顶点 $v_i$ 到 $v_j$ 不存在边。 +> - 对于带权图来说,如果 $adj\underline{\hspace{0.5em}}matrix[i][j]$ 为 $w$,并且 $w \ne \infty$(即 `w != float('inf')`),则说明顶点 $v_i$ 到 $v_j$ 的权值为 $w$。如果 $adj\underline{\hspace{0.5em}}matrix[i][j]$ 为 $\infty$(即 `float('inf')`),则说明顶点 $v_i$ 到 $v_j$ 不存在边。 在下面的示意图中,左侧是一个无向图,右侧则是该无向图对应的邻接矩阵结构。 diff --git a/Contents/08.Graph/02.Graph-Traversal/03.Graph-BFS.md b/Contents/08.Graph/02.Graph-Traversal/03.Graph-BFS.md index af18e135..85410ed6 100644 --- a/Contents/08.Graph/02.Graph-Traversal/03.Graph-BFS.md +++ b/Contents/08.Graph/02.Graph-Traversal/03.Graph-BFS.md @@ -146,10 +146,10 @@ Solution().bfs(graph, "0") 1. 使用哈希表 $visited$ 来存储原图中被访问过的节点和克隆图中对应节点,键值对为「原图被访问过的节点:克隆图中对应节点」。使用队列 $queue$ 存放节点。 2. 根据起始节点 $node$,创建一个新的节点,并将其添加到哈希表 $visited$ 中,即 `visited[node] = Node(node.val, [])`。然后将起始节点放入队列中,即 `queue.append(node)`。 -3. 从队列中取出第一个节点 $node\underline{}u$。访问节点 $node\underline{}u$。 -4. 遍历节点 $node\underline{}u$ 的所有未访问邻接节点 $node\underline{}v$(节点 $node\underline{}v$ 不在 $visited$ 中)。 -5. 根据节点 $node\underline{}v$ 创建一个新的节点,并将其添加到哈希表 $visited$ 中,即 `visited[node_v] = Node(node_v.val, [])`。 -6. 然后将节点 $node\underline{}v$ 放入队列 $queue$ 中,即 `queue.append(node_v)`。 +3. 从队列中取出第一个节点 $node\underline{\hspace{0.5em}}u$。访问节点 $node\underline{\hspace{0.5em}}u$。 +4. 遍历节点 $node\underline{\hspace{0.5em}}u$ 的所有未访问邻接节点 $node\underline{\hspace{0.5em}}v$(节点 $node\underline{\hspace{0.5em}}v$ 不在 $visited$ 中)。 +5. 根据节点 $node\underline{\hspace{0.5em}}v$ 创建一个新的节点,并将其添加到哈希表 $visited$ 中,即 `visited[node_v] = Node(node_v.val, [])`。 +6. 然后将节点 $node\underline{\hspace{0.5em}}v$ 放入队列 $queue$ 中,即 `queue.append(node_v)`。 7. 重复步骤 $3 \sim 6$,直到队列 $queue$ 为空。 8. 广度优先搜索结束,返回起始节点的克隆节点(即 $visited[node]$)。 @@ -227,7 +227,7 @@ class Solution: 1. 使用 $ans$ 记录最大岛屿面积。 2. 遍历二维数组的每一个元素,对于每个值为 $1$ 的元素: - 1. 将该元素置为 $0$。并使用队列 $queue$ 存储该节点位置。使用 $temp\underline{}ans$ 记录当前岛屿面积。 + 1. 将该元素置为 $0$。并使用队列 $queue$ 存储该节点位置。使用 $temp\underline{\hspace{0.5em}}ans$ 记录当前岛屿面积。 2. 然后从队列 $queue$ 中取出第一个节点位置 $(i, j)$。遍历该节点位置上、下、左、右四个方向上的相邻节点。并将其置为 $0$(避免重复搜索)。并将其加入到队列中。并累加当前岛屿面积,即 `temp_ans += 1`。 3. 不断重复上一步骤,直到队列 $queue$ 为空。 4. 更新当前最大岛屿面积,即 `ans = max(ans, temp_ans)`。 diff --git a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md b/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md index b0c1447d..8d46a631 100644 --- a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md +++ b/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md @@ -120,10 +120,10 @@ 使用贪心算法的代码解决步骤描述如下: -1. 对数组 $g$、$s$ 进行从小到大排序,使用变量 $index\underline{}g$ 和 $index\underline{}s$ 分别指向 $g$、$s$ 初始位置,使用变量 $res$ 保存结果,初始化为 $0$。 -2. 对比每个元素 $g[index\underline{}g]$ 和 $s[index\underline{}s]$: - 1. 如果 $g[index\underline{}g] \le s[index\underline{}s]$,说明当前饼干满足当前孩子胃口,则答案数量加 $1$,并且向右移动 $index\underline{}g$ 和 $index\underline{}s$。 - 2. 如果 $g[index\underline{}g] > s[index\underline{}s]$,说明当前饼干无法满足当前孩子胃口,则向右移动 $index_s$,判断下一块饼干是否可以满足当前孩子胃口。 +1. 对数组 $g$、$s$ 进行从小到大排序,使用变量 $index\underline{\hspace{0.5em}}g$ 和 $index\underline{\hspace{0.5em}}s$ 分别指向 $g$、$s$ 初始位置,使用变量 $res$ 保存结果,初始化为 $0$。 +2. 对比每个元素 $g[index\underline{\hspace{0.5em}}g]$ 和 $s[index\underline{\hspace{0.5em}}s]$: + 1. 如果 $g[index\underline{\hspace{0.5em}}g] \le s[index\underline{\hspace{0.5em}}s]$,说明当前饼干满足当前孩子胃口,则答案数量加 $1$,并且向右移动 $index\underline{\hspace{0.5em}}g$ 和 $index\underline{\hspace{0.5em}}s$。 + 2. 如果 $g[index\underline{\hspace{0.5em}}g] > s[index\underline{\hspace{0.5em}}s]$,说明当前饼干无法满足当前孩子胃口,则向右移动 $index_s$,判断下一块饼干是否可以满足当前孩子胃口。 3. 遍历完输出答案 $res$。 ##### 思路 1:代码 @@ -203,9 +203,9 @@ class Solution: 使用贪心算法的代码解决步骤描述如下: -1. 将区间集合按照结束坐标升序排列,然后维护两个变量,一个是当前不重叠区间的结束时间 $end\underline{}pos$,另一个是不重叠区间的个数 $count$。初始情况下,结束坐标 $end\underline{}pos$ 为第一个区间的结束坐标,$count$ 为 $1$。 +1. 将区间集合按照结束坐标升序排列,然后维护两个变量,一个是当前不重叠区间的结束时间 $end\underline{\hspace{0.5em}}pos$,另一个是不重叠区间的个数 $count$。初始情况下,结束坐标 $end\underline{\hspace{0.5em}}pos$ 为第一个区间的结束坐标,$count$ 为 $1$。 2. 依次遍历每段区间。对于每段区间:$intervals[i]$: - 1. 如果 $end\underline{}pos \le intervals[i][0]$,即 $end\underline{}pos$ 小于等于区间起始位置,则说明出现了不重叠区间,令不重叠区间数 $count$ 加 $1$,$end\underline{}pos$ 更新为新区间的结束位置。 + 1. 如果 $end\underline{\hspace{0.5em}}pos \le intervals[i][0]$,即 $end\underline{\hspace{0.5em}}pos$ 小于等于区间起始位置,则说明出现了不重叠区间,令不重叠区间数 $count$ 加 $1$,$end\underline{\hspace{0.5em}}pos$ 更新为新区间的结束位置。 3. 最终返回「总区间个数 - 不重叠区间的最多个数」即 $len(intervals) - count$ 作为答案。 ##### 思路 1:代码 diff --git a/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md b/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md index 989c46f3..ef46933e 100644 --- a/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md +++ b/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md @@ -123,11 +123,11 @@ class Solution: 1. 定义从位置 $0$、和为 $0$ 开始,到达数组尾部位置为止,和为 $target$ 的方案数为 `dfs(0, 0)`。 2. 下面从位置 $0$、和为 $0$ 开始,以深度优先搜索遍历每个位置。 3. 如果当前位置 $i$ 到达最后一个位置 $size$: - 1. 如果和 $cur\underline{}sum$ 等于目标和 $target$,则返回方案数 $1$。 - 2. 如果和 $cur\underline{}sum$ 不等于目标和 $target$,则返回方案数 $0$。 -4. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum - nums[i]$ 的方案数。 -5. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum + nums[i]$ 的方案数。 -6. 将 4 ~ 5 两个方案数加起来就是当前位置 $i$、和为 $cur\underline{}sum$ 的方案数,返回该方案数。 + 1. 如果和 $cur\underline{\hspace{0.5em}}sum$ 等于目标和 $target$,则返回方案数 $1$。 + 2. 如果和 $cur\underline{\hspace{0.5em}}sum$ 不等于目标和 $target$,则返回方案数 $0$。 +4. 递归搜索 $i + 1$ 位置,和为 $cur\underline{\hspace{0.5em}}sum - nums[i]$ 的方案数。 +5. 递归搜索 $i + 1$ 位置,和为 $cur\underline{\hspace{0.5em}}sum + nums[i]$ 的方案数。 +6. 将 4 ~ 5 两个方案数加起来就是当前位置 $i$、和为 $cur\underline{\hspace{0.5em}}sum$ 的方案数,返回该方案数。 7. 最终方案数为 `dfs(0, 0)`,将其作为答案返回即可。 ##### 思路 1:代码 @@ -158,18 +158,18 @@ class Solution: 在思路 1 中我们单独使用深度优先搜索对每位数字进行 `+` 或者 `-` 的方法超时了。所以我们考虑使用记忆化搜索的方式,避免进行重复搜索。 -这里我们使用哈希表 $table$ 记录遍历过的位置 $i$ 及所得到的的当前和$cur\underline{}sum$ 下的方案数,来避免重复搜索。具体步骤如下: +这里我们使用哈希表 $table$ 记录遍历过的位置 $i$ 及所得到的的当前和$cur\underline{\hspace{0.5em}}sum$ 下的方案数,来避免重复搜索。具体步骤如下: 1. 定义从位置 $0$、和为 $0$ 开始,到达数组尾部位置为止,和为 $target$ 的方案数为 `dfs(0, 0)`。 2. 下面从位置 $0$、和为 $0$ 开始,以深度优先搜索遍历每个位置。 3. 如果当前位置 $i$ 遍历完所有位置: - 1. 如果和 $cur\underline{}sum$ 等于目标和 $target$,则返回方案数 $1$。 - 2. 如果和 $cur\underline{}sum$ 不等于目标和 $target$,则返回方案数 $0$。 -4. 如果当前位置 $i$、和为 $cur\underline{}sum$ 之前记录过(即使用 $table$ 记录过对应方案数),则返回该方案数。 -5. 如果当前位置 $i$、和为 $cur\underline{}sum$ 之前没有记录过,则: - 1. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum - nums[i]$ 的方案数。 - 2. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum + nums[i]$ 的方案数。 - 3. 将上述两个方案数加起来就是当前位置 $i$、和为 $cur\underline{}sum$ 的方案数,将其记录到哈希表 $table$ 中,并返回该方案数。 + 1. 如果和 $cur\underline{\hspace{0.5em}}sum$ 等于目标和 $target$,则返回方案数 $1$。 + 2. 如果和 $cur\underline{\hspace{0.5em}}sum$ 不等于目标和 $target$,则返回方案数 $0$。 +4. 如果当前位置 $i$、和为 $cur\underline{\hspace{0.5em}}sum$ 之前记录过(即使用 $table$ 记录过对应方案数),则返回该方案数。 +5. 如果当前位置 $i$、和为 $cur\underline{\hspace{0.5em}}sum$ 之前没有记录过,则: + 1. 递归搜索 $i + 1$ 位置,和为 $cur\underline{\hspace{0.5em}}sum - nums[i]$ 的方案数。 + 2. 递归搜索 $i + 1$ 位置,和为 $cur\underline{\hspace{0.5em}}sum + nums[i]$ 的方案数。 + 3. 将上述两个方案数加起来就是当前位置 $i$、和为 $cur\underline{\hspace{0.5em}}sum$ 的方案数,将其记录到哈希表 $table$ 中,并返回该方案数。 6. 最终方案数为 `dfs(0, 0)`,将其作为答案返回即可。 ##### 思路 2:代码 diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md index 778b9228..85f87c23 100644 --- a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md +++ b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md @@ -80,7 +80,7 @@ class Solution: ## 6. 分组背包问题 -> **分组背包问题**:有 $n$ 组物品和一个最多能装重量为 $W$ 的背包,第 $i$ 组物品的件数为 $group\underline{}count[i]$,第 $i$ 组的第 $j$ 个物品重量为 $weight[i][j]$,价值为 $value[i][j]$。每组物品中最多只能选择 $1$ 件物品装入背包。请问在总重量不超过背包载重上限的情况下,能装入背包的最大价值是多少? +> **分组背包问题**:有 $n$ 组物品和一个最多能装重量为 $W$ 的背包,第 $i$ 组物品的件数为 $group\underline{\hspace{0.5em}}count[i]$,第 $i$ 组的第 $j$ 个物品重量为 $weight[i][j]$,价值为 $value[i][j]$。每组物品中最多只能选择 $1$ 件物品装入背包。请问在总重量不超过背包载重上限的情况下,能装入背包的最大价值是多少? ![](https://qcdn.itcharge.cn/images/20230329095729.png) @@ -100,17 +100,17 @@ class Solution: ###### 3. 状态转移方程 -由于我们可以不选择 $i - 1$ 组物品中的任何物品,也可以从第 $i - 1$ 组物品的第 $0 \sim group\underline{}count[i - 1] - 1$ 件物品中随意选择 $1$ 件物品,所以状态 $dp[i][w]$ 可能从以下方案中选择最大值: +由于我们可以不选择 $i - 1$ 组物品中的任何物品,也可以从第 $i - 1$ 组物品的第 $0 \sim group\underline{\hspace{0.5em}}count[i - 1] - 1$ 件物品中随意选择 $1$ 件物品,所以状态 $dp[i][w]$ 可能从以下方案中选择最大值: 1. 不选择第 $i - 1$ 组中的任何物品:可以获得的最大价值为 $dp[i - 1][w]$。 2. 选择第 $i - 1$ 组物品中第 $0$ 件:可以获得的最大价值为 $dp[i - 1][w - weight[i - 1][0]] + value[i - 1][0]$。 3. 选择第 $i - 1$ 组物品中第 $1$ 件:可以获得的最大价值为 $dp[i - 1][w - weight[i - 1][1]] + value[i - 1][1]$。 4. …… -5. 选择第 $i - 1$ 组物品中最后 $1$ 件:假设 $k = group\underline{}count[i - 1] - 1$,则可以获得的最大价值为 $dp[i - 1][w - weight[i - 1][k]] + value[i - 1][k]$。 +5. 选择第 $i - 1$ 组物品中最后 $1$ 件:假设 $k = group\underline{\hspace{0.5em}}count[i - 1] - 1$,则可以获得的最大价值为 $dp[i - 1][w - weight[i - 1][k]] + value[i - 1][k]$。 则状态转移方程为: -$dp[i][w] = max \lbrace dp[i - 1][w], dp[i - 1][w - weight[i - 1][k]] + value[i - 1][k] \rbrace , \quad 0 \le k \le group\underline{}count[i - 1]$ +$dp[i][w] = max \lbrace dp[i - 1][w], dp[i - 1][w - weight[i - 1][k]] + value[i - 1][k] \rbrace , \quad 0 \le k \le group\underline{\hspace{0.5em}}count[i - 1]$ ###### 4. 初始条件 @@ -144,7 +144,7 @@ class Solution: #### 思路 1:复杂度分析 -- **时间复杂度**:$O(n \times W \times C)$,其中 $n$ 为物品分组数量,$W$ 为背包的载重上限,$C$ 是每组物品的数量。因为 $n \times C = \sum group\underline{}count[i]$,所以时间复杂度也可以写成 $O(W \times \sum group\underline{}count[i])$。 +- **时间复杂度**:$O(n \times W \times C)$,其中 $n$ 为物品分组数量,$W$ 为背包的载重上限,$C$ 是每组物品的数量。因为 $n \times C = \sum group\underline{\hspace{0.5em}}count[i]$,所以时间复杂度也可以写成 $O(W \times \sum group\underline{\hspace{0.5em}}count[i])$。 - **空间复杂度**:$O(n \times W)$。 ### 6.2 分组背包问题滚动数组优化 @@ -161,7 +161,7 @@ class Solution: ###### 3. 状态转移方程 -$dp[w] = max \lbrace dp[w], \quad dp[w - weight[i - 1][k]] + value[i - 1][k] \rbrace , \quad 0 \le k \le group\underline{}count[i - 1]$ +$dp[w] = max \lbrace dp[w], \quad dp[w - weight[i - 1][k]] + value[i - 1][k] \rbrace , \quad 0 \le k \le group\underline{\hspace{0.5em}}count[i - 1]$ ###### 4. 初始条件 @@ -195,7 +195,7 @@ class Solution: #### 思路 2:复杂度分析 -- **时间复杂度**:$O(n \times W \times C)$,其中 $n$ 为物品分组数量,$W$ 为背包的载重上限,$C$ 是每组物品的数量。因为 $n \times C = \sum group\underline{}count[i]$,所以时间复杂度也可以写成 $O(W \times \sum group\underline{}count[i])$。 +- **时间复杂度**:$O(n \times W \times C)$,其中 $n$ 为物品分组数量,$W$ 为背包的载重上限,$C$ 是每组物品的数量。因为 $n \times C = \sum group\underline{\hspace{0.5em}}count[i]$,所以时间复杂度也可以写成 $O(W \times \sum group\underline{\hspace{0.5em}}count[i])$。 - **空间复杂度**:$O(W)$。 ## 7. 二维费用背包问题 diff --git a/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md b/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md index 1302e6ad..9dd5983a 100644 --- a/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md +++ b/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md @@ -96,9 +96,9 @@ 在递归时,我们先计算左右子节点的最大贡献值,再更新维护当前最大路径和变量。最终 $ans$ 即为答案。具体步骤如下: 1. 如果根节点 $root$ 为空,则返回 $0$。 -2. 递归计算左子树的最大贡献值为 $left\underline{}max$。 -3. 递归计算右子树的最大贡献值为 $right\underline{}max$。 -4. 更新维护最大路径和变量,即 $self.ans = max \lbrace self.ans, \quad left\underline{}max + right\underline{}max + node.val \rbrace$。 +2. 递归计算左子树的最大贡献值为 $left\underline{\hspace{0.5em}}max$。 +3. 递归计算右子树的最大贡献值为 $right\underline{\hspace{0.5em}}max$。 +4. 更新维护最大路径和变量,即 $self.ans = max \lbrace self.ans, \quad left\underline{\hspace{0.5em}}max + right\underline{\hspace{0.5em}}max + node.val \rbrace$。 5. 返回以当前节点为根节点,并且经过该节点的最大贡献值。即返回 **当前节点值 + 左右子节点提供的最大贡献值中较大的一个**。 6. 最终 $self.ans$ 即为答案。 @@ -195,11 +195,11 @@ class Solution: 即:**最长路径长度 = max(某子树中的最长路径长度 + 另一子树中的最长路径长度 + 1,某个子树中的最长路径长度)**。 -对此,我们可以使用深度优先搜索递归遍历 $u$ 的所有相邻节点 $v$,并在递归遍历的同时,维护一个全局最大路径和变量 $ans$,以及当前节点 $u$ 的最大路径长度变量 $u\underline{}len$。 +对此,我们可以使用深度优先搜索递归遍历 $u$ 的所有相邻节点 $v$,并在递归遍历的同时,维护一个全局最大路径和变量 $ans$,以及当前节点 $u$ 的最大路径长度变量 $u\underline{\hspace{0.5em}}len$。 -1. 先计算出从相邻节点 $v$ 出发的最长路径长度 $v\underline{}len$。 -2. 更新维护全局最长路径长度为 $self.ans = max(self.ans, \quad u\underline{}len + v\underline{}len + 1)$。 -3. 更新维护当前节点 $u$ 的最长路径长度为 $u\underline{}len = max(u\underline{}len, \quad v\underline{}len + 1)$。 +1. 先计算出从相邻节点 $v$ 出发的最长路径长度 $v\underline{\hspace{0.5em}}len$。 +2. 更新维护全局最长路径长度为 $self.ans = max(self.ans, \quad u\underline{\hspace{0.5em}}len + v\underline{\hspace{0.5em}}len + 1)$。 +3. 更新维护当前节点 $u$ 的最长路径长度为 $u\underline{\hspace{0.5em}}len = max(u\underline{\hspace{0.5em}}len, \quad v\underline{\hspace{0.5em}}len + 1)$。 因为题目限定了「相邻节点字符不同」,所以在更新全局最长路径长度和当前节点 $u$ 的最长路径长度时,我们需要判断一下节点 $u$ 与相邻节点 $v$ 的字符是否相同,只有在字符不同的条件下,才能够更新维护。 diff --git a/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md b/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md index b5eaad57..4282362d 100644 --- a/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md +++ b/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md @@ -16,22 +16,22 @@ | 集合 S 中元素位置 | 5 | 4 | 3 | 2 | 1 | | :---------------- | :--: | :--: | :--: | :--: | :--: | -| 二进位对应值 | 1 | 1 | 1 | 1 | 1 | | 对应选取状态 | 选取 | 选取 | 选取 | 选取 | 选取 | +| 二进位对应值 | 1 | 1 | 1 | 1 | 1 | 再比如二进制数 $10101_{(2)}$ 就表示选取集合的第 $1$ 位、第 $3$ 位、第 $5$ 位元素,也就是集合 $\lbrace 5, 3, 1 \rbrace$。如下表所示: | 集合 S 中元素位置 | 5 | 4 | 3 | 2 | 1 | | :---------------- | :--: | :----: | :--: | :----: | :--: | -| 二进位对应值 | 1 | 0 | 1 | 0 | 1 | | 对应选取状态 | 选取 | 未选取 | 选取 | 未选取 | 选取 | +| 二进位对应值 | 1 | 0 | 1 | 0 | 1 | 再比如二进制数 $01001_{(2)}$ 就表示选取集合的第 $1$ 位、第 $4$ 位元素,也就是集合 $\lbrace 4, 1 \rbrace$。如下标所示: | 集合 S 中元素位置 | 5 | 4 | 3 | 2 | 1 | | :---------------- | :----: | :--: | :----: | :----: | :--: | -| 二进位对应值 | 0 | 1 | 0 | 0 | 1 | | 对应选取状态 | 未选取 | 选取 | 未选取 | 未选取 | 选取 | +| 二进位对应值 | 0 | 1 | 0 | 0 | 1 | 通过上面的例子我们可以得到启发:对于长度为 $5$ 的集合 $S$ 来说,我们只需要从 $00000 \sim 11111$ 枚举一次(对应十进制为 $0 \sim 2^5 - 1$)即可得到长度为 $5$ 的集合 $S$ 的所有子集。 @@ -175,7 +175,7 @@ 举个例子 $nums2 = \lbrace 1, 2, 3, 4 \rbrace$,$state = (1001)_2$,表示选择了第 $1$ 个元素和第 $4$ 个元素,也就是 $1$、$4$。那么 $state$ 只能从 $(1000)_2$ 和 $(0001)_2$ 这两个状态转移而来,我们只需要枚举这两种状态,并求出转移过来的异或值之和最小值。 -即状态转移方程为:$dp[state] = min(dp[state], \quad dp[state \oplus (1 \text{ <}\text{< } i)] + (nums1[i] \oplus nums2[one\underline{}cnt - 1]))$,其中 $state$ 第 $i$ 位一定为 $1$,$one\underline{}cnt$ 为 $state$ 中 $1$ 的个数。 +即状态转移方程为:$dp[state] = min(dp[state], \quad dp[state \oplus (1 \text{ <}\text{< } i)] + (nums1[i] \oplus nums2[one\underline{\hspace{0.5em}}cnt - 1]))$,其中 $state$ 第 $i$ 位一定为 $1$,$one\underline{\hspace{0.5em}}cnt$ 为 $state$ 中 $1$ 的个数。 ###### 4. 初始条件 @@ -281,12 +281,12 @@ class Solution: 对于当前状态 $dp[state]$,肯定是从比 $state$ 少选一个元素的状态中递推而来。我们可以枚举少选一个元素的状态,找到可以获得的最大与和,赋值给 $dp[state]$。 -即状态转移方程为:$dp[state] = min(dp[state], dp[state \oplus (1 \text{ <}\text{< } i)] + (i // 2 + 1) \text{ \& } nums[one\underline{}cnt - 1])$,其中: +即状态转移方程为:$dp[state] = min(dp[state], dp[state \oplus (1 \text{ <}\text{< } i)] + (i // 2 + 1) \text{ \& } nums[one\underline{\hspace{0.5em}}cnt - 1])$,其中: 1. $state$ 第 $i$ 位一定为 $1$。 2. $state \oplus (1 \text{ <}\text{< } i)$ 为比 $state$ 少选一个元素的状态。 3. $i // 2 + 1$ 为篮子对应编号 -4. $nums[one\underline{}cnt - 1]$ 为当前正在考虑的数组元素。 +4. $nums[one\underline{\hspace{0.5em}}cnt - 1]$ 为当前正在考虑的数组元素。 ###### 4. 初始条件 @@ -296,7 +296,7 @@ class Solution: 根据我们之前定义的状态,$dp[state]$ 表示为:将前 $count(state)$ 个整数放到篮子里,并且每个篮子中的整数放取情况为 $state$ 时,可以获得的最大与和。所以最终结果为 $max(dp)$。 -> 注意:当 $one\underline{}cnt > len(nums)$ 时,无法通过递推得到 $dp[state]$,需要跳过。 +> 注意:当 $one\underline{\hspace{0.5em}}cnt > len(nums)$ 时,无法通过递推得到 $dp[state]$,需要跳过。 ##### 思路 1:代码 diff --git "a/Solutions/0005. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" "b/Solutions/0005. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" index 522120ce..ecf59ea1 100644 --- "a/Solutions/0005. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" +++ "b/Solutions/0005. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" @@ -59,7 +59,7 @@ ###### 5. 最终结果 -根据我们之前定义的状态,$dp[i][j]$ 表示为:字符串 $s$ 在区间 $[i, j]$ 范围内是否是一个回文串。当判断完 $s[i: j]$ 是否为回文串时,同时判断并更新最长回文子串的起始位置 $max\underline{}start$ 和最大长度 $max\underline{}len$。则最终结果为 $s[max\underline{}start, max\underline{}start + max\underline{}len]$。 +根据我们之前定义的状态,$dp[i][j]$ 表示为:字符串 $s$ 在区间 $[i, j]$ 范围内是否是一个回文串。当判断完 $s[i: j]$ 是否为回文串时,同时判断并更新最长回文子串的起始位置 $max\underline{\hspace{0.5em}}start$ 和最大长度 $max\underline{\hspace{0.5em}}len$。则最终结果为 $s[max\underline{\hspace{0.5em}}start, max\underline{\hspace{0.5em}}start + max\underline{\hspace{0.5em}}len]$。 ### 思路 1:代码 diff --git "a/Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" "b/Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" index aa27ca84..6b70f58f 100644 --- "a/Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" +++ "b/Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" @@ -53,11 +53,11 @@ 考虑使用数组原本的元素进行记录出现 $0$ 的情况。 -1. 设定两个变量 $flag\underline{}row0$、$flag\underline{}col0$ 来标记第一行、第一列是否出现了 $0$。 +1. 设定两个变量 $flag\underline{\hspace{0.5em}}row0$、$flag\underline{\hspace{0.5em}}col0$ 来标记第一行、第一列是否出现了 $0$。 2. 接下来我们使用数组第一行、第一列来标记 $0$ 的情况。 3. 对数组除第一行、第一列之外的每个元素进行遍历,如果某个元素出现 $0$ 了,则使用数组的第一行、第一列对应位置来存储 $0$ 的标记。 4. 再对数组除第一行、第一列之外的每个元素进行遍历,通过对第一行、第一列的标记 $0$ 情况,进行置为 $0$ 的操作。 -5. 最后再根据 $flag\underline{}row0$、$flag\underline{}col0$ 的标记情况,对第一行、第一列进行置为 $0$ 的操作。 +5. 最后再根据 $flag\underline{\hspace{0.5em}}row0$、$flag\underline{\hspace{0.5em}}col0$ 的标记情况,对第一行、第一列进行置为 $0$ 的操作。 ### 思路 1:代码 diff --git "a/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" "b/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" index 13d9b780..a0e2b2d1 100644 --- "a/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" +++ "b/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" @@ -34,12 +34,12 @@ 这道题的题意是需要保留所有不同数字,而重复出现的所有数字都要删除。因为给定的链表是升序排列的,所以我们要删除的重复元素在链表中的位置是连续的。所以我们可以对链表进行一次遍历,然后将连续的重复元素从链表中删除即可。具体步骤如下: -- 先使用哑节点 $dummy\underline{}head$ 构造一个指向 $head$ 的指针,使得可以防止从 $head$ 开始就是重复元素。 +- 先使用哑节点 $dummy\underline{\hspace{0.5em}}head$ 构造一个指向 $head$ 的指针,使得可以防止从 $head$ 开始就是重复元素。 - 然后使用指针 $cur$ 表示链表中当前元素,从 $head$ 开始遍历。 - 当指针 $cur$ 的下一个元素和下下一个元素存在时: - 如果下一个元素值和下下一个元素值相同,则我们使用指针 $temp$ 保存下一个元素,并使用 $temp$ 向后遍历,跳过所有重复元素,然后令 $cur$ 的下一个元素指向 $temp$ 的下一个元素,继续向后遍历。 - 如果下一个元素值和下下一个元素值不同,则令 $cur$ 向右移动一位,继续向后遍历。 -- 当指针 $cur$ 的下一个元素或者下下一个元素不存在时,说明已经遍历完,则返回哑节点 $dummy\underline{}head$ 的下一个节点作为头节点。 +- 当指针 $cur$ 的下一个元素或者下下一个元素不存在时,说明已经遍历完,则返回哑节点 $dummy\underline{\hspace{0.5em}}head$ 的下一个节点作为头节点。 ### 思路 1:代码 diff --git "a/Solutions/0124. \344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" "b/Solutions/0124. \344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" index 043ade00..aa70d4c5 100644 --- "a/Solutions/0124. \344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" +++ "b/Solutions/0124. \344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" @@ -69,9 +69,9 @@ 在递归时,我们先计算左右子节点的最大贡献值,再更新维护当前最大路径和变量。最终 $ans$ 即为答案。具体步骤如下: 1. 如果根节点 $root$ 为空,则返回 $0$。 -2. 递归计算左子树的最大贡献值为 $left\underline{}max$。 -3. 递归计算右子树的最大贡献值为 $right\underline{}max$。 -4. 更新维护最大路径和变量,即 $self.ans = max \lbrace self.ans, \quad left\underline{}max + right\underline{}max + node.val \rbrace$。 +2. 递归计算左子树的最大贡献值为 $left\underline{\hspace{0.5em}}max$。 +3. 递归计算右子树的最大贡献值为 $right\underline{\hspace{0.5em}}max$。 +4. 更新维护最大路径和变量,即 $self.ans = max \lbrace self.ans, \quad left\underline{\hspace{0.5em}}max + right\underline{\hspace{0.5em}}max + node.val \rbrace$。 5. 返回以当前节点为根节点,并且经过该节点的最大贡献值。即返回 **当前节点值 + 左右子节点提供的最大贡献值中较大的一个**。 6. 最终 $self.ans$ 即为答案。 diff --git "a/Solutions/0133. \345\205\213\351\232\206\345\233\276.md" "b/Solutions/0133. \345\205\213\351\232\206\345\233\276.md" index feed92da..7ed17f1e 100644 --- "a/Solutions/0133. \345\205\213\351\232\206\345\233\276.md" +++ "b/Solutions/0133. \345\205\213\351\232\206\345\233\276.md" @@ -93,10 +93,10 @@ class Solution: 1. 使用哈希表 $visited$ 来存储原图中被访问过的节点和克隆图中对应节点,键值对为「原图被访问过的节点:克隆图中对应节点」。使用队列 $queue$ 存放节点。 2. 根据起始节点 $node$,创建一个新的节点,并将其添加到哈希表 $visited$ 中,即 `visited[node] = Node(node.val, [])`。然后将起始节点放入队列中,即 `queue.append(node)`。 -3. 从队列中取出第一个节点 $node\underline{}u$。访问节点 $node\underline{}u$。 -4. 遍历节点 $node\underline{}u$ 的所有未访问邻接节点 $node\underline{}v$(节点 $node\underline{}v$ 不在 $visited$ 中)。 -5. 根据节点 $node\underline{}v$ 创建一个新的节点,并将其添加到哈希表 $visited$ 中,即 `visited[node_v] = Node(node_v.val, [])`。 -6. 然后将节点 $node\underline{}v$ 放入队列 $queue$ 中,即 `queue.append(node_v)`。 +3. 从队列中取出第一个节点 $node\underline{\hspace{0.5em}}u$。访问节点 $node\underline{\hspace{0.5em}}u$。 +4. 遍历节点 $node\underline{\hspace{0.5em}}u$ 的所有未访问邻接节点 $node\underline{\hspace{0.5em}}v$(节点 $node\underline{\hspace{0.5em}}v$ 不在 $visited$ 中)。 +5. 根据节点 $node\underline{\hspace{0.5em}}v$ 创建一个新的节点,并将其添加到哈希表 $visited$ 中,即 `visited[node_v] = Node(node_v.val, [])`。 +6. 然后将节点 $node\underline{\hspace{0.5em}}v$ 放入队列 $queue$ 中,即 `queue.append(node_v)`。 7. 重复步骤 $3 \sim 6$,直到队列 $queue$ 为空。 8. 广度优先搜索结束,返回起始节点的克隆节点(即 $visited[node]$)。 diff --git "a/Solutions/0209. \351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0209. \351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md" index 7f3c157c..9f6e11f9 100644 --- "a/Solutions/0209. \351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0209. \351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -45,8 +45,8 @@ 用滑动窗口来记录连续子数组的和,设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口中的和刚好大于等于 $target$。 1. 一开始,$left$、$right$ 都指向 $0$。 -2. 向右移动 $right$,将最右侧元素加入当前窗口和 $window\underline{}sum$ 中。 -3. 如果 $window\underline{}sum \ge target$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口和的最小值,直到 $window\underline{}sum < target$。 +2. 向右移动 $right$,将最右侧元素加入当前窗口和 $window\underline{\hspace{0.5em}}sum$ 中。 +3. 如果 $window\underline{\hspace{0.5em}}sum \ge target$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口和的最小值,直到 $window\underline{\hspace{0.5em}}sum < target$。 4. 然后继续右移 $right$,直到 $right \ge len(nums)$ 结束。 5. 输出窗口和的最小值作为答案。 diff --git "a/Solutions/0315. \350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.md" "b/Solutions/0315. \350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.md" index 3527604d..7b759380 100644 --- "a/Solutions/0315. \350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.md" +++ "b/Solutions/0315. \350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.md" @@ -43,12 +43,12 @@ ### 思路 1:归并排序 -在使用归并排序对数组进行排序时,每当遇到 $left\underline{}nums[left\underline{}i] \le right\underline{}nums[right\underline{}i]$ 时,意味着:在合并前,左子数组当前元素 $left\underline{}nums[left\underline{}i]$ 右侧一定有 $left\underline{}i$ 个元素比 $left\underline{}nums[left\underline{}i]$ 小。则我们可以在归并排序的同时,记录 $nums[i]$ 右侧小于 $nums[i]$ 的元素的数量。 +在使用归并排序对数组进行排序时,每当遇到 $left\underline{\hspace{0.5em}}nums[left\underline{\hspace{0.5em}}i] \le right\underline{\hspace{0.5em}}nums[right\underline{\hspace{0.5em}}i]$ 时,意味着:在合并前,左子数组当前元素 $left\underline{\hspace{0.5em}}nums[left\underline{\hspace{0.5em}}i]$ 右侧一定有 $left\underline{\hspace{0.5em}}i$ 个元素比 $left\underline{\hspace{0.5em}}nums[left\underline{\hspace{0.5em}}i]$ 小。则我们可以在归并排序的同时,记录 $nums[i]$ 右侧小于 $nums[i]$ 的元素的数量。 1. 将元素值、对应下标、右侧小于 nums[i] 的元素的数量存入数组中。 2. 对其进行归并排序。 -3. 当遇到 $left\underline{}nums[left\underline{}i] \le right\underline{}nums[right\underline{}i]$ 时,记录 $left\underline{}nums[left\underline{}i]$ 右侧比 $left\underline{}nums[left\underline{}i]$ 小的元素数量,即:`left_nums[left_i][2] += right_i`。 -4. 当合并时 $left\underline{}nums[left\underline{}i]$ 仍有剩余时,说明 $left\underline{}nums[left\underline{}i]$ 右侧有 $right\underline{}i$ 个小于 $left\underline{}nums[left\underline{}i]$ 的元素,记录下来,即:`left_nums[left_i][2] += right_i`。 +3. 当遇到 $left\underline{\hspace{0.5em}}nums[left\underline{\hspace{0.5em}}i] \le right\underline{\hspace{0.5em}}nums[right\underline{\hspace{0.5em}}i]$ 时,记录 $left\underline{\hspace{0.5em}}nums[left\underline{\hspace{0.5em}}i]$ 右侧比 $left\underline{\hspace{0.5em}}nums[left\underline{\hspace{0.5em}}i]$ 小的元素数量,即:`left_nums[left_i][2] += right_i`。 +4. 当合并时 $left\underline{\hspace{0.5em}}nums[left\underline{\hspace{0.5em}}i]$ 仍有剩余时,说明 $left\underline{\hspace{0.5em}}nums[left\underline{\hspace{0.5em}}i]$ 右侧有 $right\underline{\hspace{0.5em}}i$ 个小于 $left\underline{\hspace{0.5em}}nums[left\underline{\hspace{0.5em}}i]$ 的元素,记录下来,即:`left_nums[left_i][2] += right_i`。 5. 根据下标及右侧小于 $nums[i]$ 的元素的数量,组合出答案数组,并返回答案数组。 ### 思路 1:代码 diff --git "a/Solutions/0349. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md" "b/Solutions/0349. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md" index acde6f9f..557e6034 100644 --- "a/Solutions/0349. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md" +++ "b/Solutions/0349. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md" @@ -68,10 +68,10 @@ class Solution: ### 思路 2:分离双指针 1. 对数组 $nums1$、$nums2$ 先排序。 -2. 使用两个指针 $left\underline{}1$、$left\underline{}2$。$left\underline{}1$ 指向第一个数组的第一个元素,即:$left\underline{}1 = 0$,$left\underline{}2$ 指向第二个数组的第一个元素,即:$left\underline{}2 = 0$。 -3. 如果 $nums1[left_1]$ 等于 $nums2[left_2]$,则将其加入答案数组(注意去重),并将 $left\underline{}1$ 和 $left\underline{}2$ 右移。 -4. 如果 $nums1[left_1]$ 小于 $nums2[left_2]$,则将 $left\underline{}1$ 右移。 -5. 如果 $nums1[left_1]$ 大于 $nums2[left_2]$,则将 $left\underline{}2$ 右移。 +2. 使用两个指针 $left\underline{\hspace{0.5em}}1$、$left\underline{\hspace{0.5em}}2$。$left\underline{\hspace{0.5em}}1$ 指向第一个数组的第一个元素,即:$left\underline{\hspace{0.5em}}1 = 0$,$left\underline{\hspace{0.5em}}2$ 指向第二个数组的第一个元素,即:$left\underline{\hspace{0.5em}}2 = 0$。 +3. 如果 $nums1[left_1]$ 等于 $nums2[left_2]$,则将其加入答案数组(注意去重),并将 $left\underline{\hspace{0.5em}}1$ 和 $left\underline{\hspace{0.5em}}2$ 右移。 +4. 如果 $nums1[left_1]$ 小于 $nums2[left_2]$,则将 $left\underline{\hspace{0.5em}}1$ 右移。 +5. 如果 $nums1[left_1]$ 大于 $nums2[left_2]$,则将 $left\underline{\hspace{0.5em}}2$ 右移。 6. 最后返回答案数组。 ### 思路 2:代码 diff --git "a/Solutions/0400. \347\254\254 N \344\275\215\346\225\260\345\255\227.md" "b/Solutions/0400. \347\254\254 N \344\275\215\346\225\260\345\255\227.md" index 7f9b0528..914cb2d6 100644 --- "a/Solutions/0400. \347\254\254 N \344\275\215\346\225\260\345\255\227.md" +++ "b/Solutions/0400. \347\254\254 N \344\275\215\346\225\260\345\255\227.md" @@ -53,7 +53,7 @@ 1. 我们可以先找到第 $n$ 位所在整数 $number$ 所对应的位数 $digit$。 2. 同时找到该位数 $digit$ 的起始整数 $start$。 3. 再计算出 $n$ 所在整数 $number$。$number$ 等于从起始数字 $start$ 开始的第 $\lfloor \frac{n - 1}{digit} \rfloor$ 个数字。即 `number = start + (n - 1) // digit`。 -4. 然后确定 $n$ 对应的是数字 $number$ 中的哪一位。即 $digit\underline{}idx = (n - 1) \mod digit$。 +4. 然后确定 $n$ 对应的是数字 $number$ 中的哪一位。即 $digit\underline{\hspace{0.5em}}idx = (n - 1) \mod digit$。 5. 最后返回结果。 ### 思路 1:代码 @@ -90,7 +90,7 @@ class Solution: $n$ 的最大值为 $2^{31} - 1$,约为 $2 \times 10^9$。而 $9$ 位数字有 $9 \times 10^8$ 个,共 $9 \times 9 \times 10^8 = 8.1 \times 10^9 > 2 \times 10 ^ 9$,所以第 $n$ 位所在整数的位数 $digit$ 最多为 $9$ 位,最小为 $1$ 位。即 $digit$ 的取值范围为 $[1, 9]$。 -我们使用二分查找算法得到 $digit$ 之后,还可以计算出不超过 $digit - 1$ 的整数的所有位数和 $pre\underline{}digits = totalDigits(digit - 1)$,则第 $n$ 位数字所在整数在所有 $digit$ 位数中的下标是 $idx = n - pre\underline{}digits - 1$。 +我们使用二分查找算法得到 $digit$ 之后,还可以计算出不超过 $digit - 1$ 的整数的所有位数和 $pre\underline{\hspace{0.5em}}digits = totalDigits(digit - 1)$,则第 $n$ 位数字所在整数在所有 $digit$ 位数中的下标是 $idx = n - pre\underline{\hspace{0.5em}}digits - 1$。 得到下标 $idx$ 后,可以计算出 $n$ 所在整数 $number$。$number$ 等于从起始数字 $10^{digit - 1}$ 开始的第 $\lfloor \frac{idx}{digit} \rfloor$ 个数字。即 `number = 10 ** (digit - 1) + idx // digit`。 diff --git "a/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" "b/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" index f264ab23..87fdc2a5 100644 --- "a/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" +++ "b/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" @@ -48,11 +48,11 @@ 维护一个固定长度为 $len(p)$ 的滑动窗口。于是问题的难点变为了如何判断 $s$ 的子串和 $p$ 是异位词。可以使用两个字典来分别存储 $s$ 的子串中各个字符个数和 $p$ 中各个字符个数。如果两个字典对应的键值全相等,则说明 $s$ 的子串和 $p$ 是异位词。但是这样每一次比较的操作时间复杂度是 $O(n)$,我们可以通过在滑动数组中逐字符比较的方式来减少两个字典之间相互比较的复杂度,并用 $valid$ 记录经过验证的字符个数。整个算法步骤如下: -- 使用哈希表 $need$ 记录 $p$ 中各个字符出现次数。使用字典 $window$ 记录 $s$ 的子串中各个字符出现的次数。使用数组 $res$ 记录答案。使用 $valid$ 记录 $s$ 的子串中经过验证的字符个数。使用 $window\underline{}size$ 表示窗口大小,值为 $len(p)$。使用两个指针 $left$、$right$。分别指向滑动窗口的左右边界。 +- 使用哈希表 $need$ 记录 $p$ 中各个字符出现次数。使用字典 $window$ 记录 $s$ 的子串中各个字符出现的次数。使用数组 $res$ 记录答案。使用 $valid$ 记录 $s$ 的子串中经过验证的字符个数。使用 $window\underline{\hspace{0.5em}}size$ 表示窗口大小,值为 $len(p)$。使用两个指针 $left$、$right$。分别指向滑动窗口的左右边界。 - 一开始,$left$、$right$ 都指向 $0$。 - 如果 $s[right]$ 出现在 $need$ 中,将最右侧字符 $s[right]$ 加入当前窗口 $window$ 中,记录该字符个数。并验证该字符是否和 $need$ 中个对应字符个数相等。如果相等则验证的字符个数加 $1$,即 `valid += 1`。 -- 如果该窗口字符长度大于等于 $window\underline{}size$ 个,即 $right - left + 1 \ge window\underline{}size$。则不断右移 $left$,缩小滑动窗口长度。 - - 如果验证字符个数 $valid$ 等于窗口长度 $window\underline{}size$,则 $s[left, right + 1]$ 为 $p$ 的异位词,所以将 $left$ 加入到答案数组中。 +- 如果该窗口字符长度大于等于 $window\underline{\hspace{0.5em}}size$ 个,即 $right - left + 1 \ge window\underline{\hspace{0.5em}}size$。则不断右移 $left$,缩小滑动窗口长度。 + - 如果验证字符个数 $valid$ 等于窗口长度 $window\underline{\hspace{0.5em}}size$,则 $s[left, right + 1]$ 为 $p$ 的异位词,所以将 $left$ 加入到答案数组中。 - 如果$s[left]$ 在 $need$ 中,则更新窗口中对应字符的个数,同时维护 $valid$ 值。 - 右移 $right$,直到 $right \ge len(nums)$ 结束。 - 输出答案数组 $res$。 diff --git "a/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" index 1a39b476..cdf3a4d9 100644 --- "a/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" @@ -51,11 +51,11 @@ 题目要求原地修改字符串数组。我们可以使用快慢指针来解决原地修改问题,具体解决方法如下: - 定义两个快慢指针 $slow$,$fast$。其中 $slow$ 指向压缩后的当前字符位置,$fast$ 指向压缩前的当前字符位置。 -- 记录下当前待压缩字符的起始位置 $fast\underline{}start = start$,然后过滤掉连续相同的字符。 -- 将待压缩字符的起始位置的字符存入压缩后的当前字符位置,即 $chars[slow] = chars[fast\underline{}start]$,并向右移动压缩后的当前字符位置,即 $slow += 1$。 +- 记录下当前待压缩字符的起始位置 $fast\underline{\hspace{0.5em}}start = start$,然后过滤掉连续相同的字符。 +- 将待压缩字符的起始位置的字符存入压缩后的当前字符位置,即 $chars[slow] = chars[fast\underline{\hspace{0.5em}}start]$,并向右移动压缩后的当前字符位置,即 $slow += 1$。 - 判断一下待压缩字符的数目是否大于 $1$: - 如果数量为 $1$,则不用记录该数量。 - - 如果数量大于 $1$(即 $fast - fast\underline{}start > 0$),则我们需要将对应数量存入压缩后的当前字符位置。这时候还需要判断一下数量是否大于等于 $10$。 + - 如果数量大于 $1$(即 $fast - fast\underline{\hspace{0.5em}}start > 0$),则我们需要将对应数量存入压缩后的当前字符位置。这时候还需要判断一下数量是否大于等于 $10$。 - 如果数量大于等于 $10$,则需要先将数字从个位到高位转为字符,存入压缩后的当前字符位置(此时数字为反,比如原数字是 $321$,则此时存入后为 $123$)。因为数字为反,所以我们需要将对应位置上的子字符串进行反转。 - 如果数量小于 $10$,则直接将数字存入压缩后的当前字符位置,无需取反。 - 判断完之后向右移动压缩前的当前字符位置 $fast$,然后继续压缩字符串,直到全部压缩完,则返回压缩后的当前字符位置 $slow$ 即为答案。 diff --git "a/Solutions/0474. \344\270\200\345\222\214\351\233\266.md" "b/Solutions/0474. \344\270\200\345\222\214\351\233\266.md" index 7100a833..e177ff0d 100644 --- "a/Solutions/0474. \344\270\200\345\222\214\351\233\266.md" +++ "b/Solutions/0474. \344\270\200\345\222\214\351\233\266.md" @@ -60,10 +60,10 @@ 填满最多由 $i$ 个 $0$ 和 $j$ 个 $1$ 构成的二维背包的最多物品数为下面两种情况中的最大值: -- 使用之前字符串填满容量为 $i - zero\underline{}num$、$j - one\underline{}num$ 的背包的物品数 + 当前字符串价值 +- 使用之前字符串填满容量为 $i - zero\underline{\hspace{0.5em}}num$、$j - one\underline{\hspace{0.5em}}num$ 的背包的物品数 + 当前字符串价值 - 选择之前字符串填满容量为 $i$、$j$ 的物品数。 -则状态转移方程为:$dp[i][j] = max(dp[i][j], dp[i - zero\underline{}num][j - one\underline{}num] + 1)$。 +则状态转移方程为:$dp[i][j] = max(dp[i][j], dp[i - zero\underline{\hspace{0.5em}}num][j - one\underline{\hspace{0.5em}}num] + 1)$。 ###### 4. 初始条件 diff --git "a/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" "b/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" index 84fc869d..245048f6 100644 --- "a/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" +++ "b/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" @@ -52,31 +52,31 @@ 初始化问题: -我们将所有大于中位数的元素放到 $heap\underline{}max$(小顶堆)中,并且元素个数向上取整。然后再将所有小于等于中位数的元素放到 $heap\underline{}min$(大顶堆)中,并且元素个数向下取整。这样当 $k$ 为奇数时,$heap\underline{}max$ 比 $heap\underline{}min$ 多一个元素,中位数就是 $heap\underline{}max$ 堆顶元素。当 $k$ 为偶数时,$heap\underline{}max$ 和 $heap\underline{}min$ 中的元素个数相同,中位数就是 $heap\underline{}min$ 堆顶元素和 $heap\underline{}max$ 堆顶元素的平均数。这个过程操作如下: +我们将所有大于中位数的元素放到 $heap\underline{\hspace{0.5em}}max$(小顶堆)中,并且元素个数向上取整。然后再将所有小于等于中位数的元素放到 $heap\underline{\hspace{0.5em}}min$(大顶堆)中,并且元素个数向下取整。这样当 $k$ 为奇数时,$heap\underline{\hspace{0.5em}}max$ 比 $heap\underline{\hspace{0.5em}}min$ 多一个元素,中位数就是 $heap\underline{\hspace{0.5em}}max$ 堆顶元素。当 $k$ 为偶数时,$heap\underline{\hspace{0.5em}}max$ 和 $heap\underline{\hspace{0.5em}}min$ 中的元素个数相同,中位数就是 $heap\underline{\hspace{0.5em}}min$ 堆顶元素和 $heap\underline{\hspace{0.5em}}max$ 堆顶元素的平均数。这个过程操作如下: -- 先将数组中前 $k$ 个元素放到 $heap\underline{}max$ 中。 -- 再从 $heap\underline{}max$ 中取出 $k // 2$ 个堆顶元素放到 $heap\underline{}min$ 中。 +- 先将数组中前 $k$ 个元素放到 $heap\underline{\hspace{0.5em}}max$ 中。 +- 再从 $heap\underline{\hspace{0.5em}}max$ 中取出 $k // 2$ 个堆顶元素放到 $heap\underline{\hspace{0.5em}}min$ 中。 取中位数问题(上边提到过): -- 当 $k$ 为奇数时,中位数就是 $heap\underline{}max$ 堆顶元素。当 $k$ 为偶数时,中位数就是 $heap\underline{}max$ 堆顶元素和 $heap\underline{}min$ 堆顶元素的平均数。 +- 当 $k$ 为奇数时,中位数就是 $heap\underline{\hspace{0.5em}}max$ 堆顶元素。当 $k$ 为偶数时,中位数就是 $heap\underline{\hspace{0.5em}}max$ 堆顶元素和 $heap\underline{\hspace{0.5em}}min$ 堆顶元素的平均数。 窗口滑动过程中元素的添加和删除问题: - 删除:每次滑动将窗口左侧元素删除。由于 `heapq` 没有提供删除中间特定元素相对应的方法。所以我们使用「延迟删除」的方式先把待删除的元素标记上,等到待删除的元素出现在堆顶时,再将其移除。我们使用 $removes$ (哈希表)来记录待删除元素个数。 - 将窗口左侧元素删除的操作为:`removes[nums[left]] += 1`。 -- 添加:每次滑动在窗口右侧添加元素。需要根据上一步删除的结果来判断需要添加到哪一个堆上。我们用 $banlance$ 记录 $heap\underline{}max$ 和 $heap\underline{}min$ 元素个数的差值。 - - 如果窗口左边界 $nums[left]$小于等于 $heap\underline{}max$ 堆顶元素 ,则说明上一步删除的元素在 $heap\underline{}min$ 上,则让 `banlance -= 1`。 - - 如果窗口左边界 $nums[left]$ 大于 $heap\underline{}max$ 堆顶元素,则说明上一步删除的元素在 $heap\underline{}max$ 上,则上 `banlance += 1`。 - - 如果窗口右边界 $nums[right]$ 小于等于 $heap\underline{}max$ 堆顶元素,则说明待添加元素需要添加到 $heap\underline{}min$ 上,则让 `banlance += 1`。 - - 如果窗口右边界 $nums[right]$ 大于 $heap\underline{}max$ 堆顶元素,则说明待添加元素需要添加到 $heap\underline{}max$ 上,则让 `banlance -= 1`。 +- 添加:每次滑动在窗口右侧添加元素。需要根据上一步删除的结果来判断需要添加到哪一个堆上。我们用 $banlance$ 记录 $heap\underline{\hspace{0.5em}}max$ 和 $heap\underline{\hspace{0.5em}}min$ 元素个数的差值。 + - 如果窗口左边界 $nums[left]$小于等于 $heap\underline{\hspace{0.5em}}max$ 堆顶元素 ,则说明上一步删除的元素在 $heap\underline{\hspace{0.5em}}min$ 上,则让 `banlance -= 1`。 + - 如果窗口左边界 $nums[left]$ 大于 $heap\underline{\hspace{0.5em}}max$ 堆顶元素,则说明上一步删除的元素在 $heap\underline{\hspace{0.5em}}max$ 上,则上 `banlance += 1`。 + - 如果窗口右边界 $nums[right]$ 小于等于 $heap\underline{\hspace{0.5em}}max$ 堆顶元素,则说明待添加元素需要添加到 $heap\underline{\hspace{0.5em}}min$ 上,则让 `banlance += 1`。 + - 如果窗口右边界 $nums[right]$ 大于 $heap\underline{\hspace{0.5em}}max$ 堆顶元素,则说明待添加元素需要添加到 $heap\underline{\hspace{0.5em}}max$ 上,则让 `banlance -= 1`。 - 经过上述操作,$banlance$ 的取值为 $0$、$-2$、$2$ 中的一种。需要经过调整使得 $banlance == 0$。 - 如果 $banlance == 0$,已经平衡,不需要再做操作。 - - 如果 $banlance == -2$,则说明 $heap\underline{}min$ 比 $heap\underline{}max$ 的元素多了两个。则从 $heap\underline{}min$ 中取出堆顶元素添加到 $heap\underline{}max$ 中。 - - 如果 $banlance == 2$,则说明 $heap\underline{}max$ 比 $heap\underline{}min$ 的元素多了两个。则从 $heap\underline{}max$ 中取出堆顶元素添加到 $heap\underline{}min$ 中。 -- 调整完之后,分别检查 $heap\underline{}max$ 和 $heap\underline{}min$ 的堆顶元素。 - - 如果 $heap\underline{}max$ 堆顶元素恰好为待删除元素,即 $removes[-heap\underline{}max[0]] > 0$,则弹出 $heap\underline{}max$ 堆顶元素。 - - 如果 $heap\underline{}min$ 堆顶元素恰好为待删除元素,即 $removes[heap\underline{}min[0]] > 0$,则弹出 $heap\underline{}min$ 堆顶元素。 + - 如果 $banlance == -2$,则说明 $heap\underline{\hspace{0.5em}}min$ 比 $heap\underline{\hspace{0.5em}}max$ 的元素多了两个。则从 $heap\underline{\hspace{0.5em}}min$ 中取出堆顶元素添加到 $heap\underline{\hspace{0.5em}}max$ 中。 + - 如果 $banlance == 2$,则说明 $heap\underline{\hspace{0.5em}}max$ 比 $heap\underline{\hspace{0.5em}}min$ 的元素多了两个。则从 $heap\underline{\hspace{0.5em}}max$ 中取出堆顶元素添加到 $heap\underline{\hspace{0.5em}}min$ 中。 +- 调整完之后,分别检查 $heap\underline{\hspace{0.5em}}max$ 和 $heap\underline{\hspace{0.5em}}min$ 的堆顶元素。 + - 如果 $heap\underline{\hspace{0.5em}}max$ 堆顶元素恰好为待删除元素,即 $removes[-heap\underline{\hspace{0.5em}}max[0]] > 0$,则弹出 $heap\underline{\hspace{0.5em}}max$ 堆顶元素。 + - 如果 $heap\underline{\hspace{0.5em}}min$ 堆顶元素恰好为待删除元素,即 $removes[heap\underline{\hspace{0.5em}}min[0]] > 0$,则弹出 $heap\underline{\hspace{0.5em}}min$ 堆顶元素。 - 最后取中位数放入答案数组中,然后继续滑动窗口。 ### 思路 1:代码 diff --git "a/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" "b/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" index aa181a7a..a7b648ed 100644 --- "a/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" +++ "b/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" @@ -43,11 +43,11 @@ 我们可以使用滑动窗口来解决问题。保证滑动窗口内最多有 $1$ 个 $0$。具体做法如下: -设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证滑动窗口内最多有 $1$ 个 $0$。使用 $zero\underline{}count$ 统计窗口内 $1$ 的个数。使用 $ans$ 记录答案。 +设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证滑动窗口内最多有 $1$ 个 $0$。使用 $zero\underline{\hspace{0.5em}}count$ 统计窗口内 $1$ 的个数。使用 $ans$ 记录答案。 - 一开始,$left$、$right$ 都指向 $0$。 - 如果 $nums[right] == 0$,则窗口内 $1$ 的个数加 $1$。 -- 如果该窗口中 $1$ 的个数多于 $1$ 个,即 $zero\underline{}count > 1$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口中 $1$ 的个数,直到 $zero\underline{}count \le 1$。 +- 如果该窗口中 $1$ 的个数多于 $1$ 个,即 $zero\underline{\hspace{0.5em}}count > 1$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口中 $1$ 的个数,直到 $zero\underline{\hspace{0.5em}}count \le 1$。 - 维护更新最大连续 $1$ 的个数。然后右移 $right$,直到 $right \ge len(nums)$ 结束。 - 输出最大连续 $1$ 的个数。 diff --git "a/Solutions/0494. \347\233\256\346\240\207\345\222\214.md" "b/Solutions/0494. \347\233\256\346\240\207\345\222\214.md" index b58181c6..51b3a352 100644 --- "a/Solutions/0494. \347\233\256\346\240\207\345\222\214.md" +++ "b/Solutions/0494. \347\233\256\346\240\207\345\222\214.md" @@ -51,11 +51,11 @@ 1. 定义从位置 $0$、和为 $0$ 开始,到达数组尾部位置为止,和为 $target$ 的方案数为 `dfs(0, 0)`。 2. 下面从位置 $0$、和为 $0$ 开始,以深度优先搜索遍历每个位置。 3. 如果当前位置 $i$ 到达最后一个位置 $size$: - 1. 如果和 $cur\underline{}sum$ 等于目标和 $target$,则返回方案数 $1$。 - 2. 如果和 $cur\underline{}sum$ 不等于目标和 $target$,则返回方案数 $0$。 -4. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum - nums[i]$ 的方案数。 -5. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum + nums[i]$ 的方案数。 -6. 将 4 ~ 5 两个方案数加起来就是当前位置 $i$、和为 $cur\underline{}sum$ 的方案数,返回该方案数。 + 1. 如果和 $cur\underline{\hspace{0.5em}}sum$ 等于目标和 $target$,则返回方案数 $1$。 + 2. 如果和 $cur\underline{\hspace{0.5em}}sum$ 不等于目标和 $target$,则返回方案数 $0$。 +4. 递归搜索 $i + 1$ 位置,和为 $cur\underline{\hspace{0.5em}}sum - nums[i]$ 的方案数。 +5. 递归搜索 $i + 1$ 位置,和为 $cur\underline{\hspace{0.5em}}sum + nums[i]$ 的方案数。 +6. 将 4 ~ 5 两个方案数加起来就是当前位置 $i$、和为 $cur\underline{\hspace{0.5em}}sum$ 的方案数,返回该方案数。 7. 最终方案数为 `dfs(0, 0)`,将其作为答案返回即可。 ### 思路 1:代码 @@ -86,18 +86,18 @@ class Solution: 在思路 1 中我们单独使用深度优先搜索对每位数字进行 `+` 或者 `-` 的方法超时了。所以我们考虑使用记忆化搜索的方式,避免进行重复搜索。 -这里我们使用哈希表 $$table$$ 记录遍历过的位置 $i$ 及所得到的的当前和 $cur\underline{}sum$ 下的方案数,来避免重复搜索。具体步骤如下: +这里我们使用哈希表 $$table$$ 记录遍历过的位置 $i$ 及所得到的的当前和 $cur\underline{\hspace{0.5em}}sum$ 下的方案数,来避免重复搜索。具体步骤如下: 1. 定义从位置 $0$、和为 $0$ 开始,到达数组尾部位置为止,和为 $target$ 的方案数为 `dfs(0, 0)`。 2. 下面从位置 $0$、和为 $0$ 开始,以深度优先搜索遍历每个位置。 3. 如果当前位置 $i$ 遍历完所有位置: - 1. 如果和 $cur\underline{}sum$ 等于目标和 $target$,则返回方案数 $1$。 - 2. 如果和 $cur\underline{}sum$ 不等于目标和 $target$,则返回方案数 $0$。 -4. 如果当前位置 $i$、和为 $cur\underline{}sum$ 之前记录过(即使用 $table$ 记录过对应方案数),则返回该方案数。 -5. 如果当前位置 $i$、和为 $cur\underline{}sum$ 之前没有记录过,则: - 1. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum - nums[i]$ 的方案数。 - 2. 递归搜索 $i + 1$ 位置,和为 $cur\underline{}sum + nums[i]$ 的方案数。 - 3. 将上述两个方案数加起来就是当前位置 $i$、和为 $cur\underline{}sum$ 的方案数,将其记录到哈希表 $table$ 中,并返回该方案数。 + 1. 如果和 $cur\underline{\hspace{0.5em}}sum$ 等于目标和 $target$,则返回方案数 $1$。 + 2. 如果和 $cur\underline{\hspace{0.5em}}sum$ 不等于目标和 $target$,则返回方案数 $0$。 +4. 如果当前位置 $i$、和为 $cur\underline{\hspace{0.5em}}sum$ 之前记录过(即使用 $table$ 记录过对应方案数),则返回该方案数。 +5. 如果当前位置 $i$、和为 $cur\underline{\hspace{0.5em}}sum$ 之前没有记录过,则: + 1. 递归搜索 $i + 1$ 位置,和为 $cur\underline{\hspace{0.5em}}sum - nums[i]$ 的方案数。 + 2. 递归搜索 $i + 1$ 位置,和为 $cur\underline{\hspace{0.5em}}sum + nums[i]$ 的方案数。 + 3. 将上述两个方案数加起来就是当前位置 $i$、和为 $cur\underline{\hspace{0.5em}}sum$ 的方案数,将其记录到哈希表 $table$ 中,并返回该方案数。 6. 最终方案数为 `dfs(0, 0)`,将其作为答案返回即可。 ### 思路 2:代码 @@ -132,9 +132,9 @@ class Solution: ### 思路 3:动态规划 -假设数组中所有元素和为 $sum$,数组中所有符号为 `+` 的元素为 $sum\underline{}x$,符号为 `-` 的元素和为 $sum\underline{}y$。则 $target = sum\underline{}x - sum\underline{}y$。 +假设数组中所有元素和为 $sum$,数组中所有符号为 `+` 的元素为 $sum\underline{\hspace{0.5em}}x$,符号为 `-` 的元素和为 $sum\underline{\hspace{0.5em}}y$。则 $target = sum\underline{\hspace{0.5em}}x - sum\underline{\hspace{0.5em}}y$。 -而 $sum\underline{}x + sum\underline{}y = sum$。根据两个式子可以求出 $2 \times sum\underline{}x = target + sum$,即 $sum\underline{}x = (target + sum) / 2$。 +而 $sum\underline{\hspace{0.5em}}x + sum\underline{\hspace{0.5em}}y = sum$。根据两个式子可以求出 $2 \times sum\underline{\hspace{0.5em}}x = target + sum$,即 $sum\underline{\hspace{0.5em}}x = (target + sum) / 2$。 那么这道题就变成了,如何在数组中找到一个集合,使集合中元素和为 $(target + sum) / 2$。这就变为了「0-1 背包问题」中求装满背包的方案数问题。 diff --git "a/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" "b/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" index e9491752..7aef3834 100644 --- "a/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" +++ "b/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" @@ -175,9 +175,9 @@ class Solution: 对于状态 $state$,先统计出 $state$ 中选择的数字个数(即统计二进制中 $1$ 的个数)$one_num$。 -则 $dp[state]$ 表示选择了前 $one\underline{}num$ 个数字,且选择情况为 $state$ 时的方案数。 +则 $dp[state]$ 表示选择了前 $one\underline{\hspace{0.5em}}num$ 个数字,且选择情况为 $state$ 时的方案数。 -$dp[state]$ 的状态肯定是由前 $one\underline{}num - 1$ 个数字,且 $state$ 第 $k$ 位为 $0$ 的状态而来对应状态转移而来,即:$dp[state \oplus (1 << (k - 1))]$。 +$dp[state]$ 的状态肯定是由前 $one\underline{\hspace{0.5em}}num - 1$ 个数字,且 $state$ 第 $k$ 位为 $0$ 的状态而来对应状态转移而来,即:$dp[state \oplus (1 << (k - 1))]$。 所以状态转移方程为:$dp[state] = \sum_{k = 1}^n dp[state \oplus (1 << (k - 1))]$ diff --git "a/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" index 32b1243c..76b25a8f 100644 --- "a/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -76,23 +76,23 @@ class Solution: ### 思路 2:前缀和 + 哈希表 -先用一重循环遍历数组,计算出数组 $nums$ 中前 $j$ 个元素的和(前缀和),保存到一维数组 $pre\underline{}sum$ 中,那么对于任意 $nums[i]…nums[j]$ 的子数组的和为 $pre\underline{}sum[j] - pre\underline{}sum[i - 1]$。这样计算子数组和的时间复杂度降为了 $O(1)$。总体时间复杂度为 $O(n^2)$。 +先用一重循环遍历数组,计算出数组 $nums$ 中前 $j$ 个元素的和(前缀和),保存到一维数组 $pre\underline{\hspace{0.5em}}sum$ 中,那么对于任意 $nums[i]…nums[j]$ 的子数组的和为 $pre\underline{\hspace{0.5em}}sum[j] - pre\underline{\hspace{0.5em}}sum[i - 1]$。这样计算子数组和的时间复杂度降为了 $O(1)$。总体时间复杂度为 $O(n^2)$。 但是还是超时了。。 由于我们只关心和为 $k$ 出现的次数,不关心具体的解,可以使用哈希表来加速运算。 -$pre\underline{}sum[i]$ 的定义是前 $i$ 个元素和,则 $pre\underline{}sum[i]$ 可以由 $pre\underline{}sum[i - 1]$ 递推而来,即:$pre\underline{}sum[i] = pre\underline{}sum[i - 1] + num[i]$。 $[i..j]$ 子数组和为 $k$ 可以转换为:$pre\underline{}sum[j] - pre\underline{}sum[i - 1] == k$。 +$pre\underline{\hspace{0.5em}}sum[i]$ 的定义是前 $i$ 个元素和,则 $pre\underline{\hspace{0.5em}}sum[i]$ 可以由 $pre\underline{\hspace{0.5em}}sum[i - 1]$ 递推而来,即:$pre\underline{\hspace{0.5em}}sum[i] = pre\underline{\hspace{0.5em}}sum[i - 1] + num[i]$。 $[i..j]$ 子数组和为 $k$ 可以转换为:$pre\underline{\hspace{0.5em}}sum[j] - pre\underline{\hspace{0.5em}}sum[i - 1] == k$。 -综合一下,可得:$pre\underline{}sum[i - 1] == pre\underline{}sum[j] - k $。 +综合一下,可得:$pre\underline{\hspace{0.5em}}sum[i - 1] == pre\underline{\hspace{0.5em}}sum[j] - k $。 -所以,当我们考虑以 $j$ 结尾和为 $k$ 的连续子数组个数时,只需要统计有多少个前缀和为 $pre\underline{}sum[j] - k$ (即 $pre\underline{}sum[i - 1]$)的个数即可。具体做法如下: +所以,当我们考虑以 $j$ 结尾和为 $k$ 的连续子数组个数时,只需要统计有多少个前缀和为 $pre\underline{\hspace{0.5em}}sum[j] - k$ (即 $pre\underline{\hspace{0.5em}}sum[i - 1]$)的个数即可。具体做法如下: -- 使用 $pre\underline{}sum$ 变量记录前缀和(代表 $pre\underline{}sum[j]$)。 -- 使用哈希表 $pre\underline{}dic$ 记录 $pre\underline{}sum[j]$ 出现的次数。键值对为 $pre\underline{}sum[j] : pre\underline{}sum\underline{}count$。 -- 从左到右遍历数组,计算当前前缀和 $pre\underline{}sum$。 -- 如果 $pre\underline{}sum - k$ 在哈希表中,则答案个数累加上 $pre\underline{}dic[pre\underline{}sum - k]$。 -- 如果 $pre\underline{}sum$ 在哈希表中,则前缀和个数累加 $1$,即 $pre\underline{}dic[pre\underline{}sum] += 1$。 +- 使用 $pre\underline{\hspace{0.5em}}sum$ 变量记录前缀和(代表 $pre\underline{\hspace{0.5em}}sum[j]$)。 +- 使用哈希表 $pre\underline{\hspace{0.5em}}dic$ 记录 $pre\underline{\hspace{0.5em}}sum[j]$ 出现的次数。键值对为 $pre\underline{\hspace{0.5em}}sum[j] : pre\underline{\hspace{0.5em}}sum\underline{\hspace{0.5em}}count$。 +- 从左到右遍历数组,计算当前前缀和 $pre\underline{\hspace{0.5em}}sum$。 +- 如果 $pre\underline{\hspace{0.5em}}sum - k$ 在哈希表中,则答案个数累加上 $pre\underline{\hspace{0.5em}}dic[pre\underline{\hspace{0.5em}}sum - k]$。 +- 如果 $pre\underline{\hspace{0.5em}}sum$ 在哈希表中,则前缀和个数累加 $1$,即 $pre\underline{\hspace{0.5em}}dic[pre\underline{\hspace{0.5em}}sum] += 1$。 - 最后输出答案个数。 ### 思路 2:代码 diff --git "a/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" "b/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" index 752a1525..bf8a5e05 100644 --- "a/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" +++ "b/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" @@ -41,15 +41,15 @@ 题目要求判断 $s2$ 是否包含 $s1$ 的排列,则 $s2$ 的子串长度等于 $s1$ 的长度。我们可以维护一个长度为字符串 $s1$ 长度的固定长度的滑动窗口。 -先统计出字符串 $s1$ 中各个字符的数量,我们用 $s1\underline{}count$ 来表示。这个过程可以用字典、数组来实现,也可以直接用 `collections.Counter()` 实现。再统计 $s2$ 对应窗口内的字符数量 $window\underline{}count$,然后不断向右滑动,然后进行比较。如果对应字符数量相同,则返回 $True$,否则继续滑动。直到末尾时,返回 $False$。整个解题步骤具体如下: +先统计出字符串 $s1$ 中各个字符的数量,我们用 $s1\underline{\hspace{0.5em}}count$ 来表示。这个过程可以用字典、数组来实现,也可以直接用 `collections.Counter()` 实现。再统计 $s2$ 对应窗口内的字符数量 $window\underline{\hspace{0.5em}}count$,然后不断向右滑动,然后进行比较。如果对应字符数量相同,则返回 $True$,否则继续滑动。直到末尾时,返回 $False$。整个解题步骤具体如下: -1. $s1\underline{}count$ 用来统计 $s1$ 中各个字符数量。$window\underline{}count$ 用来维护窗口中 $s2$ 对应子串的各个字符数量。$window\underline{}size$ 表示固定窗口的长度,值为 $len(s1)$。 +1. $s1\underline{\hspace{0.5em}}count$ 用来统计 $s1$ 中各个字符数量。$window\underline{\hspace{0.5em}}count$ 用来维护窗口中 $s2$ 对应子串的各个字符数量。$window\underline{\hspace{0.5em}}size$ 表示固定窗口的长度,值为 $len(s1)$。 2. 先统计出 $s1$ 中各个字符数量。 3. $left$ 、$right$ 都指向序列的第一个元素,即:`left = 0`,`right = 0`。 4. 向右移动 $right$,先将 $len(s1)$ 个元素填入窗口中。 -5. 当窗口元素个数为 $window\underline{}size$ 时,即:$right - left + 1 \ge window\underline{}size$ 时,判断窗口内各个字符数量 $window\underline{}count$ 是否等于 $s1 $ 中各个字符数量 $s1\underline{}count$。 +5. 当窗口元素个数为 $window\underline{\hspace{0.5em}}size$ 时,即:$right - left + 1 \ge window\underline{\hspace{0.5em}}size$ 时,判断窗口内各个字符数量 $window\underline{\hspace{0.5em}}count$ 是否等于 $s1 $ 中各个字符数量 $s1\underline{\hspace{0.5em}}count$。 1. 如果等于,直接返回 $True$。 - 2. 如果不等于,则向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $window\underline{}size$。 + 2. 如果不等于,则向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $window\underline{\hspace{0.5em}}size$。 6. 重复 $4 \sim 5$ 步,直到 $right$ 到达数组末尾。返回 $False$。 ### 思路 1:代码 diff --git "a/Solutions/0643. \345\255\220\346\225\260\347\273\204\346\234\200\345\244\247\345\271\263\345\235\207\346\225\260 I.md" "b/Solutions/0643. \345\255\220\346\225\260\347\273\204\346\234\200\345\244\247\345\271\263\345\235\207\346\225\260 I.md" index c1d4a8aa..bcae8639 100644 --- "a/Solutions/0643. \345\255\220\346\225\260\347\273\204\346\234\200\345\244\247\345\271\263\345\235\207\346\225\260 I.md" +++ "b/Solutions/0643. \345\255\220\346\225\260\347\273\204\346\234\200\345\244\247\345\271\263\345\235\207\346\225\260 I.md" @@ -43,7 +43,7 @@ 这道题目是典型的固定窗口大小的滑动窗口题目。窗口大小为 $k$。具体做法如下: -1. $ans$ 用来维护子数组最大平均数,初始值为负无穷,即 `float('-inf')`。$window\underline{}total$ 用来维护窗口中元素的和。 +1. $ans$ 用来维护子数组最大平均数,初始值为负无穷,即 `float('-inf')`。$window\underline{\hspace{0.5em}}total$ 用来维护窗口中元素的和。 2. $left$ 、$right$ 都指向序列的第一个元素,即:`left = 0`,`right = 0`。 3. 向右移动 $right$,先将 $k$ 个元素填入窗口中。 4. 当窗口元素个数为 $k$ 时,即:$right - left + 1 >= k$ 时,计算窗口内的元素和平均值,并维护子数组最大平均数。 diff --git "a/Solutions/0674. \346\234\200\351\225\277\350\277\236\347\273\255\351\200\222\345\242\236\345\272\217\345\210\227.md" "b/Solutions/0674. \346\234\200\351\225\277\350\277\236\347\273\255\351\200\222\345\242\236\345\272\217\345\210\227.md" index 0caec528..8701a725 100644 --- "a/Solutions/0674. \346\234\200\351\225\277\350\277\236\347\273\255\351\200\222\345\242\236\345\272\217\345\210\227.md" +++ "b/Solutions/0674. \346\234\200\351\225\277\350\277\236\347\273\255\351\200\222\345\242\236\345\272\217\345\210\227.md" @@ -89,14 +89,14 @@ class Solution: ### 思路 2:滑动窗口(不定长度) -1. 设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口内为连续递增序列。使用 $window\underline{}len$ 存储当前窗口大小,使用 $max\underline{}len$ 维护最大窗口长度。 +1. 设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口内为连续递增序列。使用 $window\underline{\hspace{0.5em}}len$ 存储当前窗口大小,使用 $max\underline{\hspace{0.5em}}len$ 维护最大窗口长度。 2. 一开始,$left$、$right$ 都指向 $0$。 3. 将最右侧元素 $nums[right]$ 加入当前连续递增序列中,即当前窗口长度加 $1$(`window_len += 1`)。 4. 判断当前元素 $nums[right]$ 是否满足连续递增序列。 5. 如果 $right > 0$ 并且 $nums[right - 1] \ge nums[right]$ ,说明不满足连续递增序列,则将 $left$ 移动到窗口最右侧,重置当前窗口长度为 $1$(`window_len = 1`)。 6. 记录当前连续递增序列的长度,并更新最长连续递增序列的长度。 7. 继续右移 $right$,直到 $right \ge len(nums)$ 结束。 -8. 输出最长连续递增序列的长度 $max\underline{}len$。 +8. 输出最长连续递增序列的长度 $max\underline{\hspace{0.5em}}len$。 ### 思路 2:代码 diff --git "a/Solutions/0691. \350\264\264\347\272\270\346\213\274\350\257\215.md" "b/Solutions/0691. \350\264\264\347\272\270\346\213\274\350\257\215.md" index b3886ab0..3bbd6858 100644 --- "a/Solutions/0691. \350\264\264\347\272\270\346\213\274\350\257\215.md" +++ "b/Solutions/0691. \350\264\264\347\272\270\346\213\274\350\257\215.md" @@ -51,13 +51,13 @@ 然后我们从初始状态 $state = 0$(没有选中 $target$ 中的任何字母)开始进行广度优先搜索遍历。 -在广度优先搜索过程中,对于当前状态 $cur\underline{}state$,我们遍历所有贴纸的所有字母,如果当前字母可以拼到 $target$ 中的某个位置上,则更新状态 $next\underline{}state$ 为「选中 $target$ 中对应位置上的字母」。 +在广度优先搜索过程中,对于当前状态 $cur\underline{\hspace{0.5em}}state$,我们遍历所有贴纸的所有字母,如果当前字母可以拼到 $target$ 中的某个位置上,则更新状态 $next\underline{\hspace{0.5em}}state$ 为「选中 $target$ 中对应位置上的字母」。 为了得到最小最小贴纸数量,我们可以使用动态规划的方法,定义 $dp[state]$ 表示为到达 $state$ 状态需要的最小贴纸数量。 -那么在广度优先搜索中,在更新状态时,同时进行状态转移,即 $dp[next\underline{}state] = dp[cur\underline{}state] + 1$。 +那么在广度优先搜索中,在更新状态时,同时进行状态转移,即 $dp[next\underline{\hspace{0.5em}}state] = dp[cur\underline{\hspace{0.5em}}state] + 1$。 -> 注意:在进行状态转移时,要跳过 $dp[next\underline{}state]$ 已经有值的情况。 +> 注意:在进行状态转移时,要跳过 $dp[next\underline{\hspace{0.5em}}state]$ 已经有值的情况。 这样在到达状态 $1 \text{ <}\text{< } len(target) - 1$ 时,所得到的 $dp[1 \text{ <}\text{< } len(target) - 1]$ 即为答案。 diff --git "a/Solutions/0695. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" "b/Solutions/0695. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" index fa2528e3..1c67bcaa 100644 --- "a/Solutions/0695. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" +++ "b/Solutions/0695. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" @@ -85,7 +85,7 @@ class Solution: 1. 使用 $ans$ 记录最大岛屿面积。 2. 遍历二维数组的每一个元素,对于每个值为 $1$ 的元素: - 1. 将该元素置为 $0$。并使用队列 $queue$ 存储该节点位置。使用 $temp\underline{}ans$ 记录当前岛屿面积。 + 1. 将该元素置为 $0$。并使用队列 $queue$ 存储该节点位置。使用 $temp\underline{\hspace{0.5em}}ans$ 记录当前岛屿面积。 2. 然后从队列 $queue$ 中取出第一个节点位置 $(i, j)$。遍历该节点位置上、下、左、右四个方向上的相邻节点。并将其置为 $0$(避免重复搜索)。并将其加入到队列中。并累加当前岛屿面积,即 `temp_ans += 1`。 3. 不断重复上一步骤,直到队列 $queue$ 为空。 4. 更新当前最大岛屿面积,即 `ans = max(ans, temp_ans)`。 diff --git "a/Solutions/0698. \345\210\222\345\210\206\344\270\272k\344\270\252\347\233\270\347\255\211\347\232\204\345\255\220\351\233\206.md" "b/Solutions/0698. \345\210\222\345\210\206\344\270\272k\344\270\252\347\233\270\347\255\211\347\232\204\345\255\220\351\233\206.md" index a1983260..a58e36f0 100644 --- "a/Solutions/0698. \345\210\222\345\210\206\344\270\272k\344\270\252\347\233\270\347\255\211\347\232\204\345\255\220\351\233\206.md" +++ "b/Solutions/0698. \345\210\222\345\210\206\344\270\272k\344\270\252\347\233\270\347\255\211\347\232\204\345\255\220\351\233\206.md" @@ -62,10 +62,10 @@ 1. 当数组元素选择情况为 $state$ 时可行,即 $dp[state] == True$; 2. 第 $i$ 位数字没有被使用; -3. 加上第 $i$ 位元素后的状态为 $next\underline{}state$; +3. 加上第 $i$ 位元素后的状态为 $next\underline{\hspace{0.5em}}state$; 4. 加上第 $i$ 位元素后没有超出目标和。 -则:$dp[next\underline{}state] = True$。 +则:$dp[next\underline{\hspace{0.5em}}state] = True$。 ###### 4. 初始条件 diff --git "a/Solutions/0713. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0713. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" index 4acba49e..459ffe21 100644 --- "a/Solutions/0713. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0713. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" @@ -40,10 +40,10 @@ ### 思路 1:滑动窗口(不定长度) -1. 设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口内所有数的乘积 $window\underline{}product$ 都小于 $k$。使用 $window\underline{}product$ 记录窗口中的乘积值,使用 $count$ 记录符合要求的子数组个数。 +1. 设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口内所有数的乘积 $window\underline{\hspace{0.5em}}product$ 都小于 $k$。使用 $window\underline{\hspace{0.5em}}product$ 记录窗口中的乘积值,使用 $count$ 记录符合要求的子数组个数。 2. 一开始,$left$、$right$ 都指向 $0$。 -3. 向右移动 $right$,将最右侧元素加入当前子数组乘积 $window\underline{}product$ 中。 -4. 如果 $window\underline{}product \ge k$,则不断右移 $left$,缩小滑动窗口长度,并更新当前乘积值 $window\underline{}product$ 直到 $window\underline{}product < k$。 +3. 向右移动 $right$,将最右侧元素加入当前子数组乘积 $window\underline{\hspace{0.5em}}product$ 中。 +4. 如果 $window\underline{\hspace{0.5em}}product \ge k$,则不断右移 $left$,缩小滑动窗口长度,并更新当前乘积值 $window\underline{\hspace{0.5em}}product$ 直到 $window\underline{\hspace{0.5em}}product < k$。 5. 记录累积答案个数加 $1$,继续右移 $right$,直到 $right \ge len(nums)$ 结束。 6. 输出累积答案个数。 diff --git "a/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" "b/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" index 9d0fc81d..8070f4b6 100644 --- "a/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" +++ "b/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" @@ -90,10 +90,10 @@ 整个算法步骤具体如下: -1. 先将二维数组 $grid$ 复制一份到二维数组 $copy\underline{}gird$ 上。这是因为遍历 $hits$ 元素时需要判断原网格是空白还是被打碎的砖块。 -2. 在 $copy\underline{}grid$ 中将 $hits$ 中打碎的砖块赋值为 $0$。 +1. 先将二维数组 $grid$ 复制一份到二维数组 $copy\underline{\hspace{0.5em}}gird$ 上。这是因为遍历 $hits$ 元素时需要判断原网格是空白还是被打碎的砖块。 +2. 在 $copy\underline{\hspace{0.5em}}grid$ 中将 $hits$ 中打碎的砖块赋值为 $0$。 3. 建立并查集,将房顶上的砖块合并到一个集合中。 -4. 逆序遍历 $hits$,将 $hits$ 中的砖块补到 $copy\underline{}grid$ 中,并计算每一步中有多少个砖块粘到屋顶上(与屋顶砖块在一个集合中),并存入答案数组对应位置。 +4. 逆序遍历 $hits$,将 $hits$ 中的砖块补到 $copy\underline{\hspace{0.5em}}grid$ 中,并计算每一步中有多少个砖块粘到屋顶上(与屋顶砖块在一个集合中),并存入答案数组对应位置。 5. 最后输出答案数组。 ### 思路 1:代码 diff --git "a/Solutions/0806. \345\206\231\345\255\227\347\254\246\344\270\262\351\234\200\350\246\201\347\232\204\350\241\214\346\225\260.md" "b/Solutions/0806. \345\206\231\345\255\227\347\254\246\344\270\262\351\234\200\350\246\201\347\232\204\350\241\214\346\225\260.md" index e919b4cb..13ec0704 100644 --- "a/Solutions/0806. \345\206\231\345\255\227\347\254\246\344\270\262\351\234\200\350\246\201\347\232\204\350\241\214\346\225\260.md" +++ "b/Solutions/0806. \345\206\231\345\255\227\347\254\246\344\270\262\351\234\200\350\246\201\347\232\204\350\241\214\346\225\260.md" @@ -51,7 +51,7 @@ S = "bbbcccdddaaa" ### 思路 1:模拟 -1. 使用变量 $line\underline{}cnt$ 记录行数,使用变量 $last\underline{}cnt$ 记录最后一行使用的单位数。 +1. 使用变量 $line\underline{\hspace{0.5em}}cnt$ 记录行数,使用变量 $last\underline{\hspace{0.5em}}cnt$ 记录最后一行使用的单位数。 2. 遍历字符串,如果当前最后一行使用的单位数 + 当前字符需要的单位超过了 $100$,则: 1. 另起一行填充字符。(即行数加 $1$,最后一行使用的单位数为当前字符宽度)。 3. 如果当前最后一行使用的单位数 + 当前字符需要的单位没有超过 $100$,则: diff --git "a/Solutions/0819. \346\234\200\345\270\270\350\247\201\347\232\204\345\215\225\350\257\215.md" "b/Solutions/0819. \346\234\200\345\270\270\350\247\201\347\232\204\345\215\225\350\257\215.md" index 0fc0d9fe..0cf6940f 100644 --- "a/Solutions/0819. \346\234\200\345\270\270\350\247\201\347\232\204\345\215\225\350\257\215.md" +++ "b/Solutions/0819. \346\234\200\345\270\270\350\247\201\347\232\204\345\215\225\350\257\215.md" @@ -55,7 +55,7 @@ banned = [] ### 思路 1:哈希表 -1. 将禁用词列表转为集合 $banned\underline{}set$。 +1. 将禁用词列表转为集合 $banned\underline{\hspace{0.5em}}set$。 2. 遍历段落 $paragraph$,获取段落中的所有单词。 3. 判断当前单词是否在禁用词集合中,如果不在禁用词集合中,则使用哈希表对该单词进行计数。 4. 遍历完,找出哈希表中频率最大的单词,将该单词作为答案进行返回。 diff --git "a/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" "b/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" index 19311b32..b1cd1e02 100644 --- "a/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" +++ "b/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" @@ -75,19 +75,19 @@ class Solution: 由于 `#` 会消除左侧字符,而不会影响右侧字符,所以我们选择从字符串尾端遍历 $s$、$t$ 字符串。具体做法如下: -- 使用分离双指针 $left\underline{}1$、$left\underline{}2$。$left\underline{}1$ 指向字符串 $s$ 末尾,$left\underline{}2$ 指向字符串 $t$ 末尾。使用 $sign\underline{}1$、$sign\underline{}2$ 标记字符串 $s$、$t$ 中当前退格字符个数。 +- 使用分离双指针 $left\underline{\hspace{0.5em}}1$、$left\underline{\hspace{0.5em}}2$。$left\underline{\hspace{0.5em}}1$ 指向字符串 $s$ 末尾,$left\underline{\hspace{0.5em}}2$ 指向字符串 $t$ 末尾。使用 $sign\underline{\hspace{0.5em}}1$、$sign\underline{\hspace{0.5em}}2$ 标记字符串 $s$、$t$ 中当前退格字符个数。 - 从后到前遍历字符串 $s$、$t$。 - 先来循环处理字符串 $s$ 尾端 `#` 的影响,具体如下: - - 如果当前字符是 `#`,则更新 $s$ 当前退格字符个数,即 `sign_1 += 1`。同时将 $left\underline{}1$ 左移。 - - 如果 $s$ 当前退格字符个数大于 $0$,则退格数减一,即 `sign_1 -= 1`。同时将 $left\underline{}1$ 左移。 + - 如果当前字符是 `#`,则更新 $s$ 当前退格字符个数,即 `sign_1 += 1`。同时将 $left\underline{\hspace{0.5em}}1$ 左移。 + - 如果 $s$ 当前退格字符个数大于 $0$,则退格数减一,即 `sign_1 -= 1`。同时将 $left\underline{\hspace{0.5em}}1$ 左移。 - 如果 $s$ 当前为普通字符,则跳出循环。 - 同理再来处理字符串 $t$ 尾端 `#` 的影响,具体如下: - - 如果当前字符是 `#`,则更新 $t$ 当前退格字符个数,即 `sign_2 += 1`。同时将 $left\underline{}2$ 左移。 - - 如果 $t$ 当前退格字符个数大于 $0$,则退格数减一,即 `sign_2 -= 1`。同时将 $left\underline{}2$ 左移。 + - 如果当前字符是 `#`,则更新 $t$ 当前退格字符个数,即 `sign_2 += 1`。同时将 $left\underline{\hspace{0.5em}}2$ 左移。 + - 如果 $t$ 当前退格字符个数大于 $0$,则退格数减一,即 `sign_2 -= 1`。同时将 $left\underline{\hspace{0.5em}}2$ 左移。 - 如果 $t$ 当前为普通字符,则跳出循环。 - 处理完,如果两个字符串为空,则说明匹配,直接返回 $True$。 - 再先排除长度不匹配的情况,直接返回 $False$。 - - 最后判断 $s[left\underline{}1]$ 是否等于 $s[left\underline{}2]$。不等于则直接返回 $False$,等于则令 $left\underline{}1$、$left\underline{}2$ 左移,继续遍历。 + - 最后判断 $s[left\underline{\hspace{0.5em}}1]$ 是否等于 $s[left\underline{\hspace{0.5em}}2]$。不等于则直接返回 $False$,等于则令 $left\underline{\hspace{0.5em}}1$、$left\underline{\hspace{0.5em}}2$ 左移,继续遍历。 - 遍历完没有出现不匹配的情况,则返回 $True$。 ### 思路 2:代码 diff --git "a/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" "b/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" index 8bef1d78..300f2347 100644 --- "a/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" @@ -48,22 +48,22 @@ 首先对于子数组和,我们可以使用「前缀和」的方式,方便快速的得到某个子数组的和。 -对于区间 $[left, right]$,通过 $pre\underline{}sum[right + 1] - prefix\underline{}cnts[left]$ 即可快速求解出区间 $[left, right]$ 的子数组和。 +对于区间 $[left, right]$,通过 $pre\underline{\hspace{0.5em}}sum[right + 1] - prefix\underline{\hspace{0.5em}}cnts[left]$ 即可快速求解出区间 $[left, right]$ 的子数组和。 -此时问题就转变为:是否能找到满足 $i > j$ 且 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$ 两个条件的子数组 $[j, i)$?如果能找到,则找出 $i - j$ 差值最小的作为答案。 +此时问题就转变为:是否能找到满足 $i > j$ 且 $pre\underline{\hspace{0.5em}}sum[i] - pre\underline{\hspace{0.5em}}sum[j] \ge k$ 两个条件的子数组 $[j, i)$?如果能找到,则找出 $i - j$ 差值最小的作为答案。 #### 2. 单调队列优化 对于区间 $[j, i)$ 来说,我们应该尽可能的减少不成立的区间枚举。 -1. 对于某个区间 $[j, i)$ 来说,如果 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$,那么大于 $i$ 的索引值就不用再进行枚举了,不可能比 $i - j$ 的差值更优了。此时我们应该尽可能的向右移动 $j$,从而使得 $i - j$ 更小。 -2. 对于某个区间 $[j, i)$ 来说,如果 $pre\underline{}sum[j] \ge pre\underline{}sum[i]$,对于任何大于等于 $i$ 的索引值 $r$ 来说,$pre\underline{}sum[r] - pre\underline{}sum[i]$ 一定比 $pre\underline{}sum[i] - pre\underline{}sum[j]$ 更小且长度更小,此时 $pre\underline{}sum[j]$ 可以直接忽略掉。 +1. 对于某个区间 $[j, i)$ 来说,如果 $pre\underline{\hspace{0.5em}}sum[i] - pre\underline{\hspace{0.5em}}sum[j] \ge k$,那么大于 $i$ 的索引值就不用再进行枚举了,不可能比 $i - j$ 的差值更优了。此时我们应该尽可能的向右移动 $j$,从而使得 $i - j$ 更小。 +2. 对于某个区间 $[j, i)$ 来说,如果 $pre\underline{\hspace{0.5em}}sum[j] \ge pre\underline{\hspace{0.5em}}sum[i]$,对于任何大于等于 $i$ 的索引值 $r$ 来说,$pre\underline{\hspace{0.5em}}sum[r] - pre\underline{\hspace{0.5em}}sum[i]$ 一定比 $pre\underline{\hspace{0.5em}}sum[i] - pre\underline{\hspace{0.5em}}sum[j]$ 更小且长度更小,此时 $pre\underline{\hspace{0.5em}}sum[j]$ 可以直接忽略掉。 -因此,我们可以使用单调队列来维护单调递增的前缀数组 $pre\underline{}sum$。其中存放了下标 $x:x_0, x_1, …$,满足 $pre\underline{}sum[x_0] < pre\underline{}sum[x_1] < …$ 单调递增。 +因此,我们可以使用单调队列来维护单调递增的前缀数组 $pre\underline{\hspace{0.5em}}sum$。其中存放了下标 $x:x_0, x_1, …$,满足 $pre\underline{\hspace{0.5em}}sum[x_0] < pre\underline{\hspace{0.5em}}sum[x_1] < …$ 单调递增。 1. 使用一重循环遍历位置 $i$,将当前位置 $i$ 存入倒掉队列中。 -2. 对于每一个位置 $i$,如果单调队列不为空,则可以判断其之前存入在单调队列中的 $pre\underline{}sum[j]$ 值,如果 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$,则更新答案,并将 $j$ 从队头位置弹出。直到不再满足 $pre\underline{}sum[i] - pre\underline{}sum[j] \ge k$ 时为止(即 $pre\underline{}sum[i] - pre\underline{}sum[j] < k$)。 -3. 如果队尾 $pre\underline{}sum[j] \ge pre\underline{}sum[i]$,那么说明以后无论如何都不会再考虑 $pre\underline{}sum[j]$ 了,则将其从队尾弹出。 +2. 对于每一个位置 $i$,如果单调队列不为空,则可以判断其之前存入在单调队列中的 $pre\underline{\hspace{0.5em}}sum[j]$ 值,如果 $pre\underline{\hspace{0.5em}}sum[i] - pre\underline{\hspace{0.5em}}sum[j] \ge k$,则更新答案,并将 $j$ 从队头位置弹出。直到不再满足 $pre\underline{\hspace{0.5em}}sum[i] - pre\underline{\hspace{0.5em}}sum[j] \ge k$ 时为止(即 $pre\underline{\hspace{0.5em}}sum[i] - pre\underline{\hspace{0.5em}}sum[j] < k$)。 +3. 如果队尾 $pre\underline{\hspace{0.5em}}sum[j] \ge pre\underline{\hspace{0.5em}}sum[i]$,那么说明以后无论如何都不会再考虑 $pre\underline{\hspace{0.5em}}sum[j]$ 了,则将其从队尾弹出。 4. 最后遍历完返回答案。 ### 思路 1:代码 diff --git "a/Solutions/0868. \344\272\214\350\277\233\345\210\266\351\227\264\350\267\235.md" "b/Solutions/0868. \344\272\214\350\277\233\345\210\266\351\227\264\350\267\235.md" index 9b76fb1c..defbc8ba 100644 --- "a/Solutions/0868. \344\272\214\350\277\233\345\210\266\351\227\264\350\267\235.md" +++ "b/Solutions/0868. \344\272\214\350\277\233\345\210\266\351\227\264\350\267\235.md" @@ -44,9 +44,9 @@ ### 思路 1:遍历 -1. 将正整数 $n$ 转为二进制字符串形式 $bin\underline{}n$。 +1. 将正整数 $n$ 转为二进制字符串形式 $bin\underline{\hspace{0.5em}}n$。 2. 使用变量 $pre$ 记录二进制字符串中上一个 $1$ 的位置,使用变量 $ans$ 存储两个相邻 $1$ 之间的最长距离。 -3. 遍历二进制字符串形式 $bin\underline{}n$ 的每一位,遇到 $1$ 时判断并更新两个相邻 $1$ 之间的最长距离。 +3. 遍历二进制字符串形式 $bin\underline{\hspace{0.5em}}n$ 的每一位,遇到 $1$ 时判断并更新两个相邻 $1$ 之间的最长距离。 4. 遍历完返回两个相邻 $1$ 之间的最长距离,即 $ans$。 ### 思路 1:代码 diff --git "a/Solutions/0892. \344\270\211\347\273\264\345\275\242\344\275\223\347\232\204\350\241\250\351\235\242\347\247\257.md" "b/Solutions/0892. \344\270\211\347\273\264\345\275\242\344\275\223\347\232\204\350\241\250\351\235\242\347\247\257.md" index a936587b..f2b18e2b 100644 --- "a/Solutions/0892. \344\270\211\347\273\264\345\275\242\344\275\223\347\232\204\350\241\250\351\235\242\347\247\257.md" +++ "b/Solutions/0892. \344\270\211\347\273\264\345\275\242\344\275\223\347\232\204\350\241\250\351\235\242\347\247\257.md" @@ -48,10 +48,10 @@ 而每一个正方体所贡献的表面积,可以通过枚举当前正方体前后左右相邻四个方向上的正方体的个数,从而通过判断计算得出。 - 如果当前位置 $(row, col)$ 存在正方体,则正方体在上下位置上起码贡献了 $2$ 的表面积。 -- 如果当前位置 $(row, col)$ 的相邻位置 $(new\underline{}row, new\underline{}col)$ 上不存在正方体,说明当前正方体在该方向为最外侧,则 $(row, col)$ 位置所贡献的表面积为当前位置上的正方体个数,即 $grid[row][col]$。 -- 如果当前位置 $(row, col)$ 的相邻位置 $(new\underline{}row, new\underline{}col)$ 上存在正方体: - - 如果 $grid[row][col] > grid[new\underline{}row][new\underline{}col]$,说明 $grid[row][col]$ 在该方向上底面一部分被 $grid[new\underline{}row][new\underline{}col]$ 遮盖了,则 $(row, col)$ 位置所贡献的表面积为 $grid[row][col] - grid[new_row][new_col]$。 - - 如果 $grid[row][col] \le grid[new\underline{}row][new\underline{}col]$,说明 $grid[row][col]$ 在该方向上完全被 $grid[new\underline{}row][new\underline{}col]$ 遮盖了,则 $(row, col)$ 位置所贡献的表面积为 $0$。 +- 如果当前位置 $(row, col)$ 的相邻位置 $(new\underline{\hspace{0.5em}}row, new\underline{\hspace{0.5em}}col)$ 上不存在正方体,说明当前正方体在该方向为最外侧,则 $(row, col)$ 位置所贡献的表面积为当前位置上的正方体个数,即 $grid[row][col]$。 +- 如果当前位置 $(row, col)$ 的相邻位置 $(new\underline{\hspace{0.5em}}row, new\underline{\hspace{0.5em}}col)$ 上存在正方体: + - 如果 $grid[row][col] > grid[new\underline{\hspace{0.5em}}row][new\underline{\hspace{0.5em}}col]$,说明 $grid[row][col]$ 在该方向上底面一部分被 $grid[new\underline{\hspace{0.5em}}row][new\underline{\hspace{0.5em}}col]$ 遮盖了,则 $(row, col)$ 位置所贡献的表面积为 $grid[row][col] - grid[new_row][new_col]$。 + - 如果 $grid[row][col] \le grid[new\underline{\hspace{0.5em}}row][new\underline{\hspace{0.5em}}col]$,说明 $grid[row][col]$ 在该方向上完全被 $grid[new\underline{\hspace{0.5em}}row][new\underline{\hspace{0.5em}}col]$ 遮盖了,则 $(row, col)$ 位置所贡献的表面积为 $0$。 ### 思路 1:代码 diff --git "a/Solutions/0900. RLE \350\277\255\344\273\243\345\231\250.md" "b/Solutions/0900. RLE \350\277\255\344\273\243\345\231\250.md" index d806bc71..5b0aa72f 100644 --- "a/Solutions/0900. RLE \350\277\255\344\273\243\345\231\250.md" +++ "b/Solutions/0900. RLE \350\277\255\344\273\243\345\231\250.md" @@ -56,12 +56,12 @@ rLEIterator.next(2); // 耗去序列的 2 个项,返回 -1。 这是由于第 1. 初始化时: 1. 保存数组 $encoding$ 作为成员变量。 2. 保存当前位置 $index$,表示当前迭代器指向元素 $encoding[index + 1]$。初始化赋值为 $0$。 - 3. 保存当前指向元素 $encoding[index + 1]$ 已经被删除的元素个数 $d\underline{}cnt$。初始化赋值为 $0$。 + 3. 保存当前指向元素 $encoding[index + 1]$ 已经被删除的元素个数 $d\underline{\hspace{0.5em}}cnt$。初始化赋值为 $0$。 2. 调用 `next(n)` 时: 1. 对于当前元素,先判断当前位置是否超出 $encoding$ 范围,超过则直接返回 $-1$。 - 2. 如果未超过,再判断当前元素剩余个数 $encoding[index] - d\underline{}cnt$ 是否小于 $n$ 个。 + 2. 如果未超过,再判断当前元素剩余个数 $encoding[index] - d\underline{\hspace{0.5em}}cnt$ 是否小于 $n$ 个。 1. 如果小于 $n$ 个,则删除当前元素剩余所有个数,并指向下一位置继续删除剩余元素。 - 2. 如果等于大于等于 $n$ 个,则令当前指向元素 $encoding[index + 1]$ 已经被删除的元素个数 $d\underline{}cnt$ 加上 $n$。 + 2. 如果等于大于等于 $n$ 个,则令当前指向元素 $encoding[index + 1]$ 已经被删除的元素个数 $d\underline{\hspace{0.5em}}cnt$ 加上 $n$。 ### 思路 1:代码 diff --git "a/Solutions/0912. \346\216\222\345\272\217\346\225\260\347\273\204.md" "b/Solutions/0912. \346\216\222\345\272\217\346\225\260\347\273\204.md" index afb94090..c8840726 100644 --- "a/Solutions/0912. \346\216\222\345\272\217\346\225\260\347\273\204.md" +++ "b/Solutions/0912. \346\216\222\345\272\217\346\225\260\347\273\204.md" @@ -97,12 +97,12 @@ class Solution: 1. 初始状态下,无已排序区间,未排序区间为 $[0, n - 1]$。 2. 第 $1$ 趟选择: - 1. 遍历未排序区间 $[0, n - 1]$,使用变量 $min\underline{}i$ 记录区间中值最小的元素位置。 - 2. 将 $min\underline{}i$ 与下标为 $0$ 处的元素交换位置。如果下标为 $0$ 处元素就是值最小的元素位置,则不用交换。 + 1. 遍历未排序区间 $[0, n - 1]$,使用变量 $min\underline{\hspace{0.5em}}i$ 记录区间中值最小的元素位置。 + 2. 将 $min\underline{\hspace{0.5em}}i$ 与下标为 $0$ 处的元素交换位置。如果下标为 $0$ 处元素就是值最小的元素位置,则不用交换。 3. 此时,$[0, 0]$ 为已排序区间,$[1, n - 1]$(总共 $n - 1$ 个元素)为未排序区间。 3. 第 $2$ 趟选择: - 1. 遍历未排序区间 $[1, n - 1]$,使用变量 $min\underline{}i$ 记录区间中值最小的元素位置。 - 2. 将 $min\underline{}i$ 与下标为 $1$ 处的元素交换位置。如果下标为 $1$ 处元素就是值最小的元素位置,则不用交换。 + 1. 遍历未排序区间 $[1, n - 1]$,使用变量 $min\underline{\hspace{0.5em}}i$ 记录区间中值最小的元素位置。 + 2. 将 $min\underline{\hspace{0.5em}}i$ 与下标为 $1$ 处的元素交换位置。如果下标为 $1$ 处元素就是值最小的元素位置,则不用交换。 3. 此时,$[0, 1]$ 为已排序区间,$[2, n - 1]$(总共 $n - 2$ 个元素)为未排序区间。 4. 依次类推,对剩余未排序区间重复上述选择过程,直到所有元素都划分到已排序区间,排序结束。 @@ -231,12 +231,12 @@ class Solution: 假设数组的元素个数为 $n$ 个,则归并排序的算法步骤如下: 1. **分解过程**:先递归地将当前数组平均分成两半,直到子数组长度为 $1$。 - 1. 找到数组中心位置 $mid$,从中心位置将数组分成左右两个子数组 $left\underline{}nums$、$right\underline{}nums$。 - 2. 对左右两个子数组 $left\underline{}nums$、$right\underline{}nums$ 分别进行递归分解。 + 1. 找到数组中心位置 $mid$,从中心位置将数组分成左右两个子数组 $left\underline{\hspace{0.5em}}nums$、$right\underline{\hspace{0.5em}}nums$。 + 2. 对左右两个子数组 $left\underline{\hspace{0.5em}}nums$、$right\underline{\hspace{0.5em}}nums$ 分别进行递归分解。 3. 最终将数组分解为 $n$ 个长度均为 $1$ 的有序子数组。 2. **归并过程**:从长度为 $1$ 的有序子数组开始,依次将有序数组两两合并,直到合并成一个长度为 $n$ 的有序数组。 1. 使用数组变量 $nums$ 存放合并后的有序数组。 - 2. 使用两个指针 $left\underline{}i$、$right\underline{}i$ 分别指向两个有序子数组 $left\underline{}nums$、$right\underline{}nums$ 的开始位置。 + 2. 使用两个指针 $left\underline{\hspace{0.5em}}i$、$right\underline{\hspace{0.5em}}i$ 分别指向两个有序子数组 $left\underline{\hspace{0.5em}}nums$、$right\underline{\hspace{0.5em}}nums$ 的开始位置。 3. 比较两个指针指向的元素,将两个有序子数组中较小元素依次存入到结果数组 $nums$ 中,并将指针移动到下一位置。 4. 重复步骤 $3$,直到某一指针到达子数组末尾。 5. 将另一个子数组中的剩余元素存入到结果数组 $nums$ 中。 @@ -440,15 +440,15 @@ class Solution: 假设数组的元素个数为 $n$ 个,则计数排序的算法步骤如下: -1. **计算排序范围**:遍历数组,找出待排序序列中最大值元素 $nums\underline{}max$ 和最小值元素 $nums\underline{}min$,计算出排序范围为 $nums\underline{}max - nums\underline{}min + 1$。 +1. **计算排序范围**:遍历数组,找出待排序序列中最大值元素 $nums\underline{\hspace{0.5em}}max$ 和最小值元素 $nums\underline{\hspace{0.5em}}min$,计算出排序范围为 $nums\underline{\hspace{0.5em}}max - nums\underline{\hspace{0.5em}}min + 1$。 2. **定义计数数组**:定义一个大小为排序范围的计数数组 $counts$,用于统计每个元素的出现次数。其中: - 1. 数组的索引值 $num - nums\underline{}min$ 表示元素的值为 $num$。 - 2. 数组的值 $counts[num - nums\underline{}min]$ 表示元素 $num$ 的出现次数。 + 1. 数组的索引值 $num - nums\underline{\hspace{0.5em}}min$ 表示元素的值为 $num$。 + 2. 数组的值 $counts[num - nums\underline{\hspace{0.5em}}min]$ 表示元素 $num$ 的出现次数。 -3. **对数组元素进行计数统计**:遍历待排序数组 $nums$,对每个元素在计数数组中进行计数,即将待排序数组中「每个元素值减去最小值」作为索引,将「对计数数组中的值」加 $1$,即令 $counts[num - nums\underline{}min]$ 加 $1$。 -4. **生成累积计数数组**:从 $counts$ 中的第 $1$ 个元素开始,每一项累家前一项和。此时 $counts[num - nums\underline{}min]$ 表示值为 $num$ 的元素在排序数组中最后一次出现的位置。 +3. **对数组元素进行计数统计**:遍历待排序数组 $nums$,对每个元素在计数数组中进行计数,即将待排序数组中「每个元素值减去最小值」作为索引,将「对计数数组中的值」加 $1$,即令 $counts[num - nums\underline{\hspace{0.5em}}min]$ 加 $1$。 +4. **生成累积计数数组**:从 $counts$ 中的第 $1$ 个元素开始,每一项累家前一项和。此时 $counts[num - nums\underline{\hspace{0.5em}}min]$ 表示值为 $num$ 的元素在排序数组中最后一次出现的位置。 5. **逆序填充目标数组**:逆序遍历数组 $nums$,将每个元素 $num$ 填入正确位置。 - 6. 将其填充到结果数组 $res$ 的索引 $counts[num - nums\underline{}min]$ 处。 + 6. 将其填充到结果数组 $res$ 的索引 $counts[num - nums\underline{\hspace{0.5em}}min]$ 处。 7. 放入后,令累积计数数组中对应索引减 $1$,从而得到下个元素 $num$ 的放置位置。 ### 思路 8:代码 diff --git "a/Solutions/0925. \351\225\277\346\214\211\351\224\256\345\205\245.md" "b/Solutions/0925. \351\225\277\346\214\211\351\224\256\345\205\245.md" index e7f05d7d..27f8eaf0 100644 --- "a/Solutions/0925. \351\225\277\346\214\211\351\224\256\345\205\245.md" +++ "b/Solutions/0925. \351\225\277\346\214\211\351\224\256\345\205\245.md" @@ -44,14 +44,14 @@ 这道题目的意思是在 $typed$ 里边匹配 $name$,同时要考虑字符重复问题,以及不匹配的情况。可以使用分离双指针来做。具体做法如下: -1. 使用两个指针 $left\underline{}1$、$left\underline{}2$,$left\underline{}1$ 指向字符串 $name$ 开始位置,$left\underline{}2$ 指向字符串 $type$ 开始位置。 -2. 如果 $name[left\underline{}1] == name[left\underline{}2]$,则将 $left\underline{}1$、$left\underline{}2$ 同时右移。 -3. 如果 $nmae[left\underline{}1] \ne name[left\underline{}2]$,则: - 1. 如果 $typed[left\underline{}2]$ 和前一个位置元素 $typed[left\underline{}2 - 1]$ 相等,则说明出现了重复元素,将 $left\underline{}2$ 右移,过滤重复元素。 - 2. 如果 $typed[left\underline{}2]$ 和前一个位置元素 $typed[left\underline{}2 - 1]$ 不等,则说明出现了多余元素,不匹配。直接返回 `False` 即可。 - -4. 当 $left\underline{}1 == len(name)$ 或者 $left\underline{}2 == len(typed)$ 时跳出循环。然后过滤掉 $typed$ 末尾的重复元素。 -5. 最后判断,如果 $left\underline{}1 == len(name)$ 并且 $left\underline{}2 == len(typed)$,则说明匹配,返回 `True`,否则返回 `False`。 +1. 使用两个指针 $left\underline{\hspace{0.5em}}1$、$left\underline{\hspace{0.5em}}2$,$left\underline{\hspace{0.5em}}1$ 指向字符串 $name$ 开始位置,$left\underline{\hspace{0.5em}}2$ 指向字符串 $type$ 开始位置。 +2. 如果 $name[left\underline{\hspace{0.5em}}1] == name[left\underline{\hspace{0.5em}}2]$,则将 $left\underline{\hspace{0.5em}}1$、$left\underline{\hspace{0.5em}}2$ 同时右移。 +3. 如果 $nmae[left\underline{\hspace{0.5em}}1] \ne name[left\underline{\hspace{0.5em}}2]$,则: + 1. 如果 $typed[left\underline{\hspace{0.5em}}2]$ 和前一个位置元素 $typed[left\underline{\hspace{0.5em}}2 - 1]$ 相等,则说明出现了重复元素,将 $left\underline{\hspace{0.5em}}2$ 右移,过滤重复元素。 + 2. 如果 $typed[left\underline{\hspace{0.5em}}2]$ 和前一个位置元素 $typed[left\underline{\hspace{0.5em}}2 - 1]$ 不等,则说明出现了多余元素,不匹配。直接返回 `False` 即可。 + +4. 当 $left\underline{\hspace{0.5em}}1 == len(name)$ 或者 $left\underline{\hspace{0.5em}}2 == len(typed)$ 时跳出循环。然后过滤掉 $typed$ 末尾的重复元素。 +5. 最后判断,如果 $left\underline{\hspace{0.5em}}1 == len(name)$ 并且 $left\underline{\hspace{0.5em}}2 == len(typed)$,则说明匹配,返回 `True`,否则返回 `False`。 ### 思路 1:代码 diff --git "a/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" "b/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" index c28e4509..fa49023c 100644 --- "a/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" +++ "b/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" @@ -55,21 +55,21 @@ 同时如果我们知道了前面 $k - 1$ 个元素的翻转次数就可以直接修改 $nums[i]$ 了。 -我们使用 $flip\underline{}count$ 记录第 $i$ 个元素之前 $k - 1$ 个位置总共被反转了多少次,或者 $flip\underline{}count$ 是大小为 $k - 1$ 的滑动窗口。 +我们使用 $flip\underline{\hspace{0.5em}}count$ 记录第 $i$ 个元素之前 $k - 1$ 个位置总共被反转了多少次,或者 $flip\underline{\hspace{0.5em}}count$ 是大小为 $k - 1$ 的滑动窗口。 - 如果前面第 $k - 1$ 个元素翻转了奇数次,则如果 $nums[i] == 1$,则 $nums[i]$ 也被翻转成了 $0$,需要再翻转 $1$ 次。 - 如果前面第 $k - 1$ 个元素翻转了偶数次,则如果 $nums[i] == 0$,则 $nums[i]$ 也被翻转成为了 $0$,需要再翻转 $1$ 次。 这两句写成判断语句可以写为:`if (flip_count + nums[i]) % 2 == 0:`。 -因为 $0 <= nums[i] <= 1$,所以我们可以用 $0$ 和 $1$ 以外的数,比如 $2$ 来标记第 $i$ 个元素发生了翻转,即 `nums[i] = 2`。这样在遍历到第 $i$ 个元素时,如果有 $nums[i - k] == 2$,则说明 $nums[i - k]$ 发生了翻转。同时根据 $flip\underline{}count$ 和 $nums[i]$ 来判断第 $i$ 位是否需要进行翻转。 +因为 $0 <= nums[i] <= 1$,所以我们可以用 $0$ 和 $1$ 以外的数,比如 $2$ 来标记第 $i$ 个元素发生了翻转,即 `nums[i] = 2`。这样在遍历到第 $i$ 个元素时,如果有 $nums[i - k] == 2$,则说明 $nums[i - k]$ 发生了翻转。同时根据 $flip\underline{\hspace{0.5em}}count$ 和 $nums[i]$ 来判断第 $i$ 位是否需要进行翻转。 整个算法的具体步骤如下: -- 使用 $res$ 记录最小翻转次数。使用 $flip\underline{}count$ 记录窗口内前 $k - 1 $ 位元素的翻转次数。 +- 使用 $res$ 记录最小翻转次数。使用 $flip\underline{\hspace{0.5em}}count$ 记录窗口内前 $k - 1 $ 位元素的翻转次数。 - 遍历数组 $nums$,对于第 $i$ 位元素: - 如果 $i - k >= 0$,并且 $nums[i - k] == 2$,需要缩小窗口,将翻转次数减一。(此时窗口范围为 $[i - k + 1, i - 1]$)。 - - 如果 $(flip\underline{}count + nums[i]) \mod 2 == 0$,则说明 $nums[i]$ 还需要再翻转一次,将 $nums[i]$ 标记为 $2$,同时更新窗口内翻转次数 $flip\underline{}count$ 和答案最小翻转次数 $ans$。 + - 如果 $(flip\underline{\hspace{0.5em}}count + nums[i]) \mod 2 == 0$,则说明 $nums[i]$ 还需要再翻转一次,将 $nums[i]$ 标记为 $2$,同时更新窗口内翻转次数 $flip\underline{\hspace{0.5em}}count$ 和答案最小翻转次数 $ans$。 - 遍历完之后,返回 $res$。 ### 思路 1:代码 diff --git "a/Solutions/0999. \345\217\257\344\273\245\350\242\253\344\270\200\346\255\245\346\215\225\350\216\267\347\232\204\346\243\213\345\255\220\346\225\260.md" "b/Solutions/0999. \345\217\257\344\273\245\350\242\253\344\270\200\346\255\245\346\215\225\350\216\267\347\232\204\346\243\213\345\255\220\346\225\260.md" index 5394446c..465dc0ba 100644 --- "a/Solutions/0999. \345\217\257\344\273\245\350\242\253\344\270\200\346\255\245\346\215\225\350\216\267\347\232\204\346\243\213\345\255\220\346\225\260.md" +++ "b/Solutions/0999. \345\217\257\344\273\245\350\242\253\344\270\200\346\255\245\346\215\225\350\216\267\347\232\204\346\243\213\345\255\220\346\225\260.md" @@ -51,7 +51,7 @@ ### 思路 1:模拟 -1. 双重循环遍历确定白色车的位置 $(pos\underline{}i,poss\underline{}j)$。 +1. 双重循环遍历确定白色车的位置 $(pos\underline{\hspace{0.5em}}i,poss\underline{\hspace{0.5em}}j)$。 2. 让车向上、下、左、右四个方向进行移动,直到超出边界 / 碰到白色象 / 碰到卒为止。使用计数器 $cnt$ 记录捕获的卒的数量。 3. 返回答案 $cnt$。 diff --git "a/Solutions/1004. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 III.md" "b/Solutions/1004. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 III.md" index 26bde514..39bb3c93 100644 --- "a/Solutions/1004. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 III.md" +++ "b/Solutions/1004. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 III.md" @@ -43,10 +43,10 @@ ### 思路 1:滑动窗口(不定长度) -1. 使用两个指针 $left$、$right$ 指向数组开始位置。使用 $max\underline{}count$ 来维护仅包含 $1$ 的最长连续子数组的长度。 +1. 使用两个指针 $left$、$right$ 指向数组开始位置。使用 $max\underline{\hspace{0.5em}}count$ 来维护仅包含 $1$ 的最长连续子数组的长度。 2. 不断右移 $right$ 指针,扩大滑动窗口范围,并统计窗口内 $0$ 元素的个数。 -3. 直到 $0$ 元素的个数超过 $k$ 时将 $left$ 右移,缩小滑动窗口范围,并减小 $0$ 元素的个数,同时维护 $max\underline{}count$。 -4. 最后输出最长连续子数组的长度 $max\underline{}count$。 +3. 直到 $0$ 元素的个数超过 $k$ 时将 $left$ 右移,缩小滑动窗口范围,并减小 $0$ 元素的个数,同时维护 $max\underline{\hspace{0.5em}}count$。 +4. 最后输出最长连续子数组的长度 $max\underline{\hspace{0.5em}}count$。 ### 思路 1:代码 diff --git "a/Solutions/1049. \346\234\200\345\220\216\344\270\200\345\235\227\347\237\263\345\244\264\347\232\204\351\207\215\351\207\217 II.md" "b/Solutions/1049. \346\234\200\345\220\216\344\270\200\345\235\227\347\237\263\345\244\264\347\232\204\351\207\215\351\207\217 II.md" index 1e8b780d..3eb5250f 100644 --- "a/Solutions/1049. \346\234\200\345\220\216\344\270\200\345\235\227\347\237\263\345\244\264\347\232\204\351\207\215\351\207\217 II.md" +++ "b/Solutions/1049. \346\234\200\345\220\216\344\270\200\345\235\227\347\237\263\345\244\264\347\232\204\351\207\215\351\207\217 II.md" @@ -54,8 +54,8 @@ 进一步可以变为:「0-1 背包问题」。 -1. 假设石头总重量和为 $sum$,将一堆石头放进载重上限为 $sum / 2$ 的背包中,获得的最大价值为 $max\underline{}weight$(即其中一堆石子的重量)。另一堆石子的重量为 $sum - max\underline{}weight$。 -2. 则两者的差值为 $sum - 2 \times max\underline{}weight$,即为答案。 +1. 假设石头总重量和为 $sum$,将一堆石头放进载重上限为 $sum / 2$ 的背包中,获得的最大价值为 $max\underline{\hspace{0.5em}}weight$(即其中一堆石子的重量)。另一堆石子的重量为 $sum - max\underline{\hspace{0.5em}}weight$。 +2. 则两者的差值为 $sum - 2 \times max\underline{\hspace{0.5em}}weight$,即为答案。 ###### 1. 划分阶段 diff --git "a/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" "b/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" index 1e1a2072..529c7352 100644 --- "a/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" +++ "b/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" @@ -50,9 +50,9 @@ 固定长度的滑动窗口题目。我们可以维护一个窗口大小为 $minutes$ 的滑动窗口。使用 $window_count$ 记录当前窗口内生气的顾客人数。然后滑动求出窗口中最大顾客数,然后累加上老板未生气时的顾客数,就是答案。具体做法如下: -1. $ans$ 用来维护答案数目。$window\underline{}count$ 用来维护窗口中生气的顾客人数。 +1. $ans$ 用来维护答案数目。$window\underline{\hspace{0.5em}}count$ 用来维护窗口中生气的顾客人数。 2. $left$ 、$right$ 都指向序列的第一个元素,即:`left = 0`,`right = 0`。 -3. 如果书店老板生气,则将这一分钟的顾客数量加入到 $window\underline{}count$ 中,然后向右移动 $right$。 +3. 如果书店老板生气,则将这一分钟的顾客数量加入到 $window\underline{\hspace{0.5em}}count$ 中,然后向右移动 $right$。 4. 当窗口元素个数大于 $minutes$ 时,即:$right - left + 1 > count$ 时,如果最左侧边界老板处于生气状态,则向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为小于 $minutes$。 5. 重复 $3 \sim 4$ 步,直到 $right$ 到达数组末尾。 6. 然后累加上老板未生气时的顾客数,最后输出答案。 diff --git "a/Solutions/1103. \345\210\206\347\263\226\346\236\234 II.md" "b/Solutions/1103. \345\210\206\347\263\226\346\236\234 II.md" index 37f08e01..dd879a20 100644 --- "a/Solutions/1103. \345\210\206\347\263\226\346\236\234 II.md" +++ "b/Solutions/1103. \345\210\206\347\263\226\346\236\234 II.md" @@ -9,7 +9,7 @@ ## 题目大意 -**描述**:给定一个整数 $candies$,代表糖果的数量。再给定一个整数 $num\underline{}people$,代表小朋友的数量。 +**描述**:给定一个整数 $candies$,代表糖果的数量。再给定一个整数 $num\underline{\hspace{0.5em}}people$,代表小朋友的数量。 现在开始分糖果,给第 $1$ 个小朋友分 $1$ 颗糖果,第 $2$ 个小朋友分 $2$ 颗糖果,以此类推,直到最后一个小朋友分 $n$ 颗糖果。 @@ -19,12 +19,12 @@ > 注意:如果我们手中剩下的糖果数不够(小于等于前一次发的糖果数),则将剩下的糖果全部发给当前的小朋友。 -**要求**:返回一个长度为 $num\underline{}people$、元素之和为 $candies$ 的数组,以表示糖果的最终分发情况(即 $ans[i]$ 表示第 $i$ 个小朋友分到的糖果数)。 +**要求**:返回一个长度为 $num\underline{\hspace{0.5em}}people$、元素之和为 $candies$ 的数组,以表示糖果的最终分发情况(即 $ans[i]$ 表示第 $i$ 个小朋友分到的糖果数)。 **说明**: - $1 \le candies \le 10^9$。 -- $1 \le num\underline{}people \le 1000$。 +- $1 \le num\underline{\hspace{0.5em}}people \le 1000$。 **示例**: diff --git "a/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" "b/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" index de2d2f16..af57e3fe 100644 --- "a/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" +++ "b/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" @@ -11,7 +11,7 @@ **描述**:给定二叉树的根节点 $root$,树上每个节点都有一个不同的值。 -如果节点值在 $to\underline{}delete$ 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。 +如果节点值在 $to\underline{\hspace{0.5em}}delete$ 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。 **要求**:返回森林中的每棵树。你可以按任意顺序组织答案。 @@ -19,8 +19,8 @@ - 树中的节点数最大为 $1000$。 - 每个节点都有一个介于 $1$ 到 $1000$ 之间的值,且各不相同。 -- $to\underline{}delete.length \le 1000$。 -- $to\underline{}delete$ 包含一些从 $1$ 到 $1000$、各不相同的值。 +- $to\underline{\hspace{0.5em}}delete.length \le 1000$。 +- $to\underline{\hspace{0.5em}}delete$ 包含一些从 $1$ 到 $1000$、各不相同的值。 **示例**: @@ -44,7 +44,7 @@ ### 思路 1:深度优先搜索 -将待删除节点数组 $to\underline{}delete$ 转为集合 $deletes$,则每次能以 $O(1)$ 的时间复杂度判断节点值是否在待删除节点数组中。 +将待删除节点数组 $to\underline{\hspace{0.5em}}delete$ 转为集合 $deletes$,则每次能以 $O(1)$ 的时间复杂度判断节点值是否在待删除节点数组中。 如果当前节点值在待删除节点数组中,则删除当前节点后,我们还需要判断其左右子节点是否也在待删除节点数组中。 diff --git "a/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" "b/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" index df34446e..f2016522 100644 --- "a/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" +++ "b/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" @@ -50,12 +50,12 @@ 求最少交换次数,也就是求滑动窗口中最少的 $0$ 的个数。具体做法如下: -1. 统计 $1$ 的个数,并设置为窗口长度 $window\underline{}size$。使用 $window\underline{}count$ 维护窗口中 $0$ 的个数。使用 $ans$ 维护窗口中最少的 $0$ 的个数,也可以叫做最少交换次数。 -2. 如果 $window\underline{}size$ 为 $0$,则说明不用交换,直接返回 $0$。 +1. 统计 $1$ 的个数,并设置为窗口长度 $window\underline{\hspace{0.5em}}size$。使用 $window\underline{\hspace{0.5em}}count$ 维护窗口中 $0$ 的个数。使用 $ans$ 维护窗口中最少的 $0$ 的个数,也可以叫做最少交换次数。 +2. 如果 $window\underline{\hspace{0.5em}}size$ 为 $0$,则说明不用交换,直接返回 $0$。 3. 使用两个指针 $left$、$right$。$left$、$right$ 都指向数组的第一个元素,即:`left = 0`,`right = 0`。 4. 如果 $data[right] == 0$,则更新窗口中 $0$ 的个数,即 `window_count += 1`。然后向右移动 $right$。 -5. 当窗口元素个数为 $window\underline{}size$ 时,即:$right - left + 1 \ge window\underline{}size$ 时,更新窗口中最少的 $0$ 的个数。 -6. 然后如果左侧 $data[left] == 0$,则更新窗口中 $0$ 的个数,即 `window_count -= 1`。然后向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $window\underline{}size$。 +5. 当窗口元素个数为 $window\underline{\hspace{0.5em}}size$ 时,即:$right - left + 1 \ge window\underline{\hspace{0.5em}}size$ 时,更新窗口中最少的 $0$ 的个数。 +6. 然后如果左侧 $data[left] == 0$,则更新窗口中 $0$ 的个数,即 `window_count -= 1`。然后向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $window\underline{\hspace{0.5em}}size$。 7. 重复 4 ~ 6 步,直到 $right$ 到达数组末尾。返回答案 $ans$。 ### 思路 1:代码 diff --git "a/Solutions/1161. \346\234\200\345\244\247\345\261\202\345\206\205\345\205\203\347\264\240\345\222\214.md" "b/Solutions/1161. \346\234\200\345\244\247\345\261\202\345\206\205\345\205\203\347\264\240\345\222\214.md" index d838bfc3..1500f6b3 100644 --- "a/Solutions/1161. \346\234\200\345\244\247\345\261\202\345\206\205\345\205\203\347\264\240\345\222\214.md" +++ "b/Solutions/1161. \346\234\200\345\244\247\345\261\202\345\206\205\345\205\203\347\264\240\345\222\214.md" @@ -46,8 +46,8 @@ ### 思路 1:二叉树的层序遍历 1. 利用广度优先搜索,在二叉树的层序遍历的基础上,统计每一层节点和,并存入数组 $levels$ 中。 -2. 遍历 $levels$ 数组,从 $levels$ 数组中找到最大层和 $max\underline{}sum$。 -3. 再次遍历 $levels$ 数组,找出等于最大层和 $max\underline{}sum$ 的那一层,并返回该层序号。 +2. 遍历 $levels$ 数组,从 $levels$ 数组中找到最大层和 $max\underline{\hspace{0.5em}}sum$。 +3. 再次遍历 $levels$ 数组,找出等于最大层和 $max\underline{\hspace{0.5em}}sum$ 的那一层,并返回该层序号。 ### 思路 1:代码 diff --git "a/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" "b/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" index c1360d71..f6e0a309 100644 --- "a/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" +++ "b/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" @@ -49,7 +49,7 @@ 固定长度为 $k$ 的滑动窗口题目。具体做法如下: -1. $score$ 用来维护得分情况,初始值为 $0$。$window\underline{}sum$ 用来维护窗口中卡路里总量。 +1. $score$ 用来维护得分情况,初始值为 $0$。$window\underline{\hspace{0.5em}}sum$ 用来维护窗口中卡路里总量。 2. $left$ 、$right$ 都指向数组的第一个元素,即:`left = 0`,`right = 0`。 3. 向右移动 $right$,先将 $k$ 个元素填入窗口中。 4. 当窗口元素个数为 $k$ 时,即:$right - left + 1 \ge k$ 时,计算窗口内的卡路里总量,并判断和 $upper$、$lower$ 的关系。同时维护得分情况。 diff --git "a/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" "b/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" index 3868494d..89280181 100644 --- "a/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" +++ "b/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" @@ -41,14 +41,14 @@ ### 思路 1:滑动窗口 -维护一个滑动窗口 $window\underline{}sum$ 用于记录窗口内的开销总和,保证窗口内的开销总和小于等于 $maxCost$。使用 $ans$ 记录可以转化的最大长度。具体做法如下: +维护一个滑动窗口 $window\underline{\hspace{0.5em}}sum$ 用于记录窗口内的开销总和,保证窗口内的开销总和小于等于 $maxCost$。使用 $ans$ 记录可以转化的最大长度。具体做法如下: 使用两个指针 $left$、$right$。分别指向滑动窗口的左右边界,保证窗口内所有元素转化开销总和小于等于 $maxCost$。 - 先统计出 $s$ 中第 $i$ 个字符变为 $t$ 的第 $i$ 个字符的开销,用数组 $costs$ 保存。 - 一开始,$left$、$right$ 都指向 $0$。 - 将最右侧字符的转变开销填入窗口中,向右移动 $right$。 -- 直到窗口内开销总和 $window\underline{}sum$ 大于 $maxCost$。则不断右移 $left$,缩小窗口长度。直到 $window\underline{}sum \le maxCost$ 时,更新可以转换的最大长度 $ans$。 +- 直到窗口内开销总和 $window\underline{\hspace{0.5em}}sum$ 大于 $maxCost$。则不断右移 $left$,缩小窗口长度。直到 $window\underline{\hspace{0.5em}}sum \le maxCost$ 时,更新可以转换的最大长度 $ans$。 - 向右移动 $right$,直到 $right \ge len(s)$ 为止。 - 输出答案 $ans$。 diff --git "a/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" "b/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" index 94cd6e0a..3ebc139a 100644 --- "a/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" +++ "b/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" @@ -49,12 +49,12 @@ 题目保证了同一个人的空闲时间不会出现交叠。那么可以先直接对两个客户的空间时间表按照开始时间从小到大排序。然后使用分离双指针来遍历两个数组,求出重合部分,并判断重合区间是否大于等于 $duration$。具体做法如下: 1. 先对两个数组排序。 -2. 然后使用两个指针 $left\underline{}1$、$left\underline{}2$。$left\underline{}1$ 指向第一个数组开始位置,$left\underline{}2$ 指向第二个数组开始位置。 +2. 然后使用两个指针 $left\underline{\hspace{0.5em}}1$、$left\underline{\hspace{0.5em}}2$。$left\underline{\hspace{0.5em}}1$ 指向第一个数组开始位置,$left\underline{\hspace{0.5em}}2$ 指向第二个数组开始位置。 3. 遍历两个数组。计算当前两个空闲时间区间的重叠范围。 1. 如果重叠范围大于等于 $duration$,直接返回当前重叠范围开始时间和会议结束时间,即 $[start, start + duration]$,$start$ 为重叠范围开始时间。 - 2. 如果第一个客户的空闲结束时间小于第二个客户的空闲结束时间,则令 $left\underline{}1$ 右移,即 `left_1 += 1`,继续比较重叠范围。 - 3. 如果第一个客户的空闲结束时间大于等于第二个客户的空闲结束时间,则令 $left\underline{}2$ 右移,即 `left_2 += 1`,继续比较重叠范围。 -4. 直到 $left\underline{}1 == len(slots1)$ 或者 $left\underline{}2 == len(slots2)$ 时跳出循环,返回空数组 $[]$。 + 2. 如果第一个客户的空闲结束时间小于第二个客户的空闲结束时间,则令 $left\underline{\hspace{0.5em}}1$ 右移,即 `left_1 += 1`,继续比较重叠范围。 + 3. 如果第一个客户的空闲结束时间大于等于第二个客户的空闲结束时间,则令 $left\underline{\hspace{0.5em}}2$ 右移,即 `left_2 += 1`,继续比较重叠范围。 +4. 直到 $left\underline{\hspace{0.5em}}1 == len(slots1)$ 或者 $left\underline{\hspace{0.5em}}2 == len(slots2)$ 时跳出循环,返回空数组 $[]$。 ### 思路 1:代码 diff --git "a/Solutions/1245. \346\240\221\347\232\204\347\233\264\345\276\204.md" "b/Solutions/1245. \346\240\221\347\232\204\347\233\264\345\276\204.md" index ac9938c1..bdf8ded4 100644 --- "a/Solutions/1245. \346\240\221\347\232\204\347\233\264\345\276\204.md" +++ "b/Solutions/1245. \346\240\221\347\232\204\347\233\264\345\276\204.md" @@ -55,11 +55,11 @@ 即:**最长路径长度 = max(某子树中的最长路径长度 + 另一子树中的最长路径长度 + 1,某个子树中的最长路径长度)**。 -对此,我们可以使用深度优先搜索递归遍历 $u$ 的所有相邻节点 $v$,并在递归遍历的同时,维护一个全局最大路径和变量 $ans$,以及当前节点 $u$ 的最大路径长度变量 $u\underline{}len$。 +对此,我们可以使用深度优先搜索递归遍历 $u$ 的所有相邻节点 $v$,并在递归遍历的同时,维护一个全局最大路径和变量 $ans$,以及当前节点 $u$ 的最大路径长度变量 $u\underline{\hspace{0.5em}}len$。 -1. 先计算出从相邻节点 $v$ 出发的最长路径长度 $v\underline{}len$。 -2. 更新维护全局最长路径长度为 $self.ans = max(self.ans, \quad u\underline{}len + v\underline{}len + 1)$。 -3. 更新维护当前节点 $u$ 的最长路径长度为 $u\underline{}len = max(u\underline{}len, \quad v\underline{}len + 1)$。 +1. 先计算出从相邻节点 $v$ 出发的最长路径长度 $v\underline{\hspace{0.5em}}len$。 +2. 更新维护全局最长路径长度为 $self.ans = max(self.ans, \quad u\underline{\hspace{0.5em}}len + v\underline{\hspace{0.5em}}len + 1)$。 +3. 更新维护当前节点 $u$ 的最长路径长度为 $u\underline{\hspace{0.5em}}len = max(u\underline{\hspace{0.5em}}len, \quad v\underline{\hspace{0.5em}}len + 1)$。 > 注意:在遍历邻接节点的过程中,为了避免造成重复遍历,我们在使用深度优先搜索时,应过滤掉父节点。 diff --git "a/Solutions/1261. \345\234\250\345\217\227\346\261\241\346\237\223\347\232\204\344\272\214\345\217\211\346\240\221\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240.md" "b/Solutions/1261. \345\234\250\345\217\227\346\261\241\346\237\223\347\232\204\344\272\214\345\217\211\346\240\221\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240.md" index fa6b37a9..646a109b 100644 --- "a/Solutions/1261. \345\234\250\345\217\227\346\261\241\346\237\223\347\232\204\344\272\214\345\217\211\346\240\221\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240.md" +++ "b/Solutions/1261. \345\234\250\345\217\227\346\261\241\346\237\223\347\232\204\344\272\214\345\217\211\346\240\221\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240.md" @@ -71,7 +71,7 @@ findElements.find(5); // return False 1. 从根节点开始进行还原。 2. 然后使用深度优先搜索的方式,依次递归还原左右两个孩子节点。 -3. 递归还原的同时,将还原之后的所有节点值,存入集合 $val\underline{}set$ 中。 +3. 递归还原的同时,将还原之后的所有节点值,存入集合 $val\underline{\hspace{0.5em}}set$ 中。 这样就可以在 $O(1)$ 的时间复杂度内判断目标值 $target$ 是否在还原后的二叉树中了。 diff --git "a/Solutions/1300. \350\275\254\345\217\230\346\225\260\347\273\204\345\220\216\346\234\200\346\216\245\350\277\221\347\233\256\346\240\207\345\200\274\347\232\204\346\225\260\347\273\204\345\222\214.md" "b/Solutions/1300. \350\275\254\345\217\230\346\225\260\347\273\204\345\220\216\346\234\200\346\216\245\350\277\221\347\233\256\346\240\207\345\200\274\347\232\204\346\225\260\347\273\204\345\222\214.md" index 97575119..097a42a2 100644 --- "a/Solutions/1300. \350\275\254\345\217\230\346\225\260\347\273\204\345\220\216\346\234\200\346\216\245\350\277\221\347\233\256\346\240\207\345\200\274\347\232\204\346\225\260\347\273\204\345\222\214.md" +++ "b/Solutions/1300. \350\275\254\345\217\230\346\225\260\347\273\204\345\220\216\346\234\200\346\216\245\350\277\221\347\233\256\346\240\207\345\200\274\347\232\204\346\225\260\347\273\204\345\222\214.md" @@ -54,9 +54,9 @@ 整个算法步骤如下: -- 先对数组排序,并计算数组的前缀和 $pre\underline{}sum$。 +- 先对数组排序,并计算数组的前缀和 $pre\underline{\hspace{0.5em}}sum$。 - 通过二分查找在 $[0, arr[-1]]$ 中查找使得转变后数组和刚好大于等于 $target$ 的值 $value$。 -- 计算 $value$ 对应的数组和 $sum\underline{}1$,以及 $value - 1$ 对应的数组和 $sum\underline{}2$。并分别计算与 $target$ 的差值 $diff\underline{}1$、$diff\underline{}2$。 +- 计算 $value$ 对应的数组和 $sum\underline{\hspace{0.5em}}1$,以及 $value - 1$ 对应的数组和 $sum\underline{\hspace{0.5em}}2$。并分别计算与 $target$ 的差值 $diff\underline{\hspace{0.5em}}1$、$diff\underline{\hspace{0.5em}}2$。 - 输出差值小的那个值。 ### 思路 1:代码 diff --git "a/Solutions/1324. \347\253\226\347\233\264\346\211\223\345\215\260\345\215\225\350\257\215.md" "b/Solutions/1324. \347\253\226\347\233\264\346\211\223\345\215\260\345\215\225\350\257\215.md" index 3688821d..6b5526f6 100644 --- "a/Solutions/1324. \347\253\226\347\233\264\346\211\223\345\215\260\345\215\225\350\257\215.md" +++ "b/Solutions/1324. \347\253\226\347\233\264\346\211\223\345\215\260\345\215\225\350\257\215.md" @@ -50,7 +50,7 @@ ### 思路 1:模拟 1. 将字符串 $s$ 按空格分割为单词数组 $words$。 -2. 计算出单词数组 $words$ 中单词的最大长度 $max\underline{}len$。 +2. 计算出单词数组 $words$ 中单词的最大长度 $max\underline{\hspace{0.5em}}len$。 3. 第一重循环遍历竖直单词的每个单词位置 $i$,第二重循环遍历当前第 $j$ 个单词。 1. 如果当前单词没有第 $i$ 个字符(当前单词的长度超过了单词位置 $i$),则将空格插入到竖直单词中。 2. 如果当前单词有第 $i$ 个字符,泽讲当前单词的第 $i$ 个字符插入到竖直单词中。 diff --git "a/Solutions/1347. \345\210\266\351\200\240\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\347\232\204\346\234\200\345\260\217\346\255\245\351\252\244\346\225\260.md" "b/Solutions/1347. \345\210\266\351\200\240\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\347\232\204\346\234\200\345\260\217\346\255\245\351\252\244\346\225\260.md" index 17a4612c..b9e51f71 100644 --- "a/Solutions/1347. \345\210\266\351\200\240\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\347\232\204\346\234\200\345\260\217\346\255\245\351\252\244\346\225\260.md" +++ "b/Solutions/1347. \345\210\266\351\200\240\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\347\232\204\346\234\200\345\260\217\346\255\245\351\252\244\346\225\260.md" @@ -46,9 +46,9 @@ 因为每一次转换都会减少一个字符,并增加另一个字符。 -1. 我们使用两个哈希表 $cnts\underline{}s$、$cnts\underline{}t$ 分别对 $t$ 和 $s$ 中的字符进行计数,并求出两者的交集。 +1. 我们使用两个哈希表 $cnts\underline{\hspace{0.5em}}s$、$cnts\underline{\hspace{0.5em}}t$ 分别对 $t$ 和 $s$ 中的字符进行计数,并求出两者的交集。 2. 遍历交集中的字符种类,以及对应的字符数量。 -3. 对于当前字符 $key$,如果当前字符串 $s$ 中的字符 $key$ 的数量小于字符串 $t$ 中字符 $key$ 的数量,即 $cnts\underline{}s[key] < cnts\underline{}t[key]$。则 $s$ 中需要补齐的字符数量就是需要的最小步数,将其累加到答案中。 +3. 对于当前字符 $key$,如果当前字符串 $s$ 中的字符 $key$ 的数量小于字符串 $t$ 中字符 $key$ 的数量,即 $cnts\underline{\hspace{0.5em}}s[key] < cnts\underline{\hspace{0.5em}}t[key]$。则 $s$ 中需要补齐的字符数量就是需要的最小步数,将其累加到答案中。 4. 遍历完返回答案。 ### 思路 1:代码 diff --git "a/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" "b/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" index e5c87169..bb474b8d 100644 --- "a/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" +++ "b/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" @@ -70,15 +70,15 @@ ###### 3. 状态转移方程 -因为学生可以看到左侧、右侧、左上方、右上方这四个方向上紧邻他的学生答卷,所以对于当前排的某个座位来说,其左侧、右侧、左上方、右上方都不应有人坐。我们可以根据当前排的座位选取状态 $cur\underline{}state$,并通过枚举的方式,找出符合要求的上一排座位选取状态 $pre\underline{}state$,并计算出当前排座位选择个数,即 $f(cur\underline{}state)$,则状态转移方程为: +因为学生可以看到左侧、右侧、左上方、右上方这四个方向上紧邻他的学生答卷,所以对于当前排的某个座位来说,其左侧、右侧、左上方、右上方都不应有人坐。我们可以根据当前排的座位选取状态 $cur\underline{\hspace{0.5em}}state$,并通过枚举的方式,找出符合要求的上一排座位选取状态 $pre\underline{\hspace{0.5em}}state$,并计算出当前排座位选择个数,即 $f(cur\underline{\hspace{0.5em}}state)$,则状态转移方程为: - $dp[i][state] = \max \lbrace dp[i - 1][pre\underline{}state]\rbrace + f(state) $ + $dp[i][state] = \max \lbrace dp[i - 1][pre\underline{\hspace{0.5em}}state]\rbrace + f(state) $ -因为所给座位中还有坏座位(不可用)的情况,我们可以使用一个 $8$ 位的二进制数 $bad\underline{}seat$ 来表示当前排的坏座位情况,如果 $cur\underline{}state \text{ \& } bad\underline{}seat == 1$,则说明当前状态下,选择了坏椅子,则可直接跳过这种状态。 +因为所给座位中还有坏座位(不可用)的情况,我们可以使用一个 $8$ 位的二进制数 $bad\underline{\hspace{0.5em}}seat$ 来表示当前排的坏座位情况,如果 $cur\underline{\hspace{0.5em}}state \text{ \& } bad\underline{\hspace{0.5em}}seat == 1$,则说明当前状态下,选择了坏椅子,则可直接跳过这种状态。 -我们还可以通过 $cur\underline{}state \text{ \& } (cur\underline{}state \text{ <}\text{< } 1)$ 和 $cur\underline{}state \& (cur\underline{}state \text{ >}\text{> } 1)$ 来判断当前排选择状态下,左右相邻座位上是否有人,如果有人,则可直接跳过这种状态。 +我们还可以通过 $cur\underline{\hspace{0.5em}}state \text{ \& } (cur\underline{\hspace{0.5em}}state \text{ <}\text{< } 1)$ 和 $cur\underline{\hspace{0.5em}}state \& (cur\underline{\hspace{0.5em}}state \text{ >}\text{> } 1)$ 来判断当前排选择状态下,左右相邻座位上是否有人,如果有人,则可直接跳过这种状态。 -同理,我们还可以通过 $cur\underline{}state \text{ \& } (pre\underline{}state \text{ <}\text{< } 1)$ 和 $cur\underline{}state \text{ \& } (pre\underline{}state \text{ >}\text{> } 1)$ 来判断当前排选择状态下,上一行左上、右上相邻座位上是否有人,如果有人,则可直接跳过这种状态。 +同理,我们还可以通过 $cur\underline{\hspace{0.5em}}state \text{ \& } (pre\underline{\hspace{0.5em}}state \text{ <}\text{< } 1)$ 和 $cur\underline{\hspace{0.5em}}state \text{ \& } (pre\underline{\hspace{0.5em}}state \text{ >}\text{> } 1)$ 来判断当前排选择状态下,上一行左上、右上相邻座位上是否有人,如果有人,则可直接跳过这种状态。 ###### 4. 初始条件 diff --git "a/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" "b/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" index 84c14cdd..4eb5510b 100644 --- "a/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" +++ "b/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" @@ -47,17 +47,17 @@ 可以用固定长度的滑动窗口来做。 -由于只能从开头或末尾位置拿 $k$ 张牌,则最后剩下的肯定是连续的 $len(cardPoints) - k$ 张牌。要求求出 $k$ 张牌可以获得的最大收益,我们可以反向先求出连续 $len(cardPoints) - k$ 张牌的最小点数。则答案为 $sum(cardPoints) - min\underline{}sum$。维护一个固定长度为 $len(cardPoints) - k$ 的滑动窗口,求最小和。具体做法如下: +由于只能从开头或末尾位置拿 $k$ 张牌,则最后剩下的肯定是连续的 $len(cardPoints) - k$ 张牌。要求求出 $k$ 张牌可以获得的最大收益,我们可以反向先求出连续 $len(cardPoints) - k$ 张牌的最小点数。则答案为 $sum(cardPoints) - min\underline{\hspace{0.5em}}sum$。维护一个固定长度为 $len(cardPoints) - k$ 的滑动窗口,求最小和。具体做法如下: -1. $window\underline{}sum$ 用来维护窗口内的元素和,初始值为 $0$。$min\underline{}sum$ 用来维护滑动窗口元素的最小和。初始值为 $sum(cardPoints)$。滑动窗口的长度为 $window\underline{}size$,值为 $len(cardPoints) - k$。 +1. $window\underline{\hspace{0.5em}}sum$ 用来维护窗口内的元素和,初始值为 $0$。$min\underline{\hspace{0.5em}}sum$ 用来维护滑动窗口元素的最小和。初始值为 $sum(cardPoints)$。滑动窗口的长度为 $window\underline{\hspace{0.5em}}size$,值为 $len(cardPoints) - k$。 2. 使用双指针 $left$、$right$。$left$ 、$right$ 都指向序列的第一个元素,即:`left = 0`,`right = 0`。 -3. 向右移动 $right$,先将 $window\underline{}size$ 个元素填入窗口中。 -4. 当窗口元素个数为 $window\underline{}size$ 时,即:$right - left + 1 \ge window\underline{}size$ 时,计算窗口内的元素和,并维护子数组最小和 $min\underline{}sum$。 +3. 向右移动 $right$,先将 $window\underline{\hspace{0.5em}}size$ 个元素填入窗口中。 +4. 当窗口元素个数为 $window\underline{\hspace{0.5em}}size$ 时,即:$right - left + 1 \ge window\underline{\hspace{0.5em}}size$ 时,计算窗口内的元素和,并维护子数组最小和 $min\underline{\hspace{0.5em}}sum$。 5. 然后向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $k$。 6. 重复 4 ~ 5 步,直到 $right$ 到达数组末尾。 -7. 最后输出 $sum(cardPoints) - min\underline{}sum$ 即为答案。 +7. 最后输出 $sum(cardPoints) - min\underline{\hspace{0.5em}}sum$ 即为答案。 -注意:如果 $window\underline{}size$ 为 $0$ 时需要特殊判断,此时答案为数组和 $sum(cardPoints)$。 +注意:如果 $window\underline{\hspace{0.5em}}size$ 为 $0$ 时需要特殊判断,此时答案为数组和 $sum(cardPoints)$。 ### 思路 1:代码 diff --git "a/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" "b/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" index ec62fbf1..d6799643 100644 --- "a/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" +++ "b/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" @@ -44,9 +44,9 @@ 固定长度的滑动窗口题目。维护一个长度为 $k$ 的窗口,并统计滑动窗口中最大元音字母数。具体做法如下: -1. $ans$ 用来维护长度为 $k$ 的单个字符串中最大元音字母数。$window\underline{}count$ 用来维护窗口中元音字母数。集合 $vowel\underline{}set$ 用来存储元音字母。 +1. $ans$ 用来维护长度为 $k$ 的单个字符串中最大元音字母数。$window\underline{\hspace{0.5em}}count$ 用来维护窗口中元音字母数。集合 $vowel\underline{\hspace{0.5em}}set$ 用来存储元音字母。 2. $left$ 、$right$ 都指向字符串 $s$ 的第一个元素,即:$left = 0$,$right = 0$。 -3. 判断 $s[right]$ 是否在元音字母集合中,如果在则用 $window\underline{}count$ 进行计数。 +3. 判断 $s[right]$ 是否在元音字母集合中,如果在则用 $window\underline{\hspace{0.5em}}count$ 进行计数。 4. 当窗口元素个数为 $k$ 时,即:$right - left + 1 \ge k$ 时,更新 $ans$。然后判断 $s[left]$ 是否为元音字母,如果是则 `window_count -= 1`,并向右移动 $left$,从而缩小窗口长度,即 `left += 1`,使得窗口大小始终保持为 $k$。 5. 重复 $3 \sim 4$ 步,直到 $right$ 到达数组末尾。 6. 最后输出 $ans$。 diff --git "a/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" "b/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" index ce16204f..5e9280ca 100644 --- "a/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" +++ "b/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" @@ -42,13 +42,13 @@ 维护一个元素值为 $0$ 的元素数量少于 $1$ 个的滑动窗口。则答案为滑动窗口长度减去窗口内 $0$ 的个数求最大值。具体做法如下: -设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口 $0$ 的个数小于 $1$ 个。使用 $window\underline{}count$ 记录窗口中 $0$ 的个数,使用 $ans$ 记录删除一个元素后,最长的只包含 $1$ 的非空子数组长度。 +设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口 $0$ 的个数小于 $1$ 个。使用 $window\underline{\hspace{0.5em}}count$ 记录窗口中 $0$ 的个数,使用 $ans$ 记录删除一个元素后,最长的只包含 $1$ 的非空子数组长度。 - 一开始,$left$、$right$ 都指向 $0$。 - 如果最右侧元素等于 $0$,则 `window_count += 1` 。 -- 如果 $window\underline{}count > 1$ ,则不断右移 $left$,缩小滑动窗口长度。并更新当前窗口中 $0$ 的个数,直到 $window\underline{}count \le 1$。 +- 如果 $window\underline{\hspace{0.5em}}count > 1$ ,则不断右移 $left$,缩小滑动窗口长度。并更新当前窗口中 $0$ 的个数,直到 $window\underline{\hspace{0.5em}}count \le 1$。 - 更新答案值,然后向右移动 $right$,直到 $right \ge len(nums)$ 结束。 - 输出答案 $ans$。 diff --git "a/Solutions/1534. \347\273\237\350\256\241\345\245\275\344\270\211\345\205\203\347\273\204.md" "b/Solutions/1534. \347\273\237\350\256\241\345\245\275\344\270\211\345\205\203\347\273\204.md" index 2408dba8..916079a4 100644 --- "a/Solutions/1534. \347\273\237\350\256\241\345\245\275\344\270\211\345\205\203\347\273\204.md" +++ "b/Solutions/1534. \347\273\237\350\256\241\345\245\275\344\270\211\345\205\203\347\273\204.md" @@ -94,11 +94,11 @@ class Solution: 现在问题就转变了如何快速获取在值域区间 $[left, right]$ 中,有多少个 $arr[i]$。 -我们可以利用前缀和数组,先计算出 $[0, 1000]$ 范围中,满足 $arr[i] < num$ 的元素个数,即为 $prefix\underline{}cnts[num]$。 +我们可以利用前缀和数组,先计算出 $[0, 1000]$ 范围中,满足 $arr[i] < num$ 的元素个数,即为 $prefix\underline{\hspace{0.5em}}cnts[num]$。 -然后对于区间 $[left, right]$,通过 $prefix\underline{}cnts[right] - prefix\underline{}cnts[left - 1]$ 即可快速求解出区间 $[left, right]$ 内 $arr[i]$ 的个数。 +然后对于区间 $[left, right]$,通过 $prefix\underline{\hspace{0.5em}}cnts[right] - prefix\underline{\hspace{0.5em}}cnts[left - 1]$ 即可快速求解出区间 $[left, right]$ 内 $arr[i]$ 的个数。 -因为 $i < j < k$,所以我们可以在每次 $j$ 向右移动一位的时候,更新 $arr[j]$ 对应的前缀和数组,保证枚举到 $j$ 时,$prefix\underline{}cnts$ 存储对应元素值的个数足够正确。 +因为 $i < j < k$,所以我们可以在每次 $j$ 向右移动一位的时候,更新 $arr[j]$ 对应的前缀和数组,保证枚举到 $j$ 时,$prefix\underline{\hspace{0.5em}}cnts$ 存储对应元素值的个数足够正确。 ### 思路 2:代码 diff --git "a/Solutions/1582. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\347\211\271\346\256\212\344\275\215\347\275\256.md" "b/Solutions/1582. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\347\211\271\346\256\212\344\275\215\347\275\256.md" index e883f1fa..b995292a 100644 --- "a/Solutions/1582. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\347\211\271\346\256\212\344\275\215\347\275\256.md" +++ "b/Solutions/1582. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\347\211\271\346\256\212\344\275\215\347\275\256.md" @@ -48,9 +48,9 @@ ### 思路 1:模拟 1. 按照行、列遍历二位数组 $mat$。 -2. 使用数组 $row\underline{}cnts$、$col\underline{}cnts$ 分别记录每行和每列所含 $1$ 的个数。 +2. 使用数组 $row\underline{\hspace{0.5em}}cnts$、$col\underline{\hspace{0.5em}}cnts$ 分别记录每行和每列所含 $1$ 的个数。 3. 再次按照行、列遍历二维数组 $mat$。 -4. 统计满足 $mat[row][col] == 1$ 并且 $row\underline{}cnts[row] == col\underline{}cnts[col] == 1$ 的位置个数。 +4. 统计满足 $mat[row][col] == 1$ 并且 $row\underline{\hspace{0.5em}}cnts[row] == col\underline{\hspace{0.5em}}cnts[col] == 1$ 的位置个数。 5. 返回答案。 ### 思路 1:代码 diff --git "a/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" "b/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" index 969c397c..e34c4b63 100644 --- "a/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" +++ "b/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" @@ -41,12 +41,12 @@ ### 思路 1:回溯算法 -维护一个全局变量 $ans$ 用于记录拆分后唯一子字符串的最大数目。并使用集合 $s\underline{}set$ 记录不重复的子串。 +维护一个全局变量 $ans$ 用于记录拆分后唯一子字符串的最大数目。并使用集合 $s\underline{\hspace{0.5em}}set$ 记录不重复的子串。 - 从下标为 $0$ 开头的子串回溯。 - 对于下标为 $index$ 开头的子串,我们可以在 $index + 1$ 开始到 $len(s) - 1$ 的位置上,分别进行子串拆分,将子串拆分为 $s[index: i + 1]$。 -- 如果当前子串不在 $s\underline{}set$ 中,则将其存入 $s\underline{}set$ 中,然后记录当前拆分子串个数,并从 $i + 1$ 的位置进行下一层递归拆分。然后在拆分完,对子串进行回退操作。 +- 如果当前子串不在 $s\underline{\hspace{0.5em}}set$ 中,则将其存入 $s\underline{\hspace{0.5em}}set$ 中,然后记录当前拆分子串个数,并从 $i + 1$ 的位置进行下一层递归拆分。然后在拆分完,对子串进行回退操作。 - 如果拆到字符串 $s$ 的末尾,则记录并更新 $ans$。 - 在开始位置还可以进行以下剪枝:如果剩余字符个数 + 当前子串个数 <= 当前拆分后子字符串的最大数目,则直接返回。 diff --git "a/Solutions/1647. \345\255\227\347\254\246\351\242\221\346\254\241\345\224\257\344\270\200\347\232\204\346\234\200\345\260\217\345\210\240\351\231\244\346\254\241\346\225\260.md" "b/Solutions/1647. \345\255\227\347\254\246\351\242\221\346\254\241\345\224\257\344\270\200\347\232\204\346\234\200\345\260\217\345\210\240\351\231\244\346\254\241\346\225\260.md" index b56470ed..a83e74c3 100644 --- "a/Solutions/1647. \345\255\227\347\254\246\351\242\221\346\254\241\345\224\257\344\270\200\347\232\204\346\234\200\345\260\217\345\210\240\351\231\244\346\254\241\346\225\260.md" +++ "b/Solutions/1647. \345\255\227\347\254\246\351\242\221\346\254\241\345\224\257\344\270\200\347\232\204\346\234\200\345\260\217\345\210\240\351\231\244\346\254\241\346\225\260.md" @@ -44,10 +44,10 @@ ### 思路 1:贪心算法 + 哈希表 1. 使用哈希表 $cnts$ 统计每字符串中每个字符出现次数。 -2. 然后使用集合 $s\underline{}set$ 保存不同的出现次数。 +2. 然后使用集合 $s\underline{\hspace{0.5em}}set$ 保存不同的出现次数。 3. 遍历哈希表中所偶出现次数: - 1. 如果当前出现次数不在集合 $s\underline{}set$ 中,则将该次数添加到集合 $s\underline{}set$ 中。 - 2. 如果当前出现次数在集合 $s\underline{}set$ 中,则不断减少该次数,直到该次数不在集合 $s\underline{}set$ 中停止,将次数添加到集合 $s\underline{}set$ 中,同时将减少次数累加到答案 $ans$ 中。 + 1. 如果当前出现次数不在集合 $s\underline{\hspace{0.5em}}set$ 中,则将该次数添加到集合 $s\underline{\hspace{0.5em}}set$ 中。 + 2. 如果当前出现次数在集合 $s\underline{\hspace{0.5em}}set$ 中,则不断减少该次数,直到该次数不在集合 $s\underline{\hspace{0.5em}}set$ 中停止,将次数添加到集合 $s\underline{\hspace{0.5em}}set$ 中,同时将减少次数累加到答案 $ans$ 中。 4. 遍历完哈希表后返回答案 $ans$。 ### 思路 1:代码 diff --git "a/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" "b/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" index 4301bd88..852daf04 100644 --- "a/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" +++ "b/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" @@ -43,14 +43,14 @@ 将 $x$ 减到 $0$ 的最小操作数可以转换为求和等于 $sum(nums) - x$ 的最长连续子数组长度。我们可以维护一个区间和为 $sum(nums) - x$ 的滑动窗口,求出最长的窗口长度。具体做法如下: -令 `target = sum(nums) - x`,使用 $max\underline{}len$ 维护和等于 $target$ 的最长连续子数组长度。然后用滑动窗口 $window\underline{}sum$ 来记录连续子数组的和,设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口中的和刚好等于 $target$。 +令 `target = sum(nums) - x`,使用 $max\underline{\hspace{0.5em}}len$ 维护和等于 $target$ 的最长连续子数组长度。然后用滑动窗口 $window\underline{\hspace{0.5em}}sum$ 来记录连续子数组的和,设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口中的和刚好等于 $target$。 - 一开始,$left$、$right$ 都指向 $0$。 -- 向右移动 $right$,将最右侧元素加入当前窗口和 $window\underline{}sum$ 中。 -- 如果 $window\underline{}sum > target$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口和的最小值,直到 $window\underline{}sum \le target$。 -- 如果 $window\underline{}sum == target$,则更新最长连续子数组长度。 +- 向右移动 $right$,将最右侧元素加入当前窗口和 $window\underline{\hspace{0.5em}}sum$ 中。 +- 如果 $window\underline{\hspace{0.5em}}sum > target$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口和的最小值,直到 $window\underline{\hspace{0.5em}}sum \le target$。 +- 如果 $window\underline{\hspace{0.5em}}sum == target$,则更新最长连续子数组长度。 - 然后继续右移 $right$,直到 $right \ge len(nums)$ 结束。 -- 输出 $len(nums) - max\underline{}len$ 作为答案。 +- 输出 $len(nums) - max\underline{\hspace{0.5em}}len$ 作为答案。 - 注意判断题目中的特殊情况。 ### 思路 1:代码 diff --git "a/Solutions/1672. \346\234\200\345\257\214\346\234\211\345\256\242\346\210\267\347\232\204\350\265\204\344\272\247\346\200\273\351\207\217.md" "b/Solutions/1672. \346\234\200\345\257\214\346\234\211\345\256\242\346\210\267\347\232\204\350\265\204\344\272\247\346\200\273\351\207\217.md" index 9e0f6c7b..8f27d192 100644 --- "a/Solutions/1672. \346\234\200\345\257\214\346\234\211\345\256\242\346\210\267\347\232\204\350\265\204\344\272\247\346\200\273\351\207\217.md" +++ "b/Solutions/1672. \346\234\200\345\257\214\346\234\211\345\256\242\346\210\267\347\232\204\350\265\204\344\272\247\346\200\273\351\207\217.md" @@ -51,10 +51,10 @@ ### 思路 1:直接模拟 -1. 使用变量 $max\underline{}ans$ 存储最富有客户所拥有的资产总量。 +1. 使用变量 $max\underline{\hspace{0.5em}}ans$ 存储最富有客户所拥有的资产总量。 2. 遍历所有客户,对于当前客户 $accounts[i]$,统计其拥有的资产总量。 -3. 将当前客户的资产总量与 $max\underline{}ans$ 进行比较,如果大于 $max\underline{}ans$,则更新 $max\underline{}ans$ 的值。 -4. 遍历完所有客户,最终返回 $max\underline{}ans$ 作为结果。 +3. 将当前客户的资产总量与 $max\underline{\hspace{0.5em}}ans$ 进行比较,如果大于 $max\underline{\hspace{0.5em}}ans$,则更新 $max\underline{\hspace{0.5em}}ans$ 的值。 +4. 遍历完所有客户,最终返回 $max\underline{\hspace{0.5em}}ans$ 作为结果。 ### 思路 1:代码 diff --git "a/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" "b/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" index e9119f47..90ef3bf5 100644 --- "a/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" +++ "b/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" @@ -43,7 +43,7 @@ 题目要求的是含有不同元素的连续子数组最大和,我们可以用滑动窗口来做,维护一个不包含重复元素的滑动窗口,计算最大的窗口和。具体方法如下: -- 用滑动窗口 $window$ 来记录不重复的元素个数,$window$ 为哈希表类型。用 $window\underline{}sum$ 来记录窗口内子数组元素和,$ans$ 用来维护最大子数组和。设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口中没有重复元素。 +- 用滑动窗口 $window$ 来记录不重复的元素个数,$window$ 为哈希表类型。用 $window\underline{\hspace{0.5em}}sum$ 来记录窗口内子数组元素和,$ans$ 用来维护最大子数组和。设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口中没有重复元素。 - 一开始,$left$、$right$ 都指向 $0$。 - 将最右侧数组元素 $nums[right]$ 加入当前窗口 $window$ 中,记录该元素个数。 diff --git "a/Solutions/1859. \345\260\206\345\217\245\345\255\220\346\216\222\345\272\217.md" "b/Solutions/1859. \345\260\206\345\217\245\345\255\220\346\216\222\345\272\217.md" index 24ff0f22..cd09cfb6 100644 --- "a/Solutions/1859. \345\260\206\345\217\245\345\255\220\346\216\222\345\272\217.md" +++ "b/Solutions/1859. \345\260\206\345\217\245\345\255\220\346\216\222\345\272\217.md" @@ -46,8 +46,8 @@ ### 思路 1:模拟 -1. 将句子 $s$ 按照空格分隔成数组 $s\underline{}list$。 -2. 遍历数组 $s\underline{}list$ 中的单词: +1. 将句子 $s$ 按照空格分隔成数组 $s\underline{\hspace{0.5em}}list$。 +2. 遍历数组 $s\underline{\hspace{0.5em}}list$ 中的单词: 1. 从单词中分割出对应单词索引 $idx$ 和对应单词 $word$。 2. 将单词 $word$ 存入答案数组 $res$ 对应位置 $idx - 1$ 上,即:$res[int(idx) - 1] = word$。 3. 将答案数组用空格拼接成句子字符串,并返回。 diff --git "a/Solutions/1879. \344\270\244\344\270\252\346\225\260\347\273\204\346\234\200\345\260\217\347\232\204\345\274\202\346\210\226\345\200\274\344\271\213\345\222\214.md" "b/Solutions/1879. \344\270\244\344\270\252\346\225\260\347\273\204\346\234\200\345\260\217\347\232\204\345\274\202\346\210\226\345\200\274\344\271\213\345\222\214.md" index 5f9f8c88..54650974 100644 --- "a/Solutions/1879. \344\270\244\344\270\252\346\225\260\347\273\204\346\234\200\345\260\217\347\232\204\345\274\202\346\210\226\345\200\274\344\271\213\345\222\214.md" +++ "b/Solutions/1879. \344\270\244\344\270\252\346\225\260\347\273\204\346\234\200\345\260\217\347\232\204\345\274\202\346\210\226\345\200\274\344\271\213\345\222\214.md" @@ -77,7 +77,7 @@ 举个例子 $nums2 = \lbrace 1, 2, 3, 4 \rbrace$,$state = (1001)_2$,表示选择了第 $1$ 个元素和第 $4$ 个元素,也就是 $1$、$4$。那么 $state$ 只能从 $(1000)_2$ 和 $(0001)_2$ 这两个状态转移而来,我们只需要枚举这两种状态,并求出转移过来的异或值之和最小值。 -即状态转移方程为:$dp[state] = min(dp[state], \quad dp[state \oplus (1 \text{ <}\text{< } i)] + (nums1[i] \oplus nums2[one\underline{}cnt - 1]))$,其中 $state$ 第 $i$ 位一定为 $1$,$one\underline{}cnt$ 为 $state$ 中 $1$ 的个数。 +即状态转移方程为:$dp[state] = min(dp[state], \quad dp[state \oplus (1 \text{ <}\text{< } i)] + (nums1[i] \oplus nums2[one\underline{\hspace{0.5em}}cnt - 1]))$,其中 $state$ 第 $i$ 位一定为 $1$,$one\underline{\hspace{0.5em}}cnt$ 为 $state$ 中 $1$ 的个数。 ###### 4. 初始条件 diff --git "a/Solutions/1947. \346\234\200\345\244\247\345\205\274\345\256\271\346\200\247\350\257\204\345\210\206\345\222\214.md" "b/Solutions/1947. \346\234\200\345\244\247\345\205\274\345\256\271\346\200\247\350\257\204\345\210\206\345\222\214.md" index 6b669c99..18955b88 100644 --- "a/Solutions/1947. \346\234\200\345\244\247\345\205\274\345\256\271\346\200\247\350\257\204\345\210\206\345\222\214.md" +++ "b/Solutions/1947. \346\234\200\345\244\247\345\205\274\345\256\271\346\200\247\350\257\204\345\210\206\345\222\214.md" @@ -69,11 +69,11 @@ 对于当前状态 $state$,肯定是从比 $state$ 少选一个老师被分配的状态中递推而来。我们可以枚举少选一个元素的状态,找到可以得到的最大兼容性评分和,赋值给 $dp[state]$。 -即状态转移方程为:$dp[state] = max(dp[state], \quad dp[state \oplus (1 \text{ <}\text{< } i)] + score[i][one\underline{}cnt - 1])$,其中: +即状态转移方程为:$dp[state] = max(dp[state], \quad dp[state \oplus (1 \text{ <}\text{< } i)] + score[i][one\underline{\hspace{0.5em}}cnt - 1])$,其中: 1. $state$ 第 $i$ 位一定为 $1$。 2. $state \oplus (1 \text{ <}\text{< } i)$ 为比 $state$ 少选一个元素的状态。 -3. $scores[i][one\underline{}cnt - 1]$ 为第 $i$ 名老师分配到第 $one\underline{}cnt - 1$ 名学生的兼容性评分。 +3. $scores[i][one\underline{\hspace{0.5em}}cnt - 1]$ 为第 $i$ 名老师分配到第 $one\underline{\hspace{0.5em}}cnt - 1$ 名学生的兼容性评分。 关于每位老师与每位同学之间的兼容性评分,我们可以事先通过一个 $m \times m \times n$ 的三重循环计算得出,并且存入到 $m \times m$ 大小的二维矩阵 $scores$ 中。 diff --git "a/Solutions/1991. \346\211\276\345\210\260\346\225\260\347\273\204\347\232\204\344\270\255\351\227\264\344\275\215\347\275\256.md" "b/Solutions/1991. \346\211\276\345\210\260\346\225\260\347\273\204\347\232\204\344\270\255\351\227\264\344\275\215\347\275\256.md" index 8d957b5c..e409e92d 100644 --- "a/Solutions/1991. \346\211\276\345\210\260\346\225\260\347\273\204\347\232\204\344\270\255\351\227\264\344\275\215\347\275\256.md" +++ "b/Solutions/1991. \346\211\276\345\210\260\346\225\260\347\273\204\347\232\204\344\270\255\351\227\264\344\275\215\347\275\256.md" @@ -45,10 +45,10 @@ ### 思路 1:前缀和 1. 先遍历一遍数组,求出数组中全部元素和为 $total$。 -2. 再遍历一遍数组,使用变量 $prefix\underline{}sum$ 为前 $i$ 个元素和。 -3. 当遍历到第 $i$ 个元素时,其数组左侧元素之和为 $prefix\underline{}sum$,右侧元素和为 $total - prefix\underline{}sum - nums[i]$。 - 1. 如果左右元素之和相等,即 $prefix\underline{}sum == total - prefix\underline{}sum - nums[i]$($2 \times prefix\underline{}sum + nums[i] == total$) 时,$i$ 为中间位置。此时返回 $i$。 - 2. 如果不满足,则继续累加当前元素到 $prefix\underline{}sum$ 中,继续向后遍历。 +2. 再遍历一遍数组,使用变量 $prefix\underline{\hspace{0.5em}}sum$ 为前 $i$ 个元素和。 +3. 当遍历到第 $i$ 个元素时,其数组左侧元素之和为 $prefix\underline{\hspace{0.5em}}sum$,右侧元素和为 $total - prefix\underline{\hspace{0.5em}}sum - nums[i]$。 + 1. 如果左右元素之和相等,即 $prefix\underline{\hspace{0.5em}}sum == total - prefix\underline{\hspace{0.5em}}sum - nums[i]$($2 \times prefix\underline{\hspace{0.5em}}sum + nums[i] == total$) 时,$i$ 为中间位置。此时返回 $i$。 + 2. 如果不满足,则继续累加当前元素到 $prefix\underline{\hspace{0.5em}}sum$ 中,继续向后遍历。 4. 如果找不到符合要求的中间位置,则返回 $-1$。 ### 思路 1:代码 diff --git "a/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" "b/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" index f9d5bb9b..fbca0c07 100644 --- "a/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" +++ "b/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" @@ -79,9 +79,9 @@ ###### 3. 状态转移方程 -对于 $nums$ 中的每个数 $num$,其对应出现次数为 $cnt$。我们可以通过试除法,将 $num$ 分解为不同的质因数,并使用「状态压缩」的方式,用一个二进制数 $cur\underline{}state$ 来表示当前数 $num$ 中使用了哪些质因数。然后枚举所有状态,找到与 $cur\underline{}state$ 不冲突的状态 $state$(也就是除了 $cur\underline{}state$ 中选择的质因数外,选择的其他质因数情况,比如 $cur\underline{}state$ 选择了 $2$ 和 $5$,则枚举不选择 $2$ 和 $5$ 的状态)。 +对于 $nums$ 中的每个数 $num$,其对应出现次数为 $cnt$。我们可以通过试除法,将 $num$ 分解为不同的质因数,并使用「状态压缩」的方式,用一个二进制数 $cur\underline{\hspace{0.5em}}state$ 来表示当前数 $num$ 中使用了哪些质因数。然后枚举所有状态,找到与 $cur\underline{\hspace{0.5em}}state$ 不冲突的状态 $state$(也就是除了 $cur\underline{\hspace{0.5em}}state$ 中选择的质因数外,选择的其他质因数情况,比如 $cur\underline{\hspace{0.5em}}state$ 选择了 $2$ 和 $5$,则枚举不选择 $2$ 和 $5$ 的状态)。 -此时,状态转移方程为:$dp[state | cur\underline{}state] = \sum (dp[state] \times cnt) \mod MOD , \quad state \text{ \& } cur\underline{}state == 0$ +此时,状态转移方程为:$dp[state | cur\underline{\hspace{0.5em}}state] = \sum (dp[state] \times cnt) \mod MOD , \quad state \text{ \& } cur\underline{\hspace{0.5em}}state == 0$ ###### 4. 初始条件 diff --git "a/Solutions/2172. \346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\344\270\216\345\222\214.md" "b/Solutions/2172. \346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\344\270\216\345\222\214.md" index 1e5eb2c9..3d1bd402 100644 --- "a/Solutions/2172. \346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\344\270\216\345\222\214.md" +++ "b/Solutions/2172. \346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\344\270\216\345\222\214.md" @@ -71,12 +71,12 @@ 对于当前状态 $dp[state]$,肯定是从比 $state$ 少选一个元素的状态中递推而来。我们可以枚举少选一个元素的状态,找到可以获得的最大与和,赋值给 $dp[state]$。 -即状态转移方程为:$dp[state] = min(dp[state], dp[state \oplus (1 \text{ <}\text{< } i)] + (i // 2 + 1) \text{ \& } nums[one\underline{}cnt - 1])$,其中: +即状态转移方程为:$dp[state] = min(dp[state], dp[state \oplus (1 \text{ <}\text{< } i)] + (i // 2 + 1) \text{ \& } nums[one\underline{\hspace{0.5em}}cnt - 1])$,其中: 1. $state$ 第 $i$ 位一定为 $1$。 2. $state \oplus (1 \text{ <}\text{< } i)$ 为比 $state$ 少选一个元素的状态。 3. $i // 2 + 1$ 为篮子对应编号 -4. $nums[one\underline{}cnt - 1]$ 为当前正在考虑的数组元素。 +4. $nums[one\underline{\hspace{0.5em}}cnt - 1]$ 为当前正在考虑的数组元素。 ###### 4. 初始条件 @@ -86,7 +86,7 @@ 根据我们之前定义的状态,$dp[state]$ 表示为:将前 $count(state)$ 个整数放到篮子里,并且每个篮子中的整数放取情况为 $state$ 时,可以获得的最大与和。所以最终结果为 $max(dp)$。 -> 注意:当 $one\underline{}cnt > len(nums)$ 时,无法通过递推得到 $dp[state]$,需要跳过。 +> 注意:当 $one\underline{\hspace{0.5em}}cnt > len(nums)$ 时,无法通过递推得到 $dp[state]$,需要跳过。 ### 思路 1:代码 diff --git "a/Solutions/2246. \347\233\270\351\202\273\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\346\234\200\351\225\277\350\267\257\345\276\204.md" "b/Solutions/2246. \347\233\270\351\202\273\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\346\234\200\351\225\277\350\267\257\345\276\204.md" index 2624be4d..59192358 100644 --- "a/Solutions/2246. \347\233\270\351\202\273\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\346\234\200\351\225\277\350\267\257\345\276\204.md" +++ "b/Solutions/2246. \347\233\270\351\202\273\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\346\234\200\351\225\277\350\267\257\345\276\204.md" @@ -60,11 +60,11 @@ 即:**最长路径长度 = max(某子树中的最长路径长度 + 另一子树中的最长路径长度 + 1,某个子树中的最长路径长度)**。 -对此,我们可以使用深度优先搜索递归遍历 $u$ 的所有相邻节点 $v$,并在递归遍历的同时,维护一个全局最大路径和变量 $ans$,以及当前节点 $u$ 的最大路径长度变量 $u\underline{}len$。 +对此,我们可以使用深度优先搜索递归遍历 $u$ 的所有相邻节点 $v$,并在递归遍历的同时,维护一个全局最大路径和变量 $ans$,以及当前节点 $u$ 的最大路径长度变量 $u\underline{\hspace{0.5em}}len$。 -1. 先计算出从相邻节点 $v$ 出发的最长路径长度 $v\underline{}len$。 -2. 更新维护全局最长路径长度为 $self.ans = max(self.ans, \quad u\underline{}len + v\underline{}len + 1)$。 -3. 更新维护当前节点 $u$ 的最长路径长度为 $u\underline{}len = max(u\underline{}len, \quad v\underline{}len + 1)$。 +1. 先计算出从相邻节点 $v$ 出发的最长路径长度 $v\underline{\hspace{0.5em}}len$。 +2. 更新维护全局最长路径长度为 $self.ans = max(self.ans, \quad u\underline{\hspace{0.5em}}len + v\underline{\hspace{0.5em}}len + 1)$。 +3. 更新维护当前节点 $u$ 的最长路径长度为 $u\underline{\hspace{0.5em}}len = max(u\underline{\hspace{0.5em}}len, \quad v\underline{\hspace{0.5em}}len + 1)$。 因为题目限定了「相邻节点字符不同」,所以在更新全局最长路径长度和当前节点 $u$ 的最长路径长度时,我们需要判断一下节点 $u$ 与相邻节点 $v$ 的字符是否相同,只有在字符不同的条件下,才能够更新维护。 diff --git "a/Solutions/2538. \346\234\200\345\244\247\344\273\267\345\200\274\345\222\214\344\270\216\346\234\200\345\260\217\344\273\267\345\200\274\345\222\214\347\232\204\345\267\256\345\200\274.md" "b/Solutions/2538. \346\234\200\345\244\247\344\273\267\345\200\274\345\222\214\344\270\216\346\234\200\345\260\217\344\273\267\345\200\274\345\222\214\347\232\204\345\267\256\345\200\274.md" index 7ac58ab9..70cb637f 100644 --- "a/Solutions/2538. \346\234\200\345\244\247\344\273\267\345\200\274\345\222\214\344\270\216\346\234\200\345\260\217\344\273\267\345\200\274\345\222\214\347\232\204\345\267\256\345\200\274.md" +++ "b/Solutions/2538. \346\234\200\345\244\247\344\273\267\345\200\274\345\222\214\344\270\216\346\234\200\345\260\217\344\273\267\345\200\274\345\222\214\347\232\204\345\267\256\345\200\274.md" @@ -66,22 +66,22 @@ 对此我们可以使用深度优先搜索递归遍历二叉树,并在递归遍历的同时,维护一个最大开销变量 $ans$。 -然后定义函数 ` def dfs(self, u, father):` 计算以节点 $u$ 为根节点的子树中,带端点的最大路径和 $max\underline{}s1$,以及去掉端点的最大路径和 $max\underline{}s2$,其中 $father$ 表示节点 $u$ 的根节点,用于遍历邻接节点的过程中过滤父节点,避免重复遍历。 +然后定义函数 ` def dfs(self, u, father):` 计算以节点 $u$ 为根节点的子树中,带端点的最大路径和 $max\underline{\hspace{0.5em}}s1$,以及去掉端点的最大路径和 $max\underline{\hspace{0.5em}}s2$,其中 $father$ 表示节点 $u$ 的根节点,用于遍历邻接节点的过程中过滤父节点,避免重复遍历。 -初始化带端点的最大路径和 $max\underline{}s1$ 为 $price[u]$,表示当前只有一个节点,初始化去掉端点的最大路径和 $max\underline{}s2$ 为 $0$,表示当前没有节点。 +初始化带端点的最大路径和 $max\underline{\hspace{0.5em}}s1$ 为 $price[u]$,表示当前只有一个节点,初始化去掉端点的最大路径和 $max\underline{\hspace{0.5em}}s2$ 为 $0$,表示当前没有节点。 然后在遍历节点 $u$ 的相邻节点 $v$ 时,递归调用 $dfs(v, u)$,获取以节点 $v$ 为根节点的子树中,带端点的最大路径和 $s1$,以及去掉端点的最大路径和 $s2$。此时最大开销变量 $self.ans$ 有两种情况: -1. $u$ 的子树中带端点的最大路径和,加上 $v$ 的子树中不带端点的最大路径和,即:$max\underline{}s1 + s2$。 -2. $u$ 的子树中去掉端点的最大路径和,加上 $v$ 的子树中带端点的最大路径和,即:$max\underline{}s2 + s1$。 +1. $u$ 的子树中带端点的最大路径和,加上 $v$ 的子树中不带端点的最大路径和,即:$max\underline{\hspace{0.5em}}s1 + s2$。 +2. $u$ 的子树中去掉端点的最大路径和,加上 $v$ 的子树中带端点的最大路径和,即:$max\underline{\hspace{0.5em}}s2 + s1$。 -此时我们更新最大开销变量 $self.ans$,即:$self.ans = max(self.ans, \quad max\underline{}s1 + s2, \quad max\underline{}s2 + s1)$。 +此时我们更新最大开销变量 $self.ans$,即:$self.ans = max(self.ans, \quad max\underline{\hspace{0.5em}}s1 + s2, \quad max\underline{\hspace{0.5em}}s2 + s1)$。 -然后更新 $u$ 的子树中带端点的最大路径和 $max\underline{}s1$,即:$max\underline{}s1= max(max\underline{}s1, \quad s1 + price[u])$。 +然后更新 $u$ 的子树中带端点的最大路径和 $max\underline{\hspace{0.5em}}s1$,即:$max\underline{\hspace{0.5em}}s1= max(max\underline{\hspace{0.5em}}s1, \quad s1 + price[u])$。 -再更新 $u$ 的子树中去掉端点的最大路径和 $max\underline{}s2$,即:$max\underline{}s2 = max(max\underline{}s2, \quad s2 + price[u])$。 +再更新 $u$ 的子树中去掉端点的最大路径和 $max\underline{\hspace{0.5em}}s2$,即:$max\underline{\hspace{0.5em}}s2 = max(max\underline{\hspace{0.5em}}s2, \quad s2 + price[u])$。 -最后返回带端点 $u$ 的最大路径和 $max\underline{}s1$,以及去掉端点 $u$ 的最大路径和 $。 +最后返回带端点 $u$ 的最大路径和 $max\underline{\hspace{0.5em}}s1$,以及去掉端点 $u$ 的最大路径和 $。 最终,最大开销变量 $self.ans$ 即为答案。 diff --git "a/Solutions/2719. \347\273\237\350\256\241\346\225\264\346\225\260\346\225\260\347\233\256.md" "b/Solutions/2719. \347\273\237\350\256\241\346\225\264\346\225\260\346\225\260\347\233\256.md" index 4d6f8bef..30a70a8d 100644 --- "a/Solutions/2719. \347\273\237\350\256\241\346\225\264\346\225\260\346\225\260\347\233\256.md" +++ "b/Solutions/2719. \347\273\237\350\256\241\346\225\264\346\225\260\346\225\260\347\233\256.md" @@ -9,7 +9,7 @@ ## 题目大意 -**描述**:给定两个数字字符串 $num1$ 和 $num2$,以及两个整数 $max\underline{}sum$ 和 $min\underline{}sum$。 +**描述**:给定两个数字字符串 $num1$ 和 $num2$,以及两个整数 $max\underline{\hspace{0.5em}}sum$ 和 $min\underline{\hspace{0.5em}}sum$。 **要求**:返回好整数的数目。答案可能很大,请返回答案对 $10^9 + 7$ 取余后的结果。 @@ -17,11 +17,11 @@ - **好整数**:如果一个整数 $x$ 满足一下条件,我们称它是一个好整数: - $num1 \le x \le num2$。 - - $num\underline{}sum \le digit\underline{}sum(x) \le max\underline{}sum$。 + - $num\underline{\hspace{0.5em}}sum \le digit\underline{\hspace{0.5em}}sum(x) \le max\underline{\hspace{0.5em}}sum$。 -- $digit\underline{}sum(x)$ 表示 $x$ 各位数字之和。 +- $digit\underline{\hspace{0.5em}}sum(x)$ 表示 $x$ 各位数字之和。 - $1 \le num1 \le num2 \le 10^{22}$。 -- $1 \le min\underline{}sum \le max\underline{}sum \le 400$。 +- $1 \le min\underline{\hspace{0.5em}}sum \le max\underline{\hspace{0.5em}}sum \le 400$。 **示例**: @@ -52,9 +52,9 @@ 2. 初始数位和为 $0$。 3. 开始时当前数位最大值受到最高位数位的约束。 4. 开始时当前数位最小值受到最高位数位的约束。 -2. 如果 $total > max\underline{}sum$,说明当前方案不符合要求,则返回方案数 $0$。 +2. 如果 $total > max\underline{\hspace{0.5em}}sum$,说明当前方案不符合要求,则返回方案数 $0$。 3. 如果遇到 $pos == len(s)$,表示到达数位末尾,此时: - 1. 如果 $min\underline{}sum \le total \le max\underline{}sum$,说明当前方案符合要求,则返回方案数 $1$。 + 1. 如果 $min\underline{\hspace{0.5em}}sum \le total \le max\underline{\hspace{0.5em}}sum$,说明当前方案符合要求,则返回方案数 $1$。 2. 如果不满足,则当前方案不符合要求,则返回方案数 $0$。 4. 如果 $pos \ne len(s)$,则定义方案数 $ans$,令其等于 $0$,即:`ans = 0`。 5. 根据 $isMaxLimit$ 和 $isMinLimit$ 来决定填当前位数位所能选择的最小数字($minX$)和所能选择的最大数字($maxX$)。 @@ -106,5 +106,5 @@ class Solution: ### 思路 1:复杂度分析 - **时间复杂度**:$O(n \times 10)$,其中 $n$ 为数组 $nums2$ 的长度。 -- **空间复杂度**:$O(n \times max\underline{}sum)$。 +- **空间复杂度**:$O(n \times max\underline{\hspace{0.5em}}sum)$。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" "b/Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" index 8f62595a..1cdc68c8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" +++ "b/Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" @@ -43,15 +43,15 @@ 1. 使用全局变量 $cnt$ 来存储逆序对的个数。然后进行归并排序。 2. **分割过程**:先递归地将当前序列平均分成两半,直到子序列长度为 $1$。 - 1. 找到序列中心位置 $mid$,从中心位置将序列分成左右两个子序列 $left\underline{}arr$、$right\underline{}arr$。 - 2. 对左右两个子序列 $left\underline{}arr$、$right\underline{}arr$ 分别进行递归分割。 + 1. 找到序列中心位置 $mid$,从中心位置将序列分成左右两个子序列 $left\underline{\hspace{0.5em}}arr$、$right\underline{\hspace{0.5em}}arr$。 + 2. 对左右两个子序列 $left\underline{\hspace{0.5em}}arr$、$right\underline{\hspace{0.5em}}arr$ 分别进行递归分割。 3. 最终将数组分割为 $n$ 个长度均为 $1$ 的有序子序列。 3. **归并过程**:从长度为 $1$ 的有序子序列开始,依次进行两两归并,直到合并成一个长度为 $n$ 的有序序列。 1. 使用数组变量 $arr$ 存放归并后的有序数组。 - 2. 使用两个指针 $left\underline{}i$、$right\underline{}i$ 分别指向两个有序子序列 $left\underline{}arr$、$right\underline{}arr$ 的开始位置。 + 2. 使用两个指针 $left\underline{\hspace{0.5em}}i$、$right\underline{\hspace{0.5em}}i$ 分别指向两个有序子序列 $left\underline{\hspace{0.5em}}arr$、$right\underline{\hspace{0.5em}}arr$ 的开始位置。 3. 比较两个指针指向的元素: - 1. 如果 $left\underline{}arr[left\underline{}i] \le right\underline{}arr[right\underline{}i]$,则将 $left\underline{}arr[left\underline{}i]$ 存入到结果数组 $arr$ 中,并将指针移动到下一位置。 - 2. 如果 $left\underline{}arr[left\underline{}i] > right\underline{}arr[right\underline{}i]$,则 **记录当前左子序列中元素与当前右子序列元素所形成的逆序对的个数,并累加到 $cnt$ 中,即 `self.cnt += len(left_arr) - left_i`**,然后将 $right\underline{}arr[right\underline{}i]$ 存入到结果数组 $arr$ 中,并将指针移动到下一位置。 + 1. 如果 $left\underline{\hspace{0.5em}}arr[left\underline{\hspace{0.5em}}i] \le right\underline{\hspace{0.5em}}arr[right\underline{\hspace{0.5em}}i]$,则将 $left\underline{\hspace{0.5em}}arr[left\underline{\hspace{0.5em}}i]$ 存入到结果数组 $arr$ 中,并将指针移动到下一位置。 + 2. 如果 $left\underline{\hspace{0.5em}}arr[left\underline{\hspace{0.5em}}i] > right\underline{\hspace{0.5em}}arr[right\underline{\hspace{0.5em}}i]$,则 **记录当前左子序列中元素与当前右子序列元素所形成的逆序对的个数,并累加到 $cnt$ 中,即 `self.cnt += len(left_arr) - left_i`**,然后将 $right\underline{\hspace{0.5em}}arr[right\underline{\hspace{0.5em}}i]$ 存入到结果数组 $arr$ 中,并将指针移动到下一位置。 4. 重复步骤 $3$,直到某一指针到达子序列末尾。 5. 将另一个子序列中的剩余元素存入到结果数组 $arr$ 中。 6. 返回归并后的有序数组 $arr$。 From 40158e25e6d44eb1c7a2b50e46530b0bd353380a Mon Sep 17 00:00:00 2001 From: ITCharge Date: Wed, 8 May 2024 17:05:41 +0800 Subject: [PATCH 077/158] Update 01.Array-Binary-Search-01.md --- .../01.Array-Binary-Search-01.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md b/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md index 31430917..5bbecfca 100644 --- a/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md +++ b/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md @@ -22,13 +22,13 @@ 举个例子来说,以在有序数组 $[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]$ 中查找目标元素 $6$ 来说,使用二分查找算法的步骤如下: -1. **确定查找范围**:初始时左边界 $left$ 为 $0$(数组的起始位置),$right$ 为 $10$(数组的末尾位置)。此时查找范围为 $[0, 10]$。 -2. **计算中间元素**:中间元素下标位置为 $5$,对应元素为 $nums[5] == 5$。 -3. **比较中间元素**:因为 $6 > nums[5]$,所以目标元素可能在右半部分,更新左边界为中间元素的后一个位置,即 $left = 5$。此时查找范围为 $[5, 10]$。 -4. **计算中间元素**:中间元素下标位置为 $7$,对应元素为 $nums[7] == 7$。 -5. **比较中间元素**:因为 $6 < nums[7]$,所以目标元素可能在左半部分,更新右边界为中间元素的前一个位置,即 $right = 6$。此时查找范围为 $[5, 6]$。 -6. **计算中间元素**:中间元素下标位置为 $5$,对应元素为 $nums[5] == 5$。 -7. **比较中间元素**:因为 $5 == nums[5]$,正好是我们正在查找的目标元素,此时返回中间元素的下标位置,算法结束。 +1. **确定查找范围**:初始时左边界 $left = 0$(数组的起始位置),$right = 10$(数组的末尾位置)。此时查找范围为 $[0, 10]$。 +2. **计算中间元素**:中间元素下标位置 $mid = (0 + 10) \div 2 = 5$,对应元素为 $nums[5] == 5$。 +3. **比较中间元素**:因为 $6 > nums[5]$,所以目标元素可能在右半部分,更新左边界为中间元素的后一个位置,即 $left = 6$。此时查找范围为 $[6, 10]$。 +4. **计算中间元素**:中间元素下标位置 $mid = (6 + 10) \div 2 = 8$,对应元素为 $nums[8] == 8$。 +5. **比较中间元素**:因为 $6 < nums[8]$,所以目标元素可能在左半部分,更新右边界为中间元素的前一个位置,即 $right = 7$。此时查找范围为 $[6, 7]$。 +6. **计算中间元素**:中间元素下标位置 $mid = (6 + 7) \div 2 = 6$(向下取整),对应元素为 $nums[6] == 6$。 +7. **比较中间元素**:因为 $6 == nums[6]$,正好是我们正在查找的目标元素,此时返回中间元素的下标位置,算法结束。 于是我们发现,对于一个长度为 $10$ 的有序数组,我们只进行了 $3$ 次查找就找到了目标元素。而如果是按照顺序依次遍历数组,则在最坏情况下,我们可能需要查找 $10$ 次才能找到目标元素。 From 8c75fc42399d839a6b811a3ea8cd82ed999fb9a5 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Wed, 8 May 2024 17:05:44 +0800 Subject: [PATCH 078/158] Update 02.Algorithm-Complexity.md --- Contents/00.Introduction/02.Algorithm-Complexity.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/00.Introduction/02.Algorithm-Complexity.md b/Contents/00.Introduction/02.Algorithm-Complexity.md index c86132e7..f672db6b 100644 --- a/Contents/00.Introduction/02.Algorithm-Complexity.md +++ b/Contents/00.Introduction/02.Algorithm-Complexity.md @@ -187,7 +187,7 @@ def algorithm(n): 上述代码中 `cnt = 1` 的时间复杂度为 $O(1)$ 可以忽略不算。`while` 循环体中 $cnt$ 从 $1$ 开始,每循环一次都乘以 $2$。当大于等于 $n$ 时循环结束。变量 $cnt$ 的取值是一个等比数列:$2^0, 2^1, 2^2, …, 2^x$,根据 $2^x = n$,可以得出这段循环体的执行次数为 $\log_2n$,所以这段代码的时间复杂度为 $O(\log_2n)$。 -因为 $\log n = k \times \log_2 n$,这里 $k = 3.322$,所以,$\log n$ 与 $\log_2 n$ 的差别比较小。为了方便书写,通常我们将对数时间复杂度写作是 $O(\log n)$。 +因为 $\log_2 n = k \times \log_{10} n$,这里 $k \approx 3.322$,是一个常数系数,$\log_2 n$ 与 $\log_{10} n$ 之间差别比较小,可以忽略 $k$。并且 $\log_{10} n$ 也可以简写成 $\log n$,所以为了方便书写,通常我们将对数时间复杂度写作是 $O(\log n)$。 #### 2.3.6 线性对数 $O(n \times \log n)$ From cc3adb0d3975a142f4f0c5851e4a07dc9305b2a0 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 9 May 2024 15:32:23 +0800 Subject: [PATCH 079/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=BA=8F=E8=A8=80?= =?UTF-8?q?=E9=83=A8=E5=88=86=E7=9B=B8=E5=85=B3=E5=9B=BE=E7=89=87=E3=80=81?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01.Data-Structures-Algorithms.md | 14 +++++++------- .../00.Introduction/02.Algorithm-Complexity.md | 8 ++++---- Contents/00.Introduction/03.LeetCode-Guide.md | 18 +++++++++--------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/Contents/00.Introduction/01.Data-Structures-Algorithms.md b/Contents/00.Introduction/01.Data-Structures-Algorithms.md index 2f84fc46..82da3984 100644 --- a/Contents/00.Introduction/01.Data-Structures-Algorithms.md +++ b/Contents/00.Introduction/01.Data-Structures-Algorithms.md @@ -1,4 +1,4 @@ -![](https://qcdn.itcharge.cn/images/202109092112373.png) +![程序=算法+数据结构](https://qcdn.itcharge.cn/images/202109092112373.png) > 数据结构是程序的骨架,而算法则是程序的灵魂。 @@ -46,7 +46,7 @@ 集合结构中的数据元素是无序的,并且每个数据元素都是唯一的,集合中没有相同的数据元素。集合结构很像数学意义上的「集合」。 -![](https://qcdn.itcharge.cn/images/202109092116404.png) +![集合结构](https://qcdn.itcharge.cn/images/20240509150647.png) #### 2. 线性结构 @@ -54,7 +54,7 @@ 线性结构中的数据元素(除了第一个和最后一个元素),左侧和右侧分别只有一个数据与其相邻。线性结构类型包括:数组、链表,以及由它们衍生出来的栈、队列、哈希表。 -![](https://qcdn.itcharge.cn/images/202109092117492.png) +![线性结构](https://qcdn.itcharge.cn/images/20240509150709.png) #### 3. 树形结构 @@ -62,7 +62,7 @@ 最简单的树形结构是二叉树。这种结构可以简单的表示为:根, 左子树, 右子树。 左子树和右子树又有自己的子树。当然除了二叉树,树形结构类型还包括:多叉树、字典树等。 -![](https://qcdn.itcharge.cn/images/202109092118089.png) +![树形结构](https://qcdn.itcharge.cn/images/20240509150724.png) #### 4. 图形结构 @@ -72,7 +72,7 @@ 在图形结构中,任意两个结点之间都可能相关,即结点之间的邻接关系可以是任意的。图形结构类型包括:无向图、有向图、连通图等。 -![](https://qcdn.itcharge.cn/images/202109092119090.png) +![图形结构](https://qcdn.itcharge.cn/images/20240509150831.png) ### 1.2 数据的物理结构 @@ -84,7 +84,7 @@ > **顺序存储结构(Sequential Storage Structure)**:将数据元素存放在一片地址连续的存储单元里,数据元素之间的逻辑关系通过数据元素的存储地址来直接反映。 -![](https://qcdn.itcharge.cn/images/202109092121742.png) +![顺序存储结构](https://qcdn.itcharge.cn/images/20240509150846.png) 在顺序存储结构中,逻辑上相邻的数据元素在物理地址上也必然相邻 。 @@ -94,7 +94,7 @@ > **链式存储结构(Linked Storage Structure)**:将数据元素存放在任意的存储单元里,存储单元可以连续,也可以不连续。 -![](https://qcdn.itcharge.cn/images/202109092120553.png) +![链式存储结构](https://qcdn.itcharge.cn/images/20240509150902.png) 链式存储结构中,逻辑上相邻的数据元素在物理地址上可能相邻,可也能不相邻。其在物理地址上的表现是随机的。链式存储结构中,一般将每个数据元素占用的若干单元的组合称为一个链结点。每个链结点不仅要存放一个数据元素的数据信息,还要存放一个指出这个数据元素在逻辑关系的直接后继元素所在链结点的地址,该地址被称为指针。换句话说,数据元素之间的逻辑关系是通过指针来间接反映的。 diff --git a/Contents/00.Introduction/02.Algorithm-Complexity.md b/Contents/00.Introduction/02.Algorithm-Complexity.md index f672db6b..8d001d38 100644 --- a/Contents/00.Introduction/02.Algorithm-Complexity.md +++ b/Contents/00.Introduction/02.Algorithm-Complexity.md @@ -49,7 +49,7 @@ def algorithm(n): return fact ``` -把上述算法中所有语句的执行次数加起来 $1 + n + n + 1 = 2n + 2$,可以用一个函数 $f(n)$ 来表达语句的执行次数:$f(n) = 2n + 2$。 +把上述算法中所有语句的执行次数加起来 $1 + n + n + 1 = 2 \times n + 2$,可以用一个函数 $f(n)$ 来表达语句的执行次数:$f(n) = 2 \times n + 2$。 则时间复杂度的函数可以表示为:$T(n) = O(f(n))$。它表示的是随着问题规模 n 的增大,算法执行时间的增长趋势跟 $f(n)$ 相同。$O$ 是一种渐进符号,$T(n)$ 称作算法的 **渐进时间复杂度(Asymptotic Time Complexity)**,简称为 **时间复杂度**。 @@ -81,7 +81,7 @@ $\Theta$ 符号渐进地给出了一个函数的上界和下界,如果我们 同样,如果我们只知道函数的下界,可以使用 $\Omega$ 渐进下界符号。 -![](https://qcdn.itcharge.cn/images/202109092356694.png) +![$\Theta$、$O$ 和 $\Omega$ 记号对比](https://qcdn.itcharge.cn/images/202109092356694.png) ### 2.3 时间复杂度计算 @@ -101,11 +101,11 @@ $\Theta$ 符号渐进地给出了一个函数的上界和下界,如果我们 - **加法原则**:总的时间复杂度等于量级最大的基本语句的时间复杂度。 -如果 $T_1(n) = O(f_1(n))$,$T_2(n) = O(f_2(n))$,$T(n) = T_1(n) + T_2(n)$,则 $T(n) = O(f(n)) = max(O(f_1(n)), O(f_2(n))) = O(max(f_1(n), f_2(n)))$。 +如果 $T_1(n) = O(f_1(n))$,$T_2(n) = O(f_2(n))$,$T(n) = T_1(n) + T_2(n)$,则 $T(n) = O(f(n)) = max(O(f_1(n)), \enspace O(f_2(n))) = O(max(f_1(n), \enspace f_2(n)))$。 - **乘法原则**:循环嵌套代码的复杂度等于嵌套内外基本语句的时间复杂度乘积。 -如果 $T_1 = O(f_1(n))$,$T_2 = O(f_2(n))$,$T(n) = T_1(n)T_2(n)$,则 $T(n) = O(f(n)) = O(f_1(n))O(f_2(n)) = O(f_1(n)f_2(n))$。 +如果 $T_1 = O(f_1(n))$,$T_2 = O(f_2(n))$,$T(n) = T_1(n) \times T_2(n)$,则 $T(n) = O(f(n)) = O(f_1(n)) \times O(f_2(n)) = O(f_1(n) \times f_2(n))$。 下面通过实例来说明如何计算时间复杂度。 diff --git a/Contents/00.Introduction/03.LeetCode-Guide.md b/Contents/00.Introduction/03.LeetCode-Guide.md index 74dcf783..01361a11 100644 --- a/Contents/00.Introduction/03.LeetCode-Guide.md +++ b/Contents/00.Introduction/03.LeetCode-Guide.md @@ -16,37 +16,37 @@ LeetCode 上有 $3000+$ 道的编程问题,支持 $16+$ 种编程语言(C、 2. 输入手机号,获取验证码。 3. 输入验证码之后,点击「登录 / 注册」,就注册好了。 -![](https://qcdn.itcharge.cn/images/20210901155409.png) +![LeetCode 注册页面](https://qcdn.itcharge.cn/images/20210901155409.png) ### 2.2 LeetCode 题库 「[题库](https://leetcode.cn/problemset/algorithms/)」是 LeetCode 上最直接的练习入口,在这里可以根据题目的标签、难度、状态进行刷题。也可以按照随机一题开始刷题。 -![](https://qcdn.itcharge.cn/images/20210901155423.png) +![LeetCode 题库页面](https://qcdn.itcharge.cn/images/20210901155423.png) #### 1. 题目标签 LeetCode 的题目涉及了许多算法和数据结构。有贪心,搜索,动态规划,链表,二叉树,哈希表等等,可以通过选择对应标签进行专项刷题,同时也可以看到对应专题的完成度情况。 -![](https://qcdn.itcharge.cn/images/20210901155435.png) +![LeetCode 题目标签](https://qcdn.itcharge.cn/images/20210901155435.png) #### 2. 题目列表 LeetCode 提供了题目的搜索过滤功能。可以筛选相关题单、不同难易程度、题目完成状态、不同标签的题目。还可以根据题目编号、题解数目、通过率、难度、出现频率等进行排序。 -![](https://qcdn.itcharge.cn/images/20210901155450.png) +![LeetCode 题目列表](https://qcdn.itcharge.cn/images/20210901155450.png) #### 3. 当前进度 当前进度提供了一个直观的进度展示。在这里可以看到自己的练习概况。进度会自动展现当前的做题情况。也可以点击「[进度设置](https://leetcode.cn/session/)」创建新的进度,在这里还可以修改、删除相关的进度。 -![](https://qcdn.itcharge.cn/images/20210901155500.png) +![LeetCode 当前进度](https://qcdn.itcharge.cn/images/20210901155500.png) #### 4. 题目详情 从题目大相关题目点击进去,就可以看到这道题目的内容描述和代码编辑器。在这里还可以查看相关的题解和自己的提交记录。 -![](https://qcdn.itcharge.cn/images/20210901155529.png) +![LeetCode 题目详情](https://qcdn.itcharge.cn/images/20210901155529.png) ### 2.3 LeetCode 刷题语言 @@ -62,13 +62,13 @@ LeetCode 提供了题目的搜索过滤功能。可以筛选相关题单、不 在「2.2 LeetCode 题库 —— 4. 题目详情」中我们介绍了题目的相关情况。 -![](https://qcdn.itcharge.cn/images/20210901155529.png) +![LeetCode 题目详情](https://qcdn.itcharge.cn/images/20210901155529.png) 可以看到左侧区域为题目内容描述区域,在这里可以看到题目的内容描述和一些示例数据。而右侧是代码编辑区域,代码编辑区域里边默认显示了待实现的方法。 我们需要在代码编辑器中根据方法给定的参数实现对应的算法,并返回题目要求的结果。然后还要经过「执行代码」测试结果,点击「提交」后,显示执行结果为「**通过**」时,才算完成一道题目。 -![](https://qcdn.itcharge.cn/images/20210901155545.png) +![LeetCode 提交记录](https://qcdn.itcharge.cn/images/20210901155545.png) 总结一下我们的刷题流程为: @@ -146,7 +146,7 @@ class Solution: ##### 思路 2:哈希表 -哈希表中键值对信息为 $target-nums[i] :i,其中 $i$ 为下标。 +哈希表中键值对信息为 $target - nums[i]: i$,其中 $i$ 为下标。 1. 遍历数组,对于每一个数 $nums[i]$: 1. 先查找字典中是否存在 $target - nums[i]$,存在则输出 $target - nums[i]$ 对应的下标和当前数组的下标 $i$。 From 24fb09abdf4b1102e80f613d15815689e732fff8 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 9 May 2024 16:37:36 +0800 Subject: [PATCH 080/158] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Origins/README-Catalogue-List.md | 31 ++++++++++++------------- Assets/Origins/README-Head.md | 19 +++++++++------ Assets/Scripts/create_solutions_list.py | 4 +++- Contents/00.Introduction/index.md | 2 +- Contents/index.md | 31 +++++++++++++------------ README.md | 5 ++-- 6 files changed, 49 insertions(+), 43 deletions(-) diff --git a/Assets/Origins/README-Catalogue-List.md b/Assets/Origins/README-Catalogue-List.md index 47a2bd20..4864aef4 100644 --- a/Assets/Origins/README-Catalogue-List.md +++ b/Assets/Origins/README-Catalogue-List.md @@ -1,16 +1,14 @@ -# 内容章节 - -## 00. 绪论 +### 00. 绪论 - [算法与数据结构](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/01.Data-Structures-Algorithms.md) - [算法复杂度](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/02.Algorithm-Complexity.md) - [LeetCode 入门与攻略](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/03.LeetCode-Guide.md) -- [LeetCode 题解(字典序排序,700+ 道题解)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/04.Solutions-List.md) +- [LeetCode 题解(字典序排序,850+ 道题解)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/04.Solutions-List.md) - [LeetCode 题解(按分类排序,推荐刷题列表 ★★★)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/05.Categories-List.md) - [LeetCode 面试最常考 100 题(按分类排序)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/06.Interview-100-List.md) - [LeetCode 面试最常考 200 题(按分类排序)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/07.Interview-200-List.md) -## 01. 数组 +### 01. 数组 - 数组基础知识 - [数组基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/01.Array-Basic/01.Array-Basic.md) @@ -38,7 +36,7 @@ - [数组滑动窗口知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md) - [数组滑动窗口题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) -## 02. 链表 +### 02. 链表 - 链表基础知识 - [链表基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md) @@ -50,7 +48,7 @@ - [链表双指针知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/03.Linked-List-Two-Pointers/01.Linked-List-Two-Pointers.md) - [链表双指针题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md) -## 03. 堆栈 +### 03. 堆栈 - 堆栈基础知识 - [堆栈基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md) @@ -59,7 +57,7 @@ - [单调栈知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md) - [单调栈题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) -## 04. 队列 +### 04. 队列 - 队列基础知识 - [队列基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md) @@ -68,12 +66,12 @@ - [优先队列知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md) - [优先队列题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md) -## 05. 哈希表 +### 05. 哈希表 - [哈希表知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/05.Hash-Table/01.Hash-Table.md) - [哈希表题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/05.Hash-Table/02.Hash-Table-List.md) -## 06. 字符串 +### 06. 字符串 - 字符串基础知识 - [字符串基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/01.String-Basic/01.String-Basic.md) @@ -93,9 +91,8 @@ - [AC 自动机题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/04.AC-Automaton-List.md) - [后缀数组知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/05.Suffix-Array.md) - [后缀数组题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md) - -## 07. 树 +### 07. 树 - 二叉树 - [树与二叉树基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md) @@ -116,7 +113,7 @@ - [并查集知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/05.Union-Find/01.Union-Find.md) - [并查集题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/05.Union-Find/02.Union-Find-List.md) -## 08. 图论 +### 08. 图论 - 图的基础知识 - [图的定义和分类](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md) @@ -149,7 +146,7 @@ - [Hopcroft-Karp 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/05.Graph-Hopcroft-Karp.md) - [二分图最大匹配题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md) -## 09. 基础算法 +### 09. 基础算法 - 枚举算法 - [枚举算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md) @@ -170,7 +167,7 @@ - [位运算知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md) - [位运算题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) -## 10. 动态规划 +### 10. 动态规划 - 动态规划基础 - [动态规划基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md) @@ -213,4 +210,6 @@ - [四边形不等式优化](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/03.Quadrangle-Optimization.md) - [动态规划优化题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) -## 11. 附加内容 +### 11. 附加内容 + +- [内容完成时间线](./Contents/Others/Update-Time.md) diff --git a/Assets/Origins/README-Head.md b/Assets/Origins/README-Head.md index d1b24470..4a89e73e 100644 --- a/Assets/Origins/README-Head.md +++ b/Assets/Origins/README-Head.md @@ -1,6 +1,6 @@ # 算法通关手册(LeetCode) -## 项目简介 +## 01. 项目简介 - **「算法与数据结构」** 基础知识的讲解教程,「LeetCode」800+ 道题目的详细解析。本项目易于理解,没有大跨度的思维跳跃,项目中使用部分图示、例子来帮助理解。 @@ -8,7 +8,7 @@ - 本教程采用 Python 作为编程语言,要求学习者已有基本 Python 程序设计的知识与经验。 -## 项目地址 +## 02. 项目地址 欢迎右上角 **「Star ⭐️ 」** 和 **「Fork」**,这是对我最大的鼓励和支持。 @@ -18,11 +18,11 @@ - 电子书地址:[https://algo.itcharge.cn](https://algo.itcharge.cn) -![](./Assets/Images/algo-book-light.png) +![电子书浅色模式](./Assets/Images/algo-book-light.png) -![](./Assets/Images/algo-book-dark.png) +![电子书深色模式](./Assets/Images/algo-book-dark.png) -## 关于作者 +## 03. 关于作者 我是一名 iOS / macOS 的开发程序员,另外也是北航软院的一名非全硕士(在读)。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。 @@ -35,7 +35,12 @@ ![](./Assets/Images/itcharge-qr-code.png) -## 版权说明 +## 04. 版权说明 - 本教程采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 -- 本教程题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 +- 本教程题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 + +## 05. 章节目录 + +![章节目录](./Assets/Images/algo-book-contents.png) + diff --git a/Assets/Scripts/create_solutions_list.py b/Assets/Scripts/create_solutions_list.py index ea822b91..74f30d2b 100644 --- a/Assets/Scripts/create_solutions_list.py +++ b/Assets/Scripts/create_solutions_list.py @@ -107,7 +107,7 @@ def merge_readme_file(solotions_output_path, readme_head_path, readme_catalogue_ catalogue_list_lines = catalogue_list_file.readlines() if len(catalogue_list_lines) > 0: catalogue_list_title = catalogue_list_lines[0].strip('\n') - catalogue_list_title = '## [' + catalogue_list_title + '](./Contents/00.Introduction/04.Solutions-List.md)' + catalogue_list_title = '### [' + catalogue_list_title + '](./Contents/00.Introduction/04.Solutions-List.md)' catalogue_list_title = catalogue_list_title.replace('# LeetCode 题解', '12. LeetCode 题解') readme_file.writelines(catalogue_list_title) catalogue_list_file.close() @@ -118,6 +118,7 @@ def merge_readme_file(solotions_output_path, readme_head_path, readme_catalogue_ # 生成 Contents/index.md 文件 content_index_file = open(content_index_path, 'w') content_index_file.writelines("# 算法通关手册(LeetCode)\n\n") + content_index_file.writelines("## 章节目录\n\n") # 将章节目录写入 Contents/index.md 文件中 readme_catelogue_list_file = open(readme_catalogue_list_path) @@ -125,6 +126,7 @@ def merge_readme_file(solotions_output_path, readme_head_path, readme_catalogue_ for catalogue_list_line in catalogue_list_lines: catalogue_list_line = catalogue_list_line.replace('https://github.com/itcharge/LeetCode-Py/blob/main/Contents', '.') content_index_file.write(catalogue_list_line) + readme_catelogue_list_file.close() content_index_file.close() diff --git a/Contents/00.Introduction/index.md b/Contents/00.Introduction/index.md index 7acc1ae5..2cc124f7 100644 --- a/Contents/00.Introduction/index.md +++ b/Contents/00.Introduction/index.md @@ -3,7 +3,7 @@ - [算法与数据结构](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/01.Data-Structures-Algorithms.md) - [算法复杂度](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/02.Algorithm-Complexity.md) - [LeetCode 入门与攻略](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/03.LeetCode-Guide.md) -- [LeetCode 题解(字典序排序,700+ 道题解)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/04.Solutions-List.md) +- [LeetCode 题解(字典序排序,850+ 道题解)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/04.Solutions-List.md) - [LeetCode 题解(按分类排序,推荐刷题列表 ★★★)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/05.Categories-List.md) - [LeetCode 面试最常考 100 题(按分类排序)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/06.Interview-100-List.md) - [LeetCode 面试最常考 200 题(按分类排序)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/07.Interview-200-List.md) \ No newline at end of file diff --git a/Contents/index.md b/Contents/index.md index 9ed2f8a2..98b07992 100644 --- a/Contents/index.md +++ b/Contents/index.md @@ -1,18 +1,18 @@ # 算法通关手册(LeetCode) -# 内容章节 +## 章节目录 -## 00. 绪论 +### 00. 绪论 - [算法与数据结构](./00.Introduction/01.Data-Structures-Algorithms.md) - [算法复杂度](./00.Introduction/02.Algorithm-Complexity.md) - [LeetCode 入门与攻略](./00.Introduction/03.LeetCode-Guide.md) -- [LeetCode 题解(字典序排序,700+ 道题解)](./00.Introduction/04.Solutions-List.md) +- [LeetCode 题解(字典序排序,850+ 道题解)](./00.Introduction/04.Solutions-List.md) - [LeetCode 题解(按分类排序,推荐刷题列表 ★★★)](./00.Introduction/05.Categories-List.md) - [LeetCode 面试最常考 100 题(按分类排序)](./00.Introduction/06.Interview-100-List.md) - [LeetCode 面试最常考 200 题(按分类排序)](./00.Introduction/07.Interview-200-List.md) -## 01. 数组 +### 01. 数组 - 数组基础知识 - [数组基础知识](./01.Array/01.Array-Basic/01.Array-Basic.md) @@ -40,7 +40,7 @@ - [数组滑动窗口知识](./01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md) - [数组滑动窗口题目](./01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) -## 02. 链表 +### 02. 链表 - 链表基础知识 - [链表基础知识](./02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md) @@ -52,7 +52,7 @@ - [链表双指针知识](./02.Linked-List/03.Linked-List-Two-Pointers/01.Linked-List-Two-Pointers.md) - [链表双指针题目](./02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md) -## 03. 堆栈 +### 03. 堆栈 - 堆栈基础知识 - [堆栈基础知识](./03.Stack/01.Stack-Basic/01.Stack-Basic.md) @@ -61,7 +61,7 @@ - [单调栈知识](./03.Stack/02.Monotone-Stack/01.Monotone-Stack.md) - [单调栈题目](./03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) -## 04. 队列 +### 04. 队列 - 队列基础知识 - [队列基础知识](./04.Queue/01.Queue-Basic/01.Queue-Basic.md) @@ -70,12 +70,12 @@ - [优先队列知识](./04.Queue/02.Priority-Queue/01.Priority-Queue.md) - [优先队列题目](./04.Queue/02.Priority-Queue/02.Priority-Queue-List.md) -## 05. 哈希表 +### 05. 哈希表 - [哈希表知识](./05.Hash-Table/01.Hash-Table.md) - [哈希表题目](./05.Hash-Table/02.Hash-Table-List.md) -## 06. 字符串 +### 06. 字符串 - 字符串基础知识 - [字符串基础知识](./06.String/01.String-Basic/01.String-Basic.md) @@ -95,9 +95,8 @@ - [AC 自动机题目](./06.String/03.String-Multi-Pattern-Matching/04.AC-Automaton-List.md) - [后缀数组知识](./06.String/03.String-Multi-Pattern-Matching/05.Suffix-Array.md) - [后缀数组题目](./06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md) - -## 07. 树 +### 07. 树 - 二叉树 - [树与二叉树基础知识](./07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md) @@ -118,7 +117,7 @@ - [并查集知识](./07.Tree/05.Union-Find/01.Union-Find.md) - [并查集题目](./07.Tree/05.Union-Find/02.Union-Find-List.md) -## 08. 图论 +### 08. 图论 - 图的基础知识 - [图的定义和分类](./08.Graph/01.Graph-Basic/01.Graph-Basic.md) @@ -151,7 +150,7 @@ - [Hopcroft-Karp 算法](./08.Graph/05.Graph-Bipartite/05.Graph-Hopcroft-Karp.md) - [二分图最大匹配题目](./08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md) -## 09. 基础算法 +### 09. 基础算法 - 枚举算法 - [枚举算法知识](./09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md) @@ -172,7 +171,7 @@ - [位运算知识](./09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md) - [位运算题目](./09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) -## 10. 动态规划 +### 10. 动态规划 - 动态规划基础 - [动态规划基础知识](./10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md) @@ -215,4 +214,6 @@ - [四边形不等式优化](./10.Dynamic-Programming/11.DP-Optimization/03.Quadrangle-Optimization.md) - [动态规划优化题目](./10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) -## 11. 附加内容 +### 11. 附加内容 + +- [内容完成时间线](./Contents/Others/Update-Time.md) diff --git a/README.md b/README.md index a3dac973..aa3b6ab1 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,8 @@ ## 04. 版权说明 - 本教程采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 -- 本教程题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 +- 本教程题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 + ## 05. 章节目录 ![章节目录](./Assets/Images/algo-book-contents.png) @@ -136,7 +137,6 @@ - [AC 自动机题目](./Contents/06.String/03.String-Multi-Pattern-Matching/04.AC-Automaton-List.md) - [后缀数组知识](./Contents/06.String/03.String-Multi-Pattern-Matching/05.Suffix-Array.md) - [后缀数组题目](./Contents/06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md) - ### 07. 树 @@ -259,5 +259,4 @@ ### 11. 附加内容 - [内容完成时间线](./Contents/Others/Update-Time.md) - ### [12. LeetCode 题解(已完成 859 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file From 50623e10f0ab167048e9d053bbe105867bbbb2f7 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 9 May 2024 22:13:52 +0800 Subject: [PATCH 081/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=2001.=20=E6=95=B0?= =?UTF-8?q?=E7=BB=84=20=E7=9B=B8=E5=85=B3=E5=9B=BE=E7=89=87=E3=80=81?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01.Array/01.Array-Basic/01.Array-Basic.md | 12 ++---------- .../02.Array-Sort/01.Array-Bubble-Sort.md | 4 ++-- .../02.Array-Sort/02.Array-Selection-Sort.md | 16 ++++++++-------- .../02.Array-Sort/03.Array-Insertion-Sort.md | 4 ++-- .../02.Array-Sort/04.Array-Shell-Sort.md | 2 +- .../02.Array-Sort/05.Array-Merge-Sort.md | 4 ++-- .../02.Array-Sort/06.Array-Quick-Sort.md | 18 +++++++++--------- .../02.Array-Sort/07.Array-Heap-Sort.md | 10 +++++++--- .../02.Array-Sort/08.Array-Counting-Sort.md | 4 ++-- .../02.Array-Sort/09.Array-Bucket-Sort.md | 4 ++-- .../02.Array-Sort/10.Array-Radix-Sort.md | 4 ++-- .../01.Array-Binary-Search-01.md | 1 - .../01.Array-Two-Pointers.md | 6 +++--- .../01.Array-Sliding-Window.md | 6 +++--- 14 files changed, 45 insertions(+), 50 deletions(-) diff --git a/Contents/01.Array/01.Array-Basic/01.Array-Basic.md b/Contents/01.Array/01.Array-Basic/01.Array-Basic.md index 1c5f4011..74451466 100644 --- a/Contents/01.Array/01.Array-Basic/01.Array-Basic.md +++ b/Contents/01.Array/01.Array-Basic/01.Array-Basic.md @@ -8,7 +8,7 @@ 以整数数组为例,数组的存储方式如下图所示。 -![数组](https://qcdn.itcharge.cn/images/20210913163542.png) +![数组](https://qcdn.itcharge.cn/images/202405091955166.png) 如上图所示,假设数据元素的个数为 $n$,则数组中的每一个数据元素都有自己的下标索引,下标索引从 $0$ 开始,到 $n - 1$ 结束。数组中的每一个「下标索引」,都有一个与之相对应的「数据元素」。 @@ -37,7 +37,7 @@ 以二维数组为例,数组的形式如下图所示。 -![二维数组](https://qcdn.itcharge.cn/images/20210916222435.png) +![二维数组](https://qcdn.itcharge.cn/images/202405091957859.png) 二维数组是一个由 $m$ 行 $n$ 列数据元素构成的特殊结构,其本质上是以数组作为数据元素的数组,即 **「数组的数组」**。二维数组的第一维度表示行,第二维度表示列。 @@ -235,17 +235,9 @@ print(arr) ## 参考资料 - 【文章】[数据结构中的数组和不同语言中数组的区别 - CSDN 博客](https://blog.csdn.net/sinat_14913533/article/details/102763573) - - 【文章】[数组理论基础 - 代码随想录](https://programmercarl.com/数组理论基础.html#数组理论基础) - - 【文章】[Python 与 Java 中容器对比:List - 知乎](https://zhuanlan.zhihu.com/p/120312437) - - 【文章】[什么是数组 - 漫画算法 - 小灰的算法之旅 - 力扣](https://leetcode.cn/leetbook/read/journey-of-algorithm/5ozchs/) - - 【文章】[数组 - 数据结构与算法之美 - 极客时间](https://time.geekbang.org/column/intro/100017301) - - 【书籍】数据结构教程 第 2 版 - 唐发根 著 - - 【书籍】数据结构与算法 Python 语言描述 - 裘宗燕 著 - - diff --git a/Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md b/Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md index 6dc7a253..e1dd3bc9 100644 --- a/Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md +++ b/Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md @@ -62,9 +62,9 @@ 4. 经过第 $2$ 趟排序,使得数组中第 $2$ 个值最大元素被安置在第 $n$ 个位置上。 3. 依次类推,重复上述「冒泡」过程,直到某一趟排序过程中不出现元素交换位置的动作,则排序结束。 -我们以 $[5, 2, 3, 6, 1, 4]$ 为例,演示一下冒泡排序的整个过程。 +我们以 $[5, 2, 3, 6, 1, 4]$ 为例,演示一下冒泡排序算法的整个步骤。 -![冒泡排序](http://qcdn.itcharge.cn/images/20230816154510.png) +![冒泡排序算法步骤](https://qcdn.itcharge.cn/images/20230816154510.png) ## 3. 冒泡排序代码实现 diff --git a/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md b/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md index 5bd13d0b..6d7ba879 100644 --- a/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md +++ b/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md @@ -21,37 +21,37 @@ 3. 此时,$[0, 1]$ 为已排序区间,$[2, n - 1]$(总共 $n - 2$ 个元素)为未排序区间。 4. 依次类推,对剩余未排序区间重复上述选择过程,直到所有元素都划分到已排序区间,排序结束。 -我们以 $[5, 2, 3, 6, 1, 4]$ 为例,演示一下选择排序的整个过程。 +我们以 $[5, 2, 3, 6, 1, 4]$ 为例,演示一下选择排序的整个步骤。 ::: tabs#selectionSort @tab <1> -![选择排序 1](http://qcdn.itcharge.cn/images/20230816155042.png) +![选择排序 1](https://qcdn.itcharge.cn/images/20230816155042.png) @tab <2> -![选择排序 2](http://qcdn.itcharge.cn/images/20230816155017.png) +![选择排序 2](https://qcdn.itcharge.cn/images/20230816155017.png) @tab <3> -![选择排序 3](http://qcdn.itcharge.cn/images/20230816154955.png) +![选择排序 3](https://qcdn.itcharge.cn/images/20230816154955.png) @tab <4> -![选择排序 4](http://qcdn.itcharge.cn/images/20230816154924.png) +![选择排序 4](https://qcdn.itcharge.cn/images/20230816154924.png) @tab <5> -![选择排序 5](http://qcdn.itcharge.cn/images/20230816154859.png) +![选择排序 5](https://qcdn.itcharge.cn/images/20230816154859.png) @tab <6> -![选择排序 6](http://qcdn.itcharge.cn/images/20230816154836.png) +![选择排序 6](https://qcdn.itcharge.cn/images/20230816154836.png) @tab <7> -![选择排序 7](http://qcdn.itcharge.cn/images/20230816153324.png) +![选择排序 7](https://qcdn.itcharge.cn/images/20230816153324.png) ::: diff --git a/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md b/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md index 07881db9..1506e567 100644 --- a/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md +++ b/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md @@ -24,9 +24,9 @@ 4. 插入元素后有序区间变为 $[0, 2]$,无序区间变为 $[3, n - 1]$。 4. 依次类推,对剩余无序区间中的元素重复上述插入过程,直到所有元素都插入到有序区间中,排序结束。 -我们以 $[5, 2, 3, 6, 1, 4]$ 为例,演示一下插入排序的整个过程。 +我们以 $[5, 2, 3, 6, 1, 4]$ 为例,演示一下插入排序算法的整个步骤。 -![插入排序](http://qcdn.itcharge.cn/images/20230816175619.png) +![插入排序算法步骤](http://qcdn.itcharge.cn/images/20230816175619.png) ## 3. 插入排序代码实现 diff --git a/Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md b/Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md index e0e9aa93..a203d1d7 100644 --- a/Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md +++ b/Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md @@ -15,7 +15,7 @@ 4. 减少间隔数,并重新将整个数组按新的间隔数分成若干个子数组,再分别对各个子数组进行排序。 5. 依次类推,直到间隔数 $gap$ 值为 $1$,最后进行一次排序,排序结束。 -我们以 $[7, 2, 6, 8, 0, 4, 1, 5, 9, 3]$ 为例,演示一下希尔排序的整个过程。 +我们以 $[7, 2, 6, 8, 0, 4, 1, 5, 9, 3]$ 为例,演示一下希尔排序的整个步骤。 ::: tabs#shellSort diff --git a/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md b/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md index af223533..6b9e7981 100644 --- a/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md +++ b/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md @@ -20,9 +20,9 @@ 5. 将另一个子数组中的剩余元素存入到结果数组 $nums$ 中。 6. 返回合并后的有序数组 $nums$。 -我们以 $[0, 5, 7, 3, 1, 6, 8, 4]$ 为例,演示一下归并排序的整个过程。 +我们以 $[0, 5, 7, 3, 1, 6, 8, 4]$ 为例,演示一下归并排序算法的整个步骤。 -![归并排序](http://qcdn.itcharge.cn/images/20230817103814.png) +![归并排序算法步骤](http://qcdn.itcharge.cn/images/20230817103814.png) ## 3. 归并排序代码实现 diff --git a/Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md b/Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md index 297f03fe..061051f2 100644 --- a/Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md +++ b/Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md @@ -28,37 +28,37 @@ @tab <1> -![哨兵划分 1](http://qcdn.itcharge.cn/images/20230818175908.png) +![哨兵划分 1](https://qcdn.itcharge.cn/images/20230818175908.png) @tab <2> -![哨兵划分 2](http://qcdn.itcharge.cn/images/20230818175922.png) +![哨兵划分 2](https://qcdn.itcharge.cn/images/20230818175922.png) @tab <3> -![哨兵划分 3](http://qcdn.itcharge.cn/images/20230818175952.png) +![哨兵划分 3](https://qcdn.itcharge.cn/images/20230818175952.png) @tab <4> -![哨兵划分 4](http://qcdn.itcharge.cn/images/20230818180001.png) +![哨兵划分 4](https://qcdn.itcharge.cn/images/20230818180001.png) @tab <5> -![哨兵划分 5](http://qcdn.itcharge.cn/images/20230818180009.png) +![哨兵划分 5](https://qcdn.itcharge.cn/images/20230818180009.png) @tab <6> -![哨兵划分 6](http://qcdn.itcharge.cn/images/20230818180019.png) +![哨兵划分 6](https://qcdn.itcharge.cn/images/20230818180019.png) @tab <7> -![哨兵划分 7](http://qcdn.itcharge.cn/images/20230818180027.png) +![哨兵划分 7](https://qcdn.itcharge.cn/images/20230818180027.png) ::: -在经过一次「哨兵划分」过程之后,数组就被划分为左子数组、基准数、右子树组三个独立部分。接下来只要对划分好的左右子数组分别进行递归排序即可完成排序。整个步骤如下: +在经过一次「哨兵划分」过程之后,数组就被划分为左子数组、基准数、右子树组三个独立部分。接下来只要对划分好的左右子数组分别进行递归排序即可完成排序。快速排序算法的整个步骤如下: -![快速排序](http://qcdn.itcharge.cn/images/20230818153642.png) +![快速排序算法步骤](https://qcdn.itcharge.cn/images/20230818153642.png) ## 3. 快速排序代码实现 diff --git a/Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md b/Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md index 4cde705e..cea58140 100644 --- a/Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md +++ b/Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md @@ -13,7 +13,13 @@ ### 1.2 堆的存储结构 -堆的逻辑结构就是一颗完全二叉树。而我们在「07.树 - 01.二叉树 - 01.树与二叉树的基础知识」章节中学过,对于完全二叉树(尤其是满二叉树)来说,采用顺序存储结构(数组)的形式来表示完全二叉树,能够充分利用存储空间。 +堆的逻辑结构就是一颗完全二叉树。如下图所示: + +![堆的逻辑结构](https://qcdn.itcharge.cn/images/202405092006120.png) + +而我们在「07.树 - 01.二叉树 - 01.树与二叉树的基础知识」章节中学过,对于完全二叉树(尤其是满二叉树)来说,采用顺序存储结构(数组)的形式来表示完全二叉树,能够充分利用存储空间。如下图所示: + +![使用顺序存储结构(数组)表示堆](https://qcdn.itcharge.cn/images/202405092007823.png) 当我们使用顺序存储结构(即数组)来表示堆时,堆中元素的节点编号与数组的索引关系为: @@ -26,8 +32,6 @@ class MaxHeap: self.max_heap = [] ``` -![堆的存储结构](https://qcdn.itcharge.cn/images/20230824154601.png) - ### 1.3 访问堆顶元素 > **访问堆顶元素**:指的是从堆结构中获取位于堆顶的元素。 diff --git a/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md b/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md index 05e4c2e1..bc1ef75b 100644 --- a/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md +++ b/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md @@ -17,9 +17,9 @@ 1. 将其填充到结果数组 $res$ 的索引 $counts[num - nums\underline{\hspace{0.5em}}min]$ 处。 2. 放入后,令累积计数数组中对应索引减 $1$,从而得到下个元素 $num$ 的放置位置。 -我们以 $[3, 0, 4, 2, 5, 1, 3, 1, 4, 5]$ 为例,演示一下计数排序的整个步骤。 +我们以 $[3, 0, 4, 2, 5, 1, 3, 1, 4, 5]$ 为例,演示一下计数排序算法的整个步骤。 -![计数排序](https://qcdn.itcharge.cn/images/20230822135634.png) +![计数排序算法步骤](https://qcdn.itcharge.cn/images/20230822135634.png) ## 3. 计数排序代码实现 diff --git a/Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md b/Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md index 7e42d6f7..4fdce2e4 100644 --- a/Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md +++ b/Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md @@ -11,9 +11,9 @@ 3. **对每个桶进行排序**:对每个非空桶内的元素单独排序(使用插入排序、归并排序、快排排序等算法)。 4. **合并桶内元素**:将排好序的各个桶中的元素按照区间顺序依次合并起来,形成一个完整的有序数组。 -我们以 $[39, 49, 8, 13, 22, 15, 10, 30, 5, 44]$ 为例,演示一下桶排序的整个步骤。 +我们以 $[39, 49, 8, 13, 22, 15, 10, 30, 5, 44]$ 为例,演示一下桶排序算法的整个步骤。 -![桶排序](http://qcdn.itcharge.cn/images/20230822153701.png) +![桶排序算法步骤](https://qcdn.itcharge.cn/images/20230822153701.png) ## 3. 桶排序代码实现 diff --git a/Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md b/Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md index e19f8651..a36b7a58 100644 --- a/Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md +++ b/Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md @@ -17,9 +17,9 @@ 3. 清空原始数组,然后按照桶的顺序依次取出对应元素,重新加入到原始数组中。 -我们以 $[692, 924, 969, 503, 871, 704, 542, 436]$ 为例,演示一下基数排序的整个步骤。 +我们以 $[692, 924, 969, 503, 871, 704, 542, 436]$ 为例,演示一下基数排序算法的整个步骤。 -![基数排序](http://qcdn.itcharge.cn/images/20230822171758.png) +![基数排序算法步骤](https://qcdn.itcharge.cn/images/20230822171758.png) ## 3. 基数排序代码实现 diff --git a/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md b/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md index 5bbecfca..2f1d1dab 100644 --- a/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md +++ b/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md @@ -101,7 +101,6 @@ 输出: 4 解释: 9 出现在 nums 中并且下标为 4 - 输入: nums = [-1,0,3,5,9,12], target = 2 输出: -1 解释: 2 不存在 nums 中因此返回 -1 diff --git a/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md b/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md index 2f2d18c7..4afd494c 100644 --- a/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md +++ b/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md @@ -8,7 +8,7 @@ > **对撞指针**:指的是两个指针 $left$、$right$ 分别指向序列第一个元素和最后一个元素,然后 $left$ 指针不断递增,$right$ 不断递减,直到两个指针的值相撞(即 $left == right$),或者满足其他要求的特殊条件为止。 -![对撞指针](https://qcdn.itcharge.cn/images/20230906165407.png) +![对撞指针](https://qcdn.itcharge.cn/images/202405092155032.png) ### 2.1 对撞指针求解步骤 @@ -272,7 +272,7 @@ class Solution: > **快慢指针**:指的是两个指针从同一侧开始遍历序列,且移动的步长一个快一个慢。移动快的指针被称为 「快指针(fast)」,移动慢的指针被称为「慢指针(slow)」。两个指针以不同速度、不同策略移动,直到快指针移动到数组尾端,或者两指针相交,或者满足其他特殊条件时为止。 -![快慢指针](https://qcdn.itcharge.cn/images/20230906173808.png) +![快慢指针](https://qcdn.itcharge.cn/images/202405092156465.png) ### 3.1 快慢指针求解步骤 @@ -376,7 +376,7 @@ class Solution: > **分离双指针**:两个指针分别属于不同的数组,两个指针分别在两个数组中移动。 -![分离双指针](https://qcdn.itcharge.cn/images/20230906180852.png) +![分离双指针](https://qcdn.itcharge.cn/images/202405092157828.png) ### 4.1 分离双指针求解步骤 diff --git a/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md b/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md index 56b7a0db..910d6d5f 100644 --- a/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md +++ b/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md @@ -9,7 +9,7 @@ 滑动窗口利用了双指针中的快慢指针技巧,我们可以将滑动窗口看做是快慢指针两个指针中间的区间,也可以将滑动窗口看做是快慢指针的一种特殊形式。 -![滑动窗口](https://qcdn.itcharge.cn/images/20230907105115.png) +![滑动窗口](https://qcdn.itcharge.cn/images/202405092203225.png) ## 2. 滑动窗口适用范围 @@ -29,7 +29,7 @@ > **固定长度滑动窗口算法(Fixed Length Sliding Window)**:在给定数组 / 字符串上维护一个固定长度的窗口。可以对窗口进行滑动操作、缩放操作,以及维护最优解操作。 -![固定长度滑动窗口](https://qcdn.itcharge.cn/images/20230907110356.png) +![固定长度滑动窗口](https://qcdn.itcharge.cn/images/202405092204712.png) ### 3.1 固定长度滑动窗口算法步骤 @@ -149,7 +149,7 @@ class Solution: > **不定长度滑动窗口算法(Sliding Window)**:在给定数组 / 字符串上维护一个不定长度的窗口。可以对窗口进行滑动操作、缩放操作,以及维护最优解操作。 -![不定长度滑动窗口](https://qcdn.itcharge.cn/images/20230907132630.png) +![不定长度滑动窗口](https://qcdn.itcharge.cn/images/202405092206553.png) ### 4.1 不定长度滑动窗口算法步骤 From e39813b495257b085640e72c3346e488c7d7868c Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 9 May 2024 22:37:38 +0800 Subject: [PATCH 082/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E9=93=BE=E8=A1=A8?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E7=9F=A5=E8=AF=86=20=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=9B=BE=E7=89=87=E3=80=81=E5=9B=BE=E7=89=87=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01.Linked-List-Basic.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md b/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md index c0fef36e..84ad3f7f 100644 --- a/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md +++ b/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md @@ -8,7 +8,7 @@ 以单链表为例,链表的存储方式如下图所示。 -![](https://qcdn.itcharge.cn/images/20211208180037.png) +![链表](https://qcdn.itcharge.cn/images/202405092229936.png) 如上图所示,链表通过将一组任意的存储单元串联在一起。其中,每个数据元素占用若干存储单元的组合称为一个「链节点」。为了将所有的节点串起来,每个链节点不仅要存放一个数据元素的值,还要存放一个指出这个数据元素在逻辑关系上的直接后继元素所在链节点的地址,该地址被称为「后继指针 $next$」。 @@ -28,7 +28,7 @@ - **双向链表特点**:从双链表的任意一个节点开始,都可以很方便的访问它的前驱节点和后继节点。 -![](https://qcdn.itcharge.cn/images/20211208103220.png) +![双向链表](https://qcdn.itcharge.cn/images/202405092230869.png) ### 1.3 循环链表 @@ -36,7 +36,7 @@ - **循环链表特点**:从循环链表的任何一个节点出发都能找到任何其他节点。 -![](https://qcdn.itcharge.cn/images/20211208180048.png) +![循环链表](https://qcdn.itcharge.cn/images/202405092230094.png) 接下来我们以最基本的「单链表」为例,介绍一下链表的基本操作。 @@ -157,7 +157,7 @@ def find(self, val): > 2. 然后将 $node$ 的 $next$ 指针指向链表的头节点 $head$。 > 3. 再将链表的头节点 $head$ 指向 $node$。 -![](https://qcdn.itcharge.cn/images/20211208180101.png) +![链表头部插入元素](https://qcdn.itcharge.cn/images/202405092231514.png) **「链表头部插入元素」** 的代码如下: @@ -180,7 +180,7 @@ def insertFront(self, val): > 3. 通过链节点的 $next$ 指针移动 $cur$ 指针,从而遍历链表,直到 $cur.next$ 为 $None$。 > 4. 令 $cur.next$ 指向将新的链节点 $node$。 -![](https://qcdn.itcharge.cn/images/20211208180111.png) +![链表尾部插入元素](https://qcdn.itcharge.cn/images/202405092232023.png) **「链表尾部插入元素」** 的代码如下: @@ -207,7 +207,7 @@ def insertRear(self, val): > 5. 将 $node.next$ 指向 $cur.next$。 > 6. 然后令 $cur.next$ 指向 $node$。 -![](https://qcdn.itcharge.cn/images/20211208180121.png) +![链表中间插入元素](https://qcdn.itcharge.cn/images/202405092232900.png) **「链表中间插入元素」** 的代码如下: @@ -274,7 +274,7 @@ def change(self, index, val): > > 1. 直接将 $self.head$ 沿着 $next$ 指针向右移动一步即可。 -![](https://qcdn.itcharge.cn/images/20211208180131.png) +![链表头部删除元素](https://qcdn.itcharge.cn/images/202405092231281.png) **「链表头部删除元素」** 的代码如下: @@ -294,7 +294,7 @@ def removeFront(self): > 1. 先使用指针变量 $cur$ 沿着 $next$ 指针移动到倒数第 $2$ 个链节点。 > 2. 然后将此节点的 $next$ 指针指向 $None$ 即可。 -![](https://qcdn.itcharge.cn/images/20211208180138.png) +![链表尾部删除元素](https://qcdn.itcharge.cn/images/202405092232050.png) **「链表尾部删除元素」** 的代码如下: @@ -319,7 +319,7 @@ def removeRear(self): > 1. 先使用指针变量 $cur$ 移动到第 $i - 1$ 个位置的链节点。 > 2. 然后将 $cur$ 的 $next$ 指针,指向要第 $i$ 个元素的下一个节点即可。 -![](https://qcdn.itcharge.cn/images/20211208180144.png) +![链表中间删除元素](https://qcdn.itcharge.cn/images/202405092233332.png) **「链表中间删除元素」** 的代码如下: From 6763e99d5bb3757e55c7b84bd1738d88c7ce9ffe Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 9 May 2024 22:45:34 +0800 Subject: [PATCH 083/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=2002.02.01=20?= =?UTF-8?q?=E5=A0=86=E6=A0=88=E5=9F=BA=E7=A1=80=E7=9F=A5=E8=AF=86=20?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=9B=BE=E7=89=87=E3=80=81=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md b/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md index 53312052..ae4d37c9 100644 --- a/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md +++ b/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md @@ -9,7 +9,7 @@ - 栈的插入操作又称为「入栈」或者「进栈」。 - 栈的删除操作又称为「出栈」或者「退栈」。 -![](https://qcdn.itcharge.cn/images/20211202095938.png) +![堆栈结构](https://qcdn.itcharge.cn/images/202405092243204.png) 简单来说,栈是一种 **「后进先出(Last In First Out)」** 的线性表,简称为 **「LIFO 结构」**。 @@ -57,7 +57,7 @@ #### 2.2.1 堆栈的顺序存储基本描述 -![](https://qcdn.itcharge.cn/images/20211202101936.png) +![堆栈的顺序存储](https://qcdn.itcharge.cn/images/202405092243306.png) 我们约定 $self.top$ 指向栈顶元素所在位置。 @@ -114,7 +114,7 @@ class Stack: 堆栈的顺序存储结构保留着顺序存储分配空间的固有缺陷,即在栈满或者其他需要重新调整存储空间时需要移动大量元素。为此,堆栈可以采用链式存储方式来实现。在 Python 中我们通过构造链表节点 $Node$ 的方式来实现。这种采用链式存储结构的堆栈也被称为 **「链式栈」**。 -![](https://qcdn.itcharge.cn/images/20211202103327.png) +![堆栈的链式存储](https://qcdn.itcharge.cn/images/202405092243367.png) #### 2.3.1 堆栈的链式存储基本描述 From fcab6b9dba1bf8079eeea99b8a2939b748672a8c Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 10 May 2024 00:07:11 +0800 Subject: [PATCH 084/158] Update 01.Queue-Basic.md --- Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md b/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md index 60618482..7529aa10 100644 --- a/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md +++ b/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md @@ -9,7 +9,7 @@ - 队列的插入操作又称为「入队」。 - 队列的删除操作又称为「出队」。 -![](https://qcdn.itcharge.cn/images/20211204211538.png) +![队列结构](https://qcdn.itcharge.cn/images/202405092254785.png) 简单来说,队列是一种 **「先进先出(First In First Out)」** 的线性表,简称为 **「FIFO 结构」**。 @@ -56,7 +56,7 @@ #### 2.2.1 队列的顺序存储基本描述 -![](https://qcdn.itcharge.cn/images/20211204211607.png) +![队列的顺序存储](https://qcdn.itcharge.cn/images/202405092254909.png) 为了算法设计上的方便以及算法本身的简单,我们约定:队头指针 $self.front$ 指向队头元素所在位置的前一个位置,而队尾指针 $self.rear$ 指向队尾元素所在位置。 @@ -176,7 +176,7 @@ def dequeue(self): 下面我们以「方式 3」中特意空出来一个位置的处理方式为例,对循环队列的顺序存储做一下基本描述。 -![](https://qcdn.itcharge.cn/images/20220109164459.png) +![循环队列的顺序存储](https://qcdn.itcharge.cn/images/202405092254537.png) 我们约定:$self.size$ 为循环队列的最大元素个数。队头指针 $self.front$ 指向队头元素所在位置的前一个位置,而队尾指针 $self.rear$ 指向队尾元素所在位置。 @@ -253,7 +253,7 @@ class Queue: #### 2.3.1 队列的链式存储基本描述 -![](https://qcdn.itcharge.cn/images/20211204211644.png) +![队列的链式存储](https://qcdn.itcharge.cn/images/202405092255125.png) 我们约定:队头指针 $self.front$ 指向队头元素所在位置的前一个位置,而队尾指针 $self.rear$ 指向队尾元素所在位置。 From 81544f41258099a2a2158abdb2b7e140f16d2b3b Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 10 May 2024 00:07:16 +0800 Subject: [PATCH 085/158] Update 01.Priority-Queue.md --- Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md b/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md index b958db65..e5edcfc6 100644 --- a/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md +++ b/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md @@ -9,7 +9,7 @@ 优先队列的示例图如下所示。 -![](https://qcdn.itcharge.cn/images/20220109170709.png) +![优先队列](https://qcdn.itcharge.cn/images/202405092258900.png) ## 2. 优先队列的适用场景 From 8487306d5df73b7078651a9779d3cf1b00319f39 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 10 May 2024 00:07:19 +0800 Subject: [PATCH 086/158] Update 01.Hash-Table.md --- Contents/05.Hash-Table/01.Hash-Table.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Contents/05.Hash-Table/01.Hash-Table.md b/Contents/05.Hash-Table/01.Hash-Table.md index 43ada76c..b9f4aa8c 100644 --- a/Contents/05.Hash-Table/01.Hash-Table.md +++ b/Contents/05.Hash-Table/01.Hash-Table.md @@ -11,7 +11,7 @@ 哈希表的原理示例图如下所示: -![](https://qcdn.itcharge.cn/images/20220114120000.png) +![哈希表](https://qcdn.itcharge.cn/images/202405092317578.png) 在上图例子中,我们使用 $value = Hash(key) = key // 1000$ 作为哈希函数。$//$ 符号代表整除。我们以这个例子来说明一下哈希表的插入和查找策略。 @@ -25,7 +25,7 @@ 比如为了查找 **「赞」** 这个字的具体意思,我们在字典中根据这个字的拼音索引 `zan`,查找到对应的页码为 $599$。然后我们就可以翻到字典的第 $599$ 页查看 **「赞」** 字相关的解释了。 -![](https://qcdn.itcharge.cn/images/20220111174223.png) +![查字典](https://qcdn.itcharge.cn/images/20220111174223.png) 在这个例子中: @@ -120,7 +120,7 @@ $343246_{13} = 3 \times 13^5 + 4 \times 13^4 + 3 \times 13^3 + 2 \times 13^2 + 4 使用这三种方法处理冲突的结果如下图所示: -![](https://qcdn.itcharge.cn/images/20220115162728.png) +![开放地址法](https://qcdn.itcharge.cn/images/202405092318809.png) ### 3.2 链地址法 @@ -136,7 +136,7 @@ $343246_{13} = 3 \times 13^5 + 4 \times 13^4 + 3 \times 13^3 + 2 \times 13^2 + 4 举个例子来说明如何使用链地址法处理冲突。假设现在要存入的关键字集合 $keys = [88, 60, 65, 69, 90, 39, 07, 06, 14, 44, 52, 70, 21, 45, 19, 32]$。再假定哈希函数为 $Hash(key) = key \mod 13$,哈希表的表长 $m = 13$,哈希地址范围为 $[0, m - 1]$。将这些关键字使用链地址法处理冲突,并按顺序加入哈希表中(图示为插入链表表尾位置),最终得到的哈希表如下图所示。 -![](https://qcdn.itcharge.cn/images/20220115182535.png) +![链地址法](https://qcdn.itcharge.cn/images/202405092319327.png) 相对于开放地址法,采用链地址法处理冲突要多占用一些存储空间(主要是链节点占用空间)。但它可以减少在进行插入和查找具有相同哈希地址的关键字的操作过程中的平均查找长度。这是因为在链地址法中,待比较的关键字都是具有相同哈希地址的元素,而在开放地址法中,待比较的关键字不仅包含具有相同哈希地址的元素,而且还包含哈希地址不相同的元素。 From 537e79887d56510c49998906e27484a366afa5fe Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 10 May 2024 00:07:24 +0800 Subject: [PATCH 087/158] Update 05.Graph-Topological-Sorting.md --- .../08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md b/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md index cc4ac7bb..1827ab2f 100644 --- a/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md +++ b/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md @@ -4,7 +4,7 @@ 图的拓扑排序是针对有向无环图(DAG)来说的,无向图和有向有环图没有拓扑排序,或者说不存在拓扑排序。 -![](https://qcdn.itcharge.cn/images/20230504153551.png) +![有向无环图](https://qcdn.itcharge.cn/images/202405092308713.png) 如上图中的有向无环图(DAG)所示,$v_1 \rightarrow v_2 \rightarrow v_3 \rightarrow v_4 \rightarrow v_5 \rightarrow v_6$ 是该图的一个拓扑序列。与此同时,$v_1 \rightarrow v_2 \rightarrow v_3 \rightarrow v_4 \rightarrow v_6 \rightarrow v_5$ 也是该图的一个拓扑序列。也就是说,对于一个有向无环图来说,拓扑序列可能不止一个。 From d15d7748b2b148fef3858c451868cc807ecf20db Mon Sep 17 00:00:00 2001 From: ITCharge Date: Sat, 11 May 2024 17:40:41 +0800 Subject: [PATCH 088/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=2006.=20=20=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=20=E7=9B=B8=E5=85=B3=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E3=80=81=E5=9B=BE=E7=89=87=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01.String-Basic/01.String-Basic.md | 6 +- .../01.String-Brute-Force.md | 2 +- .../02.String-Rabin-Karp.md | 6 +- .../03.String-KMP.md | 8 +- .../04.String-Boyer-Moore.md | 152 ++++++++++-------- .../05.String-Horspool.md | 36 ++--- .../06.String-Sunday.md | 40 ++--- 7 files changed, 138 insertions(+), 112 deletions(-) diff --git a/Contents/06.String/01.String-Basic/01.String-Basic.md b/Contents/06.String/01.String-Basic/01.String-Basic.md index 9d0020f7..ea4b95d2 100644 --- a/Contents/06.String/01.String-Basic/01.String-Basic.md +++ b/Contents/06.String/01.String-Basic/01.String-Basic.md @@ -20,7 +20,7 @@ str = "Hello World" 在示例代码中,$str$ 是一个字符串的变量名称,`Hello World` 则是该字符串的值,字符串的长度为 $11$。该字符串的表示如下图所示: -![](https://qcdn.itcharge.cn/images/20220117141211.png) +![字符串](https://qcdn.itcharge.cn/images/20240511114722.png) 可以看出来,字符串和数组有很多相似之处。比如同样使用 **名称[下标]** 的方式来访问一个字符。 @@ -116,7 +116,7 @@ ASCII 编码可以解决以英语为主的语言,可是无法满足中文编 字符串的顺序存储结构如下图所示。 -![](https://qcdn.itcharge.cn/images/20220118151100.png) +![字符串的顺序存储](https://qcdn.itcharge.cn/images/20240511114747.png) 如上图所示,字符串的顺序存储中每一个字符元素都有自己的下标索引,下标所以从 $0$ 开始,到 $\text{字符串长度} - 1$ 结束。字符串中每一个「下标索引」,都有一个与之对应的「字符元素」。 @@ -130,7 +130,7 @@ ASCII 编码可以解决以英语为主的语言,可是无法满足中文编 字符串的链式存储结构图下图所示。 -![](https://qcdn.itcharge.cn/images/20220118152105.png) +![字符串的链式存储](https://qcdn.itcharge.cn/images/20240511114804.png) 如上图所示,字符串的链式存储将一组任意的存储单元串联在一起。链节点之间的逻辑关系是通过指针来间接反映的。 diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md b/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md index 9ce5d689..bdabf56f 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md @@ -4,7 +4,7 @@ > > - **BF 算法思想**:对于给定文本串 $T$ 与模式串 $p$,从文本串的第一个字符开始与模式串 $p$ 的第一个字符进行比较,如果相等,则继续逐个比较后续字符,否则从文本串 $T$ 的第二个字符起重新和模式串 $p$ 进行比较。依次类推,直到模式串 $p$ 中每个字符依次与文本串 $T$ 的一个连续子串相等,则模式匹配成功。否则模式匹配失败。 -![](https://qcdn.itcharge.cn/images/20220205003716.png) +![朴素匹配算法](https://qcdn.itcharge.cn/images/20240511154456.png) ## 2. Brute Force 算法步骤 diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md b/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md index 9adc6642..16239bff 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md @@ -32,17 +32,17 @@ RK 算法中的滚动哈希算法主要是利用了 **「Rabin fingerprint 思 比如 `"cat"` 的哈希值就可以表示为: -$\begin{aligned} Hash(cat) &= c \times 26 \times 26 + a \times 26 + t \times 1 \cr &= 2 \times 26 \times 26 + 0 \times 26 + 19 \times 1 \cr &= 1371 \end{aligned}$ +$$\begin{aligned} Hash(cat) &= c \times 26 \times 26 + a \times 26 + t \times 1 \cr &= 2 \times 26 \times 26 + 0 \times 26 + 19 \times 1 \cr &= 1371 \end{aligned}$$ 这种按位计算哈希值的哈希函数有一个特点:在计算相邻子串时,可以利用上一个子串的哈希值。 比如说 $cat$ 的相邻子串为 `"ate"`。按照刚才哈希函数计算,可以得出 `"ate"` 的哈希值为: -$\begin{aligned} Hash(ate) &= a \times 26 \times 26 + t \times 26 + e \times 1 \cr &= 0 \times 26 \times 26 + 19 \times 26 + 4 \times 1 \cr &= 498 \end{aligned}$ +$$\begin{aligned} Hash(ate) &= a \times 26 \times 26 + t \times 26 + e \times 1 \cr &= 0 \times 26 \times 26 + 19 \times 26 + 4 \times 1 \cr &= 498 \end{aligned}$$ 如果利用上一个子串 `"cat"` 的哈希值计算 `"ate"`,则 `"ate"` 的哈希值为: -$\begin{aligned} Hash(ate) &= (Hash(cat) - c \times 26 \times 26) * 26 + e \times 26 \cr &= (1371 - 2 \times 26 \times 26) \times 26 + 4 \times 1 \cr &= 498 \end{aligned}$ +$$\begin{aligned} Hash(ate) &= (Hash(cat) - c \times 26 \times 26) * 26 + e \times 26 \cr &= (1371 - 2 \times 26 \times 26) \times 26 + 4 \times 1 \cr &= 498 \end{aligned}$$ 可以看出,这两种方式计算出的哈希值是相同的。但是第二种计算方式不需要再遍历子串,只需要进行一位字符的计算即可得出整个子串的哈希值。这样每次计算子串哈希值的时间复杂度就降到了 $O(1)$。然后我们就可以通过滚动哈希算法快速计算出子串的哈希值了。 diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md b/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md index 60e22075..c71bf049 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md @@ -8,7 +8,7 @@ 在朴素匹配算法的匹配过程中,我们分别用指针 $i$ 和指针 $j$ 指示文本串 $T$ 和模式串 $p$ 中当前正在对比的字符。当发现文本串 $T$ 的某个字符与模式串 $p$ 不匹配的时候,$j$ 回退到开始位置,$i$ 回退到之前匹配开始位置的下一个位置上,然后开启新一轮的匹配,如图所示。 -![](https://qcdn.itcharge.cn/images/20220205003716.png) +![朴素匹配算法](https://qcdn.itcharge.cn/images/20240511154456.png) 这样,在 Brute Force 算法中,如果从文本串 $T[i]$ 开始的这一趟字符串比较失败了,算法会直接开始尝试从 $T[i + 1]$ 开始比较。如果 $i$ 已经比较到了后边位置,则该操作相当于将指针 $i$ 进行了回退操作。 @@ -33,7 +33,7 @@ 那么我们就可以将文本串中的 $T[i + 5]$ 对准模式串中的 $p[2]$,继续进行对比。这样 $i$ 就不再需要回退了,可以一直向右移动匹配下去。在这个过程中,我们只需要将模式串 $j$ 进行回退操作即可。 -![](https://qcdn.itcharge.cn/images/20220205003701.png) +![KMP 匹配算法移动过程 1](https://qcdn.itcharge.cn/images/20240511155900.png) KMP 算法就是使用了这样的思路,对模式串 $p$ 进行了预处理,计算出一个 **「部分匹配表」**,用一个数组 $next$ 来记录。然后在每次失配发生时,不回退文本串的指针 $i$,而是根据「部分匹配表」中模式串失配位置 $j$ 的前一个位置的值,即 $next[j - 1]$ 的值来决定模式串可以向右移动的位数。 @@ -59,7 +59,7 @@ KMP 算法就是使用了这样的思路,对模式串 $p$ 进行了预处理 在之前的例子中,当 $p[5]$ 和 $T[i + 5]$ 匹配失败后,根据模式串失配位置 $j$ 的前一个位置的值,即 $next[4] = 2$,我们直接让 $T[i + 5]$ 直接对准了 $p[2]$,然后继续进行比对,如下图所示。 -![](https://qcdn.itcharge.cn/images/20220205003647.png) +![KMP 匹配算法移动过程 2](https://qcdn.itcharge.cn/images/20240511161310.png) **但是这样移动的原理是什么?** @@ -142,7 +142,7 @@ print(kmp("ababbbbaaabbbaaa", "bbbb")) - KMP 算法在构造前缀表阶段的时间复杂度为 $O(m)$,其中 $m$ 是模式串 $p$ 的长度。 - KMP 算法在匹配阶段,是根据前缀表不断调整匹配的位置,文本串的下标 $i$ 并没有进行回退,可以看出匹配阶段的时间复杂度是 $O(n)$,其中 $n$ 是文本串 $T$ 的长度。 -- 所以 KMP 整个算法的时间复杂度是 $O(n + m)$,相对于朴素匹配算法的 $O(n * m)$ 的时间复杂度,KMP 算法的效率有了很大的提升。 +- 所以 KMP 整个算法的时间复杂度是 $O(n + m)$,相对于朴素匹配算法的 $O(n \times m)$ 的时间复杂度,KMP 算法的效率有了很大的提升。 ## 参考资料 diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md b/Contents/06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md index dc54e5f2..d12149b9 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md @@ -2,11 +2,11 @@ > **Boyer Moore 算法**:简称为 BM 算法,是由它的两位发明者 Robert S. Boyer 和 J Strother Moore 的名字来命名的。BM 算法是他们在 1977 年提出的高效字符串搜索算法。在实际应用中,比 KMP 算法要快 3~5 倍。 > -> - **BM 算法思想**:对于给定文本串 `T` 与模式串 `p`,先对模式串 `p` 进行预处理。然后在匹配的过程中,当发现文本串 `T` 的某个字符与模式串 `p` 不匹配的时候,根据启发策略,能够直接尽可能地跳过一些无法匹配的情况,将模式串多向后滑动几位。 +> - **BM 算法思想**:对于给定文本串 $T$ 与模式串 $p$,先对模式串 $p$ 进行预处理。然后在匹配的过程中,当发现文本串 $T$ 的某个字符与模式串 $p$ 不匹配的时候,根据启发策略,能够直接尽可能地跳过一些无法匹配的情况,将模式串多向后滑动几位。 BM 算法的精髓在于使用了两种不同的启发策略来计算后移位数:**「坏字符规则(The Bad Character Rule)」** 和 **「好后缀规则(The Good Suffix Shift Rule)」**。 -这两种启发策略的计算过程只与模式串 `p` 相关,而与文本串 `T` 无关。因此在对模式串 `p` 进行预处理时,可以预先生成「坏字符规则后移表」和「好后缀规则后移表」,然后在匹配的过程中,只需要比较一下两种策略下最大的后移位数进行后移即可。 +这两种启发策略的计算过程只与模式串 $p$ 相关,而与文本串 $T$ 无关。因此在对模式串 $p$ 进行预处理时,可以预先生成「坏字符规则后移表」和「好后缀规则后移表」,然后在匹配的过程中,只需要比较一下两种策略下最大的后移位数进行后移即可。 同时,还需要注意一点。BM 算法在移动模式串的时候和常规匹配算法一样是从左到右进行,但是在进行比较的时候是从右到左,即基于后缀进行比较。 @@ -16,25 +16,25 @@ BM 算法的精髓在于使用了两种不同的启发策略来计算后移位 ### 2.1 坏字符规则 -> **坏字符规则(The Bad Character Rule)**:当文本串 `T` 中某个字符跟模式串 `p` 的某个字符不匹配时,则称文本串 `T` 中这个失配字符为 **「坏字符」**,此时模式串 `p` 可以快速向右移动。 +> **坏字符规则(The Bad Character Rule)**:当文本串 $T$ 中某个字符跟模式串 $p$ 的某个字符不匹配时,则称文本串 $T$ 中这个失配字符为 **「坏字符」**,此时模式串 $p$ 可以快速向右移动。 「坏字符规则」的移动位数分为两种情况: -- **情况 1:坏字符出现在模式串 `p` 中**。 +- **情况 1:坏字符出现在模式串 $p$ 中**。 - 这种情况下,可将模式串中最后一次出现的坏字符与文本串中的坏字符对齐,如下图所示。 - **向右移动位数 = 坏字符在模式串中的失配位置 - 坏字符在模式串中最后一次出现的位置**。 -![](https://qcdn.itcharge.cn/images/20220128162720.png) +![情况 1:坏字符出现在模式串 p 中](https://qcdn.itcharge.cn/images/20240511164026.png) -- **情况 2:坏字符没有出现在模式串 `p` 中**。 +- **情况 2:坏字符没有出现在模式串 $p$ 中**。 - 这种情况下,可将模式串向右移动一位,如下图所示。 - **向右移动位数 = 坏字符在模式串中的失配位置 + 1**。 -![](https://qcdn.itcharge.cn/images/20220128162735.png) +![情况 2:坏字符没有出现在模式串 p 中](https://qcdn.itcharge.cn/images/20240511164048.png) ### 2.2 好后缀规则 -> **好后缀规则(The Good Suffix Shift Rule)**:当文本串 `T` 中某个字符跟模式串 `p` 的某个字符不匹配时,则称文本串 `T` 中已经匹配好的字符串为 **「好后缀」**,此时模式串 `p` 可以快速向右移动。 +> **好后缀规则(The Good Suffix Shift Rule)**:当文本串 $T$ 中某个字符跟模式串 $p$ 的某个字符不匹配时,则称文本串 $T$ 中已经匹配好的字符串为 **「好后缀」**,此时模式串 $p$ 可以快速向右移动。 「好后缀规则」的移动方式分为三种情况: @@ -42,92 +42,118 @@ BM 算法的精髓在于使用了两种不同的启发策略来计算后移位 - 这种情况下,移动模式串,让该子串和好后缀对齐即可。如果超过一个子串匹配上好后缀,则选择最右侧的子串对齐,如下图所示。 - **向右移动位数 = 好后缀的最后一个字符在模式串中的位置 - 匹配的子串最后一个字符出现的位置**。 -![](https://qcdn.itcharge.cn/images/20220128162537.png) +![情况 1:模式串中有子串匹配上好后缀](https://qcdn.itcharge.cn/images/20240511164101.png) - **情况 2:模式串中无子串匹配上好后缀,但有最长前缀匹配好后缀的后缀**。 - 这种情况下,我们需要在模式串的前缀中寻找一个最长前缀,该前缀等于好后缀的后缀。找到该前缀后,让该前缀和好后缀的后缀对齐。 - **向右移动位数 = 好后缀的后缀的最后一个字符在模式串中的位置 - 最长前缀的最后一个字符出现的位置**。 -![](https://qcdn.itcharge.cn/images/20220128162600.png) +![情况 2:模式串中无子串匹配上好后缀, 但有最长前缀匹配好后缀的后缀](https://qcdn.itcharge.cn/images/20240511164112.png) - **情况 3:模式串中无子串匹配上好后缀,也找不到前缀匹配**。 - 可将模式串整个右移。 - **向右移动位数 = 模式串的长度**。 -![](https://qcdn.itcharge.cn/images/20220128162651.png) +![情况 3:模式串中无子串匹配上好后缀,也找不到前缀匹配](https://qcdn.itcharge.cn/images/20240511164124.png) ## 3. Boyer Moore 算法匹配过程示例 下面我们根据 J Strother Moore 教授给出的例子,先来介绍一下 BF 算法的匹配过程,顺便加深对 **「坏字符规则」** 和 **「好后缀规则」** 的理解。 -1. 假设文本串为 `"HERE IS A SIMPLE EXAMPLE"`,模式串为 `"EXAMPLE"`,如下图所示。 +::: tabs#Boyer-Moore -![](https://qcdn.itcharge.cn/images/20220127164130.png) +@tab <1> -2. 首先,令模式串与文本串的头部对齐,然后从模式串的尾部开始逐位比较,如下图所示。 +假设文本串为 `"HERE IS A SIMPLE EXAMPLE"`,模式串为 `"EXAMPLE"`,如下图所示。 -![](https://qcdn.itcharge.cn/images/20220127164140.png) +![Boyer Moore 算法步骤 1](https://qcdn.itcharge.cn/images/20220127164130.png) -可以看出来,`'S'` 与 `'E'` 不匹配。这时候,不匹配的字符 `'S'` 就被称为「坏字符(Bad Character)」,对应着模式串的第 `6` 位。并且 `'S'` 并不包含在模式串 `"EXAMPLE"` 中(相当于`'S'` 在模式串中最后一次出现的位置是 `-1`)。根据「坏字符规则」,可以把模式串直接向右移动 `6 - (-1) = 7` 位,即将文本串中 `'S'` 的后一位上。 +@tab <2> -3. 将模式串向右移动 `7` 位。然后依然从模式串尾部开始比较,发现 `'P'` 和 `'E'` 不匹配,则 `'P'` 是坏字符,如下图所示。 +首先,令模式串与文本串的头部对齐,然后从模式串的尾部开始逐位比较,如下图所示。 -![](https://qcdn.itcharge.cn/images/20220127164151.png) +![Boyer Moore 算法步骤 2](https://qcdn.itcharge.cn/images/20220127164140.png) -但是 `'P'` 包含在模式串 `"EXAMPLE"` 中,`'P'` 这个坏字符在模式串中的失配位置是第 `6` 位,并且在模式串中最后一次出现的位置是 `4`(编号从 `0` 开始)。 +可以看出来,`'S'` 与 `'E'` 不匹配。这时候,不匹配的字符 `'S'` 就被称为「坏字符(Bad Character)」,对应着模式串的第 $6$ 位。并且 `'S'` 并不包含在模式串 `"EXAMPLE"` 中(相当于`'S'` 在模式串中最后一次出现的位置是 $-1$)。根据「坏字符规则」,可以把模式串直接向右移动 $6 - (-1) = 7$​ 位,即将文本串中 `'S'` 的后一位上。 -4. 根据「坏字符规则」,可以将模式串直接向右移动 `6 - 4 = 2` 位,将文本串的 `'P'` 和模式串中的 `'P'` 对齐,如下图所示。 +@tab <3> -![](https://qcdn.itcharge.cn/images/20220127164202.png) +将模式串向右移动 $7$ 位。然后依然从模式串尾部开始比较,发现 `'P'` 和 `'E'` 不匹配,则 `'P'` 是坏字符,如下图所示。 -5. 我们继续从尾部开始逐位比较。先比较文本串的 `'E'` 和模式串的 `'E'`,如下图所示。可以看出文本串的 `'E'` 和模式串的 `'E'` 匹配,则 `"E"` 为好后缀,`"E"` 在模式串中的位置为 `6`(编号从 `0` 开始)。 +![Boyer Moore 算法步骤 3](https://qcdn.itcharge.cn/images/20220127164151.png) -![](https://qcdn.itcharge.cn/images/20220127164212.png) +但是 `'P'` 包含在模式串 `"EXAMPLE"` 中,`'P'` 这个坏字符在模式串中的失配位置是第 $6$ 位,并且在模式串中最后一次出现的位置是 $4$(编号从 $0$​ 开始)。 -6. 继续比较前面一位,即文本串的 `'L'` 和模式串的 `'L'`,如下图所示。可以看出文本串的 `'L'` 和模式串的 `'L'` 匹配。则 `"LE"` 为好后缀,`"LE"` 在模式串中的位置为 `6`(编号从 `0` 开始)。 +@tab <4> -![](https://qcdn.itcharge.cn/images/20220127164222.png) +根据「坏字符规则」,可以将模式串直接向右移动 $6 - 4 = 2$ 位,将文本串的 `'P'` 和模式串中的 `'P'` 对齐,如下图所示。 -7. 继续比较前面一位,即文本串中的 `'P'` 和模式串中的 `'P'`,如下图所示。可以看出文本串中的 `'P'` 和模式串中的 `'P'` 匹配,则 `"PLE"` 为好后缀,`"PLE"` 在模式串中的位置为 `6`(编号从 `0` 开始)。 +![Boyer Moore 算法步骤 4](https://qcdn.itcharge.cn/images/20220127164202.png) -![](https://qcdn.itcharge.cn/images/20220127164232.png) +@tab <5> -8. 继续比较前面一位,即文本串中的 `'M'` 和模式串中的 `'M'`,如下图所示。可以看出文本串中的 `'M'` 和模式串中的 `'M'` 匹配,则 `"MPLE"` 为好后缀。`"MPLE"` 在模式串中的位置为 `6`(编号从 `0` 开始)。 +我们继续从尾部开始逐位比较。先比较文本串的 `'E'` 和模式串的 `'E'`,如下图所示。可以看出文本串的 `'E'` 和模式串的 `'E'` 匹配,则 `"E"` 为好后缀,`"E"` 在模式串中的位置为 $6$(编号从 $0$ 开始)。 -![](https://qcdn.itcharge.cn/images/20220127164241.png) +![Boyer Moore 算法步骤 5](https://qcdn.itcharge.cn/images/20220127164212.png) -9. 继续比较前面一位,即文本串中的 `'I'` 和模式串中的 `'A'`,如下图所示。可以看出文本串中的 `'I'` 和模式串中的 `'A'` 不匹配。 +@tab <6> -![](https://qcdn.itcharge.cn/images/20220127164251.png) +继续比较前面一位,即文本串的 `'L'` 和模式串的 `'L'`,如下图所示。可以看出文本串的 `'L'` 和模式串的 `'L'` 匹配。则 `"LE"` 为好后缀,`"LE"` 在模式串中的位置为 $6$(编号从 $0$ 开始)。 -此时,如果按照「坏字符规则」,模式串应该向右移动 `2 - (-1) = 3` 位。但是根据「好后缀规则」,我们还有更好的移动方法。 +![Boyer Moore 算法步骤 6](https://qcdn.itcharge.cn/images/20220127164222.png) -在好后缀 `"MPLE"` 和好后缀的后缀 `"PLE"`、`"LE"`、`"E"` 中,只有好后缀的后缀 `"E"` 和模式串中的前缀 `"E"` 相匹配,符合好规则的第二种情况。好后缀的后缀 `"E"` 的最后一个字符在模式串中的位置为 `6`,最长前缀 `"E"`的最后一个字符出现的位置为 `0`,则根据「好后缀规则」,可以将模式串直接向右移动 `6 - 0 = 6` 位。如下图所示。 +@tab <7> -![](https://qcdn.itcharge.cn/images/20220127164301.png) +继续比较前面一位,即文本串中的 `'P'` 和模式串中的 `'P'`,如下图所示。可以看出文本串中的 `'P'` 和模式串中的 `'P'` 匹配,则 `"PLE"` 为好后缀,`"PLE"` 在模式串中的位置为 $6$(编号从 $0$ 开始)。 -10. 继续从模式串的尾部开始逐位比较,如下图所示。 +![Boyer Moore 算法步骤 7](https://qcdn.itcharge.cn/images/20220127164232.png) -可以看出,`'P'` 与`'E'` 不匹配,`'P'` 是坏字符。根据「坏字符规则」,可以将模式串直接向右移动 `6 - 4 = 2` 位,如下图所示。 +@tab <8> -![](https://qcdn.itcharge.cn/images/20220127164312.png) +继续比较前面一位,即文本串中的 `'M'` 和模式串中的 `'M'`,如下图所示。可以看出文本串中的 `'M'` 和模式串中的 `'M'` 匹配,则 `"MPLE"` 为好后缀。`"MPLE"` 在模式串中的位置为 $6$(编号从 $0$ 开始)。 -11. 继续从模式串的尾部开始逐位比较,发现模式串全部匹配,于是搜索结束,返回模式串在文本串中的位置。 +![Boyer Moore 算法步骤 8](https://qcdn.itcharge.cn/images/20220127164241.png) + +@tab <9> + +继续比较前面一位,即文本串中的 `'I'` 和模式串中的 `'A'`,如下图所示。可以看出文本串中的 `'I'` 和模式串中的 `'A'` 不匹配。 + +![Boyer Moore 算法步骤 9-1](https://qcdn.itcharge.cn/images/20220127164251.png) + +此时,如果按照「坏字符规则」,模式串应该向右移动 $2 - (-1) = 3$ 位。但是根据「好后缀规则」,我们还有更好的移动方法。 + +在好后缀 `"MPLE"` 和好后缀的后缀 `"PLE"`、`"LE"`、`"E"` 中,只有好后缀的后缀 `"E"` 和模式串中的前缀 `"E"` 相匹配,符合好规则的第二种情况。好后缀的后缀 `"E"` 的最后一个字符在模式串中的位置为 $6$,最长前缀 `"E"`的最后一个字符出现的位置为 $0$,则根据「好后缀规则」,可以将模式串直接向右移动 $6 - 0 = 6$ 位。如下图所示。 + +![Boyer Moore 算法步骤 9-2](https://qcdn.itcharge.cn/images/20220127164301.png) + +@tab <10> + +继续从模式串的尾部开始逐位比较,如下图所示。 + +可以看出,`'P'` 与`'E'` 不匹配,`'P'` 是坏字符。根据「坏字符规则」,可以将模式串直接向右移动 $6 - 4 = 2$ 位,如下图所示。 + +![Boyer Moore 算法步骤 10](https://qcdn.itcharge.cn/images/20220127164312.png) + +@tab <11> + +继续从模式串的尾部开始逐位比较,发现模式串全部匹配,于是搜索结束,返回模式串在文本串中的位置。 + +::: ## 4. Boyer Moore 算法步骤 整个 BM 算法步骤描述如下: -1. 计算出文本串 `T` 的长度为 `n`,模式串 `p` 的长度为 `m`。 -2. 先对模式串 `p` 进行预处理,生成坏字符位置表 `bc_table` 和好后缀规则后移位数表 `gs_talbe`。 -3. 将模式串 `p` 的头部与文本串 `T` 对齐,将 `i` 指向文本串开始位置,即 `i = 0`。`j` 指向模式串末尾位置,即 `j = m - 1`,然后从模式串末尾位置开始进行逐位比较。 - 1. 如果文本串对应位置 `T[i + j]` 上的字符与 `p[j]` 相同,则继续比较前一位字符。 - 1. 如果模式串全部匹配完毕,则返回模式串 `p` 在文本串中的开始位置 `i`。 - 2. 如果文本串对应位置 `T[i + j]` 上的字符与 `p[j]` 不相同,则: - 1. 根据坏字符位置表计算出在「坏字符规则」下的移动距离 `bad_move`。 - 2. 根据好后缀规则后移位数表计算出在「好后缀规则」下的移动距离 `good_mode`。 - 3. 取两种移动距离的最大值,然后对模式串进行移动,即 `i += max(bad_move, good_move)`。 -4. 如果移动到末尾也没有找到匹配情况,则返回 `-1`。 +1. 计算出文本串 $T$ 的长度为 $n$,模式串 $p$ 的长度为 $m$。 +2. 先对模式串 $p$ 进行预处理,生成坏字符位置表 $bc\underline{\hspace{0.5em}}table$ 和好后缀规则后移位数表 $gs\underline{\hspace{0.5em}}talbe$。 +3. 将模式串 $p$ 的头部与文本串 $T$ 对齐,将 $i$ 指向文本串开始位置,即 $i = 0$。$j$ 指向模式串末尾位置,即 $j = m - 1$,然后从模式串末尾位置开始进行逐位比较。 + 1. 如果文本串对应位置 $T[i + j]$ 上的字符与 $p[j]$ 相同,则继续比较前一位字符。 + 1. 如果模式串全部匹配完毕,则返回模式串 $p$ 在文本串中的开始位置 $i$。 + 2. 如果文本串对应位置 $T[i + j]$ 上的字符与 $p[j]$ 不相同,则: + 1. 根据坏字符位置表计算出在「坏字符规则」下的移动距离 $bad\underline{\hspace{0.5em}}move$。 + 2. 根据好后缀规则后移位数表计算出在「好后缀规则」下的移动距离 $good\underline{\hspace{0.5em}}mode$。 + 3. 取两种移动距离的最大值,然后对模式串进行移动,即 $i += max(bad\underline{\hspace{0.5em}}move, good\underline{\hspace{0.5em}}move)$。 +4. 如果移动到末尾也没有找到匹配情况,则返回 $-1$。 ## 5. Boyer Moore 算法代码实现 @@ -137,11 +163,11 @@ BM 算法的匹配过程实现起来并不是很难,而整个算法实现的 生成坏字符位置表的代码实现比较简单。具体步骤如下: -- 使用一个哈希表 `bc_table`, `bc_table[bad_char]` 表示坏字符 `bad_char` 在模式串中出现的最右位置。 +- 使用一个哈希表 $bc\underline{\hspace{0.5em}}table$, $bc\underline{\hspace{0.5em}}table[bad\underline{\hspace{0.5em}}char]$ 表示坏字符 $bad\underline{\hspace{0.5em}}char$ 在模式串中出现的最右位置。 -- 遍历模式串,以当前字符 `p[i]` 为键,所在位置下标为值存入字典中。如果出现重复字符,则新的位置下标值会将之前存放的值覆盖掉。这样哈希表中存放的就是该字符在模式串中出现的最右侧位置。 +- 遍历模式串,以当前字符 $p[i]$ 为键,所在位置下标为值存入字典中。如果出现重复字符,则新的位置下标值会将之前存放的值覆盖掉。这样哈希表中存放的就是该字符在模式串中出现的最右侧位置。 -这样如果在 BM 算法的匹配过程中,如果 `bad_char` 不在 `bc_table` 中时,可令 `bad_char` 在模式串中出现的最右侧位置为 `-1`。如果 `bad_char` 在 `bc_table` 中时,`bad_char` 在模式串中出现的最右侧位置就是 `bc_table[bad_char]`。这样就可以根据公式计算出可以向右移动的位数了。 +这样如果在 BM 算法的匹配过程中,如果 $bad\underline{\hspace{0.5em}}char$ 不在 $bc\underline{\hspace{0.5em}}table$ 中时,可令 $bad\underline{\hspace{0.5em}}char$ 在模式串中出现的最右侧位置为 $-1$。如果 $bad\underline{\hspace{0.5em}}char$ 在 $bc\underline{\hspace{0.5em}}table$ 中时,$bad\underline{\hspace{0.5em}}char$ 在模式串中出现的最右侧位置就是 $bc\underline{\hspace{0.5em}}table[bad\underline{\hspace{0.5em}}char]$。这样就可以根据公式计算出可以向右移动的位数了。 生成坏字符位置表的代码如下: @@ -158,9 +184,9 @@ def generateBadCharTable(p: str): ### 5.2 生成好后缀规则后移位数表代码实现 -为了生成好后缀规则后移位数表,我们需要先定义一个后缀数组 `suffix`,其中 `suffix[i] = s` 表示为以下标 `i` 为结尾的子串与模式串后缀匹配的最大长度为 `s`。即满足 `p[i-s...i] == p[m-1-s, m-1]` 的最大长度为 `s`。 +为了生成好后缀规则后移位数表,我们需要先定义一个后缀数组 $suffix$,其中 $suffix[i] = s$ 表示为以下标 $i$ 为结尾的子串与模式串后缀匹配的最大长度为 $s$。即满足 $p[i-s...i] == p[m-1-s, m-1]$ 的最大长度为 $s$。 -构建 `suffix` 数组的代码如下: +构建 $suffix$ 数组的代码如下: ```python # 生成 suffix 数组 @@ -176,21 +202,21 @@ def generageSuffixArray(p: str): return suffix ``` -有了 `suffix` 数组,我们就可以在此基础上定义好后缀规则后移位数表 `gs_list`。我们使用一个数组来表示好后缀规则后移位数表。其中 `gs_list[j]` 表示在 `j` 下标处遇到坏字符时,可根据好规则向右移动的距离。 +有了 $suffix$ 数组,我们就可以在此基础上定义好后缀规则后移位数表 $gs\underline{\hspace{0.5em}}list$。我们使用一个数组来表示好后缀规则后移位数表。其中 $gs\underline{\hspace{0.5em}}list[j]$ 表示在 $j$ 下标处遇到坏字符时,可根据好规则向右移动的距离。 -由 `2.2 好后缀规则` 中可知,好后缀规则的移动方式可以分为三种情况。 +由 「2.2 好后缀规则」 中可知,好后缀规则的移动方式可以分为三种情况。 - 情况 1:模式串中有子串匹配上好后缀。 - 情况 2:模式串中无子串匹配上好后缀,但有最长前缀匹配好后缀的后缀。 - 情况 3:模式串中无子串匹配上好后缀,也找不到前缀匹配。 -这 3 种情况中,情况 2 和情况 3 可以合并,因为情况 3 可以看做是匹配到的最长前缀长度为 `0`。而如果遇到一个坏字符同时满足多种情况,则我们应该选择满足情况中最小的移动距离才不会漏掉可能匹配的情况,比如说当模式串中既有子串可以匹配上好后缀,又有前缀可以匹配上好后缀的后缀,则应该按照前者的方式移动模式串。 +这 3 种情况中,情况 2 和情况 3 可以合并,因为情况 3 可以看做是匹配到的最长前缀长度为 $0$。而如果遇到一个坏字符同时满足多种情况,则我们应该选择满足情况中最小的移动距离才不会漏掉可能匹配的情况,比如说当模式串中既有子串可以匹配上好后缀,又有前缀可以匹配上好后缀的后缀,则应该按照前者的方式移动模式串。 -- 为了得到精确的 `gs_list[j]`,我们可以先假定所有情况都为情况 3,即 `gs_list[i] = m`。 -- 然后通过后缀和前缀匹配的方法,更新情况 2 下 `gs_list` 中坏字符位置处的值,即 `gs_list[j] = m - 1 - i`,其中 `j` 是好后缀前的坏字符位置,`i` 是最长前缀的末尾位置,`m - 1 - i` 是可向右移动的距离。 -- 最后再计算情况 1 下 `gs_list` 中坏字符位置处的值,更新在好后缀的左端点处(`m - 1 - suffix[i]` 处)遇到坏字符可向后移动位数,即 `gs_list[m - 1 - suffix[i]] = m - 1 - i`。 +- 为了得到精确的 $gs\underline{\hspace{0.5em}}list[j]$​,我们可以先假定所有情况都为情况 3,即 $gs\underline{\hspace{0.5em}}list[i] = m$​。 +- 然后通过后缀和前缀匹配的方法,更新情况 2 下 $gs\underline{\hspace{0.5em}}list$ 中坏字符位置处的值,即 $gs\underline{\hspace{0.5em}}list[j] = m - 1 - i$,其中 $j$ 是好后缀前的坏字符位置,$i$ 是最长前缀的末尾位置,$m - 1 - i$ 是可向右移动的距离。 +- 最后再计算情况 1 下 $gs\underline{\hspace{0.5em}}list$ 中坏字符位置处的值,更新在好后缀的左端点处($m - 1 - suffix[i]$ 处)遇到坏字符可向后移动位数,即 $gs\underline{\hspace{0.5em}}list[m - 1 - suffix[i]] = m - 1 - i$。 -生成好后缀规则后移位数表 `gs_list` 代码如下: +生成好后缀规则后移位数表 $gs\underline{\hspace{0.5em}}list$ 代码如下: ```python # 生成好后缀规则后移位数表 @@ -293,9 +319,9 @@ print(boyerMoore("", "")) ## 6. Boyer Moore 算法分析 - BM 算法在预处理阶段的时间复杂度为 $O(n + \sigma)$,其中 $\sigma$ 是字符集的大小。 -- BM 算法在搜索阶段最好情况是每次匹配时,模式串 `p` 中不存在与文本串 `T` 中第一个匹配的字符。这时的时间复杂度为 $O(n / m)$。 -- BM 算法在搜索阶段最差情况是文本串 `T` 中有多个重复的字符,并且模式串 `p` 中有 `m - 1` 个相同字符前加一个不同的字符组成。这时的时间复杂度为 $O(m * n)$。 -- 当模式串 `p` 是非周期性的,在最坏情况下,BM 算法最多需要进行 $3 * n$ 次字符比较操作。 +- BM 算法在搜索阶段最好情况是每次匹配时,模式串 $p$ 中不存在与文本串 $T$ 中第一个匹配的字符。这时的时间复杂度为 $O(n / m)$。 +- BM 算法在搜索阶段最差情况是文本串 $T$ 中有多个重复的字符,并且模式串 $p$ 中有 $m - 1$ 个相同字符前加一个不同的字符组成。这时的时间复杂度为 $O(m * n)$。 +- 当模式串 $p$ 是非周期性的,在最坏情况下,BM 算法最多需要进行 $3 * n$ 次字符比较操作。 ## 参考资料 diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md b/Contents/06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md index be831fc1..fa272ee8 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md @@ -2,37 +2,37 @@ > **Horspool 算法**:是一种在字符串中查找子串的算法,它是由 Nigel Horspool 教授于 1980 年出版的,是首个对 Boyer Moore 算法进行简化的算法。 > -> - **Horspool 算法思想**:对于给定文本串 `T` 与模式串 `p`,先对模式串 `p` 进行预处理。然后在匹配的过程中,当发现文本串 `T` 的某个字符与模式串 `p` 不匹配的时候,根据启发策略,能够尽可能的跳过一些无法匹配的情况,将模式串多向后滑动几位。 +> - **Horspool 算法思想**:对于给定文本串 $T$ 与模式串 $p$,先对模式串 $p$ 进行预处理。然后在匹配的过程中,当发现文本串 $T$ 的某个字符与模式串 $p$ 不匹配的时候,根据启发策略,能够尽可能的跳过一些无法匹配的情况,将模式串多向后滑动几位。 -可以看出,Horspool 算法思想和 Boyer Moore 算法思想是一致的。Horspool 算法是在 Boyer Moore 算法思想基础上改进了「坏字符规则」。当文本串 `T` 中某个字符跟模式串 `p` 的某个字符不匹配时,可以模式串 `p` 快速向右移动。 +可以看出,Horspool 算法思想和 Boyer Moore 算法思想是一致的。Horspool 算法是在 Boyer Moore 算法思想基础上改进了「坏字符规则」。当文本串 $T$ 中某个字符跟模式串 $p$ 的某个字符不匹配时,可以模式串 $p$ 快速向右移动。 遇到不匹配字符时,可以根据以下两种情况向右快速进行移动: -- **情况 1:文本串 `T` 中与模式串 `p` 尾部字符 `p[m - 1]` 对应的字符 `T[i + m - 1]` 出现在模式串 `p` 中**。 - - 这种情况下,可将 `T[i + m - 1]` 与模式串中最后一次出现的该字符对齐,如下图所示。 +- **情况 1:文本串 $T$ 中与模式串 $p$ 尾部字符 $p[m - 1]$ 对应的字符 $T[i + m - 1]$ 出现在模式串 $p$ 中**。 + - 这种情况下,可将 $T[i + m - 1]$ 与模式串中最后一次出现的该字符对齐,如下图所示。 - **向右移动位数 = 模式串最后一个字符的位置 - T[i + m - 1] 在模式串中最后一次出现的位置**。 - 注意:模式串最后一个字符的位置其实就是「模式串长度 - 1」。 -![](https://qcdn.itcharge.cn/images/20220128164320.png) +![Horspool 算法情况 1](https://qcdn.itcharge.cn/images/20240511165106.png) -- **情况 2:文本串 `T` 中与模式串 `p` 尾部字符 `p[m - 1]` 对应的字符 `T[i + m - 1]` 没有出现在模式串 `p` 中**。 +- **情况 2:文本串 $T$ 中与模式串 $p$ 尾部字符 $p[m - 1]$ 对应的字符 $T[i + m - 1]$ 没有出现在模式串 $p$ 中**。 - 这种情况下,可将模式串整个右移,如下图所示。 - **向右移动位数 = 整个模式串长度**。 -![](https://qcdn.itcharge.cn/images/20220128164333.png) +![Horspool 算法情况 2](https://qcdn.itcharge.cn/images/20240511165122.png) ## 2. Horspool 算法步骤 整个 Horspool 算法步骤描述如下: -1. 计算出文本串 `T` 的长度为 `n`,模式串 `p` 的长度为 `m`。 -2. 先对模式串 `p` 进行预处理,生成后移位数表 `bc_table`。 -3. 将模式串 `p` 的头部与文本串 `T` 对齐,将 `i` 指向文本串开始位置,即 `i = 0`。`j` 指向模式串末尾位置,即 `j = m - 1`,然后从模式串末尾位置开始比较。 - 1. 如果文本串对应位置的字符 `T[i + j]` 与模式串对应字符 `p[j]` 相同,则继续比较前一位字符。 - 1. 如果模式串全部匹配完毕,则返回模式串 `p` 在文本串中的开始位置 `i`。 - 2. 如果文本串对应位置的字符 `T[i + j]` 与模式串对应字符 `p[j]` 不同,则: - 1. 根据后移位数表 `bc_table` 和模式串末尾位置对应的文本串上的字符 `T[i + m - 1]` ,计算出可移动距离 `bc_table[T[i + m - 1]]`,然后将模式串进行后移。 -4. 如果移动到末尾也没有找到匹配情况,则返回 `-1`。 +1. 计算出文本串 $T$ 的长度为 $n$,模式串 $p$ 的长度为 $m$。 +2. 先对模式串 $p$ 进行预处理,生成后移位数表 $bc\underline{\hspace{0.5em}}table$。 +3. 将模式串 $p$ 的头部与文本串 $T$ 对齐,将 $i$ 指向文本串开始位置,即 $i = 0$。$j$ 指向模式串末尾位置,即 $j = m - 1$,然后从模式串末尾位置开始比较。 + 1. 如果文本串对应位置的字符 $T[i + j]$ 与模式串对应字符 $p[j]$ 相同,则继续比较前一位字符。 + 1. 如果模式串全部匹配完毕,则返回模式串 $p$ 在文本串中的开始位置 $i$。 + 2. 如果文本串对应位置的字符 $T[i + j]$ 与模式串对应字符 $p[j]$ 不同,则: + 1. 根据后移位数表 $bc\underline{\hspace{0.5em}}table$ 和模式串末尾位置对应的文本串上的字符 $T[i + m - 1]$ ,计算出可移动距离 $bc\underline{\hspace{0.5em}}table[T[i + m - 1]]$,然后将模式串进行后移。 +4. 如果移动到末尾也没有找到匹配情况,则返回 $-1$。 ## 3. Horspool 算法代码实现 @@ -40,10 +40,10 @@ 生成后移位数表的代码实现比较简单,跟 Boyer Moore 算法中生成坏字符位置表的代码差不多。具体步骤如下: -- 使用一个哈希表 `bc_table`, `bc_table[bad_char]` 表示表示遇到坏字符可以向右移动的距离。 -- 遍历模式串,以当前字符 `p[i]` 为键,可以向右移动的距离(`m - 1 - i`)为值存入字典中。如果出现重复字符,则新的位置下标值会将之前存放的值覆盖掉。这样哈希表中存放的就是该字符在模式串中出现最右侧位置上的可向右移动的距离。 +- 使用一个哈希表 $bc\underline{\hspace{0.5em}}table$, $bc\underline{\hspace{0.5em}}table[bad\underline{\hspace{0.5em}}char]$ 表示表示遇到坏字符可以向右移动的距离。 +- 遍历模式串,以当前字符 $p[i]$ 为键,可以向右移动的距离($m - 1 - i$)为值存入字典中。如果出现重复字符,则新的位置下标值会将之前存放的值覆盖掉。这样哈希表中存放的就是该字符在模式串中出现最右侧位置上的可向右移动的距离。 -如果在 Horspool 算法的匹配过程中,如果 `T[i + m - 1]` 不在 `bc_table` 中时,可令其为 `m`,表示可以将模式串整个右移。如果 `T[i + m - 1]` 在 `bc_table` 中时,可移动距离就是 `bc_table[T[i + m - 1]]` 。这样就能计算出可以向右移动的位数了。 +如果在 Horspool 算法的匹配过程中,如果 $T[i + m - 1]$ 不在 $bc\underline{\hspace{0.5em}}table$ 中时,可令其为 $m$,表示可以将模式串整个右移。如果 $T[i + m - 1]$ 在 $bc\underline{\hspace{0.5em}}table$ 中时,可移动距离就是 $bc\underline{\hspace{0.5em}}table[T[i + m - 1]]$ 。这样就能计算出可以向右移动的位数了。 生成后移位数表的代码如下: diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md b/Contents/06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md index 1b37ef55..984b72c8 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md @@ -2,37 +2,37 @@ **「Sunday 算法」** 是一种在字符串中查找子串的算法,是 Daniel M.Sunday 于1990年提出的字符串模式匹配算法。 -> **Sunday 算法思想**:对于给定文本串 `T` 与模式串 `p`,先对模式串 `p` 进行预处理。然后在匹配的过程中,当发现文本串 `T` 的某个字符与模式串 `p` 不匹配的时候,根据启发策略,能够尽可能的跳过一些无法匹配的情况,将模式串多向后滑动几位。 +> **Sunday 算法思想**:对于给定文本串 $T$ 与模式串 $p$,先对模式串 $p$ 进行预处理。然后在匹配的过程中,当发现文本串 $T$ 的某个字符与模式串 $p$ 不匹配的时候,根据启发策略,能够尽可能的跳过一些无法匹配的情况,将模式串多向后滑动几位。 -Sunday 算法思想跟 Boyer Moore 算法思想类似。不同的是,Sunday 算法匹配顺序是从左向右,并且在模式串 `p` 匹配失败时关注的是文本串 `T` 中参加匹配的末尾字符的下一位字符。当文本串 `T` 中某个字符跟模式串 `p` 的某个字符不匹配时,可以将模式串 `p` 快速向右移动。 +Sunday 算法思想跟 Boyer Moore 算法思想类似。不同的是,Sunday 算法匹配顺序是从左向右,并且在模式串 $p$ 匹配失败时关注的是文本串 $T$ 中参加匹配的末尾字符的下一位字符。当文本串 $T$ 中某个字符跟模式串 $p$ 的某个字符不匹配时,可以将模式串 $p$ 快速向右移动。 遇到不匹配字符时,可以根据以下两种情况向右快速进行移动: -- **情况 1:文本串 `T` 中与模式串 `p` 尾部字符 `p[m - 1]` 对应的字符下一个位置的字符 `T[i + m]` 出现在模式串 `p` 中**。 - - 这种情况下,可将`T[i + m]` 与模式串中最后一次出现的该字符对齐,如下图所示。 - - **向右移动位数 = 文本串 `T` 中与模式串 `p` 尾部位置的下一个位置 - T[i + m] 在模式串中最后一次出现的位置**。 - - 注意:文本串 `T` 中与模式串 `p` 尾部位置的下一个位置其实就是「模式串长度」。 +- **情况 1:文本串 $T$ 中与模式串 $p$ 尾部字符 $p[m - 1]$ 对应的字符下一个位置的字符 $T[i + m]$ 出现在模式串 $p$ 中**。 + - 这种情况下,可将$T[i + m]$ 与模式串中最后一次出现的该字符对齐,如下图所示。 + - **向右移动位数 = 文本串 $T$ 中与模式串 $p$ 尾部位置的下一个位置 $T[i + m]$ 在模式串中最后一次出现的位置**。 + - 注意:文本串 $T$ 中与模式串 $p$ 尾部位置的下一个位置其实就是「模式串长度」。 -![](https://qcdn.itcharge.cn/images/20220128165756.png) +![Sunday 算法情况 1](https://qcdn.itcharge.cn/images/20240511165526.png) -- **情况 2:文本串 `T` 中与模式串 `p` 尾部字符 `p[m - 1]` 对应的字符下一个位置的字符 `T[i + m]` 没有出现在模式串 `p` 中**。 +- **情况 2:文本串 $T$ 中与模式串 $p$ 尾部字符 $p[m - 1]$ 对应的字符下一个位置的字符 $T[i + m]$ 没有出现在模式串 $p$ 中**。 - 这种情况下,可将模式串整个右移,如下图所示。 - **向右移动位数 = 整个模式串长度 + 1**。 -![](https://qcdn.itcharge.cn/images/20220128165811.png) +![Sunday 算法情况 2](https://qcdn.itcharge.cn/images/20240511165540.png) ## 2. Sunday 算法步骤 整个 Horspool 算法步骤描述如下: -- 计算出文本串 `T` 的长度为 `n`,模式串 `p` 的长度为 `m`。 -- 先对模式串 `p` 进行预处理,生成后移位数表 `bc_table`。 -- 将模式串 `p` 的头部与文本串 `T` 对齐,将 `i` 指向文本串开始位置,即 `i = 0`。`j` 指向模式串开始,即 `j = 0`,然后从模式串开始位置开始比较。 - - 如果文本串对应位置的字符 `T[i + j]` 与模式串对应字符 `p[j]` 相同,则继续比较后一位字符。 - - 如果模式串全部匹配完毕,则返回模式串 `p` 在文本串中的开始位置 `i`。 - - 如果文本串对应位置的字符 `T[i + j]` 与模式串对应字符 `p[j]` 不同,则: - - 根据后移位数表 `bc_table` 和模式串末尾位置对应的文本串上的字符 `T[i + m]` ,计算出可移动距离 `bc_table[T[i + m]]`,然后将模式串进行后移。 -- 如果移动到末尾也没有找到匹配情况,则返回 `-1`。 +- 计算出文本串 $T$ 的长度为 $n$,模式串 $p$ 的长度为 $m$。 +- 先对模式串 $p$ 进行预处理,生成后移位数表 $bc\underline{\hspace{0.5em}}table$。 +- 将模式串 $p$ 的头部与文本串 $T$ 对齐,将 $i$ 指向文本串开始位置,即 $i = 0$。$j$ 指向模式串开始,即 $j = 0$,然后从模式串开始位置开始比较。 + - 如果文本串对应位置的字符 $T[i + j]$ 与模式串对应字符 $p[j]$ 相同,则继续比较后一位字符。 + - 如果模式串全部匹配完毕,则返回模式串 $p$ 在文本串中的开始位置 $i$。 + - 如果文本串对应位置的字符 $T[i + j]$ 与模式串对应字符 $p[j]$ 不同,则: + - 根据后移位数表 $bc\underline{\hspace{0.5em}}table$ 和模式串末尾位置对应的文本串上的字符 $T[i + m]$ ,计算出可移动距离 $bc\underline{\hspace{0.5em}}table[T[i + m]]$,然后将模式串进行后移。 +- 如果移动到末尾也没有找到匹配情况,则返回 $-1$。 ## 3. Sunday 算法代码实现 @@ -40,10 +40,10 @@ Sunday 算法思想跟 Boyer Moore 算法思想类似。不同的是,Sunday 生成后移位数表的代码实现比较简单,跟 Horspool 算法中生成后移位数表的代码差不多。具体步骤如下: -- 使用一个哈希表 `bc_table`, `bc_table[bad_char]` 表示表示遇到坏字符可以向右移动的距离。 -- 遍历模式串,以当前字符 `p[i]` 为键,可以向右移动的距离(`m - i`)为值存入字典中。如果出现重复字符,则新的位置下标值会将之前存放的值覆盖掉。这样哈希表中存放的就是该字符在模式串中出现最右侧位置上的可向右移动的距离。 +- 使用一个哈希表 $bc\underline{\hspace{0.5em}}table$, $bc\underline{\hspace{0.5em}}table[bad\underline{\hspace{0.5em}}char]$ 表示表示遇到坏字符可以向右移动的距离。 +- 遍历模式串,以当前字符 $p[i]$ 为键,可以向右移动的距离($m - i$)为值存入字典中。如果出现重复字符,则新的位置下标值会将之前存放的值覆盖掉。这样哈希表中存放的就是该字符在模式串中出现最右侧位置上的可向右移动的距离。 -如果在 Sunday 算法的匹配过程中,如果 `T[i + m]` 不在 `bc_table` 中时,可令其为 `m + 1`,表示可以将模式串整个右移到上一次匹配末尾后边两个位置上。如果 `T[i + m]` 在 `bc_table` 中时,可移动距离就是 `bc_table[T[i + m]]` 。这样就能计算出可以向右移动的位数了。 +如果在 Sunday 算法的匹配过程中,如果 $T[i + m]$ 不在 $bc\underline{\hspace{0.5em}}table$ 中时,可令其为 $m + 1$,表示可以将模式串整个右移到上一次匹配末尾后边两个位置上。如果 $T[i + m]$ 在 $bc\underline{\hspace{0.5em}}table$ 中时,可移动距离就是 $bc\underline{\hspace{0.5em}}table[T[i + m]]$ 。这样就能计算出可以向右移动的位数了。 生成后移位数表的代码如下: From c9b938d80d0b2ffc492e1742dd455c67f6d355b3 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Sat, 11 May 2024 17:40:51 +0800 Subject: [PATCH 089/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=2007.=20=E6=A0=91=20?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=9B=BE=E7=89=87=E3=80=81=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01.Trie.md | 4 +- .../01.Binary-Tree/01.Binary-Tree-Basic.md | 30 +++--- .../01.Binary-Tree/02.Binary-Tree-Traverse.md | 8 +- .../01.Binary-Search-Tree.md | 2 +- .../03.Segment-Tree/01.Segment-Tree.md | 94 +++++++++---------- 5 files changed, 68 insertions(+), 70 deletions(-) diff --git a/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md b/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md index fff8834b..404ecc83 100644 --- a/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md +++ b/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md @@ -4,7 +4,7 @@ 例如下图就是一棵字典树,其中包含有 `"a"`、`"abc"`、`"acb"`、`"acc"`、`"ach"`、`"b"`、`"chb"` 这 7 个单词。 -![](https://qcdn.itcharge.cn/images/20220210142321.png) +![字典树](https://qcdn.itcharge.cn/images/20240511165918.png) 从图中可以发现,这棵字典树用边来表示字母,从根节点到树上某一节点的路径就代表了一个单词。比如 $1 \rightarrow 2 \rightarrow 6 \rightarrow 10$ 表示的就是单词 `"acc"`。为了清楚地判断某节点路径是否表示一个单词,我们还可以在每个单词对应路径的结束位置增加一个结束标记 $end$(图中红色节点),表示从根节点到这里有一个单词。 @@ -201,7 +201,7 @@ class Trie: # 字典树 例如下图,当我们输入「字典树」后,底下会出现一些以「字典树」为前缀的相关搜索内容。 -![](https://qcdn.itcharge.cn/images/20220210134829.png) +![字典树的应用](https://qcdn.itcharge.cn/images/20220210134829.png) 这个功能实现的基本原理就是字典树。当然,像 Google、必应、百度这样的搜索引擎,在这个功能能的背后肯定做了大量的改进和优化,但它的底层最基本的原理就是「字典树」这种数据结构。 diff --git a/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md b/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md index 55f040ae..982c2f06 100644 --- a/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md +++ b/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md @@ -6,7 +6,7 @@ 之所以把这种数据结构称为「树」是因为这种数据结构看起来就像是一棵倒挂的树,也就是说数据结构中的「树」是根朝上,而叶朝下的。如下图所示。 -![](https://qcdn.itcharge.cn/images/20220221091603.png) +![树](https://qcdn.itcharge.cn/images/20240511171215.png) 「树」具有以下的特点: @@ -17,9 +17,7 @@ 如下图所示,红色节点 $A$ 是根节点,除了根节点之外,还有 $3$ 棵互不相交的子树 $T_1(B, E, H, I, G)$、$T_2(C)$、$T_3(D, F, G, K)$。 -![](https://qcdn.itcharge.cn/images/20220218104556.png) - - +![树与子树](https://qcdn.itcharge.cn/images/20240511171233.png) ### 1.2 树的相关术语 @@ -29,7 +27,7 @@ **「树的节点」** 由一个数据元素和若干个指向其子树的树的分支组成。而节点所含有的子树个数称为 **「节点的度」**。度为 $0$ 的节点称为 **「叶子节点」** 或者 **「终端节点」**,度不为 $0$ 的节点称为 **「分支节点」** 或者 **「非终端节点」**。树中各节点的最大度数称为 **「树的度」**。 -![](https://qcdn.itcharge.cn/images/20220218134918.png) +![节点分类](https://qcdn.itcharge.cn/images/20240511171300.png) - **树的节点**:由一个数据元素和若干个指向其子树的树的分支组成。 - **节点的度**:一个节点所含有的子树个数。 @@ -41,7 +39,7 @@ 一个节点的子树的根节点称为该节点的 **「孩子节点」**,相应的,该节点称为孩子的 **「父亲节点」**。同一个父亲节点的孩子节点之间互称为 **「兄弟节点」**。 -![](https://qcdn.itcharge.cn/images/20220218142604.png) +![节点间关系](https://qcdn.itcharge.cn/images/20240511171311.png) - **孩子节点(子节点)**:一个节点含有的子树的根节点称为该节点的子节点。例如图中 $B$ 是 $A$ 的孩子节点。 - **父亲节点(父节点)**:如果一个节点含有子节点,则这个节点称为其子节点的父节点。例如图中 $B$ 是 $E$ 的父亲节点。 @@ -51,7 +49,7 @@ **「节点的层次」** 是从根节点开始定义,将根节点作为第 1 层,根的孩子节点作为第 2 层,以此类推,如果某个节点在第 $i$ 层,则其孩子节点在第 $i + 1$ 层。而父亲节点在同一层的节点互为 **「堂兄弟节点」**。树中所有节点最大的层数称为 **「树的深度」** 或 **「树的高度」**。树中,两个节点之间所经过节点序列称为 **「路径」**,两个节点之间路径上经过的边数称为 **「路径长度」**。 -![树的其他术语](https://qcdn.itcharge.cn/images/20231225174453.png) +![树的其他术语](https://qcdn.itcharge.cn/images/20240511171325.png) - **节点的层次**:从根节点开始定义,根为第 $1$ 层,根的子节点为第 $2$ 层,以此类推。 - **树的深度(高度)**:所有节点中最大的层数。例如图中树的深度为 $4$。 @@ -78,7 +76,7 @@ 下图就是一棵二叉树。 -![](https://qcdn.itcharge.cn/images/20220221094909.png) +![二叉树](https://qcdn.itcharge.cn/images/20240511171342.png) 二叉树也可以使用递归方式来定义,即二叉树满足以下两个要求之一: @@ -89,7 +87,7 @@ 二叉树在逻辑上可以分为 $5$ 种基本形态,如下图所示。 -![](https://qcdn.itcharge.cn/images/20220218164839.png) +![二叉树的形态](https://qcdn.itcharge.cn/images/20220218164839.png) ### 2.2 特殊的二叉树 @@ -109,7 +107,7 @@ 我们可以来看几个例子。 -![](https://qcdn.itcharge.cn/images/20220218173007.png) +![满二叉树与非满二叉树](https://qcdn.itcharge.cn/images/20220218173007.png) #### 2.2.2 完全二叉树 @@ -127,7 +125,7 @@ 我们可以来看几个例子。 -![](https://qcdn.itcharge.cn/images/20220218174000.png) +![完全二叉树与非完全二叉树](https://qcdn.itcharge.cn/images/20220218174000.png) #### 2.2.3 二叉搜索树 @@ -139,7 +137,7 @@ 如图所示,这 $3$ 棵树都是二叉搜索树。 -![](https://qcdn.itcharge.cn/images/20220218175944.png) +![二叉搜索树](https://qcdn.itcharge.cn/images/20240511171406.png) #### 2.2.4 平衡二叉搜索树 @@ -153,7 +151,7 @@ 如图所示,前 $2$ 棵树是平衡二叉搜索树,最后一棵树不是平衡二叉搜索树,因为这棵树的左右子树的高度差的绝对值超过了 $1$。 -![](https://qcdn.itcharge.cn/images/20220221103552.png) +![平衡二叉树与非平衡二叉树](https://qcdn.itcharge.cn/images/20220221103552.png) ### 2.3 二叉树的存储结构 @@ -167,7 +165,7 @@ 下图为二叉树的顺序存储结构。 -![](https://qcdn.itcharge.cn/images/20220221144552.png) +![二叉树的顺序存储结构](https://qcdn.itcharge.cn/images/20240511171423.png) 从图中我们也可以看出节点之间的逻辑关系。 @@ -180,7 +178,7 @@ 二叉树采用链式存储结构时,每个链节点包含一个用于数据域 $val$,存储节点信息;还包含两个指针域 $left$ 和 $right$,分别指向左右两个孩子节点,当左孩子或者右孩子不存在时,相应指针域值为空。二叉链节点结构如下图所示。 -![](https://qcdn.itcharge.cn/images/20220221151412.png) +![二叉链节点](https://qcdn.itcharge.cn/images/20240511171434.png) 二叉链节点结构的对应代码为: @@ -194,7 +192,7 @@ class TreeNode: 下面我们将值为 $[1, 2, 3, 4, 5, 6, 7]$ 的二叉树使用链式存储结构进行存储,即为下图所示。 -![](https://qcdn.itcharge.cn/images/20220221153539.png) +![二叉树的链式存储结构](https://qcdn.itcharge.cn/images/20240511171446.png) 二叉树的链表存储结构具有灵活、方便的特点。节点的最大数目只受系统最大可存储空间的限制。一般情况下,二叉树的链表存储结构比顺序存储结构更省空间(用于存储指针域的空间开销只是二叉树中节点数的线性函数),而且对于二叉树实施相关操作也很方便,因此,一般我们使用链式存储结构来存储二叉树。 diff --git a/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md b/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md index 7e6d3c0b..5fda7753 100644 --- a/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md +++ b/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md @@ -24,7 +24,7 @@ 如下图所示,该二叉树的前序遍历顺序为:$A - B - D - H - I - E - C - F - J - G - K$。 -![](https://qcdn.itcharge.cn/images/20220222165249.png) +![二叉树的前序遍历](https://qcdn.itcharge.cn/images/20240511171628.png) ### 2.1 二叉树的前序遍历递归实现 @@ -104,7 +104,7 @@ class Solution: 如下图所示,该二叉树的中序遍历顺序为:$H - D - I - B - E - A - F - J - C - K - G$。 -![](https://qcdn.itcharge.cn/images/20220222165231.png) +![二叉树的中序遍历](https://qcdn.itcharge.cn/images/20240511171643.png) ### 3.1 二叉树的中序遍历递归实现 @@ -186,7 +186,7 @@ class Solution: 如下图所示,该二叉树的后序遍历顺序为:$H - I - D - E - B - J - F - K - G - C - A$。 -![](https://qcdn.itcharge.cn/images/20220222165218.png) +![二叉树的后序遍历](https://qcdn.itcharge.cn/images/20240511171658.png) ### 4.1 二叉树的后序遍历递归实现 @@ -273,7 +273,7 @@ class Solution: 如下图所示,该二叉树的后序遍历顺序为:$A - B - C - D - E - F - G - H - I - J - K$。 -![](https://qcdn.itcharge.cn/images/20220222165158.png) +![二叉树的层序遍历](https://qcdn.itcharge.cn/images/20240511171712.png) 二叉树的层序遍历是通过队列来实现的。具体步骤如下: diff --git a/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md b/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md index 8baa3d92..3764b423 100644 --- a/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md +++ b/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md @@ -8,7 +8,7 @@ 如图所示,这 $3$ 棵树都是二叉搜索树。 -![img](https://qcdn.itcharge.cn/images/20220218175944.png) +![二叉搜索树](https://qcdn.itcharge.cn/images/20240511171406.png) 二叉树具有一个特性,即:**左子树的节点值 < 根节点值 < 右子树的节点值**。 diff --git a/Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md b/Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md index 368f40bb..26216110 100644 --- a/Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md +++ b/Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md @@ -2,22 +2,22 @@ ### 1.1 线段树的定义 -> **线段树(Segment Tree)**:一种基于分治思想的二叉树,用于在区间上进行信息统计。它的每一个节点都对应一个区间 `[left, right]` ,`left`、`right` 通常是整数。每一个叶子节点表示了一个单位区间(长度为 `1`),叶子节点对应区间上 `left == right`。每一个非叶子节点 `[left, right]` 的左子节点表示的区间都为 `[left, (left + right) / 2]`,右子节点表示的的区间都为 `[(left + right) / 2 + 1, right]`。 +> **线段树(Segment Tree)**:一种基于分治思想的二叉树,用于在区间上进行信息统计。它的每一个节点都对应一个区间 $[left, right]$ ,$left$、$right$ 通常是整数。每一个叶子节点表示了一个单位区间(长度为 $1$),叶子节点对应区间上 $left == right$。每一个非叶子节点 $[left, right]$ 的左子节点表示的区间都为 $[left, (left + right) / 2]$,右子节点表示的的区间都为 $[(left + right) / 2 + 1, right]$。 -线段树是一棵平衡二叉树,树上的每个节点维护一个区间。根节点维护的是整个区间,每个节点维护的是父亲节点的区间二等分之后的其中一个子区间。当有 `n` 个元素时,对区间的操作(单点更新、区间更新、区间查询等)可以在 $O(log_2n)$ 的时间复杂度内完成。 +线段树是一棵平衡二叉树,树上的每个节点维护一个区间。根节点维护的是整个区间,每个节点维护的是父亲节点的区间二等分之后的其中一个子区间。当有 $n$ 个元素时,对区间的操作(单点更新、区间更新、区间查询等)可以在 $O(\log_2n)$ 的时间复杂度内完成。 -如下图所示,这是一棵区间为 `[0, 7]` 的线段树。 +如下图所示,这是一棵区间为 $[0, 7]$ 的线段树。 -![](https://qcdn.itcharge.cn/images/20220302103338.png) +![区间 [0, 7] 对应的线段树](https://qcdn.itcharge.cn/images/20240511173328.png) ### 1.2 线段树的特点 根据上述描述,我们可以总结一下线段树的特点: 1. 线段树的每个节点都代表一个区间。 -2. 线段树具有唯一的根节点,代表的区间是整个统计范围,比如 `[1, n]`。 -3. 线段树的每个叶子节点都代表一个长度为 `1` 的单位区间 `[x, x]`。 -4. 对于每个内部节点 `[left, right]`,它的左子节点是 `[left, mid]`,右子节点是 `[mid + 1, right]`。其中 `mid = (left + right) / 2`(向下取整)。 +2. 线段树具有唯一的根节点,代表的区间是整个统计范围,比如 $[1, n]$。 +3. 线段树的每个叶子节点都代表一个长度为 $1$ 的单位区间 $[x, x]$。 +4. 对于每个内部节点 $[left, right]$,它的左子节点是 $[left, mid]$,右子节点是 $[mid + 1, right]$。其中 $mid = (left + right) / 2$(向下取整)。 ## 2. 线段树的构建 @@ -29,22 +29,22 @@ 我们可以采用与完全二叉树类似的编号方法来对线段树进行编号,方法如下: -- 根节点的编号为 `0`。 -- 如果某二叉树节点(非叶子节点)的下标为 `i`,那么其左孩子节点下标为 `2 * i + 1`,右孩子节点下标为 `2 * i + 2`。 -- 如果某二叉树节点(非根节点)的下标为 `i`,那么其父节点下标为 `(i - 1) // 2`,`//` 表示整除。 +- 根节点的编号为 $0$。 +- 如果某二叉树节点(非叶子节点)的下标为 $i$,那么其左孩子节点下标为 $2 \times i + 1$,右孩子节点下标为 $2 \times i + 2$。 +- 如果某二叉树节点(非根节点)的下标为 $i$,那么其父节点下标为 $(i - 1) // 2$,$//$ 表示整除。 这样我们就能使用一个数组来保存线段树。那么这个数组的大小应该设置为多少才合适? -- 在理想情况下,`n` 个单位区间构成的线段树是一棵满二叉树,节点数为 $n + n/2 + n/4 + ... + 2 + 1 = 2 * n - 1$ 个。 因为 $2 * n - 1 < 2 * n$,所以在理想情况下,只需要使用一个大小为 $2 * n$ 的数组来存储线段树就足够了。 -- 但是在一般情况下,有些区间元素需要开辟新的一层来存储元素。线段树的深度为 $\lceil log_2n \rceil$,最坏情况下叶子节点(包括无用的节点)的数量为 $2^{\lceil log_2n \rceil}$ 个,总节点数为 $2^{\lceil log_2n \rceil + 1} - 1$ 个,可以近似看做是 $4 * n$,所以我们可以使用一个大小为 $4 * n$ 的数组来存储线段树。 +- 在理想情况下,$n$ 个单位区间构成的线段树是一棵满二叉树,节点数为 $n + n/2 + n/4 + ... + 2 + 1 = 2 \times n - 1$ 个。 因为 $2 \times n - 1 < 2 \times n$,所以在理想情况下,只需要使用一个大小为 $2 \times n$ 的数组来存储线段树就足够了。 +- 但是在一般情况下,有些区间元素需要开辟新的一层来存储元素。线段树的深度为 $\lceil \log_2n \rceil$,最坏情况下叶子节点(包括无用的节点)的数量为 $2^{\lceil \log_2n \rceil}$ 个,总节点数为 $2^{\lceil \log_2n \rceil + 1} - 1$ 个,可以近似看做是 $4 * n$,所以我们可以使用一个大小为 $4 \times n$ 的数组来存储线段树。 ### 2.2 线段树的构建方法 -![线段树父子节点下标关系](https://qcdn.itcharge.cn/images/20220303131328.png) +![线段树父子节点下标关系](https://qcdn.itcharge.cn/images/20240511173417.png) -通过上图可知:下标为 `i` 的节点的孩子节点下标为 `2 * i + 1` 和 `2 * i + 2`。所以线段树十分适合采用递归的方法来创建。具体步骤如下: +通过上图可知:下标为 $i$ 的节点的孩子节点下标为 $2 \times i + 1$ 和 $2 \times i + 2$。所以线段树十分适合采用递归的方法来创建。具体步骤如下: -1. 如果是叶子节点(`left == right`),则节点的值就是对应位置的元素值。 +1. 如果是叶子节点($left == right$),则节点的值就是对应位置的元素值。 2. 如果是非叶子节点,则递归创建左子树和右子树。 3. 节点的区间值(区间和、区间最大值、区间最小值)等于该节点左右子节点元素值的对应计算结果。 @@ -100,11 +100,11 @@ class SegmentTree: ### 3.1 线段树的单点更新 -> **线段树的单点更新**:修改一个元素的值,例如将 `nums[i]` 修改为 `val`。 +> **线段树的单点更新**:修改一个元素的值,例如将 $nums[i]$ 修改为 $val$。 我们可以采用递归的方式进行单点更新,具体步骤如下: -1. 如果是叶子节点,满足 `left == right`,则更新该节点的值。 +1. 如果是叶子节点,满足 $left == right$,则更新该节点的值。 2. 如果是非叶子节点,则判断应该在左子树中更新,还是应该在右子树中更新。 3. 在对应的左子树或右子树中更新节点值。 4. 左右子树更新返回之后,向上更新节点的区间值(区间和、区间最大值、区间最小值等),区间值等于该节点左右子节点元素值的聚合计算结果。 @@ -135,15 +135,15 @@ class SegmentTree: ### 3.2 线段树的区间查询 -> **线段树的区间查询**:查询一个区间为 `[q_left, q_right]` 的区间值。 +> **线段树的区间查询**:查询一个区间为 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 的区间值。 我们可以采用递归的方式进行区间查询,具体步骤如下: -1. 如果区间 `[q_left, q_right]` 完全覆盖了当前节点所在区间 `[left, right]` ,即 `left >= q_left` 并且 `right <= q_right`,则返回该节点的区间值。 -2. 如果区间 `[q_left, q_right]` 与当前节点所在区间 `[left, right]` 毫无关系,即 `right < q_left` 或者 `left > q_right`,则返回 `0`。 -3. 如果区间 `[q_left, q_right]` 与当前节点所在区间有交集,则: - 1. 如果区间 `[q_left, q_right]` 与左子节点所在区间 `[left, mid]` 有交集,即 `q_left <= mid`,则在当前节点的左子树中进行查询并保存查询结果 `res_left`。 - 2. 如果区间 `[q_left, q_right]` 与右子节点所在区间 `[mid + 1, right]` 有交集,即 `q_right > mid`,则在当前节点的右子树中进行查询并保存查询结果 `res_right`。 +1. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 完全覆盖了当前节点所在区间 $[left, right]$ ,即 $left \ge q\underline{\hspace{0.5em}}left$ 并且 $right \le q\underline{\hspace{0.5em}}right$,则返回该节点的区间值。 +2. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与当前节点所在区间 $[left, right]$ 毫无关系,即 $right < q\underline{\hspace{0.5em}}left$ 或者 $left > q\underline{\hspace{0.5em}}right$,则返回 $0$。 +3. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与当前节点所在区间有交集,则: + 1. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与左子节点所在区间 $[left, mid]$ 有交集,即 $q\underline{\hspace{0.5em}}left \le mid$,则在当前节点的左子树中进行查询并保存查询结果 $res_\underline{\hspace{0.5em}}left$。 + 2. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与右子节点所在区间 $[mid + 1, right]$ 有交集,即 $q\underline{\hspace{0.5em}}right > mid$,则在当前节点的右子树中进行查询并保存查询结果 $res_\underline{\hspace{0.5em}}right$。 3. 最后返回左右子树元素区间值的聚合计算结果。 线段树的区间查询代码如下: @@ -176,37 +176,37 @@ class SegmentTree: ### 3.3 线段树的区间更新 -> **线段树的区间更新**:对 `[q_left, q_right]` 区间进行更新,例如将 `[q_left, q_right]` 区间内所有元素都更新为 `val`。 +> **线段树的区间更新**:对 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 区间进行更新,例如将 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 区间内所有元素都更新为 $val$。 #### 3.3.1 延迟标记 -线段树在进行单点更新、区间查询时,区间 `[q_left, q_right]` 在线段树上会被分成 $O(log_2n)$ 个小区间(节点),从而在 $O(log_2n)$ 的时间复杂度内完成操作。 +线段树在进行单点更新、区间查询时,区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 在线段树上会被分成 $O(\log_2n)$ 个小区间(节点),从而在 $O(\log_2n)$ 的时间复杂度内完成操作。 -而在「区间更新」操作中,如果某个节点区间 `[left, right]` 被修改区间 `[q_left, q_right]` 完全覆盖,则以该节点为根的整棵子树中所有节点的区间值都要发生变化,如果逐一进行更新的话,将使得一次区间更新操作的时间复杂度增加到 $O(n)$。 +而在「区间更新」操作中,如果某个节点区间 $[left, right]$ 被修改区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 完全覆盖,则以该节点为根的整棵子树中所有节点的区间值都要发生变化,如果逐一进行更新的话,将使得一次区间更新操作的时间复杂度增加到 $O(n)$。 -设想这一种情况:如果我们在一次执行更新操作时,发现当前节点区间 `[left, right]` 被修改区间 `[q_left, q_right]` 完全覆盖,然后逐一更新了区间 `[left, right]` 对应子树中的所有节点,但是在后续的区间查询操作中却根本没有用到 `[left, right]` 作为候选答案,则更新 `[left, right]` 对应子树的工作就是徒劳的。 +设想这一种情况:如果我们在一次执行更新操作时,发现当前节点区间 $[left, right]$ 被修改区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 完全覆盖,然后逐一更新了区间 $[left, right]$ 对应子树中的所有节点,但是在后续的区间查询操作中却根本没有用到 $[left, right]$ 作为候选答案,则更新 $[left, right]$ 对应子树的工作就是徒劳的。 如果我们减少更新的次数和时间复杂度,应该怎么办? -我们可以向线段树的节点类中增加一个 **「延迟标记」**,标识为 **「该区间曾经被修改为 `val`,但其子节点区间值尚未更新」**。也就是说除了在进行区间更新时,将区间子节点的更新操作延迟到 **「在后续操作中递归进入子节点时」** 再执行。这样一来,每次区间更新和区间查询的时间复杂度都降低到了 $O(log_2n)$。 +我们可以向线段树的节点类中增加一个 **「延迟标记」**,标识为 **「该区间曾经被修改为 $val$,但其子节点区间值尚未更新」**。也就是说除了在进行区间更新时,将区间子节点的更新操作延迟到 **「在后续操作中递归进入子节点时」** 再执行。这样一来,每次区间更新和区间查询的时间复杂度都降低到了 $O(\log_2n)$。 使用「延迟标记」的区间更新步骤为: -1. 如果区间 `[q_left, q_right]` 完全覆盖了当前节点所在区间 `[left, right]` ,即 `left >= q_left` 并且 `right <= q_right`,则更新当前节点所在区间的值,并将当前节点的延迟标记为区间值。 -2. 如果区间 `[q_left, q_right]` 与当前节点所在区间 `[left, right]` 毫无关系,即 `right < q_left` 或者 `left > q_right`,则直接返回。 -3. 如果区间 `[q_left, q_right]` 与当前节点所在区间有交集,则: - 1. 如果当前节点使用了「延迟标记」,即延迟标记不为 `None`,则将当前区间的更新操作应用到该节点的子节点上(即向下更新)。 - 2. 如果区间 `[q_left, q_right]` 与左子节点所在区间 `[left, mid]` 有交集,即 `q_left <= mid`,则在当前节点的左子树中更新区间值。 - 3. 如果区间 `[q_left, q_right]` 与右子节点所在区间 `[mid + 1, right]` 有交集,即 `q_right > mid`,则在当前节点的右子树中更新区间值。 +1. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 完全覆盖了当前节点所在区间 $[left, right]$ ,即 $left \ge q\underline{\hspace{0.5em}}left$ 并且 $right \le q\underline{\hspace{0.5em}}right$,则更新当前节点所在区间的值,并将当前节点的延迟标记为区间值。 +2. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与当前节点所在区间 $[left, right]$ 毫无关系,即 $right < q\underline{\hspace{0.5em}}left$ 或者 $left > q\underline{\hspace{0.5em}}right$,则直接返回。 +3. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与当前节点所在区间有交集,则: + 1. 如果当前节点使用了「延迟标记」,即延迟标记不为 $None$,则将当前区间的更新操作应用到该节点的子节点上(即向下更新)。 + 2. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与左子节点所在区间 $[left, mid]$ 有交集,即 $q\underline{\hspace{0.5em}}left \le mid$,则在当前节点的左子树中更新区间值。 + 3. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与右子节点所在区间 $[mid + 1, right]$ 有交集,即 $q\underline{\hspace{0.5em}}right > mid$,则在当前节点的右子树中更新区间值。 4. 左右子树更新返回之后,向上更新节点的区间值(区间和、区间最大值、区间最小值),区间值等于该节点左右子节点元素值的对应计算结果。 #### 3.3.2 向下更新 -上面提到了如果当前节点使用了「延迟标记」,即延迟标记不为 `None`,则将当前区间的更新操作应用到该节点的子节点上(即向下更新)。这里描述一下向下更新的具体步骤: +上面提到了如果当前节点使用了「延迟标记」,即延迟标记不为 $None$,则将当前区间的更新操作应用到该节点的子节点上(即向下更新)。这里描述一下向下更新的具体步骤: -1. 更新左子节点值和左子节点懒惰标记为 `val`。 -2. 更新右子节点值和右子节点懒惰标记为 `val`。 -3. 将当前节点的懒惰标记更新为 `None`。 +1. 更新左子节点值和左子节点懒惰标记为 $val$。 +2. 更新右子节点值和右子节点懒惰标记为 $val$。 +3. 将当前节点的懒惰标记更新为 $None$。 使用「延迟标记」的区间更新实现代码如下: @@ -258,9 +258,9 @@ class SegmentTree: self.tree[index].lazy_tag = None # 更新当前节点的懒惰标记 ``` -> **注意**:有些题目中不是将 `[q_left, q_right]` 区间更新为 `val`,而是将 `[q_left, q_right]` 区间中每一个元素值在原值基础增加或减去 `val`。 +> **注意**:有些题目中不是将 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 区间更新为 $val$,而是将 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 区间中每一个元素值在原值基础增加或减去 $val$。 > -> 对于这种情况,我们可以更改一下「延迟标记」的定义。改变为: **「该区间曾经变化了 `val`,但其子节点区间值尚未更新」**。并更改对应的代码逻辑。 +> 对于这种情况,我们可以更改一下「延迟标记」的定义。改变为: **「该区间曾经变化了 $val$,但其子节点区间值尚未更新」**。并更改对应的代码逻辑。 使用「延迟标记」的区间增减更新实现代码如下: @@ -329,16 +329,16 @@ class SegmentTree: ### 4.1 RMQ 问题 -> **RMQ 问题**:Range Maximum / Minimum Query 的缩写,指的是对于长度为 `n` 的数组序列 `nums`,回答若干个询问问题 `RMQ(nums, q_left, q_right)`,要求返回数组序列 `nums` 在区间 `[q_left, q_right]` 中的最大(最小)值。也就是求区间最大(最小)值问题。 +> **RMQ 问题**:Range Maximum / Minimum Query 的缩写,指的是对于长度为 $n$ 的数组序列 $nums$,回答若干个询问问题 `RMQ(nums, q_left, q_right)`,要求返回数组序列 $nums$ 在区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 中的最大(最小)值。也就是求区间最大(最小)值问题。 -假设查询次数为 `q`,则使用朴素算法解决 RMQ 问题的时间复杂度为 $O(q * n)$。而使用线段树解决 RMQ 问题的时间复杂度为 $O(q * n)$ ~ $Q(q * log_2n)$ 之间。 +假设查询次数为 $q$,则使用朴素算法解决 RMQ 问题的时间复杂度为 $O(q \times n)$。而使用线段树解决 RMQ 问题的时间复杂度为 $O(q \times n) \sim Q(q \times \log_2n)$ 之间。 ### 4.2 单点更新,区间查询问题 > **单点更新,区间查询问题**: > > 1. 修改某一个元素的值。 -> 2. 查询区间为 `[q_left, q_right]` 的区间值。 +> 2. 查询区间为 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 的区间值。 这类问题直接使用「3.1 线段树的单点更新」和「3.2 线段树的区间查询」即可解决。 @@ -347,7 +347,7 @@ class SegmentTree: > **区间更新,区间查询问题**: > > 1. 修改某一个区间的值。 -> 2. 查询区间为 `[q_left, q_right]` 的区间值。 +> 2. 查询区间为 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 的区间值。 这类问题直接使用「3.3 线段树的区间更新」和「3.2 线段树的区间查询」即可解决。 @@ -356,7 +356,7 @@ class SegmentTree: > **区间合并,区间查询问题**: > > 1. 修改某一个区间的值。 -> 2. 查询区间为 `[q_left, q_right]` 中满足条件的连续最长区间值。 +> 2. 查询区间为 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 中满足条件的连续最长区间值。 这类问题需要在「3.3 线段树的区间更新」和「3.2 线段树的区间查询」的基础上增加变动,在进行向上更新时需要对左右子节点的区间进行合并。 @@ -366,7 +366,7 @@ class SegmentTree: > > 主要思想为:想象一条线(通常是一条垂直线)在平面上扫过或移动,在某些点停止。几何操作仅限于几何对象,无论何时停止,它们都与扫描线相交或紧邻扫描线,并且一旦线穿过所有对象,就可以获得完整的解。 -这类问题通常坐标跨度很大,需要先对每条扫描线的坐标进行离散化处理,将 `y` 坐标映射到 `0, 1, 2, ...` 中。然后将每条竖线的端点作为区间范围,使用线段树存储每条竖线的信息(`x` 坐标、是左竖线还是右竖线等),然后再进行区间合并,并统计相关信息。 +这类问题通常坐标跨度很大,需要先对每条扫描线的坐标进行离散化处理,将 $y$ 坐标映射到 $0, 1, 2, ...$ 中。然后将每条竖线的端点作为区间范围,使用线段树存储每条竖线的信息($x$ 坐标、是左竖线还是右竖线等),然后再进行区间合并,并统计相关信息。 ## 5. 线段树的拓展 @@ -374,7 +374,7 @@ class SegmentTree: 在有些情况下,线段树需要维护的区间很大(例如 $[1, 10^9]$),在实际中用到的节点却很少。 -如果使用之前数组形式实现线段树,则需要 $4 * n$ 大小的空间,空间消耗有点过大了。 +如果使用之前数组形式实现线段树,则需要 $4 \times n$ 大小的空间,空间消耗有点过大了。 这时候我们就可以使用动态开点的思想来构建线段树。 From 1019ae994d013032e85f06e8a56cb7c04de47be9 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Sat, 11 May 2024 18:03:13 +0800 Subject: [PATCH 090/158] Update 02.Binary-Tree-Traverse.md --- Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md b/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md index 5fda7753..5a2b2ccc 100644 --- a/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md +++ b/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md @@ -273,7 +273,7 @@ class Solution: 如下图所示,该二叉树的后序遍历顺序为:$A - B - C - D - E - F - G - H - I - J - K$。 -![二叉树的层序遍历](https://qcdn.itcharge.cn/images/20240511171712.png) +![二叉树的层序遍历](https://qcdn.itcharge.cn/images/20240511175431.png) 二叉树的层序遍历是通过队列来实现的。具体步骤如下: From 59a43c9cc7be754da5b6f8e8e3c4cb330b0a0bad Mon Sep 17 00:00:00 2001 From: ITCharge Date: Sun, 12 May 2024 01:13:11 +0800 Subject: [PATCH 091/158] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20LaTex=20=E5=85=AC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../03.String-KMP.md | 2 +- Contents/07.Tree/05.Union-Find/01.Union-Find.md | 2 +- ...\215\345\244\215\345\205\203\347\264\240 II.md" | 14 +++++++------- ...253\230\351\242\221\345\205\203\347\264\240.md" | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md b/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md index 60e22075..0d441134 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md @@ -150,5 +150,5 @@ print(kmp("ababbbbaaabbbaaa", "bbbb")) - 【书籍】ACM-ICPC 程序设计系列 - 算法设计与实现 - 陈宇 吴昊 主编 - 【博文】[从头到尾彻底理解 KMP - 结构之法 算法之道 - CSDN博客](https://blog.csdn.net/v_JULY_v/article/details/7041827?spm=1001.2014.3001.5502) - 【博文】[字符串匹配的 KMP 算法 - 阮一峰的网络日志](http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html) -- 【题解】[多图预警👊🏻详解 KMP 算法 - 实现 strStr() - 力扣](https://leetcode.cn/problems/implement-strstr/solution/duo-tu-yu-jing-xiang-jie-kmp-suan-fa-by-w3c9c/) +- 【题解】[多图预警 - 详解 KMP 算法 - 实现 strStr() - 力扣](https://leetcode.cn/problems/implement-strstr/solution/duo-tu-yu-jing-xiang-jie-kmp-suan-fa-by-w3c9c/) - 【题解】[「代码随想录」KMP算法详解 - 实现 strStr() - 力扣](https://leetcode.cn/problems/implement-strstr/solution/dai-ma-sui-xiang-lu-kmpsuan-fa-xiang-jie-mfbs/) \ No newline at end of file diff --git a/Contents/07.Tree/05.Union-Find/01.Union-Find.md b/Contents/07.Tree/05.Union-Find/01.Union-Find.md index 5c851f0c..238ff57a 100644 --- a/Contents/07.Tree/05.Union-Find/01.Union-Find.md +++ b/Contents/07.Tree/05.Union-Find/01.Union-Find.md @@ -15,7 +15,7 @@ - 并查集中的「并」指的就是集合的并集操作,将两个集合合并之后就变成一个集合。合并操作如下所示: ```python -{1, 3, 5, 7} ∪ {2, 4, 6, 8} = {1, 2, 3, 4, 5, 6, 7, 8} +{1, 3, 5, 7} U {2, 4, 6, 8} = {1, 2, 3, 4, 5, 6, 7, 8} ``` - 并查集中的「查」是对于集合中存放的元素来说的,通常我们需要查询两个元素是否属于同一个集合。 diff --git "a/Solutions/0219. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 II.md" "b/Solutions/0219. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 II.md" index 42468b8c..a418505f 100644 --- "a/Solutions/0219. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 II.md" +++ "b/Solutions/0219. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 II.md" @@ -9,9 +9,9 @@ ## 题目大意 -**描述**:给定一个整数数组 `nums` 和一个整数 `k`。 +**描述**:给定一个整数数组 $nums$ 和一个整数 $k$。 -**要求**:判断是否存在 $nums[i] == nums[j](i \ne j)$,并且 `i` 和 `j` 的差绝对值至多为 `k`。 +**要求**:判断是否存在 $nums[i] == nums[j]$($i \ne j$),并且 $i$ 和 $j$ 的差绝对值至多为 $k$。 **说明**: @@ -32,13 +32,13 @@ ### 思路 1:哈希表 -维护一个最多有 `k` 个元素的哈希表。遍历 `nums`,对于数组中的每个整数 `nums[i]`,判断哈希表中是否存在这个整数。 +维护一个最多有 $k$ 个元素的哈希表。遍历 $nums$,对于数组中的每个整数 $nums[i]$,判断哈希表中是否存在这个整数。 -- 如果存在,则说明出现了两次,且 $i \ne j$,直接返回 `True`。 +- 如果存在,则说明出现了两次,且 $i \ne j$,直接返回 $True$。 -- 如果不存在,则将 `nums[i]` 加入哈希表。 -- 判断哈希表长度是否超过了 `k`,如果超过了 `k`,则删除哈希表中最旧的元素 `nums[i - k]`。 -- 如果遍历完仍旧找不到,则返回 `False`。 +- 如果不存在,则将 $nums[i]$ 加入哈希表。 +- 判断哈希表长度是否超过了 $k$,如果超过了 $k$,则删除哈希表中最旧的元素 $nums[i - k]$。 +- 如果遍历完仍旧找不到,则返回 $False$。 ### 思路 1:代码 diff --git "a/Solutions/0347. \345\211\215 K \344\270\252\351\253\230\351\242\221\345\205\203\347\264\240.md" "b/Solutions/0347. \345\211\215 K \344\270\252\351\253\230\351\242\221\345\205\203\347\264\240.md" index 526e804d..e25c98ab 100644 --- "a/Solutions/0347. \345\211\215 K \344\270\252\351\253\230\351\242\221\345\205\203\347\264\240.md" +++ "b/Solutions/0347. \345\211\215 K \344\270\252\351\253\230\351\242\221\345\205\203\347\264\240.md" @@ -16,7 +16,7 @@ **说明**: - $1 \le nums.length \le 10^5$。 -- $k$ 的取值范围是 $[1, \text{数组中不相同的元素的个数}]$。 +- $k$ 的取值范围是 $[1, \text{ 数组中不相同的元素的个数}]$。 - 题目数据保证答案唯一,换句话说,数组中前 $k$ 个高频元素的集合是唯一的。 **示例**: From 6b64aee864ba050aa7834dd6a4a6544717118cf7 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Sun, 12 May 2024 22:47:23 +0800 Subject: [PATCH 092/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20LaTex=20=E5=85=AC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01.Divide-And-Conquer-Algorithm.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md b/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md index 87fea158..916725c4 100644 --- a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md +++ b/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md @@ -68,7 +68,7 @@ def divide_and_conquer(problems_n): # problems_n 为问题规模 一般来讲,分治算法将一个问题划分为 $a$ 个形式相同的子问题,每个子问题的规模为 $n/b$,则总的时间复杂度的递归表达式可以表示为: -$T(n) = \begin{cases} \begin{array} \ \Theta{(1)} & n = 1 \cr a \times T(n/b) + f(n) & n > 1 \end{array} \end{cases}$ +$T(n) = \begin{cases} \Theta{(1)} & n = 1 \cr a \times T(n/b) + f(n) & n > 1 \end{cases}$ 其中,每次分解时产生的子问题个数是 $a$ ,每个子问题的规模是原问题规模的 $1 / b$,分解和合并 $a$ 个子问题的时间复杂度是 $f(n)$。 @@ -82,15 +82,15 @@ $T(n) = \begin{cases} \begin{array} \ \Theta{(1)} & n = 1 \cr a \times T(n/b) + 我们得出归并排序算法的递归表达式如下: -$T(n) = \begin{cases} \begin{array} \ O{(1)} & n = 1 \cr 2 \times T(n/2) + O(n) & n > 1 \end{array} \end{cases}$ +$T(n) = \begin{cases} O{(1)} & n = 1 \cr 2 \times T(n/2) + O(n) & n > 1 \end{cases}$ 根据归并排序的递归表达式,当 $n > 1$ 时,可以递推求解: -$\begin{align} T(n) & = 2 \times T(n/2) + O(n) \cr & = 2 \times (2 \times T(n / 4) + O(n/2)) + O(n) \cr & = 4 \times T(n/4) + 2 \times O(n) \cr & = 8 \times T(n/8) + 3 \times O(n) \cr & = …… \cr & = 2^x \times T(n/2^x) + x \times O(n) \end{align}$ +$$\begin{aligned} T(n) & = 2 \times T(n/2) + O(n) \cr & = 2 \times (2 \times T(n / 4) + O(n/2)) + O(n) \cr & = 4 \times T(n/4) + 2 \times O(n) \cr & = 8 \times T(n/8) + 3 \times O(n) \cr & = …… \cr & = 2^x \times T(n/2^x) + x \times O(n) \end{aligned}$$ 递推最终规模为 $1$,令 $n = 2^x$,则 $x = \log_2n$,则: -$\begin{align} T(n) & = n \times T(1) + \log_2n \times O(n) \cr & = n + \log_2n \times O(n) \cr & = O(n \times \log_2n) \end{align}$ +$$\begin{aligned} T(n) & = n \times T(1) + \log_2n \times O(n) \cr & = n + \log_2n \times O(n) \cr & = O(n \times \log_2n) \end{aligned}$$ 则归并排序的时间复杂度为 $O(n \times \log_2n)$。 @@ -106,7 +106,7 @@ $\text{时间复杂度} = \text{叶子数} \times T(1) + \text{成本和} = 2^x 归并排序算法的递归表达式如下: -$T(n) = \begin{cases} \begin{array} \ O{(1)} & n = 1 \cr 2T(n/2) + O(n) & n > 1 \end{array} \end{cases}$ +$T(n) = \begin{cases} O{(1)} & n = 1 \cr 2T(n/2) + O(n) & n > 1 \end{cases}$ 其对应的递归树如下图所示。 From 26255473235e8545b782ebef05e1c0a5b36bc446 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 13 May 2024 17:58:07 +0800 Subject: [PATCH 093/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E4=B8=AD?= =?UTF-8?q?=E3=80=8C=E5=BB=BA=E7=AB=8B=E4=B8=80=E4=B8=AA=E7=BA=BF=E6=80=A7?= =?UTF-8?q?=E9=93=BE=E8=A1=A8=E3=80=8D=E7=9B=B8=E5=85=B3=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=E3=80=81=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01.Linked-List-Basic/01.Linked-List-Basic.md | 10 ++++++---- Templates/02.LinkedList/LinkedList.py | 6 ++++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md b/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md index 84ad3f7f..3f71376d 100644 --- a/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md +++ b/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md @@ -73,18 +73,20 @@ class LinkedList: > **建立一个线性链表**:根据线性表的数据元素动态生成链节点,并依次将其连接到链表中。 > -> 1. 从所给线性表的第 $1$ 个数据元素开始依次获取表中的数据元素。 +> 1. 从所给线性表中取出第 $1$ 个数据元素,建立链表头节点。然后依次获取表中的数据元素。 > 2. 每获取一个数据元素,就为该数据元素生成一个新节点,将新节点插入到链表的尾部。 -> 3. 插入完毕之后返回第 $1$ 个链节点的地址。 +> 3. 插入完毕之后返回第 $1$ 个链节点(即头节点)的地址。 **「建立一个线性链表」** 的代码如下: ```python # 根据 data 初始化一个新链表 def create(self, data): - self.head = ListNode(0) + if not data: + return + self.head = ListNode(data[0]) cur = self.head - for i in range(len(data)): + for i in range(1, len(data)): node = ListNode(data[i]) cur.next = node cur = cur.next diff --git a/Templates/02.LinkedList/LinkedList.py b/Templates/02.LinkedList/LinkedList.py index a1bdc664..a3165e86 100644 --- a/Templates/02.LinkedList/LinkedList.py +++ b/Templates/02.LinkedList/LinkedList.py @@ -9,9 +9,11 @@ def __init__(self): # 根据 data 初始化一个新链表 def create(self, data): - self.head = ListNode(0) + if not data: + return + self.head = ListNode(data[0]) cur = self.head - for i in range(len(data)): + for i in range(1, len(data)): node = ListNode(data[i]) cur.next = node cur = cur.next From 0cea48313cd8eb8268cbf17b56838efc1822a1c7 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 13 May 2024 17:58:12 +0800 Subject: [PATCH 094/158] Update 01.Union-Find.md --- .../07.Tree/05.Union-Find/01.Union-Find.md | 58 ++++++++++++++----- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/Contents/07.Tree/05.Union-Find/01.Union-Find.md b/Contents/07.Tree/05.Union-Find/01.Union-Find.md index 238ff57a..df417128 100644 --- a/Contents/07.Tree/05.Union-Find/01.Union-Find.md +++ b/Contents/07.Tree/05.Union-Find/01.Union-Find.md @@ -38,17 +38,21 @@ 在使用「快速查询」思路实现并查集时,我们可以使用一个「数组结构」来表示集合中的元素。数组元素和集合元素是一一对应的,我们可以将数组的索引值作为每个元素的集合编号,称为 $id$。然后可以对数组进行以下操作来实现并查集: -- **当初始化时**:将每个元素的集合编号初始化为数组下标索引。则所有元素的 $id$ 都是唯一的,代表着每个元素单独属于一个集合。 +- **当初始化时**:将数组下标索引值作为每个元素的集合编号。所有元素的 $id$ 都是唯一的,代表着每个元素单独属于一个集合。 - **合并操作时**:需要将其中一个集合中的所有元素 $id$ 更改为另一个集合中的 $id$,这样能够保证在合并后一个集合中所有元素的 $id$ 均相同。 - **查找操作时**:如果两个元素的 $id$ 一样,则说明它们属于同一个集合;如果两个元素的 $id$ 不一样,则说明它们不属于同一个集合。 -举个例子来说明一下,我们使用数组来表示一系列集合元素 $\left\{ 0 \right\}, \left\{ 1 \right\}, \left\{ 2 \right\}, \left\{ 3 \right\}, \left\{ 4 \right\}, \left\{ 5 \right\}, \left\{ 6 \right\}, \left\{ 7 \right\}$,初始化时如下图所示。从下图中可以看出:元素的集合编号就是数组的索引值,代表着每个元素属于一个集合。 +举个例子来说明一下,我们使用数组来表示一系列集合元素 $\left\{ 0 \right\}, \left\{ 1 \right\}, \left\{ 2 \right\}, \left\{ 3 \right\}, \left\{ 4 \right\}, \left\{ 5 \right\}, \left\{ 6 \right\}, \left\{ 7 \right\}$,初始化时如下图所示。 -![](https://qcdn.itcharge.cn/images/20220505145234.png) +![基于数组实现:初始化操作](https://qcdn.itcharge.cn/images/20240513150949.png) -当我们进行一系列的合并操作后,比如合并后变为 $\left\{ 0 \right\}, \left\{ 1, 2, 3 \right\}, \left\{ 4 \right\}, \left\{5, 6\right\}, \left\{ 7 \right\}$,合并操作的结果如下图所示。从图中可以看出,在进行一系列合并操作后,下标为 $1$、$2$、$3$ 的元素集合编号是一致的,说明这 $3$ 个 元素同属于一个集合。同理下标为 $5$ 和 $6$ 的元素则同属于另一个集合。 +从上图中可以看出:数组的每个下标索引值对应一个元素的集合编号,代表着每个元素单独属于一个集合。 -![](https://qcdn.itcharge.cn/images/20220505145302.png) +当我们进行一系列的合并操作后,比如合并后变为 $\left\{ 0 \right\}, \left\{ 1, 2, 3 \right\}, \left\{ 4 \right\}, \left\{5, 6\right\}, \left\{ 7 \right\}$,合并操作的结果如下图所示。 + +![基于数组实现:合并操作](https://qcdn.itcharge.cn/images/20240513151310.png) + +从上图中可以看出,在进行一系列合并操作后,下标为 $1$、$2$、$3$ 的元素集合编号是一致的,说明这 $3$ 个元素同属于一个集合。同理下标为 $5$ 和 $6$ 的元素则同属于另一个集合。 在快速查询的实现思路中,单次查询操作的时间复杂度是 $O(1)$,而单次合并操作的时间复杂度为 $O(n)$(每次合并操作需要遍历数组)。两者的时间复杂度相差得比较大,完全牺牲了合并操作的性能。因此,这种并查集的实现思路并不常用。 @@ -92,17 +96,41 @@ class UnionFind: 总结一下,我们可以对数组 $fa$ 进行以下操作来实现并查集: -- **当初始化时**:将每个元素的集合编号初始化为数组 $fa$ 的下标索引。所有元素的根节点的集合编号不一样,代表着每个元素单独属于一个集合。 +- **当初始化时**:将数组 $fa$​ 的下标索引作为每个元素的集合编号。所有元素的根节点的集合编号都不一样,代表着每个元素单独属于一个集合。 - **合并操作时**:需要将两个集合的树根节点相连接。即令其中一个集合的树根节点指向另一个集合的树根节点(`fa[root1] = root2`),这样合并后当前集合中的所有元素的树根节点均为同一个。 - **查找操作时**:分别从两个元素开始,通过数组 $fa$ 存储的值,不断递归访问元素的父节点,直到到达树根节点。如果两个元素的树根节点一样,则说明它们属于同一个集合;如果两个元素的树根节点不一样,则说明它们不属于同一个集合。 -举个例子来说明一下,我们使用数组来表示一系列集合元素 $\left\{0\right\}, \left\{ 1 \right\}, \left\{ 2 \right\}, \left\{ 3 \right\}, \left\{ 4 \right\}, \left\{ 5 \right\}, \left\{ 6 \right\}, \left\{ 7 \right\}$,初始化时如下图所示。从下图中可以看出:元素的集合编号就是数组 $fa$ 的索引值,代表着每个元素属于一个集合。 +举个例子来说明一下,我们使用数组来表示一系列集合元素 $\left\{0\right\}, \left\{ 1 \right\}, \left\{ 2 \right\}, \left\{ 3 \right\}, \left\{ 4 \right\}, \left\{ 5 \right\}, \left\{ 6 \right\}, \left\{ 7 \right\}$,初始化时如下图所示。 + +![基于森林实现:初始化操作](https://qcdn.itcharge.cn/images/20240513151548.png) + +从上图中可以看出:$fa$ 数组的每个下标索引值对应一个元素的集合编号,代表着每个元素属于一个集合。 + +当我们进行一系列的合并操作后,比如 `union(4, 5)`、`union(6, 7)`、`union(4, 7)` 操作后变为 $\left\{ 0 \right\}, \left\{ 1 \right\}, \left\{ 2 \right\}, \left\{ 3 \right\}, \left\{ 4, 5, 6, 7 \right\}$​,合并操作的步骤及结果如下图所示。 + +::: tabs#union + +@tab <1> + +- 合并 $(4, 5)$:令 $4$ 的根节点指向 $5$,即将 $fa[4]$ 更改为 $5$。 + +![基于森林实现:合并操作 1](https://qcdn.itcharge.cn/images/20240513154015.png) + +@tab <2> + +- 合并 $(6, 7)$:令 $6$ 的根节点指向 $7$,即将 $fa[6]$ 更改为 $7$。 + +![基于森林实现:合并操作 2](https://qcdn.itcharge.cn/images/20240513154022.png) + +@tab <3> + +- 合并 $(4, 7)$:令 $4$ 的的根节点指向 $7$,即将 $fa[fa[4]]$(也就是 $fa[5]$)更改为 $7$。 -![](https://qcdn.itcharge.cn/images/20220507112934.png) +![基于森林实现:合并操作 3](https://qcdn.itcharge.cn/images/20240513154030.png) -当我们进行一系列的合并操作后,比如 `union(4, 5)`、`union(6, 7)`、`union(4, 7)` 操作后变为 $\left\{ 0 \right\}, \left\{ 1 \right\}, \left\{ 2 \right\}, \left\{ 3 \right\}, \left\{ 4, 5, 6, 7 \right\}$,合并操作的步骤及结果如下图所示。从图中可以看出,在进行一系列合并操作后,`fa[4] == fa[5] == fa[6] == fa[fa[7]]`,即 $4$、$5$、$6$、$7$ 的元素根节点编号都是 $4$,说明这 $4$ 个 元素同属于一个集合。 +::: -![](https://qcdn.itcharge.cn/images/20220507142647.png) +从上图中可以看出,在进行一系列合并操作后,`fa[fa[4]] == fa[5] == fa[6] == f[7]`,即 $4$、$5$、$6$、$7$ 的元素根节点编号都是 $4$,说明这 $4$ 个元素同属于一个集合。 - 使用「快速合并」思路实现并查集代码如下所示: @@ -132,7 +160,7 @@ class UnionFind: 在集合很大或者树很不平衡时,使用上述「快速合并」思路实现并查集的代码效率很差,最坏情况下,树会退化成一条链,单次查询的时间复杂度高达 $O(n)$。并查集的最坏情况如下图所示。 -![](https://qcdn.itcharge.cn/images/20220507172300.png) +![并查集最坏情况](https://qcdn.itcharge.cn/images/20240513154732.png) 为了避免出现最坏情况,一个常见的优化方式是「路径压缩」。 @@ -146,7 +174,7 @@ class UnionFind: 下面是一个「隔代压缩」的例子。 -![](https://qcdn.itcharge.cn/images/20220509113954.png) +![路径压缩:隔代压缩](https://qcdn.itcharge.cn/images/20240513154745.png) - 隔代压缩的查找代码如下: @@ -164,7 +192,7 @@ def find(self, x): # 查找元素根节点的集合 相比较于「隔代压缩」,「完全压缩」压缩的更加彻底。下面是一个「完全压缩」的例子。 -![](https://qcdn.itcharge.cn/images/20220507174723.png) +![路径压缩:完全压缩](https://qcdn.itcharge.cn/images/20240513154759.png) - 完全压缩的查找代码如下: @@ -195,7 +223,7 @@ def find(self, x): # 查找元素根节点的集合 下面是一个「按深度合并」的例子。 -![](https://qcdn.itcharge.cn/images/20220509094655.png) +![按秩合并:按深度合并](https://qcdn.itcharge.cn/images/20240513154814.png) - 按深度合并的实现代码如下: @@ -240,7 +268,7 @@ class UnionFind: 下面是一个「按大小合并」的例子。 -![](https://qcdn.itcharge.cn/images/20220509094634.png) +![按秩合并:按大小合并](https://qcdn.itcharge.cn/images/20240513154835.png) - 按大小合并的实现代码如下: From 669fa7617c081f31c19fb6ff9cb824c5ae7b137a Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 13 May 2024 17:58:21 +0800 Subject: [PATCH 095/158] Update 01.Recursive-Algorithm.md --- .../02.Recursive-Algorithm/01.Recursive-Algorithm.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md b/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md index bf69f8d8..16ef0dfb 100644 --- a/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md +++ b/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md @@ -54,9 +54,9 @@ fact(6) 这两个部分也可以叫做「递推过程」和「回归过程」,如下面两幅图所示: -![](https://qcdn.itcharge.cn/images/20220407160648.png) +![递推过程](https://qcdn.itcharge.cn/images/20220407160648.png) -![](https://qcdn.itcharge.cn/images/20220407160659.png) +![回归过程](https://qcdn.itcharge.cn/images/20220407160659.png) 如上面所说,我们可以把「递归」分为两个部分:「递推过程」和「回归过程」。 @@ -175,7 +175,7 @@ $f(n) = \begin{cases} 0 & n = 0 \cr 1 & n = 1 \cr f(n - 2) + f(n - 1) & n > 1 \e 其对应的递归过程如下图所示: -![](https://qcdn.itcharge.cn/images/20230307164107.png) +![斐波那契数列的递归过程](https://qcdn.itcharge.cn/images/20230307164107.png) 从图中可以看出:想要计算 $f(5)$,需要先计算 $f(3)$ 和 $f(4)$,而在计算 $f(4)$ 时还需要计算 $f(3)$,这样 $f(3)$ 就进行了多次计算。同理 $f(0)$、$f(1)$、$f(2)$ 都进行了多次计算,就导致了重复计算问题。 From 9172ad18e82777abae9410d80d1e4ac92464d1f2 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 13 May 2024 17:58:25 +0800 Subject: [PATCH 096/158] Update 01.Divide-And-Conquer-Algorithm.md --- .../01.Divide-And-Conquer-Algorithm.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md b/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md index 87fea158..d3807f8d 100644 --- a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md +++ b/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md @@ -6,7 +6,7 @@ 简单来说,分治算法的基本思想就是: **把规模大的问题不断分解为子问题,使得问题规模减小到可以直接求解为止。** -![](https://qcdn.itcharge.cn/images/20220413153059.png) +![分治算法的基本思想](https://qcdn.itcharge.cn/images/20220413153059.png) ### 1.2 分治算法和递归算法的异同 @@ -16,7 +16,7 @@ 分治算法从实现方式上来划分,可以分为两种:「递归算法」和「迭代算法」。 -![](https://qcdn.itcharge.cn/images/20220414093828.png) +![分治算法的实现方式](https://qcdn.itcharge.cn/images/20240513162133.png) 一般情况下,分治算法比较适合使用递归算法来实现。但除了递归算法之外,分治算法还可以通过迭代算法来实现。比较常见的例子有:快速傅里叶变换算法、二分查找算法、非递归实现的归并排序算法等等。 @@ -68,7 +68,7 @@ def divide_and_conquer(problems_n): # problems_n 为问题规模 一般来讲,分治算法将一个问题划分为 $a$ 个形式相同的子问题,每个子问题的规模为 $n/b$,则总的时间复杂度的递归表达式可以表示为: -$T(n) = \begin{cases} \begin{array} \ \Theta{(1)} & n = 1 \cr a \times T(n/b) + f(n) & n > 1 \end{array} \end{cases}$ +$T(n) = \begin{cases} \Theta{(1)} & n = 1 \cr a \times T(n/b) + f(n) & n > 1 \end{cases}$ 其中,每次分解时产生的子问题个数是 $a$ ,每个子问题的规模是原问题规模的 $1 / b$,分解和合并 $a$ 个子问题的时间复杂度是 $f(n)$。 @@ -82,15 +82,15 @@ $T(n) = \begin{cases} \begin{array} \ \Theta{(1)} & n = 1 \cr a \times T(n/b) + 我们得出归并排序算法的递归表达式如下: -$T(n) = \begin{cases} \begin{array} \ O{(1)} & n = 1 \cr 2 \times T(n/2) + O(n) & n > 1 \end{array} \end{cases}$ +$T(n) = \begin{cases} O{(1)} & n = 1 \cr 2 \times T(n/2) + O(n) & n > 1 \end{cases}$ 根据归并排序的递归表达式,当 $n > 1$ 时,可以递推求解: -$\begin{align} T(n) & = 2 \times T(n/2) + O(n) \cr & = 2 \times (2 \times T(n / 4) + O(n/2)) + O(n) \cr & = 4 \times T(n/4) + 2 \times O(n) \cr & = 8 \times T(n/8) + 3 \times O(n) \cr & = …… \cr & = 2^x \times T(n/2^x) + x \times O(n) \end{align}$ +$$\begin{aligned} T(n) & = 2 \times T(n/2) + O(n) \cr & = 2 \times (2 \times T(n / 4) + O(n/2)) + O(n) \cr & = 4 \times T(n/4) + 2 \times O(n) \cr & = 8 \times T(n/8) + 3 \times O(n) \cr & = …… \cr & = 2^x \times T(n/2^x) + x \times O(n) \end{aligned}$$ 递推最终规模为 $1$,令 $n = 2^x$,则 $x = \log_2n$,则: -$\begin{align} T(n) & = n \times T(1) + \log_2n \times O(n) \cr & = n + \log_2n \times O(n) \cr & = O(n \times \log_2n) \end{align}$ +$$\begin{aligned} T(n) & = n \times T(1) + \log_2n \times O(n) \cr & = n + \log_2n \times O(n) \cr & = O(n \times \log_2n) \end{aligned}$$ 则归并排序的时间复杂度为 $O(n \times \log_2n)$。 @@ -106,13 +106,13 @@ $\text{时间复杂度} = \text{叶子数} \times T(1) + \text{成本和} = 2^x 归并排序算法的递归表达式如下: -$T(n) = \begin{cases} \begin{array} \ O{(1)} & n = 1 \cr 2T(n/2) + O(n) & n > 1 \end{array} \end{cases}$ +$T(n) = \begin{cases} O{(1)} & n = 1 \cr 2T(n/2) + O(n) & n > 1 \end{cases}$ 其对应的递归树如下图所示。 -![](https://qcdn.itcharge.cn/images/20220414171458.png) +![归并排序算法的递归树](https://qcdn.itcharge.cn/images/20220414171458.png) -因为 $n = 2^x$,则 $x = \log_2n$,则归并排序算法的时间复杂度为:$2^x \times T(1) + x \times O(n) = n + \log_2n \times O(n) = O(n \times log_2n)$。 +因为 $n = 2^x$,则 $x = \log_2n$,则归并排序算法的时间复杂度为:$2^x \times T(1) + x \times O(n) = n + \log_2n \times O(n) = O(n \times \log_2n)$。 ## 4. 分治算法的应用 @@ -150,7 +150,7 @@ $T(n) = \begin{cases} \begin{array} \ O{(1)} & n = 1 \cr 2T(n/2) + O(n) & n > 1 使用归并排序算法对数组排序的过程如下图所示。 -![](https://qcdn.itcharge.cn/images/20220414204405.png) +![归并排序算法对数组排序的过程](https://qcdn.itcharge.cn/images/20220414204405.png) #### 4.1.4 代码 @@ -221,7 +221,7 @@ class Solution: 二分查找的的分治算法过程如下图所示。 -![](https://qcdn.itcharge.cn/images/20211223115032.png) +![二分查找的的分治算法过程](https://qcdn.itcharge.cn/images/20211223115032.png) #### 4.2.4 代码 From 922939da16e9761ee2c3d2d6dba71330d4b51cc8 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 13 May 2024 17:58:28 +0800 Subject: [PATCH 097/158] Update 01.Backtracking-Algorithm.md --- .../04.Backtracking-Algorithm/01.Backtracking-Algorithm.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md b/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md index 7c3c1001..8a9dde5e 100644 --- a/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md +++ b/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md @@ -33,7 +33,7 @@ 对于上述决策过程,我们也可以用一棵决策树来表示: -![](https://qcdn.itcharge.cn/images/20220425102048.png) +![全排列问题的决策树](https://qcdn.itcharge.cn/images/20220425102048.png) 从全排列的决策树中我们可以看出: @@ -205,7 +205,7 @@ for i in range(len(nums)): # 枚举可选元素列表 1. **明确所有选择**:根据数组中每个位置上的元素选与不选两种选择,画出决策树,如下图所示。 - - ![](https://qcdn.itcharge.cn/images/20220425210640.png) + - ![子集的决策树](https://qcdn.itcharge.cn/images/20220425210640.png) 2. **明确终止条件**: @@ -303,7 +303,7 @@ class Solution: 1. **明确所有选择**:根据棋盘中当前行的所有列位置上是否选择放置皇后,画出决策树,如下图所示。 - - ![](https://qcdn.itcharge.cn/images/20220426095225.png) + - ![n 皇后问题的决策树](https://qcdn.itcharge.cn/images/20220426095225.png) 2. **明确终止条件**: From ad0f945082520b1d4d6814415bdd3f1b837d9cfb Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 13 May 2024 17:58:31 +0800 Subject: [PATCH 098/158] Update 01.Greedy-Algorithm.md --- .../05.Greedy-Algorithm/01.Greedy-Algorithm.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md b/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md index 8d46a631..d735adc7 100644 --- a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md +++ b/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md @@ -23,7 +23,7 @@ 换句话说,当进行选择时,我们直接做出在当前问题中看来最优的选择,而不用去考虑子问题的解。在做出选择之后,才会去求解剩下的子问题,如下图所示。 -![](https://qcdn.itcharge.cn/images/20220511174939.png) +![贪心选择性质](https://qcdn.itcharge.cn/images/20240513163300.png) 贪心算法在进行选择时,可能会依赖之前做出的选择,但不会依赖任何将来的选择或是子问题的解。运用贪心算法解决的问题在程序的运行过程中无回溯过程。 @@ -37,7 +37,7 @@ 也就是说,如果原问题的最优解包含子问题的最优解,则说明该问题满足最优子结构性质。 -![](https://qcdn.itcharge.cn/images/20220511175042.png) +![最优子结构性质](https://qcdn.itcharge.cn/images/20240513163310.png) 在做了贪心选择后,满足最优子结构性质的原问题可以分解成规模更小的类似子问题来解决,并且可以通过贪心选择和子问题的最优解推导出问题的最优解。 From cdcd52653db4e9def6ffc5f0cafe7d6f225aadc0 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 13 May 2024 23:06:44 +0800 Subject: [PATCH 099/158] Update 01.Bit-Operation.md --- .../06.Bit-Operation/01.Bit-Operation.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md b/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md index c080a28f..2966ebbe 100644 --- a/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md +++ b/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md @@ -6,7 +6,7 @@ 在学习二进制数的位运算之前,我们先来了解一下什么叫做「二进制数」。 -![](https://qcdn.itcharge.cn/images/20230225233101.png) +![二进制数](https://qcdn.itcharge.cn/images/202405132135165.png) > **二进制数(Binary)**:由 $0$ 和 $1$ 两个数码来表示的数。二进制数中每一个 $0$ 或每一个 $1$ 都称为一个「位(Bit)」。 @@ -29,7 +29,7 @@ 同理,在二进制数中,$01101010_{(2)}$ 可以看作为 $(0 \times 2^7) + (1 \times 2^6) + (1 \times 2^5) + (0 \times 2^4) + (1 \times 2^3) + (0 \times 2^2) + (1 \times 2^1) + (0 \times 2^0)$,即 $0 + 64 + 32 + 0 + 8 + 0 + 2 + 0 = 106_{(10)}$。 -![](https://qcdn.itcharge.cn/images/20230225233152.png) +![二进制数转十进制数](https://qcdn.itcharge.cn/images/202405132136456.png) 我们可以通过这样的方式,将一个二进制数转为十进制数。 @@ -82,7 +82,7 @@ $\begin{aligned} 106 \div 2 = 53 & \text{(余 0)} \cr 53 \div 2 = 26 & \text 举个例子,对二进制数 $01111100_{(2)}$ 与 $00111110_{(2)}$ 进行按位与运算,结果为 $00111100_{(2)}$,如图所示: -![](https://qcdn.itcharge.cn/images/20230225233202.png) +![按位与运算](https://qcdn.itcharge.cn/images/202405132137023.png) ### 2.2 按位或运算 @@ -97,7 +97,7 @@ $\begin{aligned} 106 \div 2 = 53 & \text{(余 0)} \cr 53 \div 2 = 26 & \text 举个例子,对二进制数 $01001010_{(2)}$ 与 $01011011_{(2)}$ 进行按位或运算,结果为 $01011011_{(2)}$,如图所示: -![](https://qcdn.itcharge.cn/images/20230225233231.png) +![按位或运算](https://qcdn.itcharge.cn/images/202405132137593.png) ### 2.3 按位异或运算 @@ -115,7 +115,7 @@ $\begin{aligned} 106 \div 2 = 53 & \text{(余 0)} \cr 53 \div 2 = 26 & \text 举个例子,对二进制数 $01001010_{(2)}$ 与 $01000101_{(2)}$ 进行按位异或运算,结果为 $00001111_{(2)}$,如图所示: -![](https://qcdn.itcharge.cn/images/20230225233240.png) +![按位异或运算](https://qcdn.itcharge.cn/images/202405132137874.png) ### 2.4 取反运算 @@ -127,7 +127,7 @@ $\begin{aligned} 106 \div 2 = 53 & \text{(余 0)} \cr 53 \div 2 = 26 & \text 举个例子,对二进制数 $01101010_{(2)}$ 进行取反运算,结果如图所示: -![](https://qcdn.itcharge.cn/images/20230225233257.png) +![取反运算](https://qcdn.itcharge.cn/images/202405132138853.png) ### 2.5 左移运算和右移运算 @@ -135,13 +135,13 @@ $\begin{aligned} 106 \div 2 = 53 & \text{(余 0)} \cr 53 \div 2 = 26 & \text 举个例子,对二进制数 $01101010_{(2)}$ 进行左移 $1$ 位运算,结果为 $11010100_{(2)}$,如图所示: -![](https://qcdn.itcharge.cn/images/20230225233308.png) +![左移运算](https://qcdn.itcharge.cn/images/202405132138841.png) > **右移运算(SHR)**: 右移运算符为 `>>`。其功能是对一个二进制数的各个二进位全部右移若干位(低位丢弃,高位补 $0$)。 举个例子,对二进制数 $01101010_{(2)}$ 进行右移 $1$ 位运算,结果为 $00110101_{(2)}$,如图所示: -![](https://qcdn.itcharge.cn/images/20230225233317.png) +![右移运算](https://qcdn.itcharge.cn/images/202405132138348.png) ## 3. 位运算的应用 From c94b3a5617c3637941a4fad4848adca5ab81bec2 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 13 May 2024 23:06:45 +0800 Subject: [PATCH 100/158] Update 01.Recursive-Algorithm.md --- .../02.Recursive-Algorithm/01.Recursive-Algorithm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md b/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md index 16ef0dfb..2884b423 100644 --- a/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md +++ b/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md @@ -4,7 +4,7 @@ 举个简单的例子来了解一下递归算法。比如阶乘的计算方法在数学上的定义为: -$fact(n) = \begin{cases} 1 & \text{n = 0} \cr n * fact(n - 1) & \text{n > 0} \end{cases}$ +$fact(n) = \begin{cases} 1 & \text{n = 0} \cr n \times fact(n - 1) & \text{n > 0} \end{cases}$ 根据阶乘计算方法的数学定义,我们可以使用调用函数自身的方式来实现阶乘函数 $fact(n)$ ,其实现代码可以写作: From 87d96c743ed1df91dcc6c21ca129ce86d89f92c6 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 May 2024 11:40:53 +0800 Subject: [PATCH 101/158] Update 01.Dynamic-Programming-Basic.md --- .../01.Dynamic-Programming-Basic.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md b/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md index ef594aa2..f1480280 100644 --- a/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md +++ b/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md @@ -28,7 +28,7 @@ 通过公式 $f(n) = f(n - 2) + f(n - 1)$,我们可以将原问题 $f(n)$ 递归地划分为 $f(n - 2)$ 和 $f(n - 1)$ 这两个子问题。其对应的递归过程如下图所示: -![](https://qcdn.itcharge.cn/images/20230307164107.png) +![斐波那契数列的重复计算项](https://qcdn.itcharge.cn/images/20230307164107.png) 从图中可以看出:如果使用传统递归算法计算 $f(5)$,需要先计算 $f(3)$ 和 $f(4)$,而在计算 $f(4)$ 时还需要计算 $f(3)$,这样 $f(3)$ 就进行了多次计算。同理 $f(0)$、$f(1)$、$f(2)$ 都进行了多次计算,从而导致了重复计算问题。 @@ -81,13 +81,13 @@ class Solution: 也就是说,如果原问题的最优解包含子问题的最优解,则说明该问题满足最优子结构性质。 -![](https://qcdn.itcharge.cn/images/20220511175042.png) +![最优子结构性质](https://qcdn.itcharge.cn/images/20240513163310.png) ### 2.2 重叠子问题性质 > **重叠子问题性质**:指的是在求解子问题的过程中,有大量的子问题是重复的,一个子问题在下一阶段的决策中可能会被多次用到。如果有大量重复的子问题,那么只需要对其求解一次,然后用表格将结果存储下来,以后使用时可以直接查询,不需要再次求解。 -![](https://qcdn.itcharge.cn/images/20230307175804.png) +![重叠子问题性质](https://qcdn.itcharge.cn/images/20230307164107.png) 之前我们提到的「斐波那契数列」例子中,$f(0)$、$f(1)$、$f(2)$、$f(3)$ 都进行了多次重复计算。动态规划算法利用了子问题重叠的性质,在第一次计算 $f(0)$、$f(1)$、$f(2)$、$f(3)$ 时就将其结果存入表格,当再次使用时可以直接查询,无需再次求解,从而提升效率。 @@ -101,7 +101,7 @@ class Solution: 而如果一个问题具有「后效性」,则可能需要先将其转化或者逆向求解来消除后效性,然后才可以使用动态规划算法。 -![](https://qcdn.itcharge.cn/images/202303072158573.png) +![无后效性](https://qcdn.itcharge.cn/images/20240514110127.png) ## 3. 动态规划的基本思路 @@ -109,7 +109,7 @@ class Solution: 这样就将一个原问题分解为了一系列的子问题,再通过逐步求解从而获得最终结果。 -![](https://qcdn.itcharge.cn/images/20220720180135.png) +![动态规划方法](https://qcdn.itcharge.cn/images/20240514110154.png) 这种前后关联、具有链状结构的多阶段进行决策的问题也叫做「多阶段决策问题」。 From 512ea898817a90de1e318d68cd5307d00884e307 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 May 2024 11:40:54 +0800 Subject: [PATCH 102/158] Update 01.Memoization.md --- .../10.Dynamic-Programming/02.Memoization/01.Memoization.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md b/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md index ef46933e..fdfb05a0 100644 --- a/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md +++ b/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md @@ -6,7 +6,7 @@ 举个例子,比如「斐波那契数列」的定义是:$f(0) = 0, f(1) = 1, f(n) = f(n - 1) + f(n - 2)$。如果我们使用递归算法求解第 $n$ 个斐波那契数,则对应的递推过程如下: -![](https://qcdn.itcharge.cn/images/20230308105357.png) +![记忆化搜索](https://qcdn.itcharge.cn/images/20240514110503.png) 从图中可以看出:如果使用普通递归算法,想要计算 $f(5)$,需要先计算 $f(3)$ 和 $f(4)$,而在计算 $f(4)$ 时还需要计算 $f(3)$。这样 $f(3)$ 就进行了多次计算,同理 $f(0)$、$f(1)$、$f(2)$ 都进行了多次计算,从而导致了重复计算问题。 From e5d97ffbfd858a5c620516a6b060e243bdc16195 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 May 2024 11:40:57 +0800 Subject: [PATCH 103/158] Update 01.Linear-DP-01.md --- Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md b/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md index 1f7497e3..43a421ea 100644 --- a/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md +++ b/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md @@ -2,7 +2,7 @@ > **线性动态规划**:具有「线性」阶段划分的动态规划方法统称为线性动态规划(简称为「线性 DP」),如下图所示。 -![](https://qcdn.itcharge.cn/images/202303122358154.png) +![线性 DP](https://qcdn.itcharge.cn/images/20240514110630.png) 如果状态包含多个维度,但是每个维度上都是线性划分的阶段,也属于线性 DP。比如背包问题、区间 DP、数位 DP 等都属于线性 DP。 From fb180390156d653ac456fa32543905639cdaf671 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 May 2024 11:40:58 +0800 Subject: [PATCH 104/158] Update 01.Knapsack-Problem-01.md --- .../04.Knapsack-Problem/01.Knapsack-Problem-01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md index dbba9dad..71e90168 100644 --- a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md +++ b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md @@ -4,7 +4,7 @@ > **背包问题**:背包问题是线性 DP 问题中一类经典而又特殊的模型。背包问题可以描述为:给定一组物品,每种物品都有自己的重量、价格以及数量。再给定一个最多能装重量为 $W$ 的背包。现在选择将一些物品放入背包中,请问在总重量不超过背包载重上限的情况下,能装入背包的最大价值总和是多少? -![](https://qcdn.itcharge.cn/images/202303191755045.png) +![背包问题](https://qcdn.itcharge.cn/images/20240514111553.png) 根据物品限制条件的不同,背包问题可分为:0-1 背包问题、完全背包问题、多重背包问题、分组背包问题,以及混合背包问题等。 @@ -20,7 +20,7 @@ > **0-1 背包问题**:有 $n$ 件物品和有一个最多能装重量为 $W$ 的背包。第 $i$ 件物品的重量为 $weight[i]$,价值为 $value[i]$,每件物品有且只有 $1$ 件。请问在总重量不超过背包载重上限的情况下,能装入背包的最大价值是多少? -![](https://qcdn.itcharge.cn/images/202303191759967.png) +![0-1 背包问题](https://qcdn.itcharge.cn/images/20240514111617.png) ### 2.1 0-1 背包问题基本思路 From 49ec60b588c5f5e18f7c3d81c7164c54abaf9a0e Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 May 2024 11:41:01 +0800 Subject: [PATCH 105/158] Update 02.Knapsack-Problem-02.md --- .../04.Knapsack-Problem/02.Knapsack-Problem-02.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md index 45b078cf..5563041b 100644 --- a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md +++ b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md @@ -2,7 +2,7 @@ > **完全背包问题**:有 $n$ 种物品和一个最多能装重量为 $W$ 的背包,第 $i$ 种物品的重量为 $weight[i]$,价值为 $value[i]$,每种物品数量没有限制。请问在总重量不超过背包载重上限的情况下,能装入背包的最大价值是多少? -![](https://qcdn.itcharge.cn/images/202303191800014.png) +![完全背包问题](https://qcdn.itcharge.cn/images/20240514111640.png) ### 3.1 完全背包问题基本思路 From e11bc80a54f38754823d63bc4f5e190d47d7c66c Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 May 2024 11:41:04 +0800 Subject: [PATCH 106/158] Update 03.Knapsack-Problem-03.md --- .../04.Knapsack-Problem/03.Knapsack-Problem-03.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md index 879ea89e..d2a8762e 100644 --- a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md +++ b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md @@ -2,7 +2,7 @@ > **多重背包问题**:有 $n$ 种物品和一个最多能装重量为 $W$ 的背包,第 $i$ 种物品的重量为 $weight[i]$,价值为 $value[i]$,件数为 $count[i]$。请问在总重量不超过背包载重上限的情况下,能装入背包的最大价值是多少? -![](https://qcdn.itcharge.cn/images/202303191809178.png) +![多重背包问题](https://qcdn.itcharge.cn/images/20240514111701.png) ### 4.1 多重背包问题基本思路 From a9955732d215fa851413439450ea285cd1c5f5e8 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 May 2024 11:41:06 +0800 Subject: [PATCH 107/158] Update 04.Knapsack-Problem-04.md --- .../04.Knapsack-Problem/04.Knapsack-Problem-04.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md index 85f87c23..96b2bd7c 100644 --- a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md +++ b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md @@ -8,7 +8,7 @@ > > 请问在总重量不超过背包载重上限的情况下,能装入背包的最大价值是多少? -![](https://qcdn.itcharge.cn/images/20230329095653.png) +![混合背包问题](https://qcdn.itcharge.cn/images/20240514111727.png) #### 思路 1:动态规划 @@ -82,7 +82,7 @@ class Solution: > **分组背包问题**:有 $n$ 组物品和一个最多能装重量为 $W$ 的背包,第 $i$ 组物品的件数为 $group\underline{\hspace{0.5em}}count[i]$,第 $i$ 组的第 $j$ 个物品重量为 $weight[i][j]$,价值为 $value[i][j]$。每组物品中最多只能选择 $1$ 件物品装入背包。请问在总重量不超过背包载重上限的情况下,能装入背包的最大价值是多少? -![](https://qcdn.itcharge.cn/images/20230329095729.png) +![分组背包问题](https://qcdn.itcharge.cn/images/20240514111745.png) ### 6.1 分组背包问题基本思路 @@ -202,7 +202,7 @@ class Solution: > **二维费用背包问题**:有 $n$ 件物品和有一个最多能装重量为 $W$、容量为 $V$ 的背包。第 $i$ 件物品的重量为 $weight[i]$,体积为 $volume[i]$,价值为 $value[i]$,每件物品有且只有 $1$ 件。请问在总重量不超过背包载重上限、容量上限的情况下,能装入背包的最大价值是多少? -![](https://qcdn.itcharge.cn/images/20230329095857.png) +![二维费用背包问题](https://qcdn.itcharge.cn/images/20240514111802.png) ### 7.1 二维费用背包问题基本思路 From 06782a5d87c6073d8d28c303df53b2b5eb137b47 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 May 2024 11:41:09 +0800 Subject: [PATCH 108/158] Update 01.Tree-DP.md --- Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md b/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md index 9dd5983a..d638ffc9 100644 --- a/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md +++ b/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md @@ -2,7 +2,7 @@ > **树形动态规划**:简称为「树形 DP」,是一种在树形结构上进行推导的动态规划方法。如下图所示,树形 DP 的求解过程一般以节点从深到浅(子树从小到大)的顺序作为动态规划的「阶段」。在树形 DP 中,第 $1$ 维通常是节点编号,代表以该节点为根的子树。 -![](https://qcdn.itcharge.cn/images/20230418114342.png) +![树形 DP](https://qcdn.itcharge.cn/images/20240514113355.png) 树形 DP 问题的划分方法有多种方式。 From 395dd7db2ccd33183db4f7eaefdf18f5308e86b7 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 May 2024 16:59:34 +0800 Subject: [PATCH 109/158] Update 01.Divide-And-Conquer-Algorithm.md --- .../01.Divide-And-Conquer-Algorithm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md b/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md index d3807f8d..574ba248 100644 --- a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md +++ b/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md @@ -12,7 +12,7 @@ 从定义上来看,分治算法的思想和递归算法的思想是一样的,都是把规模大的问题不断分解为子问题。 -其实,分治算法和递归算法的关系是包含与被包含的关系,可以看做: **递归算法 ∈ 分治算法**。 +其实,分治算法和递归算法的关系是包含与被包含的关系,可以看做: $\text{递归算法} \in \text{分治算法}$。 分治算法从实现方式上来划分,可以分为两种:「递归算法」和「迭代算法」。 From 00e16139f710525d2c84f785481bba934f5e0d5e Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 14 May 2024 17:05:23 +0800 Subject: [PATCH 110/158] =?UTF-8?q?Update=200091.=20=E8=A7=A3=E7=A0=81?= =?UTF-8?q?=E6=96=B9=E6=B3=95.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" "b/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" index d2896189..cbfaddd7 100644 --- "a/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" +++ "b/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" @@ -62,7 +62,7 @@ $dp[i]$ 的来源有两种情况: 状态转移方程可以写为: -$dp[i] += \begin{cases} \begin{array} \ dp[i-1] & s[i] \ne 0 \cr dp[i-2] & s[i-1] \ne 0,s[i-1:i] \le 26 \end{array} \end{cases}$ +$dp[i] += \begin{cases} dp[i-1] & \quad s[i] \ne 0 \cr dp[i-2] & \quad s[i-1] \ne 0,s[i-1:i] \le 26 \end{cases}$ ###### 4. 初始条件 From 9c66e9507c84ec49680bbe5e889076859bf35445 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Wed, 15 May 2024 18:00:33 +0800 Subject: [PATCH 111/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20Latex=20=E5=85=AC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...25\277\345\220\214\345\200\274\350\267\257\345\276\204.md" | 2 +- ...32\204\346\225\260\345\257\271\350\267\235\347\246\273.md" | 4 ++-- ...34\200\345\244\247\345\255\246\347\224\237\346\225\260.md" | 2 +- ...70\214\345\200\274\347\232\204\345\255\220\344\270\262.md" | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git "a/Solutions/0687. \346\234\200\351\225\277\345\220\214\345\200\274\350\267\257\345\276\204.md" "b/Solutions/0687. \346\234\200\351\225\277\345\220\214\345\200\274\350\267\257\345\276\204.md" index 45ed71e5..3e7c8eb0 100644 --- "a/Solutions/0687. \346\234\200\351\225\277\345\220\214\345\200\274\350\267\257\345\276\204.md" +++ "b/Solutions/0687. \346\234\200\351\225\277\345\220\214\345\200\274\350\267\257\345\276\204.md" @@ -60,7 +60,7 @@ 那么现在问题就变成为如何求「子树的高度」和「子树中的最大直径」。 1. 子树的高度:我们可以利用深度优先搜索方法,递归遍历左右子树,并分别返回左右子树的高度。 -2. 子树中的最大直径:我们可以在递归求解子树高度的时候维护一个 $ans$ 变量,用于记录所有 $\text{左子树高度} + \text{右子树高度$ 中的最大值。 +2. 子树中的最大直径:我们可以在递归求解子树高度的时候维护一个 $ans$ 变量,用于记录所有 $\text{左子树高度} + \text{右子树高度}$ 中的最大值。 最终 $ans$ 就是我们所求的该二叉树的最大直径。 diff --git "a/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" "b/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" index c39c55b3..91286861 100644 --- "a/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" +++ "b/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" @@ -1,11 +1,11 @@ -# [0719. 找出第 k 小的距离对](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) +# [0719. 找出第 K 小的距离对](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) - 标签:数组、双指针、二分查找、排序 - 难度:困难 ## 题目链接 -- [0719. 找出第 k 小的距离对 - 力扣](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) +- [0719. 找出第 K 小的距离对 - 力扣](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) ## 题目大意 diff --git "a/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" "b/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" index bb474b8d..c1ee6079 100644 --- "a/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" +++ "b/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" @@ -72,7 +72,7 @@ 因为学生可以看到左侧、右侧、左上方、右上方这四个方向上紧邻他的学生答卷,所以对于当前排的某个座位来说,其左侧、右侧、左上方、右上方都不应有人坐。我们可以根据当前排的座位选取状态 $cur\underline{\hspace{0.5em}}state$,并通过枚举的方式,找出符合要求的上一排座位选取状态 $pre\underline{\hspace{0.5em}}state$,并计算出当前排座位选择个数,即 $f(cur\underline{\hspace{0.5em}}state)$,则状态转移方程为: - $dp[i][state] = \max \lbrace dp[i - 1][pre\underline{\hspace{0.5em}}state]\rbrace + f(state) $ + $dp[i][state] = \max \lbrace dp[i - 1][pre\underline{\hspace{0.5em}}state] \rbrace + f(state)$ 因为所给座位中还有坏座位(不可用)的情况,我们可以使用一个 $8$ 位的二进制数 $bad\underline{\hspace{0.5em}}seat$ 来表示当前排的坏座位情况,如果 $cur\underline{\hspace{0.5em}}state \text{ \& } bad\underline{\hspace{0.5em}}seat == 1$,则说明当前状态下,选择了坏椅子,则可直接跳过这种状态。 diff --git "a/Solutions/2156. \346\237\245\346\211\276\347\273\231\345\256\232\345\223\210\345\270\214\345\200\274\347\232\204\345\255\220\344\270\262.md" "b/Solutions/2156. \346\237\245\346\211\276\347\273\231\345\256\232\345\223\210\345\270\214\345\200\274\347\232\204\345\255\220\344\270\262.md" index eafed5cc..ba9056d0 100644 --- "a/Solutions/2156. \346\237\245\346\211\276\347\273\231\345\256\232\345\223\210\345\270\214\345\200\274\347\232\204\345\255\220\344\270\262.md" +++ "b/Solutions/2156. \346\237\245\346\211\276\347\273\231\345\256\232\345\223\210\345\270\214\345\200\274\347\232\204\345\255\220\344\270\262.md" @@ -68,7 +68,7 @@ 我们可以把上面的式子转变为: -$\begin{align} Hash(s_{[i - 1, i + k - 2]}) &= \{[Hash(s_{[i, i + k - 1]}) - s_{i + k - 1} \times d^{k - 1}] \times d + s_{i - 1} \times d^{0} \} \mod m \cr &= \{[Hash(s_{[i, i + k - 1]}) - s_{i + k - 1} \times d^{k - 1}] \times d \mod m + s_{i - 1} \times d^{0} \mod m \} \mod m \cr &= \{[Hash(s_{[i, i + k - 1]}) - s_{i + k - 1} \times d^{k - 1}] \mod m \times d \mod m + s_{i - 1} \times d^{0} \mod m \} \mod m \end{align}$ +$$\begin{aligned} Hash(s_{[i - 1, i + k - 2]}) &= \{[Hash(s_{[i, i + k - 1]}) - s_{i + k - 1} \times d^{k - 1}] \times d + s_{i - 1} \times d^{0} \} \mod m \cr &= \{[Hash(s_{[i, i + k - 1]}) - s_{i + k - 1} \times d^{k - 1}] \times d \mod m + s_{i - 1} \times d^{0} \mod m \} \mod m \cr &= \{[Hash(s_{[i, i + k - 1]}) - s_{i + k - 1} \times d^{k - 1}] \mod m \times d \mod m + s_{i - 1} \times d^{0} \mod m \} \mod m \end{aligned}$$ > 注意:这里之所以用了「反向迭代」而不是「正向迭代」是因为如果使用了正向迭代,那么每次移除的最左侧字符哈希值为 $val(s[i]) * p^0$,之后整体需要除以 $p$,再移入最右侧字符哈希值为($val(s[i+k]) * p^{k-1})$)。 > From 2879d5f26e84c999dfba88226e221c8c1b3d890a Mon Sep 17 00:00:00 2001 From: ITCharge Date: Wed, 15 May 2024 22:51:38 +0800 Subject: [PATCH 112/158] =?UTF-8?q?Update=200526.=20=E4=BC=98=E7=BE=8E?= =?UTF-8?q?=E7=9A=84=E6=8E=92=E5=88=97.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" "b/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" index 7aef3834..eac572be 100644 --- "a/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" +++ "b/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" @@ -173,7 +173,7 @@ class Solution: ###### 3. 状态转移方程 -对于状态 $state$,先统计出 $state$ 中选择的数字个数(即统计二进制中 $1$ 的个数)$one_num$。 +对于状态 $state$,先统计出 $state$ 中选择的数字个数(即统计二进制中 $1$ 的个数)$one\underline{\hspace{0.5em}}num$。 则 $dp[state]$ 表示选择了前 $one\underline{\hspace{0.5em}}num$ 个数字,且选择情况为 $state$ 时的方案数。 From d28abba62e6976cfcdb88eb675d25c899299d8d4 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 16 May 2024 13:39:36 +0800 Subject: [PATCH 113/158] Update LinkedList-QuickSort.py --- Templates/02.LinkedList/LinkedList-QuickSort.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Templates/02.LinkedList/LinkedList-QuickSort.py b/Templates/02.LinkedList/LinkedList-QuickSort.py index 6cfe1d50..96bd88e9 100644 --- a/Templates/02.LinkedList/LinkedList-QuickSort.py +++ b/Templates/02.LinkedList/LinkedList-QuickSort.py @@ -33,9 +33,7 @@ def quickSort(self, left: ListNode, right: ListNode): self.quickSort(left, pi) self.quickSort(pi.next, right) return left - - def quickSort(self, head): - + def sortLinkedList(self, head: ListNode): if not head or not head.next: return head From ff355e7bf51330a8dc3e7f9169d275769878cc99 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 20 May 2024 16:41:19 +0800 Subject: [PATCH 114/158] =?UTF-8?q?Update=200091.=20=E8=A7=A3=E7=A0=81?= =?UTF-8?q?=E6=96=B9=E6=B3=95.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" "b/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" index cbfaddd7..405aed53 100644 --- "a/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" +++ "b/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" @@ -62,7 +62,7 @@ $dp[i]$ 的来源有两种情况: 状态转移方程可以写为: -$dp[i] += \begin{cases} dp[i-1] & \quad s[i] \ne 0 \cr dp[i-2] & \quad s[i-1] \ne 0,s[i-1:i] \le 26 \end{cases}$ +$dp[i] += \begin{cases} dp[i-1] & \quad s[i] \ne 0 \cr dp[i-2] & \quad s[i-1] \ne 0, s[i-1:i] \le 26 \end{cases}$ ###### 4. 初始条件 From 031da1e95046c5c07101042ca706598f4a3ad05a Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 20 May 2024 18:00:01 +0800 Subject: [PATCH 115/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/00.Introduction/04.Solutions-List.md | 3 +- .../00.Introduction/05.Categories-List.md | 2 +- .../02.Graph-Minimum-Spanning-Tree-List.md | 2 +- README.md | 2 +- ...00\345\260\217\350\264\271\347\224\250.md" | 171 ++++++++++++++++++ Templates/08.Graph/Graph-Kruskal.py | 55 ++++++ Templates/08.Graph/Graph-Prim.py | 4 +- 7 files changed, 233 insertions(+), 6 deletions(-) create mode 100644 "Solutions/1584. \350\277\236\346\216\245\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\350\264\271\347\224\250.md" create mode 100644 Templates/08.Graph/Graph-Kruskal.py diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md index 5ef506c8..658bc1e0 100644 --- a/Contents/00.Introduction/04.Solutions-List.md +++ b/Contents/00.Introduction/04.Solutions-List.md @@ -1,4 +1,4 @@ -# LeetCode 题解(已完成 859 道) +# LeetCode 题解(已完成 860 道) | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | @@ -598,6 +598,7 @@ | 1561 | [你可以获得的最大硬币数目](https://leetcode.cn/problems/maximum-number-of-coins-you-can-get/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1561.%20%E4%BD%A0%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%BE%97%E7%9A%84%E6%9C%80%E5%A4%A7%E7%A1%AC%E5%B8%81%E6%95%B0%E7%9B%AE.md) | 贪心、数组、数学、博弈、排序 | 中等 | | 1567 | [乘积为正数的最长子数组长度](https://leetcode.cn/problems/maximum-length-of-subarray-with-positive-product/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1567.%20%E4%B9%98%E7%A7%AF%E4%B8%BA%E6%AD%A3%E6%95%B0%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E6%95%B0%E7%BB%84%E9%95%BF%E5%BA%A6.md) | 贪心、数组、动态规划 | 中等 | | 1582 | [二进制矩阵中的特殊位置](https://leetcode.cn/problems/special-positions-in-a-binary-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1582.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E7%89%B9%E6%AE%8A%E4%BD%8D%E7%BD%AE.md) | 数组、矩阵 | 简单 | +| 1584 | [连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1584.%20%E8%BF%9E%E6%8E%A5%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B4%B9%E7%94%A8.md) | 并查集、图、数组、最小生成树 | 中等 | | 1593 | [拆分字符串使唯一子字符串的数目最大](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1593.%20%E6%8B%86%E5%88%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BD%BF%E5%94%AF%E4%B8%80%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE%E6%9C%80%E5%A4%A7.md) | 哈希表、字符串、回溯 | 中等 | | 1595 | [连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1595.%20%E8%BF%9E%E9%80%9A%E4%B8%A4%E7%BB%84%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | | 1603 | [设计停车系统](https://leetcode.cn/problems/design-parking-system/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1603.%20%E8%AE%BE%E8%AE%A1%E5%81%9C%E8%BD%A6%E7%B3%BB%E7%BB%9F.md) | 设计、计数、模拟 | 简单 | diff --git a/Contents/00.Introduction/05.Categories-List.md b/Contents/00.Introduction/05.Categories-List.md index ba0be143..e43308a5 100644 --- a/Contents/00.Introduction/05.Categories-List.md +++ b/Contents/00.Introduction/05.Categories-List.md @@ -649,7 +649,7 @@ | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | -| 1584 | [连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | | 并查集、图、数组、最小生成树 | 中等 | +| 1584 | [连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1584.%20%E8%BF%9E%E6%8E%A5%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B4%B9%E7%94%A8.md) | 并查集、图、数组、最小生成树 | 中等 | | 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | | 0778 | [水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0778.%20%E6%B0%B4%E4%BD%8D%E4%B8%8A%E5%8D%87%E7%9A%84%E6%B3%B3%E6%B1%A0%E4%B8%AD%E6%B8%B8%E6%B3%B3.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | diff --git a/Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md b/Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md index e3e7ab31..0631b0aa 100644 --- a/Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md +++ b/Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md @@ -2,7 +2,7 @@ | 题号 | 标题 | 题解 | 标签 | 难度 | | :------ | :------ | :------ | :------ | :------ | -| 1584 | [连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | | 并查集、图、数组、最小生成树 | 中等 | +| 1584 | [连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1584.%20%E8%BF%9E%E6%8E%A5%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B4%B9%E7%94%A8.md) | 并查集、图、数组、最小生成树 | 中等 | | 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | | 0778 | [水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0778.%20%E6%B0%B4%E4%BD%8D%E4%B8%8A%E5%8D%87%E7%9A%84%E6%B3%B3%E6%B1%A0%E4%B8%AD%E6%B8%B8%E6%B3%B3.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | diff --git a/README.md b/README.md index aa3b6ab1..9b5c6cff 100644 --- a/README.md +++ b/README.md @@ -259,4 +259,4 @@ ### 11. 附加内容 - [内容完成时间线](./Contents/Others/Update-Time.md) -### [12. LeetCode 题解(已完成 859 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +### [12. LeetCode 题解(已完成 860 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file diff --git "a/Solutions/1584. \350\277\236\346\216\245\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\350\264\271\347\224\250.md" "b/Solutions/1584. \350\277\236\346\216\245\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\350\264\271\347\224\250.md" new file mode 100644 index 00000000..22e51e30 --- /dev/null +++ "b/Solutions/1584. \350\277\236\346\216\245\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\350\264\271\347\224\250.md" @@ -0,0 +1,171 @@ +# [1584. 连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) + +- 标签:并查集、图、数组、最小生成树 +- 难度:中等 + +## 题目链接 + +- [1584. 连接所有点的最小费用 - 力扣](https://leetcode.cn/problems/min-cost-to-connect-all-points/) + +## 题目大意 + +**描述**:给定一个 $points$ 数组,表示 2D 平面上的一些点,其中 $points[i] = [x_i, y_i]$。 + +链接点 $[x_i, y_i]$ 和点 $[x_j, y_j]$ 的费用为它们之间的 **曼哈顿距离**:$|x_i - x_j| + |y_i - y_j|$。其中 $|val|$ 表示 $val$ 的绝对值。 + +**要求**:返回将所有点连接的最小总费用。 + +**说明**: + +- 只有任意两点之间有且仅有一条简单路径时,才认为所有点都已连接。 +- $1 \le points.length \le 1000$。 +- $-10^6 \le x_i, y_i \le 10^6$。 +- 所有点 $(x_i, y_i)$ 两两不同。 + +**示例**: + +- 示例 1: + +![](https://assets.leetcode.com/uploads/2020/08/26/d.png) + +![](https://assets.leetcode.com/uploads/2020/08/26/c.png) + +```python +输入:points = [[0,0],[2,2],[3,10],[5,2],[7,0]] +输出:20 +解释:我们可以按照上图所示连接所有点得到最小总费用,总费用为 20 。 +注意到任意两个点之间只有唯一一条路径互相到达。 +``` + +- 示例 2: + +```python +输入:points = [[3,12],[-2,5],[-4,1]] +输出:18 +``` + +## 解题思路 + +将所有点之间的费用看作是边,则所有点和边可以看作是一个无向图。每两个点之间都存在一条无向边,边的权重为两个点之间的曼哈顿距离。将所有点连接的最小总费用,其实就是求无向图的最小生成树。对此我们可以使用 Prim 算法或者 Kruskal 算法。 + +### 思路 1:Prim 算法 + +每次选择最短边来扩展最小生成树,从而保证生成树的总权重最小。算法通过不断扩展小生成树的顶点集合 $MST$,逐步构建出最小生成树。 + +### 思路 1:代码 + +```Python +class Solution: + def distance(self, point1, point2): + return abs(point1[0] - point2[0]) + abs(point1[1] - point2[1]) + + def Prim(self, points, start): + size = len(points) + vis = set() + dis = [float('inf') for _ in range(size)] + + ans = 0 # 最小生成树的边权值 + dis[start] = 0 # 起始位置到起始位置的边权值初始化为 0 + + for i in range(1, size): + dis[i] = self.distance(points[start], points[i]) + vis.add(start) + + for _ in range(size - 1): # 进行 n 轮迭代 + min_dis = float('inf') + min_dis_i = -1 + for i in range(size): + if i not in vis and dis[i] < min_dis: + min_dis = dis[i] + min_dis_i = i + if min_dis_i == -1: + return -1 + + ans += min_dis + vis.add(min_dis_i) + + + for i in range(size): + if i not in vis: + dis[i] = min(dis[i], self.distance(points[i], points[min_dis_i])) + + return ans + + def minCostConnectPoints(self, points: List[List[int]]) -> int: + return self.Prim(points, 0) +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(n^2)$。 +- **空间复杂度**:$O(n^2)$。 + +### 思路 2:Kruskal 算法 + +通过依次选择权重最小的边并判断其两个端点是否连接在同一集合中,从而逐步构建最小生成树。这个过程保证了最终生成的树是无环的,并且总权重最小。 + +### 思路 2:代码 + +```python +class UnionFind: + + def __init__(self, n): + self.parent = [i for i in range(n)] + self.count = n + + def find(self, x): + while x != self.parent[x]: + self.parent[x] = self.parent[self.parent[x]] + x = self.parent[x] + return x + + def union(self, x, y): + root_x = self.find(x) + root_y = self.find(y) + if root_x == root_y: + return + + self.parent[root_x] = root_y + self.count -= 1 + + def is_connected(self, x, y): + return self.find(x) == self.find(y) + + +class Solution: + def Kruskal(self, edges, size): + union_find = UnionFind(size) + + edges.sort(key=lambda x: x[2]) + + ans, cnt = 0, 0 + for x, y, dist in edges: + if union_find.is_connected(x, y): + continue + ans += dist + cnt += 1 + union_find.union(x, y) + if cnt == size - 1: + return ans + return ans + + def minCostConnectPoints(self, points: List[List[int]]) -> int: + size = len(points) + edges = [] + for i in range(size): + xi, yi = points[i] + for j in range(i + 1, size): + xj, yj = points[j] + dist = abs(xi - xj) + abs(yi - yj) + edges.append([i, j, dist]) + + ans = self.Kruskal(edges, size) + return ans + +``` + +### 思路 2:复杂度分析 + +- **时间复杂度**:$O(m \times \log(n))$。其中 $m$ 为边数,$n$ 为节点数,本题中 $m = n^2$。 +- **空间复杂度**:$O(n^2)$。 + diff --git a/Templates/08.Graph/Graph-Kruskal.py b/Templates/08.Graph/Graph-Kruskal.py new file mode 100644 index 00000000..b8fd0af1 --- /dev/null +++ b/Templates/08.Graph/Graph-Kruskal.py @@ -0,0 +1,55 @@ +class UnionFind: + + def __init__(self, n): + self.parent = [i for i in range(n)] + self.count = n + + def find(self, x): + while x != self.parent[x]: + self.parent[x] = self.parent[self.parent[x]] + x = self.parent[x] + return x + + def union(self, x, y): + root_x = self.find(x) + root_y = self.find(y) + if root_x == root_y: + return + + self.parent[root_x] = root_y + self.count -= 1 + + def is_connected(self, x, y): + return self.find(x) == self.find(y) + + +class Solution: + def Kruskal(self, edges, size): + union_find = UnionFind(size) + + edges.sort(key=lambda x: x[2]) + + res, cnt = 0, 1 + for x, y, dist in edges: + if union_find.is_connected(x, y): + continue + ans += dist + cnt += 1 + union_find.union(x, y) + if cnt == size - 1: + return ans + return ans + + def minCostConnectPoints(self, points: List[List[int]]) -> int: + size = len(points) + edges = [] + for i in range(size): + xi, yi = points[i] + for j in range(i + 1, size): + xj, yj = points[j] + dist = abs(xi - xj) + abs(yi - yj) + edges.append([i, j, dist]) + + ans = Solution().Kruskal(edges, size) + return ans + \ No newline at end of file diff --git a/Templates/08.Graph/Graph-Prim.py b/Templates/08.Graph/Graph-Prim.py index d29693e6..f08276d8 100644 --- a/Templates/08.Graph/Graph-Prim.py +++ b/Templates/08.Graph/Graph-Prim.py @@ -1,6 +1,6 @@ class Solution: # graph 为图的邻接矩阵,start 为起始顶点 - def prim(self, graph, start): + def Prim(self, graph, start): size = len(graph) vis = set() dist = [float('inf') for _ in range(size)] @@ -44,4 +44,4 @@ def prim(self, graph, start): graph[j][i] = dist -print(Solution().prim(graph)) \ No newline at end of file +print(Solution().Prim(graph)) \ No newline at end of file From 104fe1d6e735f386a1c12464bbce78b92a86829e Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Sat, 15 Jun 2024 12:29:05 +0800 Subject: [PATCH 116/158] Update 01.Hash-Table.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正哈希函数的例子中的笔误 --- Contents/05.Hash-Table/01.Hash-Table.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Contents/05.Hash-Table/01.Hash-Table.md b/Contents/05.Hash-Table/01.Hash-Table.md index b9f4aa8c..d1f3d06f 100644 --- a/Contents/05.Hash-Table/01.Hash-Table.md +++ b/Contents/05.Hash-Table/01.Hash-Table.md @@ -16,7 +16,7 @@ 在上图例子中,我们使用 $value = Hash(key) = key // 1000$ 作为哈希函数。$//$ 符号代表整除。我们以这个例子来说明一下哈希表的插入和查找策略。 - **向哈希表中插入一个关键码值**:通过哈希函数解析关键字,并将对应值存放到该区块中。 - - 比如:$0138$ 通过哈希函数 $Hash(key) = 0138 // 100 = 0$,得出应将 $0138$ 分配到 $0$ 所在的区块中。 + - 比如:$0138$ 通过哈希函数 $Hash(key) = 0138 // 1000 = 0$,得出应将 $0138$ 分配到 $0$ 所在的区块中。 - **在哈希表中搜索一个关键码值**:通过哈希函数解析关键字,并在特定的区块搜索该关键字对应的值。 - 比如:查找 $2321$,通过哈希函数,得出 $2321$ 应该在 $2$ 所对应的区块中。然后我们从 $2$ 对应的区块中继续搜索,并在 $2$ 对应的区块中成功找到了 $2321$。 - 比如:查找 $3214$,通过哈希函数,得出 $3214$ 应该在 $3$ 所对应的区块中。然后我们从 $3$ 对应的区块中继续搜索,但并没有找到对应值,则说明 $3214$ 不在哈希表中。 @@ -164,4 +164,4 @@ $343246_{13} = 3 \times 13^5 + 4 \times 13^4 + 3 \times 13^3 + 2 \times 13^2 + 4 - 【博文】[散列表(上)- 数据结构与算法之美 - 极客时间](https://time.geekbang.org/column/article/64233) - 【书籍】数据结构(C 语言版)- 严蔚敏 著 - 【书籍】数据结构教程(第 3 版)- 唐发根 著 -- 【书籍】数据结构与算法 Python 语言描述 - 裘宗燕 著 \ No newline at end of file +- 【书籍】数据结构与算法 Python 语言描述 - 裘宗燕 著 From 1098dee9950fec9bc57fbcf660cd5a1389bf45ac Mon Sep 17 00:00:00 2001 From: ITCharge Date: Wed, 19 Jun 2024 15:56:24 +0800 Subject: [PATCH 117/158] Update 02.String-Rabin-Karp.md --- .../02.String-Rabin-Karp.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md b/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md index 16239bff..9df54f97 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md @@ -32,17 +32,17 @@ RK 算法中的滚动哈希算法主要是利用了 **「Rabin fingerprint 思 比如 `"cat"` 的哈希值就可以表示为: -$$\begin{aligned} Hash(cat) &= c \times 26 \times 26 + a \times 26 + t \times 1 \cr &= 2 \times 26 \times 26 + 0 \times 26 + 19 \times 1 \cr &= 1371 \end{aligned}$$ +$$\begin{aligned} Hash(cat) &= c \times 26^2 + a \times 26^1 + t \times 26^0 \cr &= 2 \times 26^2 + 0 \times 26^1 + 19 \times 26^0 \cr &= 1371 \end{aligned}$$ 这种按位计算哈希值的哈希函数有一个特点:在计算相邻子串时,可以利用上一个子串的哈希值。 比如说 $cat$ 的相邻子串为 `"ate"`。按照刚才哈希函数计算,可以得出 `"ate"` 的哈希值为: -$$\begin{aligned} Hash(ate) &= a \times 26 \times 26 + t \times 26 + e \times 1 \cr &= 0 \times 26 \times 26 + 19 \times 26 + 4 \times 1 \cr &= 498 \end{aligned}$$ +$$\begin{aligned} Hash(ate) &= a \times 26^2 + t \times 26^1 + e \times 26^0 \cr &= 0 \times 26^2 + 19 \times 26^1 + 4 \times 26^0 \cr &= 498 \end{aligned}$$ 如果利用上一个子串 `"cat"` 的哈希值计算 `"ate"`,则 `"ate"` 的哈希值为: -$$\begin{aligned} Hash(ate) &= (Hash(cat) - c \times 26 \times 26) * 26 + e \times 26 \cr &= (1371 - 2 \times 26 \times 26) \times 26 + 4 \times 1 \cr &= 498 \end{aligned}$$ +$$\begin{aligned} Hash(ate) &= (Hash(cat) - c \times 26^2) \times 26 + e \times 26^0 \cr &= (1371 - 2 \times 26^2) \times 26 + 4 \times 26^0 \cr &= 498 \end{aligned}$$ 可以看出,这两种方式计算出的哈希值是相同的。但是第二种计算方式不需要再遍历子串,只需要进行一位字符的计算即可得出整个子串的哈希值。这样每次计算子串哈希值的时间复杂度就降到了 $O(1)$。然后我们就可以通过滚动哈希算法快速计算出子串的哈希值了。 From 0a05d2f5950051aa47215d578d097115b5a2df1e Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 24 Jun 2024 10:12:40 +0800 Subject: [PATCH 118/158] Update 03.String-KMP.md --- .../02.String-Single-Pattern-Matching/03.String-KMP.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md b/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md index 6dd7f124..b1826845 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md @@ -70,9 +70,9 @@ KMP 算法就是使用了这样的思路,对模式串 $p$ 进行了预处理 - 文本串 $T$ 从下标位置 $i$ 开始连续的 $j$ 个字符,一定与模式串 $p$ 的前 $j$ 个字符一模一样,即:$T[i: i + j] == p[0: j]$。 - 而如果模式串 $p$ 的前 $j $ 个字符中,前 $k$ 位前缀和后 $k$ 位后缀相同,即 $p[0: k] == p[j - k: j]$,并且要保证 $k$ 要尽可能长。 -可以推出:文本串子串的后 $k$ 位后缀和模式串子串的前 $k$ 位是相同的,即 $T[i + m - k: i + m] == p[0: k]$(这部分是已经比较过的),不需要再比较了,可以直接跳过。 +可以推出:文本串子串的后 $k$ 位后缀和模式串子串的前 $k$ 位是相同的,即 $T[i + j - k: i + j] == p[0: k]$(这部分是已经比较过的),不需要再比较了,可以直接跳过。 -那么我们就可以将文本串中的 $T[i + m]$ 对准模式串中的 $p[k]$,继续进行对比。这里的 $k$ 其实就是 $next[j - 1]$。 +那么我们就可以将文本串中的 $T[i + j]$ 对准模式串中的 $p[k]$,继续进行对比。这里的 $k$ 其实就是 $next[j - 1]$。 ## 2. KMP 算法步骤 From 95740e9661e94c1e49669c3895b0d77e3bd2d92a Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Tue, 25 Jun 2024 19:46:06 +0800 Subject: [PATCH 119/158] Update 01.Union-Find.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 按秩合并的时候,应该是y对应的根节点`root_y`的秩加一 --- Contents/07.Tree/05.Union-Find/01.Union-Find.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/07.Tree/05.Union-Find/01.Union-Find.md b/Contents/07.Tree/05.Union-Find/01.Union-Find.md index df417128..7c9dd636 100644 --- a/Contents/07.Tree/05.Union-Find/01.Union-Find.md +++ b/Contents/07.Tree/05.Union-Find/01.Union-Find.md @@ -251,7 +251,7 @@ class UnionFind: self.fa[root_y] = root_x # y 的根节点连接到 x 的根节点上,成为 x 的根节点的子节点 else: # x 的根节点对应的树的深度 等于 y 的根节点对应的树的深度 self.fa[root_x] = root_y # 向任意一方合并即可 - rank[y] += 1 # 因为层数相同,被合并的树必然层数会 +1 + rank[root_y] += 1 # 因为层数相同,被合并的树必然层数会 +1 return True def is_connected(self, x, y): # 查询操作:判断 x 和 y 是否同属于一个集合 From 00696fedd2fd92923e467e26e021e14973291507 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 27 Jun 2024 09:43:31 +0800 Subject: [PATCH 120/158] =?UTF-8?q?Update=200033.=20=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=97=8B=E8=BD=AC=E6=8E=92=E5=BA=8F=E6=95=B0=E7=BB=84.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/Solutions/0033. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" "b/Solutions/0033. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" index 8a70be0c..a7fca5a0 100644 --- "a/Solutions/0033. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" +++ "b/Solutions/0033. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" @@ -65,7 +65,7 @@ 然后创建两个指针 $left$、$right$,分别指向数组首尾。让后计算出两个指针中间值 $mid$。将 $mid$ 与两个指针做比较,并考虑与 $target$ 的关系。 -- 如果 $mid[mid] == target$,说明找到了 $target$,直接返回下标。 +- 如果 $nums[mid] == target$,说明找到了 $target$,直接返回下标。 - 如果 $nums[mid] \ge nums[left]$,则 $mid$ 在左半部分(因为右半部分值都比 $nums[left]$ 小)。 - 如果 $nums[mid] \ge target$,并且 $target \ge nums[left]$,则 $target$ 在左半部分,并且在 $mid$ 左侧,此时应将 $right$ 左移到 $mid - 1$ 位置。 - 否则如果 $nums[mid] \le target$,则 $target$ 在左半部分,并且在 $mid$ 右侧,此时应将 $left$ 右移到 $mid + 1$ 位置。 From bdf258d5e7b168364f8dd892cc03ceaa389597cd Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 27 Jun 2024 09:43:43 +0800 Subject: [PATCH 121/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E5=B9=B6=E6=9F=A5?= =?UTF-8?q?=E9=9B=86=20=E7=9B=B8=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contents/07.Tree/05.Union-Find/01.Union-Find.md | 4 ++-- Templates/07.Tree/Tree-UnionFind-UnoinByRank.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Contents/07.Tree/05.Union-Find/01.Union-Find.md b/Contents/07.Tree/05.Union-Find/01.Union-Find.md index 7c9dd636..54351d57 100644 --- a/Contents/07.Tree/05.Union-Find/01.Union-Find.md +++ b/Contents/07.Tree/05.Union-Find/01.Union-Find.md @@ -251,7 +251,7 @@ class UnionFind: self.fa[root_y] = root_x # y 的根节点连接到 x 的根节点上,成为 x 的根节点的子节点 else: # x 的根节点对应的树的深度 等于 y 的根节点对应的树的深度 self.fa[root_x] = root_y # 向任意一方合并即可 - rank[root_y] += 1 # 因为层数相同,被合并的树必然层数会 +1 + self.rank[root_y] += 1 # 因为层数相同,被合并的树必然层数会 +1 return True def is_connected(self, x, y): # 查询操作:判断 x 和 y 是否同属于一个集合 @@ -389,7 +389,7 @@ class UnionFind: self.fa[root_y] = root_x # y 的根节点连接到 x 的根节点上,成为 x 的根节点的子节点 else: # x 的根节点对应的树的深度 等于 y 的根节点对应的树的深度 self.fa[root_x] = root_y # 向任意一方合并即可 - self.rank[y] += 1 # 因为层数相同,被合并的树必然层数会 +1 + self.rank[root_y] += 1 # 因为层数相同,被合并的树必然层数会 +1 return True def is_connected(self, x, y): # 查询操作:判断 x 和 y 是否同属于一个集合 diff --git a/Templates/07.Tree/Tree-UnionFind-UnoinByRank.py b/Templates/07.Tree/Tree-UnionFind-UnoinByRank.py index a85f33eb..31313779 100644 --- a/Templates/07.Tree/Tree-UnionFind-UnoinByRank.py +++ b/Templates/07.Tree/Tree-UnionFind-UnoinByRank.py @@ -21,7 +21,7 @@ def union(self, x, y): # 合并操作:令其中一个 self.fa[root_y] = root_x # y 的根节点连接到 x 的根节点上,成为 x 的根节点的子节点 else: # x 的根节点对应的树的深度 等于 y 的根节点对应的树的深度 self.fa[root_x] = root_y # 向任意一方合并即可 - rank[y] += 1 # 因为层数相同,被合并的树必然层数会 +1 + self.rank[root_y] += 1 # 因为层数相同,被合并的树必然层数会 +1 return True def is_connected(self, x, y): # 查询操作:判断 x 和 y 是否同属于一个集合 From 381b4c8bd4dd0c45ddf0b0e03ec93f2d671ef51e Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 28 Jun 2024 09:26:11 +0800 Subject: [PATCH 122/158] Update 01.State-DP.md --- Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md b/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md index 4282362d..74ccfd64 100644 --- a/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md +++ b/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md @@ -75,7 +75,7 @@ - 在集合 $A$ 中删除第 $i$ 位元素(将二进制数第 $i$ 位赋值为 $0$):`A = A & ~(1 << i)` - 判断集合 $A$ 是否选取了第 $i$ 位元素(判断二进制数第 $i$ 位是否为 $1$) :`if A & (1 << i):` 或者 `if (A >> i) & 1:` - 将集合 $A$ 设置为空集:`A = 0` -- 将集合 $A$ 设置为全集:`A = 1 << n` +- 将集合 $A$ 设置为全集:`A = 1 << n - 1` - 求集合 $A$ 的补集:`A = A ^ ((1 << n) - 1)` - 求集合 $A$ 与集合 $B$ 的并集:`A | B` - 求集合 $A$ 与集合 $B$ 的交集:`A & B` From e6237f77880892d66549074e3c5bbbab7d5533b1 Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Wed, 3 Jul 2024 15:06:29 +0800 Subject: [PATCH 123/158] Update 01.Linear-DP-01.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit correct typo of linear dp 应该是nums[j]>=nums[i] --- Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md b/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md index f2b619a8..2d63f589 100644 --- a/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md +++ b/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md @@ -83,7 +83,7 @@ - 如果 $nums[j] < nums[i]$,则 $nums[i]$ 可以接在 $nums[j]$ 后面,此时以 $nums[i]$ 结尾的最长递增子序列长度会在「以 $nums[j]$ 结尾的最长递增子序列长度」的基础上加 $1$,即:$dp[i] = dp[j] + 1$。 -- 如果 $nums[j] \le nums[i]$,则 $nums[i]$ 不可以接在 $nums[j]$ 后面,可以直接跳过。 +- 如果 $nums[j] \ge nums[i]$,则 $nums[i]$ 不可以接在 $nums[j]$ 后面,可以直接跳过。 综上,我们的状态转移方程为:$dp[i] = max(dp[i], dp[j] + 1), 0 \le j < i, nums[j] < nums[i]$。 From 1c67bc56e9f949fadac7d9d0fb5179e873d41f8f Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Fri, 2 Aug 2024 15:45:26 +0800 Subject: [PATCH 124/158] =?UTF-8?q?Update=200215.=20=E6=95=B0=E7=BB=84?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E7=AC=ACK=E4=B8=AA=E6=9C=80=E5=A4=A7?= =?UTF-8?q?=E5=85=83=E7=B4=A0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正笔误 --- ...70\252\346\234\200\345\244\247\345\205\203\347\264\240.md" | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git "a/Solutions/0215. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254K\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.md" "b/Solutions/0215. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254K\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.md" index da8b0929..42b08315 100644 --- "a/Solutions/0215. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254K\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.md" +++ "b/Solutions/0215. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254K\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.md" @@ -191,7 +191,7 @@ class Solution: ### 思路 4:优先队列 -1. 遍历数组元素,对于挡圈元素 $num$: +1. 遍历数组元素,对于当前元素 $num$: 1. 如果优先队列中的元素个数小于 $k$ 个,则将当前元素 $num$ 放入优先队列中。 2. 如果优先队列中的元素个数大于等于 $k$ 个,并且当前元素 $num$ 大于优先队列的队头元素,则弹出队头元素,并将当前元素 $num$ 插入到优先队列中。 2. 遍历完,此时优先队列的队头元素就是第 $k$ 个最大元素,将其弹出并返回即可。 @@ -217,4 +217,4 @@ class Solution: ### 思路 4:复杂度分析 - **时间复杂度**:$O(n \times \log k)$。 -- **空间复杂度**:$O(k)$。 \ No newline at end of file +- **空间复杂度**:$O(k)$。 From 62c7e768453a8d077ea6b5280336b28ae72022b1 Mon Sep 17 00:00:00 2001 From: Chen Jianzhang Date: Sat, 10 Aug 2024 21:37:50 +0800 Subject: [PATCH 125/158] Update 03.String-KMP.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改一处Latex数学式因为尾部空格导致无法正常显示的问题;将"a"修改为大写"A" --- .../02.String-Single-Pattern-Matching/03.String-KMP.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md b/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md index b1826845..56b3bf3e 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md @@ -50,7 +50,7 @@ KMP 算法就是使用了这样的思路,对模式串 $p$ 进行了预处理 - $next[0] = 0$,因为 `"A"` 中无有相同前缀后缀,最大长度为 $0$。 - $next[1] = 0$,因为 `"AB"` 中无相同前缀后缀,最大长度为 $0$。 - $next[2] = 0$,因为 `"ABC"` 中无相同前缀后缀,最大长度为 $0$。 -- $next[3] = 1$,因为 `"ABCA"` 中有相同的前缀后缀 `"a"`,最大长度为 $1$。 +- $next[3] = 1$,因为 `"ABCA"` 中有相同的前缀后缀 `"A"`,最大长度为 $1$。 - $next[4] = 2$,因为 `"ABCAB"` 中有相同的前缀后缀 `"AB"`,最大长度为 $2$。 - $next[5] = 3$,因为 `"ABCABC"` 中有相同的前缀后缀 `"ABC"`,最大长度为 $3$。 - $next[6] = 0$,因为 `"ABCABCD"` 中无相同前缀后缀,最大长度为 $0$。 @@ -68,7 +68,7 @@ KMP 算法就是使用了这样的思路,对模式串 $p$ 进行了预处理 如果文本串 $T[i: i + m]$ 与模式串 $p$ 的失配是在第 $j$ 个下标位置发生的,那么: - 文本串 $T$ 从下标位置 $i$ 开始连续的 $j$ 个字符,一定与模式串 $p$ 的前 $j$ 个字符一模一样,即:$T[i: i + j] == p[0: j]$。 -- 而如果模式串 $p$ 的前 $j $ 个字符中,前 $k$ 位前缀和后 $k$ 位后缀相同,即 $p[0: k] == p[j - k: j]$,并且要保证 $k$ 要尽可能长。 +- 而如果模式串 $p$ 的前 $j$ 个字符中,前 $k$ 位前缀和后 $k$ 位后缀相同,即 $p[0: k] == p[j - k: j]$,并且要保证 $k$ 要尽可能长。 可以推出:文本串子串的后 $k$ 位后缀和模式串子串的前 $k$ 位是相同的,即 $T[i + j - k: i + j] == p[0: k]$(这部分是已经比较过的),不需要再比较了,可以直接跳过。 @@ -151,4 +151,4 @@ print(kmp("ababbbbaaabbbaaa", "bbbb")) - 【博文】[从头到尾彻底理解 KMP - 结构之法 算法之道 - CSDN博客](https://blog.csdn.net/v_JULY_v/article/details/7041827?spm=1001.2014.3001.5502) - 【博文】[字符串匹配的 KMP 算法 - 阮一峰的网络日志](http://www.ruanyifeng.com/blog/2013/05/Knuth–Morris–Pratt_algorithm.html) - 【题解】[多图预警 - 详解 KMP 算法 - 实现 strStr() - 力扣](https://leetcode.cn/problems/implement-strstr/solution/duo-tu-yu-jing-xiang-jie-kmp-suan-fa-by-w3c9c/) -- 【题解】[「代码随想录」KMP算法详解 - 实现 strStr() - 力扣](https://leetcode.cn/problems/implement-strstr/solution/dai-ma-sui-xiang-lu-kmpsuan-fa-xiang-jie-mfbs/) \ No newline at end of file +- 【题解】[「代码随想录」KMP算法详解 - 实现 strStr() - 力扣](https://leetcode.cn/problems/implement-strstr/solution/dai-ma-sui-xiang-lu-kmpsuan-fa-xiang-jie-mfbs/) From 9da60df948102cb42bffb2f5b74b68c1d5d872ed Mon Sep 17 00:00:00 2001 From: ITCharge Date: Sat, 21 Sep 2024 23:19:39 +0800 Subject: [PATCH 126/158] =?UTF-8?q?Update=200169.=20=E5=A4=9A=E6=95=B0?= =?UTF-8?q?=E5=85=83=E7=B4=A0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...44\232\346\225\260\345\205\203\347\264\240.md" | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git "a/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" "b/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" index ed7e248c..ef914efc 100644 --- "a/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" +++ "b/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" @@ -9,14 +9,15 @@ ## 题目大意 -**描述**:给定一个大小为 $n$ 的数组 `nums`。 +**描述**:给定一个大小为 $n$ 的数组 $nums$。 -**要求**:返回其中相同元素个数最多的元素。 +**要求**:返回其中的多数元素。 **说明**: +- **多数元素**:指在数组中出现次数大于 $\lfloor \frac{n}{2} \rfloor$ 的元素。 - $n == nums.length$。 -- $1 \le n \le 5 * 10^4$。 +- $1 \le n \le 5 \times 10^4$。 - $-10^9 \le nums[i] \le 10^9$。 **示例**: @@ -39,8 +40,8 @@ ### 思路 1:哈希表 -1. 遍历数组 `nums`。 -2. 对于当前元素 `num`,用哈希表统计每个元素 `num` 出现的次数。 +1. 遍历数组 $nums$。 +2. 对于当前元素 $num$,用哈希表统计每个元素 $num$ 出现的次数。 3. 再遍历一遍哈希表,找出元素个数最多的元素即可。 ### 思路 1:代码 @@ -70,11 +71,11 @@ class Solution: ### 思路 2:分治算法 -如果 `num` 是数组 `nums` 的众数,那么我们将 `nums` 分为两部分,则 `num` 至少是其中一部分的众数。 +如果 $num$ 是数组 $nums$ 的众数,那么我们将 $nums$ 分为两部分,则 $num$ 至少是其中一部分的众数。 则我们可以用分治法来解决这个问题。具体步骤如下: -1. 将数组 `nums` 递归地将当前序列平均分成左右两个数组,直到所有子数组长度为 `1`。 +1. 将数组 $nums$ 递归地将当前序列平均分成左右两个数组,直到所有子数组长度为 $1$。 2. 长度为 $1$ 的子数组众数肯定是数组中唯一的数,将其返回即可。 3. 将两个子数组依次向上两两合并。 1. 如果两个子数组的众数相同,则说明合并后的数组众数为:两个子数组的众数。 From fe267b24f185952e8c91c61f64ef328755176d9a Mon Sep 17 00:00:00 2001 From: ITCharge Date: Sat, 21 Sep 2024 23:27:59 +0800 Subject: [PATCH 127/158] =?UTF-8?q?Update=200169.=20=E5=A4=9A=E6=95=B0?= =?UTF-8?q?=E5=85=83=E7=B4=A0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" | 1 + 1 file changed, 1 insertion(+) diff --git "a/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" "b/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" index ef914efc..fbc2e228 100644 --- "a/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" +++ "b/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" @@ -16,6 +16,7 @@ **说明**: - **多数元素**:指在数组中出现次数大于 $\lfloor \frac{n}{2} \rfloor$ 的元素。 +- 假设数组是非空的,并且给定的数组总是存在多数元素。 - $n == nums.length$。 - $1 \le n \le 5 \times 10^4$。 - $-10^9 \le nums[i] \le 10^9$。 From 8b1dc58a676f1d5c082a6e03b93b9527a8e3a7f2 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 31 Dec 2024 18:00:09 +0800 Subject: [PATCH 128/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E5=9B=BE=E7=9A=84?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=92=8C=E5=88=86=E7=B1=BB=20=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../08.Graph/01.Graph-Basic/01.Graph-Basic.md | 107 ++++++++++-------- 1 file changed, 61 insertions(+), 46 deletions(-) diff --git a/Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md b/Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md index 7cd2bae7..04c7c98e 100644 --- a/Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md +++ b/Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md @@ -1,13 +1,13 @@ ## 1. 图的定义 -> **图(Graph)**:由顶点的非空有限集合 $V$ (由 $n > 0$ 个顶点组成)与边的集合 $E$(顶点之间的关系)构成的结构。其形式化定义为 $G = (V, E)$。 +> **图(Graph)**:由顶点集合 $V$ 与边集合 $E$(顶点之间的关系)构成的数据结构。图的形式化定义为 $G = (V, E)$。 -- **顶点(Vertex)**:图中的数据元素通常称为顶点,在下面的示意图中我们使用圆圈来表示顶点。 -- **边(Edge)**:图中两个数据元素之间的关联关系通常称为边,在下面的示意图中我们使用连接两个顶点之间的线段来表示边。边的形式化定义为:$e = \langle u, v \rangle$,表示从 $u$ 到 $v$ 的一条边,其中 $u$ 称为起始点,$v$ 称为终止点。 +- **顶点(Vertex)**:图中的基本元素,通常称为顶点,表示对象或节点。顶点的集合 $V$ 是有限非空集合,包含 $n > 0$ 个顶点。如下面的示意图所示,通常我们使用圆圈来表示顶点。 +- **边(Edge)**:顶点之间的关系或连接。边的形式化定义为:$e = \langle u, v \rangle$,表示从 $u$ 到 $v$ 的一条边,其中 $u$ 称为起始点,$v$ 称为终止点。如下面的示意图所示,通常我们使用连接两个顶点的线段来表示边。 ![](https://qcdn.itcharge.cn/images/20220307145142.png) -- **子图(Sub Graph)**:对于图 $G = (V, E)$ 与 $G^{'} = (V^{'}, E^{'})$,如果存在 $V^{'} \subseteq V$,$E^{'} \subseteq E$,则称图 $G^{'}$ 是图 $G$ 的一个子图。在下面的示意图中我们给出了一个图 $G$ 及其一个子图 $G^{'}$。特别的,根据定义,$G$ 也是其自身的子图。 +- **子图(Sub Graph)**:对于图 $G = (V, E)$ 与 $G^{'} = (V^{'}, E^{'})$,如果满足 $V^{'} \subseteq V$,$E^{'} \subseteq E$,则称图 $G^{'}$ 是图 $G$ 的一个子图。直观的说,子图是由原图的一部分顶点和边组成的,同时边的两端顶点必须属于子图的顶点集合 $V^{'}$。特别地,根据定义,图 $G$ 本身也是其一个子图。在下图中,我们展示了一个图 $G$ 及其子图 $G^{'}$。 ![](https://qcdn.itcharge.cn/images/20220317163120.png) @@ -15,106 +15,121 @@ ### 2.1 无向图和有向图 -按照边是否有方向,我们可以将图分为两种类型:「无向图」和「有向图」。 +根据边是否具有方向性,图可以分为两种类型:「无向图」和「有向图」。 -- **无向图(Undirected Graph)**:如果图中的每条边都没有指向性,则称为无向图。例如朋友关系图、路线图都是无向图。 -- **有向图(Directed Graph)**:如果图中的每条边都具有指向性,则称为有向图。例如流程图是有向图。 +> **无向图(Undirected Graph)**:如果图中每条边都没有方向性,则称为无向图。例如,表示朋友关系或者城市间双向行驶的路线图常用无向图建模。 在无向图中,每条边都是由两个顶点组成的无序对。例如下图左侧中的顶点 $v_1$ 和顶点 $v_2$ 之间的边记为 $(v_1, v_2)$ 或 $(v_2, v_1)$。 -在有向图中,有向边也被称为弧,每条弧是由两个顶点组成的有序对,例如下图右侧中从顶点 $v_1$ 到顶点 $v_2$ 的弧,记为 $\langle v_1, v_2 \rangle$,$v_1$ 被称为弧尾,$v_2$ 被称为弧头,如下图所示。 +> **有向图(Directed Graph)**:如果图中的每条边都具有方向性,则称为有向图。例如,表示任务流程的流程图或网络请求的依赖图是典型的有向图。 + +在有向图中,有向边(又称弧)是由两个顶点组成的有序对,例如下图右侧中从顶点 $v_1$ 到顶点 $v_2$ 的弧,记为 $\langle v_1, v_2 \rangle$,$v_1$ 被称为弧尾,$v_2$ 被称为弧头,如下图所示。 ![](https://qcdn.itcharge.cn/images/20220307160017.png) -如果无向图中有 $n$ 个顶点,则无向图中最多有 $n \times (n - 1) / 2$ 条边。而具有 $n \times (n - 1) / 2$ 条边的无向图称为 **「完全无向图(Completed Undirected Graph)」**。 +如果图中有 $n$ 个顶点,则根据图的类型,其边(或弧)的最大数量可以定义如下: + +- **无向图中边的最大数量**:在无向图中,任意两个顶点之间最多存在一条边,因此最多可以有 $\frac{n \times (n - 1)}{2}$ 条边。具有 $\frac{n \times (n - 1)}{2}$ 条边的无向图称为 **「完全无向图(Completed Undirected Graph)」**。 -如果有向图中有 $n$ 个顶点,则有向图中最多有 $n \times (n - 1)$ 条弧。而具有 $n \times (n - 1)$ 条弧的有向图称为 **「完全有向图(Completed Directed Graph)」**。 +- **有向图中边的最大数量**:在有向图中,任意两个顶点之间可以存在一对方向相反的弧,因此最多可以有 $n \times (n - 1)$ 条弧。具有 $n \times (n - 1)$ 条弧的有向图称为 **「完全有向图(Completed Directed Graph)」**。 -如下图所示,左侧为包含 $4$ 个顶点的完全无向图,右侧为包含 $4$ 个顶点的完全有向图。 +下图展示了两个示例:左侧为包含 $4$ 个顶点的完全无向图,右侧为包含 $4$ 个顶点的完全有向图。 ![](https://qcdn.itcharge.cn/images/20220308151436.png) 下面介绍一下无向图和有向图中一个重要概念 **「顶点的度」**。 -- **顶点的度**:与该顶点 $v_i$ 相关联的边的条数,记为 $TD(v_i)$。 +> **顶点的度**:与该顶点 $v_i$ 相关联的边的数量,记为 $TD(v_i)$。 -例如上图左侧的完全无向图中,顶点 $v_3$ 的度为 $3$。 +- **无向图中顶点的度**:在无向图中,顶点的都是与该顶点相连的边的数量。例如,在上图左侧的完全无向图中,顶点 $v_3$ 的度为 $3$,因为有 $3$ 个其他的顶点与 $v_3$ 相连接。 -而对于有向图,我们可以将顶点的度分为 **「顶点的出度」** 和 **「顶点的入度」**。 +- **有向图中顶点的度**:在有向图中,顶点的度可以分为「出度」和「入度」两个部分。 + - **出度(Out Degree)**:以该顶点 $v_i$ 为出发点的边的条数,记为 $OD(v_i)$。 + - **入度(In Degree)**:以该顶点 $v_i$ 为终止点的边的条数,记为 $ID(v_i)$。 -- **顶点的出度**:以该顶点 $v_i$ 为出发点的边的条数,记为 $OD(v_i)$。 -- **顶点的入度**:以该顶点 $v_i$ 为终止点的边的条数,记为 $ID(v_i)$。 -- 有向图中某顶点的度 = 该顶点的出度 + 该顶点的入度,即 $TD(v_i) = OD(v_i) + ID(v_i)$。 +在有向图中,顶点 $v_i$ 的度是该点出度和入度之和,即:$TD(v_i) = OD(v_i) + ID(v_i)$。 -例如上图右侧的完全有向图中,顶点 $v_3$ 的出度为 $3$,入度为 $3$,顶点 $v_3$ 的度为 $3 + 3 = 6$。 +例如,在上图右侧的完全有向图中,顶点 $v_3$ 的出度为 $3$,入度为 $3$,因此顶点 $v_3$ 的度为 $3 + 3 = 6$。 ### 2.2 环形图和无环图 - **「路径」** 是图中的一个重要概念,对于图 $G = (V, E)$,如果存在顶点序列 $v_{i_0}, v_{i_1}, v_{i_2},… , v_{i_m}$,使得 $(v_{i_0}, v_{i_1}), (v_{i_1}, v_{i_2}), …, (v_{i_{m-1}}, v_{i_m}) \in E$(即他们都是图 G 的边,对于有向图则是 $\langle v_{i_0}, v_{i_1} \rangle, \langle v_{i_1}, v_{i_2} \rangle, …, \langle v_{i_{m-1}}, v_{i_m} \rangle \in E$),则称该顶点序列为顶点 $v_{i_0}$ 和顶点 $v_{i_m}$ 之间的一条路径,其中 $v_{i_0}$ 是这条路径的起始点,$v_{i_m}$ 是这条路径的终止点。 +> **路径** :图中的一个重要概念,对于图 $G = (V, E)$,如果存在顶点序列 $v_{i_0}, v_{i_1}, v_{i_2}, …, v_{i_m}$,并且每对相邻的顶点都有图中的边连接,即 $(v_{i_0}, v_{i_1}), (v_{i_1}, v_{i_2}), …, (v_{i_{m-1}}, v_{i_m}) \in E$(对于有向图则是 $\langle v_{i_0}, v_{i_1} \rangle, \langle v_{i_1}, v_{i_2} \rangle, …, \langle v_{i_{m-1}}, v_{i_m} \rangle \in E$),则称该顶点序列为从顶点 $v_{i_0}$ 和顶点 $v_{i_m}$ 之间的一条路径,其中 $v_{i_0}$ 是这条路径的起始点,$v_{i_m}$ 是这条路径的终止点。 -简单来说,如果顶点 $v_{i_0}$ 可以通过一系列的顶点和边,到达顶点 $v_{i_m}$,则称顶点 $v_{i_0}$ 和顶点 $v_{i_m}$ 之间有一条路径,其中经过的顶点序列则称为两个顶点之间的路径。 +简而言之,如果顶点 $v_{i_0}$ 可以通过一系列的顶点和边到达顶点 $v_{i_m}$,则称这两个顶点之间有一条路径,其中经过的顶点序列则称为两个顶点之间的路径。 -- **环(Circle)**:如果一条路径的起始点和终止点相同(即 $v_{i_0} == v_{i_m}$ ),则称这条路径为「回路」或者「环」。 +- **环(Circle)**:如果一条路径的起始点和终止点相同(即 $v_{i_0} == v_{i_m}$ ),则称这条路径为「回路」或「环」。 - **简单路径**:顶点序列中顶点不重复出现的路径称为「简单路径」。 -而根据图中是否有环,我们可以将图分为「环形图」和「无环图」。 +根据图中是否有环,我们可以将图分为「环形图」和「无环图」。 - **环形图(Circular Graph)**:如果图中存在至少一条环路,则该图称为「环形图」。 - **无环图(Acyclic Graph)**:如果图中不存在环路,则该图称为「无环图」。 -特别的,在有向图中,如果不存在环路,则将该图称为「有向无环图(Directed Acyclic Graph)」,缩写为 DAG。因为有向无环图拥有为独特的拓扑结构,经常被用于处理动态规划、导航中寻求最短路径、数据压缩等多种算法场景。 +在有向图中,如果不存在环路,则将该图称为「有向无环图(Directed Acyclic Graph, DAG)」。有向无环图因其独特的拓扑结构,广泛应用于诸如动态规划、最短路径问题、数据压缩等算法场景。 -如下图所示,分别为:无向无环图、无向环形图、有向无环图和有向环形图。其中有向环形图中的顶点 $v_1$、$v_2$、$v_3$ 与相连的边构成了一个环。 +下图展示了四种图的类型:无向无环图、无向环形图、有向无环图和有向环形图。在有向环形图中,顶点 $v_1$、$v_2$、$v_3$ 与相连的边构成了一个环。 ![环形图和无环图](https://qcdn.itcharge.cn/images/20220317115641.png) ### 2.3 连通图和非连通图 -#### 2.3.1 连通无向图和连通分量 +#### 2.3.1 连通无向图 -在无向图中,如果从顶点 $v_i$ 到顶点 $v_j$ 有路径,则称顶点 $v_i$ 和 $v_j$ 是连通的。 +在无向图中,如果存在一条从顶点 $v_i$ 到顶点 $v_j$ 的路径,则称顶点 $v_i$ 和 $v_j$ 是连通的。 -- **连通无向图**:在无向图中,如果图中任意两个顶点之间都是连通的,则称该图为连通无向图。 -- **非连通无向图**:在无向图中,如果图中至少存在一对顶点之间不存在任何路径,则该图称为非连通无向图。 +- **连通无向图**:如果无向图中任意两个顶点之间都是连通的(即任意两个顶点之间都有路径连接),则称该图为「连通无向图」。 +- **非连通无向图**:如果无向图中存在至少一对顶点之间没有任何路径连接,则称该图为「非连通无向图」。 -如下图所示,左侧图中 $v_1$ 与 $v_2$、$v_3$、$v_4$、$v_5$、$v_6$ 都是连通的,所以该图为连通无向图。右侧图中 $v_1$ 与 $v_2$、$v_3$、$v_4$ 都是连通的,但是 $v_1$ 和 $v_5$、$v_6$ 之间不存在任何路径,则该图为非连通无向图。 +下图展示了两种情况: + +- 在左侧图中,顶点 $v_1$ 与所有其他顶点 $v_2$、$v_3$、$v_4$、$v_5$、$v_6$ 都是连通的,因此该图为连通无向图。 +- 在右侧图中,顶点 $v_1$ 与 $v_2$、$v_3$、$v_4$ 是连通的,但与 $v_5$、$v_6$ 没有任何路径连接,因此该图为非连通无向图。 ![](https://qcdn.itcharge.cn/images/20220317163249.png) -下面介绍一下无向图的「连通分量」概念。有些无向图可能不是连通无向图,但是其子图可能是连通的。这些子图称为原图的连通子图。而无向图的一个极大连通子图(不存在包含它的更大的连通子图)则称为该图的「连通分量」。 +#### 2.3.2 无向图的连通分量 + +在无向图中,某些图可能不是连通的,但它们的子图可能是连通的。这样的子图称为「连通子图」。对于其中某个连通子图,如果不存在任何包含他的更大连通子图,则该连通子图称为「连通分量」。 -- **连通子图**:如果无向图的子图是连通无向图,则该子图称为原图的连通子图。 -- **连通分量**:无向图中的一个极大连通子图(不存在包含它的更大的连通子图)称为该图的连通分量。 -- **极⼤连通⼦图**:无向图中的一个连通子图,并且不存在包含它的更大的连通子图。 +- **连通子图**:如果无向图的子图是连通的,则该子图称为连通子图。 +- **连通分量**:无向图中的一个极大连通子图(不存在任何包含它的更大的连通子图)称为该图的连通分量。 +- **极⼤连通⼦图**:无向图中的一个连通子图,且不存在包含它的更大的连通子图。 -例如上图中右侧的非连通无向图,其本身是非连通的。但顶点 $v_1$、$v_2$、$v_3$、$v_4$ 与其相连的边构成的子图是连通的,并且不存在包含它的更大的连通子图了,所以该子图是原图的一个连通分量。同理,顶点 $v_5$、$v_6$ 与其相连的边构成的子图也是原图的一个连通分量。 +例如,上图右侧的非连通无向图中,尽管整体图是非连通的,但顶点 $v_1$、$v_2$、$v_3$、$v_4$ 与其相连的边构成的子图是连通的,并且不存在任何包含它的更大的连通子图,因此该子图是原图的一个连通分量。类似地,顶点 $v_5$、$v_6$ 与其相连的边也构成了原图的另一个连通分量。 -#### 2.3.2 强连通有向图和强连通分量 +#### 2.3.3 强连通有向图 -在有向图中,如果从顶点 $v_i$ 到 $v_j$ 有路径,并且从顶点 $v_j$ 到 $v_i$ 也有路径,则称顶点 $v_i$ 与 $v_j$ 是连通的。 +在有向图中,如果从顶点 $v_i$ 到 $v_j$ 存在路径,且从顶点 $v_j$ 到 $v_i$ 也有路径,则称顶点 $v_i$ 与 $v_j$ 是「强连通」的。 -- **强连通有向图**:如果图中任意两个顶点 $v_i$ 和 $v_j$,从 $v_i$ 到 $v_j$ 和从 $v_j$ 到 $v_i$ 都有路径,则称该图为强连通有向图。 -- **非强连通有向图**:如果图中至少存在一对顶点之间不存在任何路径,则该图称为非强连通有向图。 +- **强连通有向图**:如果图中任意两个顶点 $v_i$ 和 $v_j$ 都满足从 $v_i$ 到 $v_j$ 和从 $v_j$ 到 $v_i$ 均有路径,则称该图为「强连通有向图」。 +- **非强连通有向图**:如果图中存在至少一对顶点之间没有路径连接(即无法相互到达),则称该图为「非强连通有向图」。 -如下图所示,左侧图中任意两个顶点之间都有路径,则左侧图为强连通有向图。右侧图中顶点 $v_7$ 无法通过路径到达其他顶点,则右侧图为非强连通有向图。 +下图展示了两种情况: + +- 左侧图中,任意两个顶点之间都存在路径,因此该图为强连通有向图。 +- 右侧图中,顶点 $v_7$ 无法通过路径到达其他顶点,因此该图为非强连通有向图。 ![](https://qcdn.itcharge.cn/images/20220317133500.png) -与无向图类似,有向图的一个极大强连通子图称为该图的 **强连通分量**。 +#### 2.3.4 有向图的强连通分量 + +在有向图中,「强联通分量」是指其内部任意两个顶点之间都强连通的极大强连通子图。以下是具体定义: -- **强连通子图**:如果有向图的子图是连通有向图,则该子图称为原图的强连通子图。 +- **强连通子图**:有向图的一个子图,且该子图中任意两个顶点都是强连通的。 +- **极⼤强连通⼦图**:如果一个强联通子图不能被包含在任何更大的强连通子图中,则称其为极大强连通子图。 - **强连通分量**:有向图中的一个极⼤强连通⼦图,称为该图的强连通分量。 -- **极⼤强连通⼦图**:有向图中的一个强连通子图,并且不存在包含它的更大的强连通子图。 -例如上图中,右侧的非强连通有向图,其本身不是强连通的(顶点 $v_7$ 无法通过路径到达其他顶点)。但顶点 $v_1$、$v_2$、$v_3$、$v_4$、$v_5$、$v_6$ 与其相连的边构成的子图(即上图的左侧图)是强连通的,并且不存在包含它的更大的强连通子图了,所以该子图是原图的一个强连通分量(即上图中的左侧图是右侧图的强连通分量)。同理,顶点 $v_7$ 构成的子图也是原图的一个强连通分量。 +举个例子来解释一下。 + +例如,上图右侧的非强连通有向图,其本身不是强连通的(因为顶点 $v_7$ 无法通过路径到达其他顶点)。但顶点 $v_1$、$v_2$、$v_3$、$v_4$、$v_5$、$v_6$ 与它们之间的边构成了一个强连通子图(即上图的左侧图),且不存在包含它的更大的强连通子图,因此这是右侧图的一个强连通分量。类似地,顶点 $v_7$ 构成了一个只有一个顶点的强连通子图,因此它自身也是右侧图的一个强连通分量。 ### 2.4 带权图 -有时,图不仅需要表示顶点之间是否存在某种关系,还需要表示这一关系的具体细节。这时候我们需要在边上带一些数据信息,这些数据信息被称为 **权**。在具体应用中,权值可以具有某种具体意义,比如权值可以代表距离、时间以及价格等不同属性。 +有时,图不仅需要表示顶点之间是否存在某种关系,还需要表示这一关系的具体细节。有时候我们需要给边赋予一些数据信息,这些数据信息被称为 **权**。在具体应用中,权值可以具有某种具体意义,比如权值可以代表距离、时间以及价格等不同属性。 -- **带权图**:如果图的每条边都被赋以⼀个权值,这种图称为带权图。 -- **网络**:带权的连通⽆向图称为⽹络。 +- **带权图**:如果图的每条边都被赋以⼀个权值,则该图称为带权图。权值通常表示一个非负实数,但在某些场景下也可以是负数。 +- **网络**:带权的连通⽆向图被称为⽹络。 在下面的示意图中,我们给出了一个带权图的例子。 From cd78e44a4474589a78026b099273ba417f02b9a5 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Thu, 16 Jan 2025 09:02:57 +0800 Subject: [PATCH 129/158] =?UTF-8?q?Update=200094.=20=E4=BA=8C=E5=8F=89?= =?UTF-8?q?=E6=A0=91=E7=9A=84=E4=B8=AD=E5=BA=8F=E9=81=8D=E5=8E=86.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...55\345\272\217\351\201\215\345\216\206.md" | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git "a/Solutions/0094. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\255\345\272\217\351\201\215\345\216\206.md" "b/Solutions/0094. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\255\345\272\217\351\201\215\345\216\206.md" index 91ab86d0..936ef32f 100644 --- "a/Solutions/0094. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\255\345\272\217\351\201\215\345\216\206.md" +++ "b/Solutions/0094. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\255\345\272\217\351\201\215\345\216\206.md" @@ -40,11 +40,11 @@ ### 思路 1:递归遍历 -二叉树的前序遍历递归实现步骤为: +二叉树的中序遍历递归实现步骤为: 1. 判断二叉树是否为空,为空则直接返回。 -2. 先访问根节点。 -3. 然后递归遍历左子树。 +2. 先递归遍历左子树。 +3. 然后访问根节点。 4. 最后递归遍历右子树。 ### 思路 1:代码 @@ -71,18 +71,21 @@ class Solution: ### 思路 2:模拟栈迭代遍历 -二叉树的前序遍历递归实现的过程,实际上就是调用系统栈的过程。我们也可以使用一个显式栈 `stack` 来模拟递归的过程。 +我们可以使用一个显式栈 $stack$ 来模拟二叉树的中序遍历递归的过程。 -前序遍历的顺序为:根节点 - 左子树 - 右子树,而根据栈的「先入后出」特点,所以入栈的顺序应该为:先放入右子树,再放入左子树。这样可以保证最终遍历顺序为前序遍历顺序。 +与前序遍历不同,访问根节点要放在左子树遍历完之后。因此我们需要保证:**在左子树访问之前,当前节点不能提前出栈**。 -二叉树的前序遍历显式栈实现步骤如下: +我们应该从根节点开始,循环遍历左子树,不断将当前子树的根节点放入栈中,直到当前节点无左子树时,从栈中弹出该节点并进行处理。 + +然后再访问该元素的右子树,并进行上述循环遍历左子树的操作。这样可以保证最终遍历顺序为中序遍历顺序。 + +二叉树的中序遍历显式栈实现步骤如下: 1. 判断二叉树是否为空,为空则直接返回。 -2. 初始化维护一个栈,将根节点入栈。 -3. 当栈不为空时: - 1. 弹出栈顶元素 `node`,并访问该元素。 - 2. 如果 `node` 的右子树不为空,则将 `node` 的右子树入栈。 - 3. 如果 `node` 的左子树不为空,则将 `node` 的左子树入栈。 +2. 初始化维护一个空栈。 +3. 当根节点或者栈不为空时: + 1. 如果当前节点不为空,则循环遍历左子树,并不断将当前子树的根节点入栈。 + 1. 如果当前节点为空,说明当前节点无左子树,则弹出栈顶元素 $node$,并访问该元素,然后尝试访问该节点的右子树。 ### 思路 2:代码 @@ -96,7 +99,7 @@ class Solution: stack = [] while root or stack: # 根节点或栈不为空 - while root: + while root: stack.append(root) # 将当前树的根节点入栈 root = root.left # 找到最左侧节点 From 58c6ab9591136e8e258e013924f5e668cf0b12e1 Mon Sep 17 00:00:00 2001 From: "dongsheng.zhao" <1245384330@qq.com> Date: Mon, 27 Jan 2025 07:16:54 +0800 Subject: [PATCH 130/158] bugfix: fix the mistakes in the description of insertion sort. --- .../01.Array/02.Array-Sort/03.Array-Insertion-Sort.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md b/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md index 1506e567..670dcf67 100644 --- a/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md +++ b/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md @@ -14,13 +14,13 @@ 1. 初始状态下,有序区间为 $[0, 0]$,无序区间为 $[1, n - 1]$。 2. 第 $1$ 趟插入: 1. 取出无序区间 $[1, n - 1]$ 中的第 $1$ 个元素,即 $nums[1]$。 - 2. 从右到左遍历有序区间中的元素,将比 $nums[1]$ 小的元素向后移动 $1$ 位。 - 3. 如果遇到大于或等于 $nums[1]$ 的元素时,说明找到了插入位置,将 $nums[1]$ 插入到该位置。 + 2. 从右到左遍历有序区间中的元素,将比 $nums[1]$ 大的元素向后移动 $1$ 位。 + 3. 如果遇到小于或等于 $nums[1]$ 的元素时,说明找到了插入位置,将 $nums[1]$ 插入到该位置。 4. 插入元素后有序区间变为 $[0, 1]$,无序区间变为 $[2, n - 1]$。 3. 第 $2$ 趟插入: 1. 取出无序区间 $[2, n - 1]$ 中的第 $1$ 个元素,即 $nums[2]$。 - 2. 从右到左遍历有序区间中的元素,将比 $nums[2]$ 小的元素向后移动 $1$ 位。 - 3. 如果遇到大于或等于 $nums[2]$ 的元素时,说明找到了插入位置,将 $nums[2]$ 插入到该位置。 + 2. 从右到左遍历有序区间中的元素,将比 $nums[2]$ 大的元素向后移动 $1$ 位。 + 3. 如果遇到小于或等于 $nums[2]$ 的元素时,说明找到了插入位置,将 $nums[2]$ 插入到该位置。 4. 插入元素后有序区间变为 $[0, 2]$,无序区间变为 $[3, n - 1]$。 4. 依次类推,对剩余无序区间中的元素重复上述插入过程,直到所有元素都插入到有序区间中,排序结束。 From f8ee47376a8a8aea6d338dffa868fa0522ea7e76 Mon Sep 17 00:00:00 2001 From: "dongsheng.zhao" <1245384330@qq.com> Date: Thu, 6 Feb 2025 09:52:32 +0800 Subject: [PATCH 131/158] fix typo in Binary-Tree-Basic.md --- Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md b/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md index 982c2f06..25235fc8 100644 --- a/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md +++ b/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md @@ -11,7 +11,7 @@ 「树」具有以下的特点: - 有且仅有一个节点没有前驱节点,该节点被称为树的 **「根节点(Root)」** 。 -- 除了根节点以之,每个节点有且仅有一个直接前驱节点。 +- 除了根节点以外,每个节点有且仅有一个直接前驱节点。 - 包括根节点在内,每个节点可以有多个后继节点。 - 当 $n > 1$ 时,除了根节点之外的其他节点,可分为 $m(m > 0)$ 个互不相交的有限集合 $T_1, T_2, ..., T_m$,其中每一个集合本身又是一棵树,并且被称为根的 **「子树(SubTree)」**。 @@ -118,7 +118,7 @@ - 叶子节点只能出现在最下面两层。 - 最下层的叶子节点一定集中在该层最左边的位置上。 - 倒数第二层如果有叶子节点,则该层的叶子节点一定集中在右边的位置上。 -- 如果节点的度为 $1$,则该节点只偶遇左孩子节点,即不存在只有右子树的情况。 +- 如果节点的度为 $1$,则该节点只有左孩子节点,即不存在只有右孩子节点的情况。 - 同等节点数的二叉树中,完全二叉树的深度最小。 完全二叉树也可以使用类似满二叉树的节点编号的方式来定义。即从根节点编号为 $1$ 开始,按照层次从上至下,每一层从左至右进行编号。对于深度为 $i$ 且有 $n$ 个节点的二叉树,当且仅当每一个节点都与深度为 $k$ 的满二叉树中编号从 $1$ 至 $n$ 的节点意义对应时,该二叉树为完全二叉树。 From 67eacd62c63070446102463fe4048aaa9e4558ef Mon Sep 17 00:00:00 2001 From: jiangyuan <469391363@qq.com> Date: Thu, 22 May 2025 21:13:07 +0800 Subject: [PATCH 132/158] typo typo --- .../02.String-Single-Pattern-Matching/01.String-Brute-Force.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md b/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md index bdabf56f..6f94d3fe 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md @@ -43,7 +43,7 @@ BF 算法非常简单,容易理解,但其效率很低。主要是因为在 在最理想的情况下(第一次匹配直接匹配成功),BF 算法的最佳时间复杂度是 $O(m)$。 -在一般情况下,根据等概率原则,平均搜索次数为 $\frac{(n + m)}{2}$,所以 Brute Force 算法的平均时间复杂度为 $O(n + m)$。 +在一般情况下,根据等概率原则,平均搜索次数为 $\frac{(n + m)}{2}$,所以 Brute Force 算法的平均时间复杂度为 $O(n × m)$。 ## 参考资料 From 1d7425b7fab9303d6b6233e88539c2ae63bcd95c Mon Sep 17 00:00:00 2001 From: jiangyuan <469391363@qq.com> Date: Thu, 22 May 2025 21:15:43 +0800 Subject: [PATCH 133/158] typo --- .../02.String-Single-Pattern-Matching/01.String-Brute-Force.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md b/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md index 6f94d3fe..384d407b 100644 --- a/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md +++ b/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md @@ -43,7 +43,7 @@ BF 算法非常简单,容易理解,但其效率很低。主要是因为在 在最理想的情况下(第一次匹配直接匹配成功),BF 算法的最佳时间复杂度是 $O(m)$。 -在一般情况下,根据等概率原则,平均搜索次数为 $\frac{(n + m)}{2}$,所以 Brute Force 算法的平均时间复杂度为 $O(n × m)$。 +在一般情况下,根据等概率原则,平均搜索次数为 $\frac{(n + m)}{2}$,所以 Brute Force 算法的平均时间复杂度为 $O(n \times m)$。 ## 参考资料 From 9615377632581e0ef5b22956ae2b7e0a81776203 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Wed, 28 May 2025 14:48:39 +0800 Subject: [PATCH 134/158] =?UTF-8?q?=E8=A1=A5=E5=85=85=E3=80=8C=E5=9B=BE?= =?UTF-8?q?=E7=9A=84=E6=9C=80=E5=B0=8F=E7=94=9F=E6=88=90=E6=A0=91=E3=80=8D?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01.Graph-Minimum-Spanning-Tree.md | 144 +++++++++++++++++- 1 file changed, 137 insertions(+), 7 deletions(-) diff --git a/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md b/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md index d81c9a3d..18a83e2c 100644 --- a/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md +++ b/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md @@ -2,7 +2,7 @@ 在了解「最小生成树」之前,我们需要要先理解 「生成树」的概念。 -> **图的生成树(Spanning Tree)**:如果无向连通图 G 的一个子图是一棵包含图 G 所有顶点的树,则称该子图为 G 的生成树。生成树是连通图的包含图中的所有顶点的极小连通子图。图的生成树不惟一。从不同的顶点出发进行遍历,可以得到不同的生成树。 +> **生成树(Spanning Tree)**:如果无向连通图 G 的一个子图是一棵包含图 G 所有顶点的树,则称该子图为 G 的生成树。生成树是连通图的包含图中的所有顶点的极小连通子图。图的生成树不惟一。从不同的顶点出发进行遍历,可以得到不同的生成树。 换句话说,生成树是原图 G 的一个子图,它包含了原图 G 的所有顶点,并且通过选择图中一部分边连接这些顶点,使得子图中没有环。 @@ -51,12 +51,73 @@ ### 2.3 Prim 算法的实现代码 ```python - +class Solution: + # graph 为图的邻接矩阵,start 为起始顶点 + def Prim(self, graph, start): + size = len(graph) + vis = set() + dist = [float('inf') for _ in range(size)] + + ans = 0 # 最小生成树的边权和 + dist[start] = 0 # 初始化起始顶点到起始顶点的边权值为 0 + + for i in range(1, size): # 初始化起始顶点到其他顶点的边权值 + dist[i] = graph[start][i] + vis.add(start) # 将 start 顶点标记为已访问 + + for _ in range(size - 1): + min_dis = float('inf') + min_dis_pos = -1 + for i in range(size): + if i not in vis and dist[i] < min_dis: + min_dis = dist[i] + min_dis_pos = i + if min_dis_pos == -1: # 没有顶点可以加入 MST,图 G 不连通 + return -1 + ans += min_dis # 将顶点加入 MST,并将边权值加入到答案中 + vis.add(min_dis_pos) + for i in range(size): + if i not in vis and dist[i] > graph[min_dis_pos][i]: + dist[i] = graph[min_dis_pos][i] + return ans + +points = [[0,0]] +graph = dict() +size = len(points) +for i in range(size): + x1, y1 = points[i] + for j in range(size): + x2, y2 = points[j] + dist = abs(x2 - x1) + abs(y2 - y1) + if i not in graph: + graph[i] = dict() + if j not in graph: + graph[j] = dict() + graph[i][j] = dist + graph[j][i] = dist + + +print(Solution().Prim(graph)) ``` -### 2.3 Prim 算法 +### 2.4 Prim 算法复杂度分析 + +Prim 算法的时间复杂度主要取决于以下几个因素: + +1. **初始化阶段**: + - 初始化距离数组和访问数组的时间复杂度为 $O(V)$,其中 $V$ 是图中的顶点数。 -## 03. Kruskal 算法 +2. **主循环阶段**: + - 外层循环需要执行 $V-1$ 次,用于选择 $V-1$ 条边。 + - 每次循环中需要: + - 找到未访问顶点中距离最小的顶点,时间复杂度为 $O(V)$。 + - 更新相邻顶点的距离,时间复杂度为 $O(V)$。 + +因此,Prim 算法的总体复杂度为: +- 时间复杂度:$O(V^2)$,其中 $V$ 是图中的顶点数。 +- 空间复杂度:$O(V)$,主要用于存储距离数组和访问数组。 + +## 3. Kruskal 算法 ### 3.1 Kruskal 算法的算法思想 @@ -70,12 +131,81 @@ 2. 将每个顶点看做是一个单独集合,即初始时每个顶点自成一个集合。 3. 按照排好序的边顺序,按照权重从小到大,依次遍历每一条边。 4. 对于每条边,检查其连接的两个顶点所属的集合: - 1. 如果两个顶点属于同一个集合,则跳过这条边,以免形成环路。 - 2. 如果两个顶点不属于同一个集合,则将这条边加入到最小生成树中,同时合并这两个顶点所属的集合。 + 1. 如果两个顶点属于同一个集合,则跳过这条边,以免形成环路。 + 2. 如果两个顶点不属于同一个集合,则将这条边加入到最小生成树中,同时合并这两个顶点所属的集合。 5. 重复第 $3 \sim 4$ 步,直到最小生成树中的变数等于所有节点数减 $1$ 为止。 ### 3.3 Kruskal 算法的实现代码 ```python +class UnionFind: + + def __init__(self, n): + self.parent = [i for i in range(n)] + self.count = n + + def find(self, x): + while x != self.parent[x]: + self.parent[x] = self.parent[self.parent[x]] + x = self.parent[x] + return x + + def union(self, x, y): + root_x = self.find(x) + root_y = self.find(y) + if root_x == root_y: + return + + self.parent[root_x] = root_y + self.count -= 1 + + def is_connected(self, x, y): + return self.find(x) == self.find(y) + + +class Solution: + def Kruskal(self, edges, size): + union_find = UnionFind(size) + + edges.sort(key=lambda x: x[2]) + + res, cnt = 0, 1 + for x, y, dist in edges: + if union_find.is_connected(x, y): + continue + ans += dist + cnt += 1 + union_find.union(x, y) + if cnt == size - 1: + return ans + return ans + + def minCostConnectPoints(self, points: List[List[int]]) -> int: + size = len(points) + edges = [] + for i in range(size): + xi, yi = points[i] + for j in range(i + 1, size): + xj, yj = points[j] + dist = abs(xi - xj) + abs(yi - yj) + edges.append([i, j, dist]) + + ans = Solution().Kruskal(edges, size) + return ans +``` + +### 3.4 Kruskal 算法复杂度分析 + +Kruskal 算法的时间复杂度主要取决于以下几个因素: + +1. **边的排序**:对 $E$ 条边进行排序的时间复杂度为 $O(E \log E)$。 + +2. **并查集操作**: + - 查找操作(find)的时间复杂度为 $O(\alpha(n))$,其中 $\alpha(n)$ 是阿克曼函数的反函数,增长极其缓慢,可以近似认为是常数时间。 + - 合并操作(union)的时间复杂度也是 $O(\alpha(n))$。 + +3. **遍历边的过程**:需要遍历所有边,时间复杂度为 $O(E)$。 -``` \ No newline at end of file +因此,Kruskal 算法的总体时间复杂度为: +- 时间复杂度:$O(E \log E)$,其中 $E$ 是图中的边数。 +- 空间复杂度:$O(V)$,其中 $V$ 是图中的顶点数,主要用于存储并查集数据结构。 \ No newline at end of file From 02cf520ad693c5ae38a064114e1761bc61b42d33 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 30 May 2025 16:37:17 +0800 Subject: [PATCH 135/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=8C=E5=8D=95?= =?UTF-8?q?=E6=BA=90=E6=9C=80=E7=9F=AD=E8=B7=AF=E5=BE=84=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=EF=BC=88=E4=B8=80=EF=BC=89=E3=80=8D=E7=9B=B8=E5=85=B3=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...01.Graph-Single-Source-Shortest-Path-01.md | 175 ++++++++++++++++-- 1 file changed, 163 insertions(+), 12 deletions(-) diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md b/Contents/08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md index 6152ecb6..ecb599ad 100644 --- a/Contents/08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md +++ b/Contents/08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md @@ -1,4 +1,4 @@ -## 1. 单源最短路径的定义 +## 1. 单源最短路径简介 > **单源最短路径(Single Source Shortest Path)**:对于一个带权图 $G = (V, E)$,其中每条边的权重是一个实数。另外,给定 $v$ 中的一个顶点,称之为源点。则源点到其他所有各个顶点之间的最短路径长度,称为单源最短路径。 @@ -20,34 +20,185 @@ > **Dijkstra 算法的算法思想**:通过逐步选择距离起始节点最近的节点,并根据这些节点的路径更新其他节点的距离,从而逐步找到最短路径。 +Dijkstra 算法是一种用来解决单源最短路径问题的算法。这个算法适用于没有负权边的图。算法的核心思想是从源点出发,逐步找到到其他所有点的最短路径。它通过不断选择当前距离源点最近的节点,并更新与该节点相邻的节点的距离,最终得到所有节点的最短路径。 + +Dijkstra 算法使用贪心的策略。它每次选择当前未处理的节点中距离源点最近的节点,认为这个节点的最短路径已经确定。然后,它用这个节点的最短路径去更新其他相邻节点的距离。这个过程重复进行,直到所有节点的最短路径都被确定。 + +Dijkstra 算法的一个重要特点是它不能处理有负权边的图。因为负权边可能导致已经确定的最短路径被破坏。如果图中存在负权边,应该使用 Bellman-Ford 算法或 SPFA 算法。 + ### 2.2 Dijkstra 算法的实现步骤 +1. 初始化距离数组,将源节点 $source$ 的距离设为 $0$,其他节点的距离设为无穷大。 +2. 维护一个访问数组 $visited$,记录节点是否已经被访问。 +3. 每次从未访问的节点中找到距离最小的节点,标记为已访问。 +4. 更新该节点的所有相邻节点的距离。 +5. 重复步骤 $3 \sim 4$,直到所有节点都被访问。 +6. 最后返回所有节点中最大的距离值,如果存在无法到达的节点则返回 $-1$。 + + + ### 2.3 Dijkstra 算法的实现代码 ```python - +class Solution: + def dijkstra(self, graph, n, source): + # 初始化距离数组 + dist = [float('inf') for _ in range(n + 1)] + dist[source] = 0 + # 记录已处理的节点 + visited = set() + + while len(visited) < n: + # 选择当前未处理的、距离源点最近的节点 + current_node = None + min_distance = float('inf') + for i in range(1, n + 1): + if i not in visited and dist[i] < min_distance: + min_distance = dist[i] + current_node = i + + # 如果没有可处理的节点(非连通图),提前结束 + if current_node is None: + break + + # 标记当前节点为已处理 + visited.add(current_node) + + # 更新相邻节点的距离 + for neighbor, weight in graph[current_node].items(): + new_distance = dist[current_node] + weight + if new_distance < dist[neighbor]: + dist[neighbor] = new_distance + + return dist + +# 使用示例 +# 创建一个有向图,使用邻接表表示 +graph = { + 1: {2: 2, 3: 4}, + 2: {3: 1, 4: 7}, + 3: {4: 3}, + 4: {} +} +n = 4 # 图中节点数量 +source = 1 # 源节点 + +dist = Solution().dijkstra(graph, n, source) +print("从节点", source, "到其他节点的最短距离:") +for i in range(1, n + 1): + if dist[i] == float('inf'): + print(f"到节点 {i} 的距离:不可达") + else: + print(f"到节点 {i} 的距离:{dist[i]}") ``` -## 3. Bellman-Ford 算法 +### 2.4 Dijkstra 算法复杂度分析 -### 3.1 Bellman-Ford 算法的算法思想 +- **时间复杂度**:$O(V^2)$ + - 外层循环需要遍历所有节点,时间复杂度为 $O(V)$ + - 内层循环需要遍历所有未访问的节点来找到距离最小的节点,时间复杂度为 $O(V)$ + - 因此总时间复杂度为 $O(V^2)$ -### 3.2 Bellman-Ford 算法的实现步骤 +- **空间复杂度**:$O(V)$ + - 需要存储距离数组 `dist`,大小为 $O(V)$ + - 需要存储访问集合 `visited`,大小为 $O(V)$ + - 因此总空间复杂度为 $O(V)$ -### 3.3 Bellman-Ford 算法的实现代码 -```python +## 3. 堆优化的 Dijkstra 算法 -``` +### 3.1 堆优化的 Dijkstra 算法思想 + +> **堆优化的 Dijkstra 算法**:通过使用优先队列(堆)来优化选择最小距离节点的过程,从而降低算法的时间复杂度。 -## 4. SPFA 算法 +在原始的 Dijkstra 算法中,每次都需要遍历所有未访问的节点来找到距离最小的节点,这个过程的时间复杂度是 $O(V)$。通过使用优先队列(堆)来维护当前已知的最短距离,我们可以将这个过程的时间复杂度优化到 $O(\log V)$。 -### 4.1 SPFA 算法的算法思想 +堆优化的主要思想是: +1. 使用优先队列存储当前已知的最短距离 +2. 每次从队列中取出距离最小的节点进行处理 +3. 当发现更短的路径时,将新的距离加入队列 +4. 通过优先队列的特性,保证每次取出的都是当前最小的距离 -### 4.2 SPFA 算法的实现步骤 +### 3.2 堆优化的 Dijkstra 算法实现步骤 -### 4.3 SPFA 算法的实现代码 +1. 初始化距离数组,将源节点的距离设为 $0$,其他节点的距离设为无穷大。 +2. 创建一个优先队列,将源节点及其距离 $(0, source)$ 加入队列。 +3. 当队列不为空时: + - 取出队列中距离最小的节点 + - 如果该节点的距离大于已知的最短距离,则跳过 + - 否则,遍历该节点的所有相邻节点 + - 如果通过当前节点到达相邻节点的距离更短,则更新距离并将新的距离加入队列 +4. 重复步骤 3,直到队列为空 +5. 返回所有节点的最短距离 + +### 3.3 堆优化的 Dijkstra 算法实现代码 ```python +import heapq + +class Solution: + def dijkstra(self, graph, n, source): + # 初始化距离数组 + dist = [float('inf') for _ in range(n + 1)] + dist[source] = 0 + + # 创建优先队列,存储 (距离, 节点) 的元组 + priority_queue = [(0, source)] + + while priority_queue: + current_distance, current_node = heapq.heappop(priority_queue) + + # 如果当前距离大于已知的最短距离,跳过 + if current_distance > dist[current_node]: + continue + + # 遍历当前节点的所有相邻节点 + for neighbor, weight in graph[current_node].items(): + distance = current_distance + weight + if distance < dist[neighbor]: + dist[neighbor] = distance + heapq.heappush(priority_queue, (distance, neighbor)) + + return dist + +# 使用示例 +# 创建一个有向图,使用邻接表表示 +graph = { + 1: {2: 2, 3: 4}, + 2: {3: 1, 4: 7}, + 3: {4: 3}, + 4: {} +} +n = 4 # 图中节点数量 +source = 1 # 源节点 + +dist = Solution().dijkstra(graph, n, source) +print("从节点", source, "到其他节点的最短距离:") +for i in range(1, n + 1): + if dist[i] == float('inf'): + print(f"到节点 {i} 的距离:不可达") + else: + print(f"到节点 {i} 的距离:{dist[i]}") ``` +代码解释: + +1. `graph` 是一个字典,表示图的邻接表。例如,`graph[1] = {2: 3, 3: 4}` 表示从节点 1 到节点 2 的边权重为 3,到节点 3 的边权重为 4。 +2. `n` 是图中顶点的数量。 +3. `source` 是源节点的编号。 +4. `dist` 数组存储源点到各个节点的最短距离。 +5. `priority_queue` 是一个优先队列,用来选择当前距离源点最近的节点。队列中的元素是 (距离, 节点) 的元组。 +6. 主循环中,每次从队列中取出距离最小的节点。如果该节点的距离已经被更新过,跳过。 +7. 对于当前节点的每一个邻居,计算通过当前节点到达邻居的距离。如果这个距离比已知的更短,更新距离并将邻居加入队列。 +8. 最终,`dist` 数组中存储的就是源点到所有节点的最短距离。 + +### 3.4 堆优化的 Dijkstra 算法复杂度分析 + +- **时间复杂度**:$O((V + E) \log V)$ + - 每个节点最多被加入优先队列一次,每次操作的时间复杂度为 $O(\log V)$ + - 每条边最多被处理一次,每次处理的时间复杂度为 $O(\log V)$ + - 因此总时间复杂度为 $O((V + E) \log V)$ + +- **空间复杂度**:$O(V)$ + - 需要存储距离数组,大小为 $O(V)$。 + - 优先队列在最坏情况下可能存储所有节点,大小为 $O(V)$。 From 0cc0e179dcf58a6090dc1ac4f46a4dcac285df95 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Fri, 30 May 2025 16:37:31 +0800 Subject: [PATCH 136/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=8C=E5=8D=95?= =?UTF-8?q?=E6=BA=90=E6=9C=80=E7=9F=AD=E8=B7=AF=E5=BE=84=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=EF=BC=88=E4=BA=8C=EF=BC=89=E3=80=8D=E7=9B=B8=E5=85=B3=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...02.Graph-Single-Source-Shortest-Path-02.md | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md b/Contents/08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md index e69de29b..c5c1bf4e 100644 --- a/Contents/08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md +++ b/Contents/08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md @@ -0,0 +1,161 @@ +## 1. Bellman-Ford 算法 + +### 1.1 Bellman-Ford 算法的算法思想 + +> **Bellman-Ford 算法**:一种用于计算单源最短路径的算法,可以处理图中存在负权边的情况,并且能够检测负权环。 + +Bellman-Ford 算法的核心思想是: +1. 对图中的所有边进行 $V-1$ 次松弛操作,其中 $V$ 是图中顶点的数量 +2. 每次松弛操作都会尝试通过当前边来缩短源点到目标顶点的距离 +3. 如果在 $V-1$ 次松弛后还能继续松弛,说明图中存在负权环 +4. 算法可以处理负权边,但不能处理负权环 + +### 1.2 Bellman-Ford 算法的实现步骤 + +1. 初始化距离数组,将源节点的距离设为 $0$,其他节点的距离设为无穷大 +2. 进行 $V-1$ 次迭代,每次迭代: + - 遍历图中的所有边 + - 对每条边进行松弛操作:如果通过当前边可以缩短源点到目标顶点的距离,则更新距离 +3. 进行第 $V$ 次迭代,检查是否还能继续松弛: + - 如果还能松弛,说明图中存在负权环 + - 如果不能松弛,说明已经找到最短路径 +4. 返回最短路径距离数组 + +### 1.3 Bellman-Ford 算法的实现代码 + +```python +class Solution: + def bellmanFord(self, graph, n, source): + # 初始化距离数组 + dist = [float('inf') for _ in range(n + 1)] + dist[source] = 0 + + # 进行 V-1 次迭代 + for i in range(n - 1): + # 遍历所有边 + for vi in graph: + for vj in graph[vi]: + # 松弛操作 + if dist[vj] > graph[vi][vj] + dist[vi]: + dist[vj] = graph[vi][vj] + dist[vi] + + # 检查是否存在负权环 + for vi in graph: + for vj in graph[vi]: + if dist[vj] > dist[vi] + graph[vi][vj]: + return None # 存在负权环 + + return dist +``` + +代码解释: + +1. `graph` 是一个字典,表示图的邻接表。例如,`graph[1] = {2: 3, 3: 4}` 表示从节点 1 到节点 2 的边权重为 3,到节点 3 的边权重为 4。 +2. `n` 是图中顶点的数量。 +3. `source` 是源节点的编号。 +4. `dist` 数组存储源点到各个节点的最短距离。 +5. 外层循环进行 $V-1$ 次迭代,确保所有可能的最短路径都被找到。 +6. 内层循环遍历所有边,进行松弛操作。 +7. 最后检查是否存在负权环,如果存在则返回 None。 + +### 1.4 Bellman-Ford 算法复杂度分析 + +- **时间复杂度**:$O(VE)$ + - 需要进行 $V-1$ 次迭代 + - 每次迭代需要遍历所有边 $E$ + - 因此总时间复杂度为 $O(VE)$ + +- **空间复杂度**:$O(V)$ + - 需要存储距离数组,大小为 $O(V)$ + - 不需要额外的空间来存储图的结构,因为使用邻接表表示 + + +## 2. SPFA 算法 + +### 2.1 SPFA 算法的算法思想 + +> **SPFA 算法(Shortest Path Faster Algorithm)**:是 Bellman-Ford 算法的一种队列优化版本,通过使用队列来维护待更新的节点,从而减少不必要的松弛操作。 + +SPFA 算法的核心思想是: +1. 使用队列来维护待更新的节点,而不是像 Bellman-Ford 算法那样遍历所有边 +2. 只有当某个节点的距离被更新时,才将其加入队列 +3. 通过这种方式,避免了大量不必要的松弛操作,提高了算法的效率 +4. 算法可以处理负权边,并且能够检测负权环 + +### 2.2 SPFA 算法的实现步骤 + +1. 初始化距离数组,将源节点的距离设为 $0$,其他节点的距离设为无穷大 +2. 创建一个队列,将源节点加入队列 +3. 当队列不为空时: + - 取出队首节点 + - 遍历该节点的所有相邻节点 + - 如果通过当前节点可以缩短到相邻节点的距离,则更新距离 + - 如果相邻节点不在队列中,则将其加入队列 +4. 重复步骤 3,直到队列为空 +5. 返回最短路径距离数组 + +### 2.3 SPFA 算法的实现代码 + +```python +from collections import deque + +def spfa(graph, n, source): + # 初始化距离数组 + dist = [float('inf') for _ in range(n + 1)] + dist[source] = 0 + + # 初始化队列和访问数组 + queue = deque([source]) + in_queue = [False] * (n + 1) + in_queue[source] = True + + # 记录每个节点入队次数,用于检测负环 + count = [0] * (n + 1) + + while queue: + # 取出队首节点 + current = queue.popleft() + in_queue[current] = False + + # 遍历当前节点的所有相邻节点 + for neighbor, weight in graph[current].items(): + # 如果通过当前节点可以缩短距离 + if dist[neighbor] > dist[current] + weight: + dist[neighbor] = dist[current] + weight + count[neighbor] += 1 + + # 如果节点入队次数超过 n-1 次,说明存在负环 + if count[neighbor] >= n: + return None + + # 如果相邻节点不在队列中,将其加入队列 + if not in_queue[neighbor]: + queue.append(neighbor) + in_queue[neighbor] = True + + return dist +``` + +代码解释: + +1. `graph` 是一个字典,表示图的邻接表。例如,`graph[1] = {2: 3, 3: 4}` 表示从节点 1 到节点 2 的边权重为 3,到节点 3 的边权重为 4。 +2. `n` 是图中顶点的数量。 +3. `source` 是源节点的编号。 +4. `dist` 数组存储源点到各个节点的最短距离。 +5. `queue` 是一个双端队列,用于维护待更新的节点。 +6. `in_queue` 数组用于记录节点是否在队列中,避免重复入队。 +7. `count` 数组用于记录每个节点的入队次数,用于检测负环。 +8. 主循环中,每次从队列中取出一个节点,遍历其所有相邻节点,如果发现更短的路径则更新距离并将相邻节点加入队列。 +9. 如果某个节点的入队次数超过 $n-1$ 次,说明图中存在负环,返回 None。 + +### 2.4 SPFA 算法复杂度分析 + +- **时间复杂度**: + - 平均情况下:$O(kE)$,其中 $k$ 是每个节点的平均入队次数 + - 最坏情况下:$O(VE)$,与 Bellman-Ford 算法相同 + - 实际运行中,SPFA 算法通常比 Bellman-Ford 算法快很多 + +- **空间复杂度**:$O(V)$ + - 需要存储距离数组,大小为 $O(V)$ + - 需要存储队列和访问数组,大小为 $O(V)$ + - 因此总空间复杂度为 $O(V)$ From 8be59cc1ad1e0ab625f88871546ba31f1dfa2dd3 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 10 Jun 2025 15:37:23 +0800 Subject: [PATCH 137/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=8C=E5=A4=9A?= =?UTF-8?q?=E6=BA=90=E6=9C=80=E7=9F=AD=E8=B7=AF=E5=BE=84=E3=80=8D=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../04.Graph-Multi-Source-Shortest-Path.md | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md b/Contents/08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md index e69de29b..46ee8248 100644 --- a/Contents/08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md +++ b/Contents/08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md @@ -0,0 +1,202 @@ +## 1. 多源最短路径简介 + +> **多源最短路径(All-Pairs Shortest Paths)**:对于一个带权图 $G = (V, E)$,计算图中任意两个顶点之间的最短路径长度。 + +多源最短路径问题的核心是找到图中任意两个顶点之间的最短路径。这个问题在许多实际应用中都非常重要,比如: + +1. 网络路由中的路由表计算 +2. 地图导航系统中的距离矩阵计算 +3. 社交网络中的最短关系链分析 +4. 交通网络中的最优路径规划 + +常见的解决多源最短路径问题的算法包括: + +1. **Floyd-Warshall 算法**:一种动态规划算法,可以处理负权边,但不能处理负权环。 +2. **Johnson 算法**:结合了 Bellman-Ford 算法和 Dijkstra 算法,可以处理负权边,但不能处理负权环。 +3. **重复 Dijkstra 算法**:对每个顶点运行一次 Dijkstra 算法,适用于无负权边的图。 + +## 2. Floyd-Warshall 算法 + +### 2.1 Floyd-Warshall 算法的算法思想 + +> **Floyd-Warshall 算法**:一种动态规划算法,通过逐步考虑中间顶点来更新任意两点之间的最短路径。 + +Floyd-Warshall 算法的核心思想是: + +1. 对于图中的任意两个顶点 $i$ 和 $j$,考虑是否存在一个顶点 $k$,使得从 $i$ 到 $k$ 再到 $j$ 的路径比已知的从 $i$ 到 $j$ 的路径更短 +2. 如果存在这样的顶点 $k$,则更新从 $i$ 到 $j$ 的最短路径 +3. 通过考虑所有可能的中间顶点 $k$,最终得到任意两点之间的最短路径 + +### 2.2 Floyd-Warshall 算法的实现步骤 + +1. 初始化距离矩阵 $dist$,其中 $dist[i][j]$ 表示从顶点 $i$ 到顶点 $j$ 的最短路径长度 +2. 对于每对顶点 $(i, j)$,如果存在边 $(i, j)$,则 $dist[i][j]$ 设为边的权重,否则设为无穷大 +3. 对于每个顶点 $k$,作为中间顶点: + - 对于每对顶点 $(i, j)$,如果 $dist[i][k] + dist[k][j] < dist[i][j]$,则更新 $dist[i][j]$ +4. 重复步骤 3,直到考虑完所有可能的中间顶点 +5. 返回最终的距离矩阵 + +### 2.3 Floyd-Warshall 算法的实现代码 + +```python +def floyd_warshall(graph, n): + # 初始化距离矩阵 + dist = [[float('inf') for _ in range(n)] for _ in range(n)] + + # 设置直接相连的顶点之间的距离 + for i in range(n): + dist[i][i] = 0 + for j, weight in graph[i].items(): + dist[i][j] = weight + + # 考虑每个顶点作为中间顶点 + for k in range(n): + for i in range(n): + for j in range(n): + if dist[i][k] != float('inf') and dist[k][j] != float('inf'): + dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j]) + + return dist +``` + +代码解释: + +1. `graph` 是一个字典,表示图的邻接表。例如,`graph[0] = {1: 3, 2: 4}` 表示从节点 0 到节点 1 的边权重为 3,到节点 2 的边权重为 4。 +2. `n` 是图中顶点的数量。 +3. `dist` 是一个二维数组,存储任意两点之间的最短路径长度。 +4. 首先初始化距离矩阵,将对角线元素设为 0,表示顶点到自身的距离为 0。 +5. 然后设置直接相连的顶点之间的距离。 +6. 主循环中,对于每个顶点 $k$,考虑它作为中间顶点时,是否能缩短其他顶点之间的距离。 +7. 最终返回的距离矩阵中,$dist[i][j]$ 表示从顶点 $i$ 到顶点 $j$ 的最短路径长度。 + +### 2.4 Floyd-Warshall 算法复杂度分析 + +- **时间复杂度**:$O(V^3)$ + - 需要三层嵌套循环,分别遍历所有顶点 + - 因此总时间复杂度为 $O(V^3)$ + +- **空间复杂度**:$O(V^2)$ + - 需要存储距离矩阵,大小为 $O(V^2)$ + - 不需要额外的空间来存储图的结构,因为使用邻接表表示 + +Floyd-Warshall 算法的主要优势在于: + +1. 实现简单,容易理解 +2. 可以处理负权边 +3. 可以检测负权环(如果某个顶点到自身的距离变为负数,说明存在负权环) +4. 适用于稠密图 + +主要缺点: + +1. 时间复杂度较高,不适用于大规模图 +2. 空间复杂度较高,需要存储完整的距离矩阵 +3. 不能处理负权环 + +## 3. Johnson 算法 + +### 3.1 Johnson 算法的算法思想 + +> **Johnson 算法**:一种结合了 Bellman-Ford 算法和 Dijkstra 算法的多源最短路径算法,可以处理负权边,但不能处理负权环。 + +Johnson 算法的核心思想是: + +1. 通过重新赋权,将图中的负权边转换为非负权边 +2. 对每个顶点运行一次 Dijkstra 算法,计算最短路径 +3. 将结果转换回原始权重 + +### 3.2 Johnson 算法的实现步骤 + +1. 添加一个新的顶点 $s$,并添加从 $s$ 到所有其他顶点的边,权重为 0 +2. 使用 Bellman-Ford 算法计算从 $s$ 到所有顶点的最短路径 $h(v)$ +3. 重新赋权:对于每条边 $(u, v)$,新的权重为 $w(u, v) + h(u) - h(v)$ +4. 对每个顶点 $v$,使用 Dijkstra 算法计算从 $v$ 到所有其他顶点的最短路径 +5. 将结果转换回原始权重:对于从 $u$ 到 $v$ 的最短路径,原始权重为 $d(u, v) - h(u) + h(v)$ + +### 3.3 Johnson 算法的实现代码 + +```python +from collections import defaultdict +import heapq + +def johnson(graph, n): + # 添加新顶点 s + new_graph = defaultdict(dict) + for u in graph: + for v, w in graph[u].items(): + new_graph[u][v] = w + new_graph[n][u] = 0 # 从 s 到所有顶点的边权重为 0 + + # 使用 Bellman-Ford 算法计算 h(v) + h = [float('inf')] * (n + 1) + h[n] = 0 + + for _ in range(n): + for u in new_graph: + for v, w in new_graph[u].items(): + if h[v] > h[u] + w: + h[v] = h[u] + w + + # 检查是否存在负权环 + for u in new_graph: + for v, w in new_graph[u].items(): + if h[v] > h[u] + w: + return None # 存在负权环 + + # 重新赋权 + reweighted_graph = defaultdict(dict) + for u in graph: + for v, w in graph[u].items(): + reweighted_graph[u][v] = w + h[u] - h[v] + + # 对每个顶点运行 Dijkstra 算法 + dist = [[float('inf') for _ in range(n)] for _ in range(n)] + for source in range(n): + # 初始化距离数组 + d = [float('inf')] * n + d[source] = 0 + + # 使用优先队列 + pq = [(0, source)] + visited = set() + + while pq: + current_dist, u = heapq.heappop(pq) + if u in visited: + continue + visited.add(u) + + for v, w in reweighted_graph[u].items(): + if d[v] > current_dist + w: + d[v] = current_dist + w + heapq.heappush(pq, (d[v], v)) + + # 转换回原始权重 + for v in range(n): + if d[v] != float('inf'): + dist[source][v] = d[v] - h[source] + h[v] + + return dist +``` + +代码解释: + +1. `graph` 是一个字典,表示图的邻接表。 +2. `n` 是图中顶点的数量。 +3. 首先添加一个新的顶点 $s$,并添加从 $s$ 到所有其他顶点的边,权重为 0。 +4. 使用 Bellman-Ford 算法计算从 $s$ 到所有顶点的最短路径 $h(v)$。 +5. 检查是否存在负权环,如果存在则返回 None。 +6. 重新赋权,将图中的负权边转换为非负权边。 +7. 对每个顶点运行一次 Dijkstra 算法,计算最短路径。 +8. 将结果转换回原始权重,得到最终的距离矩阵。 + +### 3.4 Johnson 算法复杂度分析 + +- **时间复杂度**:$O(VE \log V)$ + - 需要运行一次 Bellman-Ford 算法,时间复杂度为 $O(VE)$ + - 需要运行 $V$ 次 Dijkstra 算法,每次时间复杂度为 $O(E \log V)$ + - 因此总时间复杂度为 $O(VE \log V)$ + +- **空间复杂度**:$O(V^2)$ + - 需要存储距离矩阵,大小为 $O(V^2)$ + - 需要存储重新赋权后的图,大小为 $O(E)$ + - 因此总空间复杂度为 $O(V^2)$ From 7eedd87450445f7d041ce891d0ad6f9336bf80ed Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 10 Jun 2025 15:38:08 +0800 Subject: [PATCH 138/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=8C=E6=AC=A1?= =?UTF-8?q?=E7=9F=AD=E8=B7=AF=E5=BE=84=E3=80=8D=E7=9B=B8=E5=85=B3=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../06.Graph-The-Second-Shortest-Path.md | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md b/Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md index e69de29b..d2abf0cb 100644 --- a/Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md +++ b/Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md @@ -0,0 +1,131 @@ +## 1.1 次短路径简介 + +> **次短路径**:给定一个带权有向图,求从起点到终点的次短路径。次短路径是指长度严格大于最短路径的所有路径中长度最小的那条路径。 + +### 1.1.1 问题特点 + +- 次短路径必须严格大于最短路径 +- 可能存在多条最短路径,但次短路径是唯一的 +- 如果不存在次短路径(如最短路径是唯一的),则返回 $-1$。 + +### 1.1.2 常见变体 + +1. 允许重复边的次短路径 +2. 不允许重复边的次短路径 +3. 带约束条件的次短路径(如必须经过某些节点) + +## 1.2 次短路径基本思路 + +求解次短路径的常用方法是使用 Dijkstra 算法的变体。基本思路如下: + +1. 使用 Dijkstra 算法找到最短路径。 +2. 在寻找最短路径的过程中,同时维护次短路径。 +3. 对于每个节点,我们需要维护两个距离值: + - $dist1[u]$:从起点到节点 u 的最短距离。 + - $dist2[u]$:从起点到节点 u 的次短距离。 + +### 1.2.1 具体实现步骤 + +1. 初始化 $dist1$ 和 $dist2$ 数组,所有值设为无穷大。 +2. 将起点加入优先队列,距离为 $0$。 +3. 每次从队列中取出距离最小的节点 $u$。 +4. 遍历 $u$ 的所有邻接节点 $v$: + - 如果找到更短的路径,更新 $dist1[v]$。 + - 如果找到次短的路径,更新 $dist2[v]$。 +5. 最终 $dist2[终点]$ 即为所求的次短路径长度。 + +### 1.2.2 算法正确性证明 + +1. 对于任意节点 $u$,$dist1[u]$ 一定是最短路径长度。 +2. 对于任意节点 $u$,$dist2[u]$ 一定是次短路径长度。 +3. 算法会考虑所有可能的路径,因此不会遗漏次短路径。 + +## 1.3 次短路径代码实现 + +```python +import heapq + +def second_shortest_path(n: int, edges: List[List[int]], start: int, end: int) -> int: + """ + 计算从起点到终点的次短路径长度 + + 参数: + n: 节点数量 + edges: 边列表,每个元素为 [起点, 终点, 权重] + start: 起始节点 + end: 目标节点 + + 返回: + 次短路径的长度,如果不存在则返回 -1 + """ + # 构建邻接表 + graph = [[] for _ in range(n)] + for u, v, w in edges: + graph[u].append((v, w)) + + # 初始化距离数组 + dist1 = [float('inf')] * n # 最短距离 + dist2 = [float('inf')] * n # 次短距离 + dist1[start] = 0 + + # 优先队列,存储 (距离, 节点) 的元组 + pq = [(0, start)] + + while pq: + d, u = heapq.heappop(pq) + + # 如果当前距离大于次短距离,跳过 + if d > dist2[u]: + continue + + # 遍历所有邻接节点 + for v, w in graph[u]: + # 计算新的距离 + new_dist = d + w + + # 如果找到更短的路径 + if new_dist < dist1[v]: + dist2[v] = dist1[v] # 原来的最短路径变成次短路径 + dist1[v] = new_dist # 更新最短路径 + heapq.heappush(pq, (new_dist, v)) + # 如果找到次短的路径 + elif new_dist > dist1[v] and new_dist < dist2[v]: + dist2[v] = new_dist + heapq.heappush(pq, (new_dist, v)) + + return dist2[end] if dist2[end] != float('inf') else -1 + +# 使用示例 +n = 4 +edges = [ + [0, 1, 1], + [1, 2, 2], + [2, 3, 1], + [0, 2, 4], + [1, 3, 5] +] +start = 0 +end = 3 + +result = second_shortest_path(n, edges, start, end) +print(f"次短路径长度: {result}") +``` + +## 1.4 算法复杂度分析 + +- 时间复杂度:$O((V + E)\log V)$,其中 $V$ 是节点数,$E$ 是边数。 +- 空间复杂度:$O(V)$,用于存储距离数组和优先队列。 + +## 1.5 应用场景 + +1. 网络路由:寻找备用路径。 +2. 交通规划:寻找替代路线。 +3. 通信网络:寻找备用通信路径。 +4. 物流配送:规划备用配送路线。 + +## 1.6 注意事项 + +1. 次短路径必须严格大于最短路径。 +2. 如果不存在次短路径,返回 $-1$。 +3. 图中可能存在负权边,此时需要使用 Bellman-Ford 算法的变体。 +4. 对于无向图,需要将每条边都加入两次。 \ No newline at end of file From 3b994eddea3952511045b4bcdd326e9cf0b1e112 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 10 Jun 2025 15:38:23 +0800 Subject: [PATCH 139/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=8C=E5=B7=AE?= =?UTF-8?q?=E5=88=86=E7=BA=A6=E6=9D=9F=E7=B3=BB=E7=BB=9F=E3=80=8D=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ....Graph-System-Of-Difference-Constraints.md | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md b/Contents/08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md index e69de29b..11f169fe 100644 --- a/Contents/08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md +++ b/Contents/08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md @@ -0,0 +1,120 @@ +## 1.1 差分约束系统简介 + +> **差分约束系统(System of Difference Constraints)**:一种特殊的线性规划问题,其中每个约束条件都是形如 $x_i - x_j \leq c$ 的不等式。这类问题可以通过图论中的最短路径算法来求解。 + +## 1.2 问题形式 + +给定一组形如 $x_i - x_j \leq c$ 的约束条件,其中: + +- $x_i, x_j$ 是变量。 +- $c$ 是常数。 + +我们的目标是找到一组满足所有约束条件的变量值。 + +## 1.3 图论建模 + +差分约束系统可以转化为有向图问题: + +1. 将每个变量 $x_i$ 看作图中的一个顶点。 +2. 对于约束 $x_i - x_j \leq c$,添加一条从 $j$ 到 $i$ 的边,权重为 $c$。 +3. 添加一个虚拟源点 $s$,向所有顶点连一条权重为 $0$ 的边。 + +## 1.4 求解方法 + +1. **Bellman-Ford 算法**: + - 如果图中存在负环,则无解。 + - 否则,从源点到各点的最短路径长度即为对应变量的解。 + +2. **SPFA 算法**: + - 队列优化的 Bellman-Ford 算法。 + - 适用于稀疏图。 + +## 1.5 应用场景 + +1. 任务调度问题 +2. 区间约束问题 +3. 资源分配问题 +4. 时间序列分析 + +## 1.6 代码实现 + +```python +def solve_difference_constraints(n, constraints): + # 构建图 + graph = [[] for _ in range(n + 1)] + for i, j, c in constraints: + graph[j].append((i, c)) + + # 添加虚拟源点 + for i in range(n): + graph[n].append((i, 0)) + + # Bellman-Ford 算法 + dist = [float('inf')] * (n + 1) + dist[n] = 0 + + # 松弛操作 + for _ in range(n): + for u in range(n + 1): + for v, w in graph[u]: + if dist[u] + w < dist[v]: + dist[v] = dist[u] + w + + # 检查负环 + for u in range(n + 1): + for v, w in graph[u]: + if dist[u] + w < dist[v]: + return None # 存在负环,无解 + + return dist[:n] # 返回前 n 个变量的解 +``` + +## 1.7 算法复杂度 + +- 时间复杂度: + + - **Bellman-Ford 算法**: + + - 最坏情况:$O(VE)$。 + + - 其中 $V$ 为顶点数,$E$ 为边数。 + + - 需要进行 $V-1$ 次松弛操作,每次操作遍历所有边。 + + - **SPFA 算法**: + - 平均情况:$O(kE)$,其中 $k$ 为每个点的平均入队次数。 + - 最坏情况:$O(VE)$。 + - 实际运行时间通常优于 Bellman-Ford 算法。 + +- 空间复杂度: + + - **Bellman-Ford 算法**: + + - $O(V + E)$ + + - 需要存储图结构:$O(V + E)$。 + + - 需要存储距离数组:$O(V)$。 + + - **SPFA 算法**: + + - $O(V + E)$。 + + - 需要存储图结构:$O(V + E)$。 + + - 需要存储距离数组:$O(V)$。 + + - 需要存储队列:$O(V)$。 + +### 1.8 优化建议 + +1. 对于稀疏图,优先使用 SPFA 算法。 +2. 对于稠密图,可以考虑使用 Bellman-Ford 算法。 +3. 如果问题规模较大,可以考虑使用其他优化算法或启发式方法。 + +### 1.9 注意事项 + +1. 差分约束系统可能有多个解 +2. 如果存在负环,则无解 +3. 实际应用中需要注意数值精度问题 +4. 对于大规模问题,可以考虑使用其他优化算法 \ No newline at end of file From 79c30ef5d8978e02c2d84f2853d02f6ee69b2262 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 10 Jun 2025 15:39:32 +0800 Subject: [PATCH 140/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=8C=E4=BA=8C?= =?UTF-8?q?=E5=88=86=E5=9B=BE=E5=9F=BA=E7=A1=80=E7=9F=A5=E8=AF=86=E3=80=8D?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01.Graph-Bipartite-Basic.md | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/Contents/08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md b/Contents/08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md index e69de29b..8007df93 100644 --- a/Contents/08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md +++ b/Contents/08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md @@ -0,0 +1,72 @@ +## 1.1 二分图的定义 + +> **二分图(Bipartite Graph)**:一种特殊的图,其顶点集可以被划分为两个互不相交的子集,使得图中的每一条边都连接着这两个子集中的顶点。换句话说,二分图中的顶点可以被分成两组,使得同一组内的顶点之间没有边相连。 + +## 1.2 二分图的性质 + +1. **染色性质**:二分图是二色的,即可以用两种颜色对顶点进行着色,使得相邻顶点颜色不同。 +2. **无奇环**:二分图中不存在长度为奇数的环。 +3. **最大匹配**:二分图的最大匹配问题可以通过匈牙利算法或网络流算法高效求解。 + +## 1.3 二分图的判定 + +判断一个图是否为二分图的方法: + +1. 使用深度优先搜索(DFS)或广度优先搜索(BFS)进行二着色 +2. 如果在染色过程中发现相邻顶点颜色相同,则该图不是二分图 +3. 如果能够成功完成二着色,则该图是二分图 + +## 1.4 二分图的应用场景 + +1. **任务分配**:将工人和任务分别作为两个顶点集,边表示工人可以完成的任务 +2. **婚姻匹配**:将男性和女性分别作为两个顶点集,边表示可能的配对关系 +3. **网络流问题**:许多网络流问题可以转化为二分图最大匹配问题 +4. **资源分配**:将资源和需求分别作为两个顶点集,边表示资源可以满足的需求 + +## 1.5 二分图的基本算法 + +1. **匈牙利算法**:用于求解二分图的最大匹配 +2. **Hopcroft-Karp算法**:用于求解二分图的最大匹配,时间复杂度更优 +3. **网络流算法**:将二分图最大匹配问题转化为最大流问题求解 + +## 1.6 二分图的判定代码 + +```python +def is_bipartite(graph): + """ + 判断图是否为二分图 + :param graph: 邻接表表示的图 + :return: 是否为二分图 + """ + n = len(graph) + colors = [0] * n # 0表示未染色,1和-1表示两种不同的颜色 + + def dfs(node, color): + colors[node] = color + for neighbor in graph[node]: + if colors[neighbor] == color: + return False + if colors[neighbor] == 0 and not dfs(neighbor, -color): + return False + return True + + for i in range(n): + if colors[i] == 0 and not dfs(i, 1): + return False + return True +``` + +## 1.7 常见问题类型 + +1. 判断图是否为二分图 +2. 求二分图的最大匹配 +3. 求二分图的最小点覆盖 +4. 求二分图的最大独立集 +5. 求二分图的最小路径覆盖 + +## 1.8 注意事项 + +1. 在实现二分图算法时,需要注意图的表示方式(邻接表或邻接矩阵) +2. 对于大规模图,需要考虑算法的空间复杂度 +3. 在实际应用中,可能需要根据具体问题对基本算法进行优化 +4. 处理有向图时,需要先将其转换为无向图再判断是否为二分图 \ No newline at end of file From 20e53edce15c8b1243a5f74c7b624b57a8a06222 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 10 Jun 2025 15:40:02 +0800 Subject: [PATCH 141/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=8C=E4=BA=8C?= =?UTF-8?q?=E5=88=86=E5=9B=BE=E6=9C=80=E5=A4=A7=E5=8C=B9=E9=85=8D=E3=80=8D?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../03.Graph-Bipartite-Matching.md | 277 ++++++++++++++++++ 1 file changed, 277 insertions(+) diff --git a/Contents/08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md b/Contents/08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md index e69de29b..19cb4031 100644 --- a/Contents/08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md +++ b/Contents/08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md @@ -0,0 +1,277 @@ +## 1. 二分图最大匹配简介 + +> **二分图最大匹配(Maximum Bipartite Matching)**:图论中的一个重要问题。在二分图中,我们需要找到最大的匹配数,即最多可以有多少对顶点之间形成匹配。 + +- **二分图**:图中的顶点可以被分成两个独立的集合,使得每条边的两个端点分别属于这两个集合。 +- **匹配**:一组边的集合,其中任意两条边都没有共同的顶点。 +- **最大匹配**:包含边数最多的匹配。 + +### 1.1 应用场景 + +二分图最大匹配在实际应用中有广泛的应用: + +1. **任务分配**:将任务分配给工人,每个工人只能完成一个任务 +2. **婚姻匹配**:将男生和女生进行配对 +3. **网络流问题**:可以转化为最大流问题求解 +4. **资源分配**:将资源分配给需求方 +5. **学生选课**:将学生与课程进行匹配 +6. **网络路由**:将数据包与可用路径进行匹配 + +### 1.2 优化方法 + +1. **使用邻接表**:对于稀疏图,使用邻接表可以显著减少空间复杂度 +2. **双向搜索**:同时从左右两侧进行搜索,可以减少搜索次数 +3. **预处理**:对图进行预处理,去除不可能形成匹配的边 +4. **贪心匹配**:先进行贪心匹配,减少后续搜索的复杂度 +5. **并行处理**:对于大规模图,可以使用并行算法提高效率 + +## 2. 匈牙利算法 + +### 2.1 匈牙利算法基本思想 + +匈牙利算法(Hungarian Algorithm)是求解二分图最大匹配的经典算法。其基本思想是: + +1. 从左侧集合中任选一个未匹配的点开始 +2. 尝试寻找增广路径 +3. 如果找到增广路径,则更新匹配 +4. 重复以上步骤直到无法找到增广路径 + +### 2.2 匈牙利算法实现代码 + +```python +def max_bipartite_matching(graph, left_size, right_size): + # 初始化匹配数组 + match_right = [-1] * right_size + result = 0 + + # 对左侧每个顶点尝试匹配 + for left in range(left_size): + # 记录右侧顶点是否被访问过 + visited = [False] * right_size + + # 如果找到增广路径,则匹配数加1 + if find_augmenting_path(graph, left, visited, match_right): + result += 1 + + return result + +def find_augmenting_path(graph, left, visited, match_right): + # 遍历右侧所有顶点 + for right in range(len(graph[left])): + # 如果存在边且右侧顶点未被访问 + if graph[left][right] and not visited[right]: + visited[right] = True + + # 如果右侧顶点未匹配,或者可以找到新的匹配 + if match_right[right] == -1 or find_augmenting_path(graph, match_right[right], visited, match_right): + match_right[right] = left + return True + + return False +``` + +### 2.3 匈牙利算法时间复杂度 + +- 匈牙利算法的时间复杂度为 O(VE),其中 V 是顶点数,E 是边数 +- 使用邻接矩阵存储图时,空间复杂度为 O(V²) +- 使用邻接表存储图时,空间复杂度为 O(V + E) + + +## 3. Hopcroft-Karp 算法 + +### 3.1 Hopcroft-Karp 算法基本思想 + +Hopcroft-Karp 算法是求解二分图最大匹配的一个更高效的算法,时间复杂度为 O(√VE)。其基本思想是: + +1. 同时寻找多条不相交的增广路径 +2. 使用 BFS 分层,然后使用 DFS 寻找增广路径 +3. 每次迭代可以找到多条增广路径 + + +### 3.2 Hopcroft-Karp 算法实现代码 + +```python +from collections import deque + +def hopcroft_karp(graph, left_size, right_size): + # 初始化匹配数组 + match_left = [-1] * left_size + match_right = [-1] * right_size + result = 0 + + while True: + # 使用 BFS 寻找增广路径 + dist = [-1] * left_size + queue = deque() + + # 将未匹配的左侧顶点加入队列 + for i in range(left_size): + if match_left[i] == -1: + dist[i] = 0 + queue.append(i) + + # BFS 分层 + while queue: + left = queue.popleft() + for right in graph[left]: + if match_right[right] == -1: + # 找到增广路径 + break + if dist[match_right[right]] == -1: + dist[match_right[right]] = dist[left] + 1 + queue.append(match_right[right]) + + # 使用 DFS 寻找增广路径 + def dfs(left): + for right in graph[left]: + if match_right[right] == -1 or \ + (dist[match_right[right]] == dist[left] + 1 and \ + dfs(match_right[right])): + match_left[left] = right + match_right[right] = left + return True + return False + + # 尝试为每个未匹配的左侧顶点寻找增广路径 + found = False + for i in range(left_size): + if match_left[i] == -1 and dfs(i): + found = True + result += 1 + + if not found: + break + + return result +``` + +### 3.3 Hopcroft-Karp 算法复杂度 + +- **时间复杂度**:O(√VE),其中 V 是顶点数,E 是边数 +- **空间复杂度**:O(V + E) +- **优点**: + 1. 比匈牙利算法更高效 + 2. 适合处理大规模图 + 3. 可以并行化实现 +- **缺点**: + 1. 实现相对复杂 + 2. 常数因子较大 + 3. 对于小规模图可能不如匈牙利算法 + +### 3.4 Hopcroft-Karp 算法优化 + +1. **双向 BFS**:同时从左右两侧进行 BFS,减少搜索空间 +2. **动态分层**:根据当前匹配状态动态调整分层策略 +3. **预处理**:使用贪心算法进行初始匹配 +4. **并行化**:利用多线程或分布式计算提高效率 + +## 4. 网络流算法 + +### 4.1 网络流算法实现步骤 + +二分图最大匹配问题可以转化为最大流问题来求解。具体步骤如下: + +1. 添加源点和汇点 +2. 将二分图转化为网络流图 +3. 使用最大流算法求解 + +### 4.2 网络流算法实现代码 + +```python +from collections import defaultdict + +def max_flow_bipartite_matching(graph, left_size, right_size): + # 构建网络流图 + flow_graph = defaultdict(dict) + source = left_size + right_size + sink = source + 1 + + # 添加源点到左侧顶点的边 + for i in range(left_size): + flow_graph[source][i] = 1 + flow_graph[i][source] = 0 + + # 添加右侧顶点到汇点的边 + for i in range(right_size): + flow_graph[left_size + i][sink] = 1 + flow_graph[sink][left_size + i] = 0 + + # 添加二分图中的边 + for i in range(left_size): + for j in graph[i]: + flow_graph[i][left_size + j] = 1 + flow_graph[left_size + j][i] = 0 + + # 使用 Ford-Fulkerson 算法求解最大流 + def bfs(): + parent = [-1] * (sink + 1) + queue = deque([source]) + parent[source] = -2 + + while queue: + u = queue.popleft() + for v, capacity in flow_graph[u].items(): + if parent[v] == -1 and capacity > 0: + parent[v] = u + if v == sink: + return parent + queue.append(v) + return None + + def ford_fulkerson(): + max_flow = 0 + while True: + parent = bfs() + if not parent: + break + + # 找到增广路径上的最小容量 + v = sink + min_capacity = float('inf') + while v != source: + u = parent[v] + min_capacity = min(min_capacity, flow_graph[u][v]) + v = u + + # 更新流量 + v = sink + while v != source: + u = parent[v] + flow_graph[u][v] -= min_capacity + flow_graph[v][u] += min_capacity + v = u + + max_flow += min_capacity + + return max_flow + + return ford_fulkerson() +``` + +### 4.3 网络流算法复杂度 + +- **时间复杂度**: + 1. Ford-Fulkerson 算法:O(VE²) + 2. Dinic 算法:O(V²E) + 3. ISAP 算法:O(V²E) +- **空间复杂度**:O(V + E) + +## 5. 算法复杂度分析 + +1. **匈牙利算法** + - 时间复杂度:O(VE) + - 优点:实现简单,容易理解 + - 缺点:对于大规模图效率较低 + - 适用场景:小规模图,需要快速实现 + +2. **Hopcroft-Karp 算法** + - 时间复杂度:O(√VE) + - 优点:效率更高,适合大规模图 + - 缺点:实现相对复杂 + - 适用场景:大规模图,需要高效算法 + +3. **网络流算法** + - 时间复杂度:O(VE²) 或 O(V²E) + - 优点:可以处理更复杂的问题,如带权匹配 + - 缺点:实现复杂,常数较大 + - 适用场景:带权匹配,复杂约束条件 From e6a559656bd54fa8edb97c119811f7ad6d9777dc Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 17 Jun 2025 16:09:05 +0800 Subject: [PATCH 142/158] =?UTF-8?q?=E7=AE=97=E6=B3=95=E9=80=9A=E5=85=B3?= =?UTF-8?q?=E6=89=8B=E5=86=8C=202.0=20=E7=89=88=E6=9C=AC=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/sync.yml | 4 +- Assets/Images/algo-book-contents.png | Bin 515744 -> 0 bytes Assets/Images/algo-book-dark.png | Bin 280365 -> 0 bytes Assets/Images/algo-book-light.png | Bin 275996 -> 0 bytes Assets/Images/itcharge-qr-code.png | Bin 48647 -> 0 bytes Assets/Origins/Categories-List.md | 338 -- Assets/Origins/Interview-100-List.md | 194 - Assets/Origins/Interview-200-List.md | 233 -- Assets/Origins/README-Catalogue-List.md | 215 -- Assets/Origins/README-Head.md | 46 - Assets/Scripts/create_auto.sh | 8 - Assets/Scripts/create_readme.py | 33 - Assets/Scripts/create_solutions_list.py | 324 -- Assets/Scripts/leetcode-problems.csv | 3141 ----------------- Contents/00.Introduction/04.Solutions-List.md | 864 ----- .../00.Introduction/05.Categories-List.md | 1098 ------ .../00.Introduction/06.Interview-100-List.md | 382 -- .../00.Introduction/07.Interview-200-List.md | 551 --- .../00.Introduction/08.Algorithms-Overview.md | 3 - Contents/00.Introduction/index.md | 9 - .../01.Array-Basic/02.Array-Basic-List.md | 23 - Contents/01.Array/01.Array-Basic/index.md | 4 - .../02.Array-Sort/11.Array-Sort-List.md | 85 - Contents/01.Array/02.Array-Sort/index.md | 13 - .../03.Array-Binary-Search-List.md | 53 - .../01.Array/03.Array-Binary-Search/index.md | 5 - .../02.Array-Two-Pointers-List.md | 51 - .../01.Array/04.Array-Two-Pointers/index.md | 4 - .../02.Array-Sliding-Window-List.md | 50 - .../01.Array/05.Array-Sliding-Window/index.md | 4 - Contents/01.Array/index.md | 36 - .../02.Linked-List-Basic-List.md | 17 - .../01.Linked-List-Basic/index.md | 4 - .../01.Linked-List-Sort.md | 523 --- .../02.Linked-List-Sort-List.md | 9 - .../02.Linked-List-Sort/index.md | 4 - .../02.Linked-List-Two-Pointers-List.md | 14 - .../03.Linked-List-Two-Pointers/index.md | 4 - Contents/02.Linked-List/index.md | 17 - .../01.Stack-Basic/02.Stack-Basic-List.md | 18 - Contents/03.Stack/01.Stack-Basic/index.md | 4 - .../02.Monotone-Stack-List.md | 14 - Contents/03.Stack/02.Monotone-Stack/index.md | 4 - Contents/03.Stack/index.md | 11 - .../01.Queue-Basic/02.Queue-Basic-List.md | 8 - Contents/04.Queue/01.Queue-Basic/index.md | 4 - .../02.Priority-Queue-List.md | 14 - Contents/04.Queue/02.Priority-Queue/index.md | 4 - Contents/04.Queue/index.md | 11 - Contents/05.Hash-Table/02.Hash-Table-List.md | 37 - Contents/05.Hash-Table/index.md | 4 - .../01.String-Basic/02.String-Basic-List.md | 15 - Contents/06.String/01.String-Basic/index.md | 4 - .../07.String-Single-Pattern-Matching-List.md | 12 - .../index.md | 9 - .../02.Trie-List.md | 17 - .../03.String-Multi-Pattern-Matching/index.md | 8 - Contents/06.String/index.md | 25 - .../03.Binary-Tree-Traverse-List.md | 27 - .../05.Binary-Tree-Reduction-List.md | 8 - Contents/07.Tree/01.Binary-Tree/index.md | 7 - .../02.Binary-Search-Tree-List.md | 17 - .../07.Tree/02.Binary-Search-Tree/index.md | 5 - .../03.Segment-Tree/02.Segment-Tree-List.md | 37 - Contents/07.Tree/03.Segment-Tree/index.md | 4 - .../02.Binary-Indexed-Tree-List.md | 13 - .../07.Tree/04.Binary-Indexed-Tree/index.md | 4 - .../05.Union-Find/02.Union-Find-List.md | 18 - Contents/07.Tree/05.Union-Find/index.md | 4 - Contents/07.Tree/index.md | 29 - Contents/08.Graph/01.Graph-Basic/index.md | 4 - .../02.Graph-Traversal/02.Graph-DFS-List.md | 38 - .../02.Graph-Traversal/04.Graph-BFS-List.md | 23 - .../06.Graph-Topological-Sorting-List.md | 11 - Contents/08.Graph/02.Graph-Traversal/index.md | 8 - .../02.Graph-Minimum-Spanning-Tree-List.md | 8 - .../08.Graph/03.Graph-Spanning-Tree/index.md | 4 - ....Graph-Single-Source-Shortest-Path-List.md | 10 - ...5.Graph-Multi-Source-Shortest-Path-List.md | 7 - .../07.Graph-The-Second-Shortest-Path-List.md | 6 - ...h-System-Of-Difference-Constraints-List.md | 7 - .../08.Graph/04.Graph-Shortest-Path/index.md | 11 - .../02.Graph-Bipartite-Basic-List.md | 6 - .../04.Graph-Hungarian-Algorithm.md | 0 .../05.Graph-Hopcroft-Karp.md | 0 .../06.Graph-Bipartite-Matching-List.md | 8 - Contents/08.Graph/05.Graph-Bipartite/index.md | 8 - Contents/08.Graph/index.md | 41 - .../02.Enumeration-Algorithm-List.md | 14 - .../01.Enumeration-Algorithm/index.md | 4 - .../02.Recursive-Algorithm-List.md | 21 - .../02.Recursive-Algorithm/index.md | 4 - .../02.Divide-And-Conquer-Algorithm-List.md | 13 - .../03.Divide-And-Conquer-Algorithm/index.md | 4 - .../02.Backtracking-Algorithm-List.md | 21 - .../04.Backtracking-Algorithm/index.md | 4 - .../02.Greedy-Algorithm-List.md | 29 - .../05.Greedy-Algorithm/index.md | 4 - .../06.Bit-Operation/02.Bit-Operation-List.md | 22 - .../06.Bit-Operation/index.md | 4 - Contents/09.Algorithm-Base/index.md | 31 - .../02.Dynamic-Programming-Basic-List.md | 8 - .../01.Dynamic-Programming-Basic/index.md | 4 - .../02.Memoization/02.Memoization-List.md | 14 - .../02.Memoization/index.md | 4 - .../03.Linear-DP/03.Linear-DP-List.md | 91 - .../03.Linear-DP/index.md | 5 - .../06.Knapsack-Problem-List.md | 39 - .../04.Knapsack-Problem/index.md | 8 - .../05.Interval-DP/02.Interval-DP-List.md | 19 - .../05.Interval-DP/index.md | 4 - .../06.Tree-DP/02.Tree-DP-List.md | 30 - .../06.Tree-DP/index.md | 4 - .../07.State-DP/02.State-DP-List.md | 26 - .../07.State-DP/index.md | 4 - .../08.Counting-DP/02.Counting-DP-List.md | 15 - .../08.Counting-DP/index.md | 4 - .../09.Digit-DP/02.Digit-DP-List.md | 18 - .../09.Digit-DP/index.md | 4 - .../02.Probability-DP-List.md | 13 - .../10.Probability-DP/index.md | 4 - .../01.Monotone-Stack-Queue-Optimization.md | 0 .../02.Slope-Optimization.md | 0 .../03.Quadrangle-Optimization.md | 0 .../04.DP-Optimization-List.md | 2 - .../11.DP-Optimization/index.md | 6 - Contents/10.Dynamic-Programming/index.md | 63 - Contents/index.md | 219 -- README.md | 263 +- ...0\346\200\201\350\247\204\345\210\222).md" | 65 - ...45\345\221\212\347\251\272\347\231\275.md" | 62 - .../python/01_array/array_maxheap.py | 0 .../python/01_array/array_sort_bubble_sort.py | 0 .../python/01_array/array_sort_bucket_sort.py | 0 .../01_array/array_sort_counting_sort.py | 0 .../01_array/array_sort_insertion_sort.py | 0 .../01_array/array_sort_maxheap_sort.py | 0 .../python/01_array/array_sort_merge_sort.py | 0 .../01_array/array_sort_minheap_sort.py | 0 .../python/01_array/array_sort_quick_sort.py | 0 .../python/01_array/array_sort_radix_sort.py | 0 .../01_array/array_sort_selection_sort.py | 0 .../python/01_array/array_sort_shell_sort.py | 0 .../python/02_linked_list/linked_list.py | 0 .../02_linked_list/linked_list_bubble_sort.py | 0 .../02_linked_list/linked_list_bucket_sort.py | 0 .../linked_list_counting_sort.py | 0 .../linked_list_insertion_sort.py | 0 .../02_linked_list/linked_list_merge_sort.py | 0 .../02_linked_list/linked_list_quick_sort.py | 0 .../02_linked_list/linked_list_radix_sort.py | 0 .../linked_list_section_sort.py | 0 .../queue_circularSequential_queue.py | 0 .../queue_link_queue.py | 0 .../queue_priority_queue.py | 0 .../queue_sequential_queue.py | 0 .../stack_link_stack.py | 0 .../stack_monotone_stack.py | 0 .../stack_sequential_stack.py | 0 .../python/04_string/string_Strcmp.py | 0 .../python/04_string/string_boyer_moore.py | 0 .../python/04_string/string_brute_force.py | 0 .../python/04_string/string_horspool.py | 0 .../python/04_string/string_kmp.py | 0 .../python/04_string/string_rabin_karp.py | 0 .../python/04_string/string_sunday.py | 0 .../python/04_string/string_trie.py | 0 .../python/05_tree/tree_binaryindexed_tree.py | 0 ...ee_dynamicSegmentTree_update_interval_1.py | 0 ...ee_dynamicSegmentTree_update_interval_2.py | 0 .../tree_segmentTree_update_interval_1.py | 0 .../tree_segmentTree_update_interval_2.py | 0 .../05_tree/tree_segmentTree_update_point.py | 0 .../python/05_tree/tree_unionFind.py | 0 .../05_tree/tree_unionFind_QuickFind.py | 0 .../05_tree/tree_unionFind_QuickUnion.py | 0 .../05_tree/tree_unionFind_UnoinByRank.py | 0 .../05_tree/tree_unionFind_UnoinBySize.py | 0 .../python/06_graph}/Graph-Adjacency-List.py | 0 .../06_graph}/Graph-Adjacency-Matrix.py | 0 .../python/06_graph}/Graph-BFS.py | 0 .../python/06_graph}/Graph-Bellman-Ford.py | 0 .../python/06_graph}/Graph-DFS.py | 0 .../python/06_graph}/Graph-Edgeset-Array.py | 0 .../python/06_graph}/Graph-Hash-Table.py | 0 .../python/06_graph}/Graph-Kruskal.py | 0 .../06_graph}/Graph-Linked-Forward-Star.py | 0 .../python/06_graph}/Graph-Prim.py | 0 .../Graph-Topological-Sorting-DFS.py | 0 .../Graph-Topological-Sorting-Kahn.py | 0 .../08_dynamic_programming}/Digit-DP.py | 0 .../Pack-2DCostPack.py | 0 .../Pack-CompletePack.py | 0 .../08_dynamic_programming}/Pack-GroupPack.py | 0 .../08_dynamic_programming}/Pack-MixedPack.py | 0 .../Pack-MultiplePack.py | 0 .../Pack-ProblemVariants.py | 0 .../Pack-ZeroOnePack.py | 0 docs/00_preface/00_01_about_the_book.md | 73 + .../00_02_data_structures_algorithms.md | 8 +- .../00_preface/00_03_algorithm_complexity.md | 23 +- .../00_preface/00_04_leetcode_guide.md | 90 +- docs/00_preface/00_05_solutions_list.md | 1036 ++++++ docs/00_preface/00_06_categories_list.md | 1166 ++++++ docs/00_preface/00_07_interview_100_list.md | 419 +++ docs/00_preface/00_08_interview_200_list.md | 598 ++++ docs/00_preface/index.md | 10 + .../01_array/01_01_array_basic.md | 8 +- docs/01_array/01_02_array_sort.md | 54 + .../01_array/01_03_array_bubble_sort.md | 10 + .../01_array/01_04_array_selection_sort.md | 5 + .../01_array/01_05_array_insertion_sort.md | 10 +- .../01_array/01_06_array_shell_sort.md | 10 +- .../01_array/01_07_array_merge_sort.md | 10 +- .../01_array/01_08_array_quick_sort.md | 10 + .../01_array/01_09_array_heap_sort.md | 10 + .../01_array/01_10_array_counting_sort.md | 10 +- .../01_array/01_11_array_bucket_sort.md | 10 +- .../01_array/01_12_array_radix_sort.md | 10 +- .../01_array/01_13_array_binary_search_01.md | 10 + .../01_array/01_14_array_binary_search_02.md | 22 + .../01_array/01_15_array_two_pointers.md | 2 + .../01_array/01_16_array_sliding_window.md | 161 +- docs/01_array/index.md | 18 + .../02_linked_list/02_01_linked_list_basic.md | 2 +- docs/02_linked_list/02_02_linked_list_sort.md | 51 + .../02_03_linked_list_bubble_sort.md | 51 + .../02_04_linked_list_selection_sort.md | 40 + .../02_05_linked_list_insertion_sort.md | 52 + .../02_06_linked_list_merge_sort.md | 63 + .../02_07_linked_list_quick_sort.md | 49 + .../02_08_linked_list_counting_sort.md | 54 + .../02_09_linked_list_bucket_sort.md | 111 + .../02_10_linked_list_radix_sort.md | 52 + .../02_11_linked_list_two_pointers.md | 0 docs/02_linked_list/index.md | 13 + .../03_01_stack_basic.md | 0 .../03_02_monotone_stack.md | 0 .../03_03_queue_basic.md | 0 .../03_04_priority_queue.md | 0 .../03_05_bidirectional_queue.md | 0 .../03_06_hash_table.md | 0 docs/03_stack_queue_hash_table/index.md | 8 + .../04_string/04_01_string_basic.md | 0 .../04_02_string_single_pattern_matching.md | 0 .../04_string/04_03_string_brute_force.md | 0 .../04_string/04_04_string_rabin_karp.md | 0 .../04_string/04_05_string_kmp.md | 0 .../04_string/04_06_string_boyer_moore.md | 0 .../04_string/04_07_string_horspool.md | 0 .../04_string/04_08_string_sunday.md | 0 .../04_09_string_multi_pattern_matching.md | 82 + .../04_string/04_10_trie.md | 0 .../04_string/04_11_ac_automaton.md | 0 .../04_string/04_12_suffix_array.md | 0 docs/04_string/index.md | 14 + .../05_tree/05_01_tree_basic.md | 0 .../05_tree/05_02_binary_tree_traverse.md | 0 .../05_tree/05_03_binary_tree_reduction.md | 0 .../05_tree/05_04_binary_search_tree.md | 0 .../05_tree/05_05_segment_tree_01.md | 189 - docs/05_tree/05_06_segment_tree_02.md | 199 ++ .../05_tree/05_07_binary_indexed_tree.md | 0 .../05_tree/05_08_union_find.md | 0 docs/05_tree/index.md | 10 + .../06_graph/06_01_graph_basic.md | 0 .../06_graph/06_02_graph_structure.md | 0 .../06_graph/06_03_graph_dfs.md | 0 .../06_graph/06_04_graph_bfs.md | 0 .../06_05_graph_topological_sorting.md | 0 .../06_06_graph_minimum_spanning_tree.md | 0 .../06_graph/06_07_graph_shortest_path_01.md | 0 .../06_graph/06_08_graph_shortest_path_02.md | 0 .../06_09_graph_multi_source_shortest_path.md | 0 .../06_10_graph_the_second_shortest_path.md | 2 +- ..._graph_system_of_difference_constraints.md | 0 .../06_graph/06_12_graph_bipartite_basic.md | 0 .../06_13_graph_bipartite_matching.md | 0 docs/06_graph/index.md | 15 + .../07_01_enumeration_algorithm.md | 0 .../07_algorithm/07_02_recursive_algorithm.md | 0 .../07_03_divide_and_conquer_algorithm.md | 0 .../07_04_backtracking_algorithm.md | 80 +- .../07_algorithm/07_05_greedy_algorithm.md | 0 .../07_algorithm/07_06_bit_operation.md | 0 docs/07_algorithm/index.md | 8 + .../08_01_dynamic_programming_basic.md | 0 .../08_02_memoization_search.md | 0 .../08_03_linear_dp_01.md | 0 .../08_04_linear_dp_02.md | 0 .../08_05_knapsack_problem_01.md | 0 .../08_06_knapsack_problem_02.md | 0 .../08_07_knapsack_problem_03.md | 0 .../08_08_knapsack_problem_04.md | 0 .../08_09_knapsack_problem_05.md | 0 .../08_10_interval_dp.md | 0 .../08_dynamic_programming/08_11_tree_dp.md | 0 .../08_12_state_compression_dp.md | 0 .../08_13_counting_dp.md | 0 .../08_dynamic_programming/08_14_digit_dp.md | 0 .../08_15_probability_dp.md | 0 docs/08_dynamic_programming/index.md | 17 + .../Root-Index-Head.md => docs/README.md | 4 +- docs/index.md | 71 + .../others/update_time.md | 0 .../solutions/0001-0099/3sum-closest.md | 0 .../solutions/0001-0099/3sum.md | 0 .../solutions/0001-0099/4sum.md | 0 .../solutions/0001-0099/add-binary.md | 0 .../solutions/0001-0099/add-two-numbers.md | 0 .../binary-tree-inorder-traversal.md | 0 .../solutions/0001-0099/climbing-stairs.md | 0 .../solutions/0001-0099/combination-sum-ii.md | 0 .../solutions/0001-0099/combination-sum.md | 0 .../solutions/0001-0099/combinations.md | 0 .../0001-0099/container-with-most-water.md | 0 .../solutions/0001-0099/count-and-say.md | 0 .../solutions/0001-0099/decode-ways.md | 0 .../0001-0099/divide-two-integers.md | 0 .../solutions/0001-0099/edit-distance.md | 0 ...ast-position-of-element-in-sorted-array.md | 0 ...dex-of-the-first-occurrence-in-a-string.md | 0 .../0001-0099/first-missing-positive.md | 0 .../0001-0099/generate-parentheses.md | 0 .../solutions/0001-0099/gray-code.md | 0 .../solutions/0001-0099/group-anagrams.md | 0 docs/solutions/0001-0099/index.md | 88 + .../solutions/0001-0099/integer-to-roman.md | 0 .../solutions/0001-0099/jump-game-ii.md | 0 .../solutions/0001-0099/jump-game.md | 0 .../largest-rectangle-in-histogram.md | 0 .../0001-0099/length-of-last-word.md | 0 .../letter-combinations-of-a-phone-number.md | 0 .../0001-0099/longest-common-prefix.md | 0 .../longest-palindromic-substring.md | 0 ...-substring-without-repeating-characters.md | 0 .../0001-0099/longest-valid-parentheses.md | 0 .../solutions/0001-0099/maximum-subarray.md | 0 .../0001-0099/median-of-two-sorted-arrays.md | 0 .../solutions/0001-0099/merge-intervals.md | 0 .../0001-0099/merge-k-sorted-lists.md | 0 .../solutions/0001-0099/merge-sorted-array.md | 0 .../0001-0099/merge-two-sorted-lists.md | 0 .../solutions/0001-0099/minimum-path-sum.md | 0 .../0001-0099/minimum-window-substring.md | 0 .../solutions/0001-0099/multiply-strings.md | 0 .../solutions/0001-0099/n-queens-ii.md | 13 +- .../solutions/0001-0099/n-queens.md | 13 +- .../solutions/0001-0099/palindrome-number.md | 0 .../solutions/0001-0099/permutations-ii.md | 0 .../solutions/0001-0099/permutations.md | 21 +- .../solutions/0001-0099/plus-one.md | 0 .../solutions/0001-0099/powx-n.md | 0 .../0001-0099/regular-expression-matching.md | 0 .../remove-duplicates-from-sorted-array-ii.md | 0 .../remove-duplicates-from-sorted-array.md | 0 .../remove-duplicates-from-sorted-list-ii.md | 0 .../remove-duplicates-from-sorted-list.md | 0 .../solutions/0001-0099/remove-element.md | 0 .../remove-nth-node-from-end-of-list.md | 0 .../0001-0099/restore-ip-addresses.md | 41 +- .../solutions/0001-0099/reverse-integer.md | 0 .../0001-0099/reverse-linked-list-ii.md | 0 .../0001-0099/reverse-nodes-in-k-group.md | 0 .../solutions/0001-0099/roman-to-integer.md | 0 .../solutions/0001-0099/rotate-image.md | 0 .../solutions/0001-0099/rotate-list.md | 0 .../solutions/0001-0099/search-a-2d-matrix.md | 0 .../search-in-rotated-sorted-array-ii.md | 0 .../search-in-rotated-sorted-array.md | 0 .../0001-0099/search-insert-position.md | 0 .../solutions/0001-0099/set-matrix-zeroes.md | 3 +- .../solutions/0001-0099/sort-colors.md | 0 .../solutions/0001-0099/spiral-matrix-ii.md | 0 .../solutions/0001-0099/spiral-matrix.md | 0 .../solutions/0001-0099/sqrtx.md | 0 .../0001-0099/string-to-integer-atoi.md | 0 .../solutions/0001-0099/subsets-ii.md | 0 .../solutions/0001-0099/subsets.md | 11 +- .../solutions/0001-0099/sudoku-solver.md | 0 .../0001-0099/swap-nodes-in-pairs.md | 0 .../0001-0099/trapping-rain-water.md | 0 .../solutions/0001-0099/two-sum.md | 0 .../unique-binary-search-trees-ii.md | 0 .../0001-0099/unique-binary-search-trees.md | 0 .../solutions/0001-0099/unique-paths-ii.md | 0 .../solutions/0001-0099/unique-paths.md | 0 .../solutions/0001-0099/valid-parentheses.md | 0 .../solutions/0001-0099/valid-sudoku.md | 0 .../0001-0099/validate-binary-search-tree.md | 0 .../solutions/0001-0099/wildcard-matching.md | 0 .../solutions/0001-0099/word-search.md | 0 .../0100-0199/balanced-binary-tree.md | 0 .../best-time-to-buy-and-sell-stock-ii.md | 0 .../best-time-to-buy-and-sell-stock-iii.md | 0 .../best-time-to-buy-and-sell-stock-iv.md | 0 .../best-time-to-buy-and-sell-stock.md | 0 .../0100-0199/binary-search-tree-iterator.md | 0 .../binary-tree-level-order-traversal-ii.md | 0 .../binary-tree-level-order-traversal.md | 0 .../0100-0199/binary-tree-maximum-path-sum.md | 0 .../binary-tree-postorder-traversal.md | 0 .../binary-tree-preorder-traversal.md | 0 .../0100-0199/binary-tree-right-side-view.md | 0 ...inary-tree-zigzag-level-order-traversal.md | 0 .../solutions/0100-0199/candy.md | 0 .../solutions/0100-0199/clone-graph.md | 0 ...ee-from-inorder-and-postorder-traversal.md | 0 ...ree-from-preorder-and-inorder-traversal.md | 0 ...vert-sorted-array-to-binary-search-tree.md | 0 .../copy-list-with-random-pointer.md | 4 +- .../0100-0199/distinct-subsequences.md | 0 .../evaluate-reverse-polish-notation.md | 0 .../0100-0199/excel-sheet-column-number.md | 0 .../0100-0199/excel-sheet-column-title.md | 4 +- .../0100-0199/factorial-trailing-zeroes.md | 0 ...find-minimum-in-rotated-sorted-array-ii.md | 0 .../find-minimum-in-rotated-sorted-array.md | 0 .../solutions/0100-0199/find-peak-element.md | 0 .../fraction-to-recurring-decimal.md | 0 .../solutions/0100-0199/gas-station.md | 0 .../solutions/0100-0199/house-robber.md | 0 docs/solutions/0100-0199/index.md | 72 + .../0100-0199/insertion-sort-list.md | 0 .../intersection-of-two-linked-lists.md | 0 .../solutions/0100-0199/largest-number.md | 0 .../0100-0199/linked-list-cycle-ii.md | 0 .../solutions/0100-0199/linked-list-cycle.md | 0 .../0100-0199/longest-consecutive-sequence.md | 0 ...ng-with-at-most-two-distinct-characters.md | 0 .../solutions/0100-0199/majority-element.md | 0 .../0100-0199/max-points-on-a-line.md | 0 .../0100-0199/maximum-depth-of-binary-tree.md | 0 .../solutions/0100-0199/maximum-gap.md | 0 .../0100-0199/maximum-product-subarray.md | 0 .../solutions/0100-0199/min-stack.md | 0 .../0100-0199/minimum-depth-of-binary-tree.md | 0 .../solutions/0100-0199/number-of-1-bits.md | 0 .../0100-0199/palindrome-partitioning.md | 0 .../0100-0199/pascals-triangle-ii.md | 0 .../solutions/0100-0199/pascals-triangle.md | 0 .../solutions/0100-0199/path-sum-ii.md | 0 .../solutions/0100-0199/path-sum.md | 0 ...ing-next-right-pointers-in-each-node-ii.md | 0 ...lating-next-right-pointers-in-each-node.md | 0 .../solutions/0100-0199/reorder-list.md | 0 .../solutions/0100-0199/reverse-bits.md | 0 .../0100-0199/reverse-words-in-a-string.md | 0 .../solutions/0100-0199/rotate-array.md | 0 .../solutions/0100-0199/same-tree.md | 0 .../solutions/0100-0199/single-number-ii.md | 0 .../solutions/0100-0199/single-number.md | 0 .../solutions/0100-0199/sort-list.md | 0 .../0100-0199/sum-root-to-leaf-numbers.md | 0 .../solutions/0100-0199/surrounded-regions.md | 0 .../solutions/0100-0199/symmetric-tree.md | 0 .../solutions/0100-0199/triangle.md | 0 .../two-sum-ii-input-array-is-sorted.md | 0 .../two-sum-iii-data-structure-design.md | 0 .../solutions/0100-0199/valid-palindrome.md | 0 .../solutions/0100-0199/word-break-ii.md | 0 .../solutions/0100-0199/word-break.md | 0 .../solutions/0100-0199/word-ladder.md | 0 .../solutions/0200-0299/3sum-smaller.md | 0 .../solutions/0200-0299/add-digits.md | 0 .../0200-0299/basic-calculator-ii.md | 0 .../solutions/0200-0299/binary-tree-paths.md | 0 .../0200-0299/bitwise-and-of-numbers-range.md | 0 .../closest-binary-search-tree-value.md | 0 .../0200-0299/contains-duplicate-ii.md | 0 .../0200-0299/contains-duplicate-iii.md | 0 .../solutions/0200-0299/contains-duplicate.md | 0 .../0200-0299/count-complete-tree-nodes.md | 0 .../solutions/0200-0299/count-primes.md | 0 .../solutions/0200-0299/course-schedule-ii.md | 0 .../solutions/0200-0299/course-schedule.md | 0 .../0200-0299/delete-node-in-a-linked-list.md | 0 ...ign-add-and-search-words-data-structure.md | 0 .../different-ways-to-add-parentheses.md | 0 .../0200-0299/find-median-from-data-stream.md | 0 .../0200-0299/find-the-duplicate-number.md | 0 .../solutions/0200-0299/first-bad-version.md | 0 .../solutions/0200-0299/game-of-life.md | 0 .../0200-0299/group-shifted-strings.md | 0 .../solutions/0200-0299/happy-number.md | 0 .../solutions/0200-0299/house-robber-ii.md | 0 .../0200-0299/implement-queue-using-stacks.md | 0 .../0200-0299/implement-stack-using-queues.md | 0 .../0200-0299/implement-trie-prefix-tree.md | 0 docs/solutions/0200-0299/index.md | 60 + .../0200-0299/inorder-successor-in-bst.md | 0 .../solutions/0200-0299/invert-binary-tree.md | 0 .../solutions/0200-0299/isomorphic-strings.md | 0 .../kth-largest-element-in-an-array.md | 0 ...common-ancestor-of-a-binary-search-tree.md | 0 ...lowest-common-ancestor-of-a-binary-tree.md | 0 .../solutions/0200-0299/maximal-square.md | 0 .../0200-0299/minimum-size-subarray-sum.md | 0 .../solutions/0200-0299/missing-number.md | 0 .../solutions/0200-0299/move-zeroes.md | 0 .../solutions/0200-0299/nim-game.md | 0 .../0200-0299/number-of-digit-one.md | 0 .../solutions/0200-0299/number-of-islands.md | 0 .../0200-0299/palindrome-linked-list.md | 0 .../solutions/0200-0299/perfect-squares.md | 0 .../solutions/0200-0299/power-of-two.md | 0 .../0200-0299/product-of-array-except-self.md | 0 .../solutions/0200-0299/rectangle-area.md | 0 .../0200-0299/remove-linked-list-elements.md | 0 .../0200-0299/reverse-linked-list.md | 0 .../0200-0299/search-a-2d-matrix-ii.md | 0 .../serialize-and-deserialize-binary-tree.md | 0 .../solutions/0200-0299/single-number-iii.md | 0 .../0200-0299/sliding-window-maximum.md | 0 .../0200-0299/the-skyline-problem.md | 0 .../solutions/0200-0299/ugly-number-ii.md | 0 .../solutions/0200-0299/ugly-number.md | 0 .../0200-0299/unique-word-abbreviation.md | 0 .../solutions/0200-0299/valid-anagram.md | 0 .../solutions/0200-0299/walls-and-gates.md | 0 .../solutions/0200-0299/word-pattern.md | 0 .../solutions/0200-0299/word-search-ii.md | 0 .../0300-0399/android-unlock-patterns.md | 3 +- ...ime-to-buy-and-sell-stock-with-cooldown.md | 4 +- .../solutions/0300-0399/burst-balloons.md | 0 .../solutions/0300-0399/coin-change.md | 0 .../solutions/0300-0399/combination-sum-iv.md | 0 .../count-numbers-with-unique-digits.md | 0 .../count-of-smaller-numbers-after-self.md | 0 .../solutions/0300-0399/counting-bits.md | 0 .../solutions/0300-0399/decode-string.md | 0 .../solutions/0300-0399/evaluate-division.md | 0 .../0300-0399/find-the-difference.md | 0 .../first-unique-character-in-a-string.md | 0 .../0300-0399/flatten-nested-list-iterator.md | 0 .../guess-number-higher-or-lower-ii.md | 0 .../0300-0399/guess-number-higher-or-lower.md | 0 .../solutions/0300-0399/house-robber-iii.md | 0 .../increasing-triplet-subsequence.md | 0 docs/solutions/0300-0399/index.md | 56 + .../0300-0399/insert-delete-getrandom-o1.md | 0 .../solutions/0300-0399/integer-break.md | 0 .../intersection-of-two-arrays-ii.md | 0 .../0300-0399/intersection-of-two-arrays.md | 0 .../solutions/0300-0399/is-subsequence.md | 0 ...kth-smallest-element-in-a-sorted-matrix.md | 0 .../0300-0399/lexicographical-numbers.md | 0 .../0300-0399/logger-rate-limiter.md | 0 .../longest-increasing-path-in-a-matrix.md | 0 .../longest-increasing-subsequence.md | 0 ...ng-with-at-least-k-repeating-characters.md | 0 ...ring-with-at-most-k-distinct-characters.md | 0 .../maximum-product-of-word-lengths.md | 0 .../0300-0399/minimum-height-trees.md | 0 .../moving-average-from-data-stream.md | 0 ...ected-components-in-an-undirected-graph.md | 0 .../0300-0399/odd-even-linked-list.md | 0 .../solutions/0300-0399/palindrome-pairs.md | 0 .../solutions/0300-0399/perfect-rectangle.md | 0 .../solutions/0300-0399/power-of-four.md | 0 .../solutions/0300-0399/power-of-three.md | 0 .../solutions/0300-0399/range-addition.md | 0 .../0300-0399/range-sum-query-2d-immutable.md | 0 .../0300-0399/range-sum-query-immutable.md | 0 .../0300-0399/range-sum-query-mutable.md | 0 .../solutions/0300-0399/ransom-note.md | 0 .../0300-0399/remove-duplicate-letters.md | 0 .../solutions/0300-0399/reverse-string.md | 0 .../0300-0399/reverse-vowels-of-a-string.md | 0 .../0300-0399/russian-doll-envelopes.md | 0 .../solutions/0300-0399/shuffle-an-array.md | 0 .../0300-0399/sort-transformed-array.md | 0 .../0300-0399/sum-of-two-integers.md | 0 .../0300-0399/top-k-frequent-elements.md | 0 .../0300-0399/valid-perfect-square.md | 0 .../solutions/0300-0399/wiggle-sort-ii.md | 0 .../solutions/0300-0399/wiggle-subsequence.md | 0 .../solutions/0400-0499/4sum-ii.md | 0 .../solutions/0400-0499/add-strings.md | 0 .../solutions/0400-0499/add-two-numbers-ii.md | 0 .../solutions/0400-0499/assign-cookies.md | 0 .../solutions/0400-0499/can-i-win.md | 0 .../convert-a-number-to-hexadecimal.md | 0 ...earch-tree-to-sorted-doubly-linked-list.md | 0 .../0400-0499/delete-node-in-a-bst.md | 0 .../solutions/0400-0499/diagonal-traverse.md | 0 .../find-all-anagrams-in-a-string.md | 0 .../solutions/0400-0499/fizz-buzz.md | 0 ...flatten-a-multilevel-doubly-linked-list.md | 0 .../solutions/0400-0499/frog-jump.md | 0 .../solutions/0400-0499/hamming-distance.md | 0 docs/solutions/0400-0499/index.md | 47 + .../solutions/0400-0499/island-perimeter.md | 0 .../solutions/0400-0499/longest-palindrome.md | 0 ...longest-repeating-character-replacement.md | 0 .../0400-0499/matchsticks-to-square.md | 0 .../0400-0499/max-consecutive-ones-ii.md | 0 .../0400-0499/max-consecutive-ones.md | 0 .../maximum-xor-of-two-numbers-in-an-array.md | 0 ...imum-number-of-arrows-to-burst-balloons.md | 0 .../n-ary-tree-level-order-traversal.md | 0 .../0400-0499/next-greater-element-i.md | 0 .../0400-0499/non-decreasing-subsequences.md | 4 +- .../0400-0499/non-overlapping-intervals.md | 0 .../solutions/0400-0499/nth-digit.md | 0 .../0400-0499/number-of-boomerangs.md | 0 .../solutions/0400-0499/ones-and-zeroes.md | 0 .../0400-0499/pacific-atlantic-water-flow.md | 0 .../0400-0499/partition-equal-subset-sum.md | 0 .../solutions/0400-0499/path-sum-iii.md | 0 .../solutions/0400-0499/predict-the-winner.md | 0 .../queue-reconstruction-by-height.md | 0 .../0400-0499/repeated-substring-pattern.md | 0 .../serialize-and-deserialize-n-ary-tree.md | 0 .../0400-0499/sliding-window-median.md | 0 .../0400-0499/sort-characters-by-frequency.md | 0 .../0400-0499/split-array-largest-sum.md | 0 .../solutions/0400-0499/string-compression.md | 0 .../solutions/0400-0499/sum-of-left-leaves.md | 0 .../solutions/0400-0499/target-sum.md | 0 .../unique-substrings-in-wraparound-string.md | 0 .../0400-0499/validate-ip-address.md | 0 .../solutions/0400-0499/word-squares.md | 0 .../solutions/0500-0599/01-matrix.md | 0 .../solutions/0500-0599/array-partition.md | 0 .../solutions/0500-0599/base-7.md | 0 .../0500-0599/beautiful-arrangement.md | 0 .../solutions/0500-0599/coin-change-ii.md | 0 .../solutions/0500-0599/contiguous-array.md | 0 .../0500-0599/convert-bst-to-greater-tree.md | 0 .../delete-operation-for-two-strings.md | 0 .../0500-0599/diameter-of-binary-tree.md | 0 .../solutions/0500-0599/distribute-candies.md | 0 .../solutions/0500-0599/fibonacci-number.md | 0 .../0500-0599/find-bottom-left-tree-value.md | 0 .../find-largest-value-in-each-tree-row.md | 0 .../find-mode-in-binary-search-tree.md | 0 docs/solutions/0500-0599/index.md | 30 + .../longest-palindromic-subsequence.md | 0 .../minimum-absolute-difference-in-bst.md | 0 .../minimum-index-sum-of-two-lists.md | 0 .../0500-0599/minimum-time-difference.md | 0 .../n-ary-tree-postorder-traversal.md | 0 .../n-ary-tree-preorder-traversal.md | 0 .../0500-0599/next-greater-element-ii.md | 0 .../0500-0599/number-of-provinces.md | 0 .../0500-0599/out-of-boundary-paths.md | 0 .../0500-0599/permutation-in-string.md | 0 .../solutions/0500-0599/relative-ranks.md | 0 .../solutions/0500-0599/remove-boxes.md | 0 .../reverse-words-in-a-string-iii.md | 0 .../0500-0599/subarray-sum-equals-k.md | 0 .../solutions/0600-0699/2-keys-keyboard.md | 4 +- .../0600-0699/add-bold-tag-in-string.md | 0 .../solutions/0600-0699/decode-ways-ii.md | 0 .../0600-0699/design-circular-queue.md | 0 .../design-search-autocomplete-system.md | 0 .../0600-0699/employee-importance.md | 0 .../0600-0699/find-duplicate-subtrees.md | 0 .../0600-0699/find-k-closest-elements.md | 0 .../0600-0699/implement-magic-dictionary.md | 0 docs/solutions/0600-0699/index.md | 38 + .../solutions/0600-0699/k-empty-slots.md | 0 .../knight-probability-in-chessboard.md | 0 ...ngest-continuous-increasing-subsequence.md | 0 .../0600-0699/longest-univalue-path.md | 0 .../solutions/0600-0699/map-sum-pairs.md | 0 .../solutions/0600-0699/max-area-of-island.md | 0 .../0600-0699/maximum-average-subarray-i.md | 0 .../0600-0699/maximum-binary-tree.md | 0 .../0600-0699/maximum-width-of-binary-tree.md | 0 .../0600-0699/merge-two-binary-trees.md | 0 .../0600-0699/non-decreasing-array.md | 0 ...ative-integers-without-consecutive-ones.md | 0 ...umber-of-longest-increasing-subsequence.md | 0 .../0600-0699/palindromic-substrings.md | 0 .../partition-to-k-equal-sum-subsets.md | 0 .../0600-0699/redundant-connection.md | 0 .../0600-0699/repeated-string-match.md | 0 .../solutions/0600-0699/replace-words.md | 0 .../0600-0699/stickers-to-spell-word.md | 0 .../solutions/0600-0699/strange-printer.md | 0 .../0600-0699/sum-of-square-numbers.md | 0 .../solutions/0600-0699/task-scheduler.md | 0 .../0600-0699/trim-a-binary-search-tree.md | 0 .../0600-0699/two-sum-iv-input-is-a-bst.md | 0 .../0600-0699/valid-palindrome-ii.md | 0 .../0600-0699/valid-parenthesis-string.md | 0 .../0600-0699/valid-triangle-number.md | 0 .../all-paths-from-source-to-target.md | 0 .../solutions/0700-0799/asteroid-collision.md | 4 +- ...buy-and-sell-stock-with-transaction-fee.md | 0 .../solutions/0700-0799/binary-search.md | 0 .../0700-0799/bold-words-in-string.md | 0 .../0700-0799/couples-holding-hands.md | 0 .../solutions/0700-0799/daily-temperatures.md | 0 .../solutions/0700-0799/design-hashmap.md | 0 .../solutions/0700-0799/design-hashset.md | 0 .../solutions/0700-0799/design-linked-list.md | 0 .../find-k-th-smallest-pair-distance.md | 0 .../solutions/0700-0799/find-pivot-index.md | 0 ...ind-smallest-letter-greater-than-target.md | 0 .../solutions/0700-0799/flood-fill.md | 0 docs/solutions/0700-0799/index.md | 44 + .../insert-into-a-binary-search-tree.md | 0 ...sert-into-a-sorted-circular-linked-list.md | 0 .../solutions/0700-0799/is-graph-bipartite.md | 0 .../solutions/0700-0799/jewels-and-stones.md | 0 .../0700-0799/k-th-symbol-in-grammar.md | 0 .../kth-largest-element-in-a-stream.md | 0 .../0700-0799/letter-case-permutation.md | 0 .../0700-0799/longest-word-in-dictionary.md | 0 .../maximum-length-of-repeated-subarray.md | 0 .../0700-0799/min-cost-climbing-stairs.md | 0 .../minimum-distance-between-bst-nodes.md | 0 .../0700-0799/minimum-window-subsequence.md | 0 .../0700-0799/monotone-increasing-digits.md | 0 .../solutions/0700-0799/my-calendar-i.md | 0 .../solutions/0700-0799/my-calendar-ii.md | 0 .../solutions/0700-0799/my-calendar-iii.md | 0 ...umber-of-subarrays-with-bounded-maximum.md | 0 .../solutions/0700-0799/open-the-lock.md | 0 .../solutions/0700-0799/partition-labels.md | 0 .../solutions/0700-0799/range-module.md | 0 .../solutions/0700-0799/rotate-string.md | 0 .../solutions/0700-0799/rotated-digits.md | 0 .../search-in-a-binary-search-tree.md | 0 ...earch-in-a-sorted-array-of-unknown-size.md | 0 .../0700-0799/subarray-product-less-than-k.md | 0 .../0700-0799/swim-in-rising-water.md | 0 .../solutions/0700-0799/to-lower-case.md | 0 .../solutions/0700-0799/toeplitz-matrix.md | 0 .../0800-0899/backspace-string-compare.md | 0 .../solutions/0800-0899/binary-gap.md | 0 .../0800-0899/binary-tree-pruning.md | 0 .../0800-0899/boats-to-save-people.md | 0 .../0800-0899/bricks-falling-when-hit.md | 0 ...e-from-preorder-and-postorder-traversal.md | 0 .../0800-0899/find-eventual-safe-states.md | 0 .../solutions/0800-0899/flipping-an-image.md | 0 .../solutions/0800-0899/goat-latin.md | 0 .../solutions/0800-0899/hand-of-straights.md | 0 .../0800-0899/increasing-order-search-tree.md | 0 docs/solutions/0800-0899/index.md | 43 + .../solutions/0800-0899/keys-and-rooms.md | 0 .../0800-0899/koko-eating-bananas.md | 0 .../solutions/0800-0899/leaf-similar-trees.md | 0 .../solutions/0800-0899/lemonade-change.md | 0 ...length-of-longest-fibonacci-subsequence.md | 0 .../0800-0899/longest-mountain-in-array.md | 0 .../solutions/0800-0899/loud-and-rich.md | 0 .../0800-0899/middle-of-the-linked-list.md | 0 ...imum-swaps-to-make-sequences-increasing.md | 0 .../solutions/0800-0899/most-common-word.md | 0 .../number-of-lines-to-write-string.md | 0 .../peak-index-in-a-mountain-array.md | 0 .../0800-0899/positions-of-large-groups.md | 0 .../0800-0899/possible-bipartition.md | 0 .../solutions/0800-0899/rectangle-area-ii.md | 0 .../solutions/0800-0899/rectangle-overlap.md | 0 .../0800-0899/score-after-flipping-matrix.md | 0 .../0800-0899/short-encoding-of-words.md | 0 .../shortest-distance-to-a-character.md | 0 .../shortest-path-visiting-all-nodes.md | 0 .../shortest-subarray-with-sum-at-least-k.md | 0 .../solutions/0800-0899/similar-rgb-color.md | 0 .../solutions/0800-0899/stone-game.md | 0 .../0800-0899/subdomain-visit-count.md | 0 .../0800-0899/sum-of-distances-in-tree.md | 0 .../solutions/0800-0899/super-egg-drop.md | 0 .../0800-0899/surface-area-of-3d-shapes.md | 0 .../solutions/0800-0899/transpose-matrix.md | 0 .../uncommon-words-from-two-sentences.md | 0 .../0800-0899/unique-morse-code-words.md | 0 .../0900-0999/available-captures-for-rook.md | 0 .../solutions/0900-0999/beautiful-array.md | 0 .../0900-0999/binary-tree-cameras.md | 0 .../check-completeness-of-a-binary-tree.md | 0 .../complete-binary-tree-inserter.md | 0 .../0900-0999/cousins-in-binary-tree.md | 0 .../solutions/0900-0999/fruit-into-baskets.md | 0 docs/solutions/0900-0999/index.md | 33 + .../0900-0999/k-closest-points-to-origin.md | 0 .../solutions/0900-0999/knight-dialer.md | 0 .../0900-0999/largest-perimeter-triangle.md | 0 .../solutions/0900-0999/long-pressed-name.md | 0 .../0900-0999/longest-turbulent-subarray.md | 0 .../maximum-sum-circular-subarray.md | 0 .../minimum-add-to-make-parentheses-valid.md | 0 ...nimum-number-of-k-consecutive-bit-flips.md | 0 ...-stones-removed-with-same-row-or-column.md | 0 .../0900-0999/number-of-recent-calls.md | 0 .../numbers-at-most-n-given-digit-set.md | 0 .../solutions/0900-0999/online-stock-span.md | 0 .../solutions/0900-0999/range-sum-of-bst.md | 0 .../0900-0999/regions-cut-by-slashes.md | 0 .../solutions/0900-0999/rle-iterator.md | 0 .../satisfiability-of-equality-equations.md | 0 .../solutions/0900-0999/smallest-range-i.md | 0 .../solutions/0900-0999/sort-an-array.md | 0 .../0900-0999/squares-of-a-sorted-array.md | 0 .../0900-0999/subarray-sums-divisible-by-k.md | 0 .../subarrays-with-k-different-integers.md | 0 .../triples-with-bitwise-and-equal-to-zero.md | 0 .../0900-0999/validate-stack-sequences.md | 0 .../verifying-an-alien-dictionary.md | 0 .../1000-1099/best-sightseeing-pair.md | 0 .../binary-search-tree-to-greater-sum-tree.md | 0 .../solutions/1000-1099/camelcase-matching.md | 0 ...capacity-to-ship-packages-within-d-days.md | 0 .../solutions/1000-1099/coloring-a-border.md | 0 .../complement-of-base-10-integer.md | 0 ...ary-search-tree-from-preorder-traversal.md | 0 .../solutions/1000-1099/divisor-game.md | 0 .../solutions/1000-1099/duplicate-zeros.md | 0 .../1000-1099/find-common-characters.md | 0 .../1000-1099/find-in-mountain-array.md | 0 .../1000-1099/grumpy-bookstore-owner.md | 0 .../solutions/1000-1099/height-checker.md | 0 .../1000-1099/index-pairs-of-a-string.md | 0 docs/solutions/1000-1099/index.md | 34 + .../1000-1099/last-stone-weight-ii.md | 0 .../1000-1099/letter-tile-possibilities.md | 0 .../1000-1099/max-consecutive-ones-iii.md | 0 ...maximize-sum-of-array-after-k-negations.md | 0 .../1000-1099/minimum-cost-to-merge-stones.md | 0 .../minimum-score-triangulation-of-polygon.md | 0 .../solutions/1000-1099/number-of-enclaves.md | 0 .../1000-1099/numbers-with-repeated-digits.md | 0 .../recover-a-tree-from-preorder-traversal.md | 0 ...emove-all-adjacent-duplicates-in-string.md | 0 .../1000-1099/remove-outermost-parentheses.md | 0 .../1000-1099/robot-bounded-in-circle.md | 0 .../shortest-path-in-binary-matrix.md | 0 ...lest-subsequence-of-distinct-characters.md | 0 .../1000-1099/two-city-scheduling.md | 0 .../1000-1099/two-sum-less-than-k.md | 0 .../solutions/1000-1099/uncrossed-lines.md | 0 .../solutions/1000-1099/valid-boomerang.md | 0 .../1100-1199/corporate-flight-bookings.md | 0 .../1100-1199/defanging-an-ip-address.md | 0 .../delete-nodes-and-return-forest.md | 0 .../1100-1199/diet-plan-performance.md | 0 .../1100-1199/distance-between-bus-stops.md | 0 .../1100-1199/distribute-candies-to-people.md | 0 ...-substrings-with-no-repeated-characters.md | 0 docs/solutions/1100-1199/index.md | 16 + .../1100-1199/longest-common-subsequence.md | 0 .../maximum-level-sum-of-a-binary-tree.md | 0 .../minimum-swaps-to-group-all-1s-together.md | 0 .../1100-1199/n-th-tribonacci-number.md | 0 .../number-of-dice-rolls-with-target-sum.md | 0 .../solutions/1100-1199/parallel-courses.md | 0 .../1100-1199/relative-sort-array.md | 0 .../airplane-seat-assignment-probability.md | 0 .../check-if-it-is-a-straight-line.md | 0 .../1200-1299/count-vowels-permutation.md | 0 ...-array-in-sets-of-k-consecutive-numbers.md | 0 ...-elements-in-a-contaminated-binary-tree.md | 0 .../get-equal-substrings-within-budget.md | 0 docs/solutions/1200-1299/index.md | 18 + .../solutions/1200-1299/meeting-scheduler.md | 0 ...cost-to-move-chips-to-the-same-position.md | 0 .../minimum-swaps-to-make-strings-equal.md | 0 .../minimum-time-visiting-all-points.md | 0 .../1200-1299/number-of-closed-islands.md | 0 .../reconstruct-a-2-row-binary-matrix.md | 0 .../1200-1299/search-suggestions-system.md | 0 .../1200-1299/smallest-string-with-swaps.md | 0 ...product-and-sum-of-digits-of-an-integer.md | 0 .../solutions/1200-1299/tree-diameter.md | 0 ...all-elements-in-two-binary-search-trees.md | 0 .../angle-between-hands-of-a-clock.md | 0 .../solutions/1300-1399/closest-divisors.md | 0 ...eger-to-the-sum-of-two-no-zero-integers.md | 0 .../decompress-run-length-encoded-list.md | 0 ...design-a-stack-with-increment-operation.md | 0 docs/solutions/1300-1399/index.md | 17 + .../1300-1399/maximum-students-taking-exam.md | 0 ...er-of-steps-to-make-two-strings-anagram.md | 0 ...of-operations-to-make-network-connected.md | 0 ...rage-greater-than-or-equal-to-threshold.md | 0 ...strings-containing-all-three-characters.md | 0 .../1300-1399/print-words-vertically.md | 0 .../reduce-array-size-to-the-half.md | 0 .../sum-of-mutated-array-closest-to-target.md | 0 .../1300-1399/xor-queries-of-a-subarray.md | 0 ...xcluding-the-minimum-and-maximum-salary.md | 0 .../1400-1499/consecutive-characters.md | 0 .../construct-k-palindrome-strings.md | 0 ...teger-with-digits-that-add-up-to-target.md | 0 docs/solutions/1400-1499/index.md | 20 + ...solute-diff-less-than-or-equal-to-limit.md | 0 ...barray-of-1s-after-deleting-one-element.md | 0 ...f-vowels-in-a-substring-of-given-length.md | 0 ...aximum-points-you-can-obtain-from-cards.md | 0 .../maximum-score-after-splitting-a-string.md | 0 ...nimum-number-of-days-to-make-m-bouquets.md | 0 ...students-doing-homework-at-a-given-time.md | 0 .../solutions/1400-1499/path-crossing.md | 0 .../rearrange-words-in-a-sentence.md | 0 .../1400-1499/running-sum-of-1d-array.md | 0 .../1400-1499/simplified-fractions.md | 0 .../1400-1499/string-matching-in-an-array.md | 0 .../1400-1499/subrectangle-queries.md | 0 .../1400-1499/xor-operation-in-an-array.md | 0 ...ke-arithmetic-progression-from-sequence.md | 0 .../1500-1599/count-good-triplets.md | 0 .../count-odd-numbers-in-an-interval-range.md | 0 docs/solutions/1500-1599/index.md | 15 + ...ength-of-subarray-with-positive-product.md | 0 .../maximum-number-of-coins-you-can-get.md | 0 .../min-cost-to-connect-all-points.md | 0 ...um-cost-to-connect-two-groups-of-points.md | 0 .../1500-1599/minimum-cost-to-cut-a-stick.md | 0 .../minimum-operations-to-make-array-equal.md | 0 .../solutions/1500-1599/reformat-date.md | 0 .../special-positions-in-a-binary-matrix.md | 0 ...nto-the-max-number-of-unique-substrings.md | 0 .../solutions/1500-1599/thousand-separator.md | 0 .../1600-1699/count-sorted-vowel-strings.md | 0 ...btrees-with-max-distance-between-cities.md | 0 .../1600-1699/design-parking-system.md | 0 .../determine-if-two-strings-are-close.md | 0 ...-valid-matrix-given-row-and-column-sums.md | 0 .../get-maximum-in-generated-array.md | 0 docs/solutions/1600-1699/index.md | 15 + .../1600-1699/maximum-erasure-value.md | 0 ...aximum-nesting-depth-of-the-parentheses.md | 0 ...ns-to-make-character-frequencies-unique.md | 0 .../minimum-operations-to-reduce-x-to-zero.md | 0 ...mber-of-distinct-substrings-in-a-string.md | 0 .../1600-1699/path-with-minimum-effort.md | 0 .../1600-1699/richest-customer-wealth.md | 0 .../calculate-money-in-leetcode-bank.md | 0 ...-one-string-swap-can-make-strings-equal.md | 0 .../solutions/1700-1799/decode-xored-array.md | 0 .../1700-1799/find-center-of-star-graph.md | 0 ...int-that-has-the-same-x-or-y-coordinate.md | 0 docs/solutions/1700-1799/index.md | 13 + .../latest-time-by-replacing-hidden-digits.md | 0 .../1700-1799/longest-nice-substring.md | 0 .../maximum-absolute-sum-of-any-subarray.md | 0 .../maximum-number-of-balls-in-a-box.md | 0 .../1700-1799/maximum-units-on-a-truck.md | 0 .../1700-1799/tuple-with-same-product.md | 0 ...all-the-integers-in-a-range-are-covered.md | 0 docs/solutions/1800-1899/index.md | 13 + .../longest-word-with-all-prefixes.md | 0 .../1800-1899/maximum-ice-cream-bars.md | 0 .../minimize-maximum-pair-sum-in-array.md | 0 ...operations-to-make-the-array-increasing.md | 0 .../minimum-xor-sum-of-two-arrays.md | 0 ...te-characters-to-make-all-strings-equal.md | 0 .../replace-all-digits-with-characters.md | 0 .../sign-of-the-product-of-an-array.md | 0 .../1800-1899/sorting-the-sentence.md | 0 ...-of-size-three-with-distinct-characters.md | 0 .../1900-1999/add-minimum-number-of-rungs.md | 0 ...acters-have-equal-number-of-occurrences.md | 0 .../1900-1999/concatenation-of-array.md | 0 .../1900-1999/count-square-sum-triples.md | 0 .../eliminate-maximum-number-of-monsters.md | 0 .../find-the-middle-index-in-array.md | 0 docs/solutions/1900-1999/index.md | 14 + .../1900-1999/largest-odd-number-in-string.md | 0 .../maximum-compatibility-score-sum.md | 0 ...-between-highest-and-lowest-of-k-scores.md | 0 ...er-of-work-sessions-to-finish-the-tasks.md | 0 .../1900-1999/the-number-of-good-subsets.md | 0 ...nique-length-3-palindromic-subsequences.md | 0 ...of-variable-after-performing-operations.md | 0 docs/solutions/2000-2099/index.md | 5 + ...ings-with-concatenation-equal-to-target.md | 0 .../2000-2099/parallel-courses-iii.md | 0 .../find-substring-with-given-hash-value.md | 0 docs/solutions/2100-2199/index.md | 4 + .../2100-2199/maximum-and-sum-of-array.md | 0 .../solutions/2200-2299/add-two-integers.md | 0 .../2200-2299/count-integers-in-intervals.md | 0 .../count-lattice-points-inside-a-circle.md | 0 docs/solutions/2200-2299/index.md | 6 + ...path-with-different-adjacent-characters.md | 0 .../2300-2399/count-special-integers.md | 0 docs/solutions/2300-2399/index.md | 3 + docs/solutions/2400-2499/index.md | 3 + .../2400-2499/number-of-common-factors.md | 0 ...e-between-maximum-and-minimum-price-sum.md | 0 docs/solutions/2500-2599/index.md | 4 + .../number-of-ways-to-earn-points.md | 0 .../solutions/2700-2799/count-of-integers.md | 0 docs/solutions/2700-2799/index.md | 3 + .../solutions/Interviews/bracket-lcci.md | 0 .../solutions/Interviews/calculator-lcci.md | 0 .../solutions/Interviews/color-fill-lcci.md | 0 .../solutions/Interviews/eight-queens-lcci.md | 0 .../Interviews/factorial-zeros-lcci.md | 0 .../Interviews/first-common-ancestor-lcci.md | 0 .../Interviews/group-anagrams-lcci.md | 0 .../implement-queue-using-stacks-lcci.md | 0 docs/solutions/Interviews/index.md | 32 + .../intersection-of-two-linked-lists-lcci.md | 0 .../kth-node-from-end-of-list-lcci.md | 0 .../legal-binary-search-tree-lcci.md | 0 .../Interviews/linked-list-cycle-lcci.md | 0 .../solutions/Interviews/longest-word-lcci.md | 0 .../solutions/Interviews/min-stack-lcci.md | 0 .../Interviews/minimum-height-tree-lcci.md | 0 .../solutions/Interviews/multi-search-lcci.md | 0 .../Interviews/number-of-2s-in-range-lcci.md | 0 .../Interviews/palindrome-linked-list-lcci.md | 0 .../Interviews/paths-with-sum-lcci.md | 0 .../Interviews/permutation-i-lcci.md | 0 .../Interviews/permutation-ii-lcci.md | 0 .../solutions/Interviews/power-set-lcci.md | 0 .../Interviews/rotate-matrix-lcci.md | 0 .../solutions/Interviews/smallest-k-lcci.md | 0 .../Interviews/sorted-matrix-search-lcci.md | 0 .../solutions/Interviews/sorted-merge-lcci.md | 0 .../solutions/Interviews/successor-lcci.md | 0 .../solutions/Interviews/sum-lists-lcci.md | 0 .../Interviews/words-frequency-lcci.md | 0 .../solutions/Interviews/zero-matrix-lcci.md | 0 .../solutions/LCR/0H97ZC.md | 4 +- .../solutions/LCR/0on3uN.md | 4 +- .../solutions/LCR/0ynMMM.md | 4 +- .../solutions/LCR/1fGaJU.md | 4 +- .../solutions/LCR/21dk04.md | 4 +- .../solutions/LCR/2AoeFn.md | 4 +- .../solutions/LCR/2VG8Kg.md | 4 +- .../solutions/LCR/2bCMpM.md | 4 +- .../solutions/LCR/3Etpl5.md | 4 +- .../solutions/LCR/3u1WK4.md | 4 +- .../solutions/LCR/4sjJUc.md | 4 +- .../solutions/LCR/4ueAj6.md | 4 +- .../solutions/LCR/569nqc.md | 4 +- .../solutions/LCR/6eUYwP.md | 4 +- .../solutions/LCR/7LpjUW.md | 4 +- .../solutions/LCR/7WHec2.md | 4 +- .../solutions/LCR/7WqeDu.md | 4 +- .../solutions/LCR/7p8L0Z.md | 6 +- .../solutions/LCR/8Zf90G.md | 4 +- .../solutions/LCR/A1NYOS.md | 4 +- .../solutions/LCR/D0F0SV.md | 4 +- .../solutions/LCR/FortPu.md | 4 +- .../solutions/LCR/Gu0c2T.md | 4 +- .../solutions/LCR/GzCJIP.md | 4 +- .../solutions/LCR/H8086Q.md | 4 +- .../solutions/LCR/IDBivT.md | 4 +- .../solutions/LCR/JFETK5.md | 4 +- .../solutions/LCR/LGjMqU.md | 4 +- .../solutions/LCR/LwUNpT.md | 4 +- .../solutions/LCR/M1oyTv.md | 4 +- .../solutions/LCR/M99OJA.md | 4 +- .../solutions/LCR/N6YdxV.md | 4 +- .../solutions/LCR/NUPfPr.md | 4 +- .../solutions/LCR/NYBBNL.md | 4 +- .../solutions/LCR/NaqhDT.md | 4 +- .../solutions/LCR/O4NDxx.md | 4 +- .../solutions/LCR/OrIXps.md | 4 +- .../solutions/LCR/P5rCT8.md | 4 +- .../solutions/LCR/PzWKhm.md | 10 +- .../solutions/LCR/Q91FMA.md | 4 +- .../solutions/LCR/QA2IGt.md | 4 +- .../solutions/LCR/QC3q1f.md | 4 +- .../solutions/LCR/QTMn0o.md | 4 +- .../solutions/LCR/Qv1Da2.md | 4 +- .../solutions/LCR/RQku0D.md | 4 +- .../solutions/LCR/SLwz0R.md | 4 +- .../solutions/LCR/SsGoHC.md | 4 +- .../solutions/LCR/TVdhkn.md | 4 +- .../solutions/LCR/UHnkqh.md | 4 +- .../solutions/LCR/US1pGT.md | 4 +- .../solutions/LCR/UhWRSj.md | 4 +- .../solutions/LCR/VvJkup.md | 4 +- .../solutions/LCR/WGki4K.md | 4 +- .../solutions/LCR/WNC0Lk.md | 4 +- .../solutions/LCR/WhsWhI.md | 4 +- .../solutions/LCR/XagZNi.md | 4 +- .../solutions/LCR/XltzEq.md | 4 +- .../solutions/LCR/YaVDxD.md | 4 +- .../solutions/LCR/Ygoe9J.md | 4 +- .../solutions/LCR/ZL6zAn.md | 4 +- .../solutions/LCR/ZVAVXX.md | 4 +- .../solutions/LCR/a7VOhD.md | 4 +- .../solutions/LCR/aMhZSa.md | 4 +- .../solutions/LCR/aseY1I.md | 4 +- .../solutions/LCR/bLyHh0.md | 4 +- ...ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof.md | 4 +- ...a-shu-zu-pai-cheng-zui-xiao-de-shu-lcof.md | 6 +- ...u-chuan-zhuan-huan-cheng-zheng-shu-lcof.md | 4 +- .../LCR/bao-han-minhan-shu-de-zhan-lcof.md | 4 +- .../LCR/bu-ke-pai-zhong-de-shun-zi-lcof.md | 4 +- ...yong-jia-jian-cheng-chu-zuo-jia-fa-lcof.md | 4 +- .../solutions/LCR/c32eOV.md | 4 +- .../solutions/LCR/chou-shu-lcof.md | 4 +- ...shang-dao-xia-da-yin-er-cha-shu-ii-lcof.md | 4 +- ...hang-dao-xia-da-yin-er-cha-shu-iii-lcof.md | 4 +- ...ng-shang-dao-xia-da-yin-er-cha-shu-lcof.md | 4 +- .../cong-wei-dao-tou-da-yin-lian-biao-lcof.md | 4 +- .../solutions/LCR/dKk3P7.md | 4 +- ...a-yin-cong-1dao-zui-da-de-nwei-shu-lcof.md | 4 +- ...-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof.md | 4 +- ...shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof.md | 4 +- .../LCR/dui-cheng-de-er-cha-shu-lcof.md | 4 +- .../LCR/dui-lie-de-zui-da-zhi-lcof.md | 4 +- .../LCR/er-cha-shu-de-jing-xiang-lcof.md | 4 +- .../LCR/er-cha-shu-de-shen-du-lcof.md | 4 +- ...a-shu-de-zui-jin-gong-gong-zu-xian-lcof.md | 4 +- ...zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof.md | 4 +- ...cha-sou-suo-shu-de-di-kda-jie-dian-lcof.md | 4 +- ...u-suo-shu-de-hou-xu-bian-li-xu-lie-lcof.md | 4 +- ...o-shu-de-zui-jin-gong-gong-zu-xian-lcof.md | 4 +- ...-suo-shu-yu-shuang-xiang-lian-biao-lcof.md | 4 +- .../LCR/er-jin-zhi-zhong-1de-ge-shu-lcof.md | 4 +- .../er-wei-shu-zu-zhong-de-cha-zhao-lcof.md | 4 +- .../LCR/fan-zhuan-dan-ci-shun-xu-lcof.md | 4 +- .../solutions/LCR/fan-zhuan-lian-biao-lcof.md | 4 +- .../LCR/fei-bo-na-qi-shu-lie-lcof.md | 4 +- .../solutions/LCR/fpTFWP.md | 4 +- .../LCR/fu-za-lian-biao-de-fu-zhi-lcof.md | 4 +- .../solutions/LCR/g5c51o.md | 4 +- .../solutions/LCR/gaM7Ch.md | 4 +- .../LCR/gou-jian-cheng-ji-shu-zu-lcof.md | 4 +- .../LCR/gu-piao-de-zui-da-li-run-lcof.md | 4 +- .../solutions/LCR/h54YBf.md | 4 +- .../solutions/LCR/hPov7L.md | 4 +- ...-bing-liang-ge-pai-xu-de-lian-biao-lcof.md | 4 +- ...e-wei-sde-lian-xu-zheng-shu-xu-lie-lcof.md | 4 +- .../LCR/he-wei-sde-liang-ge-shu-zi-lcof.md | 4 +- .../hua-dong-chuang-kou-de-zui-da-zhi-lcof.md | 4 +- .../solutions/LCR/iIQa4I.md | 4 +- .../solutions/LCR/iSwD2y.md | 4 +- docs/solutions/LCR/index.md | 172 + .../solutions/LCR/jBjn9C.md | 4 +- .../solutions/LCR/jC7MId.md | 4 +- .../solutions/LCR/jJ0w9p.md | 4 +- .../LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof.md | 4 +- .../solutions/LCR/jian-sheng-zi-lcof.md | 4 +- .../LCR/ju-zhen-zhong-de-lu-jing-lcof.md | 4 +- .../solutions/LCR/kLl5u1.md | 4 +- .../solutions/LCR/kTOapQ.md | 4 +- .../solutions/LCR/lMSNwu.md | 4 +- .../LCR/li-wu-de-zui-da-jie-zhi-lcof.md | 4 +- ...biao-zhong-dao-shu-di-kge-jie-dian-lcof.md | 4 +- .../lian-xu-zi-shu-zu-de-zui-da-he-lcof.md | 4 +- ...iao-de-di-yi-ge-gong-gong-jie-dian-lcof.md | 4 +- .../solutions/LCR/lwyVBB.md | 4 +- .../solutions/LCR/ms70jA.md | 4 +- .../solutions/LCR/nZZqjQ.md | 4 +- .../solutions/LCR/om3reC.md | 4 +- .../solutions/LCR/opLdQZ.md | 4 +- .../solutions/LCR/pOCWxh.md | 4 +- .../LCR/ping-heng-er-cha-shu-lcof.md | 4 +- .../solutions/LCR/qIsx9U.md | 4 +- .../solutions/LCR/qJnOS7.md | 4 +- .../LCR/qing-wa-tiao-tai-jie-wen-ti-lcof.md | 4 +- .../solutions/LCR/qiu-12n-lcof.md | 4 +- .../solutions/LCR/que-shi-de-shu-zi-lcof.md | 4 +- .../solutions/LCR/sfvd7V.md | 4 +- .../shan-chu-lian-biao-de-jie-dian-lcof.md | 4 +- .../solutions/LCR/shu-de-zi-jie-gou-lcof.md | 4 +- .../shu-ju-liu-zhong-de-zhong-wei-shu-lcof.md | 4 +- .../LCR/shu-zhi-de-zheng-shu-ci-fang-lcof.md | 4 +- ...-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof.md | 4 +- ...n-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof.md | 4 +- .../LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md | 4 +- ...zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof.md | 4 +- .../shu-zu-zhong-zhong-fu-de-shu-zi-lcof.md | 4 +- .../LCR/shun-shi-zhen-da-yin-ju-zhen-lcof.md | 4 +- .../solutions/LCR/ti-huan-kong-ge-lcof.md | 4 +- .../solutions/LCR/tvdfij.md | 4 +- .../solutions/LCR/uUsW3B.md | 4 +- .../solutions/LCR/vEAB3K.md | 4 +- .../solutions/LCR/vlzXQL.md | 4 +- .../solutions/LCR/vvXgSW.md | 4 +- .../solutions/LCR/w3tCBm.md | 4 +- .../solutions/LCR/w6cpku.md | 4 +- .../solutions/LCR/wtcaE1.md | 4 +- .../solutions/LCR/xoh6Oh.md | 4 +- .../LCR/xu-lie-hua-er-cha-shu-lcof.md | 4 +- ...an-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof.md | 4 +- .../solutions/LCR/xx4gT2.md | 4 +- ...ong-liang-ge-zhan-shi-xian-dui-lie-lcof.md | 4 +- ...-zhong-zui-hou-sheng-xia-de-shu-zi-lcof.md | 4 +- .../solutions/LCR/z1R5dt.md | 4 +- ...ai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof.md | 4 +- .../LCR/zhan-de-ya-ru-dan-chu-xu-lie-lcof.md | 4 +- .../LCR/zhong-jian-er-cha-shu-lcof.md | 4 +- .../LCR/zi-fu-chuan-de-pai-lie-lcof.md | 4 +- .../solutions/LCR/zlDJc7.md | 4 +- ...n-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof.md | 4 +- .../solutions/LCR/zui-xiao-de-kge-shu-lcof.md | 4 +- .../LCR/zuo-xuan-zhuan-zi-fu-chuan-lcof.md | 4 +- docs/solutions/index.md | 31 + 1195 files changed, 5927 insertions(+), 11003 deletions(-) delete mode 100644 Assets/Images/algo-book-contents.png delete mode 100644 Assets/Images/algo-book-dark.png delete mode 100644 Assets/Images/algo-book-light.png delete mode 100644 Assets/Images/itcharge-qr-code.png delete mode 100644 Assets/Origins/Categories-List.md delete mode 100644 Assets/Origins/Interview-100-List.md delete mode 100644 Assets/Origins/Interview-200-List.md delete mode 100644 Assets/Origins/README-Catalogue-List.md delete mode 100644 Assets/Origins/README-Head.md delete mode 100644 Assets/Scripts/create_auto.sh delete mode 100644 Assets/Scripts/create_readme.py delete mode 100644 Assets/Scripts/create_solutions_list.py delete mode 100644 Assets/Scripts/leetcode-problems.csv delete mode 100644 Contents/00.Introduction/04.Solutions-List.md delete mode 100644 Contents/00.Introduction/05.Categories-List.md delete mode 100644 Contents/00.Introduction/06.Interview-100-List.md delete mode 100644 Contents/00.Introduction/07.Interview-200-List.md delete mode 100644 Contents/00.Introduction/08.Algorithms-Overview.md delete mode 100644 Contents/00.Introduction/index.md delete mode 100644 Contents/01.Array/01.Array-Basic/02.Array-Basic-List.md delete mode 100644 Contents/01.Array/01.Array-Basic/index.md delete mode 100644 Contents/01.Array/02.Array-Sort/11.Array-Sort-List.md delete mode 100644 Contents/01.Array/02.Array-Sort/index.md delete mode 100644 Contents/01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md delete mode 100644 Contents/01.Array/03.Array-Binary-Search/index.md delete mode 100644 Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md delete mode 100644 Contents/01.Array/04.Array-Two-Pointers/index.md delete mode 100644 Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md delete mode 100644 Contents/01.Array/05.Array-Sliding-Window/index.md delete mode 100644 Contents/01.Array/index.md delete mode 100644 Contents/02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md delete mode 100644 Contents/02.Linked-List/01.Linked-List-Basic/index.md delete mode 100644 Contents/02.Linked-List/02.Linked-List-Sort/01.Linked-List-Sort.md delete mode 100644 Contents/02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md delete mode 100644 Contents/02.Linked-List/02.Linked-List-Sort/index.md delete mode 100644 Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md delete mode 100644 Contents/02.Linked-List/03.Linked-List-Two-Pointers/index.md delete mode 100644 Contents/02.Linked-List/index.md delete mode 100644 Contents/03.Stack/01.Stack-Basic/02.Stack-Basic-List.md delete mode 100644 Contents/03.Stack/01.Stack-Basic/index.md delete mode 100644 Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md delete mode 100644 Contents/03.Stack/02.Monotone-Stack/index.md delete mode 100644 Contents/03.Stack/index.md delete mode 100644 Contents/04.Queue/01.Queue-Basic/02.Queue-Basic-List.md delete mode 100644 Contents/04.Queue/01.Queue-Basic/index.md delete mode 100644 Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md delete mode 100644 Contents/04.Queue/02.Priority-Queue/index.md delete mode 100644 Contents/04.Queue/index.md delete mode 100644 Contents/05.Hash-Table/02.Hash-Table-List.md delete mode 100644 Contents/05.Hash-Table/index.md delete mode 100644 Contents/06.String/01.String-Basic/02.String-Basic-List.md delete mode 100644 Contents/06.String/01.String-Basic/index.md delete mode 100644 Contents/06.String/02.String-Single-Pattern-Matching/07.String-Single-Pattern-Matching-List.md delete mode 100644 Contents/06.String/02.String-Single-Pattern-Matching/index.md delete mode 100644 Contents/06.String/03.String-Multi-Pattern-Matching/02.Trie-List.md delete mode 100644 Contents/06.String/03.String-Multi-Pattern-Matching/index.md delete mode 100644 Contents/06.String/index.md delete mode 100644 Contents/07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md delete mode 100644 Contents/07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md delete mode 100644 Contents/07.Tree/01.Binary-Tree/index.md delete mode 100644 Contents/07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md delete mode 100644 Contents/07.Tree/02.Binary-Search-Tree/index.md delete mode 100644 Contents/07.Tree/03.Segment-Tree/02.Segment-Tree-List.md delete mode 100644 Contents/07.Tree/03.Segment-Tree/index.md delete mode 100644 Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md delete mode 100644 Contents/07.Tree/04.Binary-Indexed-Tree/index.md delete mode 100644 Contents/07.Tree/05.Union-Find/02.Union-Find-List.md delete mode 100644 Contents/07.Tree/05.Union-Find/index.md delete mode 100644 Contents/07.Tree/index.md delete mode 100644 Contents/08.Graph/01.Graph-Basic/index.md delete mode 100644 Contents/08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md delete mode 100644 Contents/08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md delete mode 100644 Contents/08.Graph/02.Graph-Traversal/06.Graph-Topological-Sorting-List.md delete mode 100644 Contents/08.Graph/02.Graph-Traversal/index.md delete mode 100644 Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md delete mode 100644 Contents/08.Graph/03.Graph-Spanning-Tree/index.md delete mode 100644 Contents/08.Graph/04.Graph-Shortest-Path/03.Graph-Single-Source-Shortest-Path-List.md delete mode 100644 Contents/08.Graph/04.Graph-Shortest-Path/05.Graph-Multi-Source-Shortest-Path-List.md delete mode 100644 Contents/08.Graph/04.Graph-Shortest-Path/07.Graph-The-Second-Shortest-Path-List.md delete mode 100644 Contents/08.Graph/04.Graph-Shortest-Path/09.Graph-System-Of-Difference-Constraints-List.md delete mode 100644 Contents/08.Graph/04.Graph-Shortest-Path/index.md delete mode 100644 Contents/08.Graph/05.Graph-Bipartite/02.Graph-Bipartite-Basic-List.md delete mode 100644 Contents/08.Graph/05.Graph-Bipartite/04.Graph-Hungarian-Algorithm.md delete mode 100644 Contents/08.Graph/05.Graph-Bipartite/05.Graph-Hopcroft-Karp.md delete mode 100644 Contents/08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md delete mode 100644 Contents/08.Graph/05.Graph-Bipartite/index.md delete mode 100644 Contents/08.Graph/index.md delete mode 100644 Contents/09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md delete mode 100644 Contents/09.Algorithm-Base/01.Enumeration-Algorithm/index.md delete mode 100644 Contents/09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md delete mode 100644 Contents/09.Algorithm-Base/02.Recursive-Algorithm/index.md delete mode 100644 Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md delete mode 100644 Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/index.md delete mode 100644 Contents/09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md delete mode 100644 Contents/09.Algorithm-Base/04.Backtracking-Algorithm/index.md delete mode 100644 Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md delete mode 100644 Contents/09.Algorithm-Base/05.Greedy-Algorithm/index.md delete mode 100644 Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md delete mode 100644 Contents/09.Algorithm-Base/06.Bit-Operation/index.md delete mode 100644 Contents/09.Algorithm-Base/index.md delete mode 100644 Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md delete mode 100644 Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/index.md delete mode 100644 Contents/10.Dynamic-Programming/02.Memoization/02.Memoization-List.md delete mode 100644 Contents/10.Dynamic-Programming/02.Memoization/index.md delete mode 100644 Contents/10.Dynamic-Programming/03.Linear-DP/03.Linear-DP-List.md delete mode 100644 Contents/10.Dynamic-Programming/03.Linear-DP/index.md delete mode 100644 Contents/10.Dynamic-Programming/04.Knapsack-Problem/06.Knapsack-Problem-List.md delete mode 100644 Contents/10.Dynamic-Programming/04.Knapsack-Problem/index.md delete mode 100644 Contents/10.Dynamic-Programming/05.Interval-DP/02.Interval-DP-List.md delete mode 100644 Contents/10.Dynamic-Programming/05.Interval-DP/index.md delete mode 100644 Contents/10.Dynamic-Programming/06.Tree-DP/02.Tree-DP-List.md delete mode 100644 Contents/10.Dynamic-Programming/06.Tree-DP/index.md delete mode 100644 Contents/10.Dynamic-Programming/07.State-DP/02.State-DP-List.md delete mode 100644 Contents/10.Dynamic-Programming/07.State-DP/index.md delete mode 100644 Contents/10.Dynamic-Programming/08.Counting-DP/02.Counting-DP-List.md delete mode 100644 Contents/10.Dynamic-Programming/08.Counting-DP/index.md delete mode 100644 Contents/10.Dynamic-Programming/09.Digit-DP/02.Digit-DP-List.md delete mode 100644 Contents/10.Dynamic-Programming/09.Digit-DP/index.md delete mode 100644 Contents/10.Dynamic-Programming/10.Probability-DP/02.Probability-DP-List.md delete mode 100644 Contents/10.Dynamic-Programming/10.Probability-DP/index.md delete mode 100644 Contents/10.Dynamic-Programming/11.DP-Optimization/01.Monotone-Stack-Queue-Optimization.md delete mode 100644 Contents/10.Dynamic-Programming/11.DP-Optimization/02.Slope-Optimization.md delete mode 100644 Contents/10.Dynamic-Programming/11.DP-Optimization/03.Quadrangle-Optimization.md delete mode 100644 Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md delete mode 100644 Contents/10.Dynamic-Programming/11.DP-Optimization/index.md delete mode 100644 Contents/10.Dynamic-Programming/index.md delete mode 100644 Contents/index.md delete mode 100644 "Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275 (\345\212\250\346\200\201\350\247\204\345\210\222).md" delete mode 100644 "Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275.md" rename Templates/01.Array/Array-MaxHeap.py => codes/python/01_array/array_maxheap.py (100%) rename Templates/01.Array/Array-BubbleSort.py => codes/python/01_array/array_sort_bubble_sort.py (100%) rename Templates/01.Array/Array-BucketSort.py => codes/python/01_array/array_sort_bucket_sort.py (100%) rename Templates/01.Array/Array-CountingSort.py => codes/python/01_array/array_sort_counting_sort.py (100%) rename Templates/01.Array/Array-InsertionSort.py => codes/python/01_array/array_sort_insertion_sort.py (100%) rename Templates/01.Array/Array-MaxHeapSort.py => codes/python/01_array/array_sort_maxheap_sort.py (100%) rename Templates/01.Array/Array-MergeSort.py => codes/python/01_array/array_sort_merge_sort.py (100%) rename Templates/01.Array/Array-MinHeapSort.py => codes/python/01_array/array_sort_minheap_sort.py (100%) rename Templates/01.Array/Array-QuickSort.py => codes/python/01_array/array_sort_quick_sort.py (100%) rename Templates/01.Array/Array-RadixSort.py => codes/python/01_array/array_sort_radix_sort.py (100%) rename Templates/01.Array/Array-SelectionSort.py => codes/python/01_array/array_sort_selection_sort.py (100%) rename Templates/01.Array/Array-ShellSort.py => codes/python/01_array/array_sort_shell_sort.py (100%) rename Templates/02.LinkedList/LinkedList.py => codes/python/02_linked_list/linked_list.py (100%) rename Templates/02.LinkedList/LinkedList-BubbleSort.py => codes/python/02_linked_list/linked_list_bubble_sort.py (100%) rename Templates/02.LinkedList/LinkedList-BucketSort.py => codes/python/02_linked_list/linked_list_bucket_sort.py (100%) rename Templates/02.LinkedList/LinkedList-CountingSort.py => codes/python/02_linked_list/linked_list_counting_sort.py (100%) rename Templates/02.LinkedList/LinkedList-InsertionSort.py => codes/python/02_linked_list/linked_list_insertion_sort.py (100%) rename Templates/02.LinkedList/LinkedList-MergeSort.py => codes/python/02_linked_list/linked_list_merge_sort.py (100%) rename Templates/02.LinkedList/LinkedList-QuickSort.py => codes/python/02_linked_list/linked_list_quick_sort.py (100%) rename Templates/02.LinkedList/LinkedList-RadixSort.py => codes/python/02_linked_list/linked_list_radix_sort.py (100%) rename Templates/02.LinkedList/LinkedList-SectionSort.py => codes/python/02_linked_list/linked_list_section_sort.py (100%) rename Templates/04.Queue/Queue-CircularSequentialQueue.py => codes/python/03_stack_queue_hash_table/queue_circularSequential_queue.py (100%) rename Templates/04.Queue/Queue-LinkQueue.py => codes/python/03_stack_queue_hash_table/queue_link_queue.py (100%) rename Templates/04.Queue/Queue-PriorityQueue.py => codes/python/03_stack_queue_hash_table/queue_priority_queue.py (100%) rename Templates/04.Queue/Queue-SequentialQueue.py => codes/python/03_stack_queue_hash_table/queue_sequential_queue.py (100%) rename Templates/03.Stack/Stack-LinkStack.py => codes/python/03_stack_queue_hash_table/stack_link_stack.py (100%) rename Templates/03.Stack/Stack-MonotoneStack.py => codes/python/03_stack_queue_hash_table/stack_monotone_stack.py (100%) rename Templates/03.Stack/Stack-SequentialStack.py => codes/python/03_stack_queue_hash_table/stack_sequential_stack.py (100%) rename Templates/06.String/String-Strcmp.py => codes/python/04_string/string_Strcmp.py (100%) rename Templates/06.String/String-BM.py => codes/python/04_string/string_boyer_moore.py (100%) rename Templates/06.String/String-BF.py => codes/python/04_string/string_brute_force.py (100%) rename Templates/06.String/String-Horspool.py => codes/python/04_string/string_horspool.py (100%) rename Templates/06.String/String-KMP.py => codes/python/04_string/string_kmp.py (100%) rename Templates/06.String/String-RK.py => codes/python/04_string/string_rabin_karp.py (100%) rename Templates/06.String/String-Sunday.py => codes/python/04_string/string_sunday.py (100%) rename Templates/06.String/String-Trie.py => codes/python/04_string/string_trie.py (100%) rename Templates/07.Tree/Tree-BinaryIndexedTree.py => codes/python/05_tree/tree_binaryindexed_tree.py (100%) rename Templates/07.Tree/Tree-DynamicSegmentTree-Update-Interval-1.py => codes/python/05_tree/tree_dynamicSegmentTree_update_interval_1.py (100%) rename Templates/07.Tree/Tree-DynamicSegmentTree-Update-Interval-2.py => codes/python/05_tree/tree_dynamicSegmentTree_update_interval_2.py (100%) rename Templates/07.Tree/Tree-SegmentTree-Update-Interval-1.py => codes/python/05_tree/tree_segmentTree_update_interval_1.py (100%) rename Templates/07.Tree/Tree-SegmentTree-Update-Interval-2.py => codes/python/05_tree/tree_segmentTree_update_interval_2.py (100%) rename Templates/07.Tree/Tree-SegmentTree-Update-Point.py => codes/python/05_tree/tree_segmentTree_update_point.py (100%) rename Templates/07.Tree/Tree-UnionFind.py => codes/python/05_tree/tree_unionFind.py (100%) rename Templates/07.Tree/Tree-UnionFind-QuickFind.py => codes/python/05_tree/tree_unionFind_QuickFind.py (100%) rename Templates/07.Tree/Tree-UnionFind-QuickUnion.py => codes/python/05_tree/tree_unionFind_QuickUnion.py (100%) rename Templates/07.Tree/Tree-UnionFind-UnoinByRank.py => codes/python/05_tree/tree_unionFind_UnoinByRank.py (100%) rename Templates/07.Tree/Tree-UnionFind-UnoinBySize.py => codes/python/05_tree/tree_unionFind_UnoinBySize.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-Adjacency-List.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-Adjacency-Matrix.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-BFS.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-Bellman-Ford.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-DFS.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-Edgeset-Array.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-Hash-Table.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-Kruskal.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-Linked-Forward-Star.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-Prim.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-Topological-Sorting-DFS.py (100%) rename {Templates/08.Graph => codes/python/06_graph}/Graph-Topological-Sorting-Kahn.py (100%) rename {Templates/10.Dynamic-Programming => codes/python/08_dynamic_programming}/Digit-DP.py (100%) rename {Templates/10.Dynamic-Programming => codes/python/08_dynamic_programming}/Pack-2DCostPack.py (100%) rename {Templates/10.Dynamic-Programming => codes/python/08_dynamic_programming}/Pack-CompletePack.py (100%) rename {Templates/10.Dynamic-Programming => codes/python/08_dynamic_programming}/Pack-GroupPack.py (100%) rename {Templates/10.Dynamic-Programming => codes/python/08_dynamic_programming}/Pack-MixedPack.py (100%) rename {Templates/10.Dynamic-Programming => codes/python/08_dynamic_programming}/Pack-MultiplePack.py (100%) rename {Templates/10.Dynamic-Programming => codes/python/08_dynamic_programming}/Pack-ProblemVariants.py (100%) rename {Templates/10.Dynamic-Programming => codes/python/08_dynamic_programming}/Pack-ZeroOnePack.py (100%) create mode 100644 docs/00_preface/00_01_about_the_book.md rename Contents/00.Introduction/01.Data-Structures-Algorithms.md => docs/00_preface/00_02_data_structures_algorithms.md (97%) rename Contents/00.Introduction/02.Algorithm-Complexity.md => docs/00_preface/00_03_algorithm_complexity.md (93%) rename Contents/00.Introduction/03.LeetCode-Guide.md => docs/00_preface/00_04_leetcode_guide.md (84%) create mode 100644 docs/00_preface/00_05_solutions_list.md create mode 100644 docs/00_preface/00_06_categories_list.md create mode 100644 docs/00_preface/00_07_interview_100_list.md create mode 100644 docs/00_preface/00_08_interview_200_list.md create mode 100644 docs/00_preface/index.md rename Contents/01.Array/01.Array-Basic/01.Array-Basic.md => docs/01_array/01_01_array_basic.md (95%) create mode 100644 docs/01_array/01_02_array_sort.md rename Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md => docs/01_array/01_03_array_bubble_sort.md (89%) rename Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md => docs/01_array/01_04_array_selection_sort.md (85%) rename Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md => docs/01_array/01_05_array_insertion_sort.md (81%) rename Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md => docs/01_array/01_06_array_shell_sort.md (85%) rename Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md => docs/01_array/01_07_array_merge_sort.md (87%) rename Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md => docs/01_array/01_08_array_quick_sort.md (88%) rename Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md => docs/01_array/01_09_array_heap_sort.md (93%) rename Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md => docs/01_array/01_10_array_counting_sort.md (84%) rename Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md => docs/01_array/01_11_array_bucket_sort.md (84%) rename Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md => docs/01_array/01_12_array_radix_sort.md (80%) rename Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md => docs/01_array/01_13_array_binary_search_01.md (88%) rename Contents/01.Array/03.Array-Binary-Search/02.Array-Binary-Search-02.md => docs/01_array/01_14_array_binary_search_02.md (92%) rename Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md => docs/01_array/01_15_array_two_pointers.md (98%) rename Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md => docs/01_array/01_16_array_sliding_window.md (68%) create mode 100644 docs/01_array/index.md rename Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md => docs/02_linked_list/02_01_linked_list_basic.md (99%) create mode 100644 docs/02_linked_list/02_02_linked_list_sort.md create mode 100644 docs/02_linked_list/02_03_linked_list_bubble_sort.md create mode 100644 docs/02_linked_list/02_04_linked_list_selection_sort.md create mode 100644 docs/02_linked_list/02_05_linked_list_insertion_sort.md create mode 100644 docs/02_linked_list/02_06_linked_list_merge_sort.md create mode 100644 docs/02_linked_list/02_07_linked_list_quick_sort.md create mode 100644 docs/02_linked_list/02_08_linked_list_counting_sort.md create mode 100644 docs/02_linked_list/02_09_linked_list_bucket_sort.md create mode 100644 docs/02_linked_list/02_10_linked_list_radix_sort.md rename Contents/02.Linked-List/03.Linked-List-Two-Pointers/01.Linked-List-Two-Pointers.md => docs/02_linked_list/02_11_linked_list_two_pointers.md (100%) create mode 100644 docs/02_linked_list/index.md rename Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md => docs/03_stack_queue_hash_table/03_01_stack_basic.md (100%) rename Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md => docs/03_stack_queue_hash_table/03_02_monotone_stack.md (100%) rename Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md => docs/03_stack_queue_hash_table/03_03_queue_basic.md (100%) rename Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md => docs/03_stack_queue_hash_table/03_04_priority_queue.md (100%) rename Contents/06.String/03.String-Multi-Pattern-Matching/04.AC-Automaton-List.md => docs/03_stack_queue_hash_table/03_05_bidirectional_queue.md (100%) rename Contents/05.Hash-Table/01.Hash-Table.md => docs/03_stack_queue_hash_table/03_06_hash_table.md (100%) create mode 100644 docs/03_stack_queue_hash_table/index.md rename Contents/06.String/01.String-Basic/01.String-Basic.md => docs/04_string/04_01_string_basic.md (100%) rename Contents/06.String/03.String-Multi-Pattern-Matching/05.Suffix-Array.md => docs/04_string/04_02_string_single_pattern_matching.md (100%) rename Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md => docs/04_string/04_03_string_brute_force.md (100%) rename Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md => docs/04_string/04_04_string_rabin_karp.md (100%) rename Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md => docs/04_string/04_05_string_kmp.md (100%) rename Contents/06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md => docs/04_string/04_06_string_boyer_moore.md (100%) rename Contents/06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md => docs/04_string/04_07_string_horspool.md (100%) rename Contents/06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md => docs/04_string/04_08_string_sunday.md (100%) create mode 100644 docs/04_string/04_09_string_multi_pattern_matching.md rename Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md => docs/04_string/04_10_trie.md (100%) rename Contents/06.String/03.String-Multi-Pattern-Matching/03.AC-Automaton.md => docs/04_string/04_11_ac_automaton.md (100%) rename Contents/06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md => docs/04_string/04_12_suffix_array.md (100%) create mode 100644 docs/04_string/index.md rename Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md => docs/05_tree/05_01_tree_basic.md (100%) rename Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md => docs/05_tree/05_02_binary_tree_traverse.md (100%) rename Contents/07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md => docs/05_tree/05_03_binary_tree_reduction.md (100%) rename Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md => docs/05_tree/05_04_binary_search_tree.md (100%) rename Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md => docs/05_tree/05_05_segment_tree_01.md (69%) create mode 100644 docs/05_tree/05_06_segment_tree_02.md rename Contents/07.Tree/04.Binary-Indexed-Tree/01.Binary-Indexed-Tree.md => docs/05_tree/05_07_binary_indexed_tree.md (100%) rename Contents/07.Tree/05.Union-Find/01.Union-Find.md => docs/05_tree/05_08_union_find.md (100%) create mode 100644 docs/05_tree/index.md rename Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md => docs/06_graph/06_01_graph_basic.md (100%) rename Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md => docs/06_graph/06_02_graph_structure.md (100%) rename Contents/08.Graph/02.Graph-Traversal/01.Graph-DFS.md => docs/06_graph/06_03_graph_dfs.md (100%) rename Contents/08.Graph/02.Graph-Traversal/03.Graph-BFS.md => docs/06_graph/06_04_graph_bfs.md (100%) rename Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md => docs/06_graph/06_05_graph_topological_sorting.md (100%) rename Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md => docs/06_graph/06_06_graph_minimum_spanning_tree.md (100%) rename Contents/08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md => docs/06_graph/06_07_graph_shortest_path_01.md (100%) rename Contents/08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md => docs/06_graph/06_08_graph_shortest_path_02.md (100%) rename Contents/08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md => docs/06_graph/06_09_graph_multi_source_shortest_path.md (100%) rename Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md => docs/06_graph/06_10_graph_the_second_shortest_path.md (98%) rename Contents/08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md => docs/06_graph/06_11_graph_system_of_difference_constraints.md (100%) rename Contents/08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md => docs/06_graph/06_12_graph_bipartite_basic.md (100%) rename Contents/08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md => docs/06_graph/06_13_graph_bipartite_matching.md (100%) create mode 100644 docs/06_graph/index.md rename Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md => docs/07_algorithm/07_01_enumeration_algorithm.md (100%) rename Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md => docs/07_algorithm/07_02_recursive_algorithm.md (100%) rename Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md => docs/07_algorithm/07_03_divide_and_conquer_algorithm.md (100%) rename Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md => docs/07_algorithm/07_04_backtracking_algorithm.md (91%) rename Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md => docs/07_algorithm/07_05_greedy_algorithm.md (100%) rename Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md => docs/07_algorithm/07_06_bit_operation.md (100%) create mode 100644 docs/07_algorithm/index.md rename Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md => docs/08_dynamic_programming/08_01_dynamic_programming_basic.md (100%) rename Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md => docs/08_dynamic_programming/08_02_memoization_search.md (100%) rename Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md => docs/08_dynamic_programming/08_03_linear_dp_01.md (100%) rename Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md => docs/08_dynamic_programming/08_04_linear_dp_02.md (100%) rename Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md => docs/08_dynamic_programming/08_05_knapsack_problem_01.md (100%) rename Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md => docs/08_dynamic_programming/08_06_knapsack_problem_02.md (100%) rename Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md => docs/08_dynamic_programming/08_07_knapsack_problem_03.md (100%) rename Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md => docs/08_dynamic_programming/08_08_knapsack_problem_04.md (100%) rename Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md => docs/08_dynamic_programming/08_09_knapsack_problem_05.md (100%) rename Contents/10.Dynamic-Programming/05.Interval-DP/01.Interval-DP.md => docs/08_dynamic_programming/08_10_interval_dp.md (100%) rename Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md => docs/08_dynamic_programming/08_11_tree_dp.md (100%) rename Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md => docs/08_dynamic_programming/08_12_state_compression_dp.md (100%) rename Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md => docs/08_dynamic_programming/08_13_counting_dp.md (100%) rename Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md => docs/08_dynamic_programming/08_14_digit_dp.md (100%) rename Contents/10.Dynamic-Programming/10.Probability-DP/01.Probability-DP.md => docs/08_dynamic_programming/08_15_probability_dp.md (100%) create mode 100644 docs/08_dynamic_programming/index.md rename Assets/Origins/Root-Index-Head.md => docs/README.md (96%) create mode 100644 docs/index.md rename Contents/Others/Update-Time.md => docs/others/update_time.md (100%) rename "Solutions/0016. \346\234\200\346\216\245\350\277\221\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" => docs/solutions/0001-0099/3sum-closest.md (100%) rename "Solutions/0015. \344\270\211\346\225\260\344\271\213\345\222\214.md" => docs/solutions/0001-0099/3sum.md (100%) rename "Solutions/0018. \345\233\233\346\225\260\344\271\213\345\222\214.md" => docs/solutions/0001-0099/4sum.md (100%) rename "Solutions/0067. \344\272\214\350\277\233\345\210\266\346\261\202\345\222\214.md" => docs/solutions/0001-0099/add-binary.md (100%) rename "Solutions/0002. \344\270\244\346\225\260\347\233\270\345\212\240.md" => docs/solutions/0001-0099/add-two-numbers.md (100%) rename "Solutions/0094. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\255\345\272\217\351\201\215\345\216\206.md" => docs/solutions/0001-0099/binary-tree-inorder-traversal.md (100%) rename "Solutions/0070. \347\210\254\346\245\274\346\242\257.md" => docs/solutions/0001-0099/climbing-stairs.md (100%) rename "Solutions/0040. \347\273\204\345\220\210\346\200\273\345\222\214 II.md" => docs/solutions/0001-0099/combination-sum-ii.md (100%) rename "Solutions/0039. \347\273\204\345\220\210\346\200\273\345\222\214.md" => docs/solutions/0001-0099/combination-sum.md (100%) rename "Solutions/0077. \347\273\204\345\220\210.md" => docs/solutions/0001-0099/combinations.md (100%) rename "Solutions/0011. \347\233\233\346\234\200\345\244\232\346\260\264\347\232\204\345\256\271\345\231\250.md" => docs/solutions/0001-0099/container-with-most-water.md (100%) rename "Solutions/0038. \345\244\226\350\247\202\346\225\260\345\210\227.md" => docs/solutions/0001-0099/count-and-say.md (100%) rename "Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" => docs/solutions/0001-0099/decode-ways.md (100%) rename "Solutions/0029. \344\270\244\346\225\260\347\233\270\351\231\244.md" => docs/solutions/0001-0099/divide-two-integers.md (100%) rename "Solutions/0072. \347\274\226\350\276\221\350\267\235\347\246\273.md" => docs/solutions/0001-0099/edit-distance.md (100%) rename "Solutions/0034. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240\347\232\204\347\254\254\344\270\200\344\270\252\345\222\214\346\234\200\345\220\216\344\270\200\344\270\252\344\275\215\347\275\256.md" => docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array.md (100%) rename "Solutions/0028. \346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md" => docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md (100%) rename "Solutions/0041. \347\274\272\345\244\261\347\232\204\347\254\254\344\270\200\344\270\252\346\255\243\346\225\260.md" => docs/solutions/0001-0099/first-missing-positive.md (100%) rename "Solutions/0022. \346\213\254\345\217\267\347\224\237\346\210\220.md" => docs/solutions/0001-0099/generate-parentheses.md (100%) rename "Solutions/0089. \346\240\274\351\233\267\347\274\226\347\240\201.md" => docs/solutions/0001-0099/gray-code.md (100%) rename "Solutions/0049. \345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\345\210\206\347\273\204.md" => docs/solutions/0001-0099/group-anagrams.md (100%) create mode 100644 docs/solutions/0001-0099/index.md rename "Solutions/0012. \346\225\264\346\225\260\350\275\254\347\275\227\351\251\254\346\225\260\345\255\227.md" => docs/solutions/0001-0099/integer-to-roman.md (100%) rename "Solutions/0045. \350\267\263\350\267\203\346\270\270\346\210\217 II.md" => docs/solutions/0001-0099/jump-game-ii.md (100%) rename "Solutions/0055. \350\267\263\350\267\203\346\270\270\346\210\217.md" => docs/solutions/0001-0099/jump-game.md (100%) rename "Solutions/0084. \346\237\261\347\212\266\345\233\276\344\270\255\346\234\200\345\244\247\347\232\204\347\237\251\345\275\242.md" => docs/solutions/0001-0099/largest-rectangle-in-histogram.md (100%) rename "Solutions/0058. \346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md" => docs/solutions/0001-0099/length-of-last-word.md (100%) rename "Solutions/0017. \347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md" => docs/solutions/0001-0099/letter-combinations-of-a-phone-number.md (100%) rename "Solutions/0014. \346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md" => docs/solutions/0001-0099/longest-common-prefix.md (100%) rename "Solutions/0005. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" => docs/solutions/0001-0099/longest-palindromic-substring.md (100%) rename "Solutions/0003. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" => docs/solutions/0001-0099/longest-substring-without-repeating-characters.md (100%) rename "Solutions/0032. \346\234\200\351\225\277\346\234\211\346\225\210\346\213\254\345\217\267.md" => docs/solutions/0001-0099/longest-valid-parentheses.md (100%) rename "Solutions/0053. \346\234\200\345\244\247\345\255\220\346\225\260\347\273\204\345\222\214.md" => docs/solutions/0001-0099/maximum-subarray.md (100%) rename "Solutions/0004. \345\257\273\346\211\276\344\270\244\344\270\252\346\255\243\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260.md" => docs/solutions/0001-0099/median-of-two-sorted-arrays.md (100%) rename "Solutions/0056. \345\220\210\345\271\266\345\214\272\351\227\264.md" => docs/solutions/0001-0099/merge-intervals.md (100%) rename "Solutions/0023. \345\220\210\345\271\266 K \344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.md" => docs/solutions/0001-0099/merge-k-sorted-lists.md (100%) rename "Solutions/0088. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204.md" => docs/solutions/0001-0099/merge-sorted-array.md (100%) rename "Solutions/0021. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.md" => docs/solutions/0001-0099/merge-two-sorted-lists.md (100%) rename "Solutions/0064. \346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" => docs/solutions/0001-0099/minimum-path-sum.md (100%) rename "Solutions/0076. \346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262.md" => docs/solutions/0001-0099/minimum-window-substring.md (100%) rename "Solutions/0043. \345\255\227\347\254\246\344\270\262\347\233\270\344\271\230.md" => docs/solutions/0001-0099/multiply-strings.md (100%) rename "Solutions/0052. N \347\232\207\345\220\216 II.md" => docs/solutions/0001-0099/n-queens-ii.md (93%) rename "Solutions/0051. N \347\232\207\345\220\216.md" => docs/solutions/0001-0099/n-queens.md (94%) rename "Solutions/0009. \345\233\236\346\226\207\346\225\260.md" => docs/solutions/0001-0099/palindrome-number.md (100%) rename "Solutions/0047. \345\205\250\346\216\222\345\210\227 II.md" => docs/solutions/0001-0099/permutations-ii.md (100%) rename "Solutions/0046. \345\205\250\346\216\222\345\210\227.md" => docs/solutions/0001-0099/permutations.md (89%) rename "Solutions/0066. \345\212\240\344\270\200.md" => docs/solutions/0001-0099/plus-one.md (100%) rename Solutions/0050. Pow(x, n).md => docs/solutions/0001-0099/powx-n.md (100%) rename "Solutions/0010. \346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md" => docs/solutions/0001-0099/regular-expression-matching.md (100%) rename "Solutions/0080. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271 II.md" => docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii.md (100%) rename "Solutions/0026. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md" => docs/solutions/0001-0099/remove-duplicates-from-sorted-array.md (100%) rename "Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" => docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii.md (100%) rename "Solutions/0083. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" => docs/solutions/0001-0099/remove-duplicates-from-sorted-list.md (100%) rename "Solutions/0027. \347\247\273\351\231\244\345\205\203\347\264\240.md" => docs/solutions/0001-0099/remove-element.md (100%) rename "Solutions/0019. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 N \344\270\252\347\273\223\347\202\271.md" => docs/solutions/0001-0099/remove-nth-node-from-end-of-list.md (100%) rename "Solutions/0093. \345\244\215\345\216\237 IP \345\234\260\345\235\200.md" => docs/solutions/0001-0099/restore-ip-addresses.md (85%) rename "Solutions/0007. \346\225\264\346\225\260\345\217\215\350\275\254.md" => docs/solutions/0001-0099/reverse-integer.md (100%) rename "Solutions/0092. \345\217\215\350\275\254\351\223\276\350\241\250 II.md" => docs/solutions/0001-0099/reverse-linked-list-ii.md (100%) rename "Solutions/0025. K \344\270\252\344\270\200\347\273\204\347\277\273\350\275\254\351\223\276\350\241\250.md" => docs/solutions/0001-0099/reverse-nodes-in-k-group.md (100%) rename "Solutions/0013. \347\275\227\351\251\254\346\225\260\345\255\227\350\275\254\346\225\264\346\225\260.md" => docs/solutions/0001-0099/roman-to-integer.md (100%) rename "Solutions/0048. \346\227\213\350\275\254\345\233\276\345\203\217.md" => docs/solutions/0001-0099/rotate-image.md (100%) rename "Solutions/0061. \346\227\213\350\275\254\351\223\276\350\241\250.md" => docs/solutions/0001-0099/rotate-list.md (100%) rename "Solutions/0074. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265.md" => docs/solutions/0001-0099/search-a-2d-matrix.md (100%) rename "Solutions/0081. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204 II.md" => docs/solutions/0001-0099/search-in-rotated-sorted-array-ii.md (100%) rename "Solutions/0033. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" => docs/solutions/0001-0099/search-in-rotated-sorted-array.md (100%) rename "Solutions/0035. \346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md" => docs/solutions/0001-0099/search-insert-position.md (100%) rename "Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" => docs/solutions/0001-0099/set-matrix-zeroes.md (98%) rename "Solutions/0075. \351\242\234\350\211\262\345\210\206\347\261\273.md" => docs/solutions/0001-0099/sort-colors.md (100%) rename "Solutions/0059. \350\236\272\346\227\213\347\237\251\351\230\265 II.md" => docs/solutions/0001-0099/spiral-matrix-ii.md (100%) rename "Solutions/0054. \350\236\272\346\227\213\347\237\251\351\230\265.md" => docs/solutions/0001-0099/spiral-matrix.md (100%) rename "Solutions/0069. x \347\232\204\345\271\263\346\226\271\346\240\271.md" => docs/solutions/0001-0099/sqrtx.md (100%) rename "Solutions/0008. \345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\225\264\346\225\260 (atoi).md" => docs/solutions/0001-0099/string-to-integer-atoi.md (100%) rename "Solutions/0090. \345\255\220\351\233\206 II.md" => docs/solutions/0001-0099/subsets-ii.md (100%) rename "Solutions/0078. \345\255\220\351\233\206.md" => docs/solutions/0001-0099/subsets.md (97%) rename "Solutions/0037. \350\247\243\346\225\260\347\213\254.md" => docs/solutions/0001-0099/sudoku-solver.md (100%) rename "Solutions/0024. \344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" => docs/solutions/0001-0099/swap-nodes-in-pairs.md (100%) rename "Solutions/0042. \346\216\245\351\233\250\346\260\264.md" => docs/solutions/0001-0099/trapping-rain-water.md (100%) rename "Solutions/0001. \344\270\244\346\225\260\344\271\213\345\222\214.md" => docs/solutions/0001-0099/two-sum.md (100%) rename "Solutions/0095. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221 II.md" => docs/solutions/0001-0099/unique-binary-search-trees-ii.md (100%) rename "Solutions/0096. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" => docs/solutions/0001-0099/unique-binary-search-trees.md (100%) rename "Solutions/0063. \344\270\215\345\220\214\350\267\257\345\276\204 II.md" => docs/solutions/0001-0099/unique-paths-ii.md (100%) rename "Solutions/0062. \344\270\215\345\220\214\350\267\257\345\276\204.md" => docs/solutions/0001-0099/unique-paths.md (100%) rename "Solutions/0020. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md" => docs/solutions/0001-0099/valid-parentheses.md (100%) rename "Solutions/0036. \346\234\211\346\225\210\347\232\204\346\225\260\347\213\254.md" => docs/solutions/0001-0099/valid-sudoku.md (100%) rename "Solutions/0098. \351\252\214\350\257\201\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" => docs/solutions/0001-0099/validate-binary-search-tree.md (100%) rename "Solutions/0044. \351\200\232\351\205\215\347\254\246\345\214\271\351\205\215.md" => docs/solutions/0001-0099/wildcard-matching.md (100%) rename "Solutions/0079. \345\215\225\350\257\215\346\220\234\347\264\242.md" => docs/solutions/0001-0099/word-search.md (100%) rename "Solutions/0110. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" => docs/solutions/0100-0199/balanced-binary-tree.md (100%) rename "Solutions/0122. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 II.md" => docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii.md (100%) rename "Solutions/0123. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 III.md" => docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii.md (100%) rename "Solutions/0188. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 IV.md" => docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv.md (100%) rename "Solutions/0121. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272.md" => docs/solutions/0100-0199/best-time-to-buy-and-sell-stock.md (100%) rename "Solutions/0173. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" => docs/solutions/0100-0199/binary-search-tree-iterator.md (100%) rename "Solutions/0107. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206 II.md" => docs/solutions/0100-0199/binary-tree-level-order-traversal-ii.md (100%) rename "Solutions/0102. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" => docs/solutions/0100-0199/binary-tree-level-order-traversal.md (100%) rename "Solutions/0124. \344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" => docs/solutions/0100-0199/binary-tree-maximum-path-sum.md (100%) rename "Solutions/0145. \344\272\214\345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" => docs/solutions/0100-0199/binary-tree-postorder-traversal.md (100%) rename "Solutions/0144. \344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" => docs/solutions/0100-0199/binary-tree-preorder-traversal.md (100%) rename "Solutions/0199. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276.md" => docs/solutions/0100-0199/binary-tree-right-side-view.md (100%) rename "Solutions/0103. \344\272\214\345\217\211\346\240\221\347\232\204\351\224\257\351\275\277\345\275\242\345\261\202\345\272\217\351\201\215\345\216\206.md" => docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal.md (100%) rename "Solutions/0135. \345\210\206\345\217\221\347\263\226\346\236\234.md" => docs/solutions/0100-0199/candy.md (100%) rename "Solutions/0133. \345\205\213\351\232\206\345\233\276.md" => docs/solutions/0100-0199/clone-graph.md (100%) rename "Solutions/0106. \344\273\216\344\270\255\345\272\217\344\270\216\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" => docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal.md (100%) rename "Solutions/0105. \344\273\216\345\211\215\345\272\217\344\270\216\344\270\255\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" => docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal.md (100%) rename "Solutions/0108. \345\260\206\346\234\211\345\272\217\346\225\260\347\273\204\350\275\254\346\215\242\344\270\272\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" => docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree.md (100%) rename "Solutions/0138. \345\244\215\345\210\266\345\270\246\351\232\217\346\234\272\346\214\207\351\222\210\347\232\204\351\223\276\350\241\250.md" => docs/solutions/0100-0199/copy-list-with-random-pointer.md (91%) rename "Solutions/0115. \344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" => docs/solutions/0100-0199/distinct-subsequences.md (100%) rename "Solutions/0150. \351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md" => docs/solutions/0100-0199/evaluate-reverse-polish-notation.md (100%) rename "Solutions/0171. Excel \350\241\250\345\210\227\345\272\217\345\217\267.md" => docs/solutions/0100-0199/excel-sheet-column-number.md (100%) rename "Solutions/0168. Excel\350\241\250\345\210\227\345\220\215\347\247\260.md" => docs/solutions/0100-0199/excel-sheet-column-title.md (82%) rename "Solutions/0172. \351\230\266\344\271\230\345\220\216\347\232\204\351\233\266.md" => docs/solutions/0100-0199/factorial-trailing-zeroes.md (100%) rename "Solutions/0154. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274 II.md" => docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii.md (100%) rename "Solutions/0153. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274.md" => docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array.md (100%) rename "Solutions/0162. \345\257\273\346\211\276\345\263\260\345\200\274.md" => docs/solutions/0100-0199/find-peak-element.md (100%) rename "Solutions/0166. \345\210\206\346\225\260\345\210\260\345\260\217\346\225\260.md" => docs/solutions/0100-0199/fraction-to-recurring-decimal.md (100%) rename "Solutions/0134. \345\212\240\346\262\271\347\253\231.md" => docs/solutions/0100-0199/gas-station.md (100%) rename "Solutions/0198. \346\211\223\345\256\266\345\212\253\350\210\215.md" => docs/solutions/0100-0199/house-robber.md (100%) create mode 100644 docs/solutions/0100-0199/index.md rename "Solutions/0147. \345\257\271\351\223\276\350\241\250\350\277\233\350\241\214\346\217\222\345\205\245\346\216\222\345\272\217.md" => docs/solutions/0100-0199/insertion-sort-list.md (100%) rename "Solutions/0160. \347\233\270\344\272\244\351\223\276\350\241\250.md" => docs/solutions/0100-0199/intersection-of-two-linked-lists.md (100%) rename "Solutions/0179. \346\234\200\345\244\247\346\225\260.md" => docs/solutions/0100-0199/largest-number.md (100%) rename "Solutions/0142. \347\216\257\345\275\242\351\223\276\350\241\250 II.md" => docs/solutions/0100-0199/linked-list-cycle-ii.md (100%) rename "Solutions/0141. \347\216\257\345\275\242\351\223\276\350\241\250.md" => docs/solutions/0100-0199/linked-list-cycle.md (100%) rename "Solutions/0128. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" => docs/solutions/0100-0199/longest-consecutive-sequence.md (100%) rename "Solutions/0159. \350\207\263\345\244\232\345\214\205\345\220\253\344\270\244\344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" => docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters.md (100%) rename "Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" => docs/solutions/0100-0199/majority-element.md (100%) rename "Solutions/0149. \347\233\264\347\272\277\344\270\212\346\234\200\345\244\232\347\232\204\347\202\271\346\225\260.md" => docs/solutions/0100-0199/max-points-on-a-line.md (100%) rename "Solutions/0104. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\244\247\346\267\261\345\272\246.md" => docs/solutions/0100-0199/maximum-depth-of-binary-tree.md (100%) rename "Solutions/0164. \346\234\200\345\244\247\351\227\264\350\267\235.md" => docs/solutions/0100-0199/maximum-gap.md (100%) rename "Solutions/0152. \344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204.md" => docs/solutions/0100-0199/maximum-product-subarray.md (100%) rename "Solutions/0155. \346\234\200\345\260\217\346\240\210.md" => docs/solutions/0100-0199/min-stack.md (100%) rename "Solutions/0111. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" => docs/solutions/0100-0199/minimum-depth-of-binary-tree.md (100%) rename "Solutions/0191. \344\275\2151\347\232\204\344\270\252\346\225\260.md" => docs/solutions/0100-0199/number-of-1-bits.md (100%) rename "Solutions/0131. \345\210\206\345\211\262\345\233\236\346\226\207\344\270\262.md" => docs/solutions/0100-0199/palindrome-partitioning.md (100%) rename "Solutions/0119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" => docs/solutions/0100-0199/pascals-triangle-ii.md (100%) rename "Solutions/0118. \346\235\250\350\276\211\344\270\211\350\247\222.md" => docs/solutions/0100-0199/pascals-triangle.md (100%) rename "Solutions/0113. \350\267\257\345\276\204\346\200\273\345\222\214 II.md" => docs/solutions/0100-0199/path-sum-ii.md (100%) rename "Solutions/0112. \350\267\257\345\276\204\346\200\273\345\222\214.md" => docs/solutions/0100-0199/path-sum.md (100%) rename "Solutions/0117. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210 II.md" => docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii.md (100%) rename "Solutions/0116. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" => docs/solutions/0100-0199/populating-next-right-pointers-in-each-node.md (100%) rename "Solutions/0143. \351\207\215\346\216\222\351\223\276\350\241\250.md" => docs/solutions/0100-0199/reorder-list.md (100%) rename "Solutions/0190. \351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215.md" => docs/solutions/0100-0199/reverse-bits.md (100%) rename "Solutions/0151. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md" => docs/solutions/0100-0199/reverse-words-in-a-string.md (100%) rename "Solutions/0189. \350\275\256\350\275\254\346\225\260\347\273\204.md" => docs/solutions/0100-0199/rotate-array.md (100%) rename "Solutions/0100. \347\233\270\345\220\214\347\232\204\346\240\221.md" => docs/solutions/0100-0199/same-tree.md (100%) rename "Solutions/0137. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 II.md" => docs/solutions/0100-0199/single-number-ii.md (100%) rename "Solutions/0136. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" => docs/solutions/0100-0199/single-number.md (100%) rename "Solutions/0148. \346\216\222\345\272\217\351\223\276\350\241\250.md" => docs/solutions/0100-0199/sort-list.md (100%) rename "Solutions/0129. \346\261\202\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\346\225\260\345\255\227\344\271\213\345\222\214.md" => docs/solutions/0100-0199/sum-root-to-leaf-numbers.md (100%) rename "Solutions/0130. \350\242\253\345\233\264\347\273\225\347\232\204\345\214\272\345\237\237.md" => docs/solutions/0100-0199/surrounded-regions.md (100%) rename "Solutions/0101. \345\257\271\347\247\260\344\272\214\345\217\211\346\240\221.md" => docs/solutions/0100-0199/symmetric-tree.md (100%) rename "Solutions/0120. \344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" => docs/solutions/0100-0199/triangle.md (100%) rename "Solutions/0167. \344\270\244\346\225\260\344\271\213\345\222\214 II - \350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204.md" => docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted.md (100%) rename "Solutions/0170. \344\270\244\346\225\260\344\271\213\345\222\214 III - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" => docs/solutions/0100-0199/two-sum-iii-data-structure-design.md (100%) rename "Solutions/0125. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md" => docs/solutions/0100-0199/valid-palindrome.md (100%) rename "Solutions/0140. \345\215\225\350\257\215\346\213\206\345\210\206 II.md" => docs/solutions/0100-0199/word-break-ii.md (100%) rename "Solutions/0139. \345\215\225\350\257\215\346\213\206\345\210\206.md" => docs/solutions/0100-0199/word-break.md (100%) rename "Solutions/0127. \345\215\225\350\257\215\346\216\245\351\276\231.md" => docs/solutions/0100-0199/word-ladder.md (100%) rename "Solutions/0259. \350\276\203\345\260\217\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" => docs/solutions/0200-0299/3sum-smaller.md (100%) rename "Solutions/0258. \345\220\204\344\275\215\347\233\270\345\212\240.md" => docs/solutions/0200-0299/add-digits.md (100%) rename "Solutions/0227. \345\237\272\346\234\254\350\256\241\347\256\227\345\231\250 II.md" => docs/solutions/0200-0299/basic-calculator-ii.md (100%) rename "Solutions/0257. \344\272\214\345\217\211\346\240\221\347\232\204\346\211\200\346\234\211\350\267\257\345\276\204.md" => docs/solutions/0200-0299/binary-tree-paths.md (100%) rename "Solutions/0201. \346\225\260\345\255\227\350\214\203\345\233\264\346\214\211\344\275\215\344\270\216.md" => docs/solutions/0200-0299/bitwise-and-of-numbers-range.md (100%) rename "Solutions/0270. \346\234\200\346\216\245\350\277\221\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\200\274.md" => docs/solutions/0200-0299/closest-binary-search-tree-value.md (100%) rename "Solutions/0219. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 II.md" => docs/solutions/0200-0299/contains-duplicate-ii.md (100%) rename "Solutions/0220. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 III.md" => docs/solutions/0200-0299/contains-duplicate-iii.md (100%) rename "Solutions/0217. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240.md" => docs/solutions/0200-0299/contains-duplicate.md (100%) rename "Solutions/0222. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\347\232\204\350\212\202\347\202\271\344\270\252\346\225\260.md" => docs/solutions/0200-0299/count-complete-tree-nodes.md (100%) rename "Solutions/0204. \350\256\241\346\225\260\350\264\250\346\225\260.md" => docs/solutions/0200-0299/count-primes.md (100%) rename "Solutions/0210. \350\257\276\347\250\213\350\241\250 II.md" => docs/solutions/0200-0299/course-schedule-ii.md (100%) rename "Solutions/0207. \350\257\276\347\250\213\350\241\250.md" => docs/solutions/0200-0299/course-schedule.md (100%) rename "Solutions/0237. \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" => docs/solutions/0200-0299/delete-node-in-a-linked-list.md (100%) rename "Solutions/0211. \346\267\273\345\212\240\344\270\216\346\220\234\347\264\242\345\215\225\350\257\215 - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" => docs/solutions/0200-0299/design-add-and-search-words-data-structure.md (100%) rename "Solutions/0241. \344\270\272\350\277\220\347\256\227\350\241\250\350\276\276\345\274\217\350\256\276\350\256\241\344\274\230\345\205\210\347\272\247.md" => docs/solutions/0200-0299/different-ways-to-add-parentheses.md (100%) rename "Solutions/0295. \346\225\260\346\215\256\346\265\201\347\232\204\344\270\255\344\275\215\346\225\260.md" => docs/solutions/0200-0299/find-median-from-data-stream.md (100%) rename "Solutions/0287. \345\257\273\346\211\276\351\207\215\345\244\215\346\225\260.md" => docs/solutions/0200-0299/find-the-duplicate-number.md (100%) rename "Solutions/0278. \347\254\254\344\270\200\344\270\252\351\224\231\350\257\257\347\232\204\347\211\210\346\234\254.md" => docs/solutions/0200-0299/first-bad-version.md (100%) rename "Solutions/0289. \347\224\237\345\221\275\346\270\270\346\210\217.md" => docs/solutions/0200-0299/game-of-life.md (100%) rename "Solutions/0249. \347\247\273\344\275\215\345\255\227\347\254\246\344\270\262\345\210\206\347\273\204.md" => docs/solutions/0200-0299/group-shifted-strings.md (100%) rename "Solutions/0202. \345\277\253\344\271\220\346\225\260.md" => docs/solutions/0200-0299/happy-number.md (100%) rename "Solutions/0213. \346\211\223\345\256\266\345\212\253\350\210\215 II.md" => docs/solutions/0200-0299/house-robber-ii.md (100%) rename "Solutions/0232. \347\224\250\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" => docs/solutions/0200-0299/implement-queue-using-stacks.md (100%) rename "Solutions/0225. \347\224\250\351\230\237\345\210\227\345\256\236\347\216\260\346\240\210.md" => docs/solutions/0200-0299/implement-stack-using-queues.md (100%) rename "Solutions/0208. \345\256\236\347\216\260 Trie (\345\211\215\347\274\200\346\240\221).md" => docs/solutions/0200-0299/implement-trie-prefix-tree.md (100%) create mode 100644 docs/solutions/0200-0299/index.md rename "Solutions/0285. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" => docs/solutions/0200-0299/inorder-successor-in-bst.md (100%) rename "Solutions/0226. \347\277\273\350\275\254\344\272\214\345\217\211\346\240\221.md" => docs/solutions/0200-0299/invert-binary-tree.md (100%) rename "Solutions/0205. \345\220\214\346\236\204\345\255\227\347\254\246\344\270\262.md" => docs/solutions/0200-0299/isomorphic-strings.md (100%) rename "Solutions/0215. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254K\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.md" => docs/solutions/0200-0299/kth-largest-element-in-an-array.md (100%) rename "Solutions/0235. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" => docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree.md (100%) rename "Solutions/0236. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" => docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree.md (100%) rename "Solutions/0221. \346\234\200\345\244\247\346\255\243\346\226\271\345\275\242.md" => docs/solutions/0200-0299/maximal-square.md (100%) rename "Solutions/0209. \351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md" => docs/solutions/0200-0299/minimum-size-subarray-sum.md (100%) rename "Solutions/0268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.md" => docs/solutions/0200-0299/missing-number.md (100%) rename "Solutions/0283. \347\247\273\345\212\250\351\233\266.md" => docs/solutions/0200-0299/move-zeroes.md (100%) rename "Solutions/0292. Nim \346\270\270\346\210\217.md" => docs/solutions/0200-0299/nim-game.md (100%) rename "Solutions/0233. \346\225\260\345\255\227 1 \347\232\204\344\270\252\346\225\260.md" => docs/solutions/0200-0299/number-of-digit-one.md (100%) rename "Solutions/0200. \345\262\233\345\261\277\346\225\260\351\207\217.md" => docs/solutions/0200-0299/number-of-islands.md (100%) rename "Solutions/0234. \345\233\236\346\226\207\351\223\276\350\241\250.md" => docs/solutions/0200-0299/palindrome-linked-list.md (100%) rename "Solutions/0279. \345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" => docs/solutions/0200-0299/perfect-squares.md (100%) rename "Solutions/0231. 2 \347\232\204\345\271\202.md" => docs/solutions/0200-0299/power-of-two.md (100%) rename "Solutions/0238. \351\231\244\350\207\252\350\272\253\344\273\245\345\244\226\346\225\260\347\273\204\347\232\204\344\271\230\347\247\257.md" => docs/solutions/0200-0299/product-of-array-except-self.md (100%) rename "Solutions/0223. \347\237\251\345\275\242\351\235\242\347\247\257.md" => docs/solutions/0200-0299/rectangle-area.md (100%) rename "Solutions/0203. \347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md" => docs/solutions/0200-0299/remove-linked-list-elements.md (100%) rename "Solutions/0206. \345\217\215\350\275\254\351\223\276\350\241\250.md" => docs/solutions/0200-0299/reverse-linked-list.md (100%) rename "Solutions/0240. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265 II.md" => docs/solutions/0200-0299/search-a-2d-matrix-ii.md (100%) rename "Solutions/0297. \344\272\214\345\217\211\346\240\221\347\232\204\345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226.md" => docs/solutions/0200-0299/serialize-and-deserialize-binary-tree.md (100%) rename "Solutions/0260. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 III.md" => docs/solutions/0200-0299/single-number-iii.md (100%) rename "Solutions/0239. \346\273\221\345\212\250\347\252\227\345\217\243\346\234\200\345\244\247\345\200\274.md" => docs/solutions/0200-0299/sliding-window-maximum.md (100%) rename "Solutions/0218. \345\244\251\351\231\205\347\272\277\351\227\256\351\242\230.md" => docs/solutions/0200-0299/the-skyline-problem.md (100%) rename "Solutions/0264. \344\270\221\346\225\260 II.md" => docs/solutions/0200-0299/ugly-number-ii.md (100%) rename "Solutions/0263. \344\270\221\346\225\260.md" => docs/solutions/0200-0299/ugly-number.md (100%) rename "Solutions/0288. \345\215\225\350\257\215\347\232\204\345\224\257\344\270\200\347\274\251\345\206\231.md" => docs/solutions/0200-0299/unique-word-abbreviation.md (100%) rename "Solutions/0242. \346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" => docs/solutions/0200-0299/valid-anagram.md (100%) rename "Solutions/0286. \345\242\231\344\270\216\351\227\250.md" => docs/solutions/0200-0299/walls-and-gates.md (100%) rename "Solutions/0290. \345\215\225\350\257\215\350\247\204\345\276\213.md" => docs/solutions/0200-0299/word-pattern.md (100%) rename "Solutions/0212. \345\215\225\350\257\215\346\220\234\347\264\242 II.md" => docs/solutions/0200-0299/word-search-ii.md (100%) rename "Solutions/0351. \345\256\211\345\215\223\347\263\273\347\273\237\346\211\213\345\212\277\350\247\243\351\224\201.md" => docs/solutions/0300-0399/android-unlock-patterns.md (97%) rename "Solutions/0309. \346\234\200\344\275\263\344\271\260\345\215\226\350\202\241\347\245\250\346\227\266\346\234\272\345\220\253\345\206\267\345\206\273\346\234\237.md" => docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown.md (93%) rename "Solutions/0312. \346\210\263\346\260\224\347\220\203.md" => docs/solutions/0300-0399/burst-balloons.md (100%) rename "Solutions/0322. \351\233\266\351\222\261\345\205\221\346\215\242.md" => docs/solutions/0300-0399/coin-change.md (100%) rename "Solutions/0377. \347\273\204\345\220\210\346\200\273\345\222\214 \342\205\243.md" => docs/solutions/0300-0399/combination-sum-iv.md (100%) rename "Solutions/0357. \347\273\237\350\256\241\345\220\204\344\275\215\346\225\260\345\255\227\351\203\275\344\270\215\345\220\214\347\232\204\346\225\260\345\255\227\344\270\252\346\225\260.md" => docs/solutions/0300-0399/count-numbers-with-unique-digits.md (100%) rename "Solutions/0315. \350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.md" => docs/solutions/0300-0399/count-of-smaller-numbers-after-self.md (100%) rename "Solutions/0338. \346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" => docs/solutions/0300-0399/counting-bits.md (100%) rename "Solutions/0394. \345\255\227\347\254\246\344\270\262\350\247\243\347\240\201.md" => docs/solutions/0300-0399/decode-string.md (100%) rename "Solutions/0399. \351\231\244\346\263\225\346\261\202\345\200\274.md" => docs/solutions/0300-0399/evaluate-division.md (100%) rename "Solutions/0389. \346\211\276\344\270\215\345\220\214.md" => docs/solutions/0300-0399/find-the-difference.md (100%) rename "Solutions/0387. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254\344\270\200\344\270\252\345\224\257\344\270\200\345\255\227\347\254\246.md" => docs/solutions/0300-0399/first-unique-character-in-a-string.md (100%) rename "Solutions/0341. \346\211\201\345\271\263\345\214\226\345\265\214\345\245\227\345\210\227\350\241\250\350\277\255\344\273\243\345\231\250.md" => docs/solutions/0300-0399/flatten-nested-list-iterator.md (100%) rename "Solutions/0375. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217 II.md" => docs/solutions/0300-0399/guess-number-higher-or-lower-ii.md (100%) rename "Solutions/0374. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217.md" => docs/solutions/0300-0399/guess-number-higher-or-lower.md (100%) rename "Solutions/0337. \346\211\223\345\256\266\345\212\253\350\210\215 III.md" => docs/solutions/0300-0399/house-robber-iii.md (100%) rename "Solutions/0334. \351\200\222\345\242\236\347\232\204\344\270\211\345\205\203\345\255\220\345\272\217\345\210\227.md" => docs/solutions/0300-0399/increasing-triplet-subsequence.md (100%) create mode 100644 docs/solutions/0300-0399/index.md rename "Solutions/0380. O(1) \346\227\266\351\227\264\346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\350\216\267\345\217\226\351\232\217\346\234\272\345\205\203\347\264\240.md" => docs/solutions/0300-0399/insert-delete-getrandom-o1.md (100%) rename "Solutions/0343. \346\225\264\346\225\260\346\213\206\345\210\206.md" => docs/solutions/0300-0399/integer-break.md (100%) rename "Solutions/0350. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206 II.md" => docs/solutions/0300-0399/intersection-of-two-arrays-ii.md (100%) rename "Solutions/0349. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md" => docs/solutions/0300-0399/intersection-of-two-arrays.md (100%) rename "Solutions/0392. \345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" => docs/solutions/0300-0399/is-subsequence.md (100%) rename "Solutions/0378. \346\234\211\345\272\217\347\237\251\351\230\265\344\270\255\347\254\254 K \345\260\217\347\232\204\345\205\203\347\264\240.md" => docs/solutions/0300-0399/kth-smallest-element-in-a-sorted-matrix.md (100%) rename "Solutions/0386. \345\255\227\345\205\270\345\272\217\346\216\222\346\225\260.md" => docs/solutions/0300-0399/lexicographical-numbers.md (100%) rename "Solutions/0359. \346\227\245\345\277\227\351\200\237\347\216\207\351\231\220\345\210\266\345\231\250.md" => docs/solutions/0300-0399/logger-rate-limiter.md (100%) rename "Solutions/0329. \347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" => docs/solutions/0300-0399/longest-increasing-path-in-a-matrix.md (100%) rename "Solutions/0300. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" => docs/solutions/0300-0399/longest-increasing-subsequence.md (100%) rename "Solutions/0395. \350\207\263\345\260\221\346\234\211 K \344\270\252\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" => docs/solutions/0300-0399/longest-substring-with-at-least-k-repeating-characters.md (100%) rename "Solutions/0340. \350\207\263\345\244\232\345\214\205\345\220\253 K \344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" => docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters.md (100%) rename "Solutions/0318. \346\234\200\345\244\247\345\215\225\350\257\215\351\225\277\345\272\246\344\271\230\347\247\257.md" => docs/solutions/0300-0399/maximum-product-of-word-lengths.md (100%) rename "Solutions/0310. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" => docs/solutions/0300-0399/minimum-height-trees.md (100%) rename "Solutions/0346. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\247\273\345\212\250\345\271\263\345\235\207\345\200\274.md" => docs/solutions/0300-0399/moving-average-from-data-stream.md (100%) rename "Solutions/0323. \346\227\240\345\220\221\345\233\276\344\270\255\350\277\236\351\200\232\345\210\206\351\207\217\347\232\204\346\225\260\347\233\256.md" => docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph.md (100%) rename "Solutions/0328. \345\245\207\345\201\266\351\223\276\350\241\250.md" => docs/solutions/0300-0399/odd-even-linked-list.md (100%) rename "Solutions/0336. \345\233\236\346\226\207\345\257\271.md" => docs/solutions/0300-0399/palindrome-pairs.md (100%) rename "Solutions/0391. \345\256\214\347\276\216\347\237\251\345\275\242.md" => docs/solutions/0300-0399/perfect-rectangle.md (100%) rename "Solutions/0342. 4\347\232\204\345\271\202.md" => docs/solutions/0300-0399/power-of-four.md (100%) rename "Solutions/0326. 3 \347\232\204\345\271\202.md" => docs/solutions/0300-0399/power-of-three.md (100%) rename "Solutions/0370. \345\214\272\351\227\264\345\212\240\346\263\225.md" => docs/solutions/0300-0399/range-addition.md (100%) rename "Solutions/0304. \344\272\214\347\273\264\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \347\237\251\351\230\265\344\270\215\345\217\257\345\217\230.md" => docs/solutions/0300-0399/range-sum-query-2d-immutable.md (100%) rename "Solutions/0303. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\344\270\215\345\217\257\345\217\230.md" => docs/solutions/0300-0399/range-sum-query-immutable.md (100%) rename "Solutions/0307. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\345\217\257\344\277\256\346\224\271.md" => docs/solutions/0300-0399/range-sum-query-mutable.md (100%) rename "Solutions/0383. \350\265\216\351\207\221\344\277\241.md" => docs/solutions/0300-0399/ransom-note.md (100%) rename "Solutions/0316. \345\216\273\351\231\244\351\207\215\345\244\215\345\255\227\346\257\215.md" => docs/solutions/0300-0399/remove-duplicate-letters.md (100%) rename "Solutions/0344. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md" => docs/solutions/0300-0399/reverse-string.md (100%) rename "Solutions/0345. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\351\237\263\345\255\227\346\257\215.md" => docs/solutions/0300-0399/reverse-vowels-of-a-string.md (100%) rename "Solutions/0354. \344\277\204\347\275\227\346\226\257\345\245\227\345\250\203\344\277\241\345\260\201\351\227\256\351\242\230.md" => docs/solutions/0300-0399/russian-doll-envelopes.md (100%) rename "Solutions/0384. \346\211\223\344\271\261\346\225\260\347\273\204.md" => docs/solutions/0300-0399/shuffle-an-array.md (100%) rename "Solutions/0360. \346\234\211\345\272\217\350\275\254\345\214\226\346\225\260\347\273\204.md" => docs/solutions/0300-0399/sort-transformed-array.md (100%) rename "Solutions/0371. \344\270\244\346\225\264\346\225\260\344\271\213\345\222\214.md" => docs/solutions/0300-0399/sum-of-two-integers.md (100%) rename "Solutions/0347. \345\211\215 K \344\270\252\351\253\230\351\242\221\345\205\203\347\264\240.md" => docs/solutions/0300-0399/top-k-frequent-elements.md (100%) rename "Solutions/0367. \346\234\211\346\225\210\347\232\204\345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" => docs/solutions/0300-0399/valid-perfect-square.md (100%) rename "Solutions/0324. \346\221\206\345\212\250\346\216\222\345\272\217 II.md" => docs/solutions/0300-0399/wiggle-sort-ii.md (100%) rename "Solutions/0376. \346\221\206\345\212\250\345\272\217\345\210\227.md" => docs/solutions/0300-0399/wiggle-subsequence.md (100%) rename "Solutions/0454. \345\233\233\346\225\260\347\233\270\345\212\240 II.md" => docs/solutions/0400-0499/4sum-ii.md (100%) rename "Solutions/0415. \345\255\227\347\254\246\344\270\262\347\233\270\345\212\240.md" => docs/solutions/0400-0499/add-strings.md (100%) rename "Solutions/0445. \344\270\244\346\225\260\347\233\270\345\212\240 II.md" => docs/solutions/0400-0499/add-two-numbers-ii.md (100%) rename "Solutions/0455. \345\210\206\345\217\221\351\245\274\345\271\262.md" => docs/solutions/0400-0499/assign-cookies.md (100%) rename "Solutions/0464. \346\210\221\350\203\275\350\265\242\345\220\227.md" => docs/solutions/0400-0499/can-i-win.md (100%) rename "Solutions/0405. \346\225\260\345\255\227\350\275\254\346\215\242\344\270\272\345\215\201\345\205\255\350\277\233\345\210\266\346\225\260.md" => docs/solutions/0400-0499/convert-a-number-to-hexadecimal.md (100%) rename "Solutions/0426. \345\260\206\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\345\214\226\344\270\272\346\216\222\345\272\217\347\232\204\345\217\214\345\220\221\351\223\276\350\241\250.md" => docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list.md (100%) rename "Solutions/0450. \345\210\240\351\231\244\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\350\212\202\347\202\271.md" => docs/solutions/0400-0499/delete-node-in-a-bst.md (100%) rename "Solutions/0498. \345\257\271\350\247\222\347\272\277\351\201\215\345\216\206.md" => docs/solutions/0400-0499/diagonal-traverse.md (100%) rename "Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" => docs/solutions/0400-0499/find-all-anagrams-in-a-string.md (100%) rename Solutions/0412. Fizz Buzz.md => docs/solutions/0400-0499/fizz-buzz.md (100%) rename "Solutions/0430. \346\211\201\345\271\263\345\214\226\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" => docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list.md (100%) rename "Solutions/0403. \351\235\222\350\233\231\350\277\207\346\262\263.md" => docs/solutions/0400-0499/frog-jump.md (100%) rename "Solutions/0461. \346\261\211\346\230\216\350\267\235\347\246\273.md" => docs/solutions/0400-0499/hamming-distance.md (100%) create mode 100644 docs/solutions/0400-0499/index.md rename "Solutions/0463. \345\262\233\345\261\277\347\232\204\345\221\250\351\225\277.md" => docs/solutions/0400-0499/island-perimeter.md (100%) rename "Solutions/0409. \346\234\200\351\225\277\345\233\236\346\226\207\344\270\262.md" => docs/solutions/0400-0499/longest-palindrome.md (100%) rename "Solutions/0424. \346\233\277\346\215\242\345\220\216\347\232\204\346\234\200\351\225\277\351\207\215\345\244\215\345\255\227\347\254\246.md" => docs/solutions/0400-0499/longest-repeating-character-replacement.md (100%) rename "Solutions/0473. \347\201\253\346\237\264\346\213\274\346\255\243\346\226\271\345\275\242.md" => docs/solutions/0400-0499/matchsticks-to-square.md (100%) rename "Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" => docs/solutions/0400-0499/max-consecutive-ones-ii.md (100%) rename "Solutions/0485. \346\234\200\345\244\247\350\277\236\347\273\255 1 \347\232\204\344\270\252\346\225\260.md" => docs/solutions/0400-0499/max-consecutive-ones.md (100%) rename "Solutions/0421. \346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\345\274\202\346\210\226\345\200\274.md" => docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array.md (100%) rename "Solutions/0452. \347\224\250\346\234\200\345\260\221\346\225\260\351\207\217\347\232\204\347\256\255\345\274\225\347\210\206\346\260\224\347\220\203.md" => docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons.md (100%) rename "Solutions/0429. N \345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" => docs/solutions/0400-0499/n-ary-tree-level-order-traversal.md (100%) rename "Solutions/0496. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 I.md" => docs/solutions/0400-0499/next-greater-element-i.md (100%) rename "Solutions/0491. \351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" => docs/solutions/0400-0499/non-decreasing-subsequences.md (89%) rename "Solutions/0435. \346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.md" => docs/solutions/0400-0499/non-overlapping-intervals.md (100%) rename "Solutions/0400. \347\254\254 N \344\275\215\346\225\260\345\255\227.md" => docs/solutions/0400-0499/nth-digit.md (100%) rename "Solutions/0447. \345\233\236\346\227\213\351\225\226\347\232\204\346\225\260\351\207\217.md" => docs/solutions/0400-0499/number-of-boomerangs.md (100%) rename "Solutions/0474. \344\270\200\345\222\214\351\233\266.md" => docs/solutions/0400-0499/ones-and-zeroes.md (100%) rename "Solutions/0417. \345\244\252\345\271\263\346\264\213\345\244\247\350\245\277\346\264\213\346\260\264\346\265\201\351\227\256\351\242\230.md" => docs/solutions/0400-0499/pacific-atlantic-water-flow.md (100%) rename "Solutions/0416. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" => docs/solutions/0400-0499/partition-equal-subset-sum.md (100%) rename "Solutions/0437. \350\267\257\345\276\204\346\200\273\345\222\214 III.md" => docs/solutions/0400-0499/path-sum-iii.md (100%) rename "Solutions/0486. \351\242\204\346\265\213\350\265\242\345\256\266.md" => docs/solutions/0400-0499/predict-the-winner.md (100%) rename "Solutions/0406. \346\240\271\346\215\256\350\272\253\351\253\230\351\207\215\345\273\272\351\230\237\345\210\227.md" => docs/solutions/0400-0499/queue-reconstruction-by-height.md (100%) rename "Solutions/0459. \351\207\215\345\244\215\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" => docs/solutions/0400-0499/repeated-substring-pattern.md (100%) rename "Solutions/0428. \345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226 N \345\217\211\346\240\221.md" => docs/solutions/0400-0499/serialize-and-deserialize-n-ary-tree.md (100%) rename "Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" => docs/solutions/0400-0499/sliding-window-median.md (100%) rename "Solutions/0451. \346\240\271\346\215\256\345\255\227\347\254\246\345\207\272\347\216\260\351\242\221\347\216\207\346\216\222\345\272\217.md" => docs/solutions/0400-0499/sort-characters-by-frequency.md (100%) rename "Solutions/0410. \345\210\206\345\211\262\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\200\274.md" => docs/solutions/0400-0499/split-array-largest-sum.md (100%) rename "Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" => docs/solutions/0400-0499/string-compression.md (100%) rename "Solutions/0404. \345\267\246\345\217\266\345\255\220\344\271\213\345\222\214.md" => docs/solutions/0400-0499/sum-of-left-leaves.md (100%) rename "Solutions/0494. \347\233\256\346\240\207\345\222\214.md" => docs/solutions/0400-0499/target-sum.md (100%) rename "Solutions/0467. \347\216\257\347\273\225\345\255\227\347\254\246\344\270\262\344\270\255\345\224\257\344\270\200\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" => docs/solutions/0400-0499/unique-substrings-in-wraparound-string.md (100%) rename "Solutions/0468. \351\252\214\350\257\201IP\345\234\260\345\235\200.md" => docs/solutions/0400-0499/validate-ip-address.md (100%) rename "Solutions/0425. \345\215\225\350\257\215\346\226\271\345\235\227.md" => docs/solutions/0400-0499/word-squares.md (100%) rename "Solutions/0542. 01 \347\237\251\351\230\265.md" => docs/solutions/0500-0599/01-matrix.md (100%) rename "Solutions/0561. \346\225\260\347\273\204\346\213\206\345\210\206.md" => docs/solutions/0500-0599/array-partition.md (100%) rename "Solutions/0504. \344\270\203\350\277\233\345\210\266\346\225\260.md" => docs/solutions/0500-0599/base-7.md (100%) rename "Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" => docs/solutions/0500-0599/beautiful-arrangement.md (100%) rename "Solutions/0518. \351\233\266\351\222\261\345\205\221\346\215\242 II.md" => docs/solutions/0500-0599/coin-change-ii.md (100%) rename "Solutions/0525. \350\277\236\347\273\255\346\225\260\347\273\204.md" => docs/solutions/0500-0599/contiguous-array.md (100%) rename "Solutions/0538. \346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221.md" => docs/solutions/0500-0599/convert-bst-to-greater-tree.md (100%) rename "Solutions/0583. \344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\232\204\345\210\240\351\231\244\346\223\215\344\275\234.md" => docs/solutions/0500-0599/delete-operation-for-two-strings.md (100%) rename "Solutions/0543. \344\272\214\345\217\211\346\240\221\347\232\204\347\233\264\345\276\204.md" => docs/solutions/0500-0599/diameter-of-binary-tree.md (100%) rename "Solutions/0575. \345\210\206\347\263\226\346\236\234.md" => docs/solutions/0500-0599/distribute-candies.md (100%) rename "Solutions/0509. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260.md" => docs/solutions/0500-0599/fibonacci-number.md (100%) rename "Solutions/0513. \346\211\276\346\240\221\345\267\246\344\270\213\350\247\222\347\232\204\345\200\274.md" => docs/solutions/0500-0599/find-bottom-left-tree-value.md (100%) rename "Solutions/0515. \345\234\250\346\257\217\344\270\252\346\240\221\350\241\214\344\270\255\346\211\276\346\234\200\345\244\247\345\200\274.md" => docs/solutions/0500-0599/find-largest-value-in-each-tree-row.md (100%) rename "Solutions/0501. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\274\227\346\225\260.md" => docs/solutions/0500-0599/find-mode-in-binary-search-tree.md (100%) create mode 100644 docs/solutions/0500-0599/index.md rename "Solutions/0516. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" => docs/solutions/0500-0599/longest-palindromic-subsequence.md (100%) rename "Solutions/0530. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" => docs/solutions/0500-0599/minimum-absolute-difference-in-bst.md (100%) rename "Solutions/0599. \344\270\244\344\270\252\345\210\227\350\241\250\347\232\204\346\234\200\345\260\217\347\264\242\345\274\225\346\200\273\345\222\214.md" => docs/solutions/0500-0599/minimum-index-sum-of-two-lists.md (100%) rename "Solutions/0539. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" => docs/solutions/0500-0599/minimum-time-difference.md (100%) rename "Solutions/0590. N \345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" => docs/solutions/0500-0599/n-ary-tree-postorder-traversal.md (100%) rename "Solutions/0589. N \345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" => docs/solutions/0500-0599/n-ary-tree-preorder-traversal.md (100%) rename "Solutions/0503. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 II.md" => docs/solutions/0500-0599/next-greater-element-ii.md (100%) rename "Solutions/0547. \347\234\201\344\273\275\346\225\260\351\207\217.md" => docs/solutions/0500-0599/number-of-provinces.md (100%) rename "Solutions/0576. \345\207\272\347\225\214\347\232\204\350\267\257\345\276\204\346\225\260.md" => docs/solutions/0500-0599/out-of-boundary-paths.md (100%) rename "Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" => docs/solutions/0500-0599/permutation-in-string.md (100%) rename "Solutions/0506. \347\233\270\345\257\271\345\220\215\346\254\241.md" => docs/solutions/0500-0599/relative-ranks.md (100%) rename "Solutions/0546. \347\247\273\351\231\244\347\233\222\345\255\220.md" => docs/solutions/0500-0599/remove-boxes.md (100%) rename "Solutions/0557. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215 III.md" => docs/solutions/0500-0599/reverse-words-in-a-string-iii.md (100%) rename "Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" => docs/solutions/0500-0599/subarray-sum-equals-k.md (100%) rename "Solutions/0650. \345\217\252\346\234\211\344\270\244\344\270\252\351\224\256\347\232\204\351\224\256\347\233\230.md" => docs/solutions/0600-0699/2-keys-keyboard.md (94%) rename "Solutions/0616. \347\273\231\345\255\227\347\254\246\344\270\262\346\267\273\345\212\240\345\212\240\347\262\227\346\240\207\347\255\276.md" => docs/solutions/0600-0699/add-bold-tag-in-string.md (100%) rename "Solutions/0639. \350\247\243\347\240\201\346\226\271\346\263\225 II.md" => docs/solutions/0600-0699/decode-ways-ii.md (100%) rename "Solutions/0622. \350\256\276\350\256\241\345\276\252\347\216\257\351\230\237\345\210\227.md" => docs/solutions/0600-0699/design-circular-queue.md (100%) rename "Solutions/0642. \350\256\276\350\256\241\346\220\234\347\264\242\350\207\252\345\212\250\350\241\245\345\205\250\347\263\273\347\273\237.md" => docs/solutions/0600-0699/design-search-autocomplete-system.md (100%) rename "Solutions/0690. \345\221\230\345\267\245\347\232\204\351\207\215\350\246\201\346\200\247.md" => docs/solutions/0600-0699/employee-importance.md (100%) rename "Solutions/0652. \345\257\273\346\211\276\351\207\215\345\244\215\347\232\204\345\255\220\346\240\221.md" => docs/solutions/0600-0699/find-duplicate-subtrees.md (100%) rename "Solutions/0658. \346\211\276\345\210\260 K \344\270\252\346\234\200\346\216\245\350\277\221\347\232\204\345\205\203\347\264\240.md" => docs/solutions/0600-0699/find-k-closest-elements.md (100%) rename "Solutions/0676. \345\256\236\347\216\260\344\270\200\344\270\252\351\255\224\346\263\225\345\255\227\345\205\270.md" => docs/solutions/0600-0699/implement-magic-dictionary.md (100%) create mode 100644 docs/solutions/0600-0699/index.md rename "Solutions/0683. K \344\270\252\345\205\263\351\227\255\347\232\204\347\201\257\346\263\241.md" => docs/solutions/0600-0699/k-empty-slots.md (100%) rename "Solutions/0688. \351\252\221\345\243\253\345\234\250\346\243\213\347\233\230\344\270\212\347\232\204\346\246\202\347\216\207.md" => docs/solutions/0600-0699/knight-probability-in-chessboard.md (100%) rename "Solutions/0674. \346\234\200\351\225\277\350\277\236\347\273\255\351\200\222\345\242\236\345\272\217\345\210\227.md" => docs/solutions/0600-0699/longest-continuous-increasing-subsequence.md (100%) rename "Solutions/0687. \346\234\200\351\225\277\345\220\214\345\200\274\350\267\257\345\276\204.md" => docs/solutions/0600-0699/longest-univalue-path.md (100%) rename "Solutions/0677. \351\224\256\345\200\274\346\230\240\345\260\204.md" => docs/solutions/0600-0699/map-sum-pairs.md (100%) rename "Solutions/0695. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" => docs/solutions/0600-0699/max-area-of-island.md (100%) rename "Solutions/0643. \345\255\220\346\225\260\347\273\204\346\234\200\345\244\247\345\271\263\345\235\207\346\225\260 I.md" => docs/solutions/0600-0699/maximum-average-subarray-i.md (100%) rename "Solutions/0654. \346\234\200\345\244\247\344\272\214\345\217\211\346\240\221.md" => docs/solutions/0600-0699/maximum-binary-tree.md (100%) rename "Solutions/0662. \344\272\214\345\217\211\346\240\221\346\234\200\345\244\247\345\256\275\345\272\246.md" => docs/solutions/0600-0699/maximum-width-of-binary-tree.md (100%) rename "Solutions/0617. \345\220\210\345\271\266\344\272\214\345\217\211\346\240\221.md" => docs/solutions/0600-0699/merge-two-binary-trees.md (100%) rename "Solutions/0665. \351\235\236\351\200\222\345\207\217\346\225\260\345\210\227.md" => docs/solutions/0600-0699/non-decreasing-array.md (100%) rename "Solutions/0600. \344\270\215\345\220\253\350\277\236\347\273\2551\347\232\204\351\235\236\350\264\237\346\225\264\346\225\260.md" => docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones.md (100%) rename "Solutions/0673. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227\347\232\204\344\270\252\346\225\260.md" => docs/solutions/0600-0699/number-of-longest-increasing-subsequence.md (100%) rename "Solutions/0647. \345\233\236\346\226\207\345\255\220\344\270\262.md" => docs/solutions/0600-0699/palindromic-substrings.md (100%) rename "Solutions/0698. \345\210\222\345\210\206\344\270\272k\344\270\252\347\233\270\347\255\211\347\232\204\345\255\220\351\233\206.md" => docs/solutions/0600-0699/partition-to-k-equal-sum-subsets.md (100%) rename "Solutions/0684. \345\206\227\344\275\231\350\277\236\346\216\245.md" => docs/solutions/0600-0699/redundant-connection.md (100%) rename "Solutions/0686. \351\207\215\345\244\215\345\217\240\345\212\240\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" => docs/solutions/0600-0699/repeated-string-match.md (100%) rename "Solutions/0648. \345\215\225\350\257\215\346\233\277\346\215\242.md" => docs/solutions/0600-0699/replace-words.md (100%) rename "Solutions/0691. \350\264\264\347\272\270\346\213\274\350\257\215.md" => docs/solutions/0600-0699/stickers-to-spell-word.md (100%) rename "Solutions/0664. \345\245\207\346\200\252\347\232\204\346\211\223\345\215\260\346\234\272.md" => docs/solutions/0600-0699/strange-printer.md (100%) rename "Solutions/0633. \345\271\263\346\226\271\346\225\260\344\271\213\345\222\214.md" => docs/solutions/0600-0699/sum-of-square-numbers.md (100%) rename "Solutions/0621. \344\273\273\345\212\241\350\260\203\345\272\246\345\231\250.md" => docs/solutions/0600-0699/task-scheduler.md (100%) rename "Solutions/0669. \344\277\256\345\211\252\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" => docs/solutions/0600-0699/trim-a-binary-search-tree.md (100%) rename "Solutions/0653. \344\270\244\346\225\260\344\271\213\345\222\214 IV - \350\276\223\345\205\245\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" => docs/solutions/0600-0699/two-sum-iv-input-is-a-bst.md (100%) rename "Solutions/0680. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262 II.md" => docs/solutions/0600-0699/valid-palindrome-ii.md (100%) rename "Solutions/0678. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267\345\255\227\347\254\246\344\270\262.md" => docs/solutions/0600-0699/valid-parenthesis-string.md (100%) rename "Solutions/0611. \346\234\211\346\225\210\344\270\211\350\247\222\345\275\242\347\232\204\344\270\252\346\225\260.md" => docs/solutions/0600-0699/valid-triangle-number.md (100%) rename "Solutions/0797. \346\211\200\346\234\211\345\217\257\350\203\275\347\232\204\350\267\257\345\276\204.md" => docs/solutions/0700-0799/all-paths-from-source-to-target.md (100%) rename "Solutions/\345\211\221\346\214\207 Offer II 037. \345\260\217\350\241\214\346\230\237\347\242\260\346\222\236.md" => docs/solutions/0700-0799/asteroid-collision.md (92%) rename "Solutions/0714. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272\345\220\253\346\211\213\347\273\255\350\264\271.md" => docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee.md (100%) rename "Solutions/0704. \344\272\214\345\210\206\346\237\245\346\211\276.md" => docs/solutions/0700-0799/binary-search.md (100%) rename "Solutions/0758. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\212\240\347\262\227\345\215\225\350\257\215.md" => docs/solutions/0700-0799/bold-words-in-string.md (100%) rename "Solutions/0765. \346\203\205\344\276\243\347\211\265\346\211\213.md" => docs/solutions/0700-0799/couples-holding-hands.md (100%) rename "Solutions/0739. \346\257\217\346\227\245\346\270\251\345\272\246.md" => docs/solutions/0700-0799/daily-temperatures.md (100%) rename "Solutions/0706. \350\256\276\350\256\241\345\223\210\345\270\214\346\230\240\345\260\204.md" => docs/solutions/0700-0799/design-hashmap.md (100%) rename "Solutions/0705. \350\256\276\350\256\241\345\223\210\345\270\214\351\233\206\345\220\210.md" => docs/solutions/0700-0799/design-hashset.md (100%) rename "Solutions/0707. \350\256\276\350\256\241\351\223\276\350\241\250.md" => docs/solutions/0700-0799/design-linked-list.md (100%) rename "Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" => docs/solutions/0700-0799/find-k-th-smallest-pair-distance.md (100%) rename "Solutions/0724. \345\257\273\346\211\276\346\225\260\347\273\204\347\232\204\344\270\255\345\277\203\344\270\213\346\240\207.md" => docs/solutions/0700-0799/find-pivot-index.md (100%) rename "Solutions/0744. \345\257\273\346\211\276\346\257\224\347\233\256\346\240\207\345\255\227\346\257\215\345\244\247\347\232\204\346\234\200\345\260\217\345\255\227\346\257\215.md" => docs/solutions/0700-0799/find-smallest-letter-greater-than-target.md (100%) rename "Solutions/0733. \345\233\276\345\203\217\346\270\262\346\237\223.md" => docs/solutions/0700-0799/flood-fill.md (100%) create mode 100644 docs/solutions/0700-0799/index.md rename "Solutions/0701. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\217\222\345\205\245\346\223\215\344\275\234.md" => docs/solutions/0700-0799/insert-into-a-binary-search-tree.md (100%) rename "Solutions/0708. \345\276\252\347\216\257\346\234\211\345\272\217\345\210\227\350\241\250\347\232\204\346\217\222\345\205\245.md" => docs/solutions/0700-0799/insert-into-a-sorted-circular-linked-list.md (100%) rename "Solutions/0785. \345\210\244\346\226\255\344\272\214\345\210\206\345\233\276.md" => docs/solutions/0700-0799/is-graph-bipartite.md (100%) rename "Solutions/0771. \345\256\235\347\237\263\344\270\216\347\237\263\345\244\264.md" => docs/solutions/0700-0799/jewels-and-stones.md (100%) rename "Solutions/0779. \347\254\254K\344\270\252\350\257\255\346\263\225\347\254\246\345\217\267.md" => docs/solutions/0700-0799/k-th-symbol-in-grammar.md (100%) rename "Solutions/0703. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254 K \345\244\247\345\205\203\347\264\240.md" => docs/solutions/0700-0799/kth-largest-element-in-a-stream.md (100%) rename "Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" => docs/solutions/0700-0799/letter-case-permutation.md (100%) rename "Solutions/0720. \350\257\215\345\205\270\344\270\255\346\234\200\351\225\277\347\232\204\345\215\225\350\257\215.md" => docs/solutions/0700-0799/longest-word-in-dictionary.md (100%) rename "Solutions/0718. \346\234\200\351\225\277\351\207\215\345\244\215\345\255\220\346\225\260\347\273\204.md" => docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md (100%) rename "Solutions/0746. \344\275\277\347\224\250\346\234\200\345\260\217\350\212\261\350\264\271\347\210\254\346\245\274\346\242\257.md" => docs/solutions/0700-0799/min-cost-climbing-stairs.md (100%) rename "Solutions/0783. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\212\202\347\202\271\346\234\200\345\260\217\350\267\235\347\246\273.md" => docs/solutions/0700-0799/minimum-distance-between-bst-nodes.md (100%) rename "Solutions/0727. \346\234\200\345\260\217\347\252\227\345\217\243\345\255\220\345\272\217\345\210\227.md" => docs/solutions/0700-0799/minimum-window-subsequence.md (100%) rename "Solutions/0738. \345\215\225\350\260\203\351\200\222\345\242\236\347\232\204\346\225\260\345\255\227.md" => docs/solutions/0700-0799/monotone-increasing-digits.md (100%) rename "Solutions/0729. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 I.md" => docs/solutions/0700-0799/my-calendar-i.md (100%) rename "Solutions/0731. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 II.md" => docs/solutions/0700-0799/my-calendar-ii.md (100%) rename "Solutions/0732. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 III.md" => docs/solutions/0700-0799/my-calendar-iii.md (100%) rename "Solutions/0795. \345\214\272\351\227\264\345\255\220\346\225\260\347\273\204\344\270\252\346\225\260.md" => docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum.md (100%) rename "Solutions/0752. \346\211\223\345\274\200\350\275\254\347\233\230\351\224\201.md" => docs/solutions/0700-0799/open-the-lock.md (100%) rename "Solutions/0763. \345\210\222\345\210\206\345\255\227\346\257\215\345\214\272\351\227\264.md" => docs/solutions/0700-0799/partition-labels.md (100%) rename "Solutions/0715. Range \346\250\241\345\235\227.md" => docs/solutions/0700-0799/range-module.md (100%) rename "Solutions/0796. \346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" => docs/solutions/0700-0799/rotate-string.md (100%) rename "Solutions/0788. \346\227\213\350\275\254\346\225\260\345\255\227.md" => docs/solutions/0700-0799/rotated-digits.md (100%) rename "Solutions/0700. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\220\234\347\264\242.md" => docs/solutions/0700-0799/search-in-a-binary-search-tree.md (100%) rename "Solutions/0702. \346\220\234\347\264\242\351\225\277\345\272\246\346\234\252\347\237\245\347\232\204\346\234\211\345\272\217\346\225\260\347\273\204.md" => docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size.md (100%) rename "Solutions/0713. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" => docs/solutions/0700-0799/subarray-product-less-than-k.md (100%) rename "Solutions/0778. \346\260\264\344\275\215\344\270\212\345\215\207\347\232\204\346\263\263\346\261\240\344\270\255\346\270\270\346\263\263.md" => docs/solutions/0700-0799/swim-in-rising-water.md (100%) rename "Solutions/0709. \350\275\254\346\215\242\346\210\220\345\260\217\345\206\231\345\255\227\346\257\215.md" => docs/solutions/0700-0799/to-lower-case.md (100%) rename "Solutions/0766. \346\211\230\346\231\256\345\210\251\350\214\250\347\237\251\351\230\265.md" => docs/solutions/0700-0799/toeplitz-matrix.md (100%) rename "Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" => docs/solutions/0800-0899/backspace-string-compare.md (100%) rename "Solutions/0868. \344\272\214\350\277\233\345\210\266\351\227\264\350\267\235.md" => docs/solutions/0800-0899/binary-gap.md (100%) rename "Solutions/0814. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" => docs/solutions/0800-0899/binary-tree-pruning.md (100%) rename "Solutions/0881. \346\225\221\347\224\237\350\211\207.md" => docs/solutions/0800-0899/boats-to-save-people.md (100%) rename "Solutions/0803. \346\211\223\347\240\226\345\235\227.md" => docs/solutions/0800-0899/bricks-falling-when-hit.md (100%) rename "Solutions/0889. \346\240\271\346\215\256\345\211\215\345\272\217\345\222\214\345\220\216\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" => docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal.md (100%) rename "Solutions/0802. \346\211\276\345\210\260\346\234\200\347\273\210\347\232\204\345\256\211\345\205\250\347\212\266\346\200\201.md" => docs/solutions/0800-0899/find-eventual-safe-states.md (100%) rename "Solutions/0832. \347\277\273\350\275\254\345\233\276\345\203\217.md" => docs/solutions/0800-0899/flipping-an-image.md (100%) rename "Solutions/0824. \345\261\261\347\276\212\346\213\211\344\270\201\346\226\207.md" => docs/solutions/0800-0899/goat-latin.md (100%) rename "Solutions/0846. \344\270\200\346\211\213\351\241\272\345\255\220.md" => docs/solutions/0800-0899/hand-of-straights.md (100%) rename "Solutions/0897. \351\200\222\345\242\236\351\241\272\345\272\217\346\220\234\347\264\242\346\240\221.md" => docs/solutions/0800-0899/increasing-order-search-tree.md (100%) create mode 100644 docs/solutions/0800-0899/index.md rename "Solutions/0841. \351\222\245\345\214\231\345\222\214\346\210\277\351\227\264.md" => docs/solutions/0800-0899/keys-and-rooms.md (100%) rename "Solutions/0875. \347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.md" => docs/solutions/0800-0899/koko-eating-bananas.md (100%) rename "Solutions/0872. \345\217\266\345\255\220\347\233\270\344\274\274\347\232\204\346\240\221.md" => docs/solutions/0800-0899/leaf-similar-trees.md (100%) rename "Solutions/0860. \346\237\240\346\252\254\346\260\264\346\211\276\351\233\266.md" => docs/solutions/0800-0899/lemonade-change.md (100%) rename "Solutions/0873. \346\234\200\351\225\277\347\232\204\346\226\220\346\263\242\351\202\243\345\245\221\345\255\220\345\272\217\345\210\227\347\232\204\351\225\277\345\272\246.md" => docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence.md (100%) rename "Solutions/0845. \346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\351\225\277\345\261\261\350\204\211.md" => docs/solutions/0800-0899/longest-mountain-in-array.md (100%) rename "Solutions/0851. \345\226\247\351\227\271\345\222\214\345\257\214\346\234\211.md" => docs/solutions/0800-0899/loud-and-rich.md (100%) rename "Solutions/0876. \351\223\276\350\241\250\347\232\204\344\270\255\351\227\264\347\273\223\347\202\271.md" => docs/solutions/0800-0899/middle-of-the-linked-list.md (100%) rename "Solutions/0801. \344\275\277\345\272\217\345\210\227\351\200\222\345\242\236\347\232\204\346\234\200\345\260\217\344\272\244\346\215\242\346\254\241\346\225\260.md" => docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing.md (100%) rename "Solutions/0819. \346\234\200\345\270\270\350\247\201\347\232\204\345\215\225\350\257\215.md" => docs/solutions/0800-0899/most-common-word.md (100%) rename "Solutions/0806. \345\206\231\345\255\227\347\254\246\344\270\262\351\234\200\350\246\201\347\232\204\350\241\214\346\225\260.md" => docs/solutions/0800-0899/number-of-lines-to-write-string.md (100%) rename "Solutions/0852. \345\261\261\350\204\211\346\225\260\347\273\204\347\232\204\345\263\260\351\241\266\347\264\242\345\274\225.md" => docs/solutions/0800-0899/peak-index-in-a-mountain-array.md (100%) rename "Solutions/0830. \350\276\203\345\244\247\345\210\206\347\273\204\347\232\204\344\275\215\347\275\256.md" => docs/solutions/0800-0899/positions-of-large-groups.md (100%) rename "Solutions/0886. \345\217\257\350\203\275\347\232\204\344\272\214\345\210\206\346\263\225.md" => docs/solutions/0800-0899/possible-bipartition.md (100%) rename "Solutions/0850. \347\237\251\345\275\242\351\235\242\347\247\257 II.md" => docs/solutions/0800-0899/rectangle-area-ii.md (100%) rename "Solutions/0836. \347\237\251\345\275\242\351\207\215\345\217\240.md" => docs/solutions/0800-0899/rectangle-overlap.md (100%) rename "Solutions/0861. \347\277\273\350\275\254\347\237\251\351\230\265\345\220\216\347\232\204\345\276\227\345\210\206.md" => docs/solutions/0800-0899/score-after-flipping-matrix.md (100%) rename "Solutions/0820. \345\215\225\350\257\215\347\232\204\345\216\213\347\274\251\347\274\226\347\240\201.md" => docs/solutions/0800-0899/short-encoding-of-words.md (100%) rename "Solutions/0821. \345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\350\267\235\347\246\273.md" => docs/solutions/0800-0899/shortest-distance-to-a-character.md (100%) rename "Solutions/0847. \350\256\277\351\227\256\346\211\200\346\234\211\350\212\202\347\202\271\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" => docs/solutions/0800-0899/shortest-path-visiting-all-nodes.md (100%) rename "Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" => docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k.md (100%) rename "Solutions/0800. \347\233\270\344\274\274 RGB \351\242\234\350\211\262.md" => docs/solutions/0800-0899/similar-rgb-color.md (100%) rename "Solutions/0877. \347\237\263\345\255\220\346\270\270\346\210\217.md" => docs/solutions/0800-0899/stone-game.md (100%) rename "Solutions/0811. \345\255\220\345\237\237\345\220\215\350\256\277\351\227\256\350\256\241\346\225\260.md" => docs/solutions/0800-0899/subdomain-visit-count.md (100%) rename "Solutions/0834. \346\240\221\344\270\255\350\267\235\347\246\273\344\271\213\345\222\214.md" => docs/solutions/0800-0899/sum-of-distances-in-tree.md (100%) rename "Solutions/0887. \351\270\241\350\233\213\346\216\211\350\220\275.md" => docs/solutions/0800-0899/super-egg-drop.md (100%) rename "Solutions/0892. \344\270\211\347\273\264\345\275\242\344\275\223\347\232\204\350\241\250\351\235\242\347\247\257.md" => docs/solutions/0800-0899/surface-area-of-3d-shapes.md (100%) rename "Solutions/0867. \350\275\254\347\275\256\347\237\251\351\230\265.md" => docs/solutions/0800-0899/transpose-matrix.md (100%) rename "Solutions/0884. \344\270\244\345\217\245\350\257\235\344\270\255\347\232\204\344\270\215\345\270\270\350\247\201\345\215\225\350\257\215.md" => docs/solutions/0800-0899/uncommon-words-from-two-sentences.md (100%) rename "Solutions/0804. \345\224\257\344\270\200\346\221\251\345\260\224\346\226\257\345\257\206\347\240\201\350\257\215.md" => docs/solutions/0800-0899/unique-morse-code-words.md (100%) rename "Solutions/0999. \345\217\257\344\273\245\350\242\253\344\270\200\346\255\245\346\215\225\350\216\267\347\232\204\346\243\213\345\255\220\346\225\260.md" => docs/solutions/0900-0999/available-captures-for-rook.md (100%) rename "Solutions/0932. \346\274\202\344\272\256\346\225\260\347\273\204.md" => docs/solutions/0900-0999/beautiful-array.md (100%) rename "Solutions/0968. \347\233\221\346\216\247\344\272\214\345\217\211\346\240\221.md" => docs/solutions/0900-0999/binary-tree-cameras.md (100%) rename "Solutions/0958. \344\272\214\345\217\211\346\240\221\347\232\204\345\256\214\345\205\250\346\200\247\346\243\200\351\252\214.md" => docs/solutions/0900-0999/check-completeness-of-a-binary-tree.md (100%) rename "Solutions/0919. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\217\222\345\205\245\345\231\250.md" => docs/solutions/0900-0999/complete-binary-tree-inserter.md (100%) rename "Solutions/0993. \344\272\214\345\217\211\346\240\221\347\232\204\345\240\202\345\205\204\345\274\237\350\212\202\347\202\271.md" => docs/solutions/0900-0999/cousins-in-binary-tree.md (100%) rename "Solutions/0904. \346\260\264\346\236\234\346\210\220\347\257\256.md" => docs/solutions/0900-0999/fruit-into-baskets.md (100%) create mode 100644 docs/solutions/0900-0999/index.md rename "Solutions/0973. \346\234\200\346\216\245\350\277\221\345\216\237\347\202\271\347\232\204 K \344\270\252\347\202\271.md" => docs/solutions/0900-0999/k-closest-points-to-origin.md (100%) rename "Solutions/0935. \351\252\221\345\243\253\346\213\250\345\217\267\345\231\250.md" => docs/solutions/0900-0999/knight-dialer.md (100%) rename "Solutions/0976. \344\270\211\350\247\222\345\275\242\347\232\204\346\234\200\345\244\247\345\221\250\351\225\277.md" => docs/solutions/0900-0999/largest-perimeter-triangle.md (100%) rename "Solutions/0925. \351\225\277\346\214\211\351\224\256\345\205\245.md" => docs/solutions/0900-0999/long-pressed-name.md (100%) rename "Solutions/0978. \346\234\200\351\225\277\346\271\215\346\265\201\345\255\220\346\225\260\347\273\204.md" => docs/solutions/0900-0999/longest-turbulent-subarray.md (100%) rename "Solutions/0918. \347\216\257\345\275\242\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" => docs/solutions/0900-0999/maximum-sum-circular-subarray.md (100%) rename "Solutions/0921. \344\275\277\346\213\254\345\217\267\346\234\211\346\225\210\347\232\204\346\234\200\345\260\221\346\267\273\345\212\240.md" => docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid.md (100%) rename "Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" => docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips.md (100%) rename "Solutions/0947. \347\247\273\351\231\244\346\234\200\345\244\232\347\232\204\345\220\214\350\241\214\346\210\226\345\220\214\345\210\227\347\237\263\345\244\264.md" => docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column.md (100%) rename "Solutions/0933. \346\234\200\350\277\221\347\232\204\350\257\267\346\261\202\346\254\241\346\225\260.md" => docs/solutions/0900-0999/number-of-recent-calls.md (100%) rename "Solutions/0902. \346\234\200\345\244\247\344\270\272 N \347\232\204\346\225\260\345\255\227\347\273\204\345\220\210.md" => docs/solutions/0900-0999/numbers-at-most-n-given-digit-set.md (100%) rename "Solutions/0901. \350\202\241\347\245\250\344\273\267\346\240\274\350\267\250\345\272\246.md" => docs/solutions/0900-0999/online-stock-span.md (100%) rename "Solutions/0938. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\350\214\203\345\233\264\345\222\214.md" => docs/solutions/0900-0999/range-sum-of-bst.md (100%) rename "Solutions/0959. \347\224\261\346\226\234\346\235\240\345\210\222\345\210\206\345\214\272\345\237\237.md" => docs/solutions/0900-0999/regions-cut-by-slashes.md (100%) rename "Solutions/0900. RLE \350\277\255\344\273\243\345\231\250.md" => docs/solutions/0900-0999/rle-iterator.md (100%) rename "Solutions/0990. \347\255\211\345\274\217\346\226\271\347\250\213\347\232\204\345\217\257\346\273\241\350\266\263\346\200\247.md" => docs/solutions/0900-0999/satisfiability-of-equality-equations.md (100%) rename "Solutions/0908. \346\234\200\345\260\217\345\267\256\345\200\274 I.md" => docs/solutions/0900-0999/smallest-range-i.md (100%) rename "Solutions/0912. \346\216\222\345\272\217\346\225\260\347\273\204.md" => docs/solutions/0900-0999/sort-an-array.md (100%) rename "Solutions/0977. \346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md" => docs/solutions/0900-0999/squares-of-a-sorted-array.md (100%) rename "Solutions/0974. \345\222\214\345\217\257\350\242\253 K \346\225\264\351\231\244\347\232\204\345\255\220\346\225\260\347\273\204.md" => docs/solutions/0900-0999/subarray-sums-divisible-by-k.md (100%) rename "Solutions/0992. K \344\270\252\344\270\215\345\220\214\346\225\264\346\225\260\347\232\204\345\255\220\346\225\260\347\273\204.md" => docs/solutions/0900-0999/subarrays-with-k-different-integers.md (100%) rename "Solutions/0982. \346\214\211\344\275\215\344\270\216\344\270\272\351\233\266\347\232\204\344\270\211\345\205\203\347\273\204.md" => docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero.md (100%) rename "Solutions/0946. \351\252\214\350\257\201\346\240\210\345\272\217\345\210\227.md" => docs/solutions/0900-0999/validate-stack-sequences.md (100%) rename "Solutions/0953. \351\252\214\350\257\201\345\244\226\346\230\237\350\257\255\350\257\215\345\205\270.md" => docs/solutions/0900-0999/verifying-an-alien-dictionary.md (100%) rename "Solutions/1014. \346\234\200\344\275\263\350\247\202\345\205\211\347\273\204\345\220\210.md" => docs/solutions/1000-1099/best-sightseeing-pair.md (100%) rename "Solutions/1038. \344\273\216\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\210\260\346\233\264\345\244\247\345\222\214\346\240\221.md" => docs/solutions/1000-1099/binary-search-tree-to-greater-sum-tree.md (100%) rename "Solutions/1023. \351\251\274\345\263\260\345\274\217\345\214\271\351\205\215.md" => docs/solutions/1000-1099/camelcase-matching.md (100%) rename "Solutions/1011. \345\234\250 D \345\244\251\345\206\205\351\200\201\350\276\276\345\214\205\350\243\271\347\232\204\350\203\275\345\212\233.md" => docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days.md (100%) rename "Solutions/1034. \350\276\271\347\225\214\347\235\200\350\211\262.md" => docs/solutions/1000-1099/coloring-a-border.md (100%) rename "Solutions/1009. \345\215\201\350\277\233\345\210\266\346\225\264\346\225\260\347\232\204\345\217\215\347\240\201.md" => docs/solutions/1000-1099/complement-of-base-10-integer.md (100%) rename "Solutions/1008. \345\211\215\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" => docs/solutions/1000-1099/construct-binary-search-tree-from-preorder-traversal.md (100%) rename "Solutions/1025. \351\231\244\346\225\260\345\215\232\345\274\210.md" => docs/solutions/1000-1099/divisor-game.md (100%) rename "Solutions/1089. \345\244\215\345\206\231\351\233\266.md" => docs/solutions/1000-1099/duplicate-zeros.md (100%) rename "Solutions/1002. \346\237\245\346\211\276\345\205\261\347\224\250\345\255\227\347\254\246.md" => docs/solutions/1000-1099/find-common-characters.md (100%) rename "Solutions/1095. \345\261\261\350\204\211\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\347\233\256\346\240\207\345\200\274.md" => docs/solutions/1000-1099/find-in-mountain-array.md (100%) rename "Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" => docs/solutions/1000-1099/grumpy-bookstore-owner.md (100%) rename "Solutions/1051. \351\253\230\345\272\246\346\243\200\346\237\245\345\231\250.md" => docs/solutions/1000-1099/height-checker.md (100%) rename "Solutions/1065. \345\255\227\347\254\246\344\270\262\347\232\204\347\264\242\345\274\225\345\257\271.md" => docs/solutions/1000-1099/index-pairs-of-a-string.md (100%) create mode 100644 docs/solutions/1000-1099/index.md rename "Solutions/1049. \346\234\200\345\220\216\344\270\200\345\235\227\347\237\263\345\244\264\347\232\204\351\207\215\351\207\217 II.md" => docs/solutions/1000-1099/last-stone-weight-ii.md (100%) rename "Solutions/1079. \346\264\273\345\255\227\345\215\260\345\210\267.md" => docs/solutions/1000-1099/letter-tile-possibilities.md (100%) rename "Solutions/1004. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 III.md" => docs/solutions/1000-1099/max-consecutive-ones-iii.md (100%) rename "Solutions/1005. K \346\254\241\345\217\226\345\217\215\345\220\216\346\234\200\345\244\247\345\214\226\347\232\204\346\225\260\347\273\204\345\222\214.md" => docs/solutions/1000-1099/maximize-sum-of-array-after-k-negations.md (100%) rename "Solutions/1000. \345\220\210\345\271\266\347\237\263\345\244\264\347\232\204\346\234\200\344\275\216\346\210\220\346\234\254.md" => docs/solutions/1000-1099/minimum-cost-to-merge-stones.md (100%) rename "Solutions/1039. \345\244\232\350\276\271\345\275\242\344\270\211\350\247\222\345\211\226\345\210\206\347\232\204\346\234\200\344\275\216\345\276\227\345\210\206.md" => docs/solutions/1000-1099/minimum-score-triangulation-of-polygon.md (100%) rename "Solutions/1020. \351\243\236\345\234\260\347\232\204\346\225\260\351\207\217.md" => docs/solutions/1000-1099/number-of-enclaves.md (100%) rename "Solutions/1012. \350\207\263\345\260\221\346\234\211 1 \344\275\215\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" => docs/solutions/1000-1099/numbers-with-repeated-digits.md (100%) rename "Solutions/1028. \344\273\216\345\205\210\345\272\217\351\201\215\345\216\206\350\277\230\345\216\237\344\272\214\345\217\211\346\240\221.md" => docs/solutions/1000-1099/recover-a-tree-from-preorder-traversal.md (100%) rename "Solutions/1047. \345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md" => docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string.md (100%) rename "Solutions/1021. \345\210\240\351\231\244\346\234\200\345\244\226\345\261\202\347\232\204\346\213\254\345\217\267.md" => docs/solutions/1000-1099/remove-outermost-parentheses.md (100%) rename "Solutions/1041. \345\233\260\344\272\216\347\216\257\344\270\255\347\232\204\346\234\272\345\231\250\344\272\272.md" => docs/solutions/1000-1099/robot-bounded-in-circle.md (100%) rename "Solutions/1091. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" => docs/solutions/1000-1099/shortest-path-in-binary-matrix.md (100%) rename "Solutions/1081. \344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\345\260\217\345\255\220\345\272\217\345\210\227.md" => docs/solutions/1000-1099/smallest-subsequence-of-distinct-characters.md (100%) rename "Solutions/1029. \344\270\244\345\234\260\350\260\203\345\272\246.md" => docs/solutions/1000-1099/two-city-scheduling.md (100%) rename "Solutions/1099. \345\260\217\344\272\216 K \347\232\204\344\270\244\346\225\260\344\271\213\345\222\214.md" => docs/solutions/1000-1099/two-sum-less-than-k.md (100%) rename "Solutions/1035. \344\270\215\347\233\270\344\272\244\347\232\204\347\272\277.md" => docs/solutions/1000-1099/uncrossed-lines.md (100%) rename "Solutions/1037. \346\234\211\346\225\210\347\232\204\345\233\236\346\227\213\351\225\226.md" => docs/solutions/1000-1099/valid-boomerang.md (100%) rename "Solutions/1109. \350\210\252\347\217\255\351\242\204\350\256\242\347\273\237\350\256\241.md" => docs/solutions/1100-1199/corporate-flight-bookings.md (100%) rename "Solutions/1108. IP \345\234\260\345\235\200\346\227\240\346\225\210\345\214\226.md" => docs/solutions/1100-1199/defanging-an-ip-address.md (100%) rename "Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" => docs/solutions/1100-1199/delete-nodes-and-return-forest.md (100%) rename "Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" => docs/solutions/1100-1199/diet-plan-performance.md (100%) rename "Solutions/1184. \345\205\254\344\272\244\347\253\231\351\227\264\347\232\204\350\267\235\347\246\273.md" => docs/solutions/1100-1199/distance-between-bus-stops.md (100%) rename "Solutions/1103. \345\210\206\347\263\226\346\236\234 II.md" => docs/solutions/1100-1199/distribute-candies-to-people.md (100%) rename "Solutions/1100. \351\225\277\345\272\246\344\270\272 K \347\232\204\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\345\255\220\344\270\262.md" => docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters.md (100%) create mode 100644 docs/solutions/1100-1199/index.md rename "Solutions/1143. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" => docs/solutions/1100-1199/longest-common-subsequence.md (100%) rename "Solutions/1161. \346\234\200\345\244\247\345\261\202\345\206\205\345\205\203\347\264\240\345\222\214.md" => docs/solutions/1100-1199/maximum-level-sum-of-a-binary-tree.md (100%) rename "Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" => docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together.md (100%) rename "Solutions/1137. \347\254\254 N \344\270\252\346\263\260\346\263\242\351\202\243\345\245\221\346\225\260.md" => docs/solutions/1100-1199/n-th-tribonacci-number.md (100%) rename "Solutions/1155. \346\216\267\351\252\260\345\255\220\347\255\211\344\272\216\347\233\256\346\240\207\345\222\214\347\232\204\346\226\271\346\263\225\346\225\260.md" => docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum.md (100%) rename "Solutions/1136. \345\271\266\350\241\214\350\257\276\347\250\213.md" => docs/solutions/1100-1199/parallel-courses.md (100%) rename "Solutions/1122. \346\225\260\347\273\204\347\232\204\347\233\270\345\257\271\346\216\222\345\272\217.md" => docs/solutions/1100-1199/relative-sort-array.md (100%) rename "Solutions/1227. \351\243\236\346\234\272\345\272\247\344\275\215\345\210\206\351\205\215\346\246\202\347\216\207.md" => docs/solutions/1200-1299/airplane-seat-assignment-probability.md (100%) rename "Solutions/1232. \347\274\200\347\202\271\346\210\220\347\272\277.md" => docs/solutions/1200-1299/check-if-it-is-a-straight-line.md (100%) rename "Solutions/1220. \347\273\237\350\256\241\345\205\203\351\237\263\345\255\227\346\257\215\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" => docs/solutions/1200-1299/count-vowels-permutation.md (100%) rename "Solutions/1296. \345\210\222\345\210\206\346\225\260\347\273\204\344\270\272\350\277\236\347\273\255\346\225\260\345\255\227\347\232\204\351\233\206\345\220\210.md" => docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers.md (100%) rename "Solutions/1261. \345\234\250\345\217\227\346\261\241\346\237\223\347\232\204\344\272\214\345\217\211\346\240\221\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240.md" => docs/solutions/1200-1299/find-elements-in-a-contaminated-binary-tree.md (100%) rename "Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" => docs/solutions/1200-1299/get-equal-substrings-within-budget.md (100%) create mode 100644 docs/solutions/1200-1299/index.md rename "Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" => docs/solutions/1200-1299/meeting-scheduler.md (100%) rename "Solutions/1217. \347\216\251\347\255\271\347\240\201.md" => docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position.md (100%) rename "Solutions/1247. \344\272\244\346\215\242\345\255\227\347\254\246\344\275\277\345\276\227\345\255\227\347\254\246\344\270\262\347\233\270\345\220\214.md" => docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal.md (100%) rename "Solutions/1266. \350\256\277\351\227\256\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\346\227\266\351\227\264.md" => docs/solutions/1200-1299/minimum-time-visiting-all-points.md (100%) rename "Solutions/1254. \347\273\237\350\256\241\345\260\201\351\227\255\345\262\233\345\261\277\347\232\204\346\225\260\347\233\256.md" => docs/solutions/1200-1299/number-of-closed-islands.md (100%) rename "Solutions/1253. \351\207\215\346\236\204 2 \350\241\214\344\272\214\350\277\233\345\210\266\347\237\251\351\230\265.md" => docs/solutions/1200-1299/reconstruct-a-2-row-binary-matrix.md (100%) rename "Solutions/1268. \346\220\234\347\264\242\346\216\250\350\215\220\347\263\273\347\273\237.md" => docs/solutions/1200-1299/search-suggestions-system.md (100%) rename "Solutions/1202. \344\272\244\346\215\242\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\347\264\240.md" => docs/solutions/1200-1299/smallest-string-with-swaps.md (100%) rename "Solutions/1281. \346\225\264\346\225\260\347\232\204\345\220\204\344\275\215\347\247\257\345\222\214\344\271\213\345\267\256.md" => docs/solutions/1200-1299/subtract-the-product-and-sum-of-digits-of-an-integer.md (100%) rename "Solutions/1245. \346\240\221\347\232\204\347\233\264\345\276\204.md" => docs/solutions/1200-1299/tree-diameter.md (100%) rename "Solutions/1305. \344\270\244\346\243\265\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\211\200\346\234\211\345\205\203\347\264\240.md" => docs/solutions/1300-1399/all-elements-in-two-binary-search-trees.md (100%) rename "Solutions/1344. \346\227\266\351\222\237\346\214\207\351\222\210\347\232\204\345\244\271\350\247\222.md" => docs/solutions/1300-1399/angle-between-hands-of-a-clock.md (100%) rename "Solutions/1362. \346\234\200\346\216\245\350\277\221\347\232\204\345\233\240\346\225\260.md" => docs/solutions/1300-1399/closest-divisors.md (100%) rename "Solutions/1317. \345\260\206\346\225\264\346\225\260\350\275\254\346\215\242\344\270\272\344\270\244\344\270\252\346\227\240\351\233\266\346\225\264\346\225\260\347\232\204\345\222\214.md" => docs/solutions/1300-1399/convert-integer-to-the-sum-of-two-no-zero-integers.md (100%) rename "Solutions/1313. \350\247\243\345\216\213\347\274\251\347\274\226\347\240\201\345\210\227\350\241\250.md" => docs/solutions/1300-1399/decompress-run-length-encoded-list.md (100%) rename "Solutions/1381. \350\256\276\350\256\241\344\270\200\344\270\252\346\224\257\346\214\201\345\242\236\351\207\217\346\223\215\344\275\234\347\232\204\346\240\210.md" => docs/solutions/1300-1399/design-a-stack-with-increment-operation.md (100%) create mode 100644 docs/solutions/1300-1399/index.md rename "Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" => docs/solutions/1300-1399/maximum-students-taking-exam.md (100%) rename "Solutions/1347. \345\210\266\351\200\240\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\347\232\204\346\234\200\345\260\217\346\255\245\351\252\244\346\225\260.md" => docs/solutions/1300-1399/minimum-number-of-steps-to-make-two-strings-anagram.md (100%) rename "Solutions/1319. \350\277\236\351\200\232\347\275\221\347\273\234\347\232\204\346\223\215\344\275\234\346\254\241\346\225\260.md" => docs/solutions/1300-1399/number-of-operations-to-make-network-connected.md (100%) rename "Solutions/1343. \345\244\247\345\260\217\344\270\272 K \344\270\224\345\271\263\345\235\207\345\200\274\345\244\247\344\272\216\347\255\211\344\272\216\351\230\210\345\200\274\347\232\204\345\255\220\346\225\260\347\273\204\346\225\260\347\233\256.md" => docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.md (100%) rename "Solutions/1358. \345\214\205\345\220\253\346\211\200\346\234\211\344\270\211\347\247\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262\346\225\260\347\233\256.md" => docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters.md (100%) rename "Solutions/1324. \347\253\226\347\233\264\346\211\223\345\215\260\345\215\225\350\257\215.md" => docs/solutions/1300-1399/print-words-vertically.md (100%) rename "Solutions/1338. \346\225\260\347\273\204\345\244\247\345\260\217\345\207\217\345\215\212.md" => docs/solutions/1300-1399/reduce-array-size-to-the-half.md (100%) rename "Solutions/1300. \350\275\254\345\217\230\346\225\260\347\273\204\345\220\216\346\234\200\346\216\245\350\277\221\347\233\256\346\240\207\345\200\274\347\232\204\346\225\260\347\273\204\345\222\214.md" => docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target.md (100%) rename "Solutions/1310. \345\255\220\346\225\260\347\273\204\345\274\202\346\210\226\346\237\245\350\257\242.md" => docs/solutions/1300-1399/xor-queries-of-a-subarray.md (100%) rename "Solutions/1491. \345\216\273\346\216\211\346\234\200\344\275\216\345\267\245\350\265\204\345\222\214\346\234\200\351\253\230\345\267\245\350\265\204\345\220\216\347\232\204\345\267\245\350\265\204\345\271\263\345\235\207\345\200\274.md" => docs/solutions/1400-1499/average-salary-excluding-the-minimum-and-maximum-salary.md (100%) rename "Solutions/1446. \350\277\236\347\273\255\345\255\227\347\254\246.md" => docs/solutions/1400-1499/consecutive-characters.md (100%) rename "Solutions/1400. \346\236\204\351\200\240 K \344\270\252\345\233\236\346\226\207\345\255\227\347\254\246\344\270\262.md" => docs/solutions/1400-1499/construct-k-palindrome-strings.md (100%) rename "Solutions/1449. \346\225\260\344\275\215\346\210\220\346\234\254\345\222\214\344\270\272\347\233\256\346\240\207\345\200\274\347\232\204\346\234\200\345\244\247\346\225\260\345\255\227.md" => docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target.md (100%) create mode 100644 docs/solutions/1400-1499/index.md rename "Solutions/1438. \347\273\235\345\257\271\345\267\256\344\270\215\350\266\205\350\277\207\351\231\220\345\210\266\347\232\204\346\234\200\351\225\277\350\277\236\347\273\255\345\255\220\346\225\260\347\273\204.md" => docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit.md (100%) rename "Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" => docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element.md (100%) rename "Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" => docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length.md (100%) rename "Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" => docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards.md (100%) rename "Solutions/1422. \345\210\206\345\211\262\345\255\227\347\254\246\344\270\262\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" => docs/solutions/1400-1499/maximum-score-after-splitting-a-string.md (100%) rename "Solutions/1482. \345\210\266\344\275\234 m \346\235\237\350\212\261\346\211\200\351\234\200\347\232\204\346\234\200\345\260\221\345\244\251\346\225\260.md" => docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets.md (100%) rename "Solutions/1450. \345\234\250\346\227\242\345\256\232\346\227\266\351\227\264\345\201\232\344\275\234\344\270\232\347\232\204\345\255\246\347\224\237\344\272\272\346\225\260.md" => docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time.md (100%) rename "Solutions/1496. \345\210\244\346\226\255\350\267\257\345\276\204\346\230\257\345\220\246\347\233\270\344\272\244.md" => docs/solutions/1400-1499/path-crossing.md (100%) rename "Solutions/1451. \351\207\215\346\226\260\346\216\222\345\210\227\345\217\245\345\255\220\344\270\255\347\232\204\345\215\225\350\257\215.md" => docs/solutions/1400-1499/rearrange-words-in-a-sentence.md (100%) rename "Solutions/1480. \344\270\200\347\273\264\346\225\260\347\273\204\347\232\204\345\212\250\346\200\201\345\222\214.md" => docs/solutions/1400-1499/running-sum-of-1d-array.md (100%) rename "Solutions/1447. \346\234\200\347\256\200\345\210\206\346\225\260.md" => docs/solutions/1400-1499/simplified-fractions.md (100%) rename "Solutions/1408. \346\225\260\347\273\204\344\270\255\347\232\204\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" => docs/solutions/1400-1499/string-matching-in-an-array.md (100%) rename "Solutions/1476. \345\255\220\347\237\251\345\275\242\346\237\245\350\257\242.md" => docs/solutions/1400-1499/subrectangle-queries.md (100%) rename "Solutions/1486. \346\225\260\347\273\204\345\274\202\346\210\226\346\223\215\344\275\234.md" => docs/solutions/1400-1499/xor-operation-in-an-array.md (100%) rename "Solutions/1502. \345\210\244\346\226\255\350\203\275\345\220\246\345\275\242\346\210\220\347\255\211\345\267\256\346\225\260\345\210\227.md" => docs/solutions/1500-1599/can-make-arithmetic-progression-from-sequence.md (100%) rename "Solutions/1534. \347\273\237\350\256\241\345\245\275\344\270\211\345\205\203\347\273\204.md" => docs/solutions/1500-1599/count-good-triplets.md (100%) rename "Solutions/1523. \345\234\250\345\214\272\351\227\264\350\214\203\345\233\264\345\206\205\347\273\237\350\256\241\345\245\207\346\225\260\346\225\260\347\233\256.md" => docs/solutions/1500-1599/count-odd-numbers-in-an-interval-range.md (100%) create mode 100644 docs/solutions/1500-1599/index.md rename "Solutions/1567. \344\271\230\347\247\257\344\270\272\346\255\243\346\225\260\347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204\351\225\277\345\272\246.md" => docs/solutions/1500-1599/maximum-length-of-subarray-with-positive-product.md (100%) rename "Solutions/1561. \344\275\240\345\217\257\344\273\245\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\241\254\345\270\201\346\225\260\347\233\256.md" => docs/solutions/1500-1599/maximum-number-of-coins-you-can-get.md (100%) rename "Solutions/1584. \350\277\236\346\216\245\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\350\264\271\347\224\250.md" => docs/solutions/1500-1599/min-cost-to-connect-all-points.md (100%) rename "Solutions/1595. \350\277\236\351\200\232\344\270\244\347\273\204\347\202\271\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" => docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points.md (100%) rename "Solutions/1547. \345\210\207\346\243\215\345\255\220\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" => docs/solutions/1500-1599/minimum-cost-to-cut-a-stick.md (100%) rename "Solutions/1551. \344\275\277\346\225\260\347\273\204\344\270\255\346\211\200\346\234\211\345\205\203\347\264\240\347\233\270\347\255\211\347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" => docs/solutions/1500-1599/minimum-operations-to-make-array-equal.md (100%) rename "Solutions/1507. \350\275\254\345\217\230\346\227\245\346\234\237\346\240\274\345\274\217.md" => docs/solutions/1500-1599/reformat-date.md (100%) rename "Solutions/1582. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\347\211\271\346\256\212\344\275\215\347\275\256.md" => docs/solutions/1500-1599/special-positions-in-a-binary-matrix.md (100%) rename "Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" => docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings.md (100%) rename "Solutions/1556. \345\215\203\344\275\215\345\210\206\351\232\224\346\225\260.md" => docs/solutions/1500-1599/thousand-separator.md (100%) rename "Solutions/1641. \347\273\237\350\256\241\345\255\227\345\205\270\345\272\217\345\205\203\351\237\263\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256.md" => docs/solutions/1600-1699/count-sorted-vowel-strings.md (100%) rename "Solutions/1617. \347\273\237\350\256\241\345\255\220\346\240\221\344\270\255\345\237\216\345\270\202\344\271\213\351\227\264\346\234\200\345\244\247\350\267\235\347\246\273.md" => docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities.md (100%) rename "Solutions/1603. \350\256\276\350\256\241\345\201\234\350\275\246\347\263\273\347\273\237.md" => docs/solutions/1600-1699/design-parking-system.md (100%) rename "Solutions/1657. \347\241\256\345\256\232\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\346\230\257\345\220\246\346\216\245\350\277\221.md" => docs/solutions/1600-1699/determine-if-two-strings-are-close.md (100%) rename "Solutions/1605. \347\273\231\345\256\232\350\241\214\345\222\214\345\210\227\347\232\204\345\222\214\346\261\202\345\217\257\350\241\214\347\237\251\351\230\265.md" => docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums.md (100%) rename "Solutions/1646. \350\216\267\345\217\226\347\224\237\346\210\220\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\244\247\345\200\274.md" => docs/solutions/1600-1699/get-maximum-in-generated-array.md (100%) create mode 100644 docs/solutions/1600-1699/index.md rename "Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" => docs/solutions/1600-1699/maximum-erasure-value.md (100%) rename "Solutions/1614. \346\213\254\345\217\267\347\232\204\346\234\200\345\244\247\345\265\214\345\245\227\346\267\261\345\272\246.md" => docs/solutions/1600-1699/maximum-nesting-depth-of-the-parentheses.md (100%) rename "Solutions/1647. \345\255\227\347\254\246\351\242\221\346\254\241\345\224\257\344\270\200\347\232\204\346\234\200\345\260\217\345\210\240\351\231\244\346\254\241\346\225\260.md" => docs/solutions/1600-1699/minimum-deletions-to-make-character-frequencies-unique.md (100%) rename "Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" => docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero.md (100%) rename "Solutions/1698. \345\255\227\347\254\246\344\270\262\347\232\204\344\270\215\345\220\214\345\255\220\345\255\227\347\254\246\344\270\262\344\270\252\346\225\260.md" => docs/solutions/1600-1699/number-of-distinct-substrings-in-a-string.md (100%) rename "Solutions/1631. \346\234\200\345\260\217\344\275\223\345\212\233\346\266\210\350\200\227\350\267\257\345\276\204.md" => docs/solutions/1600-1699/path-with-minimum-effort.md (100%) rename "Solutions/1672. \346\234\200\345\257\214\346\234\211\345\256\242\346\210\267\347\232\204\350\265\204\344\272\247\346\200\273\351\207\217.md" => docs/solutions/1600-1699/richest-customer-wealth.md (100%) rename "Solutions/1716. \350\256\241\347\256\227\345\212\233\346\211\243\351\223\266\350\241\214\347\232\204\351\222\261.md" => docs/solutions/1700-1799/calculate-money-in-leetcode-bank.md (100%) rename "Solutions/1790. \344\273\205\346\211\247\350\241\214\344\270\200\346\254\241\345\255\227\347\254\246\344\270\262\344\272\244\346\215\242\350\203\275\345\220\246\344\275\277\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" => docs/solutions/1700-1799/check-if-one-string-swap-can-make-strings-equal.md (100%) rename "Solutions/1720. \350\247\243\347\240\201\345\274\202\346\210\226\345\220\216\347\232\204\346\225\260\347\273\204.md" => docs/solutions/1700-1799/decode-xored-array.md (100%) rename "Solutions/1791. \346\211\276\345\207\272\346\230\237\345\236\213\345\233\276\347\232\204\344\270\255\345\277\203\350\212\202\347\202\271.md" => docs/solutions/1700-1799/find-center-of-star-graph.md (100%) rename "Solutions/1779. \346\211\276\345\210\260\346\234\200\350\277\221\347\232\204\346\234\211\347\233\270\345\220\214 X \346\210\226 Y \345\235\220\346\240\207\347\232\204\347\202\271.md" => docs/solutions/1700-1799/find-nearest-point-that-has-the-same-x-or-y-coordinate.md (100%) create mode 100644 docs/solutions/1700-1799/index.md rename "Solutions/1736. \346\233\277\346\215\242\351\232\220\350\227\217\346\225\260\345\255\227\345\276\227\345\210\260\347\232\204\346\234\200\346\231\232\346\227\266\351\227\264.md" => docs/solutions/1700-1799/latest-time-by-replacing-hidden-digits.md (100%) rename "Solutions/1763. \346\234\200\351\225\277\347\232\204\347\276\216\345\245\275\345\255\220\345\255\227\347\254\246\344\270\262.md" => docs/solutions/1700-1799/longest-nice-substring.md (100%) rename "Solutions/1749. \344\273\273\346\204\217\345\255\220\346\225\260\347\273\204\345\222\214\347\232\204\347\273\235\345\257\271\345\200\274\347\232\204\346\234\200\345\244\247\345\200\274.md" => docs/solutions/1700-1799/maximum-absolute-sum-of-any-subarray.md (100%) rename "Solutions/1742. \347\233\222\345\255\220\344\270\255\345\260\217\347\220\203\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" => docs/solutions/1700-1799/maximum-number-of-balls-in-a-box.md (100%) rename "Solutions/1710. \345\215\241\350\275\246\344\270\212\347\232\204\346\234\200\345\244\247\345\215\225\345\205\203\346\225\260.md" => docs/solutions/1700-1799/maximum-units-on-a-truck.md (100%) rename "Solutions/1726. \345\220\214\347\247\257\345\205\203\347\273\204.md" => docs/solutions/1700-1799/tuple-with-same-product.md (100%) rename "Solutions/1893. \346\243\200\346\237\245\346\230\257\345\220\246\345\214\272\345\237\237\345\206\205\346\211\200\346\234\211\346\225\264\346\225\260\351\203\275\350\242\253\350\246\206\347\233\226.md" => docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered.md (100%) create mode 100644 docs/solutions/1800-1899/index.md rename "Solutions/1858. \345\214\205\345\220\253\346\211\200\346\234\211\345\211\215\347\274\200\347\232\204\346\234\200\351\225\277\345\215\225\350\257\215.md" => docs/solutions/1800-1899/longest-word-with-all-prefixes.md (100%) rename "Solutions/1833. \351\233\252\347\263\225\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" => docs/solutions/1800-1899/maximum-ice-cream-bars.md (100%) rename "Solutions/1877. \346\225\260\347\273\204\344\270\255\346\234\200\345\244\247\346\225\260\345\257\271\345\222\214\347\232\204\346\234\200\345\260\217\345\200\274.md" => docs/solutions/1800-1899/minimize-maximum-pair-sum-in-array.md (100%) rename "Solutions/1827. \346\234\200\345\260\221\346\223\215\344\275\234\344\275\277\346\225\260\347\273\204\351\200\222\345\242\236.md" => docs/solutions/1800-1899/minimum-operations-to-make-the-array-increasing.md (100%) rename "Solutions/1879. \344\270\244\344\270\252\346\225\260\347\273\204\346\234\200\345\260\217\347\232\204\345\274\202\346\210\226\345\200\274\344\271\213\345\222\214.md" => docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays.md (100%) rename "Solutions/1897. \351\207\215\346\226\260\345\210\206\351\205\215\345\255\227\347\254\246\344\275\277\346\211\200\346\234\211\345\255\227\347\254\246\344\270\262\351\203\275\347\233\270\347\255\211.md" => docs/solutions/1800-1899/redistribute-characters-to-make-all-strings-equal.md (100%) rename "Solutions/1844. \345\260\206\346\211\200\346\234\211\346\225\260\345\255\227\347\224\250\345\255\227\347\254\246\346\233\277\346\215\242.md" => docs/solutions/1800-1899/replace-all-digits-with-characters.md (100%) rename "Solutions/1822. \346\225\260\347\273\204\345\205\203\347\264\240\347\247\257\347\232\204\347\254\246\345\217\267.md" => docs/solutions/1800-1899/sign-of-the-product-of-an-array.md (100%) rename "Solutions/1859. \345\260\206\345\217\245\345\255\220\346\216\222\345\272\217.md" => docs/solutions/1800-1899/sorting-the-sentence.md (100%) rename "Solutions/1876. \351\225\277\345\272\246\344\270\272\344\270\211\344\270\224\345\220\204\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" => docs/solutions/1800-1899/substrings-of-size-three-with-distinct-characters.md (100%) rename "Solutions/1936. \346\226\260\345\242\236\347\232\204\346\234\200\345\260\221\345\217\260\351\230\266\346\225\260.md" => docs/solutions/1900-1999/add-minimum-number-of-rungs.md (100%) rename "Solutions/1941. \346\243\200\346\237\245\346\230\257\345\220\246\346\211\200\346\234\211\345\255\227\347\254\246\345\207\272\347\216\260\346\254\241\346\225\260\347\233\270\345\220\214.md" => docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences.md (100%) rename "Solutions/1929. \346\225\260\347\273\204\344\270\262\350\201\224.md" => docs/solutions/1900-1999/concatenation-of-array.md (100%) rename "Solutions/1925. \347\273\237\350\256\241\345\271\263\346\226\271\345\222\214\344\270\211\345\205\203\347\273\204\347\232\204\346\225\260\347\233\256.md" => docs/solutions/1900-1999/count-square-sum-triples.md (100%) rename "Solutions/1921. \346\266\210\347\201\255\346\200\252\347\211\251\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" => docs/solutions/1900-1999/eliminate-maximum-number-of-monsters.md (100%) rename "Solutions/1991. \346\211\276\345\210\260\346\225\260\347\273\204\347\232\204\344\270\255\351\227\264\344\275\215\347\275\256.md" => docs/solutions/1900-1999/find-the-middle-index-in-array.md (100%) create mode 100644 docs/solutions/1900-1999/index.md rename "Solutions/1903. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\234\200\345\244\247\345\245\207\346\225\260.md" => docs/solutions/1900-1999/largest-odd-number-in-string.md (100%) rename "Solutions/1947. \346\234\200\345\244\247\345\205\274\345\256\271\346\200\247\350\257\204\345\210\206\345\222\214.md" => docs/solutions/1900-1999/maximum-compatibility-score-sum.md (100%) rename "Solutions/1984. \345\255\246\347\224\237\345\210\206\346\225\260\347\232\204\346\234\200\345\260\217\345\267\256\345\200\274.md" => docs/solutions/1900-1999/minimum-difference-between-highest-and-lowest-of-k-scores.md (100%) rename "Solutions/1986. \345\256\214\346\210\220\344\273\273\345\212\241\347\232\204\346\234\200\345\260\221\345\267\245\344\275\234\346\227\266\351\227\264\346\256\265.md" => docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks.md (100%) rename "Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" => docs/solutions/1900-1999/the-number-of-good-subsets.md (100%) rename "Solutions/1930. \351\225\277\345\272\246\344\270\272 3 \347\232\204\344\270\215\345\220\214\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" => docs/solutions/1900-1999/unique-length-3-palindromic-subsequences.md (100%) rename "Solutions/2011. \346\211\247\350\241\214\346\223\215\344\275\234\345\220\216\347\232\204\345\217\230\351\207\217\345\200\274.md" => docs/solutions/2000-2099/final-value-of-variable-after-performing-operations.md (100%) create mode 100644 docs/solutions/2000-2099/index.md rename "Solutions/2023. \350\277\236\346\216\245\345\220\216\347\255\211\344\272\216\347\233\256\346\240\207\345\255\227\347\254\246\344\270\262\347\232\204\345\255\227\347\254\246\344\270\262\345\257\271.md" => docs/solutions/2000-2099/number-of-pairs-of-strings-with-concatenation-equal-to-target.md (100%) rename "Solutions/2050. \345\271\266\350\241\214\350\257\276\347\250\213 III.md" => docs/solutions/2000-2099/parallel-courses-iii.md (100%) rename "Solutions/2156. \346\237\245\346\211\276\347\273\231\345\256\232\345\223\210\345\270\214\345\200\274\347\232\204\345\255\220\344\270\262.md" => docs/solutions/2100-2199/find-substring-with-given-hash-value.md (100%) create mode 100644 docs/solutions/2100-2199/index.md rename "Solutions/2172. \346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\344\270\216\345\222\214.md" => docs/solutions/2100-2199/maximum-and-sum-of-array.md (100%) rename "Solutions/2235. \344\270\244\346\225\264\346\225\260\347\233\270\345\212\240.md" => docs/solutions/2200-2299/add-two-integers.md (100%) rename "Solutions/2276. \347\273\237\350\256\241\345\214\272\351\227\264\344\270\255\347\232\204\346\225\264\346\225\260\346\225\260\347\233\256.md" => docs/solutions/2200-2299/count-integers-in-intervals.md (100%) rename "Solutions/2249. \347\273\237\350\256\241\345\234\206\345\206\205\346\240\274\347\202\271\346\225\260\347\233\256.md" => docs/solutions/2200-2299/count-lattice-points-inside-a-circle.md (100%) create mode 100644 docs/solutions/2200-2299/index.md rename "Solutions/2246. \347\233\270\351\202\273\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\346\234\200\351\225\277\350\267\257\345\276\204.md" => docs/solutions/2200-2299/longest-path-with-different-adjacent-characters.md (100%) rename "Solutions/2376. \347\273\237\350\256\241\347\211\271\346\256\212\346\225\264\346\225\260.md" => docs/solutions/2300-2399/count-special-integers.md (100%) create mode 100644 docs/solutions/2300-2399/index.md create mode 100644 docs/solutions/2400-2499/index.md rename "Solutions/2427. \345\205\254\345\233\240\345\255\220\347\232\204\346\225\260\347\233\256.md" => docs/solutions/2400-2499/number-of-common-factors.md (100%) rename "Solutions/2538. \346\234\200\345\244\247\344\273\267\345\200\274\345\222\214\344\270\216\346\234\200\345\260\217\344\273\267\345\200\274\345\222\214\347\232\204\345\267\256\345\200\274.md" => docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum.md (100%) create mode 100644 docs/solutions/2500-2599/index.md rename "Solutions/2585. \350\216\267\345\276\227\345\210\206\346\225\260\347\232\204\346\226\271\346\263\225\346\225\260.md" => docs/solutions/2500-2599/number-of-ways-to-earn-points.md (100%) rename "Solutions/2719. \347\273\237\350\256\241\346\225\264\346\225\260\346\225\260\347\233\256.md" => docs/solutions/2700-2799/count-of-integers.md (100%) create mode 100644 docs/solutions/2700-2799/index.md rename "Solutions/\351\235\242\350\257\225\351\242\230 08.09. \346\213\254\345\217\267.md" => docs/solutions/Interviews/bracket-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 16.26. \350\256\241\347\256\227\345\231\250.md" => docs/solutions/Interviews/calculator-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 08.10. \351\242\234\350\211\262\345\241\253\345\205\205.md" => docs/solutions/Interviews/color-fill-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 08.12. \345\205\253\347\232\207\345\220\216.md" => docs/solutions/Interviews/eight-queens-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 16.05. \351\230\266\344\271\230\345\260\276\346\225\260.md" => docs/solutions/Interviews/factorial-zeros-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 04.08. \351\246\226\344\270\252\345\205\261\345\220\214\347\245\226\345\205\210.md" => docs/solutions/Interviews/first-common-ancestor-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 10.02. \345\217\230\344\275\215\350\257\215\347\273\204.md" => docs/solutions/Interviews/group-anagrams-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 03.04. \345\214\226\346\240\210\344\270\272\351\230\237.md" => docs/solutions/Interviews/implement-queue-using-stacks-lcci.md (100%) create mode 100644 docs/solutions/Interviews/index.md rename "Solutions/\351\235\242\350\257\225\351\242\230 02.07. \351\223\276\350\241\250\347\233\270\344\272\244.md" => docs/solutions/Interviews/intersection-of-two-linked-lists-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 02.02. \350\277\224\345\233\236\345\200\222\346\225\260\347\254\254 k \344\270\252\350\212\202\347\202\271.md" => docs/solutions/Interviews/kth-node-from-end-of-list-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 04.05. \345\220\210\346\263\225\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" => docs/solutions/Interviews/legal-binary-search-tree-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 02.08. \347\216\257\350\267\257\346\243\200\346\265\213.md" => docs/solutions/Interviews/linked-list-cycle-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 17.15. \346\234\200\351\225\277\345\215\225\350\257\215.md" => docs/solutions/Interviews/longest-word-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 03.02. \346\240\210\347\232\204\346\234\200\345\260\217\345\200\274.md" => docs/solutions/Interviews/min-stack-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 04.02. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" => docs/solutions/Interviews/minimum-height-tree-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 17.17. \345\244\232\346\254\241\346\220\234\347\264\242.md" => docs/solutions/Interviews/multi-search-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 17.06. 2\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" => docs/solutions/Interviews/number-of-2s-in-range-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 02.06. \345\233\236\346\226\207\351\223\276\350\241\250.md" => docs/solutions/Interviews/palindrome-linked-list-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 04.12. \346\261\202\345\222\214\350\267\257\345\276\204.md" => docs/solutions/Interviews/paths-with-sum-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 08.07. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" => docs/solutions/Interviews/permutation-i-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 08.08. \346\234\211\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" => docs/solutions/Interviews/permutation-ii-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 08.04. \345\271\202\351\233\206.md" => docs/solutions/Interviews/power-set-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 01.07. \346\227\213\350\275\254\347\237\251\351\230\265.md" => docs/solutions/Interviews/rotate-matrix-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 17.14. \346\234\200\345\260\217K\344\270\252\346\225\260.md" => docs/solutions/Interviews/smallest-k-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 10.09. \346\216\222\345\272\217\347\237\251\351\230\265\346\237\245\346\211\276.md" => docs/solutions/Interviews/sorted-matrix-search-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 10.01. \345\220\210\345\271\266\346\216\222\345\272\217\347\232\204\346\225\260\347\273\204.md" => docs/solutions/Interviews/sorted-merge-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 04.06. \345\220\216\347\273\247\350\200\205.md" => docs/solutions/Interviews/successor-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 02.05. \351\223\276\350\241\250\346\261\202\345\222\214.md" => docs/solutions/Interviews/sum-lists-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 16.02. \345\215\225\350\257\215\351\242\221\347\216\207.md" => docs/solutions/Interviews/words-frequency-lcci.md (100%) rename "Solutions/\351\235\242\350\257\225\351\242\230 01.08. \351\233\266\347\237\251\351\230\265.md" => docs/solutions/Interviews/zero-matrix-lcci.md (100%) rename "Solutions/\345\211\221\346\214\207 Offer II 075. \346\225\260\347\273\204\347\233\270\345\257\271\346\216\222\345\272\217.md" => docs/solutions/LCR/0H97ZC.md (90%) rename "Solutions/\345\211\221\346\214\207 Offer II 087. \345\244\215\345\216\237 IP.md" => docs/solutions/LCR/0on3uN.md (94%) rename "Solutions/\345\211\221\346\214\207 Offer II 039. \347\233\264\346\226\271\345\233\276\346\234\200\345\244\247\347\237\251\345\275\242\351\235\242\347\247\257.md" => docs/solutions/LCR/0ynMMM.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer II 007. \346\225\260\347\273\204\344\270\255\345\222\214\344\270\272 0 \347\232\204\344\270\211\344\270\252\346\225\260.md" => docs/solutions/LCR/1fGaJU.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" => docs/solutions/LCR/21dk04.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer II 098. \350\267\257\345\276\204\347\232\204\346\225\260\347\233\256.md" => docs/solutions/LCR/2AoeFn.md (82%) rename "Solutions/\345\211\221\346\214\207 Offer II 008. \345\222\214\345\244\247\344\272\216\347\255\211\344\272\216 target \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" => docs/solutions/LCR/2VG8Kg.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 107. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\235\347\246\273.md" => docs/solutions/LCR/2bCMpM.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 049. \344\273\216\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\347\232\204\350\267\257\345\276\204\346\225\260\345\255\227\344\271\213\345\222\214.md" => docs/solutions/LCR/3Etpl5.md (82%) rename "Solutions/\345\211\221\346\214\207 Offer II 023. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\351\207\215\345\220\210\350\212\202\347\202\271.md" => docs/solutions/LCR/3u1WK4.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210.md" => docs/solutions/LCR/4sjJUc.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer II 029. \346\216\222\345\272\217\347\232\204\345\276\252\347\216\257\351\223\276\350\241\250.md" => docs/solutions/LCR/4ueAj6.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer II 035. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" => docs/solutions/LCR/569nqc.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer II 050. \345\220\221\344\270\213\347\232\204\350\267\257\345\276\204\350\212\202\347\202\271\344\271\213\345\222\214.md" => docs/solutions/LCR/6eUYwP.md (82%) rename "Solutions/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271.md" => docs/solutions/LCR/7LpjUW.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer II 077. \351\223\276\350\241\250\346\216\222\345\272\217.md" => docs/solutions/LCR/7WHec2.md (90%) rename "Solutions/\345\211\221\346\214\207 Offer II 057. \345\200\274\345\222\214\344\270\213\346\240\207\344\271\213\345\267\256\351\203\275\345\234\250\347\273\231\345\256\232\347\232\204\350\214\203\345\233\264\345\206\205.md" => docs/solutions/LCR/7WqeDu.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 084. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" => docs/solutions/LCR/7p8L0Z.md (66%) rename "Solutions/\345\211\221\346\214\207 Offer II 036. \345\220\216\347\274\200\350\241\250\350\276\276\345\274\217.md" => docs/solutions/LCR/8Zf90G.md (85%) rename "Solutions/\345\211\221\346\214\207 Offer II 011. 0 \345\222\214 1 \344\270\252\346\225\260\347\233\270\345\220\214\347\232\204\345\255\220\346\225\260\347\273\204.md" => docs/solutions/LCR/A1NYOS.md (94%) rename "Solutions/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256.md" => docs/solutions/LCR/D0F0SV.md (86%) rename "Solutions/\345\211\221\346\214\207 Offer II 030. \346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\351\232\217\346\234\272\350\256\277\351\227\256\351\203\275\346\230\257 O(1) \347\232\204\345\256\271\345\231\250.md" => docs/solutions/LCR/FortPu.md (90%) rename "Solutions/\345\211\221\346\214\207 Offer II 089. \346\210\277\345\261\213\345\201\267\347\233\227.md" => docs/solutions/LCR/Gu0c2T.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer II 088. \347\210\254\346\245\274\346\242\257\347\232\204\346\234\200\345\260\221\346\210\220\346\234\254.md" => docs/solutions/LCR/GzCJIP.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 042. \346\234\200\350\277\221\350\257\267\346\261\202\346\254\241\346\225\260.md" => docs/solutions/LCR/H8086Q.md (85%) rename "Solutions/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267.md" => docs/solutions/LCR/IDBivT.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225.md" => docs/solutions/LCR/JFETK5.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 026. \351\207\215\346\216\222\351\223\276\350\241\250.md" => docs/solutions/LCR/LGjMqU.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 045. \344\272\214\345\217\211\346\240\221\346\234\200\345\272\225\345\261\202\346\234\200\345\267\246\350\276\271\347\232\204\345\200\274.md" => docs/solutions/LCR/LwUNpT.md (85%) rename "Solutions/\345\211\221\346\214\207 Offer II 017. \345\220\253\346\234\211\346\211\200\346\234\211\345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\345\255\227\347\254\246\344\270\262.md" => docs/solutions/LCR/M1oyTv.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer II 086. \345\210\206\345\211\262\345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262.md" => docs/solutions/LCR/M99OJA.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 068. \346\237\245\346\211\276\346\217\222\345\205\245\344\275\215\347\275\256.md" => docs/solutions/LCR/N6YdxV.md (87%) rename "Solutions/\345\211\221\346\214\207 Offer II 101. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" => docs/solutions/LCR/NUPfPr.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" => docs/solutions/LCR/NYBBNL.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer II 043. \345\276\200\345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\267\273\345\212\240\350\212\202\347\202\271.md" => docs/solutions/LCR/NaqhDT.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer II 013. \344\272\214\347\273\264\345\255\220\347\237\251\351\230\265\347\232\204\345\222\214.md" => docs/solutions/LCR/O4NDxx.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 031. \346\234\200\350\277\221\346\234\200\345\260\221\344\275\277\347\224\250\347\274\223\345\255\230.md" => docs/solutions/LCR/OrIXps.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer II 053. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" => docs/solutions/LCR/P5rCT8.md (85%) rename "Solutions/\345\211\221\346\214\207 Offer II 090. \347\216\257\345\275\242\346\210\277\345\261\213\345\201\267\347\233\227.md" => docs/solutions/LCR/PzWKhm.md (80%) rename "Solutions/\345\211\221\346\214\207 Offer II 093. \346\234\200\351\225\277\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" => docs/solutions/LCR/Q91FMA.md (96%) rename "Solutions/\345\211\221\346\214\207 Offer II 113. \350\257\276\347\250\213\351\241\272\345\272\217.md" => docs/solutions/LCR/QA2IGt.md (93%) rename "Solutions/\345\211\221\346\214\207 Offer II 062. \345\256\236\347\216\260\345\211\215\347\274\200\346\240\221.md" => docs/solutions/LCR/QC3q1f.md (94%) rename "Solutions/\345\211\221\346\214\207 Offer II 010. \345\222\214\344\270\272 k \347\232\204\345\255\220\346\225\260\347\273\204.md" => docs/solutions/LCR/QTMn0o.md (93%) rename "Solutions/\345\211\221\346\214\207 Offer II 028. \345\261\225\345\271\263\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" => docs/solutions/LCR/Qv1Da2.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 019. \346\234\200\345\244\232\345\210\240\351\231\244\344\270\200\344\270\252\345\255\227\347\254\246\345\276\227\345\210\260\345\233\236\346\226\207.md" => docs/solutions/LCR/RQku0D.md (86%) rename "Solutions/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271.md" => docs/solutions/LCR/SLwz0R.md (87%) rename "Solutions/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264.md" => docs/solutions/LCR/SsGoHC.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206.md" => docs/solutions/LCR/TVdhkn.md (82%) rename "Solutions/\345\211\221\346\214\207 Offer II 024. \345\217\215\350\275\254\351\223\276\350\241\250.md" => docs/solutions/LCR/UHnkqh.md (95%) rename "Solutions/\345\211\221\346\214\207 Offer II 064. \347\245\236\345\245\207\347\232\204\345\255\227\345\205\270.md" => docs/solutions/LCR/US1pGT.md (93%) rename "Solutions/\345\211\221\346\214\207 Offer II 063. \346\233\277\346\215\242\345\215\225\350\257\215.md" => docs/solutions/LCR/UhWRSj.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 083. \346\262\241\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" => docs/solutions/LCR/VvJkup.md (83%) rename "Solutions/\345\211\221\346\214\207 Offer II 004. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" => docs/solutions/LCR/WGki4K.md (93%) rename "Solutions/\345\211\221\346\214\207 Offer II 046. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\344\276\247\350\247\206\345\233\276.md" => docs/solutions/LCR/WNC0Lk.md (84%) rename "Solutions/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" => docs/solutions/LCR/WhsWhI.md (92%) rename "Solutions/0735. \350\241\214\346\230\237\347\242\260\346\222\236.md" => docs/solutions/LCR/XagZNi.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207.md" => docs/solutions/LCR/XltzEq.md (86%) rename "Solutions/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274.md" => docs/solutions/LCR/YaVDxD.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 081. \345\205\201\350\256\270\351\207\215\345\244\215\351\200\211\346\213\251\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" => docs/solutions/LCR/Ygoe9J.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" => docs/solutions/LCR/ZL6zAn.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 009. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" => docs/solutions/LCR/ZVAVXX.md (87%) rename "Solutions/\345\211\221\346\214\207 Offer II 020. \345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\344\270\252\346\225\260.md" => docs/solutions/LCR/a7VOhD.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250.md" => docs/solutions/LCR/aMhZSa.md (81%) rename "Solutions/\345\211\221\346\214\207 Offer II 005. \345\215\225\350\257\215\351\225\277\345\272\246\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md" => docs/solutions/LCR/aseY1I.md (90%) rename "Solutions/\345\211\221\346\214\207 Offer II 116. \347\234\201\344\273\275\346\225\260\351\207\217.md" => docs/solutions/LCR/bLyHh0.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer 46. \346\212\212\346\225\260\345\255\227\347\277\273\350\257\221\346\210\220\345\255\227\347\254\246\344\270\262.md" => docs/solutions/LCR/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof.md (84%) rename "Solutions/\345\211\221\346\214\207 Offer 45. \346\212\212\346\225\260\347\273\204\346\216\222\346\210\220\346\234\200\345\260\217\347\232\204\346\225\260.md" => docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof.md (78%) rename "Solutions/\345\211\221\346\214\207 Offer 67. \346\212\212\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\210\220\346\225\264\346\225\260.md" => docs/solutions/LCR/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer 30. \345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.md" => docs/solutions/LCR/bao-han-minhan-shu-de-zhan-lcof.md (85%) rename "Solutions/\345\211\221\346\214\207 Offer 61. \346\211\221\345\205\213\347\211\214\344\270\255\347\232\204\351\241\272\345\255\220.md" => docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof.md (87%) rename "Solutions/\345\211\221\346\214\207 Offer 65. \344\270\215\347\224\250\345\212\240\345\207\217\344\271\230\351\231\244\345\201\232\345\212\240\346\263\225.md" => docs/solutions/LCR/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof.md (85%) rename "Solutions/\345\211\221\346\214\207 Offer II 022. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\350\212\202\347\202\271.md" => docs/solutions/LCR/c32eOV.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer 49. \344\270\221\346\225\260.md" => docs/solutions/LCR/chou-shu-lcof.md (86%) rename "Solutions/\345\211\221\346\214\207 Offer 32 - II. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 II.md" => docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof.md (83%) rename "Solutions/\345\211\221\346\214\207 Offer 32 - III. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 III.md" => docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof.md (87%) rename "Solutions/\345\211\221\346\214\207 Offer 32 - I. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" => docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-lcof.md (80%) rename "Solutions/\345\211\221\346\214\207 Offer 06. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" => docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof.md (70%) rename "Solutions/\345\211\221\346\214\207 Offer II 032. \346\234\211\346\225\210\347\232\204\345\217\230\344\275\215\350\257\215.md" => docs/solutions/LCR/dKk3P7.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer 17. \346\211\223\345\215\260\344\273\2161\345\210\260\346\234\200\345\244\247\347\232\204n\344\275\215\346\225\260.md" => docs/solutions/LCR/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof.md (60%) rename "Solutions/\345\211\221\346\214\207 Offer 50. \347\254\254\344\270\200\344\270\252\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\345\255\227\347\254\246.md" => docs/solutions/LCR/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof.md (73%) rename "Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" => docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof.md (79%) rename "Solutions/\345\211\221\346\214\207 Offer 28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" => docs/solutions/LCR/dui-cheng-de-er-cha-shu-lcof.md (84%) rename "Solutions/\345\211\221\346\214\207 Offer 59 - II. \351\230\237\345\210\227\347\232\204\346\234\200\345\244\247\345\200\274.md" => docs/solutions/LCR/dui-lie-de-zui-da-zhi-lcof.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer 27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" => docs/solutions/LCR/er-cha-shu-de-jing-xiang-lcof.md (74%) rename "Solutions/\345\211\221\346\214\207 Offer 55 - I. \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" => docs/solutions/LCR/er-cha-shu-de-shen-du-lcof.md (78%) rename "Solutions/\345\211\221\346\214\207 Offer 68 - II. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" => docs/solutions/LCR/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer 34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" => docs/solutions/LCR/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof.md (80%) rename "Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" => docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof.md (93%) rename "Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" => docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer 68 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" => docs/solutions/LCR/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof.md (86%) rename "Solutions/\345\211\221\346\214\207 Offer 36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" => docs/solutions/LCR/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof.md (84%) rename "Solutions/\345\211\221\346\214\207 Offer 15. \344\272\214\350\277\233\345\210\266\344\270\2551\347\232\204\344\270\252\346\225\260.md" => docs/solutions/LCR/er-jin-zhi-zhong-1de-ge-shu-lcof.md (82%) rename "Solutions/\345\211\221\346\214\207 Offer 04. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" => docs/solutions/LCR/er-wei-shu-zu-zhong-de-cha-zhao-lcof.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer 58 - I. \347\277\273\350\275\254\345\215\225\350\257\215\351\241\272\345\272\217.md" => docs/solutions/LCR/fan-zhuan-dan-ci-shun-xu-lcof.md (74%) rename "Solutions/\345\211\221\346\214\207 Offer 24. \345\217\215\350\275\254\351\223\276\350\241\250.md" => docs/solutions/LCR/fan-zhuan-lian-biao-lcof.md (94%) rename "Solutions/\345\211\221\346\214\207 Offer 10- I. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" => docs/solutions/LCR/fei-bo-na-qi-shu-lie-lcof.md (76%) rename "Solutions/\345\211\221\346\214\207 Offer II 112. \346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" => docs/solutions/LCR/fpTFWP.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer 35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" => docs/solutions/LCR/fu-za-lian-biao-de-fu-zhi-lcof.md (83%) rename "Solutions/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227.md" => docs/solutions/LCR/g5c51o.md (94%) rename "Solutions/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256.md" => docs/solutions/LCR/gaM7Ch.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer 66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" => docs/solutions/LCR/gou-jian-cheng-ji-shu-zu-lcof.md (82%) rename "Solutions/\345\211\221\346\214\207 Offer 63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" => docs/solutions/LCR/gu-piao-de-zui-da-li-run-lcof.md (84%) rename "Solutions/\345\211\221\346\214\207 Offer II 048. \345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" => docs/solutions/LCR/h54YBf.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 044. \344\272\214\345\217\211\346\240\221\346\257\217\345\261\202\347\232\204\346\234\200\345\244\247\345\200\274.md" => docs/solutions/LCR/hPov7L.md (85%) rename "Solutions/\345\211\221\346\214\207 Offer 25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" => docs/solutions/LCR/he-bing-liang-ge-pai-xu-de-lian-biao-lcof.md (83%) rename "Solutions/\345\211\221\346\214\207 Offer 57 - II. \345\222\214\344\270\272s\347\232\204\350\277\236\347\273\255\346\255\243\346\225\260\345\272\217\345\210\227.md" => docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof.md (93%) rename "Solutions/\345\211\221\346\214\207 Offer 57. \345\222\214\344\270\272s\347\232\204\344\270\244\344\270\252\346\225\260\345\255\227.md" => docs/solutions/LCR/he-wei-sde-liang-ge-shu-zi-lcof.md (80%) rename "Solutions/\345\211\221\346\214\207 Offer 59 - I. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\346\234\200\345\244\247\345\200\274.md" => docs/solutions/LCR/hua-dong-chuang-kou-de-zui-da-zhi-lcof.md (86%) rename "Solutions/\345\211\221\346\214\207 Offer II 038. \346\257\217\346\227\245\346\270\251\345\272\246.md" => docs/solutions/LCR/iIQa4I.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 065. \346\234\200\347\237\255\347\232\204\345\215\225\350\257\215\347\274\226\347\240\201.md" => docs/solutions/LCR/iSwD2y.md (92%) create mode 100644 docs/solutions/LCR/index.md rename "Solutions/\345\211\221\346\214\207 Offer II 059. \346\225\260\346\215\256\346\265\201\347\232\204\347\254\254 K \345\244\247\346\225\260\345\200\274.md" => docs/solutions/LCR/jBjn9C.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 051. \350\212\202\347\202\271\344\271\213\345\222\214\346\234\200\345\244\247\347\232\204\350\267\257\345\276\204.md" => docs/solutions/LCR/jC7MId.md (90%) rename "Solutions/\345\211\221\346\214\207 Offer II 072. \346\261\202\345\271\263\346\226\271\346\240\271.md" => docs/solutions/LCR/jJ0w9p.md (83%) rename "Solutions/\345\211\221\346\214\207 Offer 13. \346\234\272\345\231\250\344\272\272\347\232\204\350\277\220\345\212\250\350\214\203\345\233\264.md" => docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof.md (90%) rename "Solutions/\345\211\221\346\214\207 Offer 14- I. \345\211\252\347\273\263\345\255\220.md" => docs/solutions/LCR/jian-sheng-zi-lcof.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer 12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" => docs/solutions/LCR/ju-zhen-zhong-de-lu-jing-lcof.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 006. \346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\345\255\227\344\271\213\345\222\214.md" => docs/solutions/LCR/kLl5u1.md (87%) rename "Solutions/\345\211\221\346\214\207 Offer II 055. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" => docs/solutions/LCR/kTOapQ.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240.md" => docs/solutions/LCR/lMSNwu.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer 47. \347\244\274\347\211\251\347\232\204\346\234\200\345\244\247\344\273\267\345\200\274.md" => docs/solutions/LCR/li-wu-de-zui-da-jie-zhi-lcof.md (85%) rename "Solutions/\345\211\221\346\214\207 Offer 22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254k\344\270\252\350\212\202\347\202\271.md" => docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof.md (79%) rename "Solutions/\345\211\221\346\214\207 Offer 42. \350\277\236\347\273\255\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" => docs/solutions/LCR/lian-xu-zi-shu-zu-de-zui-da-he-lcof.md (80%) rename "Solutions/\345\211\221\346\214\207 Offer 52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\350\212\202\347\202\271.md" => docs/solutions/LCR/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof.md (83%) rename "Solutions/\345\211\221\346\214\207 Offer II 034. \345\244\226\346\230\237\350\257\255\350\250\200\346\230\257\345\220\246\346\216\222\345\272\217.md" => docs/solutions/LCR/lwyVBB.md (90%) rename "Solutions/\345\211\221\346\214\207 Offer II 067. \346\234\200\345\244\247\347\232\204\345\274\202\346\210\226.md" => docs/solutions/LCR/ms70jA.md (94%) rename "Solutions/\345\211\221\346\214\207 Offer II 073. \347\213\222\347\213\222\345\220\203\351\246\231\350\225\211.md" => docs/solutions/LCR/nZZqjQ.md (93%) rename "Solutions/\345\211\221\346\214\207 Offer II 108. \345\215\225\350\257\215\346\274\224\345\217\230.md" => docs/solutions/LCR/om3reC.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 056. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\344\271\213\345\222\214.md" => docs/solutions/LCR/opLdQZ.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 047. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" => docs/solutions/LCR/pOCWxh.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer 55 - II. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" => docs/solutions/LCR/ping-heng-er-cha-shu-lcof.md (84%) rename "Solutions/\345\211\221\346\214\207 Offer II 041. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\345\271\263\345\235\207\345\200\274.md" => docs/solutions/LCR/qIsx9U.md (92%) rename "Solutions/\345\211\221\346\214\207 Offer II 095. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" => docs/solutions/LCR/qJnOS7.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer 10- II. \351\235\222\350\233\231\350\267\263\345\217\260\351\230\266\351\227\256\351\242\230.md" => docs/solutions/LCR/qing-wa-tiao-tai-jie-wen-ti-lcof.md (81%) rename "Solutions/\345\211\221\346\214\207 Offer 64. \346\261\2021+2+\342\200\246+n.md" => docs/solutions/LCR/qiu-12n-lcof.md (77%) rename "Solutions/\345\211\221\346\214\207 Offer 53 - II. 0\357\275\236n-1\344\270\255\347\274\272\345\244\261\347\232\204\346\225\260\345\255\227.md" => docs/solutions/LCR/que-shi-de-shu-zi-lcof.md (82%) rename "Solutions/\345\211\221\346\214\207 Offer II 033. \345\217\230\344\275\215\350\257\215\347\273\204.md" => docs/solutions/LCR/sfvd7V.md (85%) rename "Solutions/\345\211\221\346\214\207 Offer 18. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\350\212\202\347\202\271.md" => docs/solutions/LCR/shan-chu-lian-biao-de-jie-dian-lcof.md (83%) rename "Solutions/\345\211\221\346\214\207 Offer 26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" => docs/solutions/LCR/shu-de-zi-jie-gou-lcof.md (90%) rename "Solutions/\345\211\221\346\214\207 Offer 41. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\344\270\255\344\275\215\346\225\260.md" => docs/solutions/LCR/shu-ju-liu-zhong-de-zhong-wei-shu-lcof.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer 16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" => docs/solutions/LCR/shu-zhi-de-zheng-shu-ci-fang-lcof.md (83%) rename "Solutions/\345\211\221\346\214\207 Offer 44. \346\225\260\345\255\227\345\272\217\345\210\227\344\270\255\346\237\220\344\270\200\344\275\215\347\232\204\346\225\260\345\255\227.md" => docs/solutions/LCR/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof.md (86%) rename "Solutions/\345\211\221\346\214\207 Offer 39. \346\225\260\347\273\204\344\270\255\345\207\272\347\216\260\346\254\241\346\225\260\350\266\205\350\277\207\344\270\200\345\215\212\347\232\204\346\225\260\345\255\227.md" => docs/solutions/LCR/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof.md (74%) rename "Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" => docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md (96%) rename "Solutions/\345\211\221\346\214\207 Offer 56 - I. \346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" => docs/solutions/LCR/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof.md (86%) rename "Solutions/\345\211\221\346\214\207 Offer 03. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" => docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof.md (73%) rename "Solutions/\345\211\221\346\214\207 Offer 29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" => docs/solutions/LCR/shun-shi-zhen-da-yin-ju-zhen-lcof.md (87%) rename "Solutions/\345\211\221\346\214\207 Offer 05. \346\233\277\346\215\242\347\251\272\346\240\274.md" => docs/solutions/LCR/ti-huan-kong-ge-lcof.md (82%) rename "Solutions/\345\211\221\346\214\207 Offer II 012. \345\267\246\345\217\263\344\270\244\350\276\271\345\255\220\346\225\260\347\273\204\347\232\204\345\222\214\347\233\270\347\255\211.md" => docs/solutions/LCR/tvdfij.md (78%) rename "Solutions/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" => docs/solutions/LCR/uUsW3B.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 106. \344\272\214\345\210\206\345\233\276.md" => docs/solutions/LCR/vEAB3K.md (94%) rename "Solutions/\345\211\221\346\214\207 Offer II 111. \350\256\241\347\256\227\351\231\244\346\263\225.md" => docs/solutions/LCR/vlzXQL.md (96%) rename "Solutions/\345\211\221\346\214\207 Offer II 078. \345\220\210\345\271\266\346\216\222\345\272\217\351\223\276\350\241\250.md" => docs/solutions/LCR/vvXgSW.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer II 003. \345\211\215 n \344\270\252\346\225\260\345\255\227\344\272\214\350\277\233\345\210\266\344\270\255 1 \347\232\204\344\270\252\346\225\260.md" => docs/solutions/LCR/w3tCBm.md (80%) rename "Solutions/\345\211\221\346\214\207 Offer II 054. \346\211\200\346\234\211\345\244\247\344\272\216\347\255\211\344\272\216\350\212\202\347\202\271\347\232\204\345\200\274\344\271\213\345\222\214.md" => docs/solutions/LCR/w6cpku.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer II 016. \344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\345\255\227\347\254\246\344\270\262.md" => docs/solutions/LCR/wtcaE1.md (83%) rename "Solutions/\345\211\221\346\214\207 Offer II 001. \346\225\264\346\225\260\351\231\244\346\263\225.md" => docs/solutions/LCR/xoh6Oh.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer 37. \345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" => docs/solutions/LCR/xu-lie-hua-er-cha-shu-lcof.md (89%) rename "Solutions/\345\211\221\346\214\207 Offer 11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" => docs/solutions/LCR/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 076. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254 k \345\244\247\347\232\204\346\225\260\345\255\227.md" => docs/solutions/LCR/xx4gT2.md (96%) rename "Solutions/\345\211\221\346\214\207 Offer 09. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" => docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof.md (86%) rename "Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" => docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof.md (91%) rename "Solutions/\345\211\221\346\214\207 Offer II 066. \345\215\225\350\257\215\344\271\213\345\222\214.md" => docs/solutions/LCR/z1R5dt.md (93%) rename "Solutions/\345\211\221\346\214\207 Offer 53 - I. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\346\225\260\345\255\227 I.md" => docs/solutions/LCR/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof.md (83%) rename "Solutions/\345\211\221\346\214\207 Offer 31. \346\240\210\347\232\204\345\216\213\345\205\245\343\200\201\345\274\271\345\207\272\345\272\217\345\210\227.md" => docs/solutions/LCR/zhan-de-ya-ru-dan-chu-xu-lie-lcof.md (75%) rename "Solutions/\345\211\221\346\214\207 Offer 07. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" => docs/solutions/LCR/zhong-jian-er-cha-shu-lcof.md (90%) rename "Solutions/\345\211\221\346\214\207 Offer 38. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" => docs/solutions/LCR/zi-fu-chuan-de-pai-lie-lcof.md (88%) rename "Solutions/\345\211\221\346\214\207 Offer II 109. \345\274\200\345\257\206\347\240\201\351\224\201.md" => docs/solutions/LCR/zlDJc7.md (94%) rename "Solutions/\345\211\221\346\214\207 Offer 48. \346\234\200\351\225\277\344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" => docs/solutions/LCR/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof.md (78%) rename "Solutions/\345\211\221\346\214\207 Offer 40. \346\234\200\345\260\217\347\232\204k\344\270\252\346\225\260.md" => docs/solutions/LCR/zui-xiao-de-kge-shu-lcof.md (96%) rename "Solutions/\345\211\221\346\214\207 Offer 58 - II. \345\267\246\346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" => docs/solutions/LCR/zuo-xuan-zhuan-zi-fu-chuan-lcof.md (77%) create mode 100644 docs/solutions/index.md diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index 1d044f31..343e7cf5 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -14,5 +14,5 @@ jobs: env: SSH_PRIVATE_KEY: ${{ secrets.SYNC_GITEE_PRI_KEY }} with: - source-repo: "git@github.com:itcharge/LeetCode-Py.git" - destination-repo: "git@gitee.com:itcharge/LeetCode-Py.git" + source-repo: "git@github.com:itcharge/AlgoNote.git" + destination-repo: "git@gitee.com:itcharge/AlgoNote.git" diff --git a/Assets/Images/algo-book-contents.png b/Assets/Images/algo-book-contents.png deleted file mode 100644 index 7c30a25d59dea9f51e8dc203d0109ae102cb685b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 515744 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≥aC1TEBC-bS?5U;HSK_om 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

    (djn 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�dUlqxK3m>Rcnrl^qd>rm6o{lVV7`!pGaVE}*L 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 diff --git a/Assets/Images/algo-book-dark.png b/Assets/Images/algo-book-dark.png deleted file mode 100644 index d5d39abfd4fa1812e6713fd53c8c4fd78a43bde0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280365 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�`mV0J{yoFY9~zYlI$5uYRuuxY!9wa6@9InI3S&q|YfKzhn6r^1 zz@uWL&jzxAT+Cq0t9fVM>7Y5C4s0fI@nD6Nc(rF*O^&nc?L|LIP_B#6TJ+&;?=Y$Z z>875({D(f~*(o%FOaAXqaYk>=326-74kWv%N?hjH`sH;PSRoe z)bFjF|MSCi4zBdJ*RW^9D7A$}%3?iEBZ{rR+Zj7A*sn!)5WBFZ2I~*vFx) zBW0_h2r|J3cSr)K6dF!r%%H+0+Rfa?y{Hz0X#eC^F)Horl|+jbhH>rfORSfFKtK2> zOdx(L0%Ye>P;Z7ibz@Uw!#b0LV>r2&&-VQFSc_1B3-&xVHYh`tDyBW2g9plPKT{@u ze!}u}Edh03o){#q5(hrquYYQu9peo=0zG)%i0jh@@}G<~E- zf8K}Zvolr-G^5QY3uG#B-5N7?ye~uZ@nBcaApsJ64K9t^PXu^UKQQBxD(qPg$50c8 z{)7$p%;*)FHnCk~qj#ixbYcqs{?GzhDLP40kLF-Gc1br(#;{6zsJCz`Rww^t|HDuE zXZJKa;bRjr_#?EIM2kEw+~=6$i|do<;aqMA5v_vM zIEKl`f|Q+17o`^7t5L5n3h(59-iK6`8Mdtg!I!JiGXw#z2j?7H?V{_&_5+FE{W{W} zmifxw17FlDbx24qzkWvGv(2k?H|-#R4qe!M%}Nq?v+7DQ5t)zs{LyV_a`kBv%nt_ZLcp~#%NNMylV!v17yT?`=Qf|Kt< zf`!d4q=5h*zrFG;2?|X2E)~pm56mlm7k^1y}P@ZiKpGs^aKG z7fa`KwjtiN2>+sw1peqb?(@esG{#~cA-h=(ImSnnXb@&Dv4e4uLD%d&}h(9ct4NG8;sfQee%}sLLQ;{fL8)WKGmp| z@IcT!-|)xky}fiCEIMU5P|HZGPPh`6Wd_R`q_nsR8wPRI=x9o_Sldb?52-UVs3|xO zjx|1}BP4-Z)GV=hk`(1Ke~fkBu1{Pl1KyARrj|G;UaGv|wtSKNm?1Dm>$anepKv22 zqW$1r@x~a-Dy04<3$f6w#XPV!5+C@%TprGeZYln|shFCq*j{gZD3>yy=if?;#r$K9 zmcZ3#>PA@`ym%h7ndV@R+c_F)f)yu|}rRto*_W4Ce#bVCH62wYHJ(9$V zdFUr1Hq;->$h^RpD8K@JXCsq)ympu1+4E*`vflo=_w_hsyF4G!%lBDC7J{PG)8H_y zagBY*W}jGtuV_fjHK+fVNb!hD7UDfcj*+Y!W$f}pzkmuJQzqL6$#%}7Bb~ky8g*4a zm-|O?XF7F;8t^f~DL+j|N_{NCMF_fnX9Xa?SNj||aBs_d2W1+oqX}8V^uc(S z^9uCsZSkB#0$uk1R!$<`s2<j&ZH+JMA8bYo>XbJ{ruq#$)MalzJ4babSVf_E&S6r9g&<3N{VdDnr?i3y%P9mSLBei+l7E++%Vt8L_(kkNJ1 zHkQ{NiYN!|M}_vps8}4w-BLi`R)c66NvhIaOlR~BT8=j8@F?+6F3CCE8*vR4na7y4 zgFE+I?f?Jn%Nb^8+R!{UHuj-F6)0HU%-z`NY@H-U8Lkw(u?zJ%&^YVA2n}4k8n)W; z7x0Ixsp(wLdfF59T&!9a?r85qvA*%O-=$nVa$9xAPVHXK*xJ~@6X3oiY5q=?C-C)6MO)3G+0*}9asX&)GY+f`i4?J1;kMMjjJKL}C zMbUN0yt2DD7}Xcyz7@UX$X4&rd=5(ju^LqiI%F!Q)uiZH=0(Vut|d(uxsy3r%Y(c4 zMt>zlfofv3y`t*mSnn`^^jQ{ik|MfnMIwZ@l4#^D;OB}N|Nd9SvD+7SihN}TG}C%y z@azp#rV-HEy{NJ8?!GsGC9LEZo#$!vem>*;W;QHg=TheE0A%EJ>!IM1`}fq$nOkT5 zc-D7?G-=~|3`4l(k8HC68#(WwxUjfbaF(~ON~2BKS5S9|WrBVvwUNkg?|2{dA=ER* z`H}3k+b7s6u*anW+x#%4D0qdI+`BzM z6?JVhNBp++I_?#D5-R+C1i?Tw2XK^m_)^2qYcfd4|1CJ=hd8!7u&7rD;_^?Jk?_oW z`$@?%wB9I)!48_VVEl{BQ!q1-4J9!&&!I~ORuY1W3g8hq%_K(X2L3=OJ1cYlv&v}B zDf;6yTc95zD88b|mKjm;C)`DpVwxbxf*WC!RD>uS367R2Jy*~%*&vgWjGi-Y3cY6S zb0Hgc9Z2-$Pltg2EHSb%vuZyYLs{SCBOTjZwz@OH(lUAFdx_pT?MuZ6iGHsa0`{2&Kcx#rN}@bUK<>^JM$gI(LG1_WFBg}mIyANf99!D~ z{U{-x)f4**wdfI*Ur;|u(NT2rU#`?E&U-aTq2UKJ?ep}A}5pO$jOY7htvQ&&u=K<(y zI&6PYcwRZZy`b1U*Y~7gYWvm20-Yj{$tO`RcE>rqrfO%pR?SZ{xsF9&cC>auJ1Koi z@rUX&FItLI#jVsC=H)Bt-8VT)Y-I?LQRyUT7_nMRi~+H{HZ>hzOI$Y?dm_B9%m@YL>YZH}+{_7m|~k1C@b8ygEH0*6PflRl`x5_7nv#l-)0Bg}>` zRz4~+{832Vl9MEe7f#*u7mEH8@hv5xG;t=TlD&}Pg#Gp@iK_U%N_}*S_BBeH3$~wSDPierF^k#BMDn`POF|u;X`=CsfLZM`z}@5zHIV?3H8 zpq!kdw*u-?&=9L`1J0!oRxuLg?~ManQQ1^On=h4c#a_h1(|_#hdnY^`ud>9)IsBT8 zMh=S094hq}z+ZD&){Bb-GDY+4fm#5AmX7DaS78U!weY_W$4o~Yx%)XW5fP8^v5cm&M^h_ z^(q+lB-Ol}A-oL;!+JFnC7Jhng#S`z7}bT*w1__cmVr$fo8|jY*_swAm)SMY;7fOS z-9Rlt>Wcx@i2;afpQ*}}7{OEK1KF zH=@UN)SMNJ{!|xO`OVM%HeFvP>Ifi zFY(RCGK9r2E!L8Vebf0jFJK}@i>TVrNxJYEfQRAx*IF8~sFYV?hPnP3{hoDYyL{4T|pS|K^JQ?N>Sng<)@}+h)=iFH#e)r1Q=PxN3AIl8d4gHa~8*)-xA&$9dhe}0W z`8N4LlRwQYB;3>(J?Nip9D|(xzmtUq12)pSGt#u$N>t6{y!ycUQ-jNS_n3aBsp9Pb z=YX4(f?T~ifNvfZnHhuFTlIrBIU_6`%hL+zw>b&PCps!kYtLh8hYI)aN~g>BU)I(5 zrrJz`WZka)yteDwsPG(`S21l*Pg}E))z1BD%6w-YOzYAcI#|&l8HeX;0$-1$QrV@` zUr%AmaCzzr)W+3BezI$;Aoag09K`Gi=X=zS7HsF;|Jv;j#Qdt#s4*tml4pR_s5JB9 z*J-|>DJ)gR3O&?7v)GX;1f&48yRDwnPIysNJ0EYakxBGCamA%#uIgdXk5h5z{6Re7 z$_1Niw??L>o~AEL#4LptZ9WBbE?-`)Ua(SEBIHKNtNYMnO3+C$5i3cg@SxOL=r(C2 z?v;t@$RiJAF zLL2n^K&470;u6WGO5?yaX3p4?RvkvfPI{?!Ggn_GcP83HN`>-zfV- z{-~1po6T-5w`LB!zJ@6}^n+Dxt-N6H_0^I8{3NCPm0d;i zix9HWwtwFPLgt^B&@H)fvad=Q)ENtx9OM!ihfQtwoA*UkPut!t>MWf7Y4wW1VI2GKY{atp8ws&d~(24Ywg$SX*dAC?E0QyUq0j zqJMF)Hmp@u9$4(B@+m{$sA>#JRU^&ZIn~IBC9V8pWR;==jcgnp!^IoITtphdYm<%! zQpo02%rjLI`i092VoZnhP3nS78Xir#3K|eC0;xGui^yX8OLsuY9t(IPs2d&T0Zm;q zu;P^1dnQnM#KFJL7p>yQVjn{RLz>StIuZkxR)S?u6@sO@U^K-`(bz)DbeW9N1ft+) zQs4U+EQ6c=w;I3b3KS2gk=PN$_LlWOTZSbYa~rOK8+oxmG4CaavK#VM%F<#JB<2%7YyJdAJld1NFAJN?W#9QSaId$$g=;HM|hF$)nj6T(lv z5fAw#!HTJjAI5o8+FoXP^BR~)=>(sjmkKYA ziy1kZF)i=;lezjp;1H(2f>aLEMO#R_UgHy|GGtiV-UU>ARzO{(26~=JcNQzHW+Hza zsB81|Xv^d9}7PXaE(<$i&#UJ0%wP*H}MFuLa zCua(TpB}M~h_6rykUgsU2@bZ(tP5VMYQ?)Nj?BwN*r7BJ$)lJM72vNZ~PM z0*ekt?a`7M70;2uu^uh04wmO&OL3+$`=&9=_w`gP?ez2q@OI!KtUm@&KYPZj;PT?6 zqxX`%R7~=_YH%1!^>*ps>F$w&hnmJS{lNt~-CmMD%|chGm`12K8=mzB z5+kh`h+M^5SDl!}-cP2pm!&jJZ4B_Ml2MA$i5Kzsg{Z9fsAJejhFbNf*6bPfF0;sw z!F&wQh-z*cZE$P_gO9%|>G1anX(dz4!a;O{lnyY_`%^xGNORy)BP0c)UuHZ_iHX04 zQ9(o+lp98?8OYqQ*y)V}T=dXUAP+0bHzqazvFBW^#FF5%U*7xF)zM+b zg<9&xI(?NI5F2TAl9go4l|^gcooe2bgEBasw)Abt){UOeP^7aMcWluR>}LIu`W$vf0q^fEfYOFT7mSLvPva`;X6NlkBsy|+!vaj#XO z>=Jl}!tWFG-aaD5Q!XX^I*zLF_1_8AE|)=?g24ADdy4LxY&4ag=WB?G=soy+Kf@&8 zu#u!E;CX>S^pR9I@G$&&W(B6XIz%a7PjaMn^VpJnBLp)e(BcbrLIUfMyGn2DiMG9n z;r=!K8d7q0L4MHl~35awIGwmED~&z=UO8UxbDnKhy`Rlph{hXRm5{Lhk` zFv-cytxCQlL^N><;qtYK2(Z91p?KvdYfm6U=kC+x_0IK4$GX-p zo#aRMPL3>r)9pCEa%7F}*`T8DVMNLl_9o?_GwDFIr)_OS??P;cu%xYu{O2cLfF#Ms zt{yakG=Oi8WyxP~JwXOr-j7dzB|=OBU$2JtxA&jv7gve(rvIdaRrkK2C_?ellC|MF0vgfu?~NE#`7=>hpu^`~rC2 zjDOD74EM%Gm@$&2F0MdpiKK?b#T-UE7l#8an3Sl?P5AcVWENnzX%d$GB`mY|=adX# ziGyG_xqd7ues{>K3G2c92qM$$tdIi?N`zFATazpjIibWWDSZ?s?Oz&Nq*Mb5RM!hG zK2qH`_6X41@Yd>ki*`8lD~~s>5$~@BcMtv6Ww3PpZ?iHXk7+`N^$tcemL(WwhY}An z#1deQ!$8n5dIuIU7QZRWkP4v%Wi4J(9c~!?tgScK>c|_J=;2mRo0eZz)0)Zf{{7a% zC)B9`ALHqpuXJ_xw)|LGOcJ6oK_dE#n4>t{;|MAc(+Y6n>L|NpWdFCQzC0nnM^3mE z%H0+3?(3`8*)B#SFJYPf_%QnF1>Nm)3>gTq{t?F}g`fnAvGXTvOqoi+I-R$b>MnUm z6r5syfa}8qZKfL;2Ek|%Qfl3ArjR%E-32k0qvRDEsyFqv6hA*1vCLxWuYGPws{BsTnu*Tux23#n3xU3Dx*Ng2I3 zY&G09#Q0yw#JvS0%%O>^uoa$kD1|%1=W9zfrzdN3vKL$wbE_H2^m)870Zv-&_G`#8 z{Ocgdq}-hdy96es8{5}e23thcoVg&-+@h@(Gq1Yv6@K(vdq7kU=#ERK3#85QaU?Ih zO;PumIAZ8cH#Q>d*6R>pvVO!;nG+Yxd}?o8A;y4Pup^GC%3H!~u54{mH#XGN)Lfl) zNfzgFfx%0&v(#@9bwG|OCN8$wBw)VKVOccIEl>LRTD18%V6$#9^!vPdDT==~1eC|8 z{>f222O7W83eOJ>ob{qXN9WdzQspOiVf{pr7eGs^9crJW03pYT{o;dx6H5bkI(KO1 zli0b%6u_Nh;uq&Ga$V%0vc7dN76LDhZdodSYLNYsHn|8zELlQHsfD>LpzlLk{W0Y- zrQnY@pkk{Rm0*a%9#9K|*d{;?^Sy#dg#TWmCq&AIMtC^BYVn|}un}&XFpazh%}ii5 z3djqr=!|`#4R{{Rd-)Xtpa@{Zy!d`Sl=mV!=^L&Xk-X-TBf%0%jfD_7k?@)Jin*Ns zk#BnBl=$nI{|^>D7Jb)xBz34vqVeW@Q1J4Gp-Qi!&8*#b{gPuS=$sEkUGx2|fX~A5 zX`)^ERTywpK#P3|94ml_KPC4J6M zwkemF#ctMaXbDy8q@}X5r%}a+$`&N}bNjuFQBqgn?2fjWIXVIWSj8zhgg$vjTA#YR zJv`iSLpOR)I1w#?NX+;b@u_j?#->C|jtk*)Wz9=%ooO@# z>-Yp0#!THT9KkDV3}uRnZ7fLC_MV}e7f$-u#10pHT~=P+2a}fM3G1eYT)zHnPCVM; z<{bPgcM2T`Prc{t6-kup7cVZ^#g0W;If@X3p&8M8JWDm!2%1D`j;{>y;TRSE+Kd4_ zh@zMK!j6hXk5m_K>6wQ$EubJtwcWN|3|>60>@4B9{m=cyUzrW5co{ZFMh z;+TlmY^ByXEi|{@q#gVfl+3{L13x>6_36;YXuol4Wac?l_ zmpa+9sWMPkH=wdGxKLq_i(?fpM57kpeZrck}X>OWNi>^|!vb(ZN%`htFLF?-|i6P;@;}bh4PBMugy0GR%4;yYJ<1jZR z!^IJI#bSkz9o%tB;w%O2YO$QHdA2vE_itcU9gQKvh4*1~`h?-J3f}_4cHT03=)R-+ z3(zyf)o5ZQbW6DI%q}}4Kg-~~ZvDLGAATlHysiF<*o?u-f+7|DImfpxV??fj9qtG{)eAJd@y+R47Y8)JE9|F?ZR_Azsvr^=%xIGU-ND>*?>#XfcyI# zuN#4bqphoa9dSDhoe!$#&vQ(*LD9%5{k}Dn{r1-UVBdYX zX=+G7(2?)qr|-K0XlQ)fc4U-PV@$2Dcoivwn1@6@bI+HuXH|&@0A0?J$Y91PX-6c! zp)K*<3vcs6&8iozvo|Zb6hoc;aqU84Aao1cpDL!V)`}!i8RzPsTQA_^>ThVMr(+Zv zy#9tixg3^G&OyycTz=$j6ED%_jT|f4U2*-~S1X{S>&Mn_!AR8=${8dfKW?ztqn)51 zoi+P8RPf=~-j-9EFVB1l(s3jLtc2UhEe>tl=Zx62B+oi0s|crqqR=(IlDG`YVGF>DOfTTTP9fjFXP^hxBT<8ITG)V+-c{@?R{X{#X1!XC##31(lMrD8d0Z%dQmfF*Ah+2G{R%91P zuJ=?MmU+Y{wjDf+&P!9&L0ySi$riMS+Y4Y;t_pjTSQ^4fz22pr6|^14YWwg!=wcw- zrd=XR$9*YfLWC^*x_k18flQI9ueD6J799`YsI2;E>;Md~3JgwH0reP1!kCsxg)n+- z^XcG!UYtdru_2_BuB7GrQ?l~^W7T5jY9Zzi zgc#^6iiyI0womcLO7og_a)*2wB_?%jUE+>Z7CH3v#kC5p+v;2%sO&Nh9kOCHCyQ{$ z4-K{a`RqSi*!#_D=Ig&L-%J0iengXir+rxpf8g`&!}dSmO^$O9lC^~E<>FOdKsV4z zU-F@63C4WUJW5d#r)Uk4+}miucnfQk^gyLk%HPW>^7c8n=$+g?82pI_ef4mLA>S1* zmQ|&*bql)~jq;gZJ@Lvvw{px>u6_ysCt-=}PgocSGL;fmD8F1{o=8p`(=Z$ z5$m}LZ_XJcNP*UHE{Fq^bpH~osZJ+@hK1meZKFVU4>NYd)z!e}|0I+TknN?c5Y!Fa z=_@h2-hxHUSFE-Vy)8{#0PoO9ba*<9#AkQ|eA6{Dm%;xuAWhree`kZI2?cw(GQn7Y zb+(-V51)|wlv9Iy(S8;|B3u5^#_fyx-rC7Uv1E&XEJcaSRmf=qTOXdhwJysBy2D>5+3~QQk)<4x-JnS`hlMDXm3h>A!pv z^key}R^Gy11@a+9c*vcK6N&hqGc;U{dS@IvbE&<9Le~#}*W05y!>@j?*M|jx&&SpbD!JYdo1ut!h+n^4Ux;HRyPA?_ zKFY^+Ahz%t>wxsxgN_V3-3RC-x zQ?GERH-W8XP9fsY2HzxakdI6sf0Rj%0ij>TB-@9XH-SB_I*1%X__01`hhYZ zv29$B`XSV%h;+Uvr|NE}&k$T8uk)$`5lmQEtUrz7?FK~swKEkGC~;g=tYxTBWABmu zN;9viAR}w=$+HEh8u>I)>KBslNW^YFC!c0fj_k)BKpf!vMX!^ea2_1l3~kVvuDqL4 zl;`^(+MW+mp9kCLNI`nmXbR7S@jH@lrdeQ2Aw6t?rS=KPa7LTIOF}SGPKbrwO@umH zzr~-At$Ud~8Ccm-iU$(We_)&^tNTo=pCx8 zivH)_uSn&mgO+gu>QI-VD^TRa%EVQze)vVub;~G%8@4s%+{M~Eg~HTIKMT!*wS>e9 zqm*mTv5JszQJBqZlbdh3NtXC#z!jk9X~u!FWP}b0aRXG{8T}JS&wAK$&6bu1xM#^H zzOaP!Z`i`S@o>frCo0P5T%MDy9NSs8c1ZC6 z4)O#CUdl1|ij2X~T@qruX-%qiirnTO$ZB1VWW)Bf@?K9!lB5Wahnp9Y?(PlFp@^R# zUGakTe^CD}LDt!}@MIhtrifUL)Ahl68xexv7%A_VJep>D_p+%11sE;*MqqX*;bemt z$C?ujg9~61`q|&&)Mb$9&oL%bW}j{SE9I2G((Z1IjrtG+DUZsuZ{8-RZ8Ny8&cf)W z)kycGHpUH6hZoqRN9BU)x)-{+=YSk1JOeMbmiif7Uey?(dhfS#!o5;2A|KE%2W6(z zpS+2esbazDJJM7yDYBrmrKX6P(Z-RA)fT@ z0V~2}*vSS|Hf#8{9;R-AIzJz8p!LtqRcXx7pA@VR_`6_eS(>0xczFXTx(Y9`?XMqF zpKQCf)ZaDw!5rA!mj|Y!)oUakv47I@OrSv=fYVC^_0buLI>vx( z_8F!S%9X{Eb@=+jtEQ_M(-%d3mqScBLlq6c#1>7I*_ZA|l_N`QG02wi?e9~{@Gm^` zuhU!Y|5~&oTwkpZY6hj7ukJ(cg%YPw zh$ih81a-j`3brw)oXsUH3!wOU^lNVGj&B1A?_{Evf{v=4#um}8dN0V`v*a=T6!&8{ zT{91>gb5q}C~m-PW&IHzKaMlIh1%CjFJ~nKe5sB`ZCvr;Y@pJNK*>T!ECeAp17D9(FYY`-!E3mOk03Sy>mDtR>QXDlJ3I%0=NS6jVdia0 zo(U`WD%~(QxlI)@Cu^>ZAhM#fR1pSYlm*0(S*M@YGSmZK!uhJ#r6hM!1mY>ncxq+6 zBNOsPsVo9cdpOKQ{;Rekic z4%AU|55S>_(G<%eC@an+I4Xh#KsM1_G9qJjJ9#$w`()|Z@@-E^SJBS`-vlNhc80Yo zJKehf?DuyB%LZMIw8kx!5D>{wdnafUB@sJ3jGGmSA30>4_Dh0FFT}FhmN!_88ih

      dc&s0a@dYU=jskddy#?_cP0#1Tq7S8@tGPic3~yCwd+f(9+tD$)43DF#H>b1 z2m9{`c8{o`vY)J4rZ-2#lt*jLoxzB959j5iRfT6Y-4U#Sn%XL#(pDlAw>!1On#p;v z^+Zb1X9GxewdI!-(f7(TDk>#s22|e|)KQB-tvwfCNl8g?ZAZ~JhS#XGIh4lY;3em{|@rTPvs+aaYf8C3)`v&(3q;T97HU`MdvJX5j|WQWeE5K z|94Z;eF}Fq2SJSDZ$y)dK$sFEJzp&?_->VooFh}U1-Ly=pi=cdSxSoXvm!tak?9?$ zMrh@s?zE4rhI#4a*GX7_Mz~rq=33`)gkDI!F2qd+ADuc$D1)E&0Qhr?_>;=_1R@Jr z3EK=!_b6f!piJuiqzZhi_Y}Xev|*7W$Dt%{cPEgTXv6UKu?%@-B;g#UNp%|X zZ8BwdG!l>1Wx0WlL_o*;mEXUxqX_Z%mS{IL*+JaL4GGff{krSgLIB7-uVWA=`Q zldk=8ho14EYdI!thB*Apu4lhr1R}lAGM7w%JCqWk5uxWkq68cstofrE5%mb%r)^}W znJ~(s^!c)4fqxw!?fgv{)w=U^aDqY<0D_`Fktsj-`x@BcKr5F%%!O#5{b zJTDF@`f0==8bx&z3l;_D<6)TV?+T|EZeFz285Ry#{CGBl&hZzWbh079JD|~;lyH)Z zi>>qK(^@CRhgXo;Xn0GthLs^~k`m@1A6*FPs^S5%1)ylSe#6IQwok?KA2DhL0kV58 z7u`MyXA$Pbsg;}F8fDP*hFVxW`H^?zbwaYBsWC9N!;Wy+^= z@O@N#6c>(X$e~(514}sx&oAeCnM7IoEW$^$B7`2yzm9=B&(|pXJUw>{Z(@CFz{vVD zUe^}bkIc+KT6!pL?K<$pEH@MMCFu(cTuE`|iyQyvJR3Slg}vZlPIqY(o~b~os%8)q z;pnslm78q~R%pmRXL{h*)aPFSL2UulUVD+<_(!t<)y0`gHfZ0>*lbw#X_ZARq;qg~ zORJQdAJ2%OZ5`JsNAM7`(j@0se+su?kgI0}4_mo$$$SNZ_<{nNTo=qfU%H&4WQIy~ zcKR|nT2Kw#-rim%FLTw-;{K2qGpI=#$s%h_aD2C*%camCX|xu#V9K8uKxy<@kz*k^IHaSs z+o#ZMy=Sei805H}ZFK#8=q`1K3_-+4tJPTqm%wYCU%b_KUk~io zfAxN!m1vs2m%jI`N!xp3`VNbV&>TIosL!gdLb5ML%S)Uyw(sWSS1E8J+-T+Kdwuso zEQ4;Q3VDYfHSMXIg*ipI_dFc-#?-Q2$}Hi^w7EifMa6OLTYYxnB}EC7ABA>@CPr&> zy1Pc|%QJ7=cY~>F%3V125N9-^KH(%h-p=PC(O`g>qNlo7?{4)M^Wq~4kgC|fpH!;J z=ji8=Wo2cRca#@|92~+?zGtWNRd!F!Z;3=@j}8sRKNyq}V(=Gw$V@g;9!5X@r0gFx zzj`sFzfqX1^_avN$mSJ3MUOl)5O|A(Gl1%!Gf3X%>KJ3kI|(sFr|Vh+Slk>N47DDt z`E&9l5?#BhegoKpM3Czi){k#0jyLn;Hu$_Xw3q*rG#LHjVA?eO=A1OXk;@E`4zOP0 zh|_9?wWYprdi6s8Dwu$zwLI?XI0fU(FBLsLeWpI`zYiZD#o5L|ZSy-h%-zUHr!TVq zE(~qJ`OwK$zBs%L)Ti9j3rDguiW5B4FeD3ljV>SJWwI`Myg5c6|8p`X;~y3?7_4Xi z3Nv$e>=kT2^%a#{q+R6M$9k(?1fI_ZFE|HY>7>M%3d(=q9r&{PrE;`mUP*nPB>X}I zn~WcBi9cn2=MS5($wv!AI!gGb0e0yr{?VMLmOZDCK}$$|lscitWv?j9{R$LWI`Np3T;^ z=9I1tfRr^?eF{G(>KYW{o)UEJ}24YXZAKx=NDpS!sd0 zD!qW}&|7c4`N0=&e|_}ufdenRkd?3jhE=eG`ehR-K5ej&mce)SLz3I82bz*0z57#% zxWK}bhYr8}CWP`LMnD`LO&yS9P$qTI{&dcVBN40H?H10ex!F`cs=~qDP-f; z1&n5&ngq>C7n3!6$)hByxR|20)*^HwMO|wef#42Z`X^dwZ0=gu>ZL1J)|RKm>e|Iq z0JKCe5t=;gQ9|F-Ogp+hs%vZvrVK2W2$a}3JHyh9UX#UQHz<`F`+O{d>3O-isp*Te z4D?y4u5}!nx;QD)ETefUMUE6k2m;|jqnVj`ITf47H(zU9Ztw(4A zuD~8>dv3pFpK#Ev1}>}IReLgZc1_f_=uuH7JAtITYG!a=kwU3=(>v&FX>RD!PM zIlHz?_B7pU@S^OVdy{c&JL`81{1>calTp^Sf0Ha-QxBgX8tjH;m92y0!cL-LD54E@ z4xQ<4Yip!g4}FbeXU2LiAM81CZfN{6i*f5%W1C3h_%O*6qxQBOi9!8xxnjrLnY#8u z6PAvni4v9hE~Z; za2o;^+UI3`L3$8O`h9k#IUKTBSVR=*4?K9=T?NRuc zy^hJ8MVMZmn!5;ob}b_+I%>d~mD&}~8!_11sjl%Jj(HSONh}G|CB1 zsdQnCn8oSUnbAo`wK%FnfbQyaT&+-DSzR8PVDh#?OS`zX$#iY&F1k8&_rP&M*`B`r z(~8P^m=}8EG!fehRyDvRc><<+&ShU%?U*9K(uFIGSN+&zDYAG`fXMVWFlbTcFA8s6L53IC$^ zoN4UqYwKfGR8HF4TUv(3+Qx>?^uVU^zMlSbV?C{%XCSYC>_jIf!`&x_DE)(dZ9{65 zM1COO_$U54bKk*XM5K34=ZR&Lqr$+-M~uP$c0iFw*j66r$Uo zeCxHGaRy@58adi$!#<@Uj5C!YdXvk_X%ns$pEXpM*0s$5)iu?-pMCt*cfY+(KK@W8 z*3@44u&L|EZxGh~_Dd5=gV`VQoh8eioG7GPXBZ(h#9?##qcq?xDCb=XH*eEIM6ZX( zL5E|-t_=hoTp%b%0;IS21_fHXGD1qN;&I+@phLNGpHaDze8+C{BTVeVdiVU`_}np= zB$&@|DqeJio3fO5D~qnXYXI<7z%q z3HEhlH#IhhXc(wZ%30;ET~!s^>g%80HIV9)(zk1O!R5ds^-z*KE<8`QKp#mhh=(p( znH!>OkAiPWmA0MNZ1smAkL%a9CuA>*J45$v-&QG{WUGdU%AIgYnbNeiQqi@v(Xf5p z{d-TejrX*5Lpf~-=25k!eV7;B7`{?lU+{}qH(FhFUrD>j*~G5W7Q|MR6^U+#MS_m5Tj4jt(7 zhcCaP|LWH!)%%}(s6uIQZ=Ryv_})S@BSX0{9&!Zm5etIGF`VdQ5gW1)K_m8z|koUY;F zvF;OX=PwIO#m9OXGSoBP*mI_j0Tq+?(f!=GZ|vN;u?zh}=YF_6OzTjfYZy@!z1@QZ ziO6BgyU3GoV*uf2t!B{%C~~_$*W6RUYIxPu?zRB??ndRR+v-fK&MRA_jz$#hNi{;$8j{L;(cz5mRw zU%m9wD{|EEm>1RSQGlac+`96puE-CK3_D zO2kGtlDf5=)vnc;y&(rAmSAG#=H=L84LWSdI`1TcuB}a7ZC{;UY)8Pv$f)|gD^p9L zYp~hse`sr)N!QA39{$1HwUjJBCX?-v-jI@W3+h^BO+}u`&>GlfCFz>DCgA~^#CE)* zOo`fBiRfC!&QP+qulMr7v9U224eetQVml9Zw<-wJ2lp2QT|3t^-rd&NHs0OccwT6q zj`tw}a!%SWgb$=!nqM9|aP(_Bl-UHYNn1e=qf9W^Rq8<5VQIO+X|h3CljFCJzL2%B zJv}-K*=|{oFYZphbtwB3K8|ROMzbe^)EGx#*QNnla7aY4uH-_G?|{y$S{+tWjoVzh z_7{8S{?k?&#_^xkH<1{P@$LJ@OYj^GV5)Pmdc5ETFHtNZT4)QnmQooll-g0K1zRdm zfyiZJVQ5zvgUNz;Az+ydGHzokBpX8JX0jjmclf-gm(#1mDUm@xI%v!3@iLQse4h9D zKDd0euy9~N-`l4jT{9Z}>QeoHUaub=9bLO}Ww5X^q~nMInD?O=a1QLk^ z_7SSpDpgin#j< z1-izSZ>*ewxlg8RbS1nMRMa&&+X3I9CX|5?fuDAlQgAG|pgbt*r)n1I)r*TYmp=LU zR3k>0u3q39hZ}3YKY8^i=sR6JdXCT^k9?eclrlLLb*=QwiH=oRmO$a@M%U`Kj@2$r z^Z6C1uI;l74`H1bnU(;@?Hd8%Y2P-P?pQS ziEj5{Mx3s_A$#o&nJm3Abnn{Q-qSTic*+OL0zQ}w^(hciC=EWaHo6c{Dk@-65vHCN z({jsmOUo9k!GkcOMEcrZh`V^=u@L6ioAYPy`S@aXbZZaJieH7;T!_^#vFuZfBfz2X}C*B*UDGA$GW<^S6KyEb8W2q)2{Ql z`OHdlDcyGm*X~a1TACfzwfiEo1{t}sybRWymdW0c>SD6TQ|MZ5CJZ7ZJ-Y@siPbf@ zW2THr+#O>d|2ub>t?fNs!&V>o(mY4{%I zcwOrWw@Kr7P%XZ9VfZ-I)cW58X*&+-xaas#oA)>bO)z0Nw8+83b7Z%T8c_MP@%OE1 zWAFUU@;;-TqdIS8*5sDasMq(&U6*wkY@fSM96wkYB)4HGP;D>F;;1q@Jl zO`&P2cQiEK_!uM&7Q_=YJbpDB9v`|9yGFecR-~VUV3i+Xk;0|ewE~oGG=q1ol1`8| zIG)CIjr#*0ompL79TRn}L+p@J@oIp(_UlvM{y|XbiSA!FXjJS8Mg(ILZs`Jqus<2> zRWV!;MRaYod-Y7$#@M$fG!)SSJoYU_y z+}e;dWQs$b_r3FOv^ZqcKJg-CsU7^_trS5X@w)b4Ua+>7k(V9--kY|zS9DD>8ilpk zWMiWSRu$7VOnogX%bd0WGIL=wxP@S}5HOV$Z<>miRGt79b!~H4J3KtBRk~ZG;C}Nh z)=wRVujVK65sCYEZw(JYEfTgjUZy)Kum7H(jm|)F#Xs7$|g`bWz6WR2U+^YN3jEl559bd+1j4dHH?-FDzX4MxSk5bl7h857Ya-UWks1K3rx;NF!p)eOG{st5@tvIgO zVGhrXCJPEtG=85A^dE0j;OI3;Uj!LG3&RKm;oYWdy2&+fWvNCEgP=xN0TQ9=4zJOx zArN_j7{s#u?Nbb*Do$`a0*Ci-)X_9U8Pl}e;1Rbpb$bD}eJv6MgoN$ABP@4qThLNg zRO`NusJwF>bLD3ux^|sX8oWf)4Z0?0PjqZw6$E$$CqfZiaGTKcFcP}jy-q0^JF#BC zU+-%ELoT58^W9Kv+lRK6*0nS{sB6I2nP5`~;7jhk;e?f3CS;lLC9gI(Jt})KM#Wx! zpN)WSPuFUngxkC(2DrTew@I@dYG1pvY;CXT+S}4`rQ$il3TU1MA3M87EX4u0q09>N z1`w6|9OxR|^eFiTLs^SOX;{L+y;X)Fo{H#}<73-lf{NYDV_~BVh}6drr(hZCL5P&p3Kkglym#cd_hxYT_5?YHN} zXC2+)(6uo&`d6%9m&;dv5!mhJ6m~0|=ulHcuQmVDvA?z%1WD^!njO|PCRB`%q&Ss( zKRO@-4*dC0usn7!H#*|>KIuZXgz6(kp6oU8`|Gi~_TX1=@62Z(d^}V3CyNDn|E@IK zqV~@_%GUOZuDu#bQ8lq_waq0ZQMGs)Fz8zutT-q(K|-#nxW%N!7`w|Be4gi844y!- z4#gEMWAd6)h)>v+n2aWO8rnH27y;1X&xvklnPTL`Ei@%dq_A^f^!@W$92Ru zxunwFVJC-T!ThC~>LWKAx!F_MFe5rkQG^^w8CyI(-d}y>=-F>RffY-;O4q3F%GUh6 z@lmhZZ!Gj;igfed=__l-0pq}yad6Eq=4~YVyY=xXC5nXvU4v=h+pMM~Qy zYKqZzq2+Kwjf*@v|HBWUYn`wYYAkXONTTc1Acn3PDr>+GtL5n5LAgk8l!~Fv91_2g zSkJ_JeVaj$w63MuVO;}izk1;3$Kys2zWh=WhKy7_OwhGho`})4m)N?{7atEcSPy(4 zJ9uX~NSghoYtN%FDl2?ZDv?5K5j&f_N~KiILCPAkRw$YHV5`Rv!V^lxO}cBGYd;LG z1pHk)G_>NqHBufEFk(<#BBgmua3~&1u(PcyKjD6L0xAk3v`f1SIKoM&i$)?lsMMH2 zQ3!4p1{C|xA&d!sp`V?nBEgeu-}Lt%s;Q}g!)w_9OeY?hCA&)3uzYRc^5ub1zx?vx zO=BgdrK3ju==5dd?|yr!Mkg@&O4bT3ZXhTXMA>rxPLR0OfbhJylmfmYLc|xeBp7$h zv!iNStrqdaDaBGwsq|RW*{P8up|rD97p?XMp-bS$8`s8G$I9vLNm~3<8u=@PzVE*X z4@O$o(%inT?L1Ijdm@_J7+rf^mK)wz@g7X?a zAD`@F6khvVhT2N%N9tgCXG*}BaBy9Fe6)r%d?2+rB?xwy;XMgw;XW%7ieT4!UERpY zv5~OM9WH^zqHR4rJyTOt6R=;jC+u-mLk@?-=>)YyBK$e%fgWunp)+i!j$|KK1al+~ ziGg3CHRP~^{OTtscUN@{;mOf~!hymyyRla@sxQTYy;LAN`{3`a@`(V#dy>?+Oa!GQ z%L;zCLpDw`{Q}af8WXovX0&;tLI0%v&nvOzsMvuW-Y1dw0b)jf&F9*F-3T z8F~^Z0cdaxR07MR#E@X-lbEQ3`iBV?~3AlOMFpkhJKwPmFwR4 zC_NXtXSsWC0Ba5Ydx$!V6geF|lCQ;A+aRX{!*!8$p@$tfYP)FECU_brf+bZ+WUZ>C z331N+nIO^y(a-Y%X*xBic6B9k8d?il^IIg;i}1(49}ZR5Zk#&%{f!@wkB^@_eR^^B z}in(M{p-O^MLf{=cgR~q0kZYIS zZnw#2LlvH-&CLZj=-K9y&uvvGeeQreU`5ChFxaefZa(4vDgIk@nvM>gfM{uNrCM@0 zyVp-b)j6u^a|y0W487G#J2*bJPul0bcII=MNju$#n?l2+buGg7k&&JO z-A~-TN63;s|D-xvRI5{3GxX2ESl0e6Gx_xs0^tyGN|u+Lc#i|>axYsNkji3e(Ap{xKexHC;Ik-{ zCY8x%%EC&w$FOX3n-E5TAkff1p;Mp~Q>iB@1*l1hel%qp6QDHuC)71KI5_H}YL~IM zTo1X*cMv%pdYx!a2YLCv&h>QfxJXRlDUW1U1nfNYfyCAwG zaX$7>iRc>Uhe`7CO$tv1U3(;!WPQKeWxID`x)xCoN}~k?>mu&8@DE#|h%}Vlzf(LH zlOCebS_8{k9;=|pw&|HeTFabov!VehO%3k3Wr~%71<%q_g%vS`o?|6#6D3nc$XU|f zUSb|Xl%HyEY8Q&ak;#Ii$>D5r2ncgr(L_jH+b1wb2*<8)Ix%rf2=IfUCib)`bP4r) zFHhgB)J(1o81-Hq6)JoCyf^iQTZ4moy>Su~{~&Dkf~K>6&D%Sz_fvR>asCCnUv94y z{CXGJ&$gD5497Z2p+J)M)Ao0FS|@GWg^B&wKotO$or6=AvH9GWt>HnBEd_>!5CXe*1%cEWm5 z0mXoYs;Ij{7u4*eG`!8~v470W2~;3g-Iup{9wR zA)X5LJv@9B)n6nbl2;Nfl6#C;}o-S%QcJiG&pl$!vn6&C&@)YZnw zCfQwgMjLIq`yn6mcl3F=c!?(4-Co8f{JKFn=Wxi#hyLL`KHLxPE zwH+{&wh590($ZJNczcB*kcgbwTo^xlU(=4PosamOJc7`-)it<95U2Z536Ga9J5PTU zT_2x#K^UAq35VezgTye3?Tt6y`1SE5Z%FnBq*j?Xj(;28IPTfE04n)8zkcJ{JL0da z=n@|kDU+KCdI5OlhyN`~_UyfqEX6lhv}P$%7`v@;w^U#bS=>uj@UxKHYIYkH(v?*R zuPtd&qEp#q^O=+pZdz zONk;BwYyBVcIZBFB3aBO;-bM=%t7F-E&ATxx#hVg{rFVt9O#fzi#AWnDtoUS(U$=vs!1u4Opn9C=CjDaKf8T$NxE zyX20$7eLpvQ0Tp+z($KvyQC0HHv1qWwImf5=2TXl$R^q4RoQH@5Th4>UAsF1ya%uU zWMb*e<{q5`7-9z-GjR?3Z|pFnZfY?3Ndwt^=I7s-q^@xY$sB%{i$?fZCQ zblH^=Tg1y@nbK#oc^#%GL9$?gb2|Kf2jehAA||_!bNHN`$p+#VG1!%K`X8@LcN&J& zO*J;E*GaDqa-BTAdc0{)JaG`_VhLtob_FG%P@yrAT z?1$suRM+f;!A@^D8VN#RCQ3LT{4m%dT}EU|JLgim>>S}aBCdel>7YRzlPh4ed+jDf zM5dsvJ!1E#)~)Ur9FIbr5V4#rg7A))l^3%di!fVQMc`#|F`++%DQq8Ec*=}k}&TVtMk6?U2oKmT*PbHA8{_Z{1@ zvh%?xN0|MF*AAQqeoHw}&z=Qz4T*e8WzgpjKr9BbYf7&v2>CV6ZU}QqrAz52$Yh8Z z3_-gLF;2VE8&uluN`(AMrQHBYw#4>Pd_Ztb3yMVuFRw0JK=LXOBH3BI{1fH;dazy= zk(^Q?!Kl2vq5>n7SCdmAEUgmO6cSp0zfadJRM*a)92{x8{-pWt^_d>b-fh0s^Z53y zhY#;h^ANr}cyjP|XLECN#~r+H_veAJx*ZqB+wGMk^%|qie_PT3urv?Vv~CI582Xy_ zVnWhC_vXzB+9m*zGnda7Lw;{q>F_HZJeP^Mlwk(~h%;y~1?@4DEliLT#{SVkEk2In z{L!$($@zma95sZUc5fi!^J7jK#XOf6#4gEzZmfYJb6aB#`cXZDS_Z}l5;f{u7}N-V z(Ac`}>E)LGsb$^3n0lGer1+3}0G#gfRxj1HS95|#f{dH!4VX+!&(TW?ou~$F&j^k1uKCaS5)>DXz*c78Y0LpQtKk(TgEIh_5AW4Zle1 zc(Oo5Ne+1b^WMcNyaqQxQ+uOZ0soOW9bo+$0$aK5n98SbHexfF2&as++r0LGA=W_G z2FMQxu3=PsqBuYQOtG-4G@Bqcr(9Tgs`N~KX-+Xh6{Yosl{q9HeVK6ZbnhJ7&*zJnrbcF1T~QbL8U4jeB=*joe@`GdMCkd-e&)+pTM8 z7g*}qA14cekTtw5(kCarGNQ3dxJg9UUN(-2XmqHl3lYh;E?dIQ=W#NvM~kK^(AU9(d??tO58wfVQTgBt-M-M z<4`{X?+bn7c$x|%%^io7r{u3JL&O3B6}7J?KO57>(j4k*IJR zd|$}v@E#GOe;7ENT771BLEJNTKIlY#=t&4hz|S2dY>xz$0e{phV`M&i6xu{> zeu86O9>LqX#^`kem*!eTk2YFrzt~!)2iEn>(CCne;f9`a3?j>0qy4yR8PcKpp(ZN1 zE$csnvBbQ~7 zkic*M{96;o&ud)VIf0*(DLwcFX3)2SNq_;e4Njz2ZQh`vJ?IUCt~mk`$f!}-v}x+U@&oZOtRMCl<-Gzr^m)YkPY$3E0Q@{QUZQ|I~adSzc3*Z|KIy zdwE^!Y8W@xJFixE@sL=e`Ik%6RGw9%)(n+t5*8BxH0@uXs+?EDr@mHIR#r%Oq@t#} zE{~vXD&eItFFz~07`j}_tAqp-k{*Ri|1hcW9KZ{E!?e-BW(%OGS4k72F_#R717Qc} zS4K=MX9E2WLOZG5K>`M)6TafKuJxH z^d-V6zuD_rJMoik)7y0*(C*uHUc!no%Mf15^;jv3#bN@lQ=0@p@OEWF2_uoRDJvvm zR;nN@i~cJ#L?MvYZc{oCc0f0wU1<->;Gmb7VvZo!fEdnh5(ShZg0RbGm-(Qj(2scz zn*o{+P01};mXQ3lXM$@u@f(3uXK8U&O$C*@!W{NQ!I`>(x`G@IS`O+9YYHKzR9KhI zt2lG2pfvwXeF49m#Yo&Oe`Z*2iByd6wTao;yEAu&@85nr2^aO;zdhV>`*B;_{Y4DA zHZk3Caq-4I9uMzt9MGzE-OJ4)MD%mL19QD&0|O$m{AhkdKQ;HXw_!{@KGwT2-`M}C zg?aI;+}9}b?aDL-OYcd(-R_I*`s(^@#1+?<6;u@$mlqY)RIcz zm80iFr`|dovS`#HLoA25Sd=g+O-Er9Z7Oicus;R?Gq^zJ3OI@1Cu0&9z^>Kap;0JH znn((7nb(b_ z|8eumY<1s7M%OZAbS=YS=g3RL@m+O9jKXT2lqe8_KWP;36e}bOK$6OuGRdE;M1po* z#=?nR+us?HL&TsotZ~!AYD31j*4)j~7?MY-=(fNv?-nWn6L{iGaU%04S#rBWt1Am0OlBz<<&K8dC{qYg8F)XU43m#ou-+3V!U3*2z=vszD#F3YVU+*ZD)!41^So@Z6wAFjrxKyg#GqtAm}i8oj9pPup2`4%&H|^0iB*~ zPL-hYOddhJ;`%c+lIhfUXh@ZpEMcY7au^Sy(vdhfj-z~lR`e-9qt`Q1CauFot6&*)l)|38kr zH2jL$iGYcZM+vhiMYcfsn}Ihl5TBmdUWl z??>1f=KOx1$N}fm$=q&t+HX9`7-JPbU%=)R!Z43Q9?8q8KT%pn13|i!kc^4JJmlmrF(Q~PCfO-fNo&@ zQA*b^)|UK`R;Gngm1!vTHzF9L{}5Q1Q&*akh1mS8{QSJa>N9z4d07qp9grLL>y+oqqq0ObB*vom{+#RfO3d* z?e((#BxLL-?Kbx>Y^@C_Mh2{~}yNcJ$nmA)$|WDtbjR93NKL7rlP z#Rv-&A(e$)D)E@D+NHP!JqwW-wcQ9!N+c4aMj~e23-UfIsK}DWLa<^}u8|6)nw7qg z6r^!gC3kE3+?v(C#FZ+Kye|X`GCdmU*Lwm}OX!5vZRm5t5P}(!Itr%=P|NHY_yw<$ zS1`c-7!5s~x(Xe19>5q$p@uCra}8im6q39uekDPLr3e?-WC?T1>uSnRoPr}+C+hM~ zlveT!E9>$>zChQ?%S-F3va`_hAh(*^+S<-uAGv;GjBX-|KiX z*gVqF26NXg;)CCfx))$2d^bS=9@==iuI``f)uWb2YTZWvP`|#B^sa9-&94u%4$L#@ zsyDMaS(%0jPJsR$7+{|#Rn$QOln>eAe4xDSOjcfb8NVW}Yr>kca+HRJBYWy3NxI=T zUF!y*#Bu!WA_+|S#(&*szhdV35xiHj$$)Z*bgi1dpI^`uze&9)+NWz^WIx(}qu;&B z=l|%cDYbzE7Yg|}ekZas-qn1TT3gu<;K5eKZiAF-uUWhcL z>9bgANmgHo6-!p398HUfrBBNsq|mxOQbBj0%B{eO%6$!7?NRk<;5DO-TjdMZkg?Wi zWYO0FL6J)>ts-38(10j(ZWeBB)Gs%-UJ@aSsI~Rd+}x$cuBOCmuD2I4sS+lA3;OrK z#ImVM&RnCgEU)rRp%CG`Y!(SCh_LiTX-!TJKbzn}m{3v4=hyS=ODixE=Hy_3Ae#=Y zcs|VZ$jse4Gt+F(#67}JpY0hQoCQDYm?7-!M9=W-E$AD)HQa-qgP4u?Ev4??DiVy1 zk2PS-aQcn;mbaT8tv50aV{7{UMp5s^dhL!CeIv)g^mo3?l}OtA2vsQ}+Md|5Q{X79 zDla`%R9TTz0Gui-q7U`?+qza)c4GVHkQvQMzwi1Y!R*E1VVE@cDm51!~$|>c2bP#X^dVBAv=msq5e(};e?B)8fgxMyqZl0ltZLzZ+#DVhtL20_jY(I zscQuwUu6gB+I#$>_jdF9WNdARzwGE5ixcxdsNbnp%+e*T z)oM0-R0pI)iM7wN;?ZiYW(lo&(=JGfSmIe_Fm(y7MB%M6O^zoZa?@b{VL-5cnMrnjXf>U>bpZR(D#l@9b36m2N zlt-yRKq9JEk@aF7y|@U2j4_!JnNwc3lLM#>>zjqzZWAr>ABZ|_{VtFq0 zq!Dg+2_Bh77(K?cEcfdf^zDEIF@s`$obKU>rk*-{iAlwD<$Ch>>WGS993DwJQXapk zxVWqg`UxPlbPE0}WKl}jD(Z`>2uVcIAYTfZ(NrL95hPW7y(2fteIfm{nftc~&rV;% zq^G%~C$;;&r)Tlv-N(6SKcAi$ynXU|;-FZt1Kt__$77H)RfmY3{-nXnU|B3~;AHUB z>7c!(oP$GYUg=E+I~*ciOK^-|zfYiklL(=`b&#(8g1?t)dhqDcdj9)Ij~;!G|N7A% z?AA5lCj|vZLDybSRl;R-Eu(80{tr0v^01u^#S)KP4!wWf*wQVKsx%6W=#YI)1G`zW zVl-}QyCw9hZu2I@&lG0urrfi+N`q@i0-~p}VDVq$W=1StIY8Gi<6cp$ZVD39K!};@ znwVMYOQz=t^e(tHs(7kNHD2Peta@NlgpqcJvRVkpX^oH>#b_T?wVHYdns6#YHqgHg z`?t47N7Y@4ai(BnQ&5nlo9iDP=jbOv4f&c*H$ODgD`Ke6txa)=OO%`UkIsouf@?F7 zZk(LCw=bv0&RitugNZh&eKO8u zN?E7Z$H|-=5=FgXug_$+`+1zwrwkw-%;nor*-Rpoa@cf@W;dU&Yen_-5Yna`OP(s@ z|LDWr{3czy_8X{m`yJG-{pNK@iM|dTP5atWnhbq26J5*bT8950j=VhlRIt-(0JUpI z`GQ%s3Uz2p1SNH?mW8fPi?wglB2DJiR!X!yt4dDYE}6iDHbRKXNdy*^8;i;6LAoZ< zEQv!a4fH7yEqSbB<)Nc>G%sS@Gm_gea=-cUjp_S?GmCd~PlAn-892So zL`tk>0bjsjvbEctIOg@jhFDlOCPOBJAz<_RVm6mRr1bg24wv7)OV?iM*|^&rHeLG> z|GlGWez2`;Wsnzr4|J`7p9Zp|033M#;8ueKplfgLeFG&^yOzW%*8v6gMwXxw*uFN)%xD2qibV4P`t%kXLE0#y?%eB2O|bEAd@}K zgMx=0*MB|ScD6^14nPFea&I@(rrHKsoQ^eatBX7U;g%7C}s6qaGm z8)$gjY4g8LJ}nVjC4-i zyWV*lbWQwu?(K(9o;-x@s<)Du>q*PYQM=H6C=W5?bB@j7;_K4o9u=kt&4yT_jB+WWt+ z=2!pz_owI^-ueqbtJ}U?wnIkOGP;)G&~xM^VmliujfbpKq@YvLi|L_nlkSOITz!#FgW%#?fNFx<7fPXiO$pw{dFUE9=11V#^Z8g^^6 zkj1kuNG#BEYKA!-ET+0fpd)lsYms2|SFNgBx&key7KEt^y3K;ns=Lp)U)ONgfWE1f z*RU-gBHTK#rS9Drooh(sM(5SKxuMbVsV%ko^tuSu4vY>AjE?Ka=6hR*M#mT!N`HDv zL_|&ManY~79POpI5#MQR%WWIEkvlRy`{dT}JsP-~?wq-Pc4qNp$K8uPyB#IvXRV)n z{K;2;`{Hua#khYowSM{OxsU(x$=^iu@9?*OJh<@S!3X~Ud29IU0uB1XlRtjk!hBm> zW33WQ#ms1ySln9r)J)e4DBzS-Ycy&lOOoSw*ETR54%5x42%rm9=@Z#ARahLyq@OuB z9)o!@mlLCJgwy4X#2_MN4=Oo^3)o|w%rO<|?qMfZ&P?GaPZrBvEE&J>Bb958Cn>tHgWwLKg%U4!go zL5h0*ceiz|;CH|KT{XWbc>z3vuBB_wj(&eP+q(A7TW`JfdSZ}A;<1dr;X^)9|D6mO zUCZ!)#*vqa)x*CeJVyiqEA!DsDumh&nuCNkqiLqM>SD}^HG)Aj*vxFiq zky{9s^!3H%OA6LnVnpC-2k9Dw+*ZxjKF>mOOfJ!`K=qq(LDi=+B1DX|n^L+I@~E_8 zWK_i^s~(FbqzXwekt{59TUAREt?Ho8P_lRLQg43?bU2P~&85d-4e45%<~Kmsp7wW9 zcj|4N8`W(<>p^Rx*dA~EY`nE=eR*qWV61nmmmpyB`mNlD-gA6$Z$jW<92c$W4C`=24d70`0A0BhQ2Kl^873x!gY4ey;Ps}bz4{H2fXv~uosSaqjUWP3&=+i1 z`T}8&3D{iNXLCRj5iznzOxbRrnNb%HiF^@dyWQmthGhsyMb~&)bwx$cYj7qf=S)#S zak?|KvZx@BM-t;YFs?YWt!s{CH6v!Z+bY+>EVhz`5UeRUNY^0nvuRamA%ki(BfxB&!~{vC zR=R`=ezG)Y$4aCUgt{&8M@opo9G74$(L#~il7he?^mT}abmP63`cFd>Xc7S|3F>On z59pqLkxZD9hD-gUqf>gAT_IvX-_)l^`5{r8xYdz6d>ldBWzTTuL=R!7 z2hX;(-54G|n>#Xmy@x>*?(&x(U$}bZa`Iza8o&747hisQ^$LxhUB3D8gO5IV_uL0p zsjfAB^5DU_n-|WVJNHKszWnaZbDw_j!5_Z@yZfM(K}m>3qK$X6-I8v|EVB}rNUK24 zK@yKktt;^rh&1xdD+|WW1)~D9kSAv2D;9}FY|*IXp{12jpEc3E0K2nf_V)Jkw2Ukw zBMkO}H`yGVGuRF(N&5MiT8zl_TRX=?6wCz-=M9GQwkY>aJ<@LoqG%)<)y7v$s3Gh!$!N~h6lk}5p{UI+!w4Yx^+m;`7!skyb+CU*SYB2~=b12-<&~%~ zF@r5dMO{&0T9p?EJ0?VZ16w6fyY}RoY@3s9+qP>a?rhiOCf79ClWWJFZM$}EvTc98 z@A=Mk{=!=8;kv<3o3qx;_K8>(a6Tari$=8)AiwuUX7WH%E?Ayyn>V*2*-Se;^z-Y& z=SRt~f?oh_P1-=ni=OXpm};m4P|;+UuiMpNM|eN;%LoztQwYRvY?>cUjO?S|^j5=* zDER;9t_s+u73Jvn-7iMI5hjfa;EjWeJ>SoaJFU2N8l80|62rK< zJwnXn`d=dm1~?jtWT6P?ZalTwc)YXyyl^Qms*&8O5Ht9AxpoB+AR%}nB&sO9@-CNz zIPDXM>gIN91qI(7E74j7YT0vNU&ITsy|Z0E)V}CGDq$k5;c$tgI%iAE6krUZncfki zoB;R#bF?P#LB*jZv|NStg^pBz8JL&?X1&~w;r#ad_WWo_>Fsn!iidQ$CZp3cwISqr zUXPe+OIYm(?c9W@!<^OT4NMVyJS=n#eEm0Sh1%Kbbn`P(F8Z`wtIhmRbJcl5BHPgV zId#HzNUbd=dHia*yFrv>+Ye6t7zS|1DDShZg+I z&85uB+3?@n<=)U@X+AyHpjwV`j0mRjoiKa$RC0Md@KfX%36jrun#>q7c`ZGEZDW5f z5yU|c&99;E3wtAunP^FxO<35Ua+VNY*BjeaHj(b1J^i)tGO3G15PIhZU-Wd}Bt9=q zJA~C%QXKjrZ%`*BFICP_7EX!VnZr3}G#xLITYA=g&6k)7v*?lE%osJ%US=UoL~%=) z0?h4a@)Ryo$sj=WecW^h5wp>Yu#wE=X${*Cl>AM4|-zbE$< zI;m*-0U<;%;2Me*^pHCPy7&lJ@BScuyL$Kh-!ET?YyzVL)xIyo>n;`V z4M0y(p5OCa&QouRYc|#_&4Kofu4x28PTZbOSCencU7MNKZT?IPGnXSesZx$SdGp*9 zGdeoVettI^BuZ|=%|2W4I@QJ<-gowKj;#H{kYmY;#D4VXF#JmJPBYw*PjN2i)sqC`#xr}fPPHHbtd1E-ctOp?ogvug+zvUl}(-!t{ z?RjVN9IF$objW3oRtTzPX=UY_Xer`KWz$u5ABu*`w}BCV(XdOsrd`4LXR*-rF=rO` zkY0rVrFav;;GhCAi+PgTWyM-D8MFi=6YbGDKKFrk!2q$^Jjfh!GViY#1<*yq6`PA( zLDWCEAMXG4Umg$>H)JKi)ACnqRFh6-lUq06;Do47?KDPke4>LKr%+hLv#@67II=Oz zGDY8SZ{|6YdjOFzZ(Fi49LvFRK{__qt+Jf((ckUS9n-{wix9&HuON-_>xJ+iQZCqJ zotoXws`wc2g&hCuh;poah0#|rdje^UDw+2c8l<a0$fnZMA&>Oe+~C3+9z?TF6I(4Y zYVGJ~vT<#)u`wA}#vz{yB=Cj|3T(S{zzm%cmUF1Z@OL_&6%qD+I1Z^M;~M3<>TJDU zo^Uk@c$Pyf?{K?IMeXE=vwRp*sW!B1^tBWkgsDM>{4{!BLkB@tj&NOB)Vy2||p^qODAbA{s`%D&xQvd1%`eVLnJZfhq!jl*WVFz(EQ@D>)Q4_ zj5@foINW+p9PzeMG;+A|yI2f^|D3O}>%}wETK~{H_jz$FX9UI8^o=gX=1frucw601 zO8x2ZvO=F&lj9|535X{XHvkNHt(9Cpt+bSYzR(1H^X=Kp@Uj7xLb_#m#)g$5x|AYcnsrDOfdb)5T5B<{d*6zuOr&QeHS$g_qfzG+_e z>^Xg=zX;mJ(l{3#wtLxOTiT})ygP|2CoNgM_+nJ0oGqL^EIhQaC70@M#$2!A`SBQ4 zeW1i>&9VZp8Y9laWvNP$+D_}N`>`Mt8hS$1ci}ULJgAYao+RC@tZm%IjP%_7&BAIZ zx*jFJb-ioqxvO!D$?B%naG7~4*(7BY5F35BaE#!|@l|i-&U$fju}p)IY75Vg zHvN-d1xw8F@G*VG*UXKykWCZy9?YGA1;ZNKm(Q8D6B?$z|Hpc)CLwWk|^#BWYKB1>|Kvx3JDB7*nX7acNVs~CSgZJU4{ zlbcG#V6y+f+XZBdnbkY;agZaw5M$?u>5TmHRNx_cr~MQR_^oRIcbRK)VB-U@EIHcZ zn;S>TrbKgUo>&SN#nMo4FcU*5&SwMJSavj8QUGS+idlb}#kkettfK`Z+i{Q83^L+4 zyB3!YDsa3nZO%OK1qG*`*|){;9dKOG3m()IoQ%JuU);etwv)%`y=>DS$p?3}_w+oj zOug>0hy+0pk`91$0;Iiyx*nf+{^eBkEI&T?=<0;;Y=3G!NQ1ezA-!4{Fh5<*;!*6z z-3_^GQd&-HZ>)M7%Si80ukm(POyf!44jGV)s&02kXUac%a^DWya$iPsJ6}pfKJMzf z^5IHxpV9m_pO!xDV2>`|Yju`fF2V2B{`UY9q&N7$H)JvR7hzz zfq}hlc~iI8tC~U&)lbRp3Wr*5Fqz?fUxWB?IQG;2UaLEJ%b=8Cp#-U z$Nw3NvUdt;hRABu3H7JQDHauVL~gznnJQ{o<`rV!j>N+tF76PnmFcVqkx`|Hoe;pd zft8Q%DM1EO=(VrYDj8nmAl<|Ze!w;UfY!I$D@FsJMKGJ_h!CAZOFPXUP}_2`ahI`{ z-AiZKq+_Z5y}#QIH5GP___AbJYzKOHlFn;o<*gR3aOCVD80h>RwR`Q4_OC+K(c(1U zDS`!1?F{Gz>Vcd!qi4AlShYdwrAFCx6~-v$2~rDXG)m9&?mtpJMZB6Pd8dcnmv}t;yxk$s3MR12%7e+Pt1OUXnXL3D zWVvdC;O&ud{Q&$6s_(Rb^u4(^XhA5>{prO?L8LyE=PZ)qV%HpjukjJARx}SFl|U54 zhdV?83E#li!d(2W`y)q`XH%?Io}&>*;g^Y?DgS%aw@K3X>|ewbT~A9oJ|f`gnW^{Z z<%`)v0?R>e59xecp+J$GK(bKt^If<Y3-~ucTEwvj4@Yf- zHsz;B(-MNVRE4^%o)5l{-SoeWtu{XgcfE~)#j-^{)N~_1Vp#(BqjL|0Zw6W~l?g~^ z8>hEcRaliym627Pkl2NP%B~JiV;$;m_OkANklC~>@eE9R+o47b(fStCNEa7B`t;wq zxtt%-8AEo#-)VS-@}W2zPVDK<2YCtp%?B?@NHsak_s0Gb@C>cMNS2#0FVpiq(Js+G zPgt&0=hAUC4^gCmUj9*nry7EEh{xxh5IO++1W^v~g2N%Q6Yes}@>Rj`gkId_kalO{ z<8NwhN11@dm%0}-eoQgm@S6GtC4l#KLf4NILIX?zW{=r59w|H0BZxBb2-FzL4JA z8aD(K(JuKECp?--lCV=yxa3zz8-H5N-e)DIBptiqc}|KA7K5L2I5 zQ~zlP7H4*+E!VE6bf;eXNv3$9`;X1~LG$4j=Ub+(;cDuOcoM-tVKhv)DiNKfXz?a1 z^9nzrf<~OE&}E50<{1TS8;0Z6sWQzdh0-+bu4Ag3c9UOjdUEH8(ZhYiPY?2>pk!6MHQzag{!A8L#tgbnaUEq*6qmakmWWR7K`CpT@ z)n^cUO%48<<{@i{vIK8pns~Ea=D<1UbKHtG^1|K3<C+S0kKGxeH)?28NU za;P+9Bq|;592U&>B)#g0*aVjb03Vtz3fZXXGyEUCTa@ci_=&vt;m%~|UY8IwLAgEk zEz^bu?ASlv;ZO2Z>PiRl3#QDmJtqZ4$J)d7x$x>nzFe%+m-w?@CutOhb~$n4(!~d{ z{t|OL@g+DBC9HiaF)9<2m+=ufbwA8}lDH<<2=z~o2y-R>I_l%8v#|@c$r{=FSy~gR zd9>F3{K42w-jErkR==TZB%+T+$f4t}?TGRjkl(bu17_w5BrYJP$BwKM=Mn%@d-iIrM*1KG}qeth;w~ zHF7^&FA*xJ4$L!9K6>9sHU9XbXavQ)IsUFeZl&MUV$u;J{5T8POm5P63Q2CA9oZxG ze&b^0dTO!`J@Ym9Q<~>WJW*Li-Z47u5|-N0(oRXvu6?{&lFKoO8{pZ=92-fwTkd_n_Wz_L@ zi%Z$VK7=<#$2FanPqaM#!$bw$sP=l$#$AGCDl$XwQJHyqLD56t{@>_ZdF_$ZUX z)=?z}4sShEIyF8{8gd8i|AGfQC^*=;4cP8(ts9TpSiZGCnDAPN%+t8UofHBtUTru? z|FnfoUHmo5t_eM6a;#DscoW8Mjvu~bqIT3A-gt&MB;Z{Dq57%(%XX~l*nW%cUX>xc zynjA%gn;lfIJ-FUdjL=r0HX|DR~!gP#T^L_C`)RJvaIk(1kwl5VRAYQw=Sa(JNO)bHMChU6!SpetR49wDFWhr=@9YY|9v_1Y!-bueKQh2IBS<{RBECcuO-@`J&F81eVulND(eLU%N_n{$&e zz^nb^AnafJl>~JRF{@yjMTd1y&dR+p!b!|N96=|1uuO=(D#o()e7MrKmn!Bd!BK*oxu6j26U3 zA^_pw?OlSmv{ed+tpnBI5VvC*t%|(k%$Fo@Uqq2F6A`edS8er!$`pRNgW#wn?vTwH8;XAE7&9g2uOr%GtQ_; z{+0Z-zJ!=V;%59+P%zB$lN9-_i?RKIDt~ubns09Y#wxUZ)8ez6v6G~H|4XQ~NWBRvOyF0it^6cYG zU7tAOX5q1vU8{SV#}K5(K0U&-`zpMz`!X}f%RTFtui(yUzEh1-a9fXA3e3L4*b2ua6sY5 zi+g6p79C_9=$5O36_=gk7IFC047 zZn2m<|6B06O3nr$q9tI4=O6p$cSv^T>+?&JrTZ0?yT>)@L`X?|ic6K|=*sA~4D<7X zZOqF%ObOz$Y_y)xNzWs+G8Qh4FE^)dw>|+6hI~L+Us7VYw**8bDhhIyz*flUg|{Bl zg+6V{sB7)rC2uj%^>@PB+SufYJ>ct#E_+v$&i9&~mnRg=P2MQafu@#}^@CdA61$kr zPj^q1mOWFIg|9{f0~N?{MS+Z?I0}@_&gO|j-Pd{{t^Lub#rZY_&iRkM0+V%B23LQZNJ4^Q3 zJxdnLc$arg=GxRtdu;WsWAt^29uG|l89#pYV`N&*_cv*vQKdoK?+*qeOmFz>6C)O}6o!}?-FA0u%#HnJ|j?)`0&9b*!XL|kc9GR|o5}(=f zP!=Mj`&8GX_m5CuZ3N$RUBBAjO+9&}Yx2Nnr|1VF?0Yh%j9%{ zD*;gYcsvI=2RBcT=O~^SV?!wHM9lj)6;D83z2)`wiFVzdL;6VI+v2y4XMbC+p*kIW zLMxEVK`4wuC5|MOc4bXEQ!iJ+ydL`Z-=z!eZDcH#JY+jm#*e#67;YVTUk9+8>S-0) zPM#{wT`6-6iBI_TR*m91hJm!{*-Ho!I*s2)h%sab5zM9r;F+|um4hqw)0LTlvX#bV-KNcZz8vf{HQxI=|GGVwPM+qz8G^<(dC!C*l#p2pOiIF$^pn<&gs8-Hu*Hu}@vVy@iacmF>`BDBTEB$Rrl#5|xPWX~I)} zr^bt+f=!Q}0j<~mtbOg?_po!dV|2J9<|cj&a$6eVOE|7i||>C$y=F=q!8$cr(|EIRQm@=&`E+R${MR9d^83d5os$xGAzyVVEO}=q5|~58c{1;I4$26x?z1Zm#Y8~$>R*@ki-l)(kXqnvS8nU{@-l7Pb zEXkBg4p9^qU{E@<;+>)^&*xVTfFo=pd>TjStI9t0um|SZvA4AZ)Xdc;GXit_hmdSz zCG8Vt{qHU_-kIRb&h}>g96=(Q+B4MEJstAA9WdUHPJt{j0&(1R`JOA1%%9g8`9CWq zLRqHvVlRHdc^(d7c0uS|TKt{4<;27&^46l45iGG`&!t>#`^3VIHSHop{_(wDlH!kM zb@=CJ*Oq|bGz}xyaEt)b5Ya}jk_7LS?&jKqM!5kq0^t;;kKe-}AQ3;V)nn;29=LgB#_0L)+v2)%gtE(IFxIT{mU)R{ux^ZP zX;A{ATk|QJUXtwm<=4!`iqyKwS&JlnVuy$%T|=L$#?>DXB_T<^vd{PqpIFN#K72k% zdo!}=4pnT>be_S712rMS*+}ybZz13@&7D6RsblvI{uP?;Qck)nLz(&04I4vmVgl_? z^O}oS$*q5HW+-Jn*nDAyXv2ZS>b{&@%Z`2c6gIQ}guM+=X14fcS*=>a5{E#R&y6qZ z^xVdsXk&TUQDk$X>)$rq)tzEMTnMuH(?XFJJMOBoL(D*BO|>zU2wK~EHyI7lTJ-4? zV&dB<&L&~ZEU2#RaHg;dGNsv?LUV%pagf)dcKIL1XG@0ux#4M@^T6~bEw~+LBq$lg zC7l$;&q(hV!rV~_cTiD@iHQ;9_=;2f#mJS0%&MW}>%9!+8(zN5mSI2Ky8A?{G;F>m zAxYxwhBnJ1!G^k2od0BBM_&BJ#lRsX9_hjT?Bgb&^9QTa&^Ig+oNVHJOXf1szRJNh z?=e3g8CSQ7qW)W1507iJs^YtaJZ`R)wjM>+0yMhXiv|V8i~6G?Pb_F;nc3!hX2Ua_K6(=hiH5P?frm3z}>YtsGL;e57*ZFb%!jvqmsvz2D49^dg!I|f+t=$2V1)b_5T&O#5FO|&D&}Ct|hC} zbo@Ymx#WDxKFpoy0_#^gbHaCN>PGw0 z4zRN+9ESa;$H@J4m2|OH71Q0`E>%I-4VFXqN++(*s|E`tHBMeIut7_%2*Uz)i^B+N z9Qqv8T7{B6SQM6)yD>gP-bl~_HCsT_G4ewjW11^f5%@_m&-?^`iq!MoW~;XE*VI^c zWE5+`HkkcA#LpL(qJYNWd1T$Yc$GhN)v+cPuJpbiiraxq4J)k{JIM zcE0A+qWhCYvO_x~@s*o-Oz;dJDwx8AtyeHkDUncRTRNZ=Jl_ z9c^nJA+>Rl<4p&bc!V}M_=E)o)#gByrIXB(b7I(4gK_2Rg5rK$ARSeyyy>A3S*>X< z8t6vuL&>0ImWw@lL5iF=N*CQA+)zqitpjh&6Q!W4vVxaWEoIoI+d_pNmE7^~l6rY^ zt6TX;z7NGRF(AtJFMR77GdGIjzaG{q7T9~5R@MpbKYfsM3R&H_rNC}~x#ExQTR$~v z6Bx}s6n?Dh3lRqccc9^B0eSo5TYK(n;t>(e-lAeG=M_CCgvut>@fre|`oP&YQ z3Y@o3wYywDaP>sO z{`AAkE0Ky^w5^wecXB`p@?BPP0+&849V?J1NNf}}#o?)7M+D*yHYOIs*ygd?hm6kfj7 z+=BzS+0)lLX+9XR({zCxtH|YMAMkvSG-qxA`(y+E3$Xid@{_BiRZT;F!r5?~(NM1k z9xsiX-BVR?)32ViOVUG^DgoDoin@w*q?y2_0Mw(f!rl+ z*n}dtOVbq92VcWA1UG_RHa*9Jgg-NA8yIYGv)k+)C1UG`^0b8utZ7PR5c(>m`E7ju zoI=`!OJBBV3?Wc65|PsR&k*+ib%vJL#=%Pw68;+XHOcBVmvVG13M2W87c^fyIVr@KeCtV4BpuBeW3wXbqf0uYayx3%6`5A3KN?$o zrWqIU<)*tbtPtPStm=PxqfpWhhe~S&eMIukNM+eri&S-uF8lQDCa*S?$e@Y&n_Bkm zL}POJ?>vN))JHjZC=E5fRIMY^D$yx1 z^?<^$%wiW~^0hb0S$U~EWsSh_4Wnu)aThr-gb*5HqS~E_e9gHSP`R@H%HQ$E*s6E`A~tvLUp8vSn#O;8 zC($KWKqOt&x@bcitVfSfD|%5fvC8B}iy^>nT_j(PjMy5U@2+V+o$k)fp~%|<4^UiD zUYeqtY2o7T0P(rdn5ySRqkS5(vAF6COI9p|qA4Dpgn9n_LQOGTkbh?%YEc_ThZS19 zsnBBBLZpdJA79R=r5yRFJ%>$a7%g7Sp*k#8j#MtO0j6<5`M-!#-H33S8ct5U>P)BI z`CPr`^QBl{N&;bG-k5nGFC zB1_vc8-`~1(I-|YRM~?GvF-Ikdbh(2%jb(gh?Ay^6$mtz_Jx)t@{L5s$vupz5@D&Z zg|2d71-Do-I&@#H6?b^D6R1L{)m6AcIKuBg&AL#t5&Rk(zpn!vSm*{vA`*DdYA-K zN|v@sZb=bhwh3u=k~a0OPNs?L{C$<8sd;Uy*V+qdWY+%@(iJ_>IHKYtJZv)wl6%a< zfG8m_fJ%={9V=GVD$DqLQE-88RKV|*n}a-ybTNd-w-9o>8Sw%)KV9U9XEcmVWZ-9Y zLjSxtpnyFOHq7wc?rt9m-ALf;tsZI!D+k}pysVa4XGAeo;SA@aCMTTtm@FrT;%!Ku zSdxaj;%t#`Pl3(zRzU^Gn0|~R+b3-pK9ip zWx$`7Sr-(h$k_*O$ggKe1^}nCtczOYPgO-~Pg7MGMEdVZ0NYk+N_XxK zgqZ7+_|I#UsVy3D$!v;sQPc4Q>7QT&EfTZXPC0PKMsq*CRufYB-0fST<#mn<*vQ~*fX&k2q1&~)(f3DF2htxX!`SlU>EU-0l2GO@%>*OF zK98JA(Kv_WsQYUf3b`hSL>92*<9{weir|66t8I;04nJQ=Xv}|B-ptVn0dWL0-qLR$s*H)T^E<LOR|?$TinFmY%@wu#QXRD>yW+s;IX!0Dn>cSq-g_?|G&V>07he(f zDVScQ>Z%6;`*E2}H+@>76}286zV9+BD-SSvoU?fl(NDJ>k7#pXv%J!&`Y9cW|Cbx* z(nlXbnnz97rd4l~i&7_Z)q))iR6du5m&-Z1cV|D6qH7&4_ zRbckvH`zF0$v$bEqJ%f$nJivLfoIaL9tB)Uxn5cH=6q*zUjqjOWyrczz2UWM3e zX_?-)_!bWg<&C*mW`u7 zxKowOI1LsoGn<6Lp-1uODUm~X<0PoDYY)fZu{IS1eRzD6kC0|SoQ4^# z^-8`|$&5*<>EOW+4Zi%(jUD0;u>tG)FXx;if<6*8gPRCaZxUiL2!mf1tggE(sv!b2 zu}Nj>X;xX2bC>##SiJy2TT{a{|NGl5tij}mfMp%Tfvq8lCdUsKh`HFif0kXZd(*qS z!{ghSW`izBCCU`hyqIHb`PRO~~10$y7*8WV%m5qN!_DfX) zwK8Eoc?|zr6~A-!Fhka>H&e`TAFW7<_1K3 z&Qk{o5(nlpPNnd~h?Fdw((?&%feOUxQR9{=XtB7Kp=oA1-wc}+6j7>`%O$Z)%KAAt zFA0llwNcA^&LrA;$U`Oz(fR-fXrEcE3kawVtm$~6#8o;z>psyrT&cQ%@)&8dokC9f zW0L9kcC6F&oFjSt(`3PG2%!H-Z!>yHeVpCgxLWzZwCBM+MDfR0Uc^PY8Ri-8{;mQq ztafB>3x;=HX_7PjA!r7RiGWu|h%>k+{U+R~S<3If#U8q!5TvqHXS5vgIqrvr z{AF{hdJ^Dw1f+eEmVfg8u#RI}aU)Z-#K(G_TPhf%_G~lT$fz+?sIWvA9ZJ7LS$t9K zyqEZcj^fMqyru(hE6S;~QrX432%YK3wWHogoTWt%)nkdw{+F$#ojo15E?;*Wv@w%b zWr?C^`t6Uzc~XllfB z39o)lk~)FRFpdHrsq#oA@lv0cV?R;s`fBo|zlyvsak$5dG}kbw@#w|2EuPm~1wJ}O z?In3!6V6Jmqd#*ash~)-Mp0f`F`}*k8Ok}As?U5b7Wg21lnQ%l;MfZc1Tp?$qA8rn z;+iH9{*0(`%S4!=Q6qKb_ppB^VeQ$;8Tn?7Bn55iJi(aety)jpRB})f9ubi{&KRR8 z(K{dc@3<(Lm#nB*O}1g8b;fn|toooBibr+V3-ONc$tz}k?W{PTUllzb58g6$^Wdq~t!S>$aTwPi z(DVMU);ZE&HDXx84H}`e!9cV3%&slpz;{BD{OZ^J)y=0F($1$L$D0t5m#e9+w+Yg> zt@uqlPGpI25Z_dc8iP2`ahP4%tZjj|9T#Phrll&qJwGJ>w~$|4^M30_FE>I(jgrBEZUsgu&k}XX}OUzuPsaQqyaZgHmiVS=n-(*9^OG*@S_gc0jZC3*#hrOtRA)&`~%VGCdsLguBt3T zR0SymXrCIQiuw9+4QgDELHLHQ9xPf*6q^@o}SZaqnzrb=W_$VayEy z-KgVFUV#UOQ~KKFT=p_m(Y!L|%<7^8{1c+y2uBMH$!=gPggL#b7ce{iLzrS0uzm|=Nok75XNKT$+wXs&u_mbCu~-e@QGb2Ux7L_%Ep{vd7B;IlRIZ4aY1#l;HyooqQXJRD`4;Kp~{Ef($E z9!5k%dBzd@0z7W5jlf=ENULvnW!=MhKJ~D~ki6Sl2#@8o!x{Xqzr%y^%)AmFp1e?h z9umxiA;F4>AsJ>7xQ&gCK^uN>W7A=WG-^B*EZWuZWdLnn+gckpr3?>xiuk=S)W3?S zq4n*z?*9`gYReAoX5xD5FFRUk^d7kqx%oVIB)159I-Flpkup(j9m#UHrT>KGM%35r z<=O`?^!XC1+h~WbqOg*V-p-7Mqi0uH1F?G@ScjB|RD1@RhR%YFWm9wbDGYzMa*yg& z3wNh!O)Ihb?huGSEqwB&%=BqEAm>~FWzSps#SHOmd%IPzHZhvhLA|PeIP!AhWdNFO zdl2YLcN_|}nAkU4nyIyAgJ%bt;p&#i>yt@bJ(xFyN z#oRyGZ*XvnEi;!dE?Y{;mi0Rsbo${-cNMf_@QM^2Mq;=AQT^tj_-kByC7v0Mp#xYjRA3II-05I+Mvh_ac=!jx+&=R}U&K(hUHtL>u2t;#7SP%V=T~L#S+Ct0 z&XDd#oehULiXAFWV_%+H9i;}Oz&f3Z%_k;X?1_C~Q@+28;t+JmdfFSk^RdupX~11; z&NQ!IG?fI(Z*SO-&kkIkaBH9?OlB+MAbu|@qJPw1j@=7cC~e;sUF5oNz&TRw03Vc` z)E63W{6*p)@KUW!_)YaU+8SwOY*ip4eTU7W#;JfpC8%sp(D^dpqiB+*|EPqq!V2Jgc z959Y}8&?fshVlPy|*P~5sW!m|sE$gZRj4|bML=;!*MM?S{( z&CNcBf=tf|(KTIeG-}|=VY=Y2*K|g;{=#)gN>eGBY82=aP80@-hXBTI)6aDW_OBSB zXnm=c@Eb1PhBM~^T)n_K{eyN768B;cS_3`-F(2r zjum-aA?lE~Hh@Moxh{N+FqnG#WbAN&HAU3Cycyk%$e}i1JwlCv?uAgC(fQb=pI^Uw zPWoP}3=rXH%RtcD3_xzOOQ1$TfdBtd4FXiDQ=%VCQu5alV@Eh=_grF^cb$GZ@*SeL~ku z!pgDu`tPb{5l$`D0ON{hQJK|%L5*q$*liq>LC7W_B4@_PQRk*B+p|EHRd|MMA6pC{ zV6yp8r~`GapRZm65({*WEaPrQxVAy2b&8*Y{J?RftJrK~hvoSRY$TY-YnvV1Lk zVp5_QkNt0;*k2`4ccWx2$ZUwv@x6bWC3K zOB|F{FLE8jVY5!8y&Cva&vn6BieOl2tFAYafT8dB-4xokV41(_A>DSu}V4uOVHj^rx{hwcH`_-7Dc9n5o{6bd)DriygC&> z3YYmHxV%7055PXH-2be`5L zvc$M|@w1YWTz*zjFlZcshC_6){+R6QMiqrc@yHUH-d_5d zlk+ijQ9zqywRb{%tS?HELv!>yU(MSiU=wEs6o8@U8|$7dXk5Pe5yaatIo3FvAEEQA>%^%APEcGr9~XHBE+p;cq&M6eg6W}LmJ;wy6foIi|^#U zLlQrP=JwbwCP#|#W;uFG*6&NnZx|0W;zJ=8f1s4=|r=x??~s0l?2l+^h1Ys8IP>D*n_K zj^SRk4>x#Y6ukg&Q7{wfKOVAk;`()5-hmKrOmYlJ0s<|4%)IcBP12s8dt*=(##+Wl zw}_ayp*Tx$AUc}v((M`s;}XDKsQ$ka?jF&k-Qe|+nX4*eNSX?MI<9+}b|dR#wUcob z_)(O)=@RkCKua=RxszhN-b5b8N?wD^^Hnp66c0*V`0in*a5e1e8Rh@fCp+Z-j*6?n z$#f}78W}gM@~YxeNdso{4F26DIb+*-k_P!yMukK0#wH;7_F0Eoan){G3#y7Z<_>a) zBES24M6?cKhKR2R&n{J?K@T;~fod#h#2Q?fw4;-9RG0in;2W`KemEnt^mtuH3yeGKQJ<*!Z|TU?T=^ z#N{Fg;7p`H09tlfXE2ye#O~9v!Tx+A;jjgQ24^H_clrorCterrtT%NMmQS%+y5pzd zDkayo{qo)e45!GQ1+4*(9I2gv8v-P;n6Kr>s34zBVINf<0WDh%1V6~qV`H>Y(Xt*7 zz1`nR*KGDJcD2hR#Q^1~jc|bKkj|{rpV*8+S@@_+1urglB+VsvL2 zU~x~g>&|@#y`N~pwjEhxzP2M>Yi}e#fuNkzbP|65mb%6wXYFzbjsJjz;I_;G2XXNv z@V%G|eM!?bP1kk@hvjkaP`M^xh&Pnp%%x2Ns^*HhaymPet`rKH!S2BftMRuO*l2ru z%r5R4irX-_h2Lz^g<=jqkZ{6^ZM(sYQLrD9qv24$mt{v|c5l!mPUT>^&lBTUPf0^O zdc{JuRDA{fxSK=V6$rrL-V-NIq!_(wapSDe7&=!lGbWPU%TM?K8zf?MhSkwRAHt{^ z%7S)E!am&wy7p)ZV10w09%g9}y!65+4j*_T?!ssT;N4TSHmfcYkF_+zaKMBR4(ue% zXTb8V+1yk<8y!hcE|p4|dcqtEGr{k1vbMCeR0B#$cw8%9Yt0j;Yx|xy8sBb2&14Rq zl}Q-S%eU%>I*eh_*?QinBT8P6QOVN>y+-GOeHz=bwSE75bnOri>k78kH7HPfUAz~A zm++DEYav+Tdi(7lA(75ci0h!HYg#gNckrC-YZwqxNhspaOk$4avvZjWrrk6JeRH+$ zd@hL*4mgblHcZ|bfsIK0Y&#`(*dq?JBjJmM;a9cYVfUCR^4Yy!W5_~yS0cd!7R+?* z_Nh~6#_zw!8bUumd3QWz{q5@YajaZyWo66VKfm(Jb=WNW;Qnv7$B`18%ywm}Y))>z z3z`g)wQ3ZEO>PZ!!(-*8QqjGpYl2eO;@i+QmXH%%j~!t0@)R{g<6GLHxy6Qe)r+yT zC)I)IIH0;K;q=PYaO>ZIrLf0Txwn25j9roHsJRbIa2nJzfZ3s4H zxm-L?h|OX#qYcp6pyNWCRkvv^UpOeR5F*4Gw~Yr$Sgm+28%@)c$%L{nyrceinTDAj zQ&F~HmQhYpZSvX%JZZYt-jQJOlCwtR{^o;rDck8!2H#%h{z&Ha$6)baRjh?XFhc9NRW&@SDxLfYZS9I*;APbS>eG zxq^v+BgC?#HhTng&F}F-#Tun1)SvKUvlQ&%j@~|bQk=Lp@rCv7HxpNnrcxBC0hbej z#iFoQbOI*iDxhN-meb0zach}LE2YUw7E)Z@q~KZo4On>ywTt_)A~qN*x(}YSt3etldjnz zLS{6^`}-rTBoT~E^s!J#+0YQQKwy=<0Frj4QYC03%szOl>)(9~!iM_x)E(;@7U0WK zEeh;gl56N1F2e0XHk!*UYeq|wXU`Ee7iLNV?WH;Rj8QsBo<(E z9nf@bFWA~1(Y3$XJGYlOt}uW<8%`SuNa&d}6v}jVXO>}iW_LldbJ=dP&|OK*lAV=! zVUcvfR6!+ZO(aI!rcyxgap1-5tnVHp@y+->G zQ}@?ockY?khyMDV@ACdBw&VK=nsfcx$jGhRHz&T~5!-#~o15^Tv5AS#I|e=*@A&K% zro$v7rs`Byrj2aYAXZ|0Bq}I!R97@njAkue%bFQc=8+`lGlJ@rhN5%i`Mecc>*PaM zEoc09VqU!zkDMjm_)AC{uA?D!2>5xqyBfp3pY&`3#lWnJ?@bNqb+ z`BP4Qel=3%yJA{ra3x*Sy?2%0sRfI=rnwu=qM*z`a+;7=tXhe>e~(n<#%rM3<>eKT zypZH%0}rq8jHR@ zd&yn{jX`j>7+t$LF*4pUGVve~^TmAkCZIiZV{B*@4wJ5(7fU%^Ti0Oa^n6n@#LnRN zuhmKoR?LR29az>V|GDql@!jDBOdEXZ45!+J8Aedm=4!eIU)0xCYYDZ5QOgn?qfDwX zGxSK<+7Z#UWA6uIUk`l!04Ani>4=eUZgzkGeeLTvon&F+ENy@6Oq_f0BAX-Gvg z#k?3%^?1-!C5#X@vZ5@QK|#qvG$xt{ha=I9Dr#w&Q^g2epSPk-EZ_Oa4y|Dp+Nu3P zeQfIY*^9`-%jIR5D>^kbzW|d(=bw9{Ymgp(seAmw?axN85Jw0?*KXZ{x20UU2W?2c zzh~>(?GJwO=o(U6_7CJw+1)Q{r*C-p0E#_h87eC~3gaJdU3|3f^~%pGU1GFuUBQ%U|N)dNmwllN_i1%AHgn^9PF^j%{h1j61oV?%*^z}kOvaGcZCqpHdi2o4|O1l^R6Lh zdwgKvn&-)?fB#jEsbl~FIN`4%SelYmbzN~E4wI@q&r(%Ytt}NX^QvAnrl`ME#MV)YwY+4Oe&-Q0}|uW=Vu4(Y7~5X z;?fmNZk+ALu+QH-d#eLCY7MGzm~^d3n_V4RFL&)^gvQ^%*|cVluEG5k(3%>&iQF~N zEWy#MxLw|LKb={Z@Of+cd+L5reBcp4y-k>5Z zVp(hr{B#naB03~cWiwe=?u;a{HP%Q=__A3xnpKpDE~QO_m+}geHN&zLB*{nu#j^>5 z5ZU?!{6*$Z(LRjmVrV2lhI$p*rlTh|yKA>aB}pMJ60j&W|daJk)wa~u7Wj|+oc zU8|dy`!@<*W1sdHUKA!beWm^9>f`(*u~aE{FtvxKMHCYPyH<`}BJVHLwOBXgrC~bh z{rj)4+}PE%0owNk$_;MBP%PE~Wd~ke3mj{(%VE?tO+4?3&!mcoVx+hU0hez@(G*Xo ztm=Z4sAv|)X_W3mhx?`|W>)O&<4q0r$A7O3bySM6?K?vC%0r|WTARzPlF+uAbp(^8vz4=v)Q59r6 z?JT8bl&s>O0~N&Blbnx}|81ZEK~>P(YG>;4mae4@g6Q8pF3`84<-H7v3WgBHIO<8N zgUg2}S2tE)K=5pRc(AZOh;xHumtW-C+4hai;oOV$_8jQi#`^l8E1ykP{Pld<7GI7y znyY9ux7;+dl)P1ong}QDDpXmf1rIjXinFIN3P!+#iHQfWK^|QC;4E~1?zVO9%E;M! zbX4xdXE#0{f$q>}Zy>MVA8WA7VbnDRRySRIB39rNn(FqBCZ1lg+%DxR40UK;(L_-> z-{`mYW}|B~!;Jf+8CtV2P!L*K*PsT0J5i!*b4ei!^0mS-YV+>0>YPhBI413WTtnCP z!Abosv$Z3nYp@=QypX$FPqrUD+J3V9d~5mcZebtjO47{A5;=7$z|-hQUXcw&1zm%$ zv>_-mFU6x0)ipv4J))TcWBb|cHbEYs^;##3s>1gE^xLb4zb*BKmi}6te)?x0zWCGP z)9LHIX#WHfehbj9dMI)LdtVe2UCE|ljWEg>D8PH&%G1gX^s%^BdK4u5MdNKJkTtH9}wtfdZyOA56W@f{IK0989 zNPxl<2V9mQ=r7SV7N%X?2+`|0u62({QHm+T=8hK1ij9l|R3pZ*F_Bcek zcE;}@idu1#hGT|K7cs>%#mylIx7=?6U29rtwsfs+#o|P94elMfRBE2NZ*jhOjJ!x`txkeC-qw@VMjJz`(du zm@;q=0kM1C1JFMA_IL-2Jm5yH!5)W5*CJv$k(!mEmabWND?^W;*GeDL;0;xV0z(2r z$%Cy`*0p8{;jRZ13!|PGkX%=o7k-rsY(olF?`tD5vF_XhtVYTFj~(lUEpG#oWvw5i~O? zL==H3ONc9n1yCuWzQwi0lri$6`dz2@lXIu!^;*72^x6+d(t9N?%E(4smxXXJs&Z;r z&8ty?VN`>VM2W7U+~Y4EPySp$*tglA!x)eCPeQnDa%`+Hc6oiUe+(5MrEPF^uodm0 z)-pyb_!yM16*=2KpljaRQh*Q^Iq-XrWr_1;!P^}G8?^?NIYhcPciM*5a;BW^xr6AM z?P}&+kuwcldsBVa9EQGasXej(WW`1vAI2H(zT3w*Mz@L;IEK@jJ%7OIxuH3gVH(|# z|EC-~T6{!G3<}YIoL>M|Q*_3V5;38py(;KQ2@?kP5=sKGk|9a)OhmQHKz(^7$VU@F zHWtlClsIueHa7a~>dU*mojVt4EdlO%845ky+1YvdychN`lo`ytym*eDLcP5|{na=USzN8|XKx524o*K3v~~{92qxbtw}sKr!(C?^4Qit#)JH zlslMa9iX}Pv=>LvkdRG{5%2!$BkiqX18jw|xHPBA0VbUkIL1JRDszJ5)jiSR5o#YE zyF8X_M;Jk~4orwImum-nT{-0ILb-OF%lROotsSF1bnn|cr0B1dRa)@+ouUnd5G*38tudQqMPg*ov{o7J=r$uGY0~@;bMsn8el*5?a5(8mMe@0ONc zJzbg}4J}UhT<=?qg{GITzq-D(6mlY7NMXSzBdBUVo;P?o z9Zu`8EGg&ZWP+C0x^AQEzL>POI>}_`nQ~q}B4%2=w5glb? zX=r5*pRRo(YR!;}*1S($a~Ptb8rmFJG=DAPZ|K^an;Cj=T?77^D>;!mX=Su&&1Jb* zfS|oy3w#Y4x>gk^5UmBx^yYbq3$iZv;NdVq7Cr+zTSm}VyoVS*gq$VJ;_QnwF=7SSK$(l4xEZdWjQGkBTlc@qcW_EM&WMN9f}K` zLXr`*av0-uiCk6F*{m9@`zlTdv>~iRI?K~X=`k^SEX+E&7QC1qcYj1IM?Y-lTg5Cy4TGyzr)u*~15SPTc4!Suv zJO9UzKTh4fbM?;J{LHzn`5zy>T$@^+T3Gv?WjmLjJXyPXcWdg=GlbX+p}tOTeYD56H5ASyg-lXOBiS@%9@z&IN|KhZ=0)0YL=#X6iI!?;DQ_AVE>F}i zS2#@E`q!qT*MxBHju;H~KGdkHYpF<9)x$Kq%SVWlfsghDCiEsG$y`#;XG(jUC_#dJ za1G#uMhU%oSG?2iYXw0~=S7juY6onSY|F@XUq~_#0r&u~*XtSQB?OhNk#sV6U|q{i zuC8uuvKYDW<;Hw8?l`!agR2{3s48;EbglVY5H%!lJpTYmMBsLzKJL zpg}{|_RGih4S=P;S!au-)V|oeA6ounZDDG5d-nOl)&&&0yEePMHg#wD_t6-OU)~Mv zEId0kJO6|&W-DR)8Q8iP^gjzuII$;yOq86}%nbv=_OC6*NN z)1I@HrhTUKo-mKXl=kwF^W`Bo;_gb}*En(zT}zefS};>;X|}v4 zMh5}gjou_f&bD~aowH7L1&!KC(!cDT=~EkJ7{EV^ug5q#j&I%_aVGBOAd`C<$!Ro> zi3bfPO-qAZihxiRffOO)(FD+$%H>qlatR_LA`IX#C{{eHbp(;A`oWL=JAB^Vgzo0R z;x(xIQ%H7`Y|^wJe)F7ex1RO^dwgD3FkNJ}iz=f8&7vT?e{Y!6O-zW2&Nv+>902sj zm_tiLd-&^7$j(HjeIe1RdmCrW;Nh-wYQ)D>iI98fBWrM${BR*r&oUZ;`B$ay?6SnmsrC` zul(@*dmp|1%zLM64yRl9cJr__n}v3P6;~mP$r<*9{LrN8^t%W#hQdnZ#>${tr_~l4 zgVItclChn@5)yfbI%AW2Ku07&Lu**&_Yfq7_{54=fynPlZdx_PIn+#DQ&>c%rU|Ga z?I~bVH8Q$LBa9Qt9+dr7S;wURk+ws|2ro zJ3T(o{1!&|tzXv|gviEBC&?Y^lnf1KQEo_jz^=-owz{uC*Fssk_Hf~$8$Z0PYqpYy z!QW0D!Jiiv9xD6{W4SdnHwQ@9ZoZbLG_OgU8#IUpACeR!-2l1H-_esb~-}>C~|hi>zYkYmO0q z`DT7yW0g+v#&~d4R#Kb>!9#xUlF*!+T`orqN-Gq#5fC~7g40!p8BfeupDtdYMXV-J zv=le(1HP-|_^&6X&rY8hpPxT5PB2>ivho~3FfbhuFh(AvnDGcXds! zUHcEzuF1&Ax(4L#5M`>iYe(nRR_u_15BgogGnnC&zj_I--*iWKSlG z8xu);Br({KNDLXnwdKUxLd%J>7^QHlEzY1NtkmlCNb9qx2_lM$ zAe5|G-QjQ`WU?xqW+Krbze-xxF4Z;Sl058GkX_G%ns`;NDY#b2PI4om)pcS((15mb zf=1R2b=xD@@KRe{Tc)llGjz==(zP7jjo_6kfFJ#@qRB@ouu?+p@HzB4M|!^j?GoS= zR_GZ}E0G9J+IIopRz}|V51`^BkPNqQ@vVUwj-9wT0EhVOLXQn}?aUf?R+s19rQc%? zh{TO=vf_Q~8p+Z%?$bhut36@k-Yh(HsPJ=nl1Cm6j;>wxe)#=cq$54<)2MbwZfOA1 zLs#u1y7qdSn`B-4Pk-}H z4YY*TFw76Hz4G%%r=NKbCV9Mbn1#&fJEwno@29t4!%RxoS~dv6SbMIirRQ8x(SjDI zV?$w0$m9q*V5BQT0gIBQ3I|~@2h!2Oa1N!_>BHiZu#ie(1$tJhYpgU^3Z{fpp5St( zA8-+g8A)CMk1>Y+S~1I2blPzBg*N;4@aAagP}^2@ZEf`kgY^1)9HUt*U*nN z3;Hx6Pt)5+N({2D<>UbA+VwYQ&tSV@_rdFc>$4{7K6JbIj%2aHU84KfTqPq%*JS>^ z6#RdYb{rVCMn{*c`@4p=>zJ3;`!~DW`Y$X-a8+CPrRu4z<#j%eM53*|@xi{a1VJ6V zqeXk|jgzs)rLjbubi@+z*5q6?a=7gDE6;!M%FjQXe*3-i1d;Dv`Q^3K&wONf`T4I7 zv*%AkI`rlDe){Se0#_uq;?N{^#&ni;ux!oR}0&<_iLU7DEEM|gqA&vW97P*`XEQv{pQKKwf!$_SyH5OTe;-#Pg zx5y3Dl9^?gri-_B>dMPsqLh`rJX+d8Kh#Uhwd-4;Yqi_m!<#Q{miEIZ42pFPOOtS3 zNv~!W*d@}naAvZU=p9hnW(j%JP}^py&=a3OV09^dCOzjyq05#-+!>X8K9aFq>yITv z)zmN77FH_PW(UUSzn)#wBCd0_^6QOr8w-_d#afb%m8FFBO5>}6eB z?%uBJhLBMm)L$)DFP3+AceNQ1MAxb>T&U|`M*xXTPL3s8LDwLZHW}~hODr90AB+tq zBC)7}jStTCHAEAQcEr5&+7|{x%`ZP3uKKBlsd?u+bp8w2CI8X+GF2fbFU=?EH;MI^ZESI(&tEuZ+T<;$_W*glpL%?Bs zdDW%S;o7aCq2Zx-yGz#z;>3|H50X%<76+>cLLA3WzaRoED}Fr0X^9B>&3M8l$a)gJ zkywKsf{d;}(4w>kLne(fWY*>kHUeIZq*Uxn*QD87tesiuT%DO7zgTo}0we9hnGNXF zU9DWZTzHrcSzdAdnprZ&7~wp+=Fg>Tm=GH(Ir8XHkg}tXJbdVd<0Xf93WeWP+EPa! z%X4zGk#$W*p1US<&?)$TbL(zK)Ua8-)iu>MvbD%CRmiU?9j)VQ z*X(_9bCz^_YmJ_eepE+};rKsghWo6}wm9to=Jcq_msK*K^iO%77r4pom zQ`oF?nJh3R*AWWu>Kf5W^?+8oW$T(Cb<&fx!d)72W5o;8rCCdcbl)>#7#bcfExoO_ zyr#N3f`BT+v9|T0;nD8R?%~m)snW&6(!~WnB!M_Ymo>B4XVQeyR8#~40h44{tpqE- z{>u?ihpjHP&Y=Ne!N_WHA!X3vQyN1a_VVPnthpsp99L4RCMs-`^hR(i1Ellojh>5@ zvj`Yi0pld+F6$ch`1iKHP-ghdt&ueKvgr49O|$EKCm;Xu(??D{d{l6=!W$nxQUbRW zdPZ{Rb9qi~HnOhC$hB)S2c3fdJ9nfqqPT9Tt!-+g?m``l>$bC2KmThQg`O@Y{ zRoCdcFvuekotq==u^5N!jeQ9_>21gH)@Wa2-&ms|KA3ErjK*TU7-hkv{+B`~W-5z- zSw6ZnvC_0MfiLf&)Ojsomn-D7_=vm08MG2U#RkJIJVsmIluE`v{ouM)^vaV%tryy+P7+ZE>dwa8tKrF1S zyKSniYu$j_YSyc_+KzQ?jW7r>^xBW1$lMs*ZEx@817{s^R@)K55fq8w_TI6vu?|Eb zjAZ&QAuOV>I6YvOM>kG`YdwTsni*(1!)YfvC(v&7Q^2SQSk!uYFIXXDzH~Z;g3+rj z%Hm>uIG{tj8xS&LN&MMtT|=B&T8ZV((Lu>zVcv#cQq#uk8tK1nF)~$M_Tr1nr6c9F z7pTQ{mDYCk4{t$BXzft#=psbd7=*;@1k4$&odL1R@w#@!c)^5x4wn*A#L$Ytmw*vp z(4~X0p-<^Chf`e*BtyphW`Z(t?P-Vt_o@7_sy%25Yv>d>wb}*SMyW}WjmmEkGXvq! za}zd%->Q5|izT|2wyGDp7NtY=Wi4tN7r&7>za%l zU6VQJ6v$9vLp+AIk(Ug@8Yx)e86mt^m3NgJ5GkudJS;;ueNy#G3m8M6g(C2fmSr)9 zA38GD&=C=Qjj$|Zk94&6_C^rU+d;Sv#B`*bt`k}dAi4%u!sOnWrpM;z@2~tC zf-rf_;o$-%quJ@uQ8zJqH6eGg$KugyjV3iBh)16lOUlx<5GS0|1uj3;Pi+n1%$`yY z<^{qb)+k@fgBEWas@ke9KSnN;&v0@9XHe~Sz?T(rXcVcB39+i*D+QBEsw9>MNoWn7 z(d+g4d>*TUU$KDszj7k1iY2QjD!={p#LQdMk6nBV;n|jfU(aGPo7Od=m)LXu`n5b$ zJi>YR$P-UaT{{UyYrC9!;nU|%9)Dbb?+E?u@#l7VLe{lxWL=YyYu98BIt4Pot@ozX z3qU*=5hUCv1j8X9oX!agEuoRd*x=w~oWPSh;)agaB>!a67o(?JTU#f48N{H;WbxSG z7#odZ1ZaC&iq1UNbf!l;(X%jqq6lbeYEHci=9CVnMH3Esp)L!eFOU=^IxkeMseO)+ zr9$m;SSnmfRvL4msGPpEv}EfVVwJnkHF;7BXVhfbo^+3t%A!wYNV`fmVVLmZNZnNF z$Vlm?fu1vL-?KGbT{}EnyIy+%Zwk7m%IN+iNTK!+;oT&aa{JUZ(8#dIqp?_7kHzAp z7gYLuR?cg3DD*xMm|Vd|4V=!x$EQ~T2%rHL6BrtV&wN(80t=Rxx^*1&GZ86|7AASD z%&sixY}~n(1%%Jee0gSrkl8b9Sh}C!%InwE8SNhX)3qa~E(h069Vt1^!83Vm&(U*_ zYT+(J0lSrTEgMn~mG)HVYj@}9l1YD<%on1v3Cs z2^htD1TwoHr6D&pMm&e>O1JHs_ml!VZFQwXLM(D>xPPY<+7B*t?^JhP;&m+`(KQU8 z-{lmRCJ>`Zq=8DRYySP{8VZ=y0cS{|b5yAL)>Z;@gmt=rOIz#{#(og4LX|nNBpanh z*mC9N18903$E8e$02uAf#6~CAiKv?kOWrvh++CaP#8Um0;-^3KcluVNVAIn{#0yE+d8IgpG;x~+7jyP8~b93$@)P)3^#Fq)5X~q2&oNhR6bVuWlPcY+Jx3N zu{()N?M0aOZYpVVOvr^A2|ZR?c|0CP%E5>-1Ok?kWFw;LGnEFV&+?g5mBpnamxUms z)XPVRF_^1e^l;no6dJj-4Xv~NHC?y$^WCrIwbgBlo7Fq(ZPmBkQ#!Rn+h`qPT_afG zGO1D}WUSI69wlPK`;4v;r33PwVXr6baR&l!!g&IwfXA$<@OWUpi9Sc=m@8*gRA+Q^ zh^3oG1wY##80R==OPzFGp?|9QuwT|EuFzf9GgeEGPOsZj*8rRL=|gE1lfI zO`<;dBUi!04*gxlEYxqn87I$_(; z%)t1}t_3W`>J!oW24D#iqxFeMZ#0=~txrY}?uaGrjY~KgvlE0Ou?M2Ixn!bYF5b=; zte+_Q7V@DhU#@a*t#NB`RIJ??Z|=mqkv$^xeeNb=2@&eySgim-DOjC3sFK8Hq|E~N zfv$;0w5ci-gg?&RNa?f|yTm5~D8;dtcd8LKeekdE=q9u3>bU zr;fs@4>72kmK=HN2$6Ly7qYI&$U8%24mt%gVj#pO(zVrr@$vcjnKj%q(>y!>b!X@F z*XPD(=6fc_Ph5QU-26F$QWW>LwkI3qvnAD50FeFZNP8byere;=Gge`tJqjHJT*11<79C?J-wZhEkS_z%S_DD&| z6CeNh;i-oo*UGw<3t87>RhWh&YNoY41V@OBCv-Pp~ zU_3U`mI~ zYJE=8m38bsbuAAh1;Uv#JiLF*)-WbHxRMu2gKHM2=)O^FcB&*zA!)%Ap~je=bNDYC zUm%aJu_y(8g62XWJ_@>a^l8DwF`<;4Iz$&8&=?!=8HZ(E%Ym$GGIH&j%t5C>CW~|x zn{D;}nfdu?7_hb4yfEIp07=ka7iNAP@9DgMd}eKCfWb(>o}7GkGS<43gr)Cxu(gYI+_NC>`P0K&d7a&@Fj(x zlsxtHcV^w5w~0hOuaUED=q%W7JpQ8c)_wwn8>E!Z6yohOuOQ>tJ-Q z1ChqY*2dz9J=qYSiwgzfi1a*0bI&T++PpDg!$?BrABW(z9NPOc74~ zph}AP`5BM67(`(R{b2}(8+u06I%&+#2in z2GqPL)gWZl$U-4#Qs8~e=?5T#n%aGph0~1o21`GHQ)zWdbqy1%MJ2@6QnrRAeI9-f zn`&6_=hz{N^XMAiQSiu9r-TBwqaPFU1XZfy`dq zs$~d4lnEME;U+kaqqiBQUrVuu-bCwCBaB!Z!}hUgW3+WC-rJr?BACHu*Tx13vbV?W zh(WE5hQ6glLwh8G1lWzoie4pnrl|;K(F2BSu#U(K+~+WR40`Il&6{3-RUCHIqUu83>CJCIC)Di1|KI zU@uqpkuhx6R&Q@sPgSoIyg1t5ws>K4q#Oa+3$^yDF@rGIeu3Tqg3(@hoRasK1j$0e zCNED=MQtq|sUx18b%J`6covB^{cl37Yf3E=AfNN|I!XjxqxEadNj@V9x#oQiO5px5R`)Ox<)p>oL|>~ixt zzJSXWu=*SxkI6@MEo5~Yy&+%Nr$ZE>;0i!mv9PErxIdi^g=>)g${MT7SGxxJOowC@ zJw};$MY>jz^YUevhPH>gxB4%QFvvdAHnLq^J=#xWeOhHuIwwO<^8aZernP@mCMCOP zaIHcjcM7dXbetY3Vx?cSnoFm(9V&4s6Qytm#5q-xL)U_!YbidZR`w|98dWrY$NTXQ zg^i&{X}9QSB{m!XZ`dX$LvtbPnv5J>lR4-V$Xo%C8NK6Pur@85$J^`%WU$)}2F%jc z1$Kh%kx2U(BtsEP5QYt*DZt+7_%%3ALwZ`87T{bbvQf=h`?d1wFL_Vq!ZNOQ4#y7(ibPq4j9v^2>=C?Ja zX8*P(T+~BQUJR0DrG7PH&8qCOG@=YcY%OhI3h_pYpb_WVK@V}cJ#@`>F zx69mn@11uRV}cPw2xbIZA^hSXmc^n)R^q!@TtIYod|(xhQw;_-ve7&%T*YPbd3+&< z)mowEh$7@rx&nc)$>9xoiB4@XnT-mo#-~u~`Rb>j(_{*VL!k;s$SK+WY0qA&l^-yK zY&1H8_5;@WLjF7|WbqocMBIWZRiEtYGd0QSgD~K&wt8y08`>KdM;CET_oc=DI-E7b z!<^sN^k8fLKjv#D1x9(mQeO-k2@&^PIMPoeR#5O-T-{SXo4z%a=2W_|Zp)q!MIupz5yGw^eiTc3(y$qm zuEq>`qp%#42H^mgI*e_=>sB-So`C5&^3S1*cEDZnp*WwdchUaRQE;-WT7T%P zFDzb~#q?hd#_%%tvU+WjfUGS*Dceh^kHB@U57#vgpS#96=$JVBfPnU&X~maPq_pC- z<-!CJcg`z?BM?3F#zVxe^4il#b*EJ5WUE>^dOq_jS3hfOn3~F3VMQwgr@=6{XK|(lZi~DWyoa9y{;+8|X z91OouLeo(j0?drA?MC0y(@2NDvyv%&C$O=;P%n4Ntx6yZYwBCwM!91bYOO{#+gL5O zHQ5`U1{ISbGZM52-lo!sLAQeqe5G}|79Cu>_VAm~8T!@Qo6jT5Lu+52y*}yqVeMfH zvBlV5)F4nz6=~EgZ9uEA z4#VOa?OL`Iz}-%_Q7XgWUo^koYS-(5mVqS&KUU2(R^jz1W7aK|nDDnPex;4KknM zCZHVy42%VeYI}e_y&Q`;c34@J)Xhx6_ME;;!AW|%T}38CN*3>cEaxRMIjbf<=P=TN z;U=AsdsJ&eIDK^v^_VhodT?Fi@aP)npkw0f19u8&0G2?vo#`KAd%&5=WU7^ncJ8cZ zGR}YkR=1>fK^F+sRfe^W9FXlr0yVgeqfh=!eMp?HdsvVor*i zGUyU|SJnG=iaDt7N_Dvbvsqg>5blSy9(wJ~haZ0a!r2UZ^uqfD#;#rX^6aA)ghRU3 z>IP?{@8yX{{H~9Bfh#e_`0EaAJ{8(-{gknd0#E03?+_Js=nL zO=PXhwRs{4^KjP3ZiZR^p|li|l(<=#PJ8`1Xa$uOv!WnO+)zfZq?J_2jc!)g0FRsX z2OKpHn$_HdH0s%QrB>)v2&%T=lh+INiiLDr*>bnDP92o40v&?SO$IM%5@~f8fRRnz z`~*l+T>m~vUyv%7*kf}laDaY`2vB$B14b1bHuNnS_c}4HkDJk7)-y9RBT_WMQV9b3 zvi~R=2!TM^*5Dd;rbmLUpyhEW%;spYfP5G;>K4tIHtLsERIrXljZaD z^j$eQsy=-}V+0=PlRU)XouQmt6%%JaxCae@tS1tyQ}a_6keO`4s_|_JVFc$^?LwjH za7;Dx)>ah)Z_PGHNDn+6$|*|9BZVT~u!}gQxD;|Bh_p$$uv*jZclzDPEXjWQaQNnQ zO)FqGLZaF|WBC})79gHR%B2hm6btK+04#d;xIY^!P1p}J-!gNM6`{VK3X za7F}8(%7~s6W(e#7{zxi+sjd1v*%_E?X#Y=oPrKo1(1MHC=&5{qv0^D$D$MM%~pPrX~i%L>oP<`-5!qnHXA0KcG2G5k3BjjC$|X^_de z#nTX2)7FJvdiEqdq~kslr^i9kHCfhl?U>xh_wJ}p*KU`4^fhiJEyrm5?OxT>#?ta_ z>g5qxV}@aS_ZjL$$0H@P7I7Nbh{BBI$DD1)lA%Z<@-h-}*IYb!gNQuU0 z)RA98u~g4ztF3ZTn5fok&~#ACw#fW?Ia66J)w&g|YjI=<+Vr{>j_K^nN$*T}!Ao|> zjDFobiz6D`$xtJR64!4|=*<|0A;WgNx)MwMLBC!V2N2Om{Af&)Wdb@mbtq1}HR6_J zJdYT^ZLiC%rG3LuFT@%Z{TCYQ>6(YtHI2TmZM1%pxofBUHEVZWdg|mPT<5wrkOQh~ zzS#YjPn@SJrqi{HN!gDYCV;2`x|SZNoZz~~Yu7lp zFec8v;6N;-Y)$0z%L!{@Jy5W=GB5;VV@z$!R>34jxx@H`l0%1N_Gf!cD1yMnGCtV}3cxqGE<`!So7E-Cg z_RE}wAOqwc6Q{?))U}}g`q=n5O?QrukFLmv)hjXiV(;E~(lY`t=VwL^9Z5ql)t~%DIIxarTA#5DUpt14}ID3+tJ@wN40`2xJ0S+cIj+SLUk)Yq?Ue zE+-QCLaEa!m!TXC0s0m4Sa;~4EWN%oIZ6G(kWy0{Aa4S8tAH}#A!;6tt_8I#s0wq} zYJv4yvDjz|%~ep)T4MsKV1JMmLsr+k`W;gU)9k2tLlMF4w$=;M%z!U~360^9?hTnn zPZoQe-TcYc{E3FVCT3T%v!7fNcRibT8t)uk`$^R``rz!fS5;3t3aGCOi*u8ce8c-- zZUJ4pU+ytBBBy%~ZZsZ@j~p7CQHjYi{5-;SjYrow|2s^aePD1l)KY~xWyRHQyOOEq z6QyFdUWfL|jC!kK%{Lu2sBO!18+nMaRiRNdFo88&!{2@QGe#KG!=+C@>vvUt^xk_{ zu3Y)_+=t)&_}SZEy#0}0fjnwW{tc%@XA~z}F25B~2F<_|7Pt$q>XbNvI2`i?S?C$W z3^lNBgqRqM4T-K{{RVf1X#37@1Tj91hJwwCoCJ5>X=a+&kdfV1*VqwggCCEk4~vH2 z8q)-l2IDfa`+*{&$GvM^BXIn}gT2We3x6&4`a(}XJ3EOHUurObgQaU1kNM=wV?%Xq zG_88td82%d%R0uk=vsP&@;%ozUc1J*g)wpV2M1!ogmklAGEZ@=N1pt`Y5(|RLL5{7KKag)eThmH`R?4A=bk&R@#K@ouV7sw z&TXcRq$%V6siZFk2C*Gt(2R|`CJipnN84c0xt`dQwVYSKn?TnQXGS8m2To93OJD3^&^6v_z&k@Z{}W7{{a{FMsDN75QU+Uadl_<~G~>B!ZB1Y>oYll~ zJ5ZuG11*rYOd;QR#e#d$wNH;9KljgXXWm)*;@5x99DnYSN4~y7m%x8_=FGWskDNJv z?yYA&{N(e0m(V7J;&7%#-F#b{iw-O^L*=?wxGpJi&sGnMg^VI5xCV!NLTEP-{2zPg z|I@@7$MK(K&n8<&$eup8EClY#wUuur>#QvdC0kW=WE6+P(FF`qpd!|YP#SPzR5CRs z4Mc2W3jvxAJCdbaEz6)2kQsj=OJFYHZ`tSRwQ$#K8QVw(+r2U=*Q-#NKfLn!JfHXH zxH|q-t(Ce8_%v)Ou=T?4wm zc>DdEZKoN6(dU=GPo831=vH(s4SP)2tN`fRCJ%*M(CBsD z7J?rnL!THEk%Ta)QlDx8W`w0*qEd2S9zn4^EEKKO7QU>45NM31&kK>>_@}ytnM~%0 zP*J)02ye1TTBCZQFUv@FIZ?ObqVvIdC&uF*4k3SVBjj_tqa+yOF#Wm2EzR0|Hgk|j zkvT4Gg(v|h{_&2>CnK8FJMD!EZ=95fb*)mSYwx|695vwjTb`Z9IC103&G!Uh`>g+S zC3a25-qJN8BDa9AJ;opF?Ci|pKix{^pr4M>#EyfB*Nq)Jrp}~m6y@xia&}GOKSGwm zE+OxbfqpgC)J)uJhjjoh*GxRNex!oLG_?8^*kjJT+?c%WHs2gD2b~F{M3iT(pMnH9D+0FvlWa!Qk z@(A96u02ZX8c;7jsYbf{KNCg{ZX}~}mBG+0_K>c<1+taUHB%?AhEHmFArAK#xK}Cv zI`~*AKL%Ghn_CSs=^7O26kStxhARA5$WquPK46d(<6w;|kd*0E#Pp3{X|x( zsZ(dJ0bx{?Vg_n`HBQZTpgqF0sCU>7&4)-|BI|ipvEozvl9ix4*ERX%0w$MRK5OHW zSEsLh4j+*Oq9I6EQeIYQ1!aq`-W04yvPT~Dk3?;esV=|a_ENl%$vwA4I71}jadS8& z09RdywuK;-xe{SXbZ+Ju1uTlm-99ajB-WBzbN)=%E{ii>k{FooHkdwuyEyS;Wzt}a zy`^gfkdgKl)wNvSnhhQXAAo~a@U<~3KSqzO!=F z!5OvjsSUrbt0NR^ZH*=EB;pB1PHNrb!0l)>b*Qsan$k+7wpK=)bSbg>1WDlv)xsGn z*``c&%6=pr!pO@Z5!k6i087#xQQOiAMqD1!=Yy`LKelC|n6^kWXo}H~H~ZUK7A_-9 zuSk8%dBf>$4oMLrZ@H5E$|I#Fi#a(Kz>9RPoa)-r^R;mU7nq`chMi0HwQwjD5_An$ z)QNwy7;THhfpy2XKLH5Sv^$B&E2New*R^Ukldj3Z26TDh{rB2X0yaxwlRczsi3!gW z2gcx!9-Qnbl-Pi5lNAIEqHYhyHy50MxlxI(Z9f_MCgqf(Ys%R*g?&tx!fx@QycyaE z?M|A|K~r)2uJ=7?yasy==$cT{>&m;OnSme=_VMuW;H`F7UOSr{vcv(qR=ebJXh)vg zIvjSWqy?M=p{Qr}IW$9UFos}*C$%;&k-C;R%GFYN7)xy}#fa2&t5GVF6c3YR|EAh1 zTKq|FcSYGq*r|zk=%QX{&`F}T3t*+^h(;ZOe_ztM*YFGi4+yPaR zZ*10^Y}*a){Ed2?NuoHNs#=w}l4ROeQ(YSgj6^lDk#Pe8 zLg8r4H!>9p#(T~L1~9~JNwjlxP2z?oMsiAc_2#I7_)!{Ng3(TNjl0s{)&^VLGl}Hq z=O5J*Wzs;-9@4dgNnJb2KZK!zQ`xo9{{)^wwg;UI9TSEPpwK4Owd{g|qr9o$b-uKq zpdeeKYo98Up~_^a!he7)glfX&e@d0>Q@D;#AXwj`y0+tbFzhAmaD$8@%_;f_Styw5vAA8Ry0t();i=UeTbh>ljYrd~XsT>@PTLnG7+B`q$+ zwIq!+YuyoZS!I4n1=g?{t}xZs`1~}sR#YlUH)9Lwqr5nTk*CWZ2({Wq)=o}w&iScU z-^nhYJsgm{p(^p3Csw3uYLQe{Ac?MJ46MaPbuwM+ZmYlY=+VzDH!pu)kI1DPm%i`5 zbcLL6sW)V{6;xi16C(iPR%6`IV)G-B5nD({5cbY)xHp!fvt5F&F_k8f=avwWYuz0x zJ~u?@XXl16%QXKsy|}otc$XOQm#d_q0auhto33&&GH)tcj>V*>+vb~Sl`&akEQeM8 zXnS4TIat{knvOlBYw;CRpMtKPqV=;JVHgy!JUOtXYfoY5;2nvsv zoL&20oL$Qu0vR2R5Q1AX(FfUT!|mU}dV^wuQ9{=mkp>1r z8wtm8EY-E7?O}fy`k;Yvc0(J|5KYu!b89T=FuiZ#6z4^RFb+uqCQ)cyB(SLIRZ>9Jko0Sb=m9zj~`{& zH64~<3g0AHrOssf6b*dC} zt(1R5(Y1ZQGc@~1bz!P>b(+S+Pd%+t{hoV3&etkc?g54UPnNnd;xY`u;=)^_@iDA-Z@hJFaIkTh27cUn@Lh7lxc%M?eG5 z8)9L2+8?xQy8^8pzLbDlSlF2X`En|&N<)ZT8|oyBLb0&$QnHYp2woSo+hfeUlR4=I zL-TLgBT;AcWS1B1MAs_C%hLazt|cr5U-{z3!i|=NFCHNReb7q_r|B>F^5ygqwy3DO z$pVU#&!)!LLPQ;g>e`E`@vw)D!Owvain;A>CuV|SKTcT)e_W(%%;M|?ygTZznr^EK3VTso?D)qoIG2iSBvVEWcv{X0Zc@`DgU38LD!7uhK$tN7#}nN_OF-=8K_>?pl@n62pAf0rzU-9uVl zV~U3%wF8qo*RJ+WxVo*2=e&h0!{fq-Ze)c6#FUc zm|uEL3plg^10p11@93~`1`=uQ&^mlxB-6E>Vky&6JAijXh$Q1y+$}ANmz7ffUP9Lb z;Z~3Tr2EBE3?n9J@0wk62VdCSUM$u%vEpzj35Mr4Y5IG*R+iMYmhMa6_j5n@6X=Y> zG5XI9#DLSe4q;JAS)EW~G|Sh~^E#?)G2$8V672Qe#>is}$2jDi4g2V1DAy!XPqTO- z{Lsqie|;< zsH{>?}@L12<#uoxbTd!d$g5o%}O zeK#}H*LNN6(bZGe?o7BEdyVZA6IZW7nay<(;@6-CN4ueRyI(`1t&Z`?Y;dE)7V|n0 ziUu57x7O}AU>2%utw9Y&QmS^YYqeJXc;aZ=rbuB7HKZ-7u{>rXk>)`d_f)Gr>I`dx z8f1vrJVBprq$?EjIC1)QnCd2xhMCpk+}IuK+VM2HcKX?~8^1m~f4Lq3;AS2Nd=xSqi(zVI)E`lUFmt z#3w}0T&)ps0fR;cF~&g{3cWL9WYL*3y}f57v-`4-@ zqlL@zuTW7|XA&)1;7>(#Jqbo1uEjj6R?fy5bU-leI@a;DPs|2A} z_wL>Q=9gc-J+#Rv5p)fIkfrbkd*}Pp#2E+h*N`WZkPyRj&t+k$ZO{IorETJDIl8*K zwYmie4Y4aJjzl(t#2AoKAg)>H1R^jQ5yuo%)|H8h3nO7P3n8l&wgbwQ&+NiFf6vwEpr9yK;ufeH~r`k)9{yYU}JMPgmqXGV+9S&P> z9za<26uJ%$K`*vZ@_$(Y;64m#?(1j5n`pZZ_Y*`1*~NrN!p^ zPiJpRmOn{!O%zuWcbl4as%r>tBX=F@N6CGm7=2W5%o`bcfK4!w6>nF2g+8dUq$QZAsqPUp!MeO3!?k#W145$_DNGGb_R?mZ}vGiWB zM)S_n_`!o3aoa+r!&8<&4d@YfpT2;uiI*g#ECpk<4Mb^l_|sWXN#qc|3aQyIdJziF zFUuVvmwk(@fdwzGWm`an*xHsB16%vW7fMu%S`33N2=n4O!#b2l*P5mde|h}tibv-P z>6%hgW9J&`B;SZM%m^Iw4$nu1f_kW!8`jSSp@408h@fLbf%%c3{;`tQwn2(C7*EKh zYx#K9bWP?}VYi}dPtwBW0!tGFj$tIRu)?}l;$|3g<~m$ydTs~knce?QdC`TccasA6 z4G(8-XMW7gDIghIXHFppSTh_ly=J~vEVHW|M9+gwsfIF{ZZsIuSvw+$O~K*y>-Yd6 zn8m8z-mN{PtGz_%F~CHHa|DGidqKdy(uUZe7W<1vl+~=xk{w~n7bXb74dx8}0x+`g zcd7F)uu_SY(n5Bc4ApT`U3)GVF+5%Cp4#i=67AtMTS(R#P=^L>gN_q7xgs$*2?AJ5 zVd)ETMTY?DaEOTiDW^hd*jlP6^_gY=JfNCW5QM6DV7l->zd3O+n0@5h++WK0t z%&r3AwH$EcEi381MR0P|ZBM9?z^8`MexR$XzZ<#@tjg|DE9@4{QUQq&>>!{-D*e<; z)WA-4&0Ujk4v0s$P0OiC$UsWLV!=?@TIcrV2WDFcuxyyEVL9FvOjdM&DLnwyV!;}b(fE?vumtZOnawKMb^@T81yO$wcx zilQCqnv+qy`|~$x4&7ETmeQFfcH7a`aYcfOOCJpqg#;R$n9O>AyAF^=ZGa%V$M90ORBbI`E!83V-M!hIFXi z#M%5FbF~mqDnxFA4%@_M9a-aZCGurvl-s8u`OK^_X`d;8C7Vr|e9<*sWu=i(C@gln z)8ybeo7>&ssWQ97H@$tSnUd)2AdCgOVqM81GMm_YG+T&Qm8OJQyx_f>%BpHsJN}M_ z5Y^p#&8;1$PTis1y!W&n?U$aa4r*4kiyx76xX~@rH3v%Z%hZX>_4W0KE57{d@ZrN1 z_4O5pDJQ%{Qm=-LPMf))c#A6n*}-V=!F+rps2`q~2zd3XCaf(AlP9_asG--cQ1XMjqV~1I} z5=!LSwg0ED70c`{Z)U3m+uc7lV>S2|+D6HMZ|r1OXr{Am02I#pLt}sA564*K>spuz zjkdLo%^1-0P_bB714^UQF$`lwSO>b5JOPGNqcall4Wz26G%D=wvK?@QPeof4W@(00 zj8Y-3iKCiO2yEm9TB{ypubYZn(6S2aRlE_Y%Z`*lSH*xKc(KY#h;;j^EF4Lq8AGJM;kq&AGDHjTm^FH=rMhHD%JR z@)!>(vaZRz)Y>%%qX36W*R1)4C>vK)UhU@mM@qNXwLO!dd$u%naD}}>V`)KTUHhN< zTCvP7^G>#|_1yB!^o2To{XT=LZ>E2tXL_uUkm<2TYhUMdPY*`EP8gxvHPht_VfuUk zQQ%Qh?8YW-he1w8i5Z8JcR2VOhUbmg4mM=Bai&V66CokcrqM8-f^ivflF&qifD|V# zHRF*Kl0D4>;X<}%_mt(<_WM;h@A3ucvZT5us>)J>o=F7F1*e4%fM{cUAuxiyp!618 z1!Rq9R7yf`gcqN$PGPRAqO-*JgEad6Znw>5<2cUkl8(B?SMF(Bwc1nHR$Gtus#v8G zBScoTus*f*-mI2F+j(zjvfFL9r1g_$AA_!)ICtD&IB?*=x%&Da4^Tw1ZZx^gF17UA zDD1!h+cZ4CF&NYf%#DDq)e7_20^va=i(`Sr<6z9dvhu>ve8{>c^HO()+8LAZi4ZTN zj~>Pkc}a+IwteU>Ag|W_0XU0N=?V0KC>>nNT4K&gTA47v1Lk48^4kk8-tW61T zV$*BILy1HzlE6qo?SV5QqlGtdplVKzudLx1B{Fg*BV%`FW=~X=NpUsouc9Fu3bIGf|Dyhxm^DhvkSWiG9+gdz6#LBtQTx4C7d8yGg1;dHd%^?iFbt)9L zD!(0kZE~l&mJ2AKi>{+Ov^Tq2t{|t2WL{5SE0)=9-e!>m(%9K)ZR;OxBnSACh&>*U1i~@HP&@`>@tYFycp$LmZHcc%!Xr_l z<9L(bWKtk-HO_AXU9&lr76(B@!SOZ|?^LC#w=8wp!^U_WtAiA&gL6Y^Te=~EnwfN_ zt+4T&ASsxUOfUP;rb7i#f!JknghLsWPSICt5OnQDQM(K18fNxyv&g~KV5&qovm^_= z@x`$vdskJ<lTl)gQlp_6b2LF!!9D6p%G`7%|GywN1l%BuQ*oKM_f=$gsW^otS?R4ASJN z!2Dwxbd&o+vygR7=4IBdfpqyriBTtg;26fXCnZ*veg9O~z}9FbTWQWzkbOteI2m3I z3rDw(A^9pJ=I7VO*NSC!o%genpMg_ORN zqoJ;oU2QW1plgx9<7hOjT#v>B!9XGrUW*2y=qMhIhbJOf#oHWio-=BUoWpM8O^n^) zG}3|YgeKG8WSX``dq!r^3eO(W+* zvygR7X7@Wow~wxw7+XnEdiJen`!TtP#FUCn11?-5*0o%!7-u_3QM8#9 zBZ1?;S4=&-Twn2fQ`2|wP+t#!PE7rhxj$V)Ss~1vy%H(2WlhjE>)Oa%0GI$Xn}FH4 zXfr&be-M7Wxt9Ix(bmlSl0kUWV$6FGdN9nxxd5b^wQExTec-u zMeip-@4ao{QkLbD=Q-#3S{Mync~l}vUN1Q;ru>V|P?1c83-Ivdu zgAJhXeDuysAH57GuY7#&)isG(Z8T9q)eCz4+&mJN9(>==ttKU-P zD6@iOy#qA2{k}OS0bS!p%KFM^6LhODQmQQ-f(-|RjdyMhjdsQ%m%o!f+1DPW>8cEf zvmg(G!n$B6uAh$b*cf*_ck0)%Q*Az{YgoB=)LkY06tr_s>Wr!iI$t>(*!%hWiJKpM z^L>4@&GpICKPoHWqVm#DPk*ljH)q)s%1@sDp^jz6jRv_8bxq{&+8O#JZHx+O1Sh+T zuE|nJc6IGh9g~C0MHzgiX3R-Xt4)^oXg-4YPw&9mny709VDB&w{Q8@3zDeMKed(pw z-+A@Tmr%v)5F+~St90zz=dYue-a}u1`}sTPXqYH#`{KvnF8$bi^Aku6zdro?8`rP@ z@cnPfOJHwrT~~52hb*aUM!ivPkmwZ>#$c2ag$ij*2COh?sCyYfS%kJ`MgsQlA(r!2 zk)s`&{9ZCSM*D%&gZx45YBk*6pe$Xc7$U%+yU&Gd29n|Nou&=IV=$t04Yu{-Y z$uVfD3aV?GOkI1lRzf?Wlwt|Y={*b9c)3XApxT0jJnszK5i*h5Q6(Tc7(Edo7@>JIps(v_YD?;WpUXq-` zdmqX4e4bT)O4XG@$tl+v^R;db_w8%&)03{q!Nd-C==jmevRJhp#^jEK2y%CJx);i3 zK;MExeOp{9=Bs^~4cWA3&O-o|?^K)DH_XCb1LB8W2V~sa=5U=rJ17K`iDCR&xy8gF zDMoo|`r@nGEIa(hTfe|K4+xu*Cc_TidJER7rFHERX2o7;PDEW3DQI==@^01Z7{4{M z`0!zP;E_SV!TsvmgHVz)e+Dbyo-N8;yQbdNwMWb8oDf|)Ou-D!sQ#=-+?} zx*`FNCS~a#9?zW`yR-T06HkmK($TA|UWf-Fhl#R>QQ~?FHl(bdU(<)mN z0x&n_b`J&J?hwLcd6|&KDNMf+B)y}lp&>qxipYoLyKA$E$|8vC)Z9xRIw1xL9WTo- z|IZC!jEJCnfDRiwrjziuB!nmqW!#%t%3nn4JsG2El7n*T_*&p_t))?xWo!8+`ob+( zj0SoSdBMnB{#5RHZ~Pa*GjLX=;00Me(-&E5FN@jBB0+bE4+9IW_QjX&WwU`mWUX&> zVR<>u(Ji{=0Nj6NCFmMT>DrB7z1Vl^R}ZgL#7XxWJn`#>r#_?gT)y*LRMyHg3f|K9 z2OOV%W$6(iYYMsk4{sVe@`gOx8lBGffX z-e%}`5JH+?*B&%7OygN7<>}JJHY0Ozyd*FGYg-d_tsrDay;~VSV@d~fAjy6V{e75&DT<4qa_^8WhLt8_U(N6nlPl#~QXh<3kP&Zg!-Igz} zPF6>j5jzx!Y}?lsBST!ew`tie>D1;cmSLQk&5r3gqpz(@4+qP5Hh;c6COLh`SZUF4 zINwGD%EL($GfGoGMSTn|P$~hMEdap+G*v*RH>u4=jf7DtXeLwzx-0yoGnh=KlWmwGRVs)- zg}Es*b^6_`u-Q%|#;C5bgw)SX(1?S1XL?L-YQ8RYHJ#Bw-}b+f;}3}JMbtHsLe5T-en$P?8H! z#1jJz4zjI@x>hKJ?NB^E;jgnzw>hRK94J)L3u=q%x4qp_{(SamEKO4rvQ zfGTZkLi^G}h&iE}rDYNA*J(=;*$t{BDw9ls)2HxCqSYdJA;wfS=vS?lKS0SxmSs5( zWnnNIq$npuA+tbW`$?J!Do{hCrIE^+-egYN8Pzibq7z2|Lcus?hB(6&5!ty!m5G1e zM8)f{Oaf2A?bX$#i%#^t#w>qEj}b*vRn=%YbO<6^PM)N91yllji7%O0N)ITNvQ%vm zFP8PN2y?;FvYEB*StzK*LDxq5A~QYi_+(E{tgL-2wiONSyqo}1DV=zi25yY%8bQk8 z#PlheaFCGJ2{l>vLgiuD2a2TVuR{!=%7>_HB86PL27D%A7>OFb7>iR^j0~K?6{fL- z-#yCcve&NNr>+@cM?s3Tt`$FQq7Tn&7_*pYu*)O*17>TYt`!JjJCt=fHeBQ54v$vr zoUpNo4Er6M6VrYdCalu$Xlwg*edCnF(Uv&x+;li5+S(jrV~#sbEOKw#!=c$QIerv} z7A8l6(r9cEVH6sPmIk+GM&fdN0N04Pp-i+87mV}j@3l6pbaZo}-kOHqt_BWuclEDywANr^?Ui%=4Vbld z3=DK!t--s6H$v@>q}Ge&s=RS>zyN{t8jaDAp(h-djyt7}CM?^@5yo+9!yeyYbV7e>f7=l8fggdq4+xSBi_2q1K` z2E|~2V0?yQBoYnWnbB;9St-e(b~2fcDqUknCwL*YNS&7pm%WyxEI=?f*|&%|xXiI} z*ec3}IJ6&B*XA(xIG_#ca6sI3)#AM>{wFQbSWhHb?wQ^&p`36c#p0<_^ga-Ve%HtjO35vB9R@= znhut&iMm!W9wP!>b4*N+Pp_{hoD*PSwhhOe(&cwJHl0X0*9LAjK0fE%aM;fK+dwep zJRYZWV`3PLBNXdd-1<4t6As~{i`4=4=he|k(5%Ukg>C!KtFcI_do>=Pjl?<^cs&%< z*DQ>bKX)%gqi&24WGAh~ekOQ!a%5y{GD3pkYWqm_A{we*Tbv4vu5p>&&+d+Ez1^)B zt=!e#m6oLeE9t&!?YK5*)mjI7G27ZvgIZgzT)EX@rFFLMZjRQ!dIz|MfnKT`0JqXg zFy7;AB!j)zG0Kh6OjICE7B!)^rZ*+U$*ixEX&9LS>`iWxm}PQ_j;{=wHS*+WGIo64 z@H`ZMhtZUP8!@KF7QzpEA@A?f-sz#TM6yP5TLcGcuFxgd3w;WMILsJWj zk;rTy4%fn+izHcj)IzF3NK5cN=o*2%P>0{;oPY}3G?Y^_$@6~TeVfxDpB&~vxxr#_ zEeE2mi4?fH2Auu$;qQdm10|om@ZxURXGw`LM(WAbxnN9geqFo304BlrmoXYz)vNmS zLH--*;iOjVh^9FE$APjnQP&EEupJ6budzh^4aY`eZbB)wO;3AV&N;6)vEftVgkxf2 zA~Ba}p74_so_VFm;h3KGHTnEX76&KWd%}IA)m!!;4o2H2L($0cYg`~4iF3(=*+5T_xMQ&q`{>95`gv=$CmfAJWO*P^y*Lv< znOM7S^|tn|aMp`m10B8n9F*EtmRbgT5ty2_zrUlG>$);Hc;!|%{du5qHC|vG_FSo*>|7*5*T53kGhnV_R3^O?6P3Gc*_qlRc?fXQOf8*rw@I5*~f^B%ubnV5I_HvP8x&9)nf#HPmum%ToCf6={y zfn3f+fYdXgbUlru+YIgkJ2y6#!0hn4-=@U4-Var_u?-uG_6OH=)$IO)4RDeMQ}5I^ z3@o*>H8nL>tCbUrYxj<*Ya)Na+O9-qhOb$IEjwx%Yf z&ExTo-KZzcEW+{a*w3-PMKZMI=4R}xZfQ7Dia9*n89pxEnyp@zmd3YcW>)(;tL+gY zobP|AQGrnk&><~Bp$Ifoh(MfXxi&B|c6 zmb<#LGBDUtgZpn?SsJ`}mDIFeyf|>J8*!~IZ@+!!TK|r&b(}d3oH=vmD$;h}y12A- z<;)Q{JALGIH_p9J7IAI_aD;OQgYmc=4ncG{Dn6MQEmeABm0DslOOZxrRvD`rO$uT@ zTwZI|m`xTHvgl+wy~$`g#9)*G@h6<~PVabqV$SdPIBhQP9XRsVH@j@Ujdhz%i3$Y9 z=x(ryCr%~cWzGCzIy}BP_T0qXb*xYSirC%T+In?m;PjD} zTky^gwp_91e$&M%9=Q;8P2?}w8CoFnuU+G#tnz1umZ&Yyl&CooIH?n)baEuR zHTBp+j6?3BSX>%TS{b)J8IRf{)%NJo<<+&oR5-Rg0#9Uu6^8T$SPzEW%Rz*eC+)LZ zjO3HmQ?pwmK@ys2w}&T((3(9k5(|$AbPaPCJ4(CGShb|9W98!DQkS--W3Z*=Vk;)r zrQU|CU4+zJ11;#N!%1DM>1t^ieEam$wQIdd+jRwG?d^`%mA6}Zt=0yVjdUT(l4zh5 zWBGO<9P62!+zOOxgFWu!Q!`QM>}DddXqZE4MrJH!Ak)Dl(;3YQqLx|oX0yhmCrG1E znM^v9K_k#SV%zl0ZTjxmNV9iy-PcqHJ8*sD>wctca(QlS`aMeY4>G>)b!OO^ROwvz z5VSwI`^=HSE^GflD{koT@4oVQOE0V^M3jbWM~)nM{PBm5oPPYFBxiE#TImBKIS_SC zB)6^oE2?WH#l^eoR$P+n6&EguBh~)_C_jAV?xndO=B8kYP4=+bZa#yCpm1QQFHEk z*}r3-cLo&HJ=?RJ?YhbQ_M9>^%s}^W^UL%3-=eB~EqB%(O+gF6Nil;FYKcOJD6|%A zFo^N4%)?Pe6Kxf;bG)~ZI-XxSDK4Bm#TdPK_=#Kn@%4|-5mCK=`3iK+NC$a*Sbgyv zbnWdE<&zJiXlMNc_wf}*Ra}&Ysa~wVee~$jCx-02ezCs3gSnsAKR^2MJ;I}3-aUt^ zHuUb%r`7e(s~@X$&6&>+#qtq^cGHR7{oNrF&+o_fPifuSF5`&w6HImOAm*TbqWQ2h z;)YNf{Wt6Yn>fvf_c^6w+dV;h5iWzdH?JT5wEpMkFH{(PeDUG^yVvkHxwiwI6<wna+m`tbT(LYcdh6WU8!v9D0<>$yeH9U zCg4dP7mLxOlcX0a*G~3QN%UJ_81V&t1K)C|Mx()1x3d}^{W_RBnY-gOUo$z>KRG!` zPdeOrhEQG0cT9#S_V+ss+lRZ6NTNUPlcsolJCd$R{L9)k35nl|q-+02{DB}5CYX#S zgI|xkf?HV@bS)Ly2y_KPDG#EZq0!8I7Dji3qENdANz#>t?v<^~UQ`2C^Wq&xc79&} z@)?m&A3kyT#T$YUe)7{2xAgYS`WqwOd7&Czefb*w3f#w!pJCFj3aQ}fB^b0j3iBt{ ze}26~cGf?>{kZ;-EUmwPv-I)#n<{}wMEWC#j)-F@pN}1;Pb0p_{(d^0kNKRZ4o7~w z-w3JFiOGqH2!|bs33oaT|AgJ!`yCySH{I^o@7P}=zJrc^_x4p^Gk$(~|MmTckDmYd zioARM@x$vM|9t<^>b>`W`P0wuRv)f^c~TW8G&RZW?M>z;Ff(L@=BOq+#+;%Za-!JW zrY1-Q-qvQ)nax^U6p2tkZ315}i zWcXSCCLVE7nI3WBD+PEAaK+IW2E%0y&%pENzV{!(L<|PVEuSVjYVx}ViW@j+Aqem} zd>n_JVZ$Nu`Ia14cZEsoLVpEG*ChT$I#kj%iT^pbB>sC;v>OEWRx-(>g+Q{Hj5iO)bg~w$Fz~{qgmzD@(RNQ&wj8iSa3C4(9 zdbNapjq~ozC4}Jwsdl(g2+{43(O09NF&uNBM~&$7r_m}GaXO4XDq23D56sQ!10(29 z3^_RDa3buBJBTB)3xS+SKW9w14TgiX5M7%LcZ7Y$-O0m4LyRMiiAi4~!J*3-KR*2O z;_b_yKiwZCpFcdh|Nj2Vw{PFFJAeN34tewN=TFs7Xl+n0D^r`OnJLV2$b4dq&7HP( zo66J)$2L=w33Se8wV+Bsy8_8%A%IXYnWUS}1Kt)sNO*)ag=iPLKr`!~!7LKNYlHsb z3$=1>y7=YV!LGsOS&aCpxi$VmpFEFID#{RyF+F2jT3QMP4?qwi-l&(5Xzr<|3nNNP zS1O1qAQu&GgnAUJ__Z(YsbVRAdq0s##C?Z`jz|Q`)ba^>im({3?1!Ht4cXFk{$PJ1 zfu%-+-+-iR5>j+c;-+&;;=js0B*0~hS+KQ*;z}sAM}uvdg_V_1(Tm|&^R;^~1yxpE z-lGBm1t8ESxZ(LHGaPXBgYpM=F% zOz0sztyCH*AaBlt@K6lu*23e)*B`#DK3_6& z>ri^P`eAkb^}Y8${`lzqqla%_jG_uGHih1H*Jis*_si={I(rix{wp&69>;KiQW9{)`Fuhv&PK7&z-;kjnNYp!;1tf$sb zn9cFpLBy0F^QJa3-7A@+t*x)LNraXoE`+jsdmBmCn+X;7GFzefm6e5*AalvBP{DIy zfhskp0`_8X9NP2vXEu1QEpy7nC?w}*PYYzs_hEkp~^q((@N7NXH4MwDn2 zM8g})P17eXY--r@yXT^{9Y}8?*;>hkt`t)ayFRhh6#HM zu*PCxD@ng7x^MCt~qo}+)j}5!nRm=`(WQ~*p40U?(Pnu>yX+){|S<=N!;MhPzec1 z*S-h8Q(lCs08-k%Ega%=wPGscX1MGTT=|+xi^@kTxXf`>VpO$bvqH<^m_oHuy4{8W5honx!&Uh?76v-dP67WS!4(G(S zb0{8(Y`gRMLsWuzSB|=bN7&Cl|McPQlbu&8^6~k*=O2H0e*fKl?(>@uJKV>Yf2Pqj zoJ@M*8xVzM=mPWdzAF`1dcpMjv3O!pp)#~=Ow3OPU^cM^qid-gCd;qQH8+omC&b^} zLzAJ5aLUZ|4y+B<4lLL9E}}6At}V{2^-V4JX#}rc*m~N<2ff}d4Rnu$lF3YNFBOHq zHvQ&k63h*BEvJDyH$o@L!q!4ey#-qwZL|ak!QCB#27>G05*&gA_rZP8;O>K4aCetr zgS!TI2A2TA-64?WyZ1i3`xCm}eyi)$>2vC{`Zi8jlE>KMJ#P*WD`T?*74V)mT~|^u zu=lu(d%jbEX85&v)+Cs3#dVOd|sUKp&%lowC?#Gy6!&|k08m4Pi z&m(?{5M3ogoo4yI4?xiQbqBMI*3L-?4*=!}k3o@CdQ>|^N1dYC{_>QW=|}k?=9L1R z=@&ZNB3?L>5o;YN289g1^}W6MFH^)(nb8T)?v&C(1LH<{aBZ$W@@&N{5^2T&?WRp}zRcx=D3YH39)QphX$XoE4^)dx9G4bL^A!F%16hIC{99N+7N3xF zWPKzlY4)ndiu)(HIX}OCN)*H1(xNh9{(Xf&hXu?RW$0+hj%30^V@JU({DOL|_4lhA zYu2g`N)5RqL3{3%+?O?*q^#TT9ptLq>f?e+mLxg`Nrsqk0ZLkN+$XG-`sy9sws$P@ ztwP|4p8;FgaU=IF1KR^&bwpaTbtf_on3)sUD*Ah@YiwYW<^P_Nfg?!Gs(f&ACv`9& zXA932^P~RYp>QF$#QwXfNM~;!8idx!?PPDhI)sd(l2N!xS54;Vc({$;Joxj7^g|1qOq?lYo}9disec>GL=81`n(B`L{Cs2|`8--Dlx2-)bFz1mzmavj9Ee1(ii;+JJ%_EX7 z?wFqQ*sD;Dy`pS&sl{-R*cQk0oa1l?z1Ygzz^i_srgIuYd6|_Jkf>7~qUK#uaujvI z>Hf;WHv<5d3UKBrTC_wJcs-j~Y5Ptl*}&_e*+Ef#Dc4=fh!_86);c$;tA~t-(1ud# zuAkzW*=S5#>I}C2@!p1iJGydgmq9Fhwj5bPwDke%5a(zi=a_TJuArwETV6ccTz*~v zhT4^b-&<W!paXC7_f1Kw~i9%25o z%*>qJ?_5P)%?|J0XF$G}7BwN$a`kbN-M~aByFY|7PPb8}-of28t&F#pA#w6)F`dNw= zd}j9ZKnezs8Z}yT`l>mxzX^qcM#7~-rK6*5LsIlAq=4gZX8j;;8n0alI&(PvhNM*W z;ch~rP_aS}`Z=-L9xjrkPNl(%I~_17!4^vAAlO3J4HxhQU-NHZ z>`&?|x4Ea2vAa{Phq3W2V38Xl0O04~lkt;KAVVtf9W9+-sd4YnjMnkbrWkE zUo530buAI}HMO1BTPS^2{`F(7qCQ#5p9YKeoLU$0lpdXcE_q?ec#yR^IkR{&8_d)% z*;)(=;;zg2N*d2L@e5C+C{3A|v+BetI7PrjLZ5{ueK`RxO{PPJpJi1~^|7haiFg1z zHB8)M0??+V+J0YNo5=cn=*#BO0F&!pmN|S*SG)8hR?AytoMW`;X>NnW73Bxh2`LBv z=9a5UavcW|Q3s;!h)hZejU zz=t#o4xqA0BcHB73X1RKlDYOWa_zeKKJU7_klzbfy3S z-etRG=b1e1@K3L-kpbZUDvfvU`|l<_e2MvaHJ}dXrw#`q9<=wecW}sW@gR(Ue9dy< zcHw>l2n&gdaPdMq|486>jY_#GO*cH8A7wSc%GuS4)RVMqy#Z2uu@)UXz!4HG+@0ziZ-_jss0=nTX=-%4rQ_V1pxY8Jh1F3q zPV{>5A_zrr1Zid3>1_e2Z*BlMJLtGodlW9j@imk>EvGe{!bUCx+Ir(`BXREdWe$L1 zbN;{7_VDEvpjc|j_p06qpEy*J7z8^5=mF;;hLP#tPqQ}oiNKlp!FBnu$wc)0z0Ci3 zJh!^V`b4`V@B_iOp{{GR?Q74^p#qc@Ti1}i(dJcH2m`~I`?$XePy+U?8SJVi^Lb8>j zU6$#;^A4zb4u1q%AlBM2^iw5NkMK7Z@zKm^P3%-<6><#@5dMit z#3nbZm7CEXtxM+wXMomX?HskdTEviOg5~J)HEv~+h^czm}^FbGJDd%AQH%`Lt2}CzzHJ? zy7#qav=mB{A#unwNZ7Wdr_CUnT`?uWa?rj+Ihy9i+83BB{`7>acD_VR?<>K9NGfxq zY-}y}S@FP^96^%1qGKxpUhhXfC{`1>9rixV^Q|I%Ei_I^Pj<;$gP^CdrB_5e4Jt&Q zztf0O2Y}VF`bL@I$Qsaq4H(aN5w2)_YIHC*Y<*>p;X-TPJJ+BRMtEQ$x0pISibB*B z&$o;0;IUJ$Jt^IN%TuVwcVS#(9?!I=q)P^M(FAvZ&2FP z+?pcK{LoA#1Or226lQKuOY45{Q-P1{w@6END1qXBCvjf~$JH)~K2Q~fKm>PuiiMD0 zlNL3cGYI8->W_Jw#d6eLm2k2T)^t1W7yan~*}@`PrjrICC*!(D)XR?eB-w!%gJ7Y6$x+c4Ehogn1f7R zm#}R?#sa`1{Z^!Du8Ge~$ay)-BHVs==ZWwUj{8NM$HAGXy?NIAXmTl#L0_!1d zcd`Ukd@%4^{}3KVWhp4k&~RIU30$~uXTt$=vy4i*b39BT4z2T?=Gfp23mk6;1EO8v zvXJ569rR1>kuGmiW|1kG{Y^Co;J4gtl0RA=Zlo1ldu|M!Yys}cr~+kDdm#+FU$sa) zz6oBazQlbaZ4S>)$_FVkNEnzll+p&*@eJ-}CAum}M7`JNt`73P>~Hx7w~}{yl)B`5 zz_&?~L&o&uoKLkj36Pbx$vzXTt(N8^%Iqu(Nf=(frWUBUNoLnZaf8T=DX9~v^`$q; z{J9h{OL|Gyk->?~8VL0B3mIK7EC4OHU|ps9rI+)fnD9&yp_Gxt;Hk9z`GRk8dVdB7 zPLOLe#Q?8>cV#;DU4-JY)z|9Z z35muMc^XVR{u4BIbTNoPv{%@HBhTzO{j7;HtoifN(0S@k92a77sIplS9wz!TVr{Ow zamDnu{(q=e0+U*g)_*)Y{GB?KXl!Jgn7*_Qr2qqELdK)bm&Hzw$;ipyV~)4@z_Fl4 zmgvF3vduy@##J{Cm@NaOc9|x73@k-1G&@GyMy81~*94^gd+($+L#t*@XzdU>c7#A! z8>kBn(fK|Aa64pDJ?`RN4*D)x@67Tp$ zYkew)SR^cVf~VOHeZBdfy$*J*9BxOmh`uEY<;i-?9Db`Z5-kD+U4FJFmxqR$IaDq? zRIY6A6p{)K7&`-+l8Siy`p7#Ro(ann$UFrH~ck$t9hMN8H=Rx;zvFc91(4ac_hMIb_&X76v7*Za*nqt|GTLQ)ip&e<5eajmb2iolKGW zDFyxBKSCtzB=jdF$eOKprfl#$OeLkZKH@j2^~VK+MS!sjj4%d_MODsldS20}3XKC} zn31FY|kW{F=FKD66{=&%GW_L#Ch-@3>q0{r%Z%%g@a&Bft8l z8;95ZwAqI|S)8{tu-(siz~WjeZdx9}-kiLfJom5|B;w>MobHXkXW@Sj$NpsGD(wOMNPvtrLOo zMngWa+l}dSbva0$5SC{|AbM642)C4(RR*MuR%u!i8Zd6f!2}^u z&#Kq!PTB)``^T8Xco#Y_$8YQrf$XcdL2M@OWKmaR12tWvA+QdOTi6@g|G)NO=;`oC zG?VHCnZuhzG_-jV!7p1H{F2^}EOWe!IP|a6TR1Lt*CDdygj8{AhL%1*(^pj#h*LX; zC${PZ^H)*SFCjAb+jeNO&sToULHufEPP1`wNgX4Aet?t7&pi_hr_Cuy&1RNPOmmop zJkb*DHHikWg2ljZMS#y(<>D%bA8pQ^1tJ%uBo(Dxx5irczBE-S3<&#oLiJW1w%Z&i z7>)%+OPcOo(NWa}%%)wLz6KOHADfoQJv z_bQ8$Rzz=#t9`S(FStt?O6*_h?rZB}SJ~!eJRIWb>FCtym2jTlFpl!b8${V_Zu4lWZy&&f;x^bh+H)qxwKkbr@w#5Bve)PQ`@LZ-zeaAZxJ*DSj@_E-;DkK z-rT%~FESeNoQ?jn-Kw~V(yyj{*h2d*&YHM2{-;&aaor(CgX2$l3@zjHY7*cTg75;k z=a7nSU%)_X7thk4(>)QoFIdk$byfM35(`n!ye8KnZGFWphor`9;#OUTRv*HOv?K43 zgvd=KzEEN#2;sdRkscDd_9kN%xJC<=?AxqGrkVfT_QxaLmP*2Ez=ln532j~Z_`H|fZ zGkEKLrqn|v+mtc8-w6n`u+@-p6@p=)2_#tvT~YBA3kSOurL_(urOolZ4rQ}zoLFG$ zz={8b_9{BdlZqI<-N4YR{)TaX#Xat)?oS*m#Kk|u*DL_&e^9cYx>I5|mD*_{ z7g4EV;x-WWQ;lSRn#Dv;=Hh$Cl2r6XB3W=y%g|C2GgDC1J>}=I1#V%^V-(ta`VdSe zklucO*D7aKJ2_yWA0#xSrf*)W`Wed%XPdya#(J=vloXlyf{O~72$eKgD!Al)4*PHp z!hv8?tf$3@Dyvr4UC58DWG6HU*)Goq$r7+)wpB@Pk_IiQh|fThTfxaV4mAGpkkIx}>Egz0~Zu8jf&JM&UUm-cC~Sl}B(^j~#=xg{#Nc2WsXY3npSz}Xut z{ttHe7d-F+)3vp4wO=%*jc0@CSoi@j@#s54lo>&u+ipS*uPLN@>2Q(Om}tSYZzY|r zH%zIXC5Tt`x9hi#9)`?f6CDw$g6=e7J8z@U&#GcAejWTRT`%vhpC+@_yzq^8p1F}e zs2mVRN4e7%b8A`Hgc}3l6#Gt7+nWMY%b&f`?}?yj6195J&!8@m-8$o_9vLVx)R@)$ zi%3(mlXItg>J0o*FX_)Emk85DT{o^S%`o%t%w-5l^TESMXSQ@{*Rnqi$ zna(MD&q1wD3?3ERiZwEePKO^vQTnC~s3TOq-ng=-EOtOnhK@`upJsY$8@XH{*QykCUx^c~ zgLNm^r{=a0&gs!r)A9lsG=KXf0$Odsj%9vZNXp;WKJU6;ATHV-#W())LPKF6WD$(guWYWphjFm$xhq z+D@@o?iyjuSjfAp0z3`=c05T6>RBlHhRwL@<+ z#(xv|H`Hh}R#g5RzG$^iHm#mVU}LLmzp8T>IHmy{6H8Z+sE2$KaEzrpq{wiM5ZNSB zp>ag2Q;CPE`$&=UU7)Q8zxMRyrpYW5h3$t(CLpcB}b+W%qXBp9^@OXnGP#RWCnjwl=^Oac}$S!JnU$+c;irOEimq--aXeYrkz%Qo-8? zkwQ5#BfDjKw{j7%ac8LQhW_?ZYPOrXOlinh-~=lfqux~@gN43kcFw;k{abiKRM6UL zUeF0?_%!-Hj}U8iK)BDAKZ4yE$@dHHZ{7E>==?O4o%grQKZReL&O#W(0>@^s$~jrs zXrl1>XsC$NpueRI6Px*dMza*sD9VWbIFS zU&Xz7ql(w@QC;gRwFVMrn5nLo3hLmThO=OObb76G9gFNKENF<5(Bn59fT`Vm&WM>_uCC z&kJOE&jDV?6&_YQH4!D#vz&(*W2%7i^Sk#nI={NPr8t(2&2ijK=QH*` zx7dLqP_|`R*bTe05Do{Sb-4`dvAP&X7Yx1@g4fMNrv7F#jh#+jvYf+r!%Z9g6KE zgiW_*Y0Bkc;}NEMX;%nFcdU00mau~9>{B1|*#028((1RRbIHsfT}{upMNDujb*7*d zSW+xOn6)Cbl!bDY1DB)cA2Y5tM49asb^0HWs{3m4m#Fq6iPfD?fT)W)g^W2YGOuvc zvWpXZQS8G^DhOhWfYrqTtwjj4_+_n&`9vD$g4e{at_F1m@HkFvgPq5XvkH+t#u zIkHYyP7@H3&S05zp8i+$~_N2hH;9fvZVh+v~ zN1FI)T@F$~{IRMOQ99@#sH$k;_vT8I!B&Pbd#g%PdNRWC&EQ4hztos@fO6w}|5FS9 zeB|r}Z4GN@XKO~%656g1?$|~*HyeqT%o4p(YPEj2M?8ySt(Y*MQR|n`{$FE2=3N(% z&^Yb3Te584>lJKfB4WVDQ?Zx+*asz@nt3epvY)yb#B13U#S(KaujFfKthoChk#Ie|c+fXo11NtdSMvWbv53Pzpl)y5;+6g%Eu!=8 zI$;x5&H7IP2dr!NaycE()3lI#>=1Itl*6PU5}RqQTjjboKSYZ z{5kRHA@#eMckC_zG^WGw5=l*VS_Ur%<7LNuOv)7vm&EL8i%o6DEUQ;&1{8N=v3Q+M zv9Z#%SF{uIXw~p!$|Xw%g|cRjrK*p94>ZS{wdM&lJCeeG{u%1|d(|l9opB$4yZ^(u ziQG9oRUnXhS~DM%2s6Be=#Ogc`?L=6R<^!Qn@WU!3%in1?DUBC?-Q&ZyXDSS4mW3u zo!`I0a-yAMK3}KLkQt>@U0aXt?6l}i1BCw$p{da8h1{`5^oZB@r4`qw!t21Zgxac< zp_4~c)>fdF(1iY|rf<>;uVcgkQ_SMm*5Y$3)IU?wtHA4Ju^_2$dng={5TcD^BEvfI zq%v3;`w6Q_&}Nv*+iLNXD_I?Kt_LZ~vdHnlv^Q%PfryRGsNo?`B$qFYc0~mVle~f_ z;cWel1uDIWyWgzx%PuDrdwJoad8MeY=e-4~JZ0!sIwMw2E;-z2&nj!>fgE}hC|)4( z*p=$0Zs%83)ib?tv7`$H)IkJun4$P;vnpe%%T4&F5(y|qsoxfFe zBuKH;Wa>mN%w!%v9UR!IbrKxCwuz2E)oB~NXW`)%YB!;WQ3yJ%@k z&CqkvZm-`#WR%81JTbE?)0>5BIZH=LN#Z@mtim5{|9+%#E8HxuFocd(&watz`*av* z5xjsrZymXs=_K)X559K$qYdv?2^aq-9*vv}$>xxe5cgMLkkU&GW&+J(t4LCyFXL(j z->e)oxv5!|E>4ZrtfctY;K!tr_9gvAKx4GADSXa%2u*JU3S!q>x~hoI`-x~^Av~Ai zz?1E;6|K#deyVkMBpNQ?*g5Pwwb3h^-z8pf^C+mr47YQj2(dTpDpTmv<^uV&FFJf= zq_%sp`|1#*i$=l%E;rXC_&1gkOL%Q)L7k6iYNmIurW zH~M`cQc4h^=?8J|3*W2};^=_S?I+V%*U6@FTTQ?EjV$7h@0JwujU9fM-X&(h0ZZ$j zu!~vG`LaK`O*v?N;>WG++=Qy^?T@m9667)0hbr-Y$|xOr*tmJK!0QX{Nqn%^&oh+F zFW+tz3#Xz1=0RDknjj}#*p@{GTSd3JEC}47AlI6Ag`0P3Pn4CF{N0s!mx`6LGJgAz%#dl$0kpA}D>xF_) zPQ6^cO)$H%#N%Y3#xITvA3d{bEgH;+f5R3NG9KsC$Zl2inKN2fRR^=wPn|4Fkvipv zL?@KP;K;%)S>!BuLnDH+Eo zag|dCBe)9!aq+#}BYz#b^1I@i*Scv_kS?wA(D< z*7s{546?7FuVn`NRXhx`IH};FAoc8ieEECfm!+?{?`)K+$&S-*|G;k27MlSf==E?q z=*rPwy=I^q3Q=u_dj9mTMSsNqCfXvJ$C5$tZ+#89`+Yp9DCk*arQrI-&e0u87wELV zDEhICx_VYl&4!+<>43<#KTuj18dqNXgn~;IW7&)Z0E)*BZAcrfS-abui92S=Zqagu ztpmq?+tHC@;L|GTmTY`&Qk$ZG_=@yY5`suAxlVb=0#od|mmli|AFbYeIyPdw@sF6lrS6*MDWwKei5W%32^mKfc>+#%w)@P(|sQ1@Z6&N4jHcD3!8WL)}_H z+ob-tef1`x&thU?K~Db~v2yW-H*u%@mmGgLyNCTJ$GZPV?#|<9x4kx5nKW?X8nF@^ z2lkb?F^|c+R57O+(*Ir>Qabs)x4^oariBUR9btbD5Po>PUh3Z&3rmDZ-x5(F2KysX zr>e?^ECm0>4O(2DG9_+_g# zA8RC>Sdp4$8KqPH_5dTFL=}qZAh-nh?RqF8?lE&#Vp8|M7H0??scJ=Zfs6AgK~6?# zC`65sT=_yaiU##lyj|p1S6ANchj6CYucdC&h0N1qLFb>ZX6u3m(<0)X-qRF_X z^Z@RDd>T~5oavhyj)uwnND52>`eA=3;|Gce~Zt{5G`n8>w^+;vTc z=`5Nqv(+JgDD0KFZ7vRHPO_)Y&+i?&DnaRATqjo+cMG%fXp%{nal~U}drsd+#rPj) zB+u(E8e8;}@V;lO$7Gkqy5*P|;@Y@l^Q@w>a7R<|t70dBp%yy` zDe<~@^hL&lU?sRWos=+S+rW`)$oo50Aij;CWZ}*WUORAHuV--z|8D+Yeuy`4K<0&N za4Gm>jx56*)E&}%BJ#}3&Y!K`e?3j)K|AY8hg)GzlNeJCLfTOgyxzFE9^{yT6b6z? z8e98h=}lD3NRzxUz^HbfxAdLH<5yowl zx<;a@ya1CJW8eGTc*?Lu(|F}?Vy>xcs|4@CV*gh<&MU6_n|k2pRU`D?r8!M%lZ;p$ zLxv-ceG5Bg91Er}bbeU*qW*@_;_m(1(PY3AiVv^l?bJ)C;Y6j$Cet{vBNrUj0gi%r zTSTXFb(N{FBIARZqzVgh3CTXFem!rvI&TpDohq!CueVYGTJQkl(4}lnZ{g4)nGqyy##_15rNN(w#qdC*;NxQ>MraOPi#C6)w=UFS z)5QH?i|%j{cnmXm2;SvoRdrK>9$23Q-ty4(TYFel>8>r>bNY}A(vo@2$od>&>Rr~q z+v>0nVz;MoX0NYij_-T+S8g1YI`4+`9bftT?9aabr*hiH=?ivMtB z&$z_k#J0P+n=;vI(aHaM6bgc@RbgCUM9j8!a z5{e9GD$uz}0K`lB^2VXIMc?zC7!8VaC`vj zqo(u^l}xB0M*K~!#Yr21jgrZe(7S60Yy%$C0{R@H$${K@r`W+E5+U89If$;YZ%TT5 zVd6eM+RTONB8pIAt)u7`aLwU3JA5!z=l#kunvuW2{dW4G{Tb?ic%&5k=PS(HWw+I+ zOT~^BoK2=Esnt;A#P@V|2mSi9bWbSmd2`(oZ4F9dAxzb7`F`WPfPGcV?ItFxVm3%( ztDZqjZuKxg!oiaW8ECB#1u1gW=aRA{Xl}(|WI9kqRb&?&Bz~@C-8MgS3VWuETf#>@ z;Wz6~A{aisoFr}gHB0!@3c7w2{ znW3Cuhdk@fp=h}36P3O=k*XU8P0)@LeM3`I))$_3#7U94qwk!FO7ke!vAx@79NRe} zB@|=Grw~7=UOh>_?T^`chLPDlUXVj<_jIJW0cq^U&LVbyZp?`*Mv>KY-lq>wr!F&q z>y;2Iu@}!}j?1Mq-|Cl?|L)IAt#f7$p)%fwB1{fJj5l{b2P=o~cva23Esbr$M!!(P z+C~Q;t*za@t*xzu40C^nY9`MXrPs>|Z=1PU?_3Lq(N%ViHz0k^O=%7udKJQTN8dEh zaFNMqRLG8SbF~B)EDH;NyE1+eKPmoX+v+QH|TJ9s&mIegb|3pBZYIo`1~;S}xh^I~-v)OSgH zZ`=*fh3)sR?(YxH*CGZ%@cz1c#;UNMu+mato9IXP*8?mn=S2~i$vCj9W&!GInx(k< znj_e^o5{7_xz~8Im+MR)l+|Xx?yb(kAY?$j#-rPEgfik%@rP8SXk7@nr-QbCk! z=kznm!!6?c==>UuhlnNI#6ZId&P~LFYw(760?GV zLTGQ+u0?81jvK={3YW)Ru~xBd?p8-STUooK#c+sEUn5e}FlLiuEKf+mBQ)RCzL2x= zRW$iCLgCKfONH-JXo6f+2Hfu?9JNFpv)zIuBXJa~*-PYCE&Kl(sR+EE9lqL?vU*bJzL3O67F-Yr2yo^_XGXQ5`OHM{>j8{+ zD;k6yz|)mSU){KNZe8;=7OcA;%&uC&`mJ}Or%+e#XQo{_h#yBQ#FqP-_`|(xk7v6q z$~*-7>CCe0T85#6#XJqnRB~v2fW8oP&U$8v(ojP4R4w*ZAZn1b1usY^V#+TlCkXlbf`PWyw$8|JVebfe3MI!9etw1zlpgn< zPuC<}AOfSNpZQuk+qYs6kJbHF);x7`7h@8eB8)1rK9fj?@1KA>(yj!0WH9_*z($)v zKr~*VEFIyl#-xz<^th2F23M_}Y5JU++LJMp*rT(fyk@;uOgwH|fSh43 zZya5gi`?sPR$+XxZefjC71-vFcsu%+AUMMdL#DK<>`Jucx+%w z=Lh^yma5REBrOdNRI`wqT#JXtzCN3y z{IiQ`#7Akm*}t{*8F@Dl(o!*3y&lO5Xt~ z%egK?*$l1g^A!4Emk7>R1&J-BN>Fm*1&Q}vmOhrh_ok5RzoifgodDj1tck32QSP1l zWz6}VZts63=lI}Rh%Q-?fz~i%8Xh(mHXlhun_tQ0iWQa3zaMX|pK*HQrs@)cq{?tH zL1P~i9lac^8>wJ3#8^FJ9I9M&O~-6$h{ggdHx4xc%h&k{ICTwbH9mZd1@-ynCXwyB zLhFXsE887o`tgexrGmwB|IXF-t)hW4$sV@d^wb!#x;{`;X@;6-qd!?Lww9w1aQ)5H6#PR3W|mk=KC3Mn-_8YaLN%7l{~ zUz?tgkXHP)9=}EoUVzEVob{kc_1?GH5??nXV@kPBL7|nxW`G=gJQcXCn^0EV7B1nl z+b#C~$h3wX_ZXqAf6kRc#37BD0ppdHfzE&W7W>+p-7R2*GHW+XU8nbj57@7V++>i3 z^29h@a-=>VuKEUW-M*)g1FK0&yL&Xcd6f%b;N}V#>u3quhVeqtoUWrQ+!e6My&?Il zPMppZ=i3auMX&&pBd&d)x)Csi_7cB6?hDJnG? zygeTifQJ$9pmAC#icQYx=nOiA{%i`bODH;?Q=~GF_$19xB=J7+M1(u zq3a+Ms`UGvCN)}A&SoSH=+rpULun~n+Rs?^&!|RsPo$o6lJSkpw#8f}<@gQF$p~)& z6{}75Nmj-dBe!H>b`gATA~gpk{Sv9NFl5)aqnQW%1Q;T_9ZLr{83^CL>e&SFxk{ew z765OErxc?|*?1<2W#B84M@z>>qz|j86AO5Y-j1+)U992iG&{@svF`GH8?$Tnyu7R) zug41guU+)p>KlHrY83B&t;&}Dys9W4`=RyVvig|P;pfA4ZI@o`2oQx2Jz~?~oX)B~ zZ_t$UXChFrUcb_<)vA8^%-yZgy-uKGLu_C!Y9>+AEtYGw8-y({q@mnxmaacG8s0vy zvJ4RzcDkc*!Ui>r0D$nLsB3BwbvU^)%|@er26oRf ziL?1wm^K!7tDn(RqG83!PBI!{`X0rSirn}7g2P3>iYTo)Hp@#X-59XRl)jfp>bJsA zmjg1)W@uMWrc9ZPvdr)ME_S#-RcSEEQ2fmwgO}K&tl`e#bZGN|62wz3eCKq8p+0SH z#m7aNY2+BE7&?3VB5W9|Z-69#1FKUV+}_qn6V8cI6HE9X-PHo$H>xfYR!?%fL|JZF zrc<1q$Mx0SBLaQi^5a2evyhxNz|7B;0p{?_cIHMs-}4hJpF)tf<`?J!UL`1P6*|m_ zkMX+FFB5~JraM6t-}pmwTe3uBJ_EO@brB>_Oo!JxPXetVOzZy6%S??ljk!?V%?T?t zvBWnV&ZIQWEWh=NKg@Et;G`q#Wm14mlY`rL8l@Ped9R{re?fUlegGV2kNekR9~cZIcX+@N=lG4V1oNzf^(;NRF|C(X z<1ABILwa>Gsx-=pdM;s13pLrx%jjf;qnAL&+iQiRSXYW7{UkrR2f|?Bmfzmpvjy;m z{zEC;FW+_pfnD?urfjM)9aLnbKZj$8S=-KPd(op~H{m);rmlFJc)ym{s>+Z8LkteX z&kX2YC@{762Ap!Yj{0FN@BJ%;3Z|C1z+SKz+oBaG;V!rG8*=I`#?60*5 zeQQz9G4i=A)YPxK-%NkIQ-~NCEA)^=mZpZ&^WR`v)4^p*M)r5l<_oGNh$D-YX{52T z*C)BxE!{@H8~p3;H{LyY+koYIX2aD6*->yf%W6v>r)XKmL(yJ8$K~wj)K0(afa@FF zs8nSHln=$08VKjsNe=T&{Qg2i=;Y(#1SARx>T8hEt^wlzN9w>1OJmos_=MzPLTo&x_aS|}_F1Mkz>>DBr{8~bpnB)$cs6`RX$E^C`yxs?l#e1T zpA<8e@6v|(#YdIa?z28d?g>P4cD_PHD4GTGz&n^zD0)kmq8O8x$c^f%gVPy770~BF zQ0bmdrepf`ya(obf$10*inYA3dXr;cv$MX%<8BzLo>U@{%*@BaPYJ04!Pk4!=J)ro z&!rPB(E6jLwIw9rl7P)<8;^#a{5Xz>a3ly^$G_he)Uqp68HZ_g@{L;W;5m_;+=74t z?%l&<;nD=&s`p0(*U$gr`U;3TcVHlj`bQ=V?5Ib5H0 zjHu+|z^OT47X$K;5$uO)IC>37=Z--I!o=s$y!|594$UlEdfI79e!KfS1|w|r=O&jo z*{DEc)R20Ig%O86)v~r|l1zwql46*})A{eO1r%&-_HVli6a@fh>1sQt2)OexS{ws3{i&Z!T%#bPiO#47LxSWa;_?t1Cx8G+Emk`wgzE zhqcixFns&-`~2V_sp|0XFsPMT%`tz)d_}42<>7*0bNah;B|ceoHe%08G3a4`|9ztW2_Tg9TZtNdP`sID=g*vy zG-g_%iXRhS1QgY{nhMpY>O(}jgo4-+ILHRtiY6rTS?`awH`LmvrAtH(j(E)PD}dz{ z{L$+4$c(z87b&=grj9$te>V~>mUxjsLY+E3FSFl4j|;@jLJ6{O*>|k~=gsI$afg z-A6o^+ivUkNw|ot6Jl*j z=V(v194wpBk0(g1uAU%H1tt`0$unRohgYP1pH<*4&|<^k8hK0yR9PH{V521_ytXUx z(^G{GN34LBY5-sWxXElzrJ@a1-*H|j5fD)m&b6Qs`ondRrSQkG{n804c5ld{ZRH+c zO@*U`O2Z1RukZlfkKtHnekWguukn{zek_TxPl04VCp)ci`LRu^9b2iqI%MQ2lqSEh zr5nNhlon_VfEo;%Q+Ot_$*ecbKmgPJ6d;WtJy95+xd1TX7KXFn@coW-60+QX0$UIM zl7I>btyR&p#@KW)E<9Z9SylP+nkK}??;glcxDVv=FqL#e1d@zH1cbP3b(I#AOE{6` zGifwCc`@CzIj}>HpP3f9TVHOLGlM_r(jF{!{A^3lO@^iKwDsdFitA#&jf#$nv~_m< z=0s$p)KFg?qhuva8(X$#MGH*oXdoEs-(-&z;2If(Ln1oJa_=CX@ACpX=BlFAeEfn+ z;GD_UZY^zwFT^nJn(K4=h%Ip#RS(TQO}>!5*VK?s;#a{_rYWa2)Q5?DxXD40RK^I7 z3)HeyBz9LloGzQW6iQh5Dvgc5&pOv+q&=5_$ekFqG2IN#L0ovQ?emTw>yxAP$Uf+9 zYA?DF15%4hpjrjZrr(>(uC#@EX)+;G+RHO|h8#}9MVdkH`YlR+S){EmLo6uBL68KD zFV@o0guKnGOXZAu;+RtDniR-2*PN0&dAfeOUFzEnR}+XmVZoL8$J=4O{dcf;6x5Qg zF_JZff*exGMs=O7bpl@Hpf2oMci=t!4=T9uILCNtEuj_oQ{q600$<()vx36VcmHSK z4GFZ(3r2_{Gq!%t-59v@!)Wpf(0~^lS7tTG#~S6Y78b<)>oRas>7{-gLp);*s#KgV zk-o)?fRE`?&q}Yq>j~g~sWE@`0`t9!&)p}rdE+dO;kL@>(XTUnRljCsde1f6m%FS; zd8}68Ma_ODwP(kcQ0_i5nER5w+tvvl8kYkIn(n1Qgu_u1zY1_M{9GLzms^th@w4t^ z%R7N)C%%J<%>nz@Zj$B6le^#3e9d)Hl(%8q?T%Y=OxW~QgaJy*@|7n1VZYl|z-W2vzK}eY5h;kS`*gKF8S3tqsIt9H8Lr`+#nr1TSz}QP*+DP`~xF3H7QBgMgtTpJ`$C zybb6-Ousbtw!?QR*P3Mdp z^B*Q$6u(OGTy|{@d#~?I-?lUyP@Z=UbK#DofkC-m$FQqokEkcEtsWG_qlYa6^*ua~ zJIj!zLW-2W$(9f6E(l4r|1GJFIm3qV?>pX)X(rsVIobmu)aE+UIi`uvaBzOkYJ6IM z!v<*;$kBNlTug!d#R-CGdbtBAdA+h!VcdoC@_lF})IeC3Y6qRSr~Bgd7X$nv#aT_4 zEVX{tXa*&k`L8O*Un9U(pFSzxYa#+mJ%lox7a*qG13P>?l`%Rg@3j8Ga zW(sZ&m+fi{AayxjyFEFX8_C)F3{2THP0p-#N5NoolW1pp-1&w=%*-Y^I6VTGAIJJj zHe*1T`zsJ%N)%KdA8py1ulS($fXclZbXNEKLt|U|?bRnVMscW?7w~>!@h?L(P1m7~ zV%x*^;;IlDTv)zq4`uF>q1Tw;RSnM8bwAnkN|8%!rpksWs=?W zt5eRRBAm%VAsWxNY?w^Y_BX)~+rGMC5@1>gP>?nW&$)JmpGWp%#-!ug%yQz>>nh1J zZ(Sn*EjM9FMXq#g`;F7hZ;RU#-5hh-@(VlgGFPXiJ~g)+7OOppLU z&+S6Qf>Xgf($Wbt>dx3&WoNqy|8a+xd&MM@}SUkH9- zrFmjTD#0m zhX;u2`iz`csubk*El~|8YYVO5{LvC3jLPPqxRT3`%=#L%sLBb3?}Qv@Ytt+X5UV^?G5y1q(==;5yvQ7ng9L1 z5_+eH%}`vfIG=vh?9zs=qVZMR$NW-A(S})nx?=7+Y7`6KLG_!+F@ZW!TC>PEiXN{v z-29oc#Mm^jaB0-qS_CDTO1BAm4yWJ|uU+NiC&yS3L5x|mL&GEqmcqJb`iqDUj5c{3 z4Ntt>hc2vPlIVwK*amIRffe#M{L|j&n>kie9KttuC1Z!OZmt#&Z$d%GkI}LrbYxSR zfST8bE=``0dDq$&ATOyoEJ!a-zaO%aXV%e%*k@$`_uCyWBZ3RW;lq0C{nhJ@kE5~s zI%a1>@vJWPSNwf=4M}ha)*%4?h$1TR#ACkI)}J-(5#Yc=i>ExFa-qO^_1f24^cfx; zbC|pTk9$rgP-}u`w9jfEAd@3Qqxpd}0wsI*DU;~{Uz>n+0A!E`^&fi=8?|au&njb< zGx8WbC@1?YiH+^O{QNzZUYS)=^2Bdnb9xH8k|r)Dro~hV0k)7n7Gj`RLXln5!&OU^ zmkJy(qi%*#hfi`cMV_Zfn~pWsV4pg}npt9KM+9~x-0AyjzfOtK zT7U_hFRAL`uNw!smTM3!(N6!X`dMojg{+@~^dYnh0B=L_1L0_N@tdk;XynpvsZ+qC_Q7&Hw zDYL#+h%{A#$|rn%DR{F>2A(#Cf_VeDUdDx5%L|rI%@A@G&bU=qv7q*ukYS{x8ayQR z!sK>P6|wb(L_eG^V3s*-E426Qhc5Ss!TLO}m%ln~dqefG#yn5i%zdR0?S+r!X6W;g@HC6fSqpt$tM zVpa3-SD%E)0FRz7bi^vNHVTvsT_p<+C#S0grKq1ycmabv1G4+F`dK>J`X3C(gFPAP zfarM)n4Ygwdb}CQqCF!_1Qd#U{{+6)Qk)SkCr!Yz&0W`ZT)GfScureJz=Gd|>_anO znz-?vqMog>&e;%->Y^B$KA^Mz8>8WgSu0c~;CAA1!Qz9GNbv81aC!=n5B)-B-&N2g z&`O+a_H179q|v>if(2ayid*$L()<#A5@Iyl`xd*f{vtP*GVpO36FuU5dp2;~_RnRB z91xwTUZ6fm*8_N;*AW!tQu=Z0uX7)|U}BvKE5=l;`rqD89J6_o^9u4Gd!))04^kVR z(F;6}876q)7+$2shsV;xuq$s>$(S=2nMlz7=9wEmTXIHw=59~d_qFZm1PJ(&?)dh| zl`SjF{{CjiZ~RpB$n{`hm2e z4QGPngU1rrAft&BOQi#$NtjSv3{#PXPI-dDD}ACe-VaoPLV7x>MerHt7>WlX#{E;J zDcsAj4X9XIEq6Ma9{GxEceYC|4wy(U5~#y~Hn zFK_q!r_t`j*1%WzTOJ8HO9zXV>l@MZo*qvj2ui0PF7@7rWu*;FtqUP<4$N;00o+sfv}u@|T17aad12wna3PM=M&<26@YZ>oeP%amqD zM9c62$YA8>mK{FwLh-Nl$_ zt<=-77lLpRXN#bpb6+h2PQLG1W!GJs-c9dKblx2GPrJ~~J(5a+J-X`sj%8`#txp)D z13;H#I9O#86^qiyhwV#RoV|)WddU|aVdRkF&kAN4JH_d|BVr^5zpcNezWh?Z8avs1 zY}GvbQ$Nz|OJ}6LTExLE?Otbu6GVdM`9#n9bL9-Xr5c7dXXvULMFZ}W<6^km7e_;; zGA5?6)bi3y0Ty8z_@U-L(Vy1)q|Et+XW{%*=YbgmGjoVXoX7X3EF;mZ)LX|Q7Q3Pc zgim_%iV)O3$%qa-d>l!_XWiaJlT;PJbKNekR5|* zfydOR89S^IG-18SA3||ak`Rr$u_LFrdW}zX+oqk-Z@~qnCOn!1$2&hV@vQGjwBK+O zFp>=Knmlel*brc2J7|a)8Szl7$WJj-hTDE|P}A3*UcY8R7ph7pj_jYin}#@n;C?t# z&!NXxLIoZlWlLLsHzAd^W0O{(+Vi+(5RaJ8JVy02+MoF{J^J1n{^$K(-C zM zFga#2w;>M&HuoY~9;NGfo4whyO*2J=HVU6SO?>w-E`^Bi#INS);O8Y1A7Igl@(FWQVfbe)v;(r z;%R#|5Y%u9s6?)}PIo(yjqm=ND|6X%;$9Q4;7bRkTSLLp8n)h{dfNPwq=&Q_3=rCA zg~_+>%PppkMDWTZPTKJPQiu9NvvL!WOEFsMLeBS_c-n#`QDNAVquCA)Q!$k)c2bf( z5in!`%|I1s8Q|r$j5<0CZx*@s6@Ad9zk}yu7)m$7I_nN2>Op5nQ^IR>-0`lr#`7UL zoe;Zcd|xPrVhn^7&VSREWh}~tM&*BVf&^zIcu!m$Da7|0v3DfocAZwoVsAV|Jk}Zg zYCJ4bETocm%S1G^Kh$*LQc5>PoPAQqP9zLWPb;U? zC!&n~3d!mJ?h$-SB??EV@tc{w=s@z2r8vG1V{wCRi0$M~SaYLJ47>%}-177KG@112 z*Jk2r7UW*hn*XjNd_yXy&a`IDwlIC7@4g7r*nCufzL8`L>{i!$TzFs&I7aT?v~WN7;gZ)%27CVn9JjH!b9o z^s0UJjxIcww2}DPWAk+dE;_zn(eBgiv58DyD~S6R8 zjd6$~i_!QtnZj1ArlC3)UvywER0Bt&d@WBJff<$kWBq>Km5zMi9Qw~JMrdD9&Cb@% zIE4|K2K9#`;*bJbwI;7NdZ$kk-GZ{Xk8ZE7@)sn3yI6T+by%NY90*#sF6KqnCCWwY z>!@KKD{|DR4rD0DxJD4HPDuKBUqD|~EKt$t2@yGqn}TJ_d*_0&C7!nd$#N)%Rq&)M z=VQy9oO*9*i;`a_mFw3O!LgD@i(?4K_OXz)G25GcZCb?=Pk~#z**RP9`n;vR2UK%g zRX)|dYrXir`|-)0{IlKKmB^7}P#^}+9XWY(@Y11V$#dO!`xyVb8`OokGCsCQHIId? z6t*`XRR;4&lz4J>+Ny)-q<$iD$qEsqvItGtALVX3=kMgqU075}HgQ7~d}=@wqc()gBvEo{51o6HKYqbH~P*wXqh~v*ypcJ|`a-+e5?&CL;X& zo$HFqAnf8dIHUTQD6&PQ;JmiR1$;v`*zD%B)B=M-705(~<`-v{%(*D6X8HKq>Z%<* z6h4Is5Tx@i3fZYD^1O|YPb*J4{o0C!Rb|ttfni|Y{LMs|L`UAU&mq2f;}zd*ZM}&| z&hef}P4;o#=r@ROhWL>yPr=9+>$Gt!Wy1zAmP(P{I3^{lP6a6kLF#MTsIWTp1dL3x zO4hR`-wT91jp41(-QCthe-!4-sJOGu-hJq497Qd7y~eJoL3wa^_<&R1+}r^a5`<>c zny*7<7tdCghFkuTmGmQ_ZlQ-qL-k=B_S-iy<_zoV#LvR_bfS^lQ!yi(j?UXN>D&9gTf?<%Gu9N+RV;AOp6*dIr(e1sKRtyrP)#p zwj6Z_CS*fzd4>uFXD;%?XUKti2hFFyy&${i46l`~W9tpDQL^RUVmo{RG%nhuk>ng` zZJEslti6wK2@RI2J9a|&p}5g@l=v_tw!I;i0p#A9#j(vzu~o`pL}v2=;DilIV4dTy zo~V=aa|K$=*ix$R3e1if~aUf4e9@?Yj5J z@7qGte6U8nsgj0PRN?(O zxUQTCv+wxF?0uxgYB$=j<8lI31f-n+oaOnYj(RU_>=>#Y@obn^!wASL422Y8$ufWW zV-Jvn^17R0b*wxP`cmuf0d4Y_33vv;*6b?Rc&g{m8|HXN@{FrqGS2flm!$@<6RT}tar))IYuUz&|u3Xx-xXIT(Pp)>r3X;tdrA#Ns;sF+MT_kyQ{ zBqeb6Rk6Bo9xn+trKti^i?i<NS}ibs-uKB@ zExTF(*pqTeYZUD`vQ@as;QoGY-saN0D=&gs#P6S@Nee8|*X42?^R!OM9g@?vS9srA=J=6vj`-Po=f)AIG!52y+8u7H z@t*o6eC>jOPjL&?vEiilEuKdTlHP>y#ovX916lMwsY8*aF^w;;sPtN!|I8hp(roy3 z-HqO#ye;8H4gUSyLx-NW!!Po-8Im*ppC!sKWGfbGOq?1PK0Fj&R#D)OGSm>voq+DE zRER1>i9~mXr6)pQrtv}^shcAS<2hcuT)9)D$xWt+%e+fm>htwM6Q@vvq|NNggGpPxL=|nr zsU~km7poWGia=;NM(#<3LJ6`@vlt2@K||G!HAl|Em+F{rM5$96@kUBQ3W^WB-yrVs zb7sQnM131){RAk0GwV|`Vz>C*SrgaLCx)Ek%M&@k{p0Th(bEvb`QcfguI}lobl~al z`^MAI_WP`}xrGkV&_AgND*X{udi~=o)_&HrdXp9h6h~3jr&HMrnQfequ#a%;Es-71=I~QhVoQ(W^GFd$$UU$v0?3Z&fbk??-Sue)@_T413Z7n>G zH8|PkmNRt%z0ax2C|qz{Ihe?X;H2`X;etUT@N}SM)&G|3&v=L5TF3R=bwP-G;MK~A zpRC;JyPK&bKV4a|O`Iapytu6!K}G0aE5h1oC7S*+=Dxi_harCX2bErp7b60mn6b77 zf=0s0G{=UT^B<;6O|krwV+lBvP|gNY`KgL}xJ$vVUraT2CW>0qC(t>f1huir6&2q) zxXOBedJDBm;J%kF^DqH}sIK$grN~<%Qf&jkqQ2POSdD}=eAb?p)TArQNil)CTUBP9z z85_rdrm_&>r#P9CXXI9R8Hr~iD_NWYlaq@2vkHrN^9IpveC2lB)etA6_RnZjII?js zX3SuRci|_!VH34^Ls?z|FEc{N4}p<-r&K>dqzaE8f?g1~hFdBAGNFJ*4QC(s{6NAA zY1wEhkdbW=Cp+ zA70g-UmD8<-Um6SFKx*@{Q5cX^wRRR?b43uHb+TPkC$h}%1B1RqZwN}TysLUwr|(Z zyo$aS?CJ)tdDnh9GS%PK+zzd;4?;U!0ZGDwKqG2E(36)Rp@J7&&9aK%*URO~h_NRB zTr|k!t~{~nuL{)U;(>@>2T|;`CaU>J#$p{}B+0A79H>4xy!TIWkK{*`f!{B?9?ssD zrFP#uj+`c8$X{;R|9N~1L<>GR7F~UtAsckxSle~G9#Qbl|Dg5!KBG&2_yqdPZ8OKM zE3L0w8Yw4Z9wxbRsd>3`(j$LuK#o)tY%bY9s ze2t6iGFmCuw{n~1P+~cMjD|8sMb#DYxgKZ+WCcZ?5Et1b$O74 za?7nKzZMjCCmc}KEkjf4O8a?0KT(sANmn@)NwrJyv| zrL(b^1l4QwqOAqmSKeRMvZi?ziFM<6*~T5_S&^W>6I1khJC}Z zo}RembSx651_Q@eBWV-*ysYZP=ZcQj>l+()wvh2MHu{2Gu#BKY;Myo(aTd-95dhN? zOTu)$-;^wz$Tr}hb@>>HO?g!boz_$&Spjn+mcaEJ8)u{*fLX{d;WrGM@kyKV$K(6% zmlNJ@e!=_t!x)N_czvnLudC)>Au)%o#m8$QM;L_I-fSRJbW5Q6p1iNGD9Yk5Pvp>R zTxLNWz!FeKDcDNIrp$)5$Kdqrq{Ny^;z`EN=y<8s^zxW;^qx{AL?ja-c;ix3??RZ8 zrS!M;({jp|pkfLn66Y2?y$5a&?vV==v{5O1!)~oi;mG`%saG`lQnCWKN^XFryBp}# z(9qP+10jX6#?eVqsdMf(E`)*k$7W^WrT~&$^IoMDj@Coc598gVkuOlqKOejeC2@(@ z3}gorF8<4+X~5CFCH3{ukB`z5n<&V7ejke9L`%D_`u;K(K+0|Z$yh4oU1|o#6oNpN zN?j@OGN!t_(G)?&iC14=y!eXj^s7&Bo~nt`y1corgXA0 zl(FZ2&_B&`(v5VfZS#ZtA3>43;Lq=j8Mj4R{la@J^$h72I))yVP0^s+QCQQ7o z>Flb~HVA_tp2t-RE8Ok%0&bwi_fp-WB9M>cvOa(n23^iX-{Wb2 z?O9Q1pp{z9sj&*`w9~|MEw`HO_uV$BaO{r&S8R5d0vs7yPQ_%AkQ4E- z5cdI)`ER_QZV5dF`glDn`At|zf!ROO6M0V~p>Jj3qs+!Q$*m^aI&++C|DzCLs>#7N|n765k(@oQ3wiIHTsRHY{Y=<;+D%5g1ciLnW zb{ChMfyPagNIH|dwA=O=Dd%mGDb*C2aZ@Ym>#dM*4N#|NMGYsyBTbGh zF}Oqz1ivAfAJj&0`IplLe)zPsKd)H4e}V27@C_LIV$gF0Qp4is%)yEKY-aGNd2s_E z@{O$*k0Q6XA--}r(C%4T!>@28t=Gdu44jqRiH!}UEd7Pf$Dhd&vcvzcsrS0A!GaBg$bj5KbIZ*T7P#D`>=R)lN)6Qa`ia3)&v1FqvxeYc`N|4yrUqHsxjF4 z_@t-R*Sq3K+kCZc{+Q0Cw(-)^S9W!E)ljY&=rOcb+^VuasyBVg8M*9xEn^TtT~52? z3q8KCAjU#1T1X_?h>w=CO3dR&vwqofEEUIeqC(c|wrgp!@U;11;g!sN>9!y;81s&33!4eL4!nJ)4O; z_WYtRY<(`A0r!9IhI5-6+;46l6+l)+5CKW>v1NN}U4ww=yW<*K7ayOLV;47<>c<91 zXM0;S1a^P)9M*hy6sJjTES%k-@<@nK|JPB;f4LhS@ndV7HV38U#NNqfYf-(ab-Fhc z{>`)t&3TpY<6XcRW}nZLw*SzaE}S5VuGq%LwX# z@So91ZKTOw5;-fYd8|G@QPM`*J9HbzBU0DTOu60AzH1p%QwJU}Hvk~szADk)%9KIb zebl?*e0WD=v9fBhBq3pqLA{d4C8?P+QWaE1-NjAoVBFG-f0gc=xSm7FClJ8tj z7GbBWUS4x6r=8y9xAav6o^OZb^`E`r6h!@mrYC1$dI~K|mlJ^pl15pfv*q?K;CRaK zFCQIQgDhZ^*=cBDrVc>8H|Hp`N%JreMoy5%wPa0mz$MZlXlV&XO>b#B~6|jxc`cZfS8zgH=DHZs?mIDtvV!aY8JeiQy^v@aV)lvGd2swH-sr{aQYF`B_ep)1S-TyOZ<1 z#g|vRW_VobP?b^PK+A=C2iV5(oG4-Mw?Mwecd0^BvYCwWd#*qDd2thBJKM9JT*{~( zgm>v;3vKx1q7pfbIR>GOAXK}7*7jv~?I z{+{23fi()hPqG(MYYs)*GYEDSo9a$&oJz!+Ekg4%8N53>55I4`3cA0!MP@flcqH^n z_!#omVXk*IuADicl()Elf;+dJZ=fXI)<7)wY`gGo)36H0AXaTrMGz8Wf8i_;;PKQg zA&7Gami3+~N|2C#iPgdG-u9j^e>^^-E6B)Y+O~2k^bJ_Qeg?vN#sJk^uW}AT;@$pm zxZwOevT>o__JltzAT!pg@6!xK)QgbDq}C`#M(^S%Xx{m8tF(q#j2v$z76Tqz90lK} zc0nP|?=EyJzR3WLxPA0}u@-=u`bdos#R^bz9@9>lH6~Tc5P5k#wcE+>SWRiXe*0um zB`XLafvJWC6Ec?-U-EPHH469z(VnutjH@QW3;AuvUoH;Oc>^gEzA)*`;61g3RZIlH z4$3wpI@@ES)|9u`-QV*)mTS~9pS+^HcK?Ovh|6|su=HkE>@B$t z>3^+p#S3ww|IJ8TQChXpd#E$_6)xNrd0&$-g5G*6IWP^{tiOnmI$>HK0qOPlB<6c5 zgC8Gx)4GRv*Q)!qzD`fKh8b1(j6xEougpHglpjTwxBkqITF_`Q$&U{^KWUuI>IV{W ziAO85bM~Wo9jiMc#G>@dSK-xns|1_@Y%_HTqkn|lDvOq?$mIZvRVp?M`d%!1lbiG>{! z(c;g;4jjoS3w}`5QNYr=6+5B6IMx(w8P`RcKK|W`AV6}yt!-G?h&&6mE$u7tl^wVy zwRt`hq@<+qYFSb-L(XWvzdNmZwnX|C(rxe>nqJ{Vp{2}Xlnbs&`%gdbW4hK1h!;az z8uR*V--?9;Hh8C%*<90aIcQXviHVWZ)vu<^O61-tHW{#TQd4UlFbv67=G3Iv zT}&Z@Q+XxCsKtDQQF5+@ec0A{KefA4)RH3ugQmFT0CKF`BnW5);q$|Qe_@^E6?r-r z)uxpjGUz2&x!}Rg5Xnl0A%xy^E`nmai)LA%1gMGM-B;#G#@~zeyF=+7JC8t0)gZC4k@9xAl)uA^I7u2ou1Oz6rl} ziwbW=X8_mVolyNfs15Xo3w4s$z1N;S2v-h<$b(pghbT_|DaQ0(Bd{R*!A)F{7SX)_ zDgNNvL69BD`G7Wm6_fuIb(F(S2srEi4*a($D60O8@G{WfMH`~%CJ*w{Lq$RgM>Ck__`fUJ(Af_HW}M)!g$pKsnz8CyYAYLP`w?stNg- z-`_O`n95(Zx_=tofhCK`)i{G-{bQtgG$F+bU!+5n$A4sGjAAF~ldr1-)jZ2npfx+x_FfrCn4DMx9?u zN&t+{)Hy&d@i%xL$uF2TC1T=(-jlhhNDOUr$(*F6st?l)m z^LNr!G&f4!X-|Pv5RNw)w+Fv57^vxk>!JHM3fs{INE&OSokkg9puU2Dwz~aTs8>xx zu1JR-)K}RkKhlrEq@p03n4oR^YapLx?ZMCFg^ezZ z0Hq1atWVzqivfqNi~ma<6qL@tYBxHC_4eop1$QUALIf7xG=OcSzPQsSFf9C^j*Cax zjDG$ZjdEQ6!#~u?Q;GmM2GjjBY)8fmL;{y-AY2&4=^{8_aGkdo6TNFw;_h1tY5mrn3VwaQn{L2S7Wm&aQH?}maMmYEjv5BVw9*CXdX{yj+Kb^uXc((6BIJfY7iov|>TH zu)b8AJL`6z)*ydD`#R4SA*7mh9}6d+Nd2`vG+DZr&(ROuuyRS~#2)Q`tU1XKw z7)IwI_KNQEav^(AtOmf6IlF4j48gI3CHjcl=cgwwOz6ez@%{5-+>99CQsolWK9$>3 z7a?mDk!G6?O7u4P!9o|*;h(NE{qo06t z*#OkVLE-*vAZ+0Ja9}UW4|-LNGN}yapUo-qYs~`YaR2i6Mc!wE|9JYjDDZM7Dqs~( zFSSh-2H5H^Yy>gDk+!L-_z`{^fcgoMQ)C5(?ujP{_Lvs@>qj{ooZ@gy?-K~gGlBRk zXck+J92&JCy!fmz4$wEI_fNU{Z~chMBUL&Xp>#u=1 zMgNo?|JMH((Eqm2{C_|j_UwNHv^qrqR=qk2Lq{SAv&sy+zYe0;tg>drC{zYp!BobO z%(kf>alhCj@p$4PXvFX=Fx)!{SfMlkj7QMv!Wx%FQltH6@KQ7;KQp-(cw&)%~CJxc8VH@p7}r2Sul zn?Y|+A5DoJH<1$Ig66H5s-NiN$FK>TKh_g?FZh3Uw-Cbw95gnXnTDTs_xH28Psnd$ zs}ou?3?#(lR=6k?DagKz_g zHI+W3CS&N~+ESNV^P@RU)oF5TlTP2+?`1#MDfcSLVHRD6L!-h){Axa97#jE$sJ~ZV zv`qFZqma|`_AX*Di>bllur|vC6{7@9{kiKoA{vrXVo`qqR_i$u?r`J?pKfv)Pezq4 z;Ebw-|0^W+HwBb|49MjgR1A6UPTDA8uc(k3^g}iAJl)%+;B-e_9E=tEUZuPoW+42J zwkk?vs_Mx3HyR?}(vvklRQ(5vNeSq)P-y~UgHuiKhv%L49TBs&AWq!{0BrX)^#wFN z^5hrbKDRS*KdQ0JbVFU_?XkK_|pp!*Z zt?2{eAJk4UoN8Bs)egU@Jq0OxF-T~mx`@IWprUFwWL;Y^sgv}PjuX{5QLwgX? zK|$O~V-pu=`V)-pFX@AM%r&yLzO`#qi5F@Q_k^dKd)hI7eZEEw}Cd> zBkzoGX3g)~34olv0L7Qsh`VDLqJvaO^wn>dpL3yjXY6Gsdv7y-KMfBGb`h{N9NY0! z*Ndgig&&-r`%Qiu$9~1 zU}U-Hd6RN+qmn_|=^@d--6wDnJg=Pl+|`^_9GCJNt{If2@GoUTxy&jG_@rbVhZNjs zfSqltfHD|R0Bgo4evQ&*@1?DAQJTdLQu{=LK&mhY3J=wyHZXR1^#ruC(2@O`c(eX? z?@@(pRj$ec$WH`jKmFrUyw%B!(Pbf~)k!_ow!V;=y;w4C$MK^@nbKw_=YD*`;#frv z^tWKWwS5#dpQ$a@Uk-(!CrYp3lHwpa+H`B7C@{g;&`1u;yW9n5r#>ifUwJU$e7tb? z60yKBuf=+-f27-au%a6WU+q`>!@jQ;&M$hKm>v6c8d^jnVtcMBCBW!V;O^kH^o5J~ zx&KtPffrZs&Al$cDXU;lVVaq7p9PN&ULS)6D`E;xPqh(`l6}fmZ)xx7EF|!t!d}nW z14yFQJ(l-QC;7{UZwsGtiAMR7F~j-Xa-7p$9RjsYdT4hNY+pisH3G6^%mbRXi(L{g z^02v0p#70+_N2e_anx_!&O&?U2IO4xZ4^07gtSQa$QRwl!Nle)1JQQ<~}PFrLgHgQmZlhS+Ja!wE4Rtf8g_kYz^_tJ3wZE z|1>8KrWam^8NoF$hZ-n&gd}&sn1ima`?8G^Ta#m6Ehjs3chQ)Ye+*Kd?Cr%9)E(sR zmEeVE5bs<*)=C+u9w7X3i?4dNEcb?%`1SA1EH;%iGa9AqnS5gZ3$FeoJU zDvJ$Q5jJ%sRP`S;@w{gSn!IZy6B*ZplCVGri>A)mpa6$9DEc(l9+;5-Ho$-bJD8c8 zQwgH-Y;BuyXD(~K#|^)J@5{V%A2yB_I192Hv&IXx8a?=ZeEDbFtOAj0=%v(sunExMj=?X7sdQpDUvq)%^6xQO~sPSrC?N&b-V%Ybi@hmke zqTDhJ5HBr!J89umPp$eQ1iRqg!(plD7=MRWbZB9NnJNE zxRDX-r&%ndtr5}9VTlqqWi=fc3Q&e~y53y&6JRDVRg^u=vUp5uE?YD1uIf)v5f2zr zCAKsB+?2pGVTg8^I^8tPOS}B{ey*x64xYcX_6=9&7QKxDl^{`#894PWx@H7cb>~j- z)#AGwVjp6$8=&|;8|Hg_5|y3<64XcbvC?2iQpF%c>oglsA!7(Q^8`aXd+K2u)CH`B zj-IR%auJzVj2)(Zpp8o5HK+(8IdhL@V03%|RAl0mJ;qnFU=fBR2d@9+E>nER-3{%3 zH@k0`Wwn!f2YS%cf@sKk!zf%i4HO{-c*()~&4gADb5%`B1dBkB(@eBmL z7#nR$j1Bt({z*E`fUS-avYIfad-66n-lwF_T+pTxp|4WTa{^+X8TVH)tcOwrhM$-FmdD@#88ynmB`Lm*4=GW#g_}0qlX-nS4o&O&%F`CQ32>Arq9JDeBF@?N;P2m-g zSrX~(x2D5UL(TBiIzyd2?h$7i;aE*A^#Ub@1~O8Ed45&3BQ*mH{{Ll%`4S>H+kcwJ=r-UPK#gQ z&|Luvr}ykwSrxQn+eE+f!yCr+a?wV7V9AXEnd^nrER~o}P)e2F28P~oYkX6oTc5GT z3nyXal~&L?Sr%4(6{-vto*~0xIL?%5LfxS{!my_M_^rr!@@z4ksKJc+ooa&9EVT^$ z4v34V96zw z?nb&nx><68rIGGt=}<}}rBo2_*XMcO-@WhscXoH?%sHQPW_IR$&Y&DnrM$i*_v{^&I}G3q{;K_q{z^9iqf^^}D&mdljw`vyB*xz;t#vbS({Mb5c}REtEZ2 z_nK!9nF(}_&EP^)N-U7JBNUO2BMWWM9i_vIm}kb9{%OoMnm&Ej<^8hDyU{)A<8-1~ zx}z}F{oZc`w-C~x@D$HvcYd~LD4#pvr>BWU&+|00K;wt+{gV=td!Qm55b{$k=IdDB ztq%*}lpCQ=p*IE{H=p;vJ!t-N^8}xz=m-9;rx?1sfE;D`ZFc`?cQ`?5vJWB?MvmOj zhX=rtD2xcdS;cps>xH%xyc+xcd7o-7x;%g_#g&h#e~q~iv(o-q?jpk!{5OE%7*KnQ zUFh4=QbF}kf$vO>-v4y=$1&PHZ|a|!E;akq6NYGM9D^?^u3pEVdP7gv)Jx~8Lw|tp zYIQ_Re+TINy4uMQC-wgOw<-lnSn_WiZgu= z1-uc1lb{j_mI%dPw_vGAo~Oi4KIRV&sDiCMmo=pY8rACCUnqKSWL|oMoy9DC~tB%W?Ohf9^tb=K8m>SIsnJM6DazOtr zUMCXb!V-9lXFo=NsVDsseeyglq+BKz7p^&p1(_;StN+`S zMRPvuQ-~-}&SL_?ew3np(oZys@eXzJnPp|2QO;9*8mIAsh{NgQY&(Hyui51E=R3|H zAra4sTw!johEHu-PdGhb4a2DLXw<_*chziL?cEXh0%v)!>Q5+VkGtSQ4*h!A@z)da z3dIUK8g;26Q>MBPxtVArCGgdW#>Y+7@9H5Dx?V4fr#(AtabB!$%xo>ZV*2cG2lhS5 zY@|G(0+bq6XXOzu{-h$dsz7=a^eV(pfdRz3s`L%n?F!Qz|8N3IEqz(>%2ko}*pY&8 zFR#)j?GF_FOH4DS$!oMrq42y{oxLAh$bq-Tf^n5A_9o%cbO^HdYX__9Ne5ctz{Vq< zwBM=r;*jd@J2bBS@Ec)XC6S;Ru9SdqUiB}_%lM=pd>KogDJ9qkBiN|D*n@q7o!l*BU$x`if?xJ4ZUU1&jqxRQHs^H>|Wc;mIWc? zGps3)mqwdAl4AU|V1xqUp5CFJtYIz}1jFGtiv-4n73~Qy*W|WB68*X*;?Z56%4R99 zh4{)CU#-&U=zX{<)A&tE%te$XOHLxKOL&TQz4)LM@R|$c#eD3VRMKE>sE0VlocHqZ zTdET5SNj6?l@mfz)R|b_G5>M9_5a$U1W%H&R->yDW9%fQZNF5VC^`!Mbo7*AZX(pz zVnNBuPU~~&)#@@v8i=I%mm}?S9rs8c$?Fs4z}F);bVaekvyK~|kRcd>_9A&|`+L{+rq@Vrwvvpst$2n+g#PeuM1_^E85KT#hj6pKPI%GU?8JGo}5Zt}+$L_r9 zM=wKbaChlHa`%+DJbh7k;v~ZMkpXvl z%mQO?Ou0^0egwXJ4Y7aioOp@Ad$nHehD6atGJo1A#8hOy4nr!7?=6Cf_Z438VE)q~ zy=lkL4UzK)$G|Vj?|5I1w#LOa^z1Mw^RCV2uF2OK(teWJrAp>o6nP(C4-%BJ@hO1b zg=oZ1!L^2(or#@99S(DRBmu1-P^t8b%B}>=Atuey+_VdMfz#~xg4f=Vnw`?;q6!B# z2r1jJtlT#5w=$1$lObb2R?W37k}A|JsF#Luj*4|A*IN5?kV)C8<|qYR-_^tDr$AG1 zNG_x%=*K!pkFKqYo@E`UwAS+bzWx(=Xbpa$Qan$UueaD+p8mMQ`|Ay&-cP$myMA%b zmbFSr)V&JQ1dp$?YIVM8Z^X@KZ75qJO`^`#jg*F3dIUTQvqbP~}py&+>(TvgJU~(Y}zx)*W%rmJx+hMR>Vm^p?`q+Wh%~Kz&vAwn%AI2&o4+Ht7^-2rzfIwCXM%r@>>9 zr;PbFl+*@fK^9E@Gbxg2*S1Th-|{VhE9?3WywO8?=0(%0sVoAvYR!`p@o0CaaQ72U zKve*@VNI|i*7dkwYw==7+IkA~;wf$xL=k?Yk=SUnpnQ-uDG+guLf^=Cgc2!%wZ~7>rWdLzg0Zg`=FZCqn&q_xi z4ZM&p;mhv{+9C3DjNAmS!Dk^;X{>~TuCiTo@7ZzWh)^+#45PM%amvAUMPvzb76$ zG97aHjObeL-Wxif-Kn+VFQ* z*>|a+oR3C8y$FbTd=eN)Ot9e?0pTK;ry5m3NF29da1$B=)1U)$iDDG)FV_Rsl7>-^ zz@@hqPi2&wy?tLtfcbzgNN!JQ@C+)zP8i#Hl`s%Xzri^)c}yjHd$WD-=te-)fRtaU z46NvoVMrp@avcCx?zQB?MO7oS2pbsf*F67IMr0fy=MpR!^vvDK?Pm8-$V60Q@dfFw zQ8k#l=83Z&lRf#cpkI#dy0X%lBaZB~`Ub4-w#A73TCu z7H0EuE}};g4G{sxMTg?od*RnyWI_&pug3lsf{uaGuRdFJ1AmKeQgR~Z8o(((-mIdR z0W!`2NBW|&eN^ZNuvaRb_NQ>2hqti!uVwzTa4>aR$qUiHM&ZH2(az+WpyK;z4C9eB>{V4P2? zvu#S)ExM}=xlgkpgN*j&9eYMJ zOba$@_2Gz2_Nz7Q-Hs%(tVET!JEc6Uc=A|L*<*ErhC_SD)=gwitt1zVkx3#EiU`ol zQV#$sM3c`wIkKnXqeE_UyPi@lTeBh!o{{Nfh%q8NlSu8!cSKopFCtQR8(bOIYkb() ziM5g&8D5s^n^p?g7`naS`huWPQclWpVK27ne20dfU}>Z zWV~>HmLZY^Ln%q0dH~;l4e}8|_U>~!WVLw-l4Fo5thTnAEby$9)8@uq^>bZ`+!mUV zif1c0M^i}V=!-c$vb)Lqw#EtF0%iCh1@n2xb_~{3EFQ?Gv6x<70A|MGrrbL-F`7O) z80HtsVbV#mDkT#+SGW+I$`$V8cBp|CY^{Qs;+KB(!tiF)%M#&GoN*vIP{|?sYV!Px zhxaE}5BykTROrbs-hyuH^n>jC#mmoTH#$G=Hj8TC5v>~6hZ>Uw!cI1QdnvxMk2xHzXzo9IMsPK`~a|-}CfT>e?EdvZg&MSu_bs z`DE!$-%b_-?oWhd8ZH1;uJN3IF@mc<9fg9cgV!DnLVz`|+@)JepP$PKokWchLgPA3baN7nO@?j9Pwhe8dGDs+z6RiK>Z z9jJD{+E(#kAQ81+nO2;TH(aIt?v_iaoLS&+c=IomF-G9<(4ZrwZUpnt6NKNCYAro- z-<7im+@YVm>>u!RwUH9)#QTpCG^M9ZL>EyT84;xX zfV696hn^t#ZpsoLxpSIukrnU3eW0r8+*5D<4$$Q?|IX#&;X0?aj=U?p&5KFg|11## zSQ>zcH3nb1*E$Nt2bdEoMNB1(t(W;-O?z|?lW-~>yMyLtlf}YJFid_5(g3W0 z?_iVJDXsg4v7)$^f0xiXS(t@I``Zc}jT6EQh%w6WKvj3|xlzm3S%%bE4oDtWDPO^I zU-XQ>QKGHP>)YCP+59e)(*am&ILV-sZ%5!vGJi3lK{|1mjboe|hgjlawaHlOqr>%Z zFzW<|3tEHAQP0Qn!!X`^Tfi23D=kO_Ivk(}F!^a9mJiCnesZXRt$d#cM42ebVC5fh z1AFnl-ITYK7a3RGw^=W|UW(oA_-D4LJ^sh{+>xnN^j5G^l!yUVERj5cuvb~UL;8>q z$k%ktg6C^n2PoN<7>IO?+SNyg#tKT`wL%Zy;UikiM?ist(GcFt{hej_y=JcTkCjU$ zNj0%sy?b@PSzE8u%jD%}Ph|jD)<@!g8Jl?wyGC7#o)?hZcS2{@uFargKrRrQ`I`r| zNc&tNFpb7hjjOC}rNSjWIAE*=9}o)K%!KSSt=-%%bJp&hT7Y&i^e_ARt_73f-ExBlNI@@`RR{HbvOk*^LY8mfe&{%yZ7M zav%;HGbn61sZUTN76h_UQ4ov)Q1YQXBk(t=#l38kDY7p(hsvK2WK4BT;Sk9{vAOu& zultc(n`0v&`Yo_kp#I&&IQ)a-$^$j>32=pOr~tDloVYd$0vo$U?a$Ooz7?;K9_k9_ z%z?#zrOlW5m`r+gLd)6r4sYjcut^_W9o=d%BO)QPxB)RwzCG@ta9H{fhXf); zpQjW)uS6S}#!2vp2Hxiw?MYa^evAZUU*pBR2)rN4)Q`R%GoOht$E0bDcgcjPRbDofLdZ(29f#!}w%aLvjxee#hZ z_CS%f4yCdcEUn-LG#;08vel{jrGKTg7I#EGpKxNx4%M3YpLN^sA#h2h{2S}?^3O)L zJb74#U54e>i4fGQ@X<@F6KVovCIO6ASw?UK#J5XDHuSK#4)T_BTHFXxt(i_MJxthZ zM5*#uZRWx6SQ(lttY`8tFv29?M z`qMPyPDbQI0_5GUQ5)d0J0_Gy=q!^alt<584C`1#tz7YMD@aw{Y_3(m+JH>p1dBMS zZLBC7x{ffn98Y=JMXQlh$WmXt7()qs892W8PBuKd7wExW?pDm_vU$0?+Bld6K|fQV zm1y%~e{8~toJfQiDB=cqsOBwu*W!sV%?tM`Ut%>Cx(kNxkG%7@)3~%tQHQ#3zFD+z zhkB?9*1ly6D`S=PEq$*%x8LeqUVxg*9IypfwC8MbM=r1BTi-gnWHby*#ONz`<;|*C zj=|Bte!U|#gq;wGy}jF6g(w|9LD>Ec&W79WNFRBYgz^f|!TMm(>ijyC#s&YiC1%YB zGB2uu9V7DQnx^z-UfbarxpnH1*`)6{=egLdR8sU8Yr6_65NYVihMJTK45JtBlDxJ( z?();Z-$a6EUMw9v9@ufd_B#|E`tp{%+jlFSaSU|!@geIutm{@R63q8E6doIHv&+8Y z^sen=mh!)8pCJnzff;MB{VFJ>fe9a0^_ES7nrH$GQfG?dg%85?!_xZ-S|+qiVYBp7 zi=V*BwmG$=6IBGmWIep?1H#^>P^8fkf*q4ur# zK${EMo@e>YGR8pJ_@(chIkg`r2gGWl*lz-e zV?E;W-1?s{1JlL)-=B9GKAdbys8Apu>b-|ys&a0?ChV@OPlJ#XtH+qZV5GzgTgM(E zU(0|kB9z5BAFk!>G5&duDbbdNQaN(&5r-kpEIqv}AA=N#2Uh8_l#0CPp|0Xf0o19pcA3n4Q@Y+X;Y*)QIkoUN_Tg143g37UI|bAY0zbq+8rf@cY8 zb0>k#yasnIS+0S;Ni&#wE!VG4)58Q$zqMXZulDxwZTKH2i7Kxx_K0$S8{VP4Rp-`& ze<;RqscsktIh_I5_^ZkLRQc#`oIt8FzCm5OIJ>ub1zGi1sKw!{6<`csXmP{gkWw5fDyc#rBNX z{d|k2HFgQ29qsvk;w)V!E?Zk2RWSEkM{23}8uU=-k;j~(y`AiUmmUnReRt!!&FOF3#lR}o=bUDk)Br#*|tZ#ZPu}Y*5W>M+66z&g}hO< zZWq9seqPt!L9n#s^$})gO0d~Qxh(wsSjVRpU(D|wOfB-hx#KP?AS5kvT7r399_&vo z%1))d3f(s{u{@JvRh4}aOYe(nGGv@<52I``%jld>SA~y#HQZel)=+H@78=gn&8`T3 z{gSEZfJz+1+>hAb23z4UK#=F1SVZC|=u8L7K8#ozMhvB1 zO;2eImAJu1xtrNyq!2OOay;7tNnvgge3PK7!j#@4`d2&fbDL)j?SJ0ZX^ zV|?0&7U-FYT3T?9m?MgiI^&9ug_o*F_?~m@^^K2gXJYK@aAMAbrYl)WUUj1_jua*~ zL?M_J<0$oc5lbbvLkD1Y;A9O1oWqsjyiyh1&AumYYoyzajk3$6?*|bxpz>&=7A2ef z0{4T_D?F$p|1i=Pyw~b#$wcTeB5WT=gPZ!kkO(8e05GLH`BE#benKaEfG5i%9vKYy zlA4oNh*YIRD6Oi1Y(_4rZ44_83bsk)gElP7x*}7M398E9`{jiGAUoDQzVdZAaIui1 z1T&eCMBcO4#^qvbJt_h{)CQn2e3Tu8o=}tlCyDc6TpHD(>PQ))6^4DP-@yeODUeDr zN}cZ>PC@SRtWkiiJfjYI)+Llmt9mu`4p%|SaW?1|i*fD!1Z)_1(VSJnx8P!S)bcEd zonGG=@o4mboM91?>=m+cdy!<;9bbiX?k*R?1)zu-C<~)Q&%oDISVQFlV(cta^^S<> zmLa6aod|h){KBzKq4fR>oMTE5$+I?P4MjLEHEQX#%oLwZ=Td_y0?RhN{(PJ0J_%gmk_^s+%3_$t z;W`9SP$_|el@58I!o|$pW6;3o1$X=$9tG+3Co!$GZNYA*E-Ak`+k%}6v0Hr*5v4I_ z72Ssjg%5+G`(Iaqvwm$t;6mug00!M+COfa*~AE zuto%3W!8yh<$|y^a!`_*!vuJ;QRwMcvZ5ypTUs;h@x#Xh?ab}3Bu4E@F7OoXepMG8 zrTLJkr$NAk!s!wm%Rbic21_%*rK&~PojN*}7kl6@{hkC=bYRxT1w4^puNTFwczvYZ z7O<6 zgjvWw3CC>32pFx%T@9w)KG1RQ#9BVN+gr_6Q|+5{pX`2J3}mVO?J9A?qVU8I>jw4*9_BuULyncEiF!NSk z+ZgWxmksT|IDq7gQP4${^;xzLje08NP~KX}pC25N15|&q5*Rvj#!@0-7vV!iQY5Dc zBE*pEtQAGksIBN>{h90Vh_M9L5qgt|snYRwfRc&|1$=l47zoaPtv8Cjw=O8MY1nHOUI+rup3xYQwx2r+$Z>)_qaXQGwJn$ z+z{zG*`maAl%4nI9iWf68U0&bL4S$^ttiggm<~-8oJ~WGtj^Qdhn`}tb(_HAkK<0< zV!_5A@n5Bb@8qGXVsyfkY|pR+%h@xX-=r@HwxiCgob+Lr?LX!!oljQ1Pv|pD_xUi* z>EQTA=*XqqFnK5@`}?MbaAmdL>RW+pm-*anvvW~r{2K3QhSs)evfFy%mvx8PO_q1g z2!RsqO8X=TbA$S6I$7av_HMQhMPobjGYm8IdZm#Tb650ppaNZQsW-YIF}?&kAM+Y9 z3N`Jo;s=Yg(tNFjC6u(ckH1yg_oDnE=zU-)WcwMFV>GZ^_TA8~YuF_n;^jKKdSStF z=V883_|%x|k^#XCz%uOEsY^Y8^lmX&=hsNEIPqx`qlfp2g?V(vzfsn z@ns9O$@_+l%;(#8Xm4Dyv`QNYoN-))bw|xY=gsf*5E0$4%iFhkRYZ}>!^53HK&9D# zdJkO(w1pi=JF(9Antg*CnI6N@u;uz-m^yG}qwUIiMVhCyUmZ2|?#sy#%63O^5B0E) zQ{`+`j=m0SUII!tM%aoIbW+?z_;KGsK{*p5g2#o|7889G1OSW98UWUl2exyGVt0Gj zRxm&>HEFu5}k7(*bE|R&n2z;E_`2vg}U=TyfnPqh;#HO zONJD&W_2*=ZBXHXS8_#4(EEhd(FBPoEH~GMEgz~T_b=xR*vb4fqidiOp zE^ltiSe5n!cshqzZ+B2Ld)H7CuWWwNLHr{@#@bF*)X361bhG&-xU{>spX#4I51AI> z%vo;g+c^4nZrOffMkIz+%98przy|7tFLI#i^LUW3!Tz(f%l7S#{cN?$KDd^xYAe4v z^?j}*JNm<*)^=zVk|DsvND+KGV#VV|s#uXVvRn?sen@bC!c-pQ7W(D%rm zB-b7NW74v}z~yvSKl7&4rKDPCMXnFa6ca5+s^l)n z=XY)p3f8J3(-r6?nB6{~bgU6pz^yUrv9^UpC5iH_@$5T2ScEY)JBTwS%Gm`4viI$! z?$|HPdz)T~V&(9irTU_>fRMThIu&P$Z`%bGGBuQpAJn=ou-=g9W>f#gz$+jS=99E) z|7qIHx!8bCcD3!tZ$A^*%Fn=S;TAW$BtY@w7bVa=KWkAv%^hYbHr9@OuG`<`ILq+p z2Nj{SC}?Z8B_gXRg3M3+(D!r@Q98%P+a(d@@Q^VN$}tJYA1UGi#`}2?@a&?`JQ*VtG-l?d|p7V zEt|(esot8BWE(V|RcHktc}MJt%VlLNyrEOIg0_{kJ}Mnr_xN7R2d3n?jhmU8ZAjV8 zY|?hXU}fr^kJhw&p=qdM`6Fm^y4(6z3c6lWzi&OL<&3(9K?#u6VQ^ zx`ccY{OC;KS(Opnt77B-Qt!$8wum(PGx=n z{G-mVJ@?q(zY~eQZChWeoyV~IblWg8fO2V~ky^Dlp@>?e_!o6rr!^%-kPG@ulbo;u z3?BXr^a`|HEz)%WYPd#bEgOVtl74%2o6hI}!)h!Kl=1BO|Qg}$mVYXPyHtvMn4MEf?v z`e>_fVkua09OvgaQ&@wbIU3K1xW`-@b?pq{d zJXi~jv40ahMr3y2`W!`GANzzjzVb|&IU1jArk0FIfiv<((tF?-(%>lfta_uxvT}uT zaomMOyCs0RXm(Zu`C096CllN75~19Rd~B646W#Vv@|khu-lfnlSTIw^nf626*GWC8J3OF@Mp=bdJWUm+rjP$|m7S>JlKz&5ifl!<_5smoBBy;j@Gid;GtUGcd0=kzulN;jTs%xBCNFD~AVg!5(4c|DuYH zn;w!89Lw4q>1U?}_6_+=^>ciawuBA)kvWYS0T)$R;*WwwZ207Xn(UkCb&M`g{X?<$ zkx#aD+b4Wezc%TFgd7~+uIXsV&VG{o5_dD(bBq^HI6@9pjaZK6y10B@d^U%wSfx)b z-F3T3KmQ}_UA*l(?q?gNT5G5v*NT}Q&c~q+&BW7b|FmQMXD91*eyaZiDv78nkR2>@!(IS(jaRnoQRhG zym_&X7Phb`psQGXp1q#bZ1h{R}YsmPNmAmE**^-6shC&&! z!@Y7jtr=H>Rzh({^cu6O1)e>Hba`rhzqrR_!2EnQ{nLYpttpeUJrBYa!i}&sR<6NQ zoK7ipq1yCn#CnfcgS3^C`vOc^BClhATXvKQnXI)N05g1SiAaIG^5BXW^qCfP=akx* z1UNV~2pS_k`PeC=NIYdP9|IT_cMveDNAt4@YvYF9 z#Dle|x*dRwG|&%3ln{OP!7SDLMs&x}BRD0|Y#U&qK<|ir=ww?4gxbeF3GBbWYJb{X zJGVTR1pRK=QyF{=WMQF}ROLX@u^tT`sOn>8kOy&nwUlVwt7phwxTZ(1%2ZTi95Vx)pZ6}LN<7af}KH(tBH?0xCRVj0j>JngN zpdtsrWq-12g&?!1Yr1^YVSBQ=Q{76=*qfE{=<6^WY;#8#iO@q?tX3!!K`*ch&su zR(I9?xkg!*t^MpYv_el|H^GJ}#0`1=U5y*(So4%k4CX%-L8z$rsqj5cR>4yUW^VTs zh*>AyZwVxCfhW)FO3!ywAksAkDkUuQXuiolxW(e%DknpLfS&duNBlJ$x<^S^Ji;^H$E?y_-DQeZ2*O$x(i&u^GB7r7c8Qj&m z1cL5PS5B>_XL|2+;n0&+SNB@}$8=-}g+Btal5?y`GGWP+qsuQ3>!u&BC&APQf$1mU zoZ8i0BUWN54ru&CUdIg+LLl4erS5pZ-M0lFpX%zhz=-ZmLAA(s-VVLaM})E9;=m@z zM?u=fjO^?MU94;CxjiKHb;Y}~NB<6Viid%~q(j=t`TV8cQ=lLeM*s5jgHRJ8shyNK z|2DlkfCYomBa~nkUh#JS4!!aBGbxy+?k0>#4=oBH#sBvaeomoW3W{YCM9BN!@8UN> z{%vUEOa14^_%6sOX4C-&Bu|IJKhuqv)F@Iy0WJ%Gi%%?mlwKaZew0+nt?yBeB(rdr zoBtT_EB{j6|Hod7gr+uU43#j-cWk7h@=osG!GETfYmEx8qdF$JF~)^ zaP$d*7y_qYLx$nzvQFv0&gR#eAT2hm2+ij%9h2bh!Wi!d{BNBbwSwAT=}_mML!CIo z36qwaWWv61yjA*&J|j#=bbWnIithF>X$2$wuM^~S7bFYyG}!A(^PJD#bI9xjGv^t< z^3?qxLQl(xy>c1Vi=i=yv6K-!TIyPIn;gq2%S-=nls_KR@Fmbecr688;02w;LQll8 zcTacGXSy-XB}|hb)v7x|io0za&cH3ix`HyfT+7J9;cn%r1d+-XQ!q6_6_WYil`>$% z`-B8_aRsiyD8j1w{O1dQRhU1jZkS!KFk6GV3d$P!?yAWPsMKJFjMr~{D~?irWTvun zeC$>33F5T=y_1X_Ki354XnqrPts?8PbPLAaRzIsG=@dcgpd9bA@z0EI9T@p>b(*L0%vXsu~u z5=68*Q5UgqWwe*=Sl?VjN({l&$B5du5iR=jG5ksW|52R8iAj@85*zYat$B$oO!uJP zV_6{cv#n+-y`EN1WFaS_xGzmGWlo{E`ER%1*Sa7lh#M~AgQplkQX$)uY^OOnObdf9 zf&bZaW(nMcm&=7nw>$j7*YSf#X}ouemtdrk!%PB0qI9REP~T;T3kA%CAe@={>=)&V zIyaR3VQJIk-U=2y!I|VrJEnp6KeKLbc-Jx^(|a3aVXOq$OoD>vwJp+J-Y2zAN_%Ko zB$np-ctyq~l_*lH;KmL0=Mgb1#ZHEw=|W$XnC1}vw-53@$pPr)W^?q&gkIxohc$r; zcPIVlC1hwStSek`Yy_@}a|zM`HKtv)5oV`UZkVlbta_yfbvm3Rx1nKuE%@l z)Lol0;?n$oF#Ej%M-cF3a3S_lN8^LHDDM5dCPOu^qgw{&&CyFHnb_IbPy02`4uRMLbznJR5Swud6+x0Y`63y77A=A|=C>b}IH^eR z)mL{xD09!CoDl#sC-)vQl`Op-Stut*`wCf6{;-l(sE6{K9yrCpD$2PJcc5HAq{GF% z$0D_9$qgj%iRqk#6;4Q8@&V?#o%V6#!0k05oBs|){xlG#_#&2>fq!7>CD{iDxs9%z1773 z?R8AgOtje#n>;4r6!r2{p-bSW1n(bsZW*indUPd=+1Ro85UZ&6aO)i0O?kW`F^C#+ z#v>K?HXzYk2dt@O@Z?JpX3vUfAQ>oxB?u`>#)TU>656m5PUE;|gKHr!rv8|DM{0&4 z%}bBn_y@ittbvFNl}TQaDEadzP;jP<5|NhuTgK71qbCy&ZW{v>^ln3)W^S9^{(^#d z!#~}GQ3<`auRsoC-QUIg3{4U5QyGWK&X5#5YV&agU zj^}DJ|7i}@*d#|q^x$XO$Wu_d2kGfCYO!?+Bv)p09`vE__oVg=R*WVFq=tt|qveEn zxds1iC|f_;xNigLPSW_&%@U}+e=UFI6grWLtx=9V$)u*;EWGVn=qp4ej>10qiH`IN zNt_3s2+mW>m{+17#yz59_M%b&o_Cc2$D^@kk~H5pMu)GbNXUcyLIO-+ZWSy z^wKj!-T~!*_394`xusu(l%EEY5cQ`h1R0ahfYIjXT+>|$`FS0N1Ef#qx~X&2&zZ_FxMFC) zD6#`NP*Yu+VgxF_p-h?wz;vkJa^>{KqNYCO-gZbK%SDe%R#l)V__mZ;Yhp#qsT!j7 z*fdcClXC(7CVMt0{g&ar8`8M4n%}MvdHL2|E%3*9&23nUuZlL-FakjrC;zr}Gwjbf z0SwaIl5?y*0;UOr1fG^DV@A)nGct~C&+kZ>>O>!z-(mnRX z_dJor^28_d-U2ZeLR$6g>vfT-d^c?{XElt~*^tY4O&i&cK@6QulSWQ3(LavIE?lth z`5IjZA@4X`#WuOpZ#7Z5xTZQMTuk}~|H+gcqrxlOdm&TJ4 zTOS+pMK*ovl+{FPAQP=nfZ3f*Xt1(g5@TLRJM}S>o*7oaUYS7Fx29ACI+$rI{ayF1 z<4akCVO?}YP56e8EsnEd?FG;RXje$eM7AW`)5g#V0|35+&SjVGTN2mnU><*R*KwoX{-sbX&t`8+(M z0#X4PaSLvbh-y8f3c2?+=@?HEsvAIp9JsK{x5_FYZhuEZ^Th9iLq-}JrVZ5!e{?eD zLbQEMRAx6-`>L&e-!P=fn8b#*--LFFE@_g)d=lFHc=zNvcQ3AiS}O*3J#F41oToDw zAO09(W5E%pK|%eLeS~aiU|`K6e7f-q8akBwiLLibcHti9Ax5Yh@gEBf!yZ?lWY!sw zd2{z2oP*Dj@hG(ke1D5zri+-LA4>~yuZ?z(zs3bvlueKtmxpax-&n(>my72mRHp4)%EB$& z4tyLw^ESW~RY&`*cKOijN;ZmvabApGm1f?gOgjCF28T9F zD)yOD0}6s54Ys1*;`eB(Nn>Z(e@vKVLI%z1&PE1Hk`fwJ|8!AaBinwKCZ87F(>R+8 zJqUmG=y-9LvGuzVu1>dSVAOrMZ)LzAnsnbJGJ=oGMle)o{z`E_p7uJt>5m6!^mOHv z{u((%V~xVc)lLRkj2FP4*d6CodC$VLWjnDt$peJdLl+pn*DcTY*u4fZ+}yGRkDPYL z-z*FG_zj!Twm$DgS+=riUDJXBBhuW3 zy5B;F8x?Q-_xPjSxYIXF@~SV;+fxuf0Dj9LfokQ~kzj)QHoSS;Ac;8#=du}mIG=u2U<}*gsr0fNhTj|ktlN+OKted zLI}(vJ$b(qG7X>4!sGBnd|XQt%nblr&Ote=yF&{nsQDHr;LnTW_^(a-UB4$mv}@6@ zqC3TN=a9$SxKO9{|W6%VNC37Jdknu^=gR8{C>2s`1J>E19Q&mphNUuQ_|D#3zh$A}i==D= z_9)9_9D@1(sp_l4qH5m17ZFfk4G<6zkrokgknT`Q>5iqlmvVt6 zC8WC+m+me_I^Kgm-`{n;`_JsmnYnA~%$b?b&0s;sq2G<#jJy1R)M}1WDCRnVx-&#q zqf#Pew-#tuv5}7_5dFv;R?2PTtnuCsn=*?52%DznXaVL$knD(C?%f^V^^<#POH|3) zCHszWPoUEt+g~^4Jbf3W?)Z-0<%hfBc8ar~`xD?eA}>Ay*EPs4$Dl$wMlo1zBuZeQ z>v{AQJ?0=f!z2!u9fMUwHQmgTol1qT`}HoI-SEv@`!w2qF|6jM&$0gk^Ks4|?g`*0 z9AmHhJ?lfYdA|jI_h%tODX?g*67q^ZW4^lL^D+qLVqqHrrId#)$lMeEz2lvKiF4({nPlmE@~J2J zJ_P3%ZNxo>X33jhzPH@`a?_kX3w)1+#OPk44LT_)2N++rAwpa0NOex^50S?sj|A4#=2BW{zj1~_Pd*Hsh}rFP>L)N9HE`1TUS)|ep>l9w7hGz#L+v$3kkOv z9ohS&Fk|8p&!xHC@zPw2-a7udm5^k7#LjF<(ZDbNqa(QWxlMy^mB_e! zCY(kYBHqXXo_}{EsV@V0!ad&+cf*Qz5Xv^@E{SQAPk2{TJDzWof2c@}MU*p?A}`8E zSNe#R5>Vksoq;X&Q|<0;UAH$7wI@9?g(e)7r%Ng~!bEf1MbBQk`J{0qWjP;b{)#~2 zJTQY3RiQNXVTQmLsjuLlc!-+DR%2U#V{b7GDs=1??x)u$4pzY=F`BJMZ|FJD`~mjb za-b7RbGq8Y&cuv^;ah4=xp7DX9sXqMrDAG|w@WKDjwM3*aGQ-CE~V)m$#f?*n3{ag z_5&~6-}6*V@3gCRFMwA;CmV=EVYz9*4{-4iDUX{!g~cj*2(uUeS_Xs9)GuEci_`a1!HiA}`}DqS zMZCd`Hd~|xt9-X3Y9!R*I`yn&=2wD-nEZ-Ql*U+0exEVVOh@*nbn#YiV(Uf-z{Z;) zq{*3+0$YA(a~~B;ps#NpbPBuDp4U3HO<-SDmPp}lQnh+s*JAOYcw!FO5Kq)CvQgBZ z3;d0~5$nf}p*Nl0e(vPfGnXeUv;JdVt1*fELS8nK4|l2wdP6$foGMpYa!&1NCG1){ zpstk~@+=C#7h0n#819wxXxHD9+&udU+QX)1k z3_>i+0({Wia^Hs_C`JvFyt-({#u1xgh$M>$&tx{fK}fAh@V(5Yy7{8@I!gIf*RfpS zsuBlE<=Mv{7f)^r^#qp$&`X;?`5-bP?f_nDp3ruSR*)=1aseOMNU2HIt-$*UABE7zNq)bhcG4A6|4g-GZVW{-D}=f@?JzP~39cWiYsxvaehS6&y5|*VkhX>h zV8UXxxw)Ea+dn#leht+Voc1(e#m{x1*scx0svNElBi@JMikk!+G2*N+uiu8Uy7-%J zV5JuE&d??T8wkDFz1JL8g=ekIS4dMFwX#4` z;$}e8ecrSw6qBqX`#imO?UXsDo{yddQ32+39%au5$ zZdaEsHrH$JNWR5z%+GYz72Njw;1c;(4F)GI%dTM82_L-U8>du98=PcwFbs7x{#7Ba zQ&&+Ug%32z*bD{BPU|^(#UJ>-?B?T0IHqc)Y{Xd_lS}HIo1~MXsY?T+ZdP-&;&N>G zLo$jI%!ac7SW)o1$wO-3!LeV}ADkcOZs2}$akOHjnG332vCKhw?Anrzqi|(DKmHj@ zeERwqs7s00NmjnMI@NboOP5T;KOOnAo;Ww^D-qBZ&yZZ@`)rDsJ995u+KEbP53zAj zzUd64z-3j`Uw#EV7mx0ol{@bsg=VDZ#+IBqds`gau-SeCghFGQ(C z%(2fSoXc{_o!5o12wfnk|Scl$ZnLP0G)Udg>T=`s?vai=#Gl(*ypmi$NWxHxAH zTv_I?W&_vh9>fTZLWtC5m^m~t5C6_LKNCOIsNJEFvo!@-)oKXm!XbS1N4B)3VO7Y2 zMSI8XJ+X0!%#1u;Y6*O^U71vWk7N`A+;{Gil)6HDrbcCD$uQwImWs-19_)_j*^NS8 zqnDRZf7?uLds~2I;D(ZrBizACA#f;}rPwHc-?yqy%h3={M;@pRed6{dhfNB?wVznAFw4~8d z{k3l#!2>SR?*txQx)v60sCvp`R!WjGHb3rQ(|b(vN7zalp7XOz@1IB8wfDWHC3$a0P^#J~x%VKMimR56pc>FhhVgV}T?K z$8A4HcKNT|Lokj}6j>?}2P^j0K%8S=DIBkAd-e~hcrK=NjjFzi@0aFV7|)^(wd(_Y zh?(rFE{=P-5=cH|3ha?p%6fVGK1^rL)Ag!)!5;kKGcZL=L74fB`1MnRl(I48upTx$ zMp8$TDdL9tnSyM_+1^~rO~iYQgFpI!y+E&LEkX+C!8`W{3`=JtjPri$s1fDZKd z!xN@Wgfiyv#-fI#VPiU6(?$#RMz#Q%@`}W+`s`P`nplX!7B@iyJQdOPw(g~F_2WZ+#4klhu)E`VWVE`M$vT3DM!O2n*6Dlg$_Qiv zua0E1t8|@8VBtc}(dvq19HoXokI%*PT~B)EK}ryRS(cUhop}zlv57;U;B9i=%b)7d z$5dcIegJKve8`dW0mTnimjncJ?T5!<$YwZYF>5kgCj12dg5w>NSWf#H;y;^+pGQ4Y<^IP}$XBo2vW7a+fg#&Z zytH0ynXTqeu_?(5`H*f;f+OWhC8M>O1)6L<3}bz6XsE{_>Lt+oYj&wfsVj&yhYQwr z;_E&ad1+$w(|cQ{_aHu7&-0P5TB$x@uR(Af8v^f1sh1UWynaRXmo}r&tHY z2=UpV1GIlRcO-UhT5a*bo@^tRm^AC)eK<0bui-UWG2He$FstlbbHO!ID`*($AZ!^z zy(t_l7z90G0x?P-5Ws)3_r9*R4WmcgE+)E&Las-46$NQvbW>zjv^-QWb5G7Mc;--+ zLlEp^a1g~X5#_^$fg0@<#crs=d$mL zbHaC6Z*Nl7$JX$r@=toD9(5E2lT;yx9u*y!{M2UOQOG_=AWIZZjErgzDcp}rllUG0 zj$y@CX~OirbIx(;1lEi5+oU21miYHtLL?Kovxz%R@-^wX1UBwTz2>G?*s0`YZ>Kn# zk$>{7t=ucEWLf_{ly&xWHa6EV?#+g70{oFDoz8N1HX|HqF7rp$=3A} zT^zF}IA(-B|ERyQL!y5qjz61C)K=}#oVs_MzwvoW6y?`fy}%s%9}XuDRAk|^ z3fL=p_sKa;Too*eRF*0ynVyxfdD}`<5wM)WMMU7a(dE+ZCw6dTx$tIqL;E(qrwxGcQyh)i3PLeqTx3I&@+Mz|Ep!$CG8=He*Z3S`Bx&WpA&&$* zkcUg8Nlk}GIAnvXs4pb1a&w(d-oB_SJqs>^Kfz<*Ne zl~EG`okBsm)x#tPzZSV7%DR!*j*=r;7{@`c=wZdl6ODQU{L^X$o5AvT^)p3nkXJ)BHs#%$= zAeb$dBk5?T``FR#B&A(|OYvc-q1GV;V%eGm=%ilkqA4d`6sPlly2Na$JZug;a8PP+ypxjW0_$*IdrZxs??XcMsugjgm< z6u`C7?|ZvO?G9sFTihXk&Jri5L@n&~sq*O5>>frG1~{Yn03&Jnhkc z&2jedHH!N_pXPgJO<<+WyKmE>uCnq<*V@Y?-0$QGCN)Q-$OO)Pv$X^o14j_^UGzfY zjLZ*Jxb!bs(9F@@Q^(GtQSf37{~_mAQv;%}?W~mD<+}-~I=R9AseE>Q7ap@r*8Imy z0CWr-lWwDA=C9#L!ywV{V$=ZXnwU^&mlyT)PU};H`(BPm-)Qgt_)@2`eBtP0*3x2C z{jPEq+u)i~J9DYu*wx^K1W%!>O6zPCk;|s5*mjuy4wOgZ9`>A%0FIFHW*EDkR2Jm??4!--Ei{)a?Ky&4!Pcb#` z$2phE!e#p9{@uKZCzoZuXbgK48)+tBW}lDWT)rj2PR^$k`J2>70ydU zAtV9HU^KqV4%GoTP26HtX+td4NJhx@c|ZMamh!8a0rPqb+Ly-m6^rLd^16e)^GA0I zo_d5`{Py-EJ<1AVHpmV+Vep=pjvmzA-|0*13}+uPy-4`1mXSsSG=Ob@s$TpVMdtA) zDe|D*X4v_30Bm2e8yyBW$do8|yw)4O43fxNiXlMZov=0nr=?^nS)2{*o$waFu(m z^~ybG;F^oe-C{~Ykst4K14eK0jhx6=QN0&{)KlI;;(+YHf*@&3y3lbqWAAzb%eAPl zSmvFM5ky?jO(?UCEOB$hA`vG*F zgbQf1Gk5pNv&x$~T;aB6*K!Tg09aVHpT+!+qb=PcEL~9#r8E<%|2}wGdl=jxRQ2j% zK;~1y?>bM^nf3Vy+ZZ3bRZ|_}x?zt)Lh=HqzenH(s|tBdMWa=F?6O?j)L*To_-+cc|2M)^ojhEH_%a;JlQUn2j6kEhOf5YVe%KtBY>OVS~ z|K;mN4l#pZOH@t)!+*p6|I%{@c2D^0+JE5zjx=;i(-h9yux#il%I?g+2|4RDCQZ8| z7>XkJb4}3Wt!b_>YA#~DL2V6E#?U*FMaxjMCSr>Ig}6@?|1IVj6Uhb^cL>qs1wr7# zC_OU8wD_x4uW{A!bJ3x?_EbS}_66+MHif;_!^e^%La)m(tk4;vj=)37&n4vUHI=SukErB}25OX41Qr^R4q=;mEY?xIn9T+|VeY@!mm+fC&bqGeYr&+&v zhpDN%^ES9fW5%KXiN~|Db=czN--0ks6pBA&u)F%;}UkiXoaY+Lf}k^9-#`YNRZ zGl^ZQqeIY3Kp;citOnCw>|2;2(OsVr2wzkV$~jcF|0BRKMFgaTnRq2xbbr&+b?(V8 z1R6dygFELC>bdj{brd=nm*X5t?G8#tmiyk{?5;tTVr&8nfe69(b*dx&4|UwFi#@w~ zvq+Ih3z!?GrbG;AC)SJN_aujE1nGjRd%952^DyT(7R)a(&k0HwYSxnj&iYP19Q%!UOgNDM^DP1S?D);5W2+BE zMT>jd9C3#s2}GbZrLy;WqK2|MEQF);`ugPCKymR7r=O=1$*(zLdE>}?Y8f5|Yp zSm%tM&DGbw#?*C3X!UnzfezrXYc|Epm+aeVg0!aJmIa5FZIiEyuwGMwazRI&+;QE` z)3B1U^f2E7K<}HTuA?r%$@{QH?D_Pdk<&jd>($}Hy6vq!gVQ>$_s1^Y;I2~lk6aY1aZ6lCEO~Q&S3C;o0zy*QT4}IAZbMsc|Zu zXM*|W{mpV^MLaf;_t)arboSy<4%@`%GR3tp0{FDgI7qHE4#U$o>-k7epjKisAr z9ql#euP6I2X9H(wz}wEtKk6p*pRWI>AEGB`&TMTbgHmZ%8+U)ZteJ!R0Ant--^bkk!L`Hc)EwC4~Tb)@!-CPE^Yj zzvadTs8)p{0*}?#xXI*d17fy(&r=5SY@AvL^7eT^GU773!qjep5NC&OnIG-4iYi@6)SVNqtd= zKPg#y|Gm20Xm#x6n`&dSvnaI$Gh82UJapAvj^fP2US73EoS2snSSVW z=XdML37f;*lE(3{b^g(@r>=Y$Cdl?qPd@K&6%GTlTcA0dPE?=$^f%&?@FEDj`xUSl zq?Y20l+9yR#rwU!z)G?jL{S)^z_9+N>AvI1x|~+ysJ~IHR_kkLEm_}yB0mu5u@7{T z;HoZTXaCzDN4P|+ffKkYM7P0 zi{yQKoe61S?xmmYK{Ai*_2Bg5f>|h5Ow5R_I$PjcQfT$y)1R)9yCbvzBlCS;QS^ke zs;LCx{Je?d!4b^2FO%X+&d`H`00DJuRYIN#!kHTX*V#1@rgN%nhXHZ^2uZ8e1X z>v-%El=`dKYb4J1#Rz!aN6q3pG@jq5u+Y!PeQzhYPhC(V5CKc%L~s;&27qW zjRMVi-~0Z!msFplB6S0$UdSE{#vq$Dh5~~RBH%fG@89g&vzIcT2h^tov5i1eL1V=9%!Z8g!osG`_pFNWzq9akMTsZHO;qOIAo-bNZTHp>a=BkMC4KI1o3 zp`H5JQikW)>_4qTe3UtTrps(0>f<;*Kt3;YrWlWVP%8&*hxMO9qoSS`#iA-s$J z3uy38FH)UVt8h>3W6tT*bKTYAEQ9Y~@e2!Hrs!g!Y&zqz0>{tTzd&)14{l8Ox7xW` zjalB!Lnt?bfHosKNHjG7iFOn=`>l26j2^GvX|Iv*;}!q0^+Cbk-^8>R<#vhL-~o?z ztzcDtQ&WkN-Q8QqE29nM_lCN$i&WHn-#;;}zHZ*UZl4^HCnD-U_y*|_p3!u?Y$LUK zs55k~-AY8gsDPdZdZjA1DmLE=d4jVEC9=wP)ubl8rbW7I`23~tj}C+{nD$to6nNdU%A(L*q1yaZ=byMi7P+LY){Ce{ zlVkUpN`Ok={dHT6+8em)r z*PXLQ3h-fS5bSYO2QYO=!1&H8B83F*X6NQgIwFW6>02})^-6=IOgxj@?f9mgwk3UU zvPs}v65wnFg_qr_vdFT2KG>f9foqMz#Jr1etUq##sUZ4hqfjGla!n{E;G}KjE zEa5Dj`T!X`nJ^uG9a?o&Z0mNyu*iMDLp7L)>k8bGPcP7IhM5daQoRA^Ww?|ARA zIg^MhbNmZ=}`g_<(xZ#;1d6Y{MdK3G(J!5~c{9GjyeJ7=R^W((poRUV zyh3|{R1Xq+IOxh3gGG*7guwnnYcF7lXQ^aMd1iE1BHi4>vWabfNPnw8$nbpe0YNj`-9z+kO(kWZcC?o7|aH*6NA zad@TYBFEDDOi=MZQJIOOVHj$#3uVyV^taoMXCo!aNad{x{BJUI2|oZEGIY@$}(|N8eQP4}_Pg?{f_(;*TPmiGHNL)RpcY_jz-Bije-#mUda% zmg4$FTO)i=5+~j9Mn_P_J7ces8gn}8pOE7$(4gQa=Zr^Ad&#iMNoSxuDW1>xZN7y9 zMP3=al#D&8>oP~5e^~rU)`_@rhHSoj{k)29BFF4y86FD$Q4YxP8GO4kF%!~D?9W0t z7uX<_j{^d|0v*R)eky5hhY<&Uuf@ec3i0%(KLHMfZx}L zob&DG8pro3h@8C7&J82XQ+AwMqB5SCVUqMZ(AfW%I!GyJetQt+gZ@_(kVN~21BJfn z)4v1@|G(7q|0vl1BM7MSmreiMzii(9f2rdCQCRs$5OCsb?rLbbq!=oOJUILHy(7rc;lmB z`1$vp`lf-LeZy17ldC`54hWJO@Bri;CZD6!WTrpqe3M&@=1rsdpZaOhQaf{OnqCs^ zujuxD+u!!JlQwBP_RcQz{O-<`3srXlY(1t4^qM;ftQ1;&x!P~BfABlU!Job&OX=*^ zRN^*YeT0xD-?brh+z^zlJ7tjn^>R)lVO@TzsAE~)l$H5p=JZvL(|%brYlWpFd$0 zu>l`{re}W~yej08(M<__lx~B|B5!L^KAWLQ&2fAL(Kvin@yJ9~eF?g#vAPydBhe2~ zvJZ<)v&v#$S6t{KEcz6Fj2mT_tJmJQuuctK%RF(|k`d!g!X>$2T|vy~+aG+RVgm%z zmA6yuY=kdN&&%d=-Iazcd9du8?CGHfw*cKoBkCEbBYt5=3V2C}mX(Z{{;DYEGzmHq z`fQKdyB9^+^u8Z@$_iD;_|T6k*pBk&osMOo7x^V`@|u_19-@jIVxqnG`usUyg{*4> z2z*G#^C0|fMT;kIcl(QKDQoES73|Bcd{1P~#BXWgDEsaCzCl8>t&-bGcDZTJzot;d zY1PIhwV2L>wfe%lkxWGr@9tjmV4hzD#6u@z{v-Xj=GC&BQ3{cbl1?ueJA8uOzH+)7 zr7V&SY(kS3@s6?cF3$z+EQ1zr$|JZEyNaM{_4BxVInJ0J(|B|FXT`6Vb&R+$0o!^r zAJlEoPjEMC&MyCEWMLZR)RLyA_cI z#vKk{IMBJRS~ME84CZd<6w^*p8|ST zChI1|j5oc+9OQt0D|(LAV1clKN){!ohmOO-mY^WBchz~K_m+oHi)&pc)&>>{vd)Xo zFwdgA5=Hp;&k0Cqd>wU9Tw<1>@GhMA6e)+7l|~eqvJ$uUTLDG@1{$DA3R6LqyNAYN zW`Zm^sD(9EZC}bRTb|;8<(v)^($23yG;n_ZA z!mJP;xbXJKV3>*^?akf&j!@xy!qVVk?;>=+ifjI-dtyre8-sS)w)|vthCi&PIeZZM z$*{imz*^k_e3=&Q$YTy(<$lz^5y$(7j_}I^fd>a^E=~d!Uw|#sF9>4=uu}?r&{XZ# z{=0_(fBb?xA6{@_m?g3>WCTo9cKrj9@leu*RbT`KfN+2jG;d1d(dd!y2RCLoV;uAb z(!5n*?#f(NsxZr0gW>cE#nw9`dk2aT4ry!27<=~IrO!{7v8h!v7!XzNz|a`Z(6Y(e zw?diNu%Ki(c362Wl!uf`mF{-s65<{w03x%Lm;sC?<_EuA?ccgq)u=>6-HM5KDc;1T z&S<d44eGNG@oyNakX`uYBAMXHxb{z^%*9g=mJzIFg*PKWEWVohd& z?QDhi$xYfUed^!$$y)sa>}F~-0E|ijMn(>b^+LjZ;{6wWD&uyWs29<^RPP0&tOJb# zL#rGt_jB|+Ged5Vu{Bt?jBD9x4Be09I}kbe(QH3H#5Eh-i#DMl%RGY;rC$0;qgPyP zQX_c7z}l*SmG7nJ-#Tmwe-sAPCf-tPVBRfL>KZ4atIlrG2~quo&0sburZ*@1lg1hCFuHd{b_ zQ>A9_9nc=XE7^`q8Ry#on`7t&9nP%^+C=MuaHc(Z{+rR2*DZ1I zaVv1Vy<(B@7t>A>tq?XZ&>0k7^XSvNXyvbQbRkgV<(z?njKPBC-S-q%0{8L8lEHzZi_Jr z&H#h9Dn>iM8E@3Vkl--(Ohe4!7i+tc9Ljs=M6?=M``+NI*mcQa@%0c~h!xXw&qRK(oG%-44&rJw?v0BKQsh&#HIiEggm)Ejk7y zEAMOUy!1K zYa5rQ7P?Auvs&-x3hBC;>}7B7i%W1EHv*IR+*?#^oAsf_o#y=)>OL@D})tRc4&rV^*cIjiyh7MjlmxNHe4i~s5n*Y?7U zy@OEFx8F*Ia#PTR4{;!xlKkymius8r3!SMli%;#;LpArfz2K``XV{ymiSh#2l#cd1 zPkG5sh|ifCNRyI~mTLNS9}z}@Z<}9Bh$0M~nbi=Dmyzk9YWoUOF*yhqyh$OyT3oh- z9ktEQ%vhgFm7G=>;ce&KaS#m)Tb8}@_2XdkCRS$Ypg1`1nSc`pnEYf2@5ot6JEp(Sl#(Y zH_KwyIJ*~z-`WG}pwa!F#ZRW|WTV&O0}2@FPizGI zdPlvcp@cA%bSs+Z3UDHIy(zCV+5LxI_Ju20LjrkWv>Im1aP#w1La&EW%yuu2#0r@B z%9i{=@>`mSXD{2-_<4Pxi>?@5CIq7Se3C3!927k zNPsn~m#WME@BbK|Lsv8VUF#?~$S$%3oviXVeZ||oPoe*G`JkhwPj(OrC;908^GQ-Zkiak}| z)3O6MPF5OHgY@rx`7|$vTXyv=;|(EAiVdMWJ^&%jn%0bZ;BVbZ3#bgB@f$tpy7(-* X(?TZpYGsrJ1pH*Blq8X_^*{eV@9`~| diff --git a/Assets/Images/algo-book-light.png b/Assets/Images/algo-book-light.png deleted file mode 100644 index 6bfc61912ce736a2c74f7154eeccb269df3df946..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275996 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π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 ZKDldGPv1|$8m#znR20<}06DXe{|m?{&~g9( diff --git a/Assets/Origins/Categories-List.md b/Assets/Origins/Categories-List.md deleted file mode 100644 index 4b27c52e..00000000 --- a/Assets/Origins/Categories-List.md +++ /dev/null @@ -1,338 +0,0 @@ -## 01. 数组 - -### [数组基础题目](../../Contents/01.Array/01.Array-Basic/02.Array-Basic-List.md) - -#### 数组操作题目 - -###### 0189. 轮转数组、0066. 加一、0724. 寻找数组的中心下标、0485. 最大连续 1 的个数、0238. 除自身以外数组的乘积 - -#### 二维数组题目 - -###### 0498. 对角线遍历、0048. 旋转图像、0073. 矩阵置零、0054. 螺旋矩阵、0059. 螺旋矩阵 II、0289. 生命游戏 - -### [排序算法题目](../../Contents/01.Array/02.Array-Sort/11.Array-Sort-List.md) - -#### 冒泡排序题目 - -###### 剑指 Offer 45. 把数组排成最小的数、0283. 移动零 - -#### 选择排序题目 - -###### 0215. 数组中的第K个最大元素 - -#### 插入排序题目 - -###### 0075. 颜色分类 - -#### 希尔排序题目 - -###### 0912. 排序数组、0506. 相对名次 - -#### 归并排序题目 - -###### 0912. 排序数组、0088. 合并两个有序数组、剑指 Offer 51. 数组中的逆序对、0315. 计算右侧小于当前元素的个数 - -#### 快速排序题目 - -###### 0912. 排序数组、0169. 多数元素 - -#### 堆排序题目 - -###### 0912. 排序数组、0215. 数组中的第K个最大元素、剑指 Offer 40. 最小的k个数 - -#### 计数排序题目 - -###### 0912. 排序数组、1122. 数组的相对排序 - -#### 桶排序题目 - -###### 0912. 排序数组、0220. 存在重复元素 III、0164. 最大间距 - -#### 基数排序题目 - -###### 0164. 最大间距、0561. 数组拆分 - -#### 其他排序题目 - -###### 0217. 存在重复元素、0136. 只出现一次的数字、0056. 合并区间、0179. 最大数、0384. 打乱数组、剑指 Offer 45. 把数组排成最小的数 - - -### [二分查找题目](../../Contents/01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md) - -#### 二分下标题目 - -###### 0704. 二分查找、0374. 猜数字大小、0035. 搜索插入位置、0034. 在排序数组中查找元素的第一个和最后一个位置、0167. 两数之和 II - 输入有序数组、0153. 寻找旋转排序数组中的最小值、0154. 寻找旋转排序数组中的最小值 II、0033. 搜索旋转排序数组、0081. 搜索旋转排序数组 II、0278. 第一个错误的版本、0162. 寻找峰值、0852. 山脉数组的峰顶索引、1095. 山脉数组中查找目标值、0744. 寻找比目标字母大的最小字母、0004. 寻找两个正序数组的中位数、0074. 搜索二维矩阵、0240. 搜索二维矩阵 II - -#### 二分答案题目 - -###### 0069. x 的平方根、0287. 寻找重复数、0050. Pow(x, n)、0367. 有效的完全平方数、1300. 转变数组后最接近目标值的数组和、0400. 第 N 位数字 - -#### 复杂的二分查找问题 - -###### 0875. 爱吃香蕉的珂珂、0410. 分割数组的最大值、0209. 长度最小的子数组、0658. 找到 K 个最接近的元素、0270. 最接近的二叉搜索树值、0702. 搜索长度未知的有序数组、0349. 两个数组的交集、0350. 两个数组的交集 II、0287. 寻找重复数、0719. 找出第 K 小的数对距离、0259. 较小的三数之和、1011. 在 D 天内送达包裹的能力、1482. 制作 m 束花所需的最少天数 - -### [双指针题目](../../Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md) - -#### 对撞指针题目 - -###### 0167. 两数之和 II - 输入有序数组、0344. 反转字符串、0345. 反转字符串中的元音字母、0125. 验证回文串、0011. 盛最多水的容器、0611. 有效三角形的个数、0015. 三数之和、0016. 最接近的三数之和、0018. 四数之和、0259. 较小的三数之和、0658. 找到 K 个最接近的元素、1099. 小于 K 的两数之和、0075. 颜色分类、0360. 有序转化数组、0977. 有序数组的平方、0881. 救生艇、0042. 接雨水、0443. 压缩字符串 - -#### 快慢指针题目 - -###### 0026. 删除有序数组中的重复项、0080. 删除有序数组中的重复项 II、0027. 移除元素、0283. 移动零、0845. 数组中的最长山脉、0088. 合并两个有序数组、0719. 找出第 K 小的数对距离、0334. 递增的三元子序列、0978. 最长湍流子数组、剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 - -#### 分离双指针题目 - -###### 0350. 两个数组的交集 II、0925. 长按键入、0844. 比较含退格的字符串、1229. 安排会议日程、0415. 字符串相加、0392. 判断子序列 - -### [滑动窗口题目](../../Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) - -#### 固定长度窗口题目 - -###### 1343. 大小为 K 且平均值大于等于阈值的子数组数目、0643. 子数组最大平均数 I、1052. 爱生气的书店老板、1423. 可获得的最大点数、1456. 定长子串中元音的最大数目、0567. 字符串的排列、1100. 长度为 K 的无重复字符子串、1151. 最少交换次数来组合所有的 1、1176. 健身计划评估、0438. 找到字符串中所有字母异位词、0995. K 连续位的最小翻转次数、0683. K 个关闭的灯泡、0220. 存在重复元素 III、0239. 滑动窗口最大值、0480. 滑动窗口中位数 - -#### 不定长度窗口题目 - -###### 0674. 最长连续递增序列、0485. 最大连续 1 的个数、0487. 最大连续1的个数 II、0076. 最小覆盖子串、0718. 最长重复子数组、0209. 长度最小的子数组、1004. 最大连续1的个数 III、1658. 将 x 减到 0 的最小操作数、0424. 替换后的最长重复字符、0003. 无重复字符的最长子串、1695. 删除子数组的最大得分、1208. 尽可能使字符串相等、1493. 删掉一个元素以后全为 1 的最长子数组、0727. 最小窗口子序列、0159. 至多包含两个不同字符的最长子串、0340. 至多包含 K 个不同字符的最长子串、0795. 区间子数组个数、0992. K 个不同整数的子数组、0713. 乘积小于 K 的子数组、0904. 水果成篮、1358. 包含所有三种字符的子字符串数目、0467. 环绕字符串中唯一的子字符串、1438. 绝对差不超过限制的最长连续子数组 - -## 02. 链表 - -### [链表经典题目](../../Contents/02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md) - -###### 0707. 设计链表、0083. 删除排序链表中的重复元素、0082. 删除排序链表中的重复元素 II、0206. 反转链表、0092. 反转链表 II、0025. K 个一组翻转链表、0203. 移除链表元素、0328. 奇偶链表、0234. 回文链表、0430. 扁平化多级双向链表、0138. 复制带随机指针的链表、0061. 旋转链表 - -### [链表排序题目](../../Contents/02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md) - -###### 0148. 排序链表、0021. 合并两个有序链表、0023. 合并 K 个升序链表、0147. 对链表进行插入排序 - -### [链表双指针题目](../../Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md) - -###### 0141. 环形链表、0142. 环形链表 II、0160. 相交链表、0019. 删除链表的倒数第 N 个结点、0876. 链表的中间结点、剑指 Offer 22. 链表中倒数第k个节点、0143. 重排链表、0002. 两数相加、0445. 两数相加 II - -## 03. 堆栈 - -### [堆栈基础题目](../../Contents/03.Stack/01.Stack-Basic/02.Stack-Basic-List.md) - -###### 1047. 删除字符串中的所有相邻重复项、0155. 最小栈、0020. 有效的括号、0227. 基本计算器 II、0739. 每日温度、0150. 逆波兰表达式求值、0232. 用栈实现队列、剑指 Offer 09. 用两个栈实现队列、0394. 字符串解码、0032. 最长有效括号、0946. 验证栈序列、剑指 Offer 06. 从尾到头打印链表、0071. 简化路径 - -### [单调栈](../../Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) - -###### 0739. 每日温度、0496. 下一个更大元素 I、0503. 下一个更大元素 II、0901. 股票价格跨度、0084. 柱状图中最大的矩形、0316. 去除重复字母、0042. 接雨水、0085. 最大矩形、0862. 和至少为 K 的最短子数组 - -## 04. 队列 - -### [队列基础题目](../../Contents/04.Queue/01.Queue-Basic/02.Queue-Basic-List.md) - -###### 0622. 设计循环队列、0346. 数据流中的移动平均值、0225. 用队列实现栈 - -### [优先队列题目](../../Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md) - -###### 0703. 数据流中的第 K 大元素、0347. 前 K 个高频元素、0451. 根据字符出现频率排序、0973. 最接近原点的 K 个点、1296. 划分数组为连续数字的集合、0239. 滑动窗口最大值、0295. 数据流的中位数、0023. 合并 K 个升序链表、0218. 天际线问题 - -## 05. 哈希表 - -### [哈希表题目](../../Contents/05.Hash-Table/02.Hash-Table-List.md) - -###### 0705. 设计哈希集合、0706. 设计哈希映射、0217. 存在重复元素、0219. 存在重复元素 II、0220. 存在重复元素 III、1941. 检查是否所有字符出现次数相同、0136. 只出现一次的数字、0383. 赎金信、0349. 两个数组的交集、0350. 两个数组的交集 II、0036. 有效的数独、0001. 两数之和、0015. 三数之和、0018. 四数之和、0454. 四数相加 II、0041. 缺失的第一个正数、0128. 最长连续序列、0202. 快乐数、0242. 有效的字母异位词、0205. 同构字符串、0442. 数组中重复的数据、剑指 Offer 61. 扑克牌中的顺子、0268. 丢失的数字、剑指 Offer 03. 数组中重复的数字、0451. 根据字符出现频率排序、0049. 字母异位词分组、0599. 两个列表的最小索引总和、0387. 字符串中的第一个唯一字符、0447. 回旋镖的数量、0149. 直线上最多的点数、0359. 日志速率限制器、0811. 子域名访问计数 - -## 06. 字符串 - -### [字符串基础题目](../../Contents/06.String/01.String-Basic/02.String-Basic-List.md) - -###### 0125. 验证回文串、0005. 最长回文子串、0003. 无重复字符的最长子串、0344. 反转字符串、0557. 反转字符串中的单词 III、0049. 字母异位词分组、0415. 字符串相加、0151. 反转字符串中的单词、0043. 字符串相乘、0014. 最长公共前缀 - -### [单模式串匹配题目](../../Contents/06.String/02.String-Single-Pattern-Matching/07.String-Single-Pattern-Matching-List.md) - -###### 0028. 找出字符串中第一个匹配项的下标、0459. 重复的子字符串、0686. 重复叠加字符串匹配、1668. 最大重复子字符串、0796. 旋转字符串、1408. 数组中的字符串匹配、2156. 查找给定哈希值的子串 - -### [字典树题目](../../Contents/06.String/03.String-Multi-Pattern-Matching/02.Trie-List.md) - -###### 0208. 实现 Trie (前缀树)、0677. 键值映射、0648. 单词替换、0642. 设计搜索自动补全系统、0211. 添加与搜索单词 - 数据结构设计、0421. 数组中两个数的最大异或值、0212. 单词搜索 II、0425. 单词方块、0336. 回文对、1023. 驼峰式匹配、0676. 实现一个魔法字典、0440. 字典序的第K小数字 - -## 07. 树 - -### [二叉树的遍历题目](../../Contents/07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md) - -###### 0144. 二叉树的前序遍历、0094. 二叉树的中序遍历、0145. 二叉树的后序遍历、0102. 二叉树的层序遍历、0103. 二叉树的锯齿形层序遍历、0107. 二叉树的层序遍历 II、0104. 二叉树的最大深度、0111. 二叉树的最小深度、0124. 二叉树中的最大路径和、0101. 对称二叉树、0112. 路径总和、0113. 路径总和 II、0236. 二叉树的最近公共祖先、0199. 二叉树的右视图、0226. 翻转二叉树、0958. 二叉树的完全性检验、0572. 另一棵树的子树、0100. 相同的树、0116. 填充每个节点的下一个右侧节点指针、0117. 填充每个节点的下一个右侧节点指针 II、0297. 二叉树的序列化与反序列化、0114. 二叉树展开为链表 - -### [二叉树的还原题目](../../Contents/07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md) - -###### 0105. 从前序与中序遍历序列构造二叉树、0106. 从中序与后序遍历序列构造二叉树、0889. 根据前序和后序遍历构造二叉树 - -### [二叉搜索树题目](../../Contents/07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md) - -###### 0098. 验证二叉搜索树、0173. 二叉搜索树迭代器、0700. 二叉搜索树中的搜索、0701. 二叉搜索树中的插入操作、0450. 删除二叉搜索树中的节点、0703. 数据流中的第 K 大元素、剑指 Offer 54. 二叉搜索树的第k大节点、0230. 二叉搜索树中第K小的元素、0235. 二叉搜索树的最近公共祖先、0426. 将二叉搜索树转化为排序的双向链表、0108. 将有序数组转换为二叉搜索树、0110. 平衡二叉树 - -### [线段树题目](../../Contents/07.Tree/03.Segment-Tree/02.Segment-Tree-List.md) - -#### 单点更新题目 - -###### 0303. 区域和检索 - 数组不可变、0307. 区域和检索 - 数组可修改、0354. 俄罗斯套娃信封问题 - -#### 区间更新题目 - -###### 0370. 区间加法、1109. 航班预订统计、1450. 在既定时间做作业的学生人数、0673. 最长递增子序列的个数、1310. 子数组异或查询、1851. 包含每个查询的最小区间 - -#### 区间合并题目 - -###### 0729. 我的日程安排表 I、0731. 我的日程安排表 II、0732. 我的日程安排表 III - -#### 扫描线问题 - -###### 0218. 天际线问题、0391. 完美矩形、0850. 矩形面积 II - -### [树状数组题目](../../Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md) - -###### 0303. 区域和检索 - 数组不可变、0307. 区域和检索 - 数组可修改、0315. 计算右侧小于当前元素的个数、1450. 在既定时间做作业的学生人数、0354. 俄罗斯套娃信封问题、0673. 最长递增子序列的个数、1310. 子数组异或查询、1893. 检查是否区域内所有整数都被覆盖 - -### [并查集题目](../../Contents/07.Tree/05.Union-Find/02.Union-Find-List.md) - -###### 0990. 等式方程的可满足性、0547. 省份数量、0684. 冗余连接、1319. 连通网络的操作次数、0765. 情侣牵手、0399. 除法求值、0959. 由斜杠划分区域、1631. 最小体力消耗路径、0778. 水位上升的泳池中游泳、1202. 交换字符串中的元素、0947. 移除最多的同行或同列石头、0803. 打砖块、0128. 最长连续序列 - -## 08. 图论 - -### [图的深度优先搜索题目](../../Contents/08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md) - -###### 0797. 所有可能的路径、0200. 岛屿数量、0695. 岛屿的最大面积、0133. 克隆图、0494. 目标和、0144. 二叉树的前序遍历、0094. 二叉树的中序遍历、0145. 二叉树的后序遍历、0589. N 叉树的前序遍历、0590. N 叉树的后序遍历、0124. 二叉树中的最大路径和、0199. 二叉树的右视图、0543. 二叉树的直径、0662. 二叉树最大宽度、0958. 二叉树的完全性检验、0572. 另一棵树的子树、0100. 相同的树、0111. 二叉树的最小深度、0841. 钥匙和房间、0129. 求根节点到叶节点数字之和、0323. 无向图中连通分量的数目、0684. 冗余连接、0802. 找到最终的安全状态、0785. 判断二分图、0886. 可能的二分法、0323. 无向图中连通分量的数目、0130. 被围绕的区域、0417. 太平洋大西洋水流问题、1020. 飞地的数量、1254. 统计封闭岛屿的数目、1034. 边界着色、剑指 Offer 13. 机器人的运动范围、0529. 扫雷游戏 - -### [图的广度优先搜索题目](../../Contents/08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md) - -###### 0797. 所有可能的路径、0286. 墙与门、0200. 岛屿数量、0752. 打开转盘锁、0279. 完全平方数、0133. 克隆图、0733. 图像渲染、0542. 01 矩阵、0322. 零钱兑换、0323. 无向图中连通分量的数目、剑指 Offer 13. 机器人的运动范围、0199. 二叉树的右视图、0662. 二叉树最大宽度、0958. 二叉树的完全性检验、0572. 另一棵树的子树、0100. 相同的树、0111. 二叉树的最小深度、剑指 Offer 32 - III. 从上到下打印二叉树 III - -### [图的拓扑排序题目](../../Contents/08.Graph/02.Graph-Traversal/06.Graph-Topological-Sorting-List.md) - -###### 0207. 课程表、0210. 课程表 II、1136. 并行课程、2050. 并行课程 III、0802. 找到最终的安全状态、0851. 喧闹和富有 - -### [图的最小生成树题目](../../Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md) - -###### 1584. 连接所有点的最小费用、1631. 最小体力消耗路径、0778. 水位上升的泳池中游泳 - -### [单源最短路径题目](../../Contents/08.Graph/04.Graph-Shortest-Path/03.Graph-Single-Source-Shortest-Path-List.md) - -###### 0407. 接雨水 II、0743. 网络延迟时间、0787. K 站中转内最便宜的航班、1631. 最小体力消耗路径、1786. 从第一个节点出发到最后一个节点的受限路径数 - -### [多源最短路径题目](../../Contents/08.Graph/04.Graph-Shortest-Path/05.Graph-Multi-Source-Shortest-Path-List.md) - -###### 0815. 公交路线、1162. 地图分析 - -### [次短路径题目](../../Contents/08.Graph/04.Graph-Shortest-Path/07.Graph-The-Second-Shortest-Path-List.md) - -###### 2045. 到达目的地的第二短时间 - -### [差分约束系统](../../Contents/08.Graph/04.Graph-Shortest-Path/09.Graph-System-Of-Difference-Constraints-List.md) - -###### 0995. K 连续位的最小翻转次数、1109. 航班预订统计 - -### [二分图基础题目](../../Contents/08.Graph/05.Graph-Bipartite/02.Graph-Bipartite-Basic-List.md) - -###### 0785. 判断二分图 - -### [二分图最大匹配题目](../../Contents/08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md) - -###### LCP 04. 覆盖、1947. 最大兼容性评分和、1595. 连通两组点的最小成本 - -## 09. 基础算法 - -### [枚举算法题目](../../Contents/09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md) - -###### 0001. 两数之和、0204. 计数质数、1925. 统计平方和三元组的数目、1450. 在既定时间做作业的学生人数、1620. 网络信号最好的坐标、剑指 Offer 57 - II. 和为s的连续正数序列、0800. 相似 RGB 颜色、0221. 最大正方形、0560. 和为 K 的子数组 - -### [递归算法题目](../../Contents/09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md) - -###### 0344. 反转字符串、0024. 两两交换链表中的节点、0118. 杨辉三角、0119. 杨辉三角 II、0206. 反转链表、0092. 反转链表 II、0021. 合并两个有序链表、0509. 斐波那契数、0070. 爬楼梯、0104. 二叉树的最大深度、0124. 二叉树中的最大路径和、0226. 翻转二叉树、0050. Pow(x, n)、0779. 第K个语法符号、0095. 不同的二叉搜索树 II、剑指 Offer 62. 圆圈中最后剩下的数字 - -### [分治算法题目](../../Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md) - -###### 0004. 寻找两个正序数组的中位数、0023. 合并 K 个升序链表、0053. 最大子数组和、0241. 为运算表达式设计优先级、0169. 多数元素、0050. Pow(x, n)、0014. 最长公共前缀、剑指 Offer 33. 二叉搜索树的后序遍历序列 - -### [回溯算法题目](../../Contents/09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md) - -###### 0046. 全排列、0047. 全排列 II、0037. 解数独、0022. 括号生成、0017. 电话号码的字母组合、0784. 字母大小写全排列、0039. 组合总和、0040. 组合总和 II、0078. 子集、0090. 子集 II、0473. 火柴拼正方形、1593. 拆分字符串使唯一子字符串的数目最大、1079. 活字印刷、0093. 复原 IP 地址、0079. 单词搜索、0679. 24 点游戏 - -### [贪心算法题目](../../Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md) - -###### 0455. 分发饼干、0860. 柠檬水找零、0056. 合并区间、0435. 无重叠区间、0452. 用最少数量的箭引爆气球、0055. 跳跃游戏、0045. 跳跃游戏 II、0122. 买卖股票的最佳时机 II、0561. 数组拆分、1710. 卡车上的最大单元数、1217. 玩筹码、1247. 交换字符使得字符串相同、1400. 构造 K 个回文字符串、0921. 使括号有效的最少添加、1029. 两地调度、1605. 给定行和列的和求可行矩阵、0135. 分发糖果、0134. 加油站、0053. 最大子数组和、0376. 摆动序列、0738. 单调递增的数字、0402. 移掉 K 位数字、0861. 翻转矩阵后的得分、0670. 最大交换 - -### [位运算题目](../../Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) - -###### 0504. 七进制数、0405. 数字转换为十六进制数、0190. 颠倒二进制位、1009. 十进制整数的反码、0191. 位1的个数、0371. 两整数之和、0089. 格雷编码、0201. 数字范围按位与、0338. 比特位计数、0136. 只出现一次的数字、0137. 只出现一次的数字 II、0260. 只出现一次的数字 III、0268. 丢失的数字、1349. 参加考试的最大学生数、0645. 错误的集合、0078. 子集、0090. 子集 II - -## 10. 动态规划 - -### [动态规划基础题目](../../Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md) - -###### 0509. 斐波那契数、0070. 爬楼梯、0062. 不同路径 - -### [记忆化搜索题目](../../Contents/10.Dynamic-Programming/02.Memoization/02.Memoization-List.md) - -###### 1137. 第 N 个泰波那契数、0375. 猜数字大小 II、0494. 目标和、0576. 出界的路径数、0087. 扰乱字符串、0403. 青蛙过河、0552. 学生出勤记录 II、0913. 猫和老鼠、0329. 矩阵中的最长递增路径 - -### [线性 DP 题目](../../Contents/10.Dynamic-Programming/03.Linear-DP/03.Linear-DP-List.md) - -#### 单串线性 DP 问题 - -###### 0300. 最长递增子序列、0673. 最长递增子序列的个数、0354. 俄罗斯套娃信封问题、0053. 最大子数组和、0152. 乘积最大子数组、0918. 环形子数组的最大和、0198. 打家劫舍、0213. 打家劫舍 II、0740. 删除并获得点数、1388. 3n 块披萨、0873. 最长的斐波那契子序列的长度、1027. 最长等差数列、1055. 形成字符串的最短路径、0368. 最大整除子集、0032. 最长有效括号、0413. 等差数列划分、0091. 解码方法、0639. 解码方法 II、0132. 分割回文串 II、1220. 统计元音字母序列的数目、0338. 比特位计数、0801. 使序列递增的最小交换次数、0871. 最低加油次数、0045. 跳跃游戏 II、0813. 最大平均值和的分组、0887. 鸡蛋掉落、0256. 粉刷房子、0265. 粉刷房子 II、1473. 粉刷房子 III、0975. 奇偶跳、0403. 青蛙过河、1478. 安排邮筒、1230. 抛掷硬币、0410. 分割数组的最大值、1751. 最多可以参加的会议数目 II、1787. 使所有区间的异或结果为零、0121. 买卖股票的最佳时机、0122. 买卖股票的最佳时机 II、0123. 买卖股票的最佳时机 III、0188. 买卖股票的最佳时机 IV、0309. 最佳买卖股票时机含冷冻期、0714. 买卖股票的最佳时机含手续费 - -#### 双串线性 DP 问题 - -###### 1143. 最长公共子序列、0712. 两个字符串的最小ASCII删除和、0718. 最长重复子数组、0583. 两个字符串的删除操作、0072. 编辑距离、0044. 通配符匹配、0010. 正则表达式匹配、0097. 交错字符串、0115. 不同的子序列、0087. 扰乱字符串 - -#### 矩阵线性 DP 问题 - -###### 0118. 杨辉三角、0119. 杨辉三角 II、0120. 三角形最小路径和、0064. 最小路径和、0174. 地下城游戏、0221. 最大正方形、0931. 下降路径最小和、0576. 出界的路径数、0085. 最大矩形、0363. 矩形区域不超过 K 的最大数值和、面试题 17.24. 最大子矩阵、1444. 切披萨的方案数 - -#### 无串线性 DP 问题 - -###### 1137. 第 N 个泰波那契数、0650. 只有两个键的键盘、0264. 丑数 II、0279. 完全平方数、0343. 整数拆分 - -### [背包问题题目](../../Contents/10.Dynamic-Programming/04.Knapsack-Problem/06.Knapsack-Problem-List.md) - -#### 0-1 背包问题 - -###### 0416. 分割等和子集、0494. 目标和、1049. 最后一块石头的重量 II - -#### 完全背包问题 - -###### 0279. 完全平方数、0322. 零钱兑换、0518. 零钱兑换 II、0139. 单词拆分、0377. 组合总和 Ⅳ、0638. 大礼包、1449. 数位成本和为目标值的最大数字 - -#### 多重背包问题 - -#### 分组背包问题 - -###### 1155. 掷骰子等于目标和的方法数、2585. 获得分数的方法数 - -#### 多维背包问题 - -###### 0474. 一和零、0879. 盈利计划、1995. 统计特殊四元组 - -### [区间 DP 题目](../../Contents/10.Dynamic-Programming/05.Interval-DP/02.Interval-DP-List.md) - -###### 0486. 预测赢家、0312. 戳气球、0877. 石子游戏、1000. 合并石头的最低成本、1547. 切棍子的最小成本、0664. 奇怪的打印机、1039. 多边形三角剖分的最低得分、0546. 移除盒子、0375. 猜数字大小 II、0678. 有效的括号字符串、0005. 最长回文子串、0516. 最长回文子序列、0730. 统计不同回文子序列、2104. 子数组范围和 - -### [树形 DP 题目](../../Contents/10.Dynamic-Programming/06.Tree-DP/02.Tree-DP-List.md) - -#### 固定根的树形 DP 题目 - -###### 0543. 二叉树的直径、0124. 二叉树中的最大路径和、1245. 树的直径、2246. 相邻字符不同的最长路径、0687. 最长同值路径、0337. 打家劫舍 III、0333. 最大 BST 子树、1617. 统计子树中城市之间最大距离、2538. 最大价值和与最小价值和的差值、1569. 将子数组重新排序得到同一个二叉搜索树的方案数、1372. 二叉树中的最长交错路径、1373. 二叉搜索子树的最大键值和、0968. 监控二叉树、1273. 删除树节点、1519. 子树中标签相同的节点数 - -#### 不定根的树形 DP 题目 - -###### 0310. 最小高度树、0834. 树中距离之和、2581. 统计可能的树根数目 - -### [状态压缩 DP 题目](../../Contents/10.Dynamic-Programming/07.State-DP/02.State-DP-List.md) - -###### 1879. 两个数组最小的异或值之和、2172. 数组的最大与和、1947. 最大兼容性评分和、1595. 连通两组点的最小成本、1494. 并行课程 II、1655. 分配重复整数、1986. 完成任务的最少工作时间段、1434. 每个人戴不同帽子的方案数、1799. N 次操作后的最大分数和、1681. 最小不兼容性、0526. 优美的排列、0351. 安卓系统手势解锁、0464. 我能赢吗、0847. 访问所有节点的最短路径、0638. 大礼包、1994. 好子集的数目、1349. 参加考试的最大学生数、0698. 划分为k个相等的子集、0943. 最短超级串、0691. 贴纸拼词、0982. 按位与为零的三元组 - -### [计数 DP 题目](../../Contents/10.Dynamic-Programming/08.Counting-DP/02.Counting-DP-List.md) - -###### 0062. 不同路径、0063. 不同路径 II、0343. 整数拆分、0096. 不同的二叉搜索树、1259. 不相交的握手、0790. 多米诺和托米诺平铺、0070. 爬楼梯、0746. 使用最小花费爬楼梯、0509. 斐波那契数、1137. 第 N 个泰波那契数 - -### [数位 DP 题目](../../Contents/10.Dynamic-Programming/09.Digit-DP/02.Digit-DP-List.md) - -###### 2376. 统计特殊整数、0357. 统计各位数字都不同的数字个数、1012. 至少有 1 位重复的数字、0902. 最大为 N 的数字组合、0788. 旋转数字、0600. 不含连续1的非负整数、0233. 数字 1 的个数、2719. 统计整数数目、0248. 中心对称数 III、1088. 易混淆数 II、1067. 范围内的数字计数、1742. 盒子中小球的最大数量、面试题 17.06. 2出现的次数 - -### [概率 DP 题目](../../Contents/10.Dynamic-Programming/10.Probability-DP/02.Probability-DP-List.md) - -###### 0688. 骑士在棋盘上的概率、0808. 分汤、0837. 新 21 点、1230. 抛掷硬币、1467. 两个盒子中球的颜色数相同的概率、1227. 飞机座位分配概率、1377. T 秒后青蛙的位置、剑指 Offer 60. n个骰子的点数 - -### [动态规划优化题目](../../Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) diff --git a/Assets/Origins/Interview-100-List.md b/Assets/Origins/Interview-100-List.md deleted file mode 100644 index ba902907..00000000 --- a/Assets/Origins/Interview-100-List.md +++ /dev/null @@ -1,194 +0,0 @@ -## 01. 数组 - -### [数组基础题目](../../Contents/01.Array/01.Array-Basic/02.Array-Basic-List.md) - -###### 0054. 螺旋矩阵、0048. 旋转图像 - -### [排序算法题目](../../Contents/01.Array/02.Array-Sort/11.Array-Sort-List.md) - -#### 选择排序题目 - -###### 0215. 数组中的第K个最大元素 - -#### 希尔排序题目 - -###### 0912. 排序数组 - -#### 归并排序题目 - -###### 0912. 排序数组、0088. 合并两个有序数组 - -#### 快速排序题目 - -###### 0912. 排序数组、0169. 多数元素 - -#### 堆排序题目 - -###### 0912. 排序数组、0215. 数组中的第K个最大元素 - -#### 计数排序题目 - -###### 0912. 排序数组 - -#### 桶排序题目 - -###### 0912. 排序数组 - -#### 其他排序题目 - -###### 0136. 只出现一次的数字、0056. 合并区间、0179. 最大数 - -### [二分查找题目](../../Contents/01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md) - -#### 二分下标题目 - -###### 0704. 二分查找、0034. 在排序数组中查找元素的第一个和最后一个位置、0153. 寻找旋转排序数组中的最小值、0033. 搜索旋转排序数组、0162. 寻找峰值、0004. 寻找两个正序数组的中位数、0240. 搜索二维矩阵 II - -#### 二分答案题目 - -###### 0069. x 的平方根 - -### [双指针题目](../../Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md) - -#### 对撞指针题目 - -###### 0015. 三数之和 - -#### 快慢指针题目 - -###### 0283. 移动零、0088. 合并两个有序数组 - -#### 分离双指针题目 - -###### 0415. 字符串相加 - -### [滑动窗口题目](../../Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) - -#### 固定长度窗口题目 - -###### 0239. 滑动窗口最大值 - -#### 不定长度窗口题目 - -###### 0003. 无重复字符的最长子串、0076. 最小覆盖子串、0718. 最长重复子数组 - -## 02. 链表 - -### [链表经典题目](../../Contents/02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md) - -###### 0083. 删除排序链表中的重复元素、0082. 删除排序链表中的重复元素 II、0206. 反转链表、0092. 反转链表 II、0025. K 个一组翻转链表、0234. 回文链表 - -### [链表排序题目](../../Contents/02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md) - -###### 0148. 排序链表、0021. 合并两个有序链表、0023. 合并 K 个升序链表 - -### [链表双指针题目](../../Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md) - -###### 0141. 环形链表、0142. 环形链表 II、0160. 相交链表、0019. 删除链表的倒数第 N 个结点、剑指 Offer 22. 链表中倒数第k个节点、0143. 重排链表、0002. 两数相加 - -## 03. 堆栈 - -### [堆栈基础题目](../../Contents/03.Stack/01.Stack-Basic/02.Stack-Basic-List.md) - -###### 0155. 最小栈、0020. 有效的括号、0227. 基本计算器 II、0232. 用栈实现队列、0394. 字符串解码、0032. 最长有效括号 - -### [单调栈](../../Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) - -###### 0042. 接雨水 - -## 04. 队列 - -### [队列基础题目](../../Contents/04.Queue/01.Queue-Basic/02.Queue-Basic-List.md) - -###### 0225. 用队列实现栈 - -### [优先队列题目](../../Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md) - -###### 0023. 合并 K 个升序链表、0239. 滑动窗口最大值 - -## 05. 哈希表 - -### [哈希表题目](../../Contents/05.Hash-Table/02.Hash-Table-List.md) - -###### 0001. 两数之和、0015. 三数之和、0041. 缺失的第一个正数、0128. 最长连续序列、0136. 只出现一次的数字 - -## 06. 字符串 - -### [字符串基础题目](../../Contents/06.String/01.String-Basic/02.String-Basic-List.md) - -###### 0003. 无重复字符的最长子串、0005. 最长回文子串、0415. 字符串相加、0151. 反转字符串中的单词、0043. 字符串相乘、0014. 最长公共前缀 - -## 07. 树 - -### [二叉树的遍历题目](../../Contents/07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md) - -###### 0144. 二叉树的前序遍历、0094. 二叉树的中序遍历、0102. 二叉树的层序遍历、0103. 二叉树的锯齿形层序遍历、0236. 二叉树的最近公共祖先、0104. 二叉树的最大深度、0112. 路径总和、0113. 路径总和 II、0101. 对称二叉树、0124. 二叉树中的最大路径和、0199. 二叉树的右视图、0226. 翻转二叉树 - -### [二叉树的还原题目](../../Contents/07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md) - -###### 0105. 从前序与中序遍历序列构造二叉树 - -### [二叉搜索树题目](../../Contents/07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md) - -###### 0098. 验证二叉搜索树、0110. 平衡二叉树 - -### [并查集题目](../../Contents/07.Tree/05.Union-Find/02.Union-Find-List.md) - -###### 0128. 最长连续序列 - -## 08. 图论 - -### [图的深度优先搜索题目](../../Contents/08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md) - -###### 0200. 岛屿数量、0695. 岛屿的最大面积、0144. 二叉树的前序遍历、0094. 二叉树的中序遍历、0129. 求根节点到叶节点数字之和、0124. 二叉树中的最大路径和、0199. 二叉树的右视图、0543. 二叉树的直径、0662. 二叉树最大宽度 - -### [图的广度优先搜索题目](../../Contents/08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md) - -###### 0200. 岛屿数量、0322. 零钱兑换、0199. 二叉树的右视图、0662. 二叉树最大宽度 - -## 09. 基础算法 - -### [枚举算法题目](../../Contents/09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md) - -###### 0001. 两数之和、0078. 子集、0221. 最大正方形 - -### [递归算法题目](../../Contents/09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md) - -###### 0024. 两两交换链表中的节点、0206. 反转链表、0092. 反转链表 II、0021. 合并两个有序链表、0070. 爬楼梯、0104. 二叉树的最大深度、0124. 二叉树中的最大路径和、0226. 翻转二叉树 - -### [分治算法题目](../../Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md) - -###### 0053. 最大子数组和、0023. 合并 K 个升序链表、0004. 寻找两个正序数组的中位数、0169. 多数元素、0014. 最长公共前缀 - -### [回溯算法题目](../../Contents/09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md) - -###### 0046. 全排列、0022. 括号生成、0078. 子集、0039. 组合总和、0093. 复原 IP 地址 - -### [贪心算法题目](../../Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md) - -###### 0053. 最大子数组和、0056. 合并区间、0122. 买卖股票的最佳时机 II - -### [位运算题目](../../Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) - -###### 0136. 只出现一次的数字 - -## 10. 动态规划 - -### [动态规划题目](../../Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md) - -###### 0070. 爬楼梯、0121. 买卖股票的最佳时机、0322. 零钱兑换、0300. 最长递增子序列、1143. 最长公共子序列、0718. 最长重复子数组、0064. 最小路径和、0072. 编辑距离、0032. 最长有效括号、0221. 最大正方形、0062. 不同路径、0152. 乘积最大子数组、0198. 打家劫舍 - - -## 11. 补充题目 - -#### 设计数据结构题目 - -###### 0146. LRU 缓存 - -#### 模拟题目 - -###### 0008. 字符串转换整数 (atoi)、0165. 比较版本号、0468. 验证IP地址 - -#### 思维锻炼题目 - -###### 0031. 下一个排列、0470. 用 Rand7() 实现 Rand10() diff --git a/Assets/Origins/Interview-200-List.md b/Assets/Origins/Interview-200-List.md deleted file mode 100644 index cf0aec64..00000000 --- a/Assets/Origins/Interview-200-List.md +++ /dev/null @@ -1,233 +0,0 @@ -## 01. 数组 - -### [数组基础题目](../../Contents/01.Array/01.Array-Basic/02.Array-Basic-List.md) - -###### 0189. 轮转数组、0498. 对角线遍历、0048. 旋转图像、0054. 螺旋矩阵、0059. 螺旋矩阵 II - -### [排序算法题目](../../Contents/01.Array/02.Array-Sort/11.Array-Sort-List.md) - -#### 冒泡排序题目 - -###### 0283. 移动零 - -#### 选择排序题目 - -###### 0215. 数组中的第K个最大元素 - -#### 插入排序题目 - -###### 0075. 颜色分类 - -#### 希尔排序题目 - -###### 0912. 排序数组 - -#### 归并排序题目 - -###### 0912. 排序数组、0088. 合并两个有序数组、剑指 Offer 51. 数组中的逆序对 - -#### 快速排序题目 - -###### 0912. 排序数组、0169. 多数元素 - -#### 堆排序题目 - -###### 0912. 排序数组、0215. 数组中的第K个最大元素、剑指 Offer 40. 最小的k个数 - -#### 计数排序题目 - -###### 0912. 排序数组 - -#### 桶排序题目 - -###### 0912. 排序数组 - -#### 基数排序题目 - -###### 0164. 最大间距 - -#### 其他排序题目 - -###### 0136. 只出现一次的数字、0056. 合并区间、0179. 最大数、0384. 打乱数组、剑指 Offer 45. 把数组排成最小的数 - -### [二分查找题目](../../Contents/01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md) - -#### 二分下标题目 - -###### 0704. 二分查找、0034. 在排序数组中查找元素的第一个和最后一个位置、0153. 寻找旋转排序数组中的最小值、0154. 寻找旋转排序数组中的最小值 II、0033. 搜索旋转排序数组、0162. 寻找峰值、0004. 寻找两个正序数组的中位数、0074. 搜索二维矩阵、0240. 搜索二维矩阵 II - -#### 二分答案题目 - -###### 0069. x 的平方根、0287. 寻找重复数、0050. Pow(x, n)、0400. 第 N 位数字 - -#### 复杂的二分查找问题 - -###### 0209. 长度最小的子数组、0349. 两个数组的交集 - -### [双指针题目](../../Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md) - -#### 对撞指针题目 - -###### 0611. 有效三角形的个数、0015. 三数之和、0016. 最接近的三数之和、0125. 验证回文串、0011. 盛最多水的容器、0075. 颜色分类、剑指 Offer 21. 调整数组顺序使奇数位于偶数前面、0443. 压缩字符串 - -#### 快慢指针题目 - -###### 0026. 删除有序数组中的重复项、0283. 移动零、0088. 合并两个有序数组 - -#### 分离双指针题目 - -###### 0415. 字符串相加 - -### [滑动窗口题目](../../Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) - -#### 固定长度窗口题目 - -###### 0239. 滑动窗口最大值 - -#### 不定长度窗口题目 - -###### 0003. 无重复字符的最长子串、0076. 最小覆盖子串、0718. 最长重复子数组、0209. 长度最小的子数组、0862. 和至少为 K 的最短子数组、1004. 最大连续1的个数 III - -## 02. 链表 - -### [链表经典题目](../../Contents/02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md) - -###### 0083. 删除排序链表中的重复元素、0082. 删除排序链表中的重复元素 II、0206. 反转链表、0092. 反转链表 II、0025. K 个一组翻转链表、0328. 奇偶链表、0234. 回文链表、0138. 复制带随机指针的链表、0061. 旋转链表 - -### [链表排序题目](../../Contents/02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md) - -###### 0148. 排序链表、0021. 合并两个有序链表、0023. 合并 K 个升序链表 - -### [链表双指针题目](../../Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md) - -###### 0141. 环形链表、0142. 环形链表 II、0160. 相交链表、0019. 删除链表的倒数第 N 个结点、剑指 Offer 22. 链表中倒数第k个节点、0143. 重排链表、0002. 两数相加、0445. 两数相加 II - -## 03. 堆栈 - -### [堆栈基础题目](../../Contents/03.Stack/01.Stack-Basic/02.Stack-Basic-List.md) - -###### 1047. 删除字符串中的所有相邻重复项、0155. 最小栈、0020. 有效的括号、0224. 基本计算器、0227. 基本计算器 II、0232. 用栈实现队列、剑指 Offer 09. 用两个栈实现队列、0394. 字符串解码、0032. 最长有效括号、0739. 每日温度、0071. 简化路径 - -### [单调栈](../../Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) - -###### 0739. 每日温度、0503. 下一个更大元素 II、0042. 接雨水、0085. 最大矩形 - -## 04. 队列 - -### [队列基础题目](../../Contents/04.Queue/01.Queue-Basic/02.Queue-Basic-List.md) - -###### 0225. 用队列实现栈 - -### [优先队列题目](../../Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md) - -###### 0347. 前 K 个高频元素、0239. 滑动窗口最大值、0295. 数据流的中位数、0023. 合并 K 个升序链表 - -## 05. 哈希表 - -### [哈希表题目](../../Contents/05.Hash-Table/02.Hash-Table-List.md) - -###### 0001. 两数之和、0015. 三数之和、0041. 缺失的第一个正数、0128. 最长连续序列、0136. 只出现一次的数字、0242. 有效的字母异位词、0442. 数组中重复的数据、剑指 Offer 61. 扑克牌中的顺子、0268. 丢失的数字、剑指 Offer 03. 数组中重复的数字 - -## 06. 字符串 - -### [字符串基础题目](../../Contents/06.String/01.String-Basic/02.String-Basic-List.md) - -###### 0125. 验证回文串、0005. 最长回文子串、0003. 无重复字符的最长子串、0344. 反转字符串、0557. 反转字符串中的单词 III、0415. 字符串相加、0151. 反转字符串中的单词、0043. 字符串相乘、0014. 最长公共前缀 - -### [单模式串匹配题目](../../Contents/06.String/02.String-Single-Pattern-Matching/07.String-Single-Pattern-Matching-List.md) - -###### 0459. 重复的子字符串 - -### [字典树题目](../../Contents/06.String/03.String-Multi-Pattern-Matching/02.Trie-List.md) - -###### 0208. 实现 Trie (前缀树)、0440. 字典序的第K小数字 - -## 07. 树 - -### [二叉树的遍历题目](../../Contents/07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md) - -###### 0144. 二叉树的前序遍历、0094. 二叉树的中序遍历、0145. 二叉树的后序遍历、0102. 二叉树的层序遍历、0103. 二叉树的锯齿形层序遍历、0104. 二叉树的最大深度、0111. 二叉树的最小深度、0124. 二叉树中的最大路径和、0101. 对称二叉树、0112. 路径总和、0113. 路径总和 II、0236. 二叉树的最近公共祖先、0199. 二叉树的右视图、0226. 翻转二叉树、0958. 二叉树的完全性检验、0572. 另一棵树的子树、0100. 相同的树、0297. 二叉树的序列化与反序列化、0114. 二叉树展开为链表 - -### [二叉树的还原题目](../../Contents/07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md) - -###### 0105. 从前序与中序遍历序列构造二叉树、0106. 从中序与后序遍历序列构造二叉树 - -### [二叉搜索树题目](../../Contents/07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md) - -###### 0098. 验证二叉搜索树、0450. 删除二叉搜索树中的节点、剑指 Offer 54. 二叉搜索树的第k大节点、0230. 二叉搜索树中第K小的元素、0426. 将二叉搜索树转化为排序的双向链表、0110. 平衡二叉树 - -### [并查集题目](../../Contents/07.Tree/05.Union-Find/02.Union-Find-List.md) - -###### 0128. 最长连续序列 - -## 08. 图论 - -### [图的深度优先搜索题目](../../Contents/08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md) - -###### 0200. 岛屿数量、0695. 岛屿的最大面积、0144. 二叉树的前序遍历、0094. 二叉树的中序遍历、0145. 二叉树的后序遍历、0129. 求根节点到叶节点数字之和、0124. 二叉树中的最大路径和、0199. 二叉树的右视图、0543. 二叉树的直径、0662. 二叉树最大宽度、0958. 二叉树的完全性检验、0572. 另一棵树的子树、0100. 相同的树、0111. 二叉树的最小深度 - -### [图的广度优先搜索题目](../../Contents/08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md) - -###### 0200. 岛屿数量、0322. 零钱兑换、0207. 课程表、0199. 二叉树的右视图、0662. 二叉树最大宽度、0958. 二叉树的完全性检验、0572. 另一棵树的子树、0100. 相同的树、0111. 二叉树的最小深度、剑指 Offer 32 - III. 从上到下打印二叉树 III - -### [图的拓扑排序题目](../../Contents/08.Graph/02.Graph-Traversal/06.Graph-Topological-Sorting-List.md) - -###### 0210. 课程表 II - -## 09. 基础算法 - -### [枚举算法题目](../../Contents/09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md) - -###### 0001. 两数之和、0078. 子集、0221. 最大正方形、0560. 和为 K 的子数组 - -### [递归算法题目](../../Contents/09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md) - -###### 0024. 两两交换链表中的节点、0206. 反转链表、0092. 反转链表 II、0021. 合并两个有序链表、0509. 斐波那契数、0070. 爬楼梯、0104. 二叉树的最大深度、0124. 二叉树中的最大路径和、0226. 翻转二叉树、剑指 Offer 62. 圆圈中最后剩下的数字 - -### [分治算法题目](../../Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md) - -###### 0004. 寻找两个正序数组的中位数、0023. 合并 K 个升序链表、0053. 最大子数组和、0169. 多数元素、0014. 最长公共前缀、剑指 Offer 33. 二叉搜索树的后序遍历序列 - -### [回溯算法题目](../../Contents/09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md) - -###### 0046. 全排列、0047. 全排列 II、0037. 解数独、0022. 括号生成、0078. 子集、0039. 组合总和、0040. 组合总和 II、0093. 复原 IP 地址、0079. 单词搜索、0679. 24 点游戏 - -### [贪心算法题目](../../Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md) - -###### 0053. 最大子数组和、0056. 合并区间、0122. 买卖股票的最佳时机 II、0055. 跳跃游戏、0402. 移掉 K 位数字、0135. 分发糖果、0134. 加油站、0670. 最大交换 - -### [位运算题目](../../Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) - -###### 0136. 只出现一次的数字、0191. 位1的个数、0268. 丢失的数字 - -## 10. 动态规划 - -### [动态规划题目](../../Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md) - -###### 0070. 爬楼梯、0509. 斐波那契数、0121. 买卖股票的最佳时机、0322. 零钱兑换、0518. 零钱兑换 II、0300. 最长递增子序列、1143. 最长公共子序列、0718. 最长重复子数组、0064. 最小路径和、0072. 编辑距离、0032. 最长有效括号、0221. 最大正方形、0062. 不同路径、0063. 不同路径 II、0152. 乘积最大子数组、0198. 打家劫舍、0213. 打家劫舍 II、0091. 解码方法、0010. 正则表达式匹配、0678. 有效的括号字符串、0045. 跳跃游戏 II、0673. 最长递增子序列的个数、0139. 单词拆分、0044. 通配符匹配、0120. 三角形最小路径和、0096. 不同的二叉搜索树、0887. 鸡蛋掉落、0097. 交错字符串、0516. 最长回文子序列 - -### 记忆化搜索题目 - -###### 0329. 矩阵中的最长递增路径 - -## 11. 补充题目 - -#### 设计数据结构题目 - -###### 0146. LRU 缓存、0460. LFU 缓存 - -#### 数学题目 - -###### 0007. 整数反转、0009. 回文数、剑指 Offer 62. 圆圈中最后剩下的数字、0168. Excel表列名称、0400. 第 N 位数字 - -#### 模拟题目 - -###### 0008. 字符串转换整数 (atoi)、0165. 比较版本号、0468. 验证IP地址、0086. 分隔链表 - -#### 前缀和 - -###### 0560. 和为 K 的子数组 - -#### 思维锻炼题目 - -###### 0031. 下一个排列、0556. 下一个更大元素 III、0470. 用 Rand7() 实现 Rand10() \ No newline at end of file diff --git a/Assets/Origins/README-Catalogue-List.md b/Assets/Origins/README-Catalogue-List.md deleted file mode 100644 index 4864aef4..00000000 --- a/Assets/Origins/README-Catalogue-List.md +++ /dev/null @@ -1,215 +0,0 @@ -### 00. 绪论 - -- [算法与数据结构](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/01.Data-Structures-Algorithms.md) -- [算法复杂度](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/02.Algorithm-Complexity.md) -- [LeetCode 入门与攻略](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/03.LeetCode-Guide.md) -- [LeetCode 题解(字典序排序,850+ 道题解)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/04.Solutions-List.md) -- [LeetCode 题解(按分类排序,推荐刷题列表 ★★★)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/05.Categories-List.md) -- [LeetCode 面试最常考 100 题(按分类排序)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/06.Interview-100-List.md) -- [LeetCode 面试最常考 200 题(按分类排序)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/07.Interview-200-List.md) - -### 01. 数组 - -- 数组基础知识 - - [数组基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/01.Array-Basic/01.Array-Basic.md) - - [数组基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/01.Array-Basic/02.Array-Basic-List.md) -- 数组排序算法 - - [冒泡排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md) - - [选择排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md) - - [插入排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md) - - [希尔排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md) - - [归并排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md) - - [快速排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md) - - [堆排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md) - - [计数排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md) - - [桶排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md) - - [基数排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md) - - [数组排序题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/11.Array-Sort-List.md) -- 二分查找 - - [二分查找知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md) - - [二分查找知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/03.Array-Binary-Search/02.Array-Binary-Search-02.md) - - [二分查找题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md) -- 数组双指针 - - [数组双指针知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md) - - [数组双指针题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md) -- 数组滑动窗口 - - [数组滑动窗口知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md) - - [数组滑动窗口题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) - -### 02. 链表 - -- 链表基础知识 - - [链表基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md) - - [链表经典题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md) -- 链表排序 - - [链表排序知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/02.Linked-List-Sort/01.Linked-List-Sort.md) - - [链表排序题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md) -- 链表双指针 - - [链表双指针知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/03.Linked-List-Two-Pointers/01.Linked-List-Two-Pointers.md) - - [链表双指针题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md) - -### 03. 堆栈 - -- 堆栈基础知识 - - [堆栈基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md) - - [堆栈基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/01.Stack-Basic/02.Stack-Basic-List.md) -- 单调栈 - - [单调栈知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md) - - [单调栈题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) - -### 04. 队列 - -- 队列基础知识 - - [队列基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md) - - [队列基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/01.Queue-Basic/02.Queue-Basic-List.md) -- 优先队列 - - [优先队列知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md) - - [优先队列题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md) - -### 05. 哈希表 - -- [哈希表知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/05.Hash-Table/01.Hash-Table.md) -- [哈希表题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/05.Hash-Table/02.Hash-Table-List.md) - -### 06. 字符串 - -- 字符串基础知识 - - [字符串基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/01.String-Basic/01.String-Basic.md) - - [字符串经典题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/01.String-Basic/02.String-Basic-List.md) -- 单模式串匹配 - - [Brute Force 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md) - - [Rabin Karp 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md) - - [KMP 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md) - - [Boyer Moore 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md) - - [Horspool 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md) - - [Sunday 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md) - - [单模式串匹配题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/07.String-Single-Pattern-Matching-List.md) -- 多模式串匹配 - - [字典树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md) - - [字典树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/02.Trie-List.md) - - [AC 自动机知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/03.AC-Automaton.md) - - [AC 自动机题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/04.AC-Automaton-List.md) - - [后缀数组知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/05.Suffix-Array.md) - - [后缀数组题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md) - -### 07. 树 - -- 二叉树 - - [树与二叉树基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md) - - [二叉树的遍历知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md) - - [二叉树的遍历题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md) - - [二叉树的还原知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md) - - [二叉树的还原题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md) -- 二叉搜索树 - - [二叉搜索树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md) - - [二叉搜索树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md) -- 线段树 - - [线段树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md) - - [线段树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/03.Segment-Tree/02.Segment-Tree-List.md) -- 树状数组 - - [树状数组知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/04.Binary-Indexed-Tree/01.Binary-Indexed-Tree.md) - - [树状数组题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md) -- 并查集 - - [并查集知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/05.Union-Find/01.Union-Find.md) - - [并查集题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/05.Union-Find/02.Union-Find-List.md) - -### 08. 图论 - -- 图的基础知识 - - [图的定义和分类](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md) - - [图的存储结构和问题应用](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md) -- 图的遍历 - - [图的深度优先搜索知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/01.Graph-DFS.md) - - [图的深度优先搜索题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md) - - [图的广度优先搜索知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/03.Graph-BFS.md) - - [图的广度优先搜索题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md) - - [图的拓扑排序知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md) - - [图的拓扑排序题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/06.Graph-Topological-Sorting-List.md) -- 图的生成树 - - [图的最小生成树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md) - - [图的最小生成树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md) -- 最短路径 - - [单源最短路径知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md) - - [单源最短路径知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md) - - [单源最短路径题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/03.Graph-Single-Source-Shortest-Path-List.md) - - [多源最短路径知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md) - - [多源最短路径题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/05.Graph-Multi-Source-Shortest-Path-List.md) - - [次短路径知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md) - - [次短路径题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/07.Graph-The-Second-Shortest-Path-List.md) - - [差分约束系统知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md) - - [差分约束系统题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/09.Graph-System-Of-Difference-Constraints-List.md) -- 二分图 - - [二分图基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md) - - [二分图基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/02.Graph-Bipartite-Basic-List.md) - - [二分图最大匹配知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md) - - [匈牙利算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/04.Graph-Hungarian-Algorithm.md) - - [Hopcroft-Karp 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/05.Graph-Hopcroft-Karp.md) - - [二分图最大匹配题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md) - -### 09. 基础算法 - -- 枚举算法 - - [枚举算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md) - - [枚举算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md) -- 递归算法 - - [递归算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md) - - [递归算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md) -- 分治算法 - - [分治算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md) - - [分治算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md) -- 回溯算法 - - [回溯算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md) - - [回溯算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md) -- 贪心算法 - - [贪心算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md) - - [贪心算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md) -- 位运算 - - [位运算知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md) - - [位运算题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) - -### 10. 动态规划 - -- 动态规划基础 - - [动态规划基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md) - - [动态规划基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md) -- 记忆化搜索 - - [记忆化搜索知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md) - - [记忆化搜索题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/02.Memoization/02.Memoization-List.md) -- 线性 DP - - [线性 DP 知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md) - - [线性 DP 知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md) - - [线性 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/03.Linear-DP-List.md) -- 背包问题 - - [背包问题知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md) - - [背包问题知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md) - - [背包问题知识(三)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md) - - [背包问题知识(四)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md) - - [背包问题知识(五)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md) - - [背包问题题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/06.Knapsack-Problem-List.md) -- 区间 DP - - [区间 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/05.Interval-DP/01.Interval-DP.md) - - [区间 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/05.Interval-DP/02.Interval-DP-List.md) -- 树形 DP - - [树形 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md) - - [树形 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/06.Tree-DP/02.Tree-DP-List.md) -- 状态压缩 DP - - [状态压缩 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md) - - [状态压缩 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/07.State-DP/02.State-DP-List.md) -- 计数 DP - - [计数 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md) - - [计数 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/08.Counting-DP/02.Counting-DP-List.md) -- 数位 DP - - [数位 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md) - - [数位 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/09.Digit-DP/02.Digit-DP-List.md) -- 概率 DP - - [概率 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/10.Probability-DP/01.Probability-DP.md) - - [概率 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/10.Probability-DP/02.Probability-DP-List.md) -- 动态规划优化 - - [单调栈 / 优先队列优化](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/01.Monotone-Stack-Queue-Optimization.md) - - [斜率优化](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/02.Slope-Optimization.md) - - [四边形不等式优化](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/03.Quadrangle-Optimization.md) - - [动态规划优化题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) - -### 11. 附加内容 - -- [内容完成时间线](./Contents/Others/Update-Time.md) diff --git a/Assets/Origins/README-Head.md b/Assets/Origins/README-Head.md deleted file mode 100644 index 4a89e73e..00000000 --- a/Assets/Origins/README-Head.md +++ /dev/null @@ -1,46 +0,0 @@ -# 算法通关手册(LeetCode) - -## 01. 项目简介 - -- **「算法与数据结构」** 基础知识的讲解教程,「LeetCode」800+ 道题目的详细解析。本项目易于理解,没有大跨度的思维跳跃,项目中使用部分图示、例子来帮助理解。 - -- 本教程先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。 - -- 本教程采用 Python 作为编程语言,要求学习者已有基本 Python 程序设计的知识与经验。 - -## 02. 项目地址 - -欢迎右上角 **「Star ⭐️ 」** 和 **「Fork」**,这是对我最大的鼓励和支持。 - -- GitHub 地址:[https://github.com/itcharge/LeetCode-Py](https://github.com/itcharge/LeetCode-Py) - -支持黑暗模式的在线电子书《算法通关手册》。 - -- 电子书地址:[https://algo.itcharge.cn](https://algo.itcharge.cn) - -![电子书浅色模式](./Assets/Images/algo-book-light.png) - -![电子书深色模式](./Assets/Images/algo-book-dark.png) - -## 03. 关于作者 - -我是一名 iOS / macOS 的开发程序员,另外也是北航软院的一名非全硕士(在读)。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。 - -我从 2021 年 03 月 30 日开始每日在 LeetCode 刷题,到 2022 年 06 月 08 日已经刷了 1000+ 道题目,并且完成了 800+ 道题解。努力向着 1000+、1500+、2000+ 道题解前进。 - -在公众号 **「程序员充电站」** 里回复 "**算法打卡**",拉你进 LeetCode 算法打卡计划群一起组队打卡。 - -- 进群暗号:**算法打卡** -- 进群要求:少闲聊、多分享、改备注。 - -![](./Assets/Images/itcharge-qr-code.png) - -## 04. 版权说明 - -- 本教程采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 -- 本教程题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 - -## 05. 章节目录 - -![章节目录](./Assets/Images/algo-book-contents.png) - diff --git a/Assets/Scripts/create_auto.sh b/Assets/Scripts/create_auto.sh deleted file mode 100644 index ecff0238..00000000 --- a/Assets/Scripts/create_auto.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env sh - -# 确保脚本抛出遇到的错误 -set -e - -cd ./ - -python3 create_readme.py \ No newline at end of file diff --git a/Assets/Scripts/create_readme.py b/Assets/Scripts/create_readme.py deleted file mode 100644 index 26d7b861..00000000 --- a/Assets/Scripts/create_readme.py +++ /dev/null @@ -1,33 +0,0 @@ -import create_solutions_list as gen - -# 生成分类题解列表 -solotions_path = '../../Solutions' -categories_origin_list_path = '../Origins/Categories-List.md' -categories_list_path = '../../Contents/00.Introduction/05.Categories-List.md' - -gen.gen_categories_list(solotions_path, categories_origin_list_path, categories_list_path) - -# 生成面试 Top 100 题解列表 -interview_100_origin_list_path = '../Origins/Interview-100-List.md' -interview_100_list_path = '../../Contents/00.Introduction/06.Interview-100-List.md' -gen.gen_interview_list(solotions_path, interview_100_origin_list_path, interview_100_list_path) - -# 生成面试 Top 200 题解列表 -interview_200_origin_list_path = '../Origins/Interview-200-List.md' -interview_200_list_path = '../../Contents/00.Introduction/07.Interview-200-List.md' -gen.gen_interview_list(solotions_path, interview_200_origin_list_path, interview_200_list_path) - -# 生成全部题解列表 -solotions_output_path = '../../Contents/00.Introduction/04.Solutions-List.md' - -solutions_count = gen.gen_solutions_list(solotions_path, solotions_output_path) - - -# 生成 README.md index.md 文件 -readme_head_path = '../Origins/README-Head.md' -readme_catalogue_list_path = '../Origins/README-Catalogue-List.md' -content_index_path = '../../Contents/index.md' -readme_path = '../../README.md' - -gen.merge_readme_file(solotions_output_path, readme_head_path, readme_catalogue_list_path, content_index_path, readme_path, solutions_count) - diff --git a/Assets/Scripts/create_solutions_list.py b/Assets/Scripts/create_solutions_list.py deleted file mode 100644 index 74f30d2b..00000000 --- a/Assets/Scripts/create_solutions_list.py +++ /dev/null @@ -1,324 +0,0 @@ -import os, re -from pathlib import Path -import pandas as pd -from urllib.parse import quote - -# 根据 frame 生成 Markdown 表格 -def gen_markdown_table(frame, need_sort): - - ELEMENT = " {} |" - - H = frame.shape[0] - W = frame.shape[1] - - LINE = "|" + ELEMENT * W - - head_name = ["题号", "标题", "题解", "标签", "难度"] - - lines = [] - - ## 表头部分 - lines += ["| {} | {} | {} | {} | {} |".format(head_name[0], head_name[1], head_name[2], head_name[3], head_name[4])] - - ## 分割线 - SPLIT = ":{}" - line = "|" - for i in range(W): - line = "{} {} |".format(line, SPLIT.format('-'*6)) - lines += [line] - - ## 数据部分 - if need_sort: - frame = frame.sort_values(by='题号') - frame = frame.reset_index(drop=True) - for i in range(H): - lines += ["| {} | {} | {} | {} | {} |".format(frame.at[i, '题号'], frame.at[i, '标题'], frame.at[i, '题解'], frame.at[i, '标签'], frame.at[i, '难度'])] - table = '\n'.join(lines) - return table - -# 根据题解目录 solutions_path 自动生成题解列表,并保存到 output_path 中 -def gen_solutions_list(solutions_path, solotions_output_path): - files = os.listdir(solutions_path) - frame = pd.DataFrame(columns=['题号', '标题', '题解', '标签', '难度']) - frame_cout = 0 - - df = pd.read_csv("leetcode-problems.csv") - - for file in files: - # 判断是否是文件夹 - if ".md" not in file: - continue - - # 获取题目所在行 - df_indexs = df[df['标题'] == Path(file).stem].index.tolist() - - if not df_indexs: - print('%s 没有出现在 leetcode-problems.csv 中' % (Path(file).stem)) - continue - row = df_indexs[0] - - problem_id = df.loc[row, "序号"] - problem_catalog = df.loc[row, "所在目录"] - problem_title = df.loc[row, "标题"] - problem_title_slug = df.loc[row, "标题末尾"] - problem_link = "[" + problem_title_slug + "](" + df.loc[row, "标题链接"] + ")" - problem_link_slug = df.loc[row, "标题链接末尾路径"] - problem_solution_path = os.path.join(solutions_path, problem_title + ".md") - if os.path.exists(problem_solution_path): - problem_solution_link = "[Python](" + df.loc[row, "github 题解链接"] + ")" - else: - problem_solution_link = "" - problem_label = df.loc[row, "标签"] - problem_difficulty = df.loc[row, "难度"] - res = [problem_id, problem_link, problem_solution_link, problem_label, problem_difficulty] - frame.loc[frame_cout] = res - frame_cout += 1 - - table = gen_markdown_table(frame, True) - with open(solotions_output_path, 'w') as f: - f.writelines("# LeetCode 题解(已完成 {} 道)\n\n".format(frame_cout)) - f.write(table) - f.close() - print("Create Solutions List Success") - return frame_cout - - -# 将 readme_head、list 合并到,自动生成 README.md 并保存到 readme_path 中 -def merge_readme_file(solotions_output_path, readme_head_path, readme_catalogue_list_path, content_index_path, readme_path, solutions_count): - - # 生成项目 README.md 文件 - readme_file = open(readme_path,'w') - - # 将 README 开头部分写入 README.md 中 - readme_head_file = open(readme_head_path) - readme_file.writelines(readme_head_file.readlines()) - readme_head_file.close() - - # 将章节目录写入 README.md 中 - readme_catelogue_list_file = open(readme_catalogue_list_path) - readme_catelogue_list_lines = readme_catelogue_list_file.readlines() - for readme_catelogue_list_line in readme_catelogue_list_lines: - readme_catelogue_list_line = readme_catelogue_list_line.replace('https://github.com/itcharge/LeetCode-Py/blob/main', '.') - readme_file.write(readme_catelogue_list_line) - readme_catelogue_list_file.close() - - # 将题解标题写入 readme 文件 - catalogue_list_file = open(solotions_output_path) - catalogue_list_lines = catalogue_list_file.readlines() - if len(catalogue_list_lines) > 0: - catalogue_list_title = catalogue_list_lines[0].strip('\n') - catalogue_list_title = '### [' + catalogue_list_title + '](./Contents/00.Introduction/04.Solutions-List.md)' - catalogue_list_title = catalogue_list_title.replace('# LeetCode 题解', '12. LeetCode 题解') - readme_file.writelines(catalogue_list_title) - catalogue_list_file.close() - - readme_file.close() - - - # 生成 Contents/index.md 文件 - content_index_file = open(content_index_path, 'w') - content_index_file.writelines("# 算法通关手册(LeetCode)\n\n") - content_index_file.writelines("## 章节目录\n\n") - - # 将章节目录写入 Contents/index.md 文件中 - readme_catelogue_list_file = open(readme_catalogue_list_path) - catalogue_list_lines = readme_catelogue_list_file.readlines() - for catalogue_list_line in catalogue_list_lines: - catalogue_list_line = catalogue_list_line.replace('https://github.com/itcharge/LeetCode-Py/blob/main/Contents', '.') - content_index_file.write(catalogue_list_line) - - readme_catelogue_list_file.close() - content_index_file.close() - -# 根据题解目录, 题目分类原始列表目录,生成分类题解,并将整体保存到 categories_list_path -def gen_categories_list(solutions_path, categories_origin_list_path, categories_list_path): - - f = open(categories_origin_list_path) - lines = f.readlines() - category_h2 = None - category_h3 = None - category_h4 = None - category_h6 = None - category_h3_file_path = None - category_h3_file_content = "" - category_file_content = "" - - df = pd.read_csv("leetcode-problems.csv") - - for i in range(len(lines)): - pattern = re.compile(r'(#{2,6}) (.*)') - match = pattern.match(lines[i]) - if match: - title_size, title_content = match.group(1,2) - if title_size == "##": - category_h2 = title_content - category_file_content += "## " + category_h2 + "\n\n" - elif title_size == "###": - if category_h3 and category_h3_file_path and category_h3_file_content: - with open(category_h3_file_path, 'w') as fi: - fi.write(category_h3_file_content) - fi.close() - category_h3 = None - category_h3_file_path = None - category_h3_file_content = "" - pattern1 = re.compile(r'\[(.*)\]\((.*)\)') - match1 = pattern1.match(title_content) - if match1: - category_h3, category_h3_file_path = match1.group(1,2) - category_h3_file_content += "### " + category_h3 + "\n\n" - category_file_content += "### " + category_h3 + "\n\n" - else: - category_h3 = title_content - category_file_content += "### " + category_h3 + "\n\n" - elif title_size == "####": - category_h4 = title_content - category_h3_file_content += "#### " + category_h4 + "\n\n" - category_file_content += "#### " + category_h4 + "\n\n" - elif title_size == "######": - category_h6 = title_content - problem_titles = title_content.split('、') - if not problem_titles: - continue - - frame = pd.DataFrame(columns=['题号', '标题', '题解', '标签', '难度']) - frame_cout = 0 - for problem_title in problem_titles: - # 获取题目所在行 - df_indexs = df[df['标题'] == problem_title].index.tolist() - - if not df_indexs: - print('%s 没有出现在 leetcode-problems.csv 中' % (problem_title)) - continue - row = df_indexs[0] - - problem_id = df.loc[row, "序号"] - problem_catalog = df.loc[row, "所在目录"] - problem_title = df.loc[row, "标题"] - problem_title_slug = df.loc[row, "标题末尾"] - problem_link = "[" + problem_title_slug + "](" + df.loc[row, "标题链接"] + ")" - problem_link_slug = df.loc[row, "标题链接末尾路径"] - problem_solution_path = os.path.join(solutions_path, problem_title + ".md") - if os.path.exists(problem_solution_path): - problem_solution_link = "[Python](" + df.loc[row, "github 题解链接"] + ")" - else: - problem_solution_link = "" - problem_label = df.loc[row, "标签"] - problem_difficulty = df.loc[row, "难度"] - res = [problem_id, problem_link, problem_solution_link, problem_label, problem_difficulty] - frame.loc[frame_cout] = res - frame_cout += 1 - - table = gen_markdown_table(frame, False) - category_h3_file_content += table + "\n\n" - category_file_content += table + "\n\n" - - if category_h3 and category_h3_file_path and category_h3_file_content: - with open(category_h3_file_path, 'w') as fi: - fi.write(category_h3_file_content) - fi.close() - - if category_file_content: - with open(categories_list_path, 'w') as fi: - fi.write("# LeetCode 题解(按分类排序,推荐刷题列表 ★★★)\n\n") - fi.write(category_file_content) - fi.close() - - print("Create Categories List Success") - - -# 根据题解目录, 面试题目分类原始列表目录,生成面试题解,并将整体保存到 interview_list_path -def gen_interview_list(solutions_path, interview_origin_list_path, interview_list_path): - - f = open(interview_origin_list_path) - lines = f.readlines() - interview_h2 = None - interview_h3 = None - interview_h4 = None - interview_h6 = None - interview_h3_file_path = None - interview_h3_file_content = "" - interview_file_content = "" - - df = pd.read_csv("leetcode-problems.csv") - - problems_set = set() - for i in range(len(lines)): - pattern = re.compile(r'(#{2,6}) (.*)') - match = pattern.match(lines[i]) - if match: - title_size, title_content = match.group(1,2) - if title_size == "##": - interview_h2 = title_content - interview_file_content += "## " + interview_h2 + "\n\n" - elif title_size == "###": - if interview_h3 and interview_h3_file_path and interview_h3_file_content: - interview_h3 = None - interview_h3_file_path = None - interview_h3_file_content = "" - pattern1 = re.compile(r'\[(.*)\]\((.*)\)') - match1 = pattern1.match(title_content) - if match1: - interview_h3, interview_h3_file_path = match1.group(1,2) - interview_h3_file_content += "### " + interview_h3 + "\n\n" - interview_file_content += "### " + interview_h3 + "\n\n" - else: - interview_h3 = title_content - interview_file_content += "### " + interview_h3 + "\n\n" - elif title_size == "####": - interview_h4 = title_content - interview_h3_file_content += "#### " + interview_h4 + "\n\n" - interview_file_content += "#### " + interview_h4 + "\n\n" - elif title_size == "######": - interview_h6 = title_content - problem_titles = title_content.split('、') - if not problem_titles: - continue - - frame = pd.DataFrame(columns=['题号', '标题', '题解', '标签', '难度']) - frame_cout = 0 - for problem_title in problem_titles: - # 获取题目所在行 - df_indexs = df[df['标题'] == problem_title].index.tolist() - - if not df_indexs: - print('%s 没有出现在 leetcode-problems.csv 中' % (problem_title)) - continue - - problems_set.add(problem_title) - row = df_indexs[0] - - problem_id = df.loc[row, "序号"] - problem_catalog = df.loc[row, "所在目录"] - problem_title = df.loc[row, "标题"] - problem_title_slug = df.loc[row, "标题末尾"] - problem_link = "[" + problem_title_slug + "](" + df.loc[row, "标题链接"] + ")" - problem_link_slug = df.loc[row, "标题链接末尾路径"] - problem_solution_path = os.path.join(solutions_path, problem_title + ".md") - if os.path.exists(problem_solution_path): - problem_solution_link = "[Python](" + df.loc[row, "github 题解链接"] + ")" - else: - problem_solution_link = "" - problem_label = df.loc[row, "标签"] - problem_difficulty = df.loc[row, "难度"] - res = [problem_id, problem_link, problem_solution_link, problem_label, problem_difficulty] - frame.loc[frame_cout] = res - frame_cout += 1 - - table = gen_markdown_table(frame, False) - interview_h3_file_content += table + "\n\n" - interview_file_content += table + "\n\n" - - if interview_file_content: - with open(interview_list_path, 'w') as fi: - if "Interview-100-List.md" in interview_origin_list_path: - fi.write("# LeetCode 面试最常考 100 题(按分类排序)\n\n") - elif "Interview-200-List.md" in interview_origin_list_path: - fi.write("# LeetCode 面试最常考 200 题(按分类排序)\n\n") - fi.write(interview_file_content) - fi.write("\n## 参考资料\n") - fi.write("\n- 【清单】[CodeTop 企业题库](https://codetop.cc/home)\n") - fi.close() - - print("Total Problems Count: " + str(len(problems_set))) - print(sorted(list(problems_set))) - print("Create Interview List Success") \ No newline at end of file diff --git a/Assets/Scripts/leetcode-problems.csv b/Assets/Scripts/leetcode-problems.csv deleted file mode 100644 index 54c8f30f..00000000 --- a/Assets/Scripts/leetcode-problems.csv +++ /dev/null @@ -1,3141 +0,0 @@ -序号,所在目录,标题,标题末尾,标题链接,标题链接末尾路径,标签,网站题解链接,github 题解链接,通过率,难度,题解数目 -0001,0001-0099,0001. 两数之和,两数之和,https://leetcode.cn/problems/two-sum/,two-sum,数组、哈希表,https://algo.itcharge.cn/Solutions/0001-0099/two-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0001.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md,52.9%,简单,21940 -0002,0001-0099,0002. 两数相加,两数相加,https://leetcode.cn/problems/add-two-numbers/,add-two-numbers,递归、链表、数学,https://algo.itcharge.cn/Solutions/0001-0099/add-two-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0002.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0.md,42.4%,中等,12149 -0003,0001-0099,0003. 无重复字符的最长子串,无重复字符的最长子串,https://leetcode.cn/problems/longest-substring-without-repeating-characters/,longest-substring-without-repeating-characters,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/0001-0099/longest-substring-without-repeating-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0003.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md,39.1%,中等,13753 -0004,0001-0099,0004. 寻找两个正序数组的中位数,寻找两个正序数组的中位数,https://leetcode.cn/problems/median-of-two-sorted-arrays/,median-of-two-sorted-arrays,数组、二分查找、分治,https://algo.itcharge.cn/Solutions/0001-0099/median-of-two-sorted-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0004.%20%E5%AF%BB%E6%89%BE%E4%B8%A4%E4%B8%AA%E6%AD%A3%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md,41.5%,困难,6962 -0005,0001-0099,0005. 最长回文子串,最长回文子串,https://leetcode.cn/problems/longest-palindromic-substring/,longest-palindromic-substring,字符串、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/longest-palindromic-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0005.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.md,37.6%,中等,7674 -0006,0001-0099,0006. N 字形变换,N 字形变换,https://leetcode.cn/problems/zigzag-conversion/,zigzag-conversion,字符串,https://algo.itcharge.cn/Solutions/0001-0099/zigzag-conversion/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0006.%20N%20%E5%AD%97%E5%BD%A2%E5%8F%98%E6%8D%A2.md,52.0%,中等,4647 -0007,0001-0099,0007. 整数反转,整数反转,https://leetcode.cn/problems/reverse-integer/,reverse-integer,数学,https://algo.itcharge.cn/Solutions/0001-0099/reverse-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0007.%20%E6%95%B4%E6%95%B0%E5%8F%8D%E8%BD%AC.md,35.4%,中等,7244 -0008,0001-0099,0008. 字符串转换整数 (atoi),字符串转换整数 (atoi),https://leetcode.cn/problems/string-to-integer-atoi/,string-to-integer-atoi,字符串,https://algo.itcharge.cn/Solutions/0001-0099/string-to-integer-atoi/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0008.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E6%8D%A2%E6%95%B4%E6%95%B0%20%28atoi%29.md,21.3%,中等,4293 -0009,0001-0099,0009. 回文数,回文数,https://leetcode.cn/problems/palindrome-number/,palindrome-number,数学,https://algo.itcharge.cn/Solutions/0001-0099/palindrome-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0009.%20%E5%9B%9E%E6%96%87%E6%95%B0.md,56.0%,简单,8400 -0010,0001-0099,0010. 正则表达式匹配,正则表达式匹配,https://leetcode.cn/problems/regular-expression-matching/,regular-expression-matching,递归、字符串、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/regular-expression-matching/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0010.%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D.md,30.8%,困难,2200 -0011,0001-0099,0011. 盛最多水的容器,盛最多水的容器,https://leetcode.cn/problems/container-with-most-water/,container-with-most-water,贪心、数组、双指针,https://algo.itcharge.cn/Solutions/0001-0099/container-with-most-water/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0011.%20%E7%9B%9B%E6%9C%80%E5%A4%9A%E6%B0%B4%E7%9A%84%E5%AE%B9%E5%99%A8.md,60.3%,中等,5531 -0012,0001-0099,0012. 整数转罗马数字,整数转罗马数字,https://leetcode.cn/problems/integer-to-roman/,integer-to-roman,哈希表、数学、字符串,https://algo.itcharge.cn/Solutions/0001-0099/integer-to-roman/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0012.%20%E6%95%B4%E6%95%B0%E8%BD%AC%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97.md,66.1%,中等,3016 -0013,0001-0099,0013. 罗马数字转整数,罗马数字转整数,https://leetcode.cn/problems/roman-to-integer/,roman-to-integer,哈希表、数学、字符串,https://algo.itcharge.cn/Solutions/0001-0099/roman-to-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0013.%20%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97%E8%BD%AC%E6%95%B4%E6%95%B0.md,62.0%,简单,6679 -0014,0001-0099,0014. 最长公共前缀,最长公共前缀,https://leetcode.cn/problems/longest-common-prefix/,longest-common-prefix,字典树、字符串,https://algo.itcharge.cn/Solutions/0001-0099/longest-common-prefix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0014.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%89%8D%E7%BC%80.md,43.4%,简单,6736 -0015,0001-0099,0015. 三数之和,三数之和,https://leetcode.cn/problems/3sum/,3sum,数组、双指针、排序,https://algo.itcharge.cn/Solutions/0001-0099/3sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0015.%20%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md,37.0%,中等,5927 -0016,0001-0099,0016. 最接近的三数之和,最接近的三数之和,https://leetcode.cn/problems/3sum-closest/,3sum-closest,数组、双指针、排序,https://algo.itcharge.cn/Solutions/0001-0099/3sum-closest/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0016.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md,44.8%,中等,2456 -0017,0001-0099,0017. 电话号码的字母组合,电话号码的字母组合,https://leetcode.cn/problems/letter-combinations-of-a-phone-number/,letter-combinations-of-a-phone-number,哈希表、字符串、回溯,https://algo.itcharge.cn/Solutions/0001-0099/letter-combinations-of-a-phone-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0017.%20%E7%94%B5%E8%AF%9D%E5%8F%B7%E7%A0%81%E7%9A%84%E5%AD%97%E6%AF%8D%E7%BB%84%E5%90%88.md,58.1%,中等,5547 -0018,0001-0099,0018. 四数之和,四数之和,https://leetcode.cn/problems/4sum/,4sum,数组、双指针、排序,https://algo.itcharge.cn/Solutions/0001-0099/4sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0018.%20%E5%9B%9B%E6%95%B0%E4%B9%8B%E5%92%8C.md,36.8%,中等,2880 -0019,0001-0099,0019. 删除链表的倒数第 N 个结点,删除链表的倒数第 N 个结点,https://leetcode.cn/problems/remove-nth-node-from-end-of-list/,remove-nth-node-from-end-of-list,链表、双指针,https://algo.itcharge.cn/Solutions/0001-0099/remove-nth-node-from-end-of-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0019.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%AC%20N%20%E4%B8%AA%E7%BB%93%E7%82%B9.md,45.6%,中等,7944 -0020,0001-0099,0020. 有效的括号,有效的括号,https://leetcode.cn/problems/valid-parentheses/,valid-parentheses,栈、字符串,https://algo.itcharge.cn/Solutions/0001-0099/valid-parentheses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0020.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.md,44.0%,简单,9710 -0021,0001-0099,0021. 合并两个有序链表,合并两个有序链表,https://leetcode.cn/problems/merge-two-sorted-lists/,merge-two-sorted-lists,递归、链表,https://algo.itcharge.cn/Solutions/0001-0099/merge-two-sorted-lists/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0021.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8.md,66.2%,简单,7227 -0022,0001-0099,0022. 括号生成,括号生成,https://leetcode.cn/problems/generate-parentheses/,generate-parentheses,字符串、动态规划、回溯,https://algo.itcharge.cn/Solutions/0001-0099/generate-parentheses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0022.%20%E6%8B%AC%E5%8F%B7%E7%94%9F%E6%88%90.md,77.5%,中等,4751 -0023,0001-0099,0023. 合并 K 个升序链表,合并 K 个升序链表,https://leetcode.cn/problems/merge-k-sorted-lists/,merge-k-sorted-lists,链表、分治、堆(优先队列)、归并排序,https://algo.itcharge.cn/Solutions/0001-0099/merge-k-sorted-lists/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md,57.8%,困难,4267 -0024,0001-0099,0024. 两两交换链表中的节点,两两交换链表中的节点,https://leetcode.cn/problems/swap-nodes-in-pairs/,swap-nodes-in-pairs,递归、链表,https://algo.itcharge.cn/Solutions/0001-0099/swap-nodes-in-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0024.%20%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md,71.3%,中等,4583 -0025,0001-0099,0025. K 个一组翻转链表,K 个一组翻转链表,https://leetcode.cn/problems/reverse-nodes-in-k-group/,reverse-nodes-in-k-group,递归、链表,https://algo.itcharge.cn/Solutions/0001-0099/reverse-nodes-in-k-group/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0025.%20K%20%E4%B8%AA%E4%B8%80%E7%BB%84%E7%BF%BB%E8%BD%AC%E9%93%BE%E8%A1%A8.md,67.7%,困难,3911 -0026,0001-0099,0026. 删除有序数组中的重复项,删除有序数组中的重复项,https://leetcode.cn/problems/remove-duplicates-from-sorted-array/,remove-duplicates-from-sorted-array,数组、双指针,https://algo.itcharge.cn/Solutions/0001-0099/remove-duplicates-from-sorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0026.%20%E5%88%A0%E9%99%A4%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E9%A1%B9.md,54.8%,简单,8460 -0027,0001-0099,0027. 移除元素,移除元素,https://leetcode.cn/problems/remove-element/,remove-element,数组、双指针,https://algo.itcharge.cn/Solutions/0001-0099/remove-element/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0027.%20%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.md,59.2%,简单,7895 -0028,0001-0099,0028. 找出字符串中第一个匹配项的下标,找出字符串中第一个匹配项的下标,https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/,find-the-index-of-the-first-occurrence-in-a-string,双指针、字符串、字符串匹配,https://algo.itcharge.cn/Solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0028.%20%E6%89%BE%E5%87%BA%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8C%B9%E9%85%8D%E9%A1%B9%E7%9A%84%E4%B8%8B%E6%A0%87.md,42.5%,中等,5825 -0029,0001-0099,0029. 两数相除,两数相除,https://leetcode.cn/problems/divide-two-integers/,divide-two-integers,位运算、数学,https://algo.itcharge.cn/Solutions/0001-0099/divide-two-integers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0029.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E9%99%A4.md,22.2%,中等,1575 -0030,0001-0099,0030. 串联所有单词的子串,串联所有单词的子串,https://leetcode.cn/problems/substring-with-concatenation-of-all-words/,substring-with-concatenation-of-all-words,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/0001-0099/substring-with-concatenation-of-all-words/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0030.%20%E4%B8%B2%E8%81%94%E6%89%80%E6%9C%89%E5%8D%95%E8%AF%8D%E7%9A%84%E5%AD%90%E4%B8%B2.md,39.6%,困难,1300 -0031,0001-0099,0031. 下一个排列,下一个排列,https://leetcode.cn/problems/next-permutation/,next-permutation,数组、双指针,https://algo.itcharge.cn/Solutions/0001-0099/next-permutation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0031.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%8E%92%E5%88%97.md,38.3%,中等,3214 -0032,0001-0099,0032. 最长有效括号,最长有效括号,https://leetcode.cn/problems/longest-valid-parentheses/,longest-valid-parentheses,栈、字符串、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/longest-valid-parentheses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0032.%20%E6%9C%80%E9%95%BF%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7.md,37.2%,困难,2312 -0033,0001-0099,0033. 搜索旋转排序数组,搜索旋转排序数组,https://leetcode.cn/problems/search-in-rotated-sorted-array/,search-in-rotated-sorted-array,数组、二分查找,https://algo.itcharge.cn/Solutions/0001-0099/search-in-rotated-sorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0033.%20%E6%90%9C%E7%B4%A2%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md,43.8%,中等,4631 -0034,0001-0099,0034. 在排序数组中查找元素的第一个和最后一个位置,在排序数组中查找元素的第一个和最后一个位置,https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/,find-first-and-last-position-of-element-in-sorted-array,数组、二分查找,https://algo.itcharge.cn/Solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0034.%20%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%85%83%E7%B4%A0%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%92%8C%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E4%BD%8D%E7%BD%AE.md,42.4%,中等,7442 -0035,0001-0099,0035. 搜索插入位置,搜索插入位置,https://leetcode.cn/problems/search-insert-position/,search-insert-position,数组、二分查找,https://algo.itcharge.cn/Solutions/0001-0099/search-insert-position/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0035.%20%E6%90%9C%E7%B4%A2%E6%8F%92%E5%85%A5%E4%BD%8D%E7%BD%AE.md,45.0%,简单,7586 -0036,0001-0099,0036. 有效的数独,有效的数独,https://leetcode.cn/problems/valid-sudoku/,valid-sudoku,数组、哈希表、矩阵,https://algo.itcharge.cn/Solutions/0001-0099/valid-sudoku/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0036.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%95%B0%E7%8B%AC.md,63.0%,中等,2646 -0037,0001-0099,0037. 解数独,解数独,https://leetcode.cn/problems/sudoku-solver/,sudoku-solver,数组、哈希表、回溯、矩阵,https://algo.itcharge.cn/Solutions/0001-0099/sudoku-solver/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0037.%20%E8%A7%A3%E6%95%B0%E7%8B%AC.md,67.6%,困难,1595 -0038,0001-0099,0038. 外观数列,外观数列,https://leetcode.cn/problems/count-and-say/,count-and-say,字符串,https://algo.itcharge.cn/Solutions/0001-0099/count-and-say/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0038.%20%E5%A4%96%E8%A7%82%E6%95%B0%E5%88%97.md,60.4%,中等,3274 -0039,0001-0099,0039. 组合总和,组合总和,https://leetcode.cn/problems/combination-sum/,combination-sum,数组、回溯,https://algo.itcharge.cn/Solutions/0001-0099/combination-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0039.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.md,72.4%,中等,3907 -0040,0001-0099,0040. 组合总和 II,组合总和 II,https://leetcode.cn/problems/combination-sum-ii/,combination-sum-ii,数组、回溯,https://algo.itcharge.cn/Solutions/0001-0099/combination-sum-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0040.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C%20II.md,59.7%,中等,2734 -0041,0001-0099,0041. 缺失的第一个正数,缺失的第一个正数,https://leetcode.cn/problems/first-missing-positive/,first-missing-positive,数组、哈希表,https://algo.itcharge.cn/Solutions/0001-0099/first-missing-positive/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0041.%20%E7%BC%BA%E5%A4%B1%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%AD%A3%E6%95%B0.md,43.1%,困难,2202 -0042,0001-0099,0042. 接雨水,接雨水,https://leetcode.cn/problems/trapping-rain-water/,trapping-rain-water,栈、数组、双指针、动态规划、单调栈,https://algo.itcharge.cn/Solutions/0001-0099/trapping-rain-water/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0042.%20%E6%8E%A5%E9%9B%A8%E6%B0%B4.md,62.8%,困难,4396 -0043,0001-0099,0043. 字符串相乘,字符串相乘,https://leetcode.cn/problems/multiply-strings/,multiply-strings,数学、字符串、模拟,https://algo.itcharge.cn/Solutions/0001-0099/multiply-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0043.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E4%B9%98.md,44.4%,中等,2056 -0044,0001-0099,0044. 通配符匹配,通配符匹配,https://leetcode.cn/problems/wildcard-matching/,wildcard-matching,贪心、递归、字符串、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/wildcard-matching/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0044.%20%E9%80%9A%E9%85%8D%E7%AC%A6%E5%8C%B9%E9%85%8D.md,33.8%,困难,905 -0045,0001-0099,0045. 跳跃游戏 II,跳跃游戏 II,https://leetcode.cn/problems/jump-game-ii/,jump-game-ii,贪心、数组、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/jump-game-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0045.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20II.md,45.1%,中等,3378 -0046,0001-0099,0046. 全排列,全排列,https://leetcode.cn/problems/permutations/,permutations,数组、回溯,https://algo.itcharge.cn/Solutions/0001-0099/permutations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0046.%20%E5%85%A8%E6%8E%92%E5%88%97.md,78.9%,中等,5792 -0047,0001-0099,0047. 全排列 II,全排列 II,https://leetcode.cn/problems/permutations-ii/,permutations-ii,数组、回溯,https://algo.itcharge.cn/Solutions/0001-0099/permutations-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0047.%20%E5%85%A8%E6%8E%92%E5%88%97%20II.md,65.5%,中等,2867 -0048,0001-0099,0048. 旋转图像,旋转图像,https://leetcode.cn/problems/rotate-image/,rotate-image,数组、数学、矩阵,https://algo.itcharge.cn/Solutions/0001-0099/rotate-image/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0048.%20%E6%97%8B%E8%BD%AC%E5%9B%BE%E5%83%8F.md,74.7%,中等,4452 -0049,0001-0099,0049. 字母异位词分组,字母异位词分组,https://leetcode.cn/problems/group-anagrams/,group-anagrams,数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/0001-0099/group-anagrams/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0049.%20%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E5%88%86%E7%BB%84.md,67.8%,中等,2594 -0050,0001-0099,"0050. Pow(x, n)","Pow(x, n)",https://leetcode.cn/problems/powx-n/,powx-n,递归、数学,https://algo.itcharge.cn/Solutions/0001-0099/powx-n/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0050.%20Pow%28x%2C%20n%29.md,38.0%,中等,2123 -0051,0001-0099,0051. N 皇后,N 皇后,https://leetcode.cn/problems/n-queens/,n-queens,数组、回溯,https://algo.itcharge.cn/Solutions/0001-0099/n-queens/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0051.%20N%20%E7%9A%87%E5%90%8E.md,74.1%,困难,3011 -0052,0001-0099,0052. N 皇后 II,N 皇后 II,https://leetcode.cn/problems/n-queens-ii/,n-queens-ii,回溯,https://algo.itcharge.cn/Solutions/0001-0099/n-queens-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0052.%20N%20%E7%9A%87%E5%90%8E%20II.md,82.4%,困难,933 -0053,0001-0099,0053. 最大子数组和,最大子数组和,https://leetcode.cn/problems/maximum-subarray/,maximum-subarray,数组、分治、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/maximum-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md,54.8%,中等,6888 -0054,0001-0099,0054. 螺旋矩阵,螺旋矩阵,https://leetcode.cn/problems/spiral-matrix/,spiral-matrix,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/0001-0099/spiral-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0054.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5.md,49.3%,中等,3875 -0055,0001-0099,0055. 跳跃游戏,跳跃游戏,https://leetcode.cn/problems/jump-game/,jump-game,贪心、数组、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/jump-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0055.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F.md,43.6%,中等,4932 -0056,0001-0099,0056. 合并区间,合并区间,https://leetcode.cn/problems/merge-intervals/,merge-intervals,数组、排序,https://algo.itcharge.cn/Solutions/0001-0099/merge-intervals/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0056.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md,49.4%,中等,4215 -0057,0001-0099,0057. 插入区间,插入区间,https://leetcode.cn/problems/insert-interval/,insert-interval,数组,https://algo.itcharge.cn/Solutions/0001-0099/insert-interval/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0057.%20%E6%8F%92%E5%85%A5%E5%8C%BA%E9%97%B4.md,42.0%,中等,1414 -0058,0001-0099,0058. 最后一个单词的长度,最后一个单词的长度,https://leetcode.cn/problems/length-of-last-word/,length-of-last-word,字符串,https://algo.itcharge.cn/Solutions/0001-0099/length-of-last-word/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0058.%20%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E5%8D%95%E8%AF%8D%E7%9A%84%E9%95%BF%E5%BA%A6.md,42.8%,简单,4621 -0059,0001-0099,0059. 螺旋矩阵 II,螺旋矩阵 II,https://leetcode.cn/problems/spiral-matrix-ii/,spiral-matrix-ii,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/0001-0099/spiral-matrix-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0059.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5%20II.md,72.8%,中等,3443 -0060,0001-0099,0060. 排列序列,排列序列,https://leetcode.cn/problems/permutation-sequence/,permutation-sequence,递归、数学,https://algo.itcharge.cn/Solutions/0001-0099/permutation-sequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0060.%20%E6%8E%92%E5%88%97%E5%BA%8F%E5%88%97.md,53.5%,困难,1431 -0061,0001-0099,0061. 旋转链表,旋转链表,https://leetcode.cn/problems/rotate-list/,rotate-list,链表、双指针,https://algo.itcharge.cn/Solutions/0001-0099/rotate-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0061.%20%E6%97%8B%E8%BD%AC%E9%93%BE%E8%A1%A8.md,41.4%,中等,3060 -0062,0001-0099,0062. 不同路径,不同路径,https://leetcode.cn/problems/unique-paths/,unique-paths,数学、动态规划、组合数学,https://algo.itcharge.cn/Solutions/0001-0099/unique-paths/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0062.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.md,67.8%,中等,4228 -0063,0001-0099,0063. 不同路径 II,不同路径 II,https://leetcode.cn/problems/unique-paths-ii/,unique-paths-ii,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0001-0099/unique-paths-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0063.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84%20II.md,41.1%,中等,3006 -0064,0001-0099,0064. 最小路径和,最小路径和,https://leetcode.cn/problems/minimum-path-sum/,minimum-path-sum,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0001-0099/minimum-path-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0064.%20%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C.md,69.5%,中等,3408 -0065,0001-0099,0065. 有效数字,有效数字,https://leetcode.cn/problems/valid-number/,valid-number,字符串,https://algo.itcharge.cn/Solutions/0001-0099/valid-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0065.%20%E6%9C%89%E6%95%88%E6%95%B0%E5%AD%97.md,27.6%,困难,924 -0066,0001-0099,0066. 加一,加一,https://leetcode.cn/problems/plus-one/,plus-one,数组、数学,https://algo.itcharge.cn/Solutions/0001-0099/plus-one/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0066.%20%E5%8A%A0%E4%B8%80.md,45.1%,简单,5659 -0067,0001-0099,0067. 二进制求和,二进制求和,https://leetcode.cn/problems/add-binary/,add-binary,位运算、数学、字符串、模拟,https://algo.itcharge.cn/Solutions/0001-0099/add-binary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0067.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%B1%82%E5%92%8C.md,53.0%,简单,2929 -0068,0001-0099,0068. 文本左右对齐,文本左右对齐,https://leetcode.cn/problems/text-justification/,text-justification,数组、字符串、模拟,https://algo.itcharge.cn/Solutions/0001-0099/text-justification/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0068.%20%E6%96%87%E6%9C%AC%E5%B7%A6%E5%8F%B3%E5%AF%B9%E9%BD%90.md,52.4%,困难,802 -0069,0001-0099,0069. x 的平方根,x 的平方根,https://leetcode.cn/problems/sqrtx/,sqrtx,数学、二分查找,https://algo.itcharge.cn/Solutions/0001-0099/sqrtx/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0069.%20x%20%E7%9A%84%E5%B9%B3%E6%96%B9%E6%A0%B9.md,38.4%,简单,3757 -0070,0001-0099,0070. 爬楼梯,爬楼梯,https://leetcode.cn/problems/climbing-stairs/,climbing-stairs,记忆化搜索、数学、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/climbing-stairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md,54.1%,简单,6311 -0071,0001-0099,0071. 简化路径,简化路径,https://leetcode.cn/problems/simplify-path/,simplify-path,栈、字符串,https://algo.itcharge.cn/Solutions/0001-0099/simplify-path/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0071.%20%E7%AE%80%E5%8C%96%E8%B7%AF%E5%BE%84.md,44.2%,中等,1650 -0072,0001-0099,0072. 编辑距离,编辑距离,https://leetcode.cn/problems/edit-distance/,edit-distance,字符串、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/edit-distance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0072.%20%E7%BC%96%E8%BE%91%E8%B7%9D%E7%A6%BB.md,62.8%,困难,3123 -0073,0001-0099,0073. 矩阵置零,矩阵置零,https://leetcode.cn/problems/set-matrix-zeroes/,set-matrix-zeroes,数组、哈希表、矩阵,https://algo.itcharge.cn/Solutions/0001-0099/set-matrix-zeroes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0073.%20%E7%9F%A9%E9%98%B5%E7%BD%AE%E9%9B%B6.md,63.2%,中等,1831 -0074,0001-0099,0074. 搜索二维矩阵,搜索二维矩阵,https://leetcode.cn/problems/search-a-2d-matrix/,search-a-2d-matrix,数组、二分查找、矩阵,https://algo.itcharge.cn/Solutions/0001-0099/search-a-2d-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0074.%20%E6%90%9C%E7%B4%A2%E4%BA%8C%E7%BB%B4%E7%9F%A9%E9%98%B5.md,48.7%,中等,2963 -0075,0001-0099,0075. 颜色分类,颜色分类,https://leetcode.cn/problems/sort-colors/,sort-colors,数组、双指针、排序,https://algo.itcharge.cn/Solutions/0001-0099/sort-colors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0075.%20%E9%A2%9C%E8%89%B2%E5%88%86%E7%B1%BB.md,60.4%,中等,3600 -0076,0001-0099,0076. 最小覆盖子串,最小覆盖子串,https://leetcode.cn/problems/minimum-window-substring/,minimum-window-substring,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/0001-0099/minimum-window-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0076.%20%E6%9C%80%E5%B0%8F%E8%A6%86%E7%9B%96%E5%AD%90%E4%B8%B2.md,45.2%,困难,3407 -0077,0001-0099,0077. 组合,组合,https://leetcode.cn/problems/combinations/,combinations,回溯,https://algo.itcharge.cn/Solutions/0001-0099/combinations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0077.%20%E7%BB%84%E5%90%88.md,77.1%,中等,2912 -0078,0001-0099,0078. 子集,子集,https://leetcode.cn/problems/subsets/,subsets,位运算、数组、回溯,https://algo.itcharge.cn/Solutions/0001-0099/subsets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0078.%20%E5%AD%90%E9%9B%86.md,81.1%,中等,4313 -0079,0001-0099,0079. 单词搜索,单词搜索,https://leetcode.cn/problems/word-search/,word-search,数组、回溯、矩阵,https://algo.itcharge.cn/Solutions/0001-0099/word-search/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0079.%20%E5%8D%95%E8%AF%8D%E6%90%9C%E7%B4%A2.md,46.3%,中等,2603 -0080,0001-0099,0080. 删除有序数组中的重复项 II,删除有序数组中的重复项 II,https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/,remove-duplicates-from-sorted-array-ii,数组、双指针,https://algo.itcharge.cn/Solutions/0001-0099/remove-duplicates-from-sorted-array-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0080.%20%E5%88%A0%E9%99%A4%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E9%A1%B9%20II.md,61.7%,中等,1974 -0081,0001-0099,0081. 搜索旋转排序数组 II,搜索旋转排序数组 II,https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/,search-in-rotated-sorted-array-ii,数组、二分查找,https://algo.itcharge.cn/Solutions/0001-0099/search-in-rotated-sorted-array-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0081.%20%E6%90%9C%E7%B4%A2%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%20II.md,41.0%,中等,1461 -0082,0001-0099,0082. 删除排序链表中的重复元素 II,删除排序链表中的重复元素 II,https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/,remove-duplicates-from-sorted-list-ii,链表、双指针,https://algo.itcharge.cn/Solutions/0001-0099/remove-duplicates-from-sorted-list-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0082.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20II.md,53.5%,中等,2784 -0083,0001-0099,0083. 删除排序链表中的重复元素,删除排序链表中的重复元素,https://leetcode.cn/problems/remove-duplicates-from-sorted-list/,remove-duplicates-from-sorted-list,链表,https://algo.itcharge.cn/Solutions/0001-0099/remove-duplicates-from-sorted-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0083.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md,53.1%,简单,3606 -0084,0001-0099,0084. 柱状图中最大的矩形,柱状图中最大的矩形,https://leetcode.cn/problems/largest-rectangle-in-histogram/,largest-rectangle-in-histogram,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/0001-0099/largest-rectangle-in-histogram/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0084.%20%E6%9F%B1%E7%8A%B6%E5%9B%BE%E4%B8%AD%E6%9C%80%E5%A4%A7%E7%9A%84%E7%9F%A9%E5%BD%A2.md,45.0%,困难,1984 -0085,0001-0099,0085. 最大矩形,最大矩形,https://leetcode.cn/problems/maximal-rectangle/,maximal-rectangle,栈、数组、动态规划、矩阵、单调栈,https://algo.itcharge.cn/Solutions/0001-0099/maximal-rectangle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0085.%20%E6%9C%80%E5%A4%A7%E7%9F%A9%E5%BD%A2.md,54.7%,困难,1196 -0086,0001-0099,0086. 分隔链表,分隔链表,https://leetcode.cn/problems/partition-list/,partition-list,链表、双指针,https://algo.itcharge.cn/Solutions/0001-0099/partition-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0086.%20%E5%88%86%E9%9A%94%E9%93%BE%E8%A1%A8.md,64.2%,中等,2083 -0087,0001-0099,0087. 扰乱字符串,扰乱字符串,https://leetcode.cn/problems/scramble-string/,scramble-string,字符串、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/scramble-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0087.%20%E6%89%B0%E4%B9%B1%E5%AD%97%E7%AC%A6%E4%B8%B2.md,47.3%,困难,440 -0088,0001-0099,0088. 合并两个有序数组,合并两个有序数组,https://leetcode.cn/problems/merge-sorted-array/,merge-sorted-array,数组、双指针、排序,https://algo.itcharge.cn/Solutions/0001-0099/merge-sorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0088.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md,52.5%,简单,6055 -0089,0001-0099,0089. 格雷编码,格雷编码,https://leetcode.cn/problems/gray-code/,gray-code,位运算、数学、回溯,https://algo.itcharge.cn/Solutions/0001-0099/gray-code/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0089.%20%E6%A0%BC%E9%9B%B7%E7%BC%96%E7%A0%81.md,75.5%,中等,906 -0090,0001-0099,0090. 子集 II,子集 II,https://leetcode.cn/problems/subsets-ii/,subsets-ii,位运算、数组、回溯,https://algo.itcharge.cn/Solutions/0001-0099/subsets-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0090.%20%E5%AD%90%E9%9B%86%20II.md,63.6%,中等,2267 -0091,0001-0099,0091. 解码方法,解码方法,https://leetcode.cn/problems/decode-ways/,decode-ways,字符串、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/decode-ways/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0091.%20%E8%A7%A3%E7%A0%81%E6%96%B9%E6%B3%95.md,33.2%,中等,2315 -0092,0001-0099,0092. 反转链表 II,反转链表 II,https://leetcode.cn/problems/reverse-linked-list-ii/,reverse-linked-list-ii,链表,https://algo.itcharge.cn/Solutions/0001-0099/reverse-linked-list-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0092.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8%20II.md,55.7%,中等,3711 -0093,0001-0099,0093. 复原 IP 地址,复原 IP 地址,https://leetcode.cn/problems/restore-ip-addresses/,restore-ip-addresses,字符串、回溯,https://algo.itcharge.cn/Solutions/0001-0099/restore-ip-addresses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0093.%20%E5%A4%8D%E5%8E%9F%20IP%20%E5%9C%B0%E5%9D%80.md,58.1%,中等,2476 -0094,0001-0099,0094. 二叉树的中序遍历,二叉树的中序遍历,https://leetcode.cn/problems/binary-tree-inorder-traversal/,binary-tree-inorder-traversal,栈、树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0001-0099/binary-tree-inorder-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0094.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86.md,76.2%,简单,4277 -0095,0001-0099,0095. 不同的二叉搜索树 II,不同的二叉搜索树 II,https://leetcode.cn/problems/unique-binary-search-trees-ii/,unique-binary-search-trees-ii,树、二叉搜索树、动态规划、回溯、二叉树,https://algo.itcharge.cn/Solutions/0001-0099/unique-binary-search-trees-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0095.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%20II.md,73.4%,中等,1054 -0096,0001-0099,0096. 不同的二叉搜索树,不同的二叉搜索树,https://leetcode.cn/problems/unique-binary-search-trees/,unique-binary-search-trees,树、二叉搜索树、数学、动态规划、二叉树,https://algo.itcharge.cn/Solutions/0001-0099/unique-binary-search-trees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0096.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,70.9%,中等,2502 -0097,0001-0099,0097. 交错字符串,交错字符串,https://leetcode.cn/problems/interleaving-string/,interleaving-string,字符串、动态规划,https://algo.itcharge.cn/Solutions/0001-0099/interleaving-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0097.%20%E4%BA%A4%E9%94%99%E5%AD%97%E7%AC%A6%E4%B8%B2.md,44.7%,中等,888 -0098,0001-0099,0098. 验证二叉搜索树,验证二叉搜索树,https://leetcode.cn/problems/validate-binary-search-tree/,validate-binary-search-tree,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0001-0099/validate-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0098.%20%E9%AA%8C%E8%AF%81%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,37.0%,中等,4035 -0099,0001-0099,0099. 恢复二叉搜索树,恢复二叉搜索树,https://leetcode.cn/problems/recover-binary-search-tree/,recover-binary-search-tree,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0001-0099/recover-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0099.%20%E6%81%A2%E5%A4%8D%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,60.3%,中等,1091 -0100,0100-0199,0100. 相同的树,相同的树,https://leetcode.cn/problems/same-tree/,same-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/same-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0100.%20%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91.md,60.0%,简单,3145 -0101,0100-0199,0101. 对称二叉树,对称二叉树,https://leetcode.cn/problems/symmetric-tree/,symmetric-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/symmetric-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0101.%20%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.md,58.8%,简单,4297 -0102,0100-0199,0102. 二叉树的层序遍历,二叉树的层序遍历,https://leetcode.cn/problems/binary-tree-level-order-traversal/,binary-tree-level-order-traversal,树、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/binary-tree-level-order-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0102.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md,65.6%,中等,4512 -0103,0100-0199,0103. 二叉树的锯齿形层序遍历,二叉树的锯齿形层序遍历,https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/,binary-tree-zigzag-level-order-traversal,树、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/binary-tree-zigzag-level-order-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0103.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%94%AF%E9%BD%BF%E5%BD%A2%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md,57.5%,中等,2476 -0104,0100-0199,0104. 二叉树的最大深度,二叉树的最大深度,https://leetcode.cn/problems/maximum-depth-of-binary-tree/,maximum-depth-of-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/maximum-depth-of-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0104.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md,77.1%,简单,5159 -0105,0100-0199,0105. 从前序与中序遍历序列构造二叉树,从前序与中序遍历序列构造二叉树,https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/,construct-binary-tree-from-preorder-and-inorder-traversal,树、数组、哈希表、分治、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0105.%20%E4%BB%8E%E5%89%8D%E5%BA%8F%E4%B8%8E%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md,71.3%,中等,2626 -0106,0100-0199,0106. 从中序与后序遍历序列构造二叉树,从中序与后序遍历序列构造二叉树,https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/,construct-binary-tree-from-inorder-and-postorder-traversal,树、数组、哈希表、分治、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0106.%20%E4%BB%8E%E4%B8%AD%E5%BA%8F%E4%B8%8E%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md,72.1%,中等,1737 -0107,0100-0199,0107. 二叉树的层序遍历 II,二叉树的层序遍历 II,https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/,binary-tree-level-order-traversal-ii,树、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/binary-tree-level-order-traversal-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0107.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86%20II.md,72.5%,中等,1973 -0108,0100-0199,0108. 将有序数组转换为二叉搜索树,将有序数组转换为二叉搜索树,https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/,convert-sorted-array-to-binary-search-tree,树、二叉搜索树、数组、分治、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/convert-sorted-array-to-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0108.%20%E5%B0%86%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,77.4%,简单,2082 -0109,0100-0199,0109. 有序链表转换二叉搜索树,有序链表转换二叉搜索树,https://leetcode.cn/problems/convert-sorted-list-to-binary-search-tree/,convert-sorted-list-to-binary-search-tree,树、二叉搜索树、链表、分治、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/convert-sorted-list-to-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0109.%20%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8%E8%BD%AC%E6%8D%A2%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,76.5%,中等,1116 -0110,0100-0199,0110. 平衡二叉树,平衡二叉树,https://leetcode.cn/problems/balanced-binary-tree/,balanced-binary-tree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/balanced-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0110.%20%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.md,57.5%,简单,2586 -0111,0100-0199,0111. 二叉树的最小深度,二叉树的最小深度,https://leetcode.cn/problems/minimum-depth-of-binary-tree/,minimum-depth-of-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/minimum-depth-of-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0111.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md,52.2%,简单,3859 -0112,0100-0199,0112. 路径总和,路径总和,https://leetcode.cn/problems/path-sum/,path-sum,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/path-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0112.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C.md,53.5%,简单,3126 -0113,0100-0199,0113. 路径总和 II,路径总和 II,https://leetcode.cn/problems/path-sum-ii/,path-sum-ii,树、深度优先搜索、回溯、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/path-sum-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0113.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C%20II.md,63.2%,中等,2216 -0114,0100-0199,0114. 二叉树展开为链表,二叉树展开为链表,https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/,flatten-binary-tree-to-linked-list,栈、树、深度优先搜索、链表、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/flatten-binary-tree-to-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0114.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E5%B1%95%E5%BC%80%E4%B8%BA%E9%93%BE%E8%A1%A8.md,73.0%,中等,2921 -0115,0100-0199,0115. 不同的子序列,不同的子序列,https://leetcode.cn/problems/distinct-subsequences/,distinct-subsequences,字符串、动态规划,https://algo.itcharge.cn/Solutions/0100-0199/distinct-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0115.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97.md,52.2%,困难,1251 -0116,0100-0199,0116. 填充每个节点的下一个右侧节点指针,填充每个节点的下一个右侧节点指针,https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/,populating-next-right-pointers-in-each-node,树、深度优先搜索、广度优先搜索、链表、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/populating-next-right-pointers-in-each-node/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0116.%20%E5%A1%AB%E5%85%85%E6%AF%8F%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%8F%B3%E4%BE%A7%E8%8A%82%E7%82%B9%E6%8C%87%E9%92%88.md,72.6%,中等,2653 -0117,0100-0199,0117. 填充每个节点的下一个右侧节点指针 II,填充每个节点的下一个右侧节点指针 II,https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/,populating-next-right-pointers-in-each-node-ii,树、深度优先搜索、广度优先搜索、链表、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/populating-next-right-pointers-in-each-node-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0117.%20%E5%A1%AB%E5%85%85%E6%AF%8F%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%8F%B3%E4%BE%A7%E8%8A%82%E7%82%B9%E6%8C%87%E9%92%88%20II.md,65.8%,中等,1378 -0118,0100-0199,0118. 杨辉三角,杨辉三角,https://leetcode.cn/problems/pascals-triangle/,pascals-triangle,数组、动态规划,https://algo.itcharge.cn/Solutions/0100-0199/pascals-triangle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0118.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92.md,75.5%,简单,3186 -0119,0100-0199,0119. 杨辉三角 II,杨辉三角 II,https://leetcode.cn/problems/pascals-triangle-ii/,pascals-triangle-ii,数组、动态规划,https://algo.itcharge.cn/Solutions/0100-0199/pascals-triangle-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0119.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%20II.md,68.9%,简单,2067 -0120,0100-0199,0120. 三角形最小路径和,三角形最小路径和,https://leetcode.cn/problems/triangle/,triangle,数组、动态规划,https://algo.itcharge.cn/Solutions/0100-0199/triangle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0120.%20%E4%B8%89%E8%A7%92%E5%BD%A2%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C.md,68.7%,中等,2422 -0121,0100-0199,0121. 买卖股票的最佳时机,买卖股票的最佳时机,https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/,best-time-to-buy-and-sell-stock,数组、动态规划,https://algo.itcharge.cn/Solutions/0100-0199/best-time-to-buy-and-sell-stock/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0121.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA.md,58.0%,简单,6175 -0122,0100-0199,0122. 买卖股票的最佳时机 II,买卖股票的最佳时机 II,https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/,best-time-to-buy-and-sell-stock-ii,贪心、数组,https://algo.itcharge.cn/Solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0122.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20II.md,72.0%,中等,4616 -0123,0100-0199,0123. 买卖股票的最佳时机 III,买卖股票的最佳时机 III,https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/,best-time-to-buy-and-sell-stock-iii,数组、动态规划,https://algo.itcharge.cn/Solutions/0100-0199/best-time-to-buy-and-sell-stock-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0123.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20III.md,58.8%,困难,1475 -0124,0100-0199,0124. 二叉树中的最大路径和,二叉树中的最大路径和,https://leetcode.cn/problems/binary-tree-maximum-path-sum/,binary-tree-maximum-path-sum,树、深度优先搜索、动态规划、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/binary-tree-maximum-path-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md,45.3%,困难,1948 -0125,0100-0199,0125. 验证回文串,验证回文串,https://leetcode.cn/problems/valid-palindrome/,valid-palindrome,双指针、字符串,https://algo.itcharge.cn/Solutions/0100-0199/valid-palindrome/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0125.%20%E9%AA%8C%E8%AF%81%E5%9B%9E%E6%96%87%E4%B8%B2.md,46.4%,简单,2976 -0126,0100-0199,0126. 单词接龙 II,单词接龙 II,https://leetcode.cn/problems/word-ladder-ii/,word-ladder-ii,广度优先搜索、哈希表、字符串、回溯,https://algo.itcharge.cn/Solutions/0100-0199/word-ladder-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0126.%20%E5%8D%95%E8%AF%8D%E6%8E%A5%E9%BE%99%20II.md,37.9%,困难,493 -0127,0100-0199,0127. 单词接龙,单词接龙,https://leetcode.cn/problems/word-ladder/,word-ladder,广度优先搜索、哈希表、字符串,https://algo.itcharge.cn/Solutions/0100-0199/word-ladder/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0127.%20%E5%8D%95%E8%AF%8D%E6%8E%A5%E9%BE%99.md,48.3%,困难,1008 -0128,0100-0199,0128. 最长连续序列,最长连续序列,https://leetcode.cn/problems/longest-consecutive-sequence/,longest-consecutive-sequence,并查集、数组、哈希表,https://algo.itcharge.cn/Solutions/0100-0199/longest-consecutive-sequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0128.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md,54.7%,中等,2349 -0129,0100-0199,0129. 求根节点到叶节点数字之和,求根节点到叶节点数字之和,https://leetcode.cn/problems/sum-root-to-leaf-numbers/,sum-root-to-leaf-numbers,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/sum-root-to-leaf-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0129.%20%E6%B1%82%E6%A0%B9%E8%8A%82%E7%82%B9%E5%88%B0%E5%8F%B6%E8%8A%82%E7%82%B9%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C.md,70.1%,中等,1772 -0130,0100-0199,0130. 被围绕的区域,被围绕的区域,https://leetcode.cn/problems/surrounded-regions/,surrounded-regions,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/0100-0199/surrounded-regions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0130.%20%E8%A2%AB%E5%9B%B4%E7%BB%95%E7%9A%84%E5%8C%BA%E5%9F%9F.md,46.2%,中等,2210 -0131,0100-0199,0131. 分割回文串,分割回文串,https://leetcode.cn/problems/palindrome-partitioning/,palindrome-partitioning,字符串、动态规划、回溯,https://algo.itcharge.cn/Solutions/0100-0199/palindrome-partitioning/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0131.%20%E5%88%86%E5%89%B2%E5%9B%9E%E6%96%87%E4%B8%B2.md,73.4%,中等,1739 -0132,0100-0199,0132. 分割回文串 II,分割回文串 II,https://leetcode.cn/problems/palindrome-partitioning-ii/,palindrome-partitioning-ii,字符串、动态规划,https://algo.itcharge.cn/Solutions/0100-0199/palindrome-partitioning-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0132.%20%E5%88%86%E5%89%B2%E5%9B%9E%E6%96%87%E4%B8%B2%20II.md,49.9%,困难,621 -0133,0100-0199,0133. 克隆图,克隆图,https://leetcode.cn/problems/clone-graph/,clone-graph,深度优先搜索、广度优先搜索、图、哈希表,https://algo.itcharge.cn/Solutions/0100-0199/clone-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0133.%20%E5%85%8B%E9%9A%86%E5%9B%BE.md,69.0%,中等,805 -0134,0100-0199,0134. 加油站,加油站,https://leetcode.cn/problems/gas-station/,gas-station,贪心、数组,https://algo.itcharge.cn/Solutions/0100-0199/gas-station/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0134.%20%E5%8A%A0%E6%B2%B9%E7%AB%99.md,51.3%,中等,1732 -0135,0100-0199,0135. 分发糖果,分发糖果,https://leetcode.cn/problems/candy/,candy,贪心、数组,https://algo.itcharge.cn/Solutions/0100-0199/candy/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0135.%20%E5%88%86%E5%8F%91%E7%B3%96%E6%9E%9C.md,50.5%,困难,1557 -0136,0100-0199,0136. 只出现一次的数字,只出现一次的数字,https://leetcode.cn/problems/single-number/,single-number,位运算、数组,https://algo.itcharge.cn/Solutions/0100-0199/single-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md,72.3%,简单,4067 -0137,0100-0199,0137. 只出现一次的数字 II,只出现一次的数字 II,https://leetcode.cn/problems/single-number-ii/,single-number-ii,位运算、数组,https://algo.itcharge.cn/Solutions/0100-0199/single-number-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0137.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97%20II.md,71.8%,中等,1089 -0138,0100-0199,0138. 复制带随机指针的链表,复制带随机指针的链表,https://leetcode.cn/problems/copy-list-with-random-pointer/,copy-list-with-random-pointer,哈希表、链表,https://algo.itcharge.cn/Solutions/0100-0199/copy-list-with-random-pointer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0138.%20%E5%A4%8D%E5%88%B6%E5%B8%A6%E9%9A%8F%E6%9C%BA%E6%8C%87%E9%92%88%E7%9A%84%E9%93%BE%E8%A1%A8.md,66.0%,中等,1403 -0139,0100-0199,0139. 单词拆分,单词拆分,https://leetcode.cn/problems/word-break/,word-break,字典树、记忆化搜索、数组、哈希表、字符串、动态规划,https://algo.itcharge.cn/Solutions/0100-0199/word-break/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0139.%20%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.md,54.2%,中等,2500 -0140,0100-0199,0140. 单词拆分 II,单词拆分 II,https://leetcode.cn/problems/word-break-ii/,word-break-ii,字典树、记忆化搜索、数组、哈希表、字符串、动态规划、回溯,https://algo.itcharge.cn/Solutions/0100-0199/word-break-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0140.%20%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86%20II.md,57.2%,困难,996 -0141,0100-0199,0141. 环形链表,环形链表,https://leetcode.cn/problems/linked-list-cycle/,linked-list-cycle,哈希表、链表、双指针,https://algo.itcharge.cn/Solutions/0100-0199/linked-list-cycle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0141.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8.md,51.6%,简单,5009 -0142,0100-0199,0142. 环形链表 II,环形链表 II,https://leetcode.cn/problems/linked-list-cycle-ii/,linked-list-cycle-ii,哈希表、链表、双指针,https://algo.itcharge.cn/Solutions/0100-0199/linked-list-cycle-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0142.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8%20II.md,57.1%,中等,3798 -0143,0100-0199,0143. 重排链表,重排链表,https://leetcode.cn/problems/reorder-list/,reorder-list,栈、递归、链表、双指针,https://algo.itcharge.cn/Solutions/0100-0199/reorder-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0143.%20%E9%87%8D%E6%8E%92%E9%93%BE%E8%A1%A8.md,64.9%,中等,1851 -0144,0100-0199,0144. 二叉树的前序遍历,二叉树的前序遍历,https://leetcode.cn/problems/binary-tree-preorder-traversal/,binary-tree-preorder-traversal,栈、树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/binary-tree-preorder-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0144.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md,71.3%,简单,3566 -0145,0100-0199,0145. 二叉树的后序遍历,二叉树的后序遍历,https://leetcode.cn/problems/binary-tree-postorder-traversal/,binary-tree-postorder-traversal,栈、树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/binary-tree-postorder-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0145.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md,76.3%,简单,2714 -0146,0100-0199,0146. LRU 缓存,LRU 缓存,https://leetcode.cn/problems/lru-cache/,lru-cache,设计、哈希表、链表、双向链表,https://algo.itcharge.cn/Solutions/0100-0199/lru-cache/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0146.%20LRU%20%E7%BC%93%E5%AD%98.md,53.5%,中等,3603 -0147,0100-0199,0147. 对链表进行插入排序,对链表进行插入排序,https://leetcode.cn/problems/insertion-sort-list/,insertion-sort-list,链表、排序,https://algo.itcharge.cn/Solutions/0100-0199/insertion-sort-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0147.%20%E5%AF%B9%E9%93%BE%E8%A1%A8%E8%BF%9B%E8%A1%8C%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F.md,69.5%,中等,1107 -0148,0100-0199,0148. 排序链表,排序链表,https://leetcode.cn/problems/sort-list/,sort-list,链表、双指针、分治、排序、归并排序,https://algo.itcharge.cn/Solutions/0100-0199/sort-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0148.%20%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8.md,65.7%,中等,2196 -0149,0100-0199,0149. 直线上最多的点数,直线上最多的点数,https://leetcode.cn/problems/max-points-on-a-line/,max-points-on-a-line,几何、数组、哈希表、数学,https://algo.itcharge.cn/Solutions/0100-0199/max-points-on-a-line/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0149.%20%E7%9B%B4%E7%BA%BF%E4%B8%8A%E6%9C%80%E5%A4%9A%E7%9A%84%E7%82%B9%E6%95%B0.md,39.3%,困难,786 -0150,0100-0199,0150. 逆波兰表达式求值,逆波兰表达式求值,https://leetcode.cn/problems/evaluate-reverse-polish-notation/,evaluate-reverse-polish-notation,栈、数组、数学,https://algo.itcharge.cn/Solutions/0100-0199/evaluate-reverse-polish-notation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0150.%20%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B1%82%E5%80%BC.md,52.7%,中等,1962 -0151,0100-0199,0151. 反转字符串中的单词,反转字符串中的单词,https://leetcode.cn/problems/reverse-words-in-a-string/,reverse-words-in-a-string,双指针、字符串,https://algo.itcharge.cn/Solutions/0100-0199/reverse-words-in-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0151.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D.md,51.8%,中等,3043 -0152,0100-0199,0152. 乘积最大子数组,乘积最大子数组,https://leetcode.cn/problems/maximum-product-subarray/,maximum-product-subarray,数组、动态规划,https://algo.itcharge.cn/Solutions/0100-0199/maximum-product-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0152.%20%E4%B9%98%E7%A7%AF%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84.md,43.1%,中等,2142 -0153,0100-0199,0153. 寻找旋转排序数组中的最小值,寻找旋转排序数组中的最小值,https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/,find-minimum-in-rotated-sorted-array,数组、二分查找,https://algo.itcharge.cn/Solutions/0100-0199/find-minimum-in-rotated-sorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0153.%20%E5%AF%BB%E6%89%BE%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md,57.0%,中等,2473 -0154,0100-0199,0154. 寻找旋转排序数组中的最小值 II,寻找旋转排序数组中的最小值 II,https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/,find-minimum-in-rotated-sorted-array-ii,数组、二分查找,https://algo.itcharge.cn/Solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0154.%20%E5%AF%BB%E6%89%BE%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC%20II.md,52.5%,困难,1287 -0155,0100-0199,0155. 最小栈,最小栈,https://leetcode.cn/problems/min-stack/,min-stack,栈、设计,https://algo.itcharge.cn/Solutions/0100-0199/min-stack/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0155.%20%E6%9C%80%E5%B0%8F%E6%A0%88.md,59.0%,中等,2550 -0156,0100-0199,0156. 上下翻转二叉树,上下翻转二叉树,https://leetcode.cn/problems/binary-tree-upside-down/,binary-tree-upside-down,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/binary-tree-upside-down/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0156.%20%E4%B8%8A%E4%B8%8B%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.md,72.3%,中等,234 -0157,0100-0199,0157. 用 Read4 读取 N 个字符,用 Read4 读取 N 个字符,https://leetcode.cn/problems/read-n-characters-given-read4/,read-n-characters-given-read4,字符串、交互、模拟,https://algo.itcharge.cn/Solutions/0100-0199/read-n-characters-given-read4/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0157.%20%E7%94%A8%20Read4%20%E8%AF%BB%E5%8F%96%20N%20%E4%B8%AA%E5%AD%97%E7%AC%A6.md,54.4%,简单,135 -0158,0100-0199,0158. 用 Read4 读取 N 个字符 II,用 Read4 读取 N 个字符 II,https://leetcode.cn/problems/read-n-characters-given-read4-ii-call-multiple-times/,read-n-characters-given-read4-ii-call-multiple-times,字符串、交互、模拟,https://algo.itcharge.cn/Solutions/0100-0199/read-n-characters-given-read4-ii-call-multiple-times/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0158.%20%E7%94%A8%20Read4%20%E8%AF%BB%E5%8F%96%20N%20%E4%B8%AA%E5%AD%97%E7%AC%A6%20II.md,60.0%,困难,104 -0159,0100-0199,0159. 至多包含两个不同字符的最长子串,至多包含两个不同字符的最长子串,https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/,longest-substring-with-at-most-two-distinct-characters,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0159.%20%E8%87%B3%E5%A4%9A%E5%8C%85%E5%90%AB%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md,55.6%,中等,345 -0160,0100-0199,0160. 相交链表,相交链表,https://leetcode.cn/problems/intersection-of-two-linked-lists/,intersection-of-two-linked-lists,哈希表、链表、双指针,https://algo.itcharge.cn/Solutions/0100-0199/intersection-of-two-linked-lists/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0160.%20%E7%9B%B8%E4%BA%A4%E9%93%BE%E8%A1%A8.md,63.7%,简单,3730 -0161,0100-0199,0161. 相隔为 1 的编辑距离,相隔为 1 的编辑距离,https://leetcode.cn/problems/one-edit-distance/,one-edit-distance,双指针、字符串,https://algo.itcharge.cn/Solutions/0100-0199/one-edit-distance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0161.%20%E7%9B%B8%E9%9A%94%E4%B8%BA%201%20%E7%9A%84%E7%BC%96%E8%BE%91%E8%B7%9D%E7%A6%BB.md,33.9%,中等,184 -0162,0100-0199,0162. 寻找峰值,寻找峰值,https://leetcode.cn/problems/find-peak-element/,find-peak-element,数组、二分查找,https://algo.itcharge.cn/Solutions/0100-0199/find-peak-element/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0162.%20%E5%AF%BB%E6%89%BE%E5%B3%B0%E5%80%BC.md,49.3%,中等,1956 -0163,0100-0199,0163. 缺失的区间,缺失的区间,https://leetcode.cn/problems/missing-ranges/,missing-ranges,数组,https://algo.itcharge.cn/Solutions/0100-0199/missing-ranges/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0163.%20%E7%BC%BA%E5%A4%B1%E7%9A%84%E5%8C%BA%E9%97%B4.md,35.6%,简单,258 -0164,0100-0199,0164. 最大间距,最大间距,https://leetcode.cn/problems/maximum-gap/,maximum-gap,数组、桶排序、基数排序、排序,https://algo.itcharge.cn/Solutions/0100-0199/maximum-gap/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0164.%20%E6%9C%80%E5%A4%A7%E9%97%B4%E8%B7%9D.md,60.2%,困难,661 -0165,0100-0199,0165. 比较版本号,比较版本号,https://leetcode.cn/problems/compare-version-numbers/,compare-version-numbers,双指针、字符串,https://algo.itcharge.cn/Solutions/0100-0199/compare-version-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0165.%20%E6%AF%94%E8%BE%83%E7%89%88%E6%9C%AC%E5%8F%B7.md,51.8%,中等,1304 -0166,0100-0199,0166. 分数到小数,分数到小数,https://leetcode.cn/problems/fraction-to-recurring-decimal/,fraction-to-recurring-decimal,哈希表、数学、字符串,https://algo.itcharge.cn/Solutions/0100-0199/fraction-to-recurring-decimal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0166.%20%E5%88%86%E6%95%B0%E5%88%B0%E5%B0%8F%E6%95%B0.md,33.4%,中等,530 -0167,0100-0199,0167. 两数之和 II - 输入有序数组,两数之和 II - 输入有序数组,https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/,two-sum-ii-input-array-is-sorted,数组、双指针、二分查找,https://algo.itcharge.cn/Solutions/0100-0199/two-sum-ii-input-array-is-sorted/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0167.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C%20II%20-%20%E8%BE%93%E5%85%A5%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md,59.4%,中等,3672 -0168,0100-0199,0168. Excel表列名称,Excel表列名称,https://leetcode.cn/problems/excel-sheet-column-title/,excel-sheet-column-title,数学、字符串,https://algo.itcharge.cn/Solutions/0100-0199/excel-sheet-column-title/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0168.%20Excel%E8%A1%A8%E5%88%97%E5%90%8D%E7%A7%B0.md,43.8%,简单,1157 -0169,0100-0199,0169. 多数元素,多数元素,https://leetcode.cn/problems/majority-element/,majority-element,数组、哈希表、分治、计数、排序,https://algo.itcharge.cn/Solutions/0100-0199/majority-element/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0169.%20%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0.md,66.8%,简单,3743 -0170,0100-0199,0170. 两数之和 III - 数据结构设计,两数之和 III - 数据结构设计,https://leetcode.cn/problems/two-sum-iii-data-structure-design/,two-sum-iii-data-structure-design,设计、数组、哈希表、双指针、数据流,https://algo.itcharge.cn/Solutions/0100-0199/two-sum-iii-data-structure-design/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0170.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C%20III%20-%20%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E8%AE%BE%E8%AE%A1.md,42.7%,简单,156 -0171,0100-0199,0171. Excel 表列序号,Excel 表列序号,https://leetcode.cn/problems/excel-sheet-column-number/,excel-sheet-column-number,数学、字符串,https://algo.itcharge.cn/Solutions/0100-0199/excel-sheet-column-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0171.%20Excel%20%E8%A1%A8%E5%88%97%E5%BA%8F%E5%8F%B7.md,71.3%,简单,1343 -0172,0100-0199,0172. 阶乘后的零,阶乘后的零,https://leetcode.cn/problems/factorial-trailing-zeroes/,factorial-trailing-zeroes,数学,https://algo.itcharge.cn/Solutions/0100-0199/factorial-trailing-zeroes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0172.%20%E9%98%B6%E4%B9%98%E5%90%8E%E7%9A%84%E9%9B%B6.md,50.0%,中等,1123 -0173,0100-0199,0173. 二叉搜索树迭代器,二叉搜索树迭代器,https://leetcode.cn/problems/binary-search-tree-iterator/,binary-search-tree-iterator,栈、树、设计、二叉搜索树、二叉树、迭代器,https://algo.itcharge.cn/Solutions/0100-0199/binary-search-tree-iterator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0173.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BF%AD%E4%BB%A3%E5%99%A8.md,81.6%,中等,896 -0174,0100-0199,0174. 地下城游戏,地下城游戏,https://leetcode.cn/problems/dungeon-game/,dungeon-game,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0100-0199/dungeon-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0174.%20%E5%9C%B0%E4%B8%8B%E5%9F%8E%E6%B8%B8%E6%88%8F.md,48.7%,困难,1403 -0175,0100-0199,0175. 组合两个表,组合两个表,https://leetcode.cn/problems/combine-two-tables/,combine-two-tables,,https://algo.itcharge.cn/Solutions/0100-0199/combine-two-tables/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0175.%20%E7%BB%84%E5%90%88%E4%B8%A4%E4%B8%AA%E8%A1%A8.md,74.2%,简单,2159 -0176,0100-0199,0176. 第二高的薪水,第二高的薪水,https://leetcode.cn/problems/second-highest-salary/,second-highest-salary,数据库,https://algo.itcharge.cn/Solutions/0100-0199/second-highest-salary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0176.%20%E7%AC%AC%E4%BA%8C%E9%AB%98%E7%9A%84%E8%96%AA%E6%B0%B4.md,36.5%,中等,1677 -0177,0100-0199,0177. 第N高的薪水,第N高的薪水,https://leetcode.cn/problems/nth-highest-salary/,nth-highest-salary,数据库,https://algo.itcharge.cn/Solutions/0100-0199/nth-highest-salary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0177.%20%E7%AC%ACN%E9%AB%98%E7%9A%84%E8%96%AA%E6%B0%B4.md,46.7%,中等,815 -0178,0100-0199,0178. 分数排名,分数排名,https://leetcode.cn/problems/rank-scores/,rank-scores,数据库,https://algo.itcharge.cn/Solutions/0100-0199/rank-scores/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0178.%20%E5%88%86%E6%95%B0%E6%8E%92%E5%90%8D.md,61.1%,中等,1012 -0179,0100-0199,0179. 最大数,最大数,https://leetcode.cn/problems/largest-number/,largest-number,贪心、数组、字符串、排序,https://algo.itcharge.cn/Solutions/0100-0199/largest-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0179.%20%E6%9C%80%E5%A4%A7%E6%95%B0.md,41.1%,中等,1451 -0180,0100-0199,0180. 连续出现的数字,连续出现的数字,https://leetcode.cn/problems/consecutive-numbers/,consecutive-numbers,数据库,https://algo.itcharge.cn/Solutions/0100-0199/consecutive-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0180.%20%E8%BF%9E%E7%BB%AD%E5%87%BA%E7%8E%B0%E7%9A%84%E6%95%B0%E5%AD%97.md,47.8%,中等,877 -0181,0100-0199,0181. 超过经理收入的员工,超过经理收入的员工,https://leetcode.cn/problems/employees-earning-more-than-their-managers/,employees-earning-more-than-their-managers,数据库,https://algo.itcharge.cn/Solutions/0100-0199/employees-earning-more-than-their-managers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0181.%20%E8%B6%85%E8%BF%87%E7%BB%8F%E7%90%86%E6%94%B6%E5%85%A5%E7%9A%84%E5%91%98%E5%B7%A5.md,68.7%,简单,1115 -0182,0100-0199,0182. 查找重复的电子邮箱,查找重复的电子邮箱,https://leetcode.cn/problems/duplicate-emails/,duplicate-emails,数据库,https://algo.itcharge.cn/Solutions/0100-0199/duplicate-emails/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0182.%20%E6%9F%A5%E6%89%BE%E9%87%8D%E5%A4%8D%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E7%AE%B1.md,79.0%,简单,1015 -0183,0100-0199,0183. 从不订购的客户,从不订购的客户,https://leetcode.cn/problems/customers-who-never-order/,customers-who-never-order,数据库,https://algo.itcharge.cn/Solutions/0100-0199/customers-who-never-order/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0183.%20%E4%BB%8E%E4%B8%8D%E8%AE%A2%E8%B4%AD%E7%9A%84%E5%AE%A2%E6%88%B7.md,66.3%,简单,1117 -0184,0100-0199,0184. 部门工资最高的员工,部门工资最高的员工,https://leetcode.cn/problems/department-highest-salary/,department-highest-salary,数据库,https://algo.itcharge.cn/Solutions/0100-0199/department-highest-salary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0184.%20%E9%83%A8%E9%97%A8%E5%B7%A5%E8%B5%84%E6%9C%80%E9%AB%98%E7%9A%84%E5%91%98%E5%B7%A5.md,51.3%,中等,1123 -0185,0100-0199,0185. 部门工资前三高的所有员工,部门工资前三高的所有员工,https://leetcode.cn/problems/department-top-three-salaries/,department-top-three-salaries,数据库,https://algo.itcharge.cn/Solutions/0100-0199/department-top-three-salaries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0185.%20%E9%83%A8%E9%97%A8%E5%B7%A5%E8%B5%84%E5%89%8D%E4%B8%89%E9%AB%98%E7%9A%84%E6%89%80%E6%9C%89%E5%91%98%E5%B7%A5.md,53.0%,困难,1020 -0186,0100-0199,0186. 反转字符串中的单词 II,反转字符串中的单词 II,https://leetcode.cn/problems/reverse-words-in-a-string-ii/,reverse-words-in-a-string-ii,双指针、字符串,https://algo.itcharge.cn/Solutions/0100-0199/reverse-words-in-a-string-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0186.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D%20II.md,76.0%,中等,186 -0187,0100-0199,0187. 重复的DNA序列,重复的DNA序列,https://leetcode.cn/problems/repeated-dna-sequences/,repeated-dna-sequences,位运算、哈希表、字符串、滑动窗口、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/0100-0199/repeated-dna-sequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0187.%20%E9%87%8D%E5%A4%8D%E7%9A%84DNA%E5%BA%8F%E5%88%97.md,53.4%,中等,1007 -0188,0100-0199,0188. 买卖股票的最佳时机 IV,买卖股票的最佳时机 IV,https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/,best-time-to-buy-and-sell-stock-iv,数组、动态规划,https://algo.itcharge.cn/Solutions/0100-0199/best-time-to-buy-and-sell-stock-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0188.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20IV.md,45.6%,困难,1353 -0189,0100-0199,0189. 轮转数组,轮转数组,https://leetcode.cn/problems/rotate-array/,rotate-array,数组、数学、双指针,https://algo.itcharge.cn/Solutions/0100-0199/rotate-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0189.%20%E8%BD%AE%E8%BD%AC%E6%95%B0%E7%BB%84.md,44.2%,中等,3304 -0190,0100-0199,0190. 颠倒二进制位,颠倒二进制位,https://leetcode.cn/problems/reverse-bits/,reverse-bits,位运算、分治,https://algo.itcharge.cn/Solutions/0100-0199/reverse-bits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0190.%20%E9%A2%A0%E5%80%92%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%BD%8D.md,71.8%,简单,1310 -0191,0100-0199,0191. 位1的个数,位1的个数,https://leetcode.cn/problems/number-of-1-bits/,number-of-1-bits,位运算、分治,https://algo.itcharge.cn/Solutions/0100-0199/number-of-1-bits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0191.%20%E4%BD%8D1%E7%9A%84%E4%B8%AA%E6%95%B0.md,76.5%,简单,2075 -0192,0100-0199,0192. 统计词频,统计词频,https://leetcode.cn/problems/word-frequency/,word-frequency,,https://algo.itcharge.cn/Solutions/0100-0199/word-frequency/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0192.%20%E7%BB%9F%E8%AE%A1%E8%AF%8D%E9%A2%91.md,35.7%,中等,231 -0193,0100-0199,0193. 有效电话号码,有效电话号码,https://leetcode.cn/problems/valid-phone-numbers/,valid-phone-numbers,,https://algo.itcharge.cn/Solutions/0100-0199/valid-phone-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0193.%20%E6%9C%89%E6%95%88%E7%94%B5%E8%AF%9D%E5%8F%B7%E7%A0%81.md,33.4%,简单,196 -0194,0100-0199,0194. 转置文件,转置文件,https://leetcode.cn/problems/transpose-file/,transpose-file,,https://algo.itcharge.cn/Solutions/0100-0199/transpose-file/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0194.%20%E8%BD%AC%E7%BD%AE%E6%96%87%E4%BB%B6.md,34.3%,中等,103 -0195,0100-0199,0195. 第十行,第十行,https://leetcode.cn/problems/tenth-line/,tenth-line,,https://algo.itcharge.cn/Solutions/0100-0199/tenth-line/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0195.%20%E7%AC%AC%E5%8D%81%E8%A1%8C.md,43.9%,简单,204 -0196,0100-0199,0196. 删除重复的电子邮箱,删除重复的电子邮箱,https://leetcode.cn/problems/delete-duplicate-emails/,delete-duplicate-emails,数据库,https://algo.itcharge.cn/Solutions/0100-0199/delete-duplicate-emails/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0196.%20%E5%88%A0%E9%99%A4%E9%87%8D%E5%A4%8D%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E7%AE%B1.md,68.7%,简单,800 -0197,0100-0199,0197. 上升的温度,上升的温度,https://leetcode.cn/problems/rising-temperature/,rising-temperature,数据库,https://algo.itcharge.cn/Solutions/0100-0199/rising-temperature/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0197.%20%E4%B8%8A%E5%8D%87%E7%9A%84%E6%B8%A9%E5%BA%A6.md,54.2%,简单,1009 -0198,0100-0199,0198. 打家劫舍,打家劫舍,https://leetcode.cn/problems/house-robber/,house-robber,数组、动态规划,https://algo.itcharge.cn/Solutions/0100-0199/house-robber/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0198.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.md,54.4%,中等,4722 -0199,0100-0199,0199. 二叉树的右视图,二叉树的右视图,https://leetcode.cn/problems/binary-tree-right-side-view/,binary-tree-right-side-view,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0100-0199/binary-tree-right-side-view/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md,65.9%,中等,2734 -0200,0200-0299,0200. 岛屿数量,岛屿数量,https://leetcode.cn/problems/number-of-islands/,number-of-islands,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/0200-0299/number-of-islands/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0200.%20%E5%B2%9B%E5%B1%BF%E6%95%B0%E9%87%8F.md,59.3%,中等,4002 -0201,0200-0299,0201. 数字范围按位与,数字范围按位与,https://leetcode.cn/problems/bitwise-and-of-numbers-range/,bitwise-and-of-numbers-range,位运算,https://algo.itcharge.cn/Solutions/0200-0299/bitwise-and-of-numbers-range/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0201.%20%E6%95%B0%E5%AD%97%E8%8C%83%E5%9B%B4%E6%8C%89%E4%BD%8D%E4%B8%8E.md,54.0%,中等,518 -0202,0200-0299,0202. 快乐数,快乐数,https://leetcode.cn/problems/happy-number/,happy-number,哈希表、数学、双指针,https://algo.itcharge.cn/Solutions/0200-0299/happy-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0202.%20%E5%BF%AB%E4%B9%90%E6%95%B0.md,63.3%,简单,2817 -0203,0200-0299,0203. 移除链表元素,移除链表元素,https://leetcode.cn/problems/remove-linked-list-elements/,remove-linked-list-elements,递归、链表,https://algo.itcharge.cn/Solutions/0200-0299/remove-linked-list-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0203.%20%E7%A7%BB%E9%99%A4%E9%93%BE%E8%A1%A8%E5%85%83%E7%B4%A0.md,54.9%,简单,3261 -0204,0200-0299,0204. 计数质数,计数质数,https://leetcode.cn/problems/count-primes/,count-primes,数组、数学、枚举、数论,https://algo.itcharge.cn/Solutions/0200-0299/count-primes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0204.%20%E8%AE%A1%E6%95%B0%E8%B4%A8%E6%95%B0.md,37.3%,中等,1102 -0205,0200-0299,0205. 同构字符串,同构字符串,https://leetcode.cn/problems/isomorphic-strings/,isomorphic-strings,哈希表、字符串,https://algo.itcharge.cn/Solutions/0200-0299/isomorphic-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0205.%20%E5%90%8C%E6%9E%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,49.6%,简单,1538 -0206,0200-0299,0206. 反转链表,反转链表,https://leetcode.cn/problems/reverse-linked-list/,reverse-linked-list,递归、链表,https://algo.itcharge.cn/Solutions/0200-0299/reverse-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0206.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md,73.5%,简单,11518 -0207,0200-0299,0207. 课程表,课程表,https://leetcode.cn/problems/course-schedule/,course-schedule,深度优先搜索、广度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/0200-0299/course-schedule/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0207.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8.md,53.6%,中等,2176 -0208,0200-0299,0208. 实现 Trie (前缀树),实现 Trie (前缀树),https://leetcode.cn/problems/implement-trie-prefix-tree/,implement-trie-prefix-tree,设计、字典树、哈希表、字符串,https://algo.itcharge.cn/Solutions/0200-0299/implement-trie-prefix-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0208.%20%E5%AE%9E%E7%8E%B0%20Trie%20%28%E5%89%8D%E7%BC%80%E6%A0%91%29.md,71.9%,中等,1658 -0209,0200-0299,0209. 长度最小的子数组,长度最小的子数组,https://leetcode.cn/problems/minimum-size-subarray-sum/,minimum-size-subarray-sum,数组、二分查找、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/0200-0299/minimum-size-subarray-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0209.%20%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,46.8%,中等,3433 -0210,0200-0299,0210. 课程表 II,课程表 II,https://leetcode.cn/problems/course-schedule-ii/,course-schedule-ii,深度优先搜索、广度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/0200-0299/course-schedule-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0210.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8%20II.md,56.6%,中等,1329 -0211,0200-0299,0211. 添加与搜索单词 - 数据结构设计,添加与搜索单词 - 数据结构设计,https://leetcode.cn/problems/design-add-and-search-words-data-structure/,design-add-and-search-words-data-structure,深度优先搜索、设计、字典树、字符串,https://algo.itcharge.cn/Solutions/0200-0299/design-add-and-search-words-data-structure/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0211.%20%E6%B7%BB%E5%8A%A0%E4%B8%8E%E6%90%9C%E7%B4%A2%E5%8D%95%E8%AF%8D%20-%20%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E8%AE%BE%E8%AE%A1.md,49.6%,中等,750 -0212,0200-0299,0212. 单词搜索 II,单词搜索 II,https://leetcode.cn/problems/word-search-ii/,word-search-ii,字典树、数组、字符串、回溯、矩阵,https://algo.itcharge.cn/Solutions/0200-0299/word-search-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0212.%20%E5%8D%95%E8%AF%8D%E6%90%9C%E7%B4%A2%20II.md,44.0%,困难,749 -0213,0200-0299,0213. 打家劫舍 II,打家劫舍 II,https://leetcode.cn/problems/house-robber-ii/,house-robber-ii,数组、动态规划,https://algo.itcharge.cn/Solutions/0200-0299/house-robber-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0213.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D%20II.md,44.1%,中等,2720 -0214,0200-0299,0214. 最短回文串,最短回文串,https://leetcode.cn/problems/shortest-palindrome/,shortest-palindrome,字符串、字符串匹配、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/0200-0299/shortest-palindrome/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0214.%20%E6%9C%80%E7%9F%AD%E5%9B%9E%E6%96%87%E4%B8%B2.md,40.0%,困难,463 -0215,0200-0299,0215. 数组中的第K个最大元素,数组中的第K个最大元素,https://leetcode.cn/problems/kth-largest-element-in-an-array/,kth-largest-element-in-an-array,数组、分治、快速选择、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0200-0299/kth-largest-element-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0215.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%ACK%E4%B8%AA%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md,63.7%,中等,4063 -0216,0200-0299,0216. 组合总和 III,组合总和 III,https://leetcode.cn/problems/combination-sum-iii/,combination-sum-iii,数组、回溯,https://algo.itcharge.cn/Solutions/0200-0299/combination-sum-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0216.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C%20III.md,71.5%,中等,1952 -0217,0200-0299,0217. 存在重复元素,存在重复元素,https://leetcode.cn/problems/contains-duplicate/,contains-duplicate,数组、哈希表、排序,https://algo.itcharge.cn/Solutions/0200-0299/contains-duplicate/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0217.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md,54.8%,简单,3744 -0218,0200-0299,0218. 天际线问题,天际线问题,https://leetcode.cn/problems/the-skyline-problem/,the-skyline-problem,树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列),https://algo.itcharge.cn/Solutions/0200-0299/the-skyline-problem/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0218.%20%E5%A4%A9%E9%99%85%E7%BA%BF%E9%97%AE%E9%A2%98.md,55.1%,困难,436 -0219,0200-0299,0219. 存在重复元素 II,存在重复元素 II,https://leetcode.cn/problems/contains-duplicate-ii/,contains-duplicate-ii,数组、哈希表、滑动窗口,https://algo.itcharge.cn/Solutions/0200-0299/contains-duplicate-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0219.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20II.md,44.3%,简单,1823 -0220,0200-0299,0220. 存在重复元素 III,存在重复元素 III,https://leetcode.cn/problems/contains-duplicate-iii/,contains-duplicate-iii,数组、桶排序、有序集合、排序、滑动窗口,https://algo.itcharge.cn/Solutions/0200-0299/contains-duplicate-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0220.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20III.md,30.0%,困难,630 -0221,0200-0299,0221. 最大正方形,最大正方形,https://leetcode.cn/problems/maximal-square/,maximal-square,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0200-0299/maximal-square/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0221.%20%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%96%B9%E5%BD%A2.md,49.7%,中等,1694 -0222,0200-0299,0222. 完全二叉树的节点个数,完全二叉树的节点个数,https://leetcode.cn/problems/count-complete-tree-nodes/,count-complete-tree-nodes,树、深度优先搜索、二分查找、二叉树,https://algo.itcharge.cn/Solutions/0200-0299/count-complete-tree-nodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0222.%20%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%8A%82%E7%82%B9%E4%B8%AA%E6%95%B0.md,81.0%,中等,1780 -0223,0200-0299,0223. 矩形面积,矩形面积,https://leetcode.cn/problems/rectangle-area/,rectangle-area,几何、数学,https://algo.itcharge.cn/Solutions/0200-0299/rectangle-area/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0223.%20%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF.md,53.8%,中等,647 -0224,0200-0299,0224. 基本计算器,基本计算器,https://leetcode.cn/problems/basic-calculator/,basic-calculator,栈、递归、数学、字符串,https://algo.itcharge.cn/Solutions/0200-0299/basic-calculator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0224.%20%E5%9F%BA%E6%9C%AC%E8%AE%A1%E7%AE%97%E5%99%A8.md,42.4%,困难,1012 -0225,0200-0299,0225. 用队列实现栈,用队列实现栈,https://leetcode.cn/problems/implement-stack-using-queues/,implement-stack-using-queues,栈、设计、队列,https://algo.itcharge.cn/Solutions/0200-0299/implement-stack-using-queues/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0225.%20%E7%94%A8%E9%98%9F%E5%88%97%E5%AE%9E%E7%8E%B0%E6%A0%88.md,66.1%,简单,5563 -0226,0200-0299,0226. 翻转二叉树,翻转二叉树,https://leetcode.cn/problems/invert-binary-tree/,invert-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0200-0299/invert-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0226.%20%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.md,79.5%,简单,4246 -0227,0200-0299,0227. 基本计算器 II,基本计算器 II,https://leetcode.cn/problems/basic-calculator-ii/,basic-calculator-ii,栈、数学、字符串,https://algo.itcharge.cn/Solutions/0200-0299/basic-calculator-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0227.%20%E5%9F%BA%E6%9C%AC%E8%AE%A1%E7%AE%97%E5%99%A8%20II.md,44.5%,中等,1102 -0228,0200-0299,0228. 汇总区间,汇总区间,https://leetcode.cn/problems/summary-ranges/,summary-ranges,数组,https://algo.itcharge.cn/Solutions/0200-0299/summary-ranges/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0228.%20%E6%B1%87%E6%80%BB%E5%8C%BA%E9%97%B4.md,54.6%,简单,1057 -0229,0200-0299,0229. 多数元素 II,多数元素 II,https://leetcode.cn/problems/majority-element-ii/,majority-element-ii,数组、哈希表、计数、排序,https://algo.itcharge.cn/Solutions/0200-0299/majority-element-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0229.%20%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0%20II.md,54.0%,中等,851 -0230,0200-0299,0230. 二叉搜索树中第K小的元素,二叉搜索树中第K小的元素,https://leetcode.cn/problems/kth-smallest-element-in-a-bst/,kth-smallest-element-in-a-bst,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0200-0299/kth-smallest-element-in-a-bst/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0230.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%AC%ACK%E5%B0%8F%E7%9A%84%E5%85%83%E7%B4%A0.md,76.0%,中等,1820 -0231,0200-0299,0231. 2 的幂,2 的幂,https://leetcode.cn/problems/power-of-two/,power-of-two,位运算、递归、数学,https://algo.itcharge.cn/Solutions/0200-0299/power-of-two/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0231.%202%20%E7%9A%84%E5%B9%82.md,50.1%,简单,2104 -0232,0200-0299,0232. 用栈实现队列,用栈实现队列,https://leetcode.cn/problems/implement-queue-using-stacks/,implement-queue-using-stacks,栈、设计、队列,https://algo.itcharge.cn/Solutions/0200-0299/implement-queue-using-stacks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0232.%20%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md,68.3%,简单,2370 -0233,0200-0299,0233. 数字 1 的个数,数字 1 的个数,https://leetcode.cn/problems/number-of-digit-one/,number-of-digit-one,递归、数学、动态规划,https://algo.itcharge.cn/Solutions/0200-0299/number-of-digit-one/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0233.%20%E6%95%B0%E5%AD%97%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md,49.1%,困难,623 -0234,0200-0299,0234. 回文链表,回文链表,https://leetcode.cn/problems/palindrome-linked-list/,palindrome-linked-list,栈、递归、链表、双指针,https://algo.itcharge.cn/Solutions/0200-0299/palindrome-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0234.%20%E5%9B%9E%E6%96%87%E9%93%BE%E8%A1%A8.md,53.3%,简单,3532 -0235,0200-0299,0235. 二叉搜索树的最近公共祖先,二叉搜索树的最近公共祖先,https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/,lowest-common-ancestor-of-a-binary-search-tree,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0235.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md,68.4%,中等,1870 -0236,0200-0299,0236. 二叉树的最近公共祖先,二叉树的最近公共祖先,https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/,lowest-common-ancestor-of-a-binary-tree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0236.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md,69.7%,中等,2791 -0237,0200-0299,0237. 删除链表中的节点,删除链表中的节点,https://leetcode.cn/problems/delete-node-in-a-linked-list/,delete-node-in-a-linked-list,链表,https://algo.itcharge.cn/Solutions/0200-0299/delete-node-in-a-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0237.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md,86.1%,中等,1748 -0238,0200-0299,0238. 除自身以外数组的乘积,除自身以外数组的乘积,https://leetcode.cn/problems/product-of-array-except-self/,product-of-array-except-self,数组、前缀和,https://algo.itcharge.cn/Solutions/0200-0299/product-of-array-except-self/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0238.%20%E9%99%A4%E8%87%AA%E8%BA%AB%E4%BB%A5%E5%A4%96%E6%95%B0%E7%BB%84%E7%9A%84%E4%B9%98%E7%A7%AF.md,74.8%,中等,1711 -0239,0200-0299,0239. 滑动窗口最大值,滑动窗口最大值,https://leetcode.cn/problems/sliding-window-maximum/,sliding-window-maximum,队列、数组、滑动窗口、单调队列、堆(优先队列),https://algo.itcharge.cn/Solutions/0200-0299/sliding-window-maximum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0239.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.md,49.7%,困难,3311 -0240,0200-0299,0240. 搜索二维矩阵 II,搜索二维矩阵 II,https://leetcode.cn/problems/search-a-2d-matrix-ii/,search-a-2d-matrix-ii,数组、二分查找、分治、矩阵,https://algo.itcharge.cn/Solutions/0200-0299/search-a-2d-matrix-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0240.%20%E6%90%9C%E7%B4%A2%E4%BA%8C%E7%BB%B4%E7%9F%A9%E9%98%B5%20II.md,52.8%,中等,1754 -0241,0200-0299,0241. 为运算表达式设计优先级,为运算表达式设计优先级,https://leetcode.cn/problems/different-ways-to-add-parentheses/,different-ways-to-add-parentheses,递归、记忆化搜索、数学、字符串、动态规划,https://algo.itcharge.cn/Solutions/0200-0299/different-ways-to-add-parentheses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0241.%20%E4%B8%BA%E8%BF%90%E7%AE%97%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%AE%BE%E8%AE%A1%E4%BC%98%E5%85%88%E7%BA%A7.md,75.6%,中等,752 -0242,0200-0299,0242. 有效的字母异位词,有效的字母异位词,https://leetcode.cn/problems/valid-anagram/,valid-anagram,哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/0200-0299/valid-anagram/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0242.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.md,65.8%,简单,3439 -0243,0200-0299,0243. 最短单词距离,最短单词距离,https://leetcode.cn/problems/shortest-word-distance/,shortest-word-distance,数组、字符串,https://algo.itcharge.cn/Solutions/0200-0299/shortest-word-distance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0243.%20%E6%9C%80%E7%9F%AD%E5%8D%95%E8%AF%8D%E8%B7%9D%E7%A6%BB.md,66.8%,简单,184 -0244,0200-0299,0244. 最短单词距离 II,最短单词距离 II,https://leetcode.cn/problems/shortest-word-distance-ii/,shortest-word-distance-ii,设计、数组、哈希表、双指针、字符串,https://algo.itcharge.cn/Solutions/0200-0299/shortest-word-distance-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0244.%20%E6%9C%80%E7%9F%AD%E5%8D%95%E8%AF%8D%E8%B7%9D%E7%A6%BB%20II.md,59.7%,中等,107 -0245,0200-0299,0245. 最短单词距离 III,最短单词距离 III,https://leetcode.cn/problems/shortest-word-distance-iii/,shortest-word-distance-iii,数组、字符串,https://algo.itcharge.cn/Solutions/0200-0299/shortest-word-distance-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0245.%20%E6%9C%80%E7%9F%AD%E5%8D%95%E8%AF%8D%E8%B7%9D%E7%A6%BB%20III.md,57.2%,中等,89 -0246,0200-0299,0246. 中心对称数,中心对称数,https://leetcode.cn/problems/strobogrammatic-number/,strobogrammatic-number,哈希表、双指针、字符串,https://algo.itcharge.cn/Solutions/0200-0299/strobogrammatic-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0246.%20%E4%B8%AD%E5%BF%83%E5%AF%B9%E7%A7%B0%E6%95%B0.md,47.5%,简单,173 -0247,0200-0299,0247. 中心对称数 II,中心对称数 II,https://leetcode.cn/problems/strobogrammatic-number-ii/,strobogrammatic-number-ii,递归、数组、字符串,https://algo.itcharge.cn/Solutions/0200-0299/strobogrammatic-number-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0247.%20%E4%B8%AD%E5%BF%83%E5%AF%B9%E7%A7%B0%E6%95%B0%20II.md,54.4%,中等,133 -0248,0200-0299,0248. 中心对称数 III,中心对称数 III,https://leetcode.cn/problems/strobogrammatic-number-iii/,strobogrammatic-number-iii,递归、数组、字符串,https://algo.itcharge.cn/Solutions/0200-0299/strobogrammatic-number-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0248.%20%E4%B8%AD%E5%BF%83%E5%AF%B9%E7%A7%B0%E6%95%B0%20III.md,49.1%,困难,83 -0249,0200-0299,0249. 移位字符串分组,移位字符串分组,https://leetcode.cn/problems/group-shifted-strings/,group-shifted-strings,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0200-0299/group-shifted-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0249.%20%E7%A7%BB%E4%BD%8D%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%86%E7%BB%84.md,64.8%,中等,176 -0250,0200-0299,0250. 统计同值子树,统计同值子树,https://leetcode.cn/problems/count-univalue-subtrees/,count-univalue-subtrees,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0200-0299/count-univalue-subtrees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0250.%20%E7%BB%9F%E8%AE%A1%E5%90%8C%E5%80%BC%E5%AD%90%E6%A0%91.md,63.5%,中等,157 -0251,0200-0299,0251. 展开二维向量,展开二维向量,https://leetcode.cn/problems/flatten-2d-vector/,flatten-2d-vector,设计、数组、双指针、迭代器,https://algo.itcharge.cn/Solutions/0200-0299/flatten-2d-vector/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0251.%20%E5%B1%95%E5%BC%80%E4%BA%8C%E7%BB%B4%E5%90%91%E9%87%8F.md,54.9%,中等,111 -0252,0200-0299,0252. 会议室,会议室,https://leetcode.cn/problems/meeting-rooms/,meeting-rooms,数组、排序,https://algo.itcharge.cn/Solutions/0200-0299/meeting-rooms/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0252.%20%E4%BC%9A%E8%AE%AE%E5%AE%A4.md,57.8%,简单,240 -0253,0200-0299,0253. 会议室 II,会议室 II,https://leetcode.cn/problems/meeting-rooms-ii/,meeting-rooms-ii,贪心、数组、双指针、前缀和、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0200-0299/meeting-rooms-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0253.%20%E4%BC%9A%E8%AE%AE%E5%AE%A4%20II.md,52.2%,中等,588 -0254,0200-0299,0254. 因子的组合,因子的组合,https://leetcode.cn/problems/factor-combinations/,factor-combinations,数组、回溯,https://algo.itcharge.cn/Solutions/0200-0299/factor-combinations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0254.%20%E5%9B%A0%E5%AD%90%E7%9A%84%E7%BB%84%E5%90%88.md,57.0%,中等,140 -0255,0200-0299,0255. 验证前序遍历序列二叉搜索树,验证前序遍历序列二叉搜索树,https://leetcode.cn/problems/verify-preorder-sequence-in-binary-search-tree/,verify-preorder-sequence-in-binary-search-tree,栈、树、二叉搜索树、递归、二叉树、单调栈,https://algo.itcharge.cn/Solutions/0200-0299/verify-preorder-sequence-in-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0255.%20%E9%AA%8C%E8%AF%81%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,49.5%,中等,110 -0256,0200-0299,0256. 粉刷房子,粉刷房子,https://leetcode.cn/problems/paint-house/,paint-house,数组、动态规划,https://algo.itcharge.cn/Solutions/0200-0299/paint-house/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0256.%20%E7%B2%89%E5%88%B7%E6%88%BF%E5%AD%90.md,69.8%,中等,311 -0257,0200-0299,0257. 二叉树的所有路径,二叉树的所有路径,https://leetcode.cn/problems/binary-tree-paths/,binary-tree-paths,树、深度优先搜索、字符串、回溯、二叉树,https://algo.itcharge.cn/Solutions/0200-0299/binary-tree-paths/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0257.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%89%80%E6%9C%89%E8%B7%AF%E5%BE%84.md,70.7%,简单,1983 -0258,0200-0299,0258. 各位相加,各位相加,https://leetcode.cn/problems/add-digits/,add-digits,数学、数论、模拟,https://algo.itcharge.cn/Solutions/0200-0299/add-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0258.%20%E5%90%84%E4%BD%8D%E7%9B%B8%E5%8A%A0.md,71.0%,简单,1393 -0259,0200-0299,0259. 较小的三数之和,较小的三数之和,https://leetcode.cn/problems/3sum-smaller/,3sum-smaller,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/0200-0299/3sum-smaller/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0259.%20%E8%BE%83%E5%B0%8F%E7%9A%84%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md,55.1%,中等,141 -0260,0200-0299,0260. 只出现一次的数字 III,只出现一次的数字 III,https://leetcode.cn/problems/single-number-iii/,single-number-iii,位运算、数组,https://algo.itcharge.cn/Solutions/0200-0299/single-number-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0260.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97%20III.md,72.0%,中等,949 -0261,0200-0299,0261. 以图判树,以图判树,https://leetcode.cn/problems/graph-valid-tree/,graph-valid-tree,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/0200-0299/graph-valid-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0261.%20%E4%BB%A5%E5%9B%BE%E5%88%A4%E6%A0%91.md,51.1%,中等,235 -0262,0200-0299,0262. 行程和用户,行程和用户,https://leetcode.cn/problems/trips-and-users/,trips-and-users,数据库,https://algo.itcharge.cn/Solutions/0200-0299/trips-and-users/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0262.%20%E8%A1%8C%E7%A8%8B%E5%92%8C%E7%94%A8%E6%88%B7.md,41.6%,困难,629 -0263,0200-0299,0263. 丑数,丑数,https://leetcode.cn/problems/ugly-number/,ugly-number,数学,https://algo.itcharge.cn/Solutions/0200-0299/ugly-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0263.%20%E4%B8%91%E6%95%B0.md,50.6%,简单,1150 -0264,0200-0299,0264. 丑数 II,丑数 II,https://leetcode.cn/problems/ugly-number-ii/,ugly-number-ii,哈希表、数学、动态规划、堆(优先队列),https://algo.itcharge.cn/Solutions/0200-0299/ugly-number-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0264.%20%E4%B8%91%E6%95%B0%20II.md,58.6%,中等,954 -0265,0200-0299,0265. 粉刷房子 II,粉刷房子 II,https://leetcode.cn/problems/paint-house-ii/,paint-house-ii,数组、动态规划,https://algo.itcharge.cn/Solutions/0200-0299/paint-house-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0265.%20%E7%B2%89%E5%88%B7%E6%88%BF%E5%AD%90%20II.md,63.5%,困难,266 -0266,0200-0299,0266. 回文排列,回文排列,https://leetcode.cn/problems/palindrome-permutation/,palindrome-permutation,位运算、哈希表、字符串,https://algo.itcharge.cn/Solutions/0200-0299/palindrome-permutation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0266.%20%E5%9B%9E%E6%96%87%E6%8E%92%E5%88%97.md,70.1%,简单,180 -0267,0200-0299,0267. 回文排列 II,回文排列 II,https://leetcode.cn/problems/palindrome-permutation-ii/,palindrome-permutation-ii,哈希表、字符串、回溯,https://algo.itcharge.cn/Solutions/0200-0299/palindrome-permutation-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0267.%20%E5%9B%9E%E6%96%87%E6%8E%92%E5%88%97%20II.md,47.1%,中等,131 -0268,0200-0299,0268. 丢失的数字,丢失的数字,https://leetcode.cn/problems/missing-number/,missing-number,位运算、数组、哈希表、数学、二分查找、排序,https://algo.itcharge.cn/Solutions/0200-0299/missing-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0268.%20%E4%B8%A2%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md,66.3%,简单,2306 -0269,0200-0299,0269. 火星词典,火星词典,https://leetcode.cn/problems/alien-dictionary/,alien-dictionary,深度优先搜索、广度优先搜索、图、拓扑排序、数组、字符串,https://algo.itcharge.cn/Solutions/0200-0299/alien-dictionary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0269.%20%E7%81%AB%E6%98%9F%E8%AF%8D%E5%85%B8.md,36.6%,困难,180 -0270,0200-0299,0270. 最接近的二叉搜索树值,最接近的二叉搜索树值,https://leetcode.cn/problems/closest-binary-search-tree-value/,closest-binary-search-tree-value,树、深度优先搜索、二叉搜索树、二分查找、二叉树,https://algo.itcharge.cn/Solutions/0200-0299/closest-binary-search-tree-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0270.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E5%80%BC.md,57.0%,简单,205 -0271,0200-0299,0271. 字符串的编码与解码,字符串的编码与解码,https://leetcode.cn/problems/encode-and-decode-strings/,encode-and-decode-strings,设计、数组、字符串,https://algo.itcharge.cn/Solutions/0200-0299/encode-and-decode-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0271.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E7%BC%96%E7%A0%81%E4%B8%8E%E8%A7%A3%E7%A0%81.md,57.7%,中等,73 -0272,0200-0299,0272. 最接近的二叉搜索树值 II,最接近的二叉搜索树值 II,https://leetcode.cn/problems/closest-binary-search-tree-value-ii/,closest-binary-search-tree-value-ii,栈、树、深度优先搜索、二叉搜索树、双指针、二叉树、堆(优先队列),https://algo.itcharge.cn/Solutions/0200-0299/closest-binary-search-tree-value-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0272.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E5%80%BC%20II.md,66.0%,困难,128 -0273,0200-0299,0273. 整数转换英文表示,整数转换英文表示,https://leetcode.cn/problems/integer-to-english-words/,integer-to-english-words,递归、数学、字符串,https://algo.itcharge.cn/Solutions/0200-0299/integer-to-english-words/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0273.%20%E6%95%B4%E6%95%B0%E8%BD%AC%E6%8D%A2%E8%8B%B1%E6%96%87%E8%A1%A8%E7%A4%BA.md,36.5%,困难,441 -0274,0200-0299,0274. H 指数,H 指数,https://leetcode.cn/problems/h-index/,h-index,数组、计数排序、排序,https://algo.itcharge.cn/Solutions/0200-0299/h-index/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0274.%20H%20%E6%8C%87%E6%95%B0.md,44.4%,中等,792 -0275,0200-0299,0275. H 指数 II,H 指数 II,https://leetcode.cn/problems/h-index-ii/,h-index-ii,数组、二分查找,https://algo.itcharge.cn/Solutions/0200-0299/h-index-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0275.%20H%20%E6%8C%87%E6%95%B0%20II.md,45.2%,中等,553 -0276,0200-0299,0276. 栅栏涂色,栅栏涂色,https://leetcode.cn/problems/paint-fence/,paint-fence,动态规划,https://algo.itcharge.cn/Solutions/0200-0299/paint-fence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0276.%20%E6%A0%85%E6%A0%8F%E6%B6%82%E8%89%B2.md,53.5%,中等,190 -0277,0200-0299,0277. 搜寻名人,搜寻名人,https://leetcode.cn/problems/find-the-celebrity/,find-the-celebrity,贪心、图、双指针、交互,https://algo.itcharge.cn/Solutions/0200-0299/find-the-celebrity/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0277.%20%E6%90%9C%E5%AF%BB%E5%90%8D%E4%BA%BA.md,57.9%,中等,140 -0278,0200-0299,0278. 第一个错误的版本,第一个错误的版本,https://leetcode.cn/problems/first-bad-version/,first-bad-version,二分查找、交互,https://algo.itcharge.cn/Solutions/0200-0299/first-bad-version/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0278.%20%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%94%99%E8%AF%AF%E7%9A%84%E7%89%88%E6%9C%AC.md,45.3%,简单,2528 -0279,0200-0299,0279. 完全平方数,完全平方数,https://leetcode.cn/problems/perfect-squares/,perfect-squares,广度优先搜索、数学、动态规划,https://algo.itcharge.cn/Solutions/0200-0299/perfect-squares/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0279.%20%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md,66.2%,中等,2035 -0280,0200-0299,0280. 摆动排序,摆动排序,https://leetcode.cn/problems/wiggle-sort/,wiggle-sort,贪心、数组、排序,https://algo.itcharge.cn/Solutions/0200-0299/wiggle-sort/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0280.%20%E6%91%86%E5%8A%A8%E6%8E%92%E5%BA%8F.md,68.8%,中等,120 -0281,0200-0299,0281. 锯齿迭代器,锯齿迭代器,https://leetcode.cn/problems/zigzag-iterator/,zigzag-iterator,设计、队列、数组、迭代器,https://algo.itcharge.cn/Solutions/0200-0299/zigzag-iterator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0281.%20%E9%94%AF%E9%BD%BF%E8%BF%AD%E4%BB%A3%E5%99%A8.md,76.8%,中等,128 -0282,0200-0299,0282. 给表达式添加运算符,给表达式添加运算符,https://leetcode.cn/problems/expression-add-operators/,expression-add-operators,数学、字符串、回溯,https://algo.itcharge.cn/Solutions/0200-0299/expression-add-operators/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0282.%20%E7%BB%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B7%BB%E5%8A%A0%E8%BF%90%E7%AE%97%E7%AC%A6.md,46.9%,困难,214 -0283,0200-0299,0283. 移动零,移动零,https://leetcode.cn/problems/move-zeroes/,move-zeroes,数组、双指针,https://algo.itcharge.cn/Solutions/0200-0299/move-zeroes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0283.%20%E7%A7%BB%E5%8A%A8%E9%9B%B6.md,63.8%,简单,6468 -0284,0200-0299,0284. 顶端迭代器,顶端迭代器,https://leetcode.cn/problems/peeking-iterator/,peeking-iterator,设计、数组、迭代器,https://algo.itcharge.cn/Solutions/0200-0299/peeking-iterator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0284.%20%E9%A1%B6%E7%AB%AF%E8%BF%AD%E4%BB%A3%E5%99%A8.md,76.5%,中等,256 -0285,0200-0299,0285. 二叉搜索树中的中序后继,二叉搜索树中的中序后继,https://leetcode.cn/problems/inorder-successor-in-bst/,inorder-successor-in-bst,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0200-0299/inorder-successor-in-bst/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0285.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E4%B8%AD%E5%BA%8F%E5%90%8E%E7%BB%A7.md,64.4%,中等,175 -0286,0200-0299,0286. 墙与门,墙与门,https://leetcode.cn/problems/walls-and-gates/,walls-and-gates,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0200-0299/walls-and-gates/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0286.%20%E5%A2%99%E4%B8%8E%E9%97%A8.md,54.9%,中等,237 -0287,0200-0299,0287. 寻找重复数,寻找重复数,https://leetcode.cn/problems/find-the-duplicate-number/,find-the-duplicate-number,位运算、数组、双指针、二分查找,https://algo.itcharge.cn/Solutions/0200-0299/find-the-duplicate-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0287.%20%E5%AF%BB%E6%89%BE%E9%87%8D%E5%A4%8D%E6%95%B0.md,64.2%,中等,2002 -0288,0200-0299,0288. 单词的唯一缩写,单词的唯一缩写,https://leetcode.cn/problems/unique-word-abbreviation/,unique-word-abbreviation,设计、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0200-0299/unique-word-abbreviation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0288.%20%E5%8D%95%E8%AF%8D%E7%9A%84%E5%94%AF%E4%B8%80%E7%BC%A9%E5%86%99.md,49.2%,中等,86 -0289,0200-0299,0289. 生命游戏,生命游戏,https://leetcode.cn/problems/game-of-life/,game-of-life,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/0200-0299/game-of-life/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0289.%20%E7%94%9F%E5%91%BD%E6%B8%B8%E6%88%8F.md,75.7%,中等,1128 -0290,0200-0299,0290. 单词规律,单词规律,https://leetcode.cn/problems/word-pattern/,word-pattern,哈希表、字符串,https://algo.itcharge.cn/Solutions/0200-0299/word-pattern/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0290.%20%E5%8D%95%E8%AF%8D%E8%A7%84%E5%BE%8B.md,44.6%,简单,1696 -0291,0200-0299,0291. 单词规律 II,单词规律 II,https://leetcode.cn/problems/word-pattern-ii/,word-pattern-ii,哈希表、字符串、回溯,https://algo.itcharge.cn/Solutions/0200-0299/word-pattern-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0291.%20%E5%8D%95%E8%AF%8D%E8%A7%84%E5%BE%8B%20II.md,51.9%,中等,102 -0292,0200-0299,0292. Nim 游戏,Nim 游戏,https://leetcode.cn/problems/nim-game/,nim-game,脑筋急转弯、数学、博弈,https://algo.itcharge.cn/Solutions/0200-0299/nim-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0292.%20Nim%20%E6%B8%B8%E6%88%8F.md,70.4%,简单,1081 -0293,0200-0299,0293. 翻转游戏,翻转游戏,https://leetcode.cn/problems/flip-game/,flip-game,字符串,https://algo.itcharge.cn/Solutions/0200-0299/flip-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0293.%20%E7%BF%BB%E8%BD%AC%E6%B8%B8%E6%88%8F.md,72.7%,简单,125 -0294,0200-0299,0294. 翻转游戏 II,翻转游戏 II,https://leetcode.cn/problems/flip-game-ii/,flip-game-ii,记忆化搜索、数学、动态规划、回溯、博弈,https://algo.itcharge.cn/Solutions/0200-0299/flip-game-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0294.%20%E7%BF%BB%E8%BD%AC%E6%B8%B8%E6%88%8F%20II.md,59.6%,中等,88 -0295,0200-0299,0295. 数据流的中位数,数据流的中位数,https://leetcode.cn/problems/find-median-from-data-stream/,find-median-from-data-stream,设计、双指针、数据流、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0200-0299/find-median-from-data-stream/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0295.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md,53.4%,困难,769 -0296,0200-0299,0296. 最佳的碰头地点,最佳的碰头地点,https://leetcode.cn/problems/best-meeting-point/,best-meeting-point,数组、数学、矩阵、排序,https://algo.itcharge.cn/Solutions/0200-0299/best-meeting-point/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0296.%20%E6%9C%80%E4%BD%B3%E7%9A%84%E7%A2%B0%E5%A4%B4%E5%9C%B0%E7%82%B9.md,61.1%,困难,68 -0297,0200-0299,0297. 二叉树的序列化与反序列化,二叉树的序列化与反序列化,https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/,serialize-and-deserialize-binary-tree,树、深度优先搜索、广度优先搜索、设计、字符串、二叉树,https://algo.itcharge.cn/Solutions/0200-0299/serialize-and-deserialize-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0297.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96.md,58.9%,困难,1357 -0298,0200-0299,0298. 二叉树最长连续序列,二叉树最长连续序列,https://leetcode.cn/problems/binary-tree-longest-consecutive-sequence/,binary-tree-longest-consecutive-sequence,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0200-0299/binary-tree-longest-consecutive-sequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0298.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md,59.9%,中等,145 -0299,0200-0299,0299. 猜数字游戏,猜数字游戏,https://leetcode.cn/problems/bulls-and-cows/,bulls-and-cows,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/0200-0299/bulls-and-cows/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0299.%20%E7%8C%9C%E6%95%B0%E5%AD%97%E6%B8%B8%E6%88%8F.md,57.4%,中等,896 -0300,0300-0399,0300. 最长递增子序列,最长递增子序列,https://leetcode.cn/problems/longest-increasing-subsequence/,longest-increasing-subsequence,数组、二分查找、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/longest-increasing-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0300.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.md,54.8%,中等,4343 -0301,0300-0399,0301. 删除无效的括号,删除无效的括号,https://leetcode.cn/problems/remove-invalid-parentheses/,remove-invalid-parentheses,广度优先搜索、字符串、回溯,https://algo.itcharge.cn/Solutions/0300-0399/remove-invalid-parentheses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0301.%20%E5%88%A0%E9%99%A4%E6%97%A0%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.md,55.2%,困难,591 -0302,0300-0399,0302. 包含全部黑色像素的最小矩形,包含全部黑色像素的最小矩形,https://leetcode.cn/problems/smallest-rectangle-enclosing-black-pixels/,smallest-rectangle-enclosing-black-pixels,深度优先搜索、广度优先搜索、数组、二分查找、矩阵,https://algo.itcharge.cn/Solutions/0300-0399/smallest-rectangle-enclosing-black-pixels/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0302.%20%E5%8C%85%E5%90%AB%E5%85%A8%E9%83%A8%E9%BB%91%E8%89%B2%E5%83%8F%E7%B4%A0%E7%9A%84%E6%9C%80%E5%B0%8F%E7%9F%A9%E5%BD%A2.md,67.5%,困难,65 -0303,0300-0399,0303. 区域和检索 - 数组不可变,区域和检索 - 数组不可变,https://leetcode.cn/problems/range-sum-query-immutable/,range-sum-query-immutable,设计、数组、前缀和,https://algo.itcharge.cn/Solutions/0300-0399/range-sum-query-immutable/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0303.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E4%B8%8D%E5%8F%AF%E5%8F%98.md,76.8%,简单,2144 -0304,0300-0399,0304. 二维区域和检索 - 矩阵不可变,二维区域和检索 - 矩阵不可变,https://leetcode.cn/problems/range-sum-query-2d-immutable/,range-sum-query-2d-immutable,设计、数组、矩阵、前缀和,https://algo.itcharge.cn/Solutions/0300-0399/range-sum-query-2d-immutable/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0304.%20%E4%BA%8C%E7%BB%B4%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E7%9F%A9%E9%98%B5%E4%B8%8D%E5%8F%AF%E5%8F%98.md,61.6%,中等,1342 -0305,0300-0399,0305. 岛屿数量 II,岛屿数量 II,https://leetcode.cn/problems/number-of-islands-ii/,number-of-islands-ii,并查集、数组,https://algo.itcharge.cn/Solutions/0300-0399/number-of-islands-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0305.%20%E5%B2%9B%E5%B1%BF%E6%95%B0%E9%87%8F%20II.md,42.2%,困难,127 -0306,0300-0399,0306. 累加数,累加数,https://leetcode.cn/problems/additive-number/,additive-number,字符串、回溯,https://algo.itcharge.cn/Solutions/0300-0399/additive-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0306.%20%E7%B4%AF%E5%8A%A0%E6%95%B0.md,37.8%,中等,687 -0307,0300-0399,0307. 区域和检索 - 数组可修改,区域和检索 - 数组可修改,https://leetcode.cn/problems/range-sum-query-mutable/,range-sum-query-mutable,设计、树状数组、线段树、数组,https://algo.itcharge.cn/Solutions/0300-0399/range-sum-query-mutable/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0307.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E5%8F%AF%E4%BF%AE%E6%94%B9.md,52.1%,中等,602 -0308,0300-0399,0308. 二维区域和检索 - 可变,二维区域和检索 - 可变,https://leetcode.cn/problems/range-sum-query-2d-mutable/,range-sum-query-2d-mutable,设计、树状数组、线段树、数组、矩阵,https://algo.itcharge.cn/Solutions/0300-0399/range-sum-query-2d-mutable/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0308.%20%E4%BA%8C%E7%BB%B4%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E5%8F%AF%E5%8F%98.md,64.2%,困难,83 -0309,0300-0399,0309. 最佳买卖股票时机含冷冻期,最佳买卖股票时机含冷冻期,https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/,best-time-to-buy-and-sell-stock-with-cooldown,数组、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0309.%20%E6%9C%80%E4%BD%B3%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E6%97%B6%E6%9C%BA%E5%90%AB%E5%86%B7%E5%86%BB%E6%9C%9F.md,64.1%,中等,1916 -0310,0300-0399,0310. 最小高度树,最小高度树,https://leetcode.cn/problems/minimum-height-trees/,minimum-height-trees,深度优先搜索、广度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/0300-0399/minimum-height-trees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0310.%20%E6%9C%80%E5%B0%8F%E9%AB%98%E5%BA%A6%E6%A0%91.md,42.6%,中等,478 -0311,0300-0399,0311. 稀疏矩阵的乘法,稀疏矩阵的乘法,https://leetcode.cn/problems/sparse-matrix-multiplication/,sparse-matrix-multiplication,数组、哈希表、矩阵,https://algo.itcharge.cn/Solutions/0300-0399/sparse-matrix-multiplication/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0311.%20%E7%A8%80%E7%96%8F%E7%9F%A9%E9%98%B5%E7%9A%84%E4%B9%98%E6%B3%95.md,75.6%,中等,84 -0312,0300-0399,0312. 戳气球,戳气球,https://leetcode.cn/problems/burst-balloons/,burst-balloons,数组、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/burst-balloons/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0312.%20%E6%88%B3%E6%B0%94%E7%90%83.md,69.9%,困难,660 -0313,0300-0399,0313. 超级丑数,超级丑数,https://leetcode.cn/problems/super-ugly-number/,super-ugly-number,数组、数学、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/super-ugly-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0313.%20%E8%B6%85%E7%BA%A7%E4%B8%91%E6%95%B0.md,56.7%,中等,503 -0314,0300-0399,0314. 二叉树的垂直遍历,二叉树的垂直遍历,https://leetcode.cn/problems/binary-tree-vertical-order-traversal/,binary-tree-vertical-order-traversal,树、深度优先搜索、广度优先搜索、哈希表、二叉树,https://algo.itcharge.cn/Solutions/0300-0399/binary-tree-vertical-order-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0314.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%9E%82%E7%9B%B4%E9%81%8D%E5%8E%86.md,55.6%,中等,172 -0315,0300-0399,0315. 计算右侧小于当前元素的个数,计算右侧小于当前元素的个数,https://leetcode.cn/problems/count-of-smaller-numbers-after-self/,count-of-smaller-numbers-after-self,树状数组、线段树、数组、二分查找、分治、有序集合、归并排序,https://algo.itcharge.cn/Solutions/0300-0399/count-of-smaller-numbers-after-self/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0315.%20%E8%AE%A1%E7%AE%97%E5%8F%B3%E4%BE%A7%E5%B0%8F%E4%BA%8E%E5%BD%93%E5%89%8D%E5%85%83%E7%B4%A0%E7%9A%84%E4%B8%AA%E6%95%B0.md,43.4%,困难,807 -0316,0300-0399,0316. 去除重复字母,去除重复字母,https://leetcode.cn/problems/remove-duplicate-letters/,remove-duplicate-letters,栈、贪心、字符串、单调栈,https://algo.itcharge.cn/Solutions/0300-0399/remove-duplicate-letters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0316.%20%E5%8E%BB%E9%99%A4%E9%87%8D%E5%A4%8D%E5%AD%97%E6%AF%8D.md,48.3%,中等,887 -0317,0300-0399,0317. 离建筑物最近的距离,离建筑物最近的距离,https://leetcode.cn/problems/shortest-distance-from-all-buildings/,shortest-distance-from-all-buildings,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0300-0399/shortest-distance-from-all-buildings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0317.%20%E7%A6%BB%E5%BB%BA%E7%AD%91%E7%89%A9%E6%9C%80%E8%BF%91%E7%9A%84%E8%B7%9D%E7%A6%BB.md,47.7%,困难,95 -0318,0300-0399,0318. 最大单词长度乘积,最大单词长度乘积,https://leetcode.cn/problems/maximum-product-of-word-lengths/,maximum-product-of-word-lengths,位运算、数组、字符串,https://algo.itcharge.cn/Solutions/0300-0399/maximum-product-of-word-lengths/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0318.%20%E6%9C%80%E5%A4%A7%E5%8D%95%E8%AF%8D%E9%95%BF%E5%BA%A6%E4%B9%98%E7%A7%AF.md,72.7%,中等,618 -0319,0300-0399,0319. 灯泡开关,灯泡开关,https://leetcode.cn/problems/bulb-switcher/,bulb-switcher,脑筋急转弯、数学,https://algo.itcharge.cn/Solutions/0300-0399/bulb-switcher/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0319.%20%E7%81%AF%E6%B3%A1%E5%BC%80%E5%85%B3.md,57.7%,中等,536 -0320,0300-0399,0320. 列举单词的全部缩写,列举单词的全部缩写,https://leetcode.cn/problems/generalized-abbreviation/,generalized-abbreviation,位运算、字符串、回溯,https://algo.itcharge.cn/Solutions/0300-0399/generalized-abbreviation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0320.%20%E5%88%97%E4%B8%BE%E5%8D%95%E8%AF%8D%E7%9A%84%E5%85%A8%E9%83%A8%E7%BC%A9%E5%86%99.md,70.1%,中等,82 -0321,0300-0399,0321. 拼接最大数,拼接最大数,https://leetcode.cn/problems/create-maximum-number/,create-maximum-number,栈、贪心、单调栈,https://algo.itcharge.cn/Solutions/0300-0399/create-maximum-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0321.%20%E6%8B%BC%E6%8E%A5%E6%9C%80%E5%A4%A7%E6%95%B0.md,42.0%,困难,300 -0322,0300-0399,0322. 零钱兑换,零钱兑换,https://leetcode.cn/problems/coin-change/,coin-change,广度优先搜索、数组、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/coin-change/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0322.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.md,46.4%,中等,3607 -0323,0300-0399,0323. 无向图中连通分量的数目,无向图中连通分量的数目,https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/,number-of-connected-components-in-an-undirected-graph,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/0300-0399/number-of-connected-components-in-an-undirected-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0323.%20%E6%97%A0%E5%90%91%E5%9B%BE%E4%B8%AD%E8%BF%9E%E9%80%9A%E5%88%86%E9%87%8F%E7%9A%84%E6%95%B0%E7%9B%AE.md,65.6%,中等,338 -0324,0300-0399,0324. 摆动排序 II,摆动排序 II,https://leetcode.cn/problems/wiggle-sort-ii/,wiggle-sort-ii,数组、分治、快速选择、排序,https://algo.itcharge.cn/Solutions/0300-0399/wiggle-sort-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0324.%20%E6%91%86%E5%8A%A8%E6%8E%92%E5%BA%8F%20II.md,40.9%,中等,399 -0325,0300-0399,0325. 和等于 k 的最长子数组长度,和等于 k 的最长子数组长度,https://leetcode.cn/problems/maximum-size-subarray-sum-equals-k/,maximum-size-subarray-sum-equals-k,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/0300-0399/maximum-size-subarray-sum-equals-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0325.%20%E5%92%8C%E7%AD%89%E4%BA%8E%20k%20%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E6%95%B0%E7%BB%84%E9%95%BF%E5%BA%A6.md,51.7%,中等,191 -0326,0300-0399,0326. 3 的幂,3 的幂,https://leetcode.cn/problems/power-of-three/,power-of-three,递归、数学,https://algo.itcharge.cn/Solutions/0300-0399/power-of-three/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0326.%203%20%E7%9A%84%E5%B9%82.md,50.9%,简单,920 -0327,0300-0399,0327. 区间和的个数,区间和的个数,https://leetcode.cn/problems/count-of-range-sum/,count-of-range-sum,树状数组、线段树、数组、二分查找、分治、有序集合、归并排序,https://algo.itcharge.cn/Solutions/0300-0399/count-of-range-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0327.%20%E5%8C%BA%E9%97%B4%E5%92%8C%E7%9A%84%E4%B8%AA%E6%95%B0.md,40.7%,困难,353 -0328,0300-0399,0328. 奇偶链表,奇偶链表,https://leetcode.cn/problems/odd-even-linked-list/,odd-even-linked-list,链表,https://algo.itcharge.cn/Solutions/0300-0399/odd-even-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0328.%20%E5%A5%87%E5%81%B6%E9%93%BE%E8%A1%A8.md,65.0%,中等,1598 -0329,0300-0399,0329. 矩阵中的最长递增路径,矩阵中的最长递增路径,https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/,longest-increasing-path-in-a-matrix,深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0300-0399/longest-increasing-path-in-a-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0329.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E8%B7%AF%E5%BE%84.md,51.7%,困难,842 -0330,0300-0399,0330. 按要求补齐数组,按要求补齐数组,https://leetcode.cn/problems/patching-array/,patching-array,贪心、数组,https://algo.itcharge.cn/Solutions/0300-0399/patching-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0330.%20%E6%8C%89%E8%A6%81%E6%B1%82%E8%A1%A5%E9%BD%90%E6%95%B0%E7%BB%84.md,52.9%,困难,192 -0331,0300-0399,0331. 验证二叉树的前序序列化,验证二叉树的前序序列化,https://leetcode.cn/problems/verify-preorder-serialization-of-a-binary-tree/,verify-preorder-serialization-of-a-binary-tree,栈、树、字符串、二叉树,https://algo.itcharge.cn/Solutions/0300-0399/verify-preorder-serialization-of-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0331.%20%E9%AA%8C%E8%AF%81%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E5%BA%8F%E5%88%97%E5%8C%96.md,48.1%,中等,648 -0332,0300-0399,0332. 重新安排行程,重新安排行程,https://leetcode.cn/problems/reconstruct-itinerary/,reconstruct-itinerary,深度优先搜索、图、欧拉回路,https://algo.itcharge.cn/Solutions/0300-0399/reconstruct-itinerary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0332.%20%E9%87%8D%E6%96%B0%E5%AE%89%E6%8E%92%E8%A1%8C%E7%A8%8B.md,47.7%,困难,608 -0333,0300-0399,0333. 最大 BST 子树,最大 BST 子树,https://leetcode.cn/problems/largest-bst-subtree/,largest-bst-subtree,树、深度优先搜索、二叉搜索树、动态规划、二叉树,https://algo.itcharge.cn/Solutions/0300-0399/largest-bst-subtree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0333.%20%E6%9C%80%E5%A4%A7%20BST%20%E5%AD%90%E6%A0%91.md,48.8%,中等,147 -0334,0300-0399,0334. 递增的三元子序列,递增的三元子序列,https://leetcode.cn/problems/increasing-triplet-subsequence/,increasing-triplet-subsequence,贪心、数组,https://algo.itcharge.cn/Solutions/0300-0399/increasing-triplet-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0334.%20%E9%80%92%E5%A2%9E%E7%9A%84%E4%B8%89%E5%85%83%E5%AD%90%E5%BA%8F%E5%88%97.md,43.1%,中等,822 -0335,0300-0399,0335. 路径交叉,路径交叉,https://leetcode.cn/problems/self-crossing/,self-crossing,几何、数组、数学,https://algo.itcharge.cn/Solutions/0300-0399/self-crossing/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0335.%20%E8%B7%AF%E5%BE%84%E4%BA%A4%E5%8F%89.md,42.4%,困难,168 -0336,0300-0399,0336. 回文对,回文对,https://leetcode.cn/problems/palindrome-pairs/,palindrome-pairs,字典树、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0300-0399/palindrome-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0336.%20%E5%9B%9E%E6%96%87%E5%AF%B9.md,38.2%,困难,242 -0337,0300-0399,0337. 打家劫舍 III,打家劫舍 III,https://leetcode.cn/problems/house-robber-iii/,house-robber-iii,树、深度优先搜索、动态规划、二叉树,https://algo.itcharge.cn/Solutions/0300-0399/house-robber-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0337.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D%20III.md,61.1%,中等,1748 -0338,0300-0399,0338. 比特位计数,比特位计数,https://leetcode.cn/problems/counting-bits/,counting-bits,位运算、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/counting-bits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0338.%20%E6%AF%94%E7%89%B9%E4%BD%8D%E8%AE%A1%E6%95%B0.md,78.6%,简单,2226 -0339,0300-0399,0339. 嵌套列表权重和,嵌套列表权重和,https://leetcode.cn/problems/nested-list-weight-sum/,nested-list-weight-sum,深度优先搜索、广度优先搜索,https://algo.itcharge.cn/Solutions/0300-0399/nested-list-weight-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0339.%20%E5%B5%8C%E5%A5%97%E5%88%97%E8%A1%A8%E6%9D%83%E9%87%8D%E5%92%8C.md,83.2%,中等,82 -0340,0300-0399,0340. 至多包含 K 个不同字符的最长子串,至多包含 K 个不同字符的最长子串,https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/,longest-substring-with-at-most-k-distinct-characters,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0340.%20%E8%87%B3%E5%A4%9A%E5%8C%85%E5%90%AB%20K%20%E4%B8%AA%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md,51.1%,中等,307 -0341,0300-0399,0341. 扁平化嵌套列表迭代器,扁平化嵌套列表迭代器,https://leetcode.cn/problems/flatten-nested-list-iterator/,flatten-nested-list-iterator,栈、树、深度优先搜索、设计、队列、迭代器,https://algo.itcharge.cn/Solutions/0300-0399/flatten-nested-list-iterator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0341.%20%E6%89%81%E5%B9%B3%E5%8C%96%E5%B5%8C%E5%A5%97%E5%88%97%E8%A1%A8%E8%BF%AD%E4%BB%A3%E5%99%A8.md,72.8%,中等,666 -0342,0300-0399,0342. 4的幂,4的幂,https://leetcode.cn/problems/power-of-four/,power-of-four,位运算、递归、数学,https://algo.itcharge.cn/Solutions/0300-0399/power-of-four/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0342.%204%E7%9A%84%E5%B9%82.md,52.9%,简单,1098 -0343,0300-0399,0343. 整数拆分,整数拆分,https://leetcode.cn/problems/integer-break/,integer-break,数学、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/integer-break/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0343.%20%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.md,62.2%,中等,1923 -0344,0300-0399,0344. 反转字符串,反转字符串,https://leetcode.cn/problems/reverse-string/,reverse-string,双指针、字符串,https://algo.itcharge.cn/Solutions/0300-0399/reverse-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0344.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md,79.7%,简单,3706 -0345,0300-0399,0345. 反转字符串中的元音字母,反转字符串中的元音字母,https://leetcode.cn/problems/reverse-vowels-of-a-string/,reverse-vowels-of-a-string,双指针、字符串,https://algo.itcharge.cn/Solutions/0300-0399/reverse-vowels-of-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0345.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%85%83%E9%9F%B3%E5%AD%97%E6%AF%8D.md,54.5%,简单,1442 -0346,0300-0399,0346. 数据流中的移动平均值,数据流中的移动平均值,https://leetcode.cn/problems/moving-average-from-data-stream/,moving-average-from-data-stream,设计、队列、数组、数据流,https://algo.itcharge.cn/Solutions/0300-0399/moving-average-from-data-stream/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0346.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E7%A7%BB%E5%8A%A8%E5%B9%B3%E5%9D%87%E5%80%BC.md,72.2%,简单,207 -0347,0300-0399,0347. 前 K 个高频元素,前 K 个高频元素,https://leetcode.cn/problems/top-k-frequent-elements/,top-k-frequent-elements,数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0300-0399/top-k-frequent-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0347.%20%E5%89%8D%20K%20%E4%B8%AA%E9%AB%98%E9%A2%91%E5%85%83%E7%B4%A0.md,63.5%,中等,2922 -0348,0300-0399,0348. 设计井字棋,设计井字棋,https://leetcode.cn/problems/design-tic-tac-toe/,design-tic-tac-toe,设计、数组、哈希表、矩阵,https://algo.itcharge.cn/Solutions/0300-0399/design-tic-tac-toe/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0348.%20%E8%AE%BE%E8%AE%A1%E4%BA%95%E5%AD%97%E6%A3%8B.md,59.3%,中等,133 -0349,0300-0399,0349. 两个数组的交集,两个数组的交集,https://leetcode.cn/problems/intersection-of-two-arrays/,intersection-of-two-arrays,数组、哈希表、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/0300-0399/intersection-of-two-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0349.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.md,74.3%,简单,2927 -0350,0300-0399,0350. 两个数组的交集 II,两个数组的交集 II,https://leetcode.cn/problems/intersection-of-two-arrays-ii/,intersection-of-two-arrays-ii,数组、哈希表、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/0300-0399/intersection-of-two-arrays-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0350.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86%20II.md,57.0%,简单,2816 -0351,0300-0399,0351. 安卓系统手势解锁,安卓系统手势解锁,https://leetcode.cn/problems/android-unlock-patterns/,android-unlock-patterns,动态规划、回溯,https://algo.itcharge.cn/Solutions/0300-0399/android-unlock-patterns/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0351.%20%E5%AE%89%E5%8D%93%E7%B3%BB%E7%BB%9F%E6%89%8B%E5%8A%BF%E8%A7%A3%E9%94%81.md,61.4%,中等,134 -0352,0300-0399,0352. 将数据流变为多个不相交区间,将数据流变为多个不相交区间,https://leetcode.cn/problems/data-stream-as-disjoint-intervals/,data-stream-as-disjoint-intervals,设计、二分查找、有序集合,https://algo.itcharge.cn/Solutions/0300-0399/data-stream-as-disjoint-intervals/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0352.%20%E5%B0%86%E6%95%B0%E6%8D%AE%E6%B5%81%E5%8F%98%E4%B8%BA%E5%A4%9A%E4%B8%AA%E4%B8%8D%E7%9B%B8%E4%BA%A4%E5%8C%BA%E9%97%B4.md,67.3%,困难,411 -0353,0300-0399,0353. 贪吃蛇,贪吃蛇,https://leetcode.cn/problems/design-snake-game/,design-snake-game,设计、队列、数组、矩阵,https://algo.itcharge.cn/Solutions/0300-0399/design-snake-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0353.%20%E8%B4%AA%E5%90%83%E8%9B%87.md,43.4%,中等,85 -0354,0300-0399,0354. 俄罗斯套娃信封问题,俄罗斯套娃信封问题,https://leetcode.cn/problems/russian-doll-envelopes/,russian-doll-envelopes,数组、二分查找、动态规划、排序,https://algo.itcharge.cn/Solutions/0300-0399/russian-doll-envelopes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0354.%20%E4%BF%84%E7%BD%97%E6%96%AF%E5%A5%97%E5%A8%83%E4%BF%A1%E5%B0%81%E9%97%AE%E9%A2%98.md,37.6%,困难,832 -0355,0300-0399,0355. 设计推特,设计推特,https://leetcode.cn/problems/design-twitter/,design-twitter,设计、哈希表、链表、堆(优先队列),https://algo.itcharge.cn/Solutions/0300-0399/design-twitter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0355.%20%E8%AE%BE%E8%AE%A1%E6%8E%A8%E7%89%B9.md,41.1%,中等,700 -0356,0300-0399,0356. 直线镜像,直线镜像,https://leetcode.cn/problems/line-reflection/,line-reflection,数组、哈希表、数学,https://algo.itcharge.cn/Solutions/0300-0399/line-reflection/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0356.%20%E7%9B%B4%E7%BA%BF%E9%95%9C%E5%83%8F.md,36.8%,中等,61 -0357,0300-0399,0357. 统计各位数字都不同的数字个数,统计各位数字都不同的数字个数,https://leetcode.cn/problems/count-numbers-with-unique-digits/,count-numbers-with-unique-digits,数学、动态规划、回溯,https://algo.itcharge.cn/Solutions/0300-0399/count-numbers-with-unique-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0357.%20%E7%BB%9F%E8%AE%A1%E5%90%84%E4%BD%8D%E6%95%B0%E5%AD%97%E9%83%BD%E4%B8%8D%E5%90%8C%E7%9A%84%E6%95%B0%E5%AD%97%E4%B8%AA%E6%95%B0.md,60.5%,中等,936 -0358,0300-0399,0358. K 距离间隔重排字符串,K 距离间隔重排字符串,https://leetcode.cn/problems/rearrange-string-k-distance-apart/,rearrange-string-k-distance-apart,贪心、哈希表、字符串、计数、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0300-0399/rearrange-string-k-distance-apart/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0358.%20K%20%E8%B7%9D%E7%A6%BB%E9%97%B4%E9%9A%94%E9%87%8D%E6%8E%92%E5%AD%97%E7%AC%A6%E4%B8%B2.md,36.6%,困难,91 -0359,0300-0399,0359. 日志速率限制器,日志速率限制器,https://leetcode.cn/problems/logger-rate-limiter/,logger-rate-limiter,设计、哈希表,https://algo.itcharge.cn/Solutions/0300-0399/logger-rate-limiter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0359.%20%E6%97%A5%E5%BF%97%E9%80%9F%E7%8E%87%E9%99%90%E5%88%B6%E5%99%A8.md,74.7%,简单,103 -0360,0300-0399,0360. 有序转化数组,有序转化数组,https://leetcode.cn/problems/sort-transformed-array/,sort-transformed-array,数组、数学、双指针、排序,https://algo.itcharge.cn/Solutions/0300-0399/sort-transformed-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0360.%20%E6%9C%89%E5%BA%8F%E8%BD%AC%E5%8C%96%E6%95%B0%E7%BB%84.md,62.3%,中等,90 -0361,0300-0399,0361. 轰炸敌人,轰炸敌人,https://leetcode.cn/problems/bomb-enemy/,bomb-enemy,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0300-0399/bomb-enemy/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0361.%20%E8%BD%B0%E7%82%B8%E6%95%8C%E4%BA%BA.md,59.6%,中等,106 -0362,0300-0399,0362. 敲击计数器,敲击计数器,https://leetcode.cn/problems/design-hit-counter/,design-hit-counter,设计、队列、数组、哈希表、二分查找,https://algo.itcharge.cn/Solutions/0300-0399/design-hit-counter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0362.%20%E6%95%B2%E5%87%BB%E8%AE%A1%E6%95%B0%E5%99%A8.md,68.8%,中等,124 -0363,0300-0399,0363. 矩形区域不超过 K 的最大数值和,矩形区域不超过 K 的最大数值和,https://leetcode.cn/problems/max-sum-of-rectangle-no-larger-than-k/,max-sum-of-rectangle-no-larger-than-k,数组、二分查找、矩阵、有序集合、前缀和,https://algo.itcharge.cn/Solutions/0300-0399/max-sum-of-rectangle-no-larger-than-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0363.%20%E7%9F%A9%E5%BD%A2%E5%8C%BA%E5%9F%9F%E4%B8%8D%E8%B6%85%E8%BF%87%20K%20%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E5%80%BC%E5%92%8C.md,48.1%,困难,265 -0364,0300-0399,0364. 加权嵌套序列和 II,加权嵌套序列和 II,https://leetcode.cn/problems/nested-list-weight-sum-ii/,nested-list-weight-sum-ii,栈、深度优先搜索、广度优先搜索,https://algo.itcharge.cn/Solutions/0300-0399/nested-list-weight-sum-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0364.%20%E5%8A%A0%E6%9D%83%E5%B5%8C%E5%A5%97%E5%BA%8F%E5%88%97%E5%92%8C%20II.md,67.0%,中等,77 -0365,0300-0399,0365. 水壶问题,水壶问题,https://leetcode.cn/problems/water-and-jug-problem/,water-and-jug-problem,深度优先搜索、广度优先搜索、数学,https://algo.itcharge.cn/Solutions/0300-0399/water-and-jug-problem/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0365.%20%E6%B0%B4%E5%A3%B6%E9%97%AE%E9%A2%98.md,39.9%,中等,610 -0366,0300-0399,0366. 寻找二叉树的叶子节点,寻找二叉树的叶子节点,https://leetcode.cn/problems/find-leaves-of-binary-tree/,find-leaves-of-binary-tree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0300-0399/find-leaves-of-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0366.%20%E5%AF%BB%E6%89%BE%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B6%E5%AD%90%E8%8A%82%E7%82%B9.md,80.1%,中等,216 -0367,0300-0399,0367. 有效的完全平方数,有效的完全平方数,https://leetcode.cn/problems/valid-perfect-square/,valid-perfect-square,数学、二分查找,https://algo.itcharge.cn/Solutions/0300-0399/valid-perfect-square/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0367.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md,44.8%,简单,1681 -0368,0300-0399,0368. 最大整除子集,最大整除子集,https://leetcode.cn/problems/largest-divisible-subset/,largest-divisible-subset,数组、数学、动态规划、排序,https://algo.itcharge.cn/Solutions/0300-0399/largest-divisible-subset/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0368.%20%E6%9C%80%E5%A4%A7%E6%95%B4%E9%99%A4%E5%AD%90%E9%9B%86.md,46.0%,中等,591 -0369,0300-0399,0369. 给单链表加一,给单链表加一,https://leetcode.cn/problems/plus-one-linked-list/,plus-one-linked-list,链表、数学,https://algo.itcharge.cn/Solutions/0300-0399/plus-one-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0369.%20%E7%BB%99%E5%8D%95%E9%93%BE%E8%A1%A8%E5%8A%A0%E4%B8%80.md,62.9%,中等,230 -0370,0300-0399,0370. 区间加法,区间加法,https://leetcode.cn/problems/range-addition/,range-addition,数组、前缀和,https://algo.itcharge.cn/Solutions/0300-0399/range-addition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0370.%20%E5%8C%BA%E9%97%B4%E5%8A%A0%E6%B3%95.md,76.7%,中等,276 -0371,0300-0399,0371. 两整数之和,两整数之和,https://leetcode.cn/problems/sum-of-two-integers/,sum-of-two-integers,位运算、数学,https://algo.itcharge.cn/Solutions/0300-0399/sum-of-two-integers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0371.%20%E4%B8%A4%E6%95%B4%E6%95%B0%E4%B9%8B%E5%92%8C.md,61.6%,中等,690 -0372,0300-0399,0372. 超级次方,超级次方,https://leetcode.cn/problems/super-pow/,super-pow,数学、分治,https://algo.itcharge.cn/Solutions/0300-0399/super-pow/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0372.%20%E8%B6%85%E7%BA%A7%E6%AC%A1%E6%96%B9.md,57.2%,中等,509 -0373,0300-0399,0373. 查找和最小的 K 对数字,查找和最小的 K 对数字,https://leetcode.cn/problems/find-k-pairs-with-smallest-sums/,find-k-pairs-with-smallest-sums,数组、堆(优先队列),https://algo.itcharge.cn/Solutions/0300-0399/find-k-pairs-with-smallest-sums/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0373.%20%E6%9F%A5%E6%89%BE%E5%92%8C%E6%9C%80%E5%B0%8F%E7%9A%84%20K%20%E5%AF%B9%E6%95%B0%E5%AD%97.md,40.8%,中等,540 -0374,0300-0399,0374. 猜数字大小,猜数字大小,https://leetcode.cn/problems/guess-number-higher-or-lower/,guess-number-higher-or-lower,二分查找、交互,https://algo.itcharge.cn/Solutions/0300-0399/guess-number-higher-or-lower/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0374.%20%E7%8C%9C%E6%95%B0%E5%AD%97%E5%A4%A7%E5%B0%8F.md,52.2%,简单,1024 -0375,0300-0399,0375. 猜数字大小 II,猜数字大小 II,https://leetcode.cn/problems/guess-number-higher-or-lower-ii/,guess-number-higher-or-lower-ii,数学、动态规划、博弈,https://algo.itcharge.cn/Solutions/0300-0399/guess-number-higher-or-lower-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0375.%20%E7%8C%9C%E6%95%B0%E5%AD%97%E5%A4%A7%E5%B0%8F%20II.md,62.5%,中等,350 -0376,0300-0399,0376. 摆动序列,摆动序列,https://leetcode.cn/problems/wiggle-subsequence/,wiggle-subsequence,贪心、数组、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/wiggle-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0376.%20%E6%91%86%E5%8A%A8%E5%BA%8F%E5%88%97.md,46.9%,中等,1568 -0377,0300-0399,0377. 组合总和 Ⅳ,组合总和 Ⅳ,https://leetcode.cn/problems/combination-sum-iv/,combination-sum-iv,数组、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/combination-sum-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0377.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C%20%E2%85%A3.md,52.9%,中等,964 -0378,0300-0399,0378. 有序矩阵中第 K 小的元素,有序矩阵中第 K 小的元素,https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/,kth-smallest-element-in-a-sorted-matrix,数组、二分查找、矩阵、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0300-0399/kth-smallest-element-in-a-sorted-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0378.%20%E6%9C%89%E5%BA%8F%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%AC%AC%20K%20%E5%B0%8F%E7%9A%84%E5%85%83%E7%B4%A0.md,63.6%,中等,839 -0379,0300-0399,0379. 电话目录管理系统,电话目录管理系统,https://leetcode.cn/problems/design-phone-directory/,design-phone-directory,设计、队列、数组、哈希表、链表,https://algo.itcharge.cn/Solutions/0300-0399/design-phone-directory/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0379.%20%E7%94%B5%E8%AF%9D%E7%9B%AE%E5%BD%95%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F.md,61.2%,中等,116 -0380,0300-0399,0380. O(1) 时间插入、删除和获取随机元素,O(1) 时间插入、删除和获取随机元素,https://leetcode.cn/problems/insert-delete-getrandom-o1/,insert-delete-getrandom-o1,设计、数组、哈希表、数学、随机化,https://algo.itcharge.cn/Solutions/0300-0399/insert-delete-getrandom-o1/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0380.%20O%281%29%20%E6%97%B6%E9%97%B4%E6%8F%92%E5%85%A5%E3%80%81%E5%88%A0%E9%99%A4%E5%92%8C%E8%8E%B7%E5%8F%96%E9%9A%8F%E6%9C%BA%E5%85%83%E7%B4%A0.md,52.6%,中等,1663 -0381,0300-0399,0381. O(1) 时间插入、删除和获取随机元素 - 允许重复,O(1) 时间插入、删除和获取随机元素 - 允许重复,https://leetcode.cn/problems/insert-delete-getrandom-o1-duplicates-allowed/,insert-delete-getrandom-o1-duplicates-allowed,设计、数组、哈希表、数学、随机化,https://algo.itcharge.cn/Solutions/0300-0399/insert-delete-getrandom-o1-duplicates-allowed/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0381.%20O%281%29%20%E6%97%B6%E9%97%B4%E6%8F%92%E5%85%A5%E3%80%81%E5%88%A0%E9%99%A4%E5%92%8C%E8%8E%B7%E5%8F%96%E9%9A%8F%E6%9C%BA%E5%85%83%E7%B4%A0%20-%20%E5%85%81%E8%AE%B8%E9%87%8D%E5%A4%8D.md,42.3%,困难,239 -0382,0300-0399,0382. 链表随机节点,链表随机节点,https://leetcode.cn/problems/linked-list-random-node/,linked-list-random-node,水塘抽样、链表、数学、随机化,https://algo.itcharge.cn/Solutions/0300-0399/linked-list-random-node/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0382.%20%E9%93%BE%E8%A1%A8%E9%9A%8F%E6%9C%BA%E8%8A%82%E7%82%B9.md,72.8%,中等,454 -0383,0300-0399,0383. 赎金信,赎金信,https://leetcode.cn/problems/ransom-note/,ransom-note,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/0300-0399/ransom-note/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0383.%20%E8%B5%8E%E9%87%91%E4%BF%A1.md,60.6%,简单,3003 -0384,0300-0399,0384. 打乱数组,打乱数组,https://leetcode.cn/problems/shuffle-an-array/,shuffle-an-array,数组、数学、随机化,https://algo.itcharge.cn/Solutions/0300-0399/shuffle-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0384.%20%E6%89%93%E4%B9%B1%E6%95%B0%E7%BB%84.md,61.6%,中等,601 -0385,0300-0399,0385. 迷你语法分析器,迷你语法分析器,https://leetcode.cn/problems/mini-parser/,mini-parser,栈、深度优先搜索、字符串,https://algo.itcharge.cn/Solutions/0300-0399/mini-parser/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0385.%20%E8%BF%B7%E4%BD%A0%E8%AF%AD%E6%B3%95%E5%88%86%E6%9E%90%E5%99%A8.md,54.8%,中等,302 -0386,0300-0399,0386. 字典序排数,字典序排数,https://leetcode.cn/problems/lexicographical-numbers/,lexicographical-numbers,深度优先搜索、字典树,https://algo.itcharge.cn/Solutions/0300-0399/lexicographical-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0386.%20%E5%AD%97%E5%85%B8%E5%BA%8F%E6%8E%92%E6%95%B0.md,74.8%,中等,672 -0387,0300-0399,0387. 字符串中的第一个唯一字符,字符串中的第一个唯一字符,https://leetcode.cn/problems/first-unique-character-in-a-string/,first-unique-character-in-a-string,队列、哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/0300-0399/first-unique-character-in-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0387.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%94%AF%E4%B8%80%E5%AD%97%E7%AC%A6.md,55.9%,简单,2154 -0388,0300-0399,0388. 文件的最长绝对路径,文件的最长绝对路径,https://leetcode.cn/problems/longest-absolute-file-path/,longest-absolute-file-path,栈、深度优先搜索、字符串,https://algo.itcharge.cn/Solutions/0300-0399/longest-absolute-file-path/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0388.%20%E6%96%87%E4%BB%B6%E7%9A%84%E6%9C%80%E9%95%BF%E7%BB%9D%E5%AF%B9%E8%B7%AF%E5%BE%84.md,63.8%,中等,529 -0389,0300-0399,0389. 找不同,找不同,https://leetcode.cn/problems/find-the-difference/,find-the-difference,位运算、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/0300-0399/find-the-difference/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0389.%20%E6%89%BE%E4%B8%8D%E5%90%8C.md,66.7%,简单,1644 -0390,0300-0399,0390. 消除游戏,消除游戏,https://leetcode.cn/problems/elimination-game/,elimination-game,递归、数学,https://algo.itcharge.cn/Solutions/0300-0399/elimination-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0390.%20%E6%B6%88%E9%99%A4%E6%B8%B8%E6%88%8F.md,60.2%,中等,472 -0391,0300-0399,0391. 完美矩形,完美矩形,https://leetcode.cn/problems/perfect-rectangle/,perfect-rectangle,数组、扫描线,https://algo.itcharge.cn/Solutions/0300-0399/perfect-rectangle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0391.%20%E5%AE%8C%E7%BE%8E%E7%9F%A9%E5%BD%A2.md,46.1%,困难,321 -0392,0300-0399,0392. 判断子序列,判断子序列,https://leetcode.cn/problems/is-subsequence/,is-subsequence,双指针、字符串、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/is-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0392.%20%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.md,52.4%,简单,2748 -0393,0300-0399,0393. UTF-8 编码验证,UTF-8 编码验证,https://leetcode.cn/problems/utf-8-validation/,utf-8-validation,位运算、数组,https://algo.itcharge.cn/Solutions/0300-0399/utf-8-validation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0393.%20UTF-8%20%E7%BC%96%E7%A0%81%E9%AA%8C%E8%AF%81.md,43.7%,中等,488 -0394,0300-0399,0394. 字符串解码,字符串解码,https://leetcode.cn/problems/decode-string/,decode-string,栈、递归、字符串,https://algo.itcharge.cn/Solutions/0300-0399/decode-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0394.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A7%A3%E7%A0%81.md,56.7%,中等,2240 -0395,0300-0399,0395. 至少有 K 个重复字符的最长子串,至少有 K 个重复字符的最长子串,https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/,longest-substring-with-at-least-k-repeating-characters,哈希表、字符串、分治、滑动窗口,https://algo.itcharge.cn/Solutions/0300-0399/longest-substring-with-at-least-k-repeating-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0395.%20%E8%87%B3%E5%B0%91%E6%9C%89%20K%20%E4%B8%AA%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md,52.5%,中等,661 -0396,0300-0399,0396. 旋转函数,旋转函数,https://leetcode.cn/problems/rotate-function/,rotate-function,数组、数学、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/rotate-function/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0396.%20%E6%97%8B%E8%BD%AC%E5%87%BD%E6%95%B0.md,53.2%,中等,605 -0397,0300-0399,0397. 整数替换,整数替换,https://leetcode.cn/problems/integer-replacement/,integer-replacement,贪心、位运算、记忆化搜索、动态规划,https://algo.itcharge.cn/Solutions/0300-0399/integer-replacement/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0397.%20%E6%95%B4%E6%95%B0%E6%9B%BF%E6%8D%A2.md,42.4%,中等,702 -0398,0300-0399,0398. 随机数索引,随机数索引,https://leetcode.cn/problems/random-pick-index/,random-pick-index,水塘抽样、哈希表、数学、随机化,https://algo.itcharge.cn/Solutions/0300-0399/random-pick-index/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0398.%20%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%B4%A2%E5%BC%95.md,69.7%,中等,476 -0399,0300-0399,0399. 除法求值,除法求值,https://leetcode.cn/problems/evaluate-division/,evaluate-division,深度优先搜索、广度优先搜索、并查集、图、数组、最短路,https://algo.itcharge.cn/Solutions/0300-0399/evaluate-division/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0399.%20%E9%99%A4%E6%B3%95%E6%B1%82%E5%80%BC.md,59.1%,中等,892 -0400,0400-0499,0400. 第 N 位数字,第 N 位数字,https://leetcode.cn/problems/nth-digit/,nth-digit,数学、二分查找,https://algo.itcharge.cn/Solutions/0400-0499/nth-digit/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0400.%20%E7%AC%AC%20N%20%E4%BD%8D%E6%95%B0%E5%AD%97.md,45.6%,中等,630 -0401,0400-0499,0401. 二进制手表,二进制手表,https://leetcode.cn/problems/binary-watch/,binary-watch,位运算、回溯,https://algo.itcharge.cn/Solutions/0400-0499/binary-watch/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0401.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%89%8B%E8%A1%A8.md,62.6%,简单,884 -0402,0400-0499,0402. 移掉 K 位数字,移掉 K 位数字,https://leetcode.cn/problems/remove-k-digits/,remove-k-digits,栈、贪心、字符串、单调栈,https://algo.itcharge.cn/Solutions/0400-0499/remove-k-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0402.%20%E7%A7%BB%E6%8E%89%20K%20%E4%BD%8D%E6%95%B0%E5%AD%97.md,31.7%,中等,952 -0403,0400-0499,0403. 青蛙过河,青蛙过河,https://leetcode.cn/problems/frog-jump/,frog-jump,数组、动态规划,https://algo.itcharge.cn/Solutions/0400-0499/frog-jump/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0403.%20%E9%9D%92%E8%9B%99%E8%BF%87%E6%B2%B3.md,46.0%,困难,575 -0404,0400-0499,0404. 左叶子之和,左叶子之和,https://leetcode.cn/problems/sum-of-left-leaves/,sum-of-left-leaves,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0400-0499/sum-of-left-leaves/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0404.%20%E5%B7%A6%E5%8F%B6%E5%AD%90%E4%B9%8B%E5%92%8C.md,62.4%,简单,2080 -0405,0400-0499,0405. 数字转换为十六进制数,数字转换为十六进制数,https://leetcode.cn/problems/convert-a-number-to-hexadecimal/,convert-a-number-to-hexadecimal,位运算、数学,https://algo.itcharge.cn/Solutions/0400-0499/convert-a-number-to-hexadecimal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0405.%20%E6%95%B0%E5%AD%97%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E6%95%B0.md,54.7%,简单,635 -0406,0400-0499,0406. 根据身高重建队列,根据身高重建队列,https://leetcode.cn/problems/queue-reconstruction-by-height/,queue-reconstruction-by-height,贪心、树状数组、线段树、数组、排序,https://algo.itcharge.cn/Solutions/0400-0499/queue-reconstruction-by-height/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0406.%20%E6%A0%B9%E6%8D%AE%E8%BA%AB%E9%AB%98%E9%87%8D%E5%BB%BA%E9%98%9F%E5%88%97.md,76.3%,中等,1441 -0407,0400-0499,0407. 接雨水 II,接雨水 II,https://leetcode.cn/problems/trapping-rain-water-ii/,trapping-rain-water-ii,广度优先搜索、数组、矩阵、堆(优先队列),https://algo.itcharge.cn/Solutions/0400-0499/trapping-rain-water-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0407.%20%E6%8E%A5%E9%9B%A8%E6%B0%B4%20II.md,57.6%,困难,307 -0408,0400-0499,0408. 有效单词缩写,有效单词缩写,https://leetcode.cn/problems/valid-word-abbreviation/,valid-word-abbreviation,双指针、字符串,https://algo.itcharge.cn/Solutions/0400-0499/valid-word-abbreviation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0408.%20%E6%9C%89%E6%95%88%E5%8D%95%E8%AF%8D%E7%BC%A9%E5%86%99.md,35.4%,简单,124 -0409,0400-0499,0409. 最长回文串,最长回文串,https://leetcode.cn/problems/longest-palindrome/,longest-palindrome,贪心、哈希表、字符串,https://algo.itcharge.cn/Solutions/0400-0499/longest-palindrome/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0409.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E4%B8%B2.md,55.8%,简单,2058 -0410,0400-0499,0410. 分割数组的最大值,分割数组的最大值,https://leetcode.cn/problems/split-array-largest-sum/,split-array-largest-sum,贪心、数组、二分查找、动态规划、前缀和,https://algo.itcharge.cn/Solutions/0400-0499/split-array-largest-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0410.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,59.2%,困难,537 -0411,0400-0499,0411. 最短独占单词缩写,最短独占单词缩写,https://leetcode.cn/problems/minimum-unique-word-abbreviation/,minimum-unique-word-abbreviation,位运算、字符串、回溯,https://algo.itcharge.cn/Solutions/0400-0499/minimum-unique-word-abbreviation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0411.%20%E6%9C%80%E7%9F%AD%E7%8B%AC%E5%8D%A0%E5%8D%95%E8%AF%8D%E7%BC%A9%E5%86%99.md,49.6%,困难,35 -0412,0400-0499,0412. Fizz Buzz,Fizz Buzz,https://leetcode.cn/problems/fizz-buzz/,fizz-buzz,数学、字符串、模拟,https://algo.itcharge.cn/Solutions/0400-0499/fizz-buzz/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0412.%20Fizz%20Buzz.md,68.9%,简单,1255 -0413,0400-0499,0413. 等差数列划分,等差数列划分,https://leetcode.cn/problems/arithmetic-slices/,arithmetic-slices,数组、动态规划,https://algo.itcharge.cn/Solutions/0400-0499/arithmetic-slices/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0413.%20%E7%AD%89%E5%B7%AE%E6%95%B0%E5%88%97%E5%88%92%E5%88%86.md,69.5%,中等,1476 -0414,0400-0499,0414. 第三大的数,第三大的数,https://leetcode.cn/problems/third-maximum-number/,third-maximum-number,数组、排序,https://algo.itcharge.cn/Solutions/0400-0499/third-maximum-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0414.%20%E7%AC%AC%E4%B8%89%E5%A4%A7%E7%9A%84%E6%95%B0.md,39.7%,简单,1688 -0415,0400-0499,0415. 字符串相加,字符串相加,https://leetcode.cn/problems/add-strings/,add-strings,数学、字符串、模拟,https://algo.itcharge.cn/Solutions/0400-0499/add-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md,54.6%,简单,1725 -0416,0400-0499,0416. 分割等和子集,分割等和子集,https://leetcode.cn/problems/partition-equal-subset-sum/,partition-equal-subset-sum,数组、动态规划,https://algo.itcharge.cn/Solutions/0400-0499/partition-equal-subset-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0416.%20%E5%88%86%E5%89%B2%E7%AD%89%E5%92%8C%E5%AD%90%E9%9B%86.md,52.2%,中等,2089 -0417,0400-0499,0417. 太平洋大西洋水流问题,太平洋大西洋水流问题,https://leetcode.cn/problems/pacific-atlantic-water-flow/,pacific-atlantic-water-flow,深度优先搜索、广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0400-0499/pacific-atlantic-water-flow/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0417.%20%E5%A4%AA%E5%B9%B3%E6%B4%8B%E5%A4%A7%E8%A5%BF%E6%B4%8B%E6%B0%B4%E6%B5%81%E9%97%AE%E9%A2%98.md,56.2%,中等,845 -0418,0400-0499,0418. 屏幕可显示句子的数量,屏幕可显示句子的数量,https://leetcode.cn/problems/sentence-screen-fitting/,sentence-screen-fitting,字符串、动态规划、模拟,https://algo.itcharge.cn/Solutions/0400-0499/sentence-screen-fitting/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0418.%20%E5%B1%8F%E5%B9%95%E5%8F%AF%E6%98%BE%E7%A4%BA%E5%8F%A5%E5%AD%90%E7%9A%84%E6%95%B0%E9%87%8F.md,39.1%,中等,59 -0419,0400-0499,0419. 甲板上的战舰,甲板上的战舰,https://leetcode.cn/problems/battleships-in-a-board/,battleships-in-a-board,深度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0400-0499/battleships-in-a-board/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0419.%20%E7%94%B2%E6%9D%BF%E4%B8%8A%E7%9A%84%E6%88%98%E8%88%B0.md,78.0%,中等,563 -0420,0400-0499,0420. 强密码检验器,强密码检验器,https://leetcode.cn/problems/strong-password-checker/,strong-password-checker,贪心、字符串、堆(优先队列),https://algo.itcharge.cn/Solutions/0400-0499/strong-password-checker/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0420.%20%E5%BC%BA%E5%AF%86%E7%A0%81%E6%A3%80%E9%AA%8C%E5%99%A8.md,39.1%,困难,163 -0421,0400-0499,0421. 数组中两个数的最大异或值,数组中两个数的最大异或值,https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/,maximum-xor-of-two-numbers-in-an-array,位运算、字典树、数组、哈希表,https://algo.itcharge.cn/Solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0421.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BC%82%E6%88%96%E5%80%BC.md,61.1%,中等,418 -0422,0400-0499,0422. 有效的单词方块,有效的单词方块,https://leetcode.cn/problems/valid-word-square/,valid-word-square,数组、矩阵,https://algo.itcharge.cn/Solutions/0400-0499/valid-word-square/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0422.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%8D%95%E8%AF%8D%E6%96%B9%E5%9D%97.md,43.4%,简单,96 -0423,0400-0499,0423. 从英文中重建数字,从英文中重建数字,https://leetcode.cn/problems/reconstruct-original-digits-from-english/,reconstruct-original-digits-from-english,哈希表、数学、字符串,https://algo.itcharge.cn/Solutions/0400-0499/reconstruct-original-digits-from-english/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0423.%20%E4%BB%8E%E8%8B%B1%E6%96%87%E4%B8%AD%E9%87%8D%E5%BB%BA%E6%95%B0%E5%AD%97.md,60.8%,中等,456 -0424,0400-0499,0424. 替换后的最长重复字符,替换后的最长重复字符,https://leetcode.cn/problems/longest-repeating-character-replacement/,longest-repeating-character-replacement,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/0400-0499/longest-repeating-character-replacement/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0424.%20%E6%9B%BF%E6%8D%A2%E5%90%8E%E7%9A%84%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6.md,54.6%,中等,746 -0425,0400-0499,0425. 单词方块,单词方块,https://leetcode.cn/problems/word-squares/,word-squares,字典树、数组、字符串、回溯,https://algo.itcharge.cn/Solutions/0400-0499/word-squares/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0425.%20%E5%8D%95%E8%AF%8D%E6%96%B9%E5%9D%97.md,62.8%,困难,48 -0426,0400-0499,0426. 将二叉搜索树转化为排序的双向链表,将二叉搜索树转化为排序的双向链表,https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/,convert-binary-search-tree-to-sorted-doubly-linked-list,栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表,https://algo.itcharge.cn/Solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0426.%20%E5%B0%86%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%8E%92%E5%BA%8F%E7%9A%84%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md,68.1%,中等,192 -0427,0400-0499,0427. 建立四叉树,建立四叉树,https://leetcode.cn/problems/construct-quad-tree/,construct-quad-tree,树、数组、分治、矩阵,https://algo.itcharge.cn/Solutions/0400-0499/construct-quad-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0427.%20%E5%BB%BA%E7%AB%8B%E5%9B%9B%E5%8F%89%E6%A0%91.md,71.2%,中等,337 -0428,0400-0499,0428. 序列化和反序列化 N 叉树,序列化和反序列化 N 叉树,https://leetcode.cn/problems/serialize-and-deserialize-n-ary-tree/,serialize-and-deserialize-n-ary-tree,树、深度优先搜索、广度优先搜索、字符串,https://algo.itcharge.cn/Solutions/0400-0499/serialize-and-deserialize-n-ary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0428.%20%E5%BA%8F%E5%88%97%E5%8C%96%E5%92%8C%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%20N%20%E5%8F%89%E6%A0%91.md,68.9%,困难,83 -0429,0400-0499,0429. N 叉树的层序遍历,N 叉树的层序遍历,https://leetcode.cn/problems/n-ary-tree-level-order-traversal/,n-ary-tree-level-order-traversal,树、广度优先搜索,https://algo.itcharge.cn/Solutions/0400-0499/n-ary-tree-level-order-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0429.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md,72.9%,中等,1174 -0430,0400-0499,0430. 扁平化多级双向链表,扁平化多级双向链表,https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/,flatten-a-multilevel-doubly-linked-list,深度优先搜索、链表、双向链表,https://algo.itcharge.cn/Solutions/0400-0499/flatten-a-multilevel-doubly-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0430.%20%E6%89%81%E5%B9%B3%E5%8C%96%E5%A4%9A%E7%BA%A7%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md,59.5%,中等,893 -0431,0400-0499,0431. 将 N 叉树编码为二叉树,将 N 叉树编码为二叉树,https://leetcode.cn/problems/encode-n-ary-tree-to-binary-tree/,encode-n-ary-tree-to-binary-tree,树、深度优先搜索、广度优先搜索、设计、二叉树,https://algo.itcharge.cn/Solutions/0400-0499/encode-n-ary-tree-to-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0431.%20%E5%B0%86%20N%20%E5%8F%89%E6%A0%91%E7%BC%96%E7%A0%81%E4%B8%BA%E4%BA%8C%E5%8F%89%E6%A0%91.md,75.1%,困难,47 -0432,0400-0499,0432. 全 O(1) 的数据结构,全 O(1) 的数据结构,https://leetcode.cn/problems/all-oone-data-structure/,all-oone-data-structure,设计、哈希表、链表、双向链表,https://algo.itcharge.cn/Solutions/0400-0499/all-oone-data-structure/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0432.%20%E5%85%A8%20O%281%29%20%E7%9A%84%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.md,46.9%,困难,308 -0433,0400-0499,0433. 最小基因变化,最小基因变化,https://leetcode.cn/problems/minimum-genetic-mutation/,minimum-genetic-mutation,广度优先搜索、哈希表、字符串,https://algo.itcharge.cn/Solutions/0400-0499/minimum-genetic-mutation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0433.%20%E6%9C%80%E5%B0%8F%E5%9F%BA%E5%9B%A0%E5%8F%98%E5%8C%96.md,54.8%,中等,739 -0434,0400-0499,0434. 字符串中的单词数,字符串中的单词数,https://leetcode.cn/problems/number-of-segments-in-a-string/,number-of-segments-in-a-string,字符串,https://algo.itcharge.cn/Solutions/0400-0499/number-of-segments-in-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0434.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D%E6%95%B0.md,38.6%,简单,1151 -0435,0400-0499,0435. 无重叠区间,无重叠区间,https://leetcode.cn/problems/non-overlapping-intervals/,non-overlapping-intervals,贪心、数组、动态规划、排序,https://algo.itcharge.cn/Solutions/0400-0499/non-overlapping-intervals/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0435.%20%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.md,51.2%,中等,1644 -0436,0400-0499,0436. 寻找右区间,寻找右区间,https://leetcode.cn/problems/find-right-interval/,find-right-interval,数组、二分查找、排序,https://algo.itcharge.cn/Solutions/0400-0499/find-right-interval/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0436.%20%E5%AF%BB%E6%89%BE%E5%8F%B3%E5%8C%BA%E9%97%B4.md,56.8%,中等,574 -0437,0400-0499,0437. 路径总和 III,路径总和 III,https://leetcode.cn/problems/path-sum-iii/,path-sum-iii,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0400-0499/path-sum-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0437.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C%20III.md,50.2%,中等,1526 -0438,0400-0499,0438. 找到字符串中所有字母异位词,找到字符串中所有字母异位词,https://leetcode.cn/problems/find-all-anagrams-in-a-string/,find-all-anagrams-in-a-string,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/0400-0499/find-all-anagrams-in-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0438.%20%E6%89%BE%E5%88%B0%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E6%89%80%E6%9C%89%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.md,54.7%,中等,2161 -0439,0400-0499,0439. 三元表达式解析器,三元表达式解析器,https://leetcode.cn/problems/ternary-expression-parser/,ternary-expression-parser,栈、递归、字符串,https://algo.itcharge.cn/Solutions/0400-0499/ternary-expression-parser/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0439.%20%E4%B8%89%E5%85%83%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%A7%A3%E6%9E%90%E5%99%A8.md,60.6%,中等,104 -0440,0400-0499,0440. 字典序的第K小数字,字典序的第K小数字,https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/,k-th-smallest-in-lexicographical-order,字典树,https://algo.itcharge.cn/Solutions/0400-0499/k-th-smallest-in-lexicographical-order/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0440.%20%E5%AD%97%E5%85%B8%E5%BA%8F%E7%9A%84%E7%AC%ACK%E5%B0%8F%E6%95%B0%E5%AD%97.md,42.6%,困难,308 -0441,0400-0499,0441. 排列硬币,排列硬币,https://leetcode.cn/problems/arranging-coins/,arranging-coins,数学、二分查找,https://algo.itcharge.cn/Solutions/0400-0499/arranging-coins/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0441.%20%E6%8E%92%E5%88%97%E7%A1%AC%E5%B8%81.md,45.2%,简单,1122 -0442,0400-0499,0442. 数组中重复的数据,数组中重复的数据,https://leetcode.cn/problems/find-all-duplicates-in-an-array/,find-all-duplicates-in-an-array,数组、哈希表,https://algo.itcharge.cn/Solutions/0400-0499/find-all-duplicates-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0442.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E6%8D%AE.md,75.1%,中等,1021 -0443,0400-0499,0443. 压缩字符串,压缩字符串,https://leetcode.cn/problems/string-compression/,string-compression,双指针、字符串,https://algo.itcharge.cn/Solutions/0400-0499/string-compression/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0443.%20%E5%8E%8B%E7%BC%A9%E5%AD%97%E7%AC%A6%E4%B8%B2.md,47.9%,中等,898 -0444,0400-0499,0444. 序列重建,序列重建,https://leetcode.cn/problems/sequence-reconstruction/,sequence-reconstruction,图、拓扑排序、数组,https://algo.itcharge.cn/Solutions/0400-0499/sequence-reconstruction/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0444.%20%E5%BA%8F%E5%88%97%E9%87%8D%E5%BB%BA.md,31.4%,中等,86 -0445,0400-0499,0445. 两数相加 II,两数相加 II,https://leetcode.cn/problems/add-two-numbers-ii/,add-two-numbers-ii,栈、链表、数学,https://algo.itcharge.cn/Solutions/0400-0499/add-two-numbers-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0445.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0%20II.md,60.2%,中等,1299 -0446,0400-0499,0446. 等差数列划分 II - 子序列,等差数列划分 II - 子序列,https://leetcode.cn/problems/arithmetic-slices-ii-subsequence/,arithmetic-slices-ii-subsequence,数组、动态规划,https://algo.itcharge.cn/Solutions/0400-0499/arithmetic-slices-ii-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0446.%20%E7%AD%89%E5%B7%AE%E6%95%B0%E5%88%97%E5%88%92%E5%88%86%20II%20-%20%E5%AD%90%E5%BA%8F%E5%88%97.md,54.7%,困难,206 -0447,0400-0499,0447. 回旋镖的数量,回旋镖的数量,https://leetcode.cn/problems/number-of-boomerangs/,number-of-boomerangs,数组、哈希表、数学,https://algo.itcharge.cn/Solutions/0400-0499/number-of-boomerangs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0447.%20%E5%9B%9E%E6%97%8B%E9%95%96%E7%9A%84%E6%95%B0%E9%87%8F.md,66.7%,中等,434 -0448,0400-0499,0448. 找到所有数组中消失的数字,找到所有数组中消失的数字,https://leetcode.cn/problems/find-all-numbers-disappeared-in-an-array/,find-all-numbers-disappeared-in-an-array,数组、哈希表,https://algo.itcharge.cn/Solutions/0400-0499/find-all-numbers-disappeared-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0448.%20%E6%89%BE%E5%88%B0%E6%89%80%E6%9C%89%E6%95%B0%E7%BB%84%E4%B8%AD%E6%B6%88%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md,65.9%,简单,1940 -0449,0400-0499,0449. 序列化和反序列化二叉搜索树,序列化和反序列化二叉搜索树,https://leetcode.cn/problems/serialize-and-deserialize-bst/,serialize-and-deserialize-bst,树、深度优先搜索、广度优先搜索、设计、二叉搜索树、字符串、二叉树,https://algo.itcharge.cn/Solutions/0400-0499/serialize-and-deserialize-bst/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0449.%20%E5%BA%8F%E5%88%97%E5%8C%96%E5%92%8C%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,60.5%,中等,433 -0450,0400-0499,0450. 删除二叉搜索树中的节点,删除二叉搜索树中的节点,https://leetcode.cn/problems/delete-node-in-a-bst/,delete-node-in-a-bst,树、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0400-0499/delete-node-in-a-bst/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0450.%20%E5%88%A0%E9%99%A4%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md,52.4%,中等,1968 -0451,0400-0499,0451. 根据字符出现频率排序,根据字符出现频率排序,https://leetcode.cn/problems/sort-characters-by-frequency/,sort-characters-by-frequency,哈希表、字符串、桶排序、计数、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0400-0499/sort-characters-by-frequency/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0451.%20%E6%A0%B9%E6%8D%AE%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E9%A2%91%E7%8E%87%E6%8E%92%E5%BA%8F.md,72.0%,中等,1339 -0452,0400-0499,0452. 用最少数量的箭引爆气球,用最少数量的箭引爆气球,https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/,minimum-number-of-arrows-to-burst-balloons,贪心、数组、排序,https://algo.itcharge.cn/Solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0452.%20%E7%94%A8%E6%9C%80%E5%B0%91%E6%95%B0%E9%87%8F%E7%9A%84%E7%AE%AD%E5%BC%95%E7%88%86%E6%B0%94%E7%90%83.md,50.7%,中等,1523 -0453,0400-0499,0453. 最小操作次数使数组元素相等,最小操作次数使数组元素相等,https://leetcode.cn/problems/minimum-moves-to-equal-array-elements/,minimum-moves-to-equal-array-elements,数组、数学,https://algo.itcharge.cn/Solutions/0400-0499/minimum-moves-to-equal-array-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0453.%20%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0%E4%BD%BF%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E7%9B%B8%E7%AD%89.md,61.4%,中等,865 -0454,0400-0499,0454. 四数相加 II,四数相加 II,https://leetcode.cn/problems/4sum-ii/,4sum-ii,数组、哈希表,https://algo.itcharge.cn/Solutions/0400-0499/4sum-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0454.%20%E5%9B%9B%E6%95%B0%E7%9B%B8%E5%8A%A0%20II.md,64.2%,中等,1203 -0455,0400-0499,0455. 分发饼干,分发饼干,https://leetcode.cn/problems/assign-cookies/,assign-cookies,贪心、数组、双指针、排序,https://algo.itcharge.cn/Solutions/0400-0499/assign-cookies/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0455.%20%E5%88%86%E5%8F%91%E9%A5%BC%E5%B9%B2.md,56.4%,简单,2305 -0456,0400-0499,0456. 132 模式,132 模式,https://leetcode.cn/problems/132-pattern/,132-pattern,栈、数组、二分查找、有序集合、单调栈,https://algo.itcharge.cn/Solutions/0400-0499/132-pattern/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0456.%20132%20%E6%A8%A1%E5%BC%8F.md,36.4%,中等,614 -0457,0400-0499,0457. 环形数组是否存在循环,环形数组是否存在循环,https://leetcode.cn/problems/circular-array-loop/,circular-array-loop,数组、哈希表、双指针,https://algo.itcharge.cn/Solutions/0400-0499/circular-array-loop/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0457.%20%E7%8E%AF%E5%BD%A2%E6%95%B0%E7%BB%84%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E5%BE%AA%E7%8E%AF.md,43.4%,中等,374 -0458,0400-0499,0458. 可怜的小猪,可怜的小猪,https://leetcode.cn/problems/poor-pigs/,poor-pigs,数学、动态规划、组合数学,https://algo.itcharge.cn/Solutions/0400-0499/poor-pigs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0458.%20%E5%8F%AF%E6%80%9C%E7%9A%84%E5%B0%8F%E7%8C%AA.md,67.7%,困难,244 -0459,0400-0499,0459. 重复的子字符串,重复的子字符串,https://leetcode.cn/problems/repeated-substring-pattern/,repeated-substring-pattern,字符串、字符串匹配,https://algo.itcharge.cn/Solutions/0400-0499/repeated-substring-pattern/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0459.%20%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,51.2%,简单,1307 -0460,0400-0499,0460. LFU 缓存,LFU 缓存,https://leetcode.cn/problems/lfu-cache/,lfu-cache,设计、哈希表、链表、双向链表,https://algo.itcharge.cn/Solutions/0400-0499/lfu-cache/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0460.%20LFU%20%E7%BC%93%E5%AD%98.md,44.8%,困难,646 -0461,0400-0499,0461. 汉明距离,汉明距离,https://leetcode.cn/problems/hamming-distance/,hamming-distance,位运算,https://algo.itcharge.cn/Solutions/0400-0499/hamming-distance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0461.%20%E6%B1%89%E6%98%8E%E8%B7%9D%E7%A6%BB.md,81.9%,简单,2077 -0462,0400-0499,0462. 最小操作次数使数组元素相等 II,最小操作次数使数组元素相等 II,https://leetcode.cn/problems/minimum-moves-to-equal-array-elements-ii/,minimum-moves-to-equal-array-elements-ii,数组、数学、排序,https://algo.itcharge.cn/Solutions/0400-0499/minimum-moves-to-equal-array-elements-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0462.%20%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0%E4%BD%BF%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E7%9B%B8%E7%AD%89%20II.md,62.4%,中等,526 -0463,0400-0499,0463. 岛屿的周长,岛屿的周长,https://leetcode.cn/problems/island-perimeter/,island-perimeter,深度优先搜索、广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0400-0499/island-perimeter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0463.%20%E5%B2%9B%E5%B1%BF%E7%9A%84%E5%91%A8%E9%95%BF.md,70.0%,简单,1436 -0464,0400-0499,0464. 我能赢吗,我能赢吗,https://leetcode.cn/problems/can-i-win/,can-i-win,位运算、记忆化搜索、数学、动态规划、状态压缩、博弈,https://algo.itcharge.cn/Solutions/0400-0499/can-i-win/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0464.%20%E6%88%91%E8%83%BD%E8%B5%A2%E5%90%97.md,41.2%,中等,289 -0465,0400-0499,0465. 最优账单平衡,最优账单平衡,https://leetcode.cn/problems/optimal-account-balancing/,optimal-account-balancing,位运算、数组、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/0400-0499/optimal-account-balancing/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0465.%20%E6%9C%80%E4%BC%98%E8%B4%A6%E5%8D%95%E5%B9%B3%E8%A1%A1.md,54.5%,困难,42 -0466,0400-0499,0466. 统计重复个数,统计重复个数,https://leetcode.cn/problems/count-the-repetitions/,count-the-repetitions,字符串、动态规划,https://algo.itcharge.cn/Solutions/0400-0499/count-the-repetitions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0466.%20%E7%BB%9F%E8%AE%A1%E9%87%8D%E5%A4%8D%E4%B8%AA%E6%95%B0.md,37.6%,困难,204 -0467,0400-0499,0467. 环绕字符串中唯一的子字符串,环绕字符串中唯一的子字符串,https://leetcode.cn/problems/unique-substrings-in-wraparound-string/,unique-substrings-in-wraparound-string,字符串、动态规划,https://algo.itcharge.cn/Solutions/0400-0499/unique-substrings-in-wraparound-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0467.%20%E7%8E%AF%E7%BB%95%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E5%94%AF%E4%B8%80%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,51.7%,中等,371 -0468,0400-0499,0468. 验证IP地址,验证IP地址,https://leetcode.cn/problems/validate-ip-address/,validate-ip-address,字符串,https://algo.itcharge.cn/Solutions/0400-0499/validate-ip-address/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0468.%20%E9%AA%8C%E8%AF%81IP%E5%9C%B0%E5%9D%80.md,28.1%,中等,716 -0469,0400-0499,0469. 凸多边形,凸多边形,https://leetcode.cn/problems/convex-polygon/,convex-polygon,几何、数学,https://algo.itcharge.cn/Solutions/0400-0499/convex-polygon/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0469.%20%E5%87%B8%E5%A4%9A%E8%BE%B9%E5%BD%A2.md,42.9%,中等,36 -0470,0400-0499,0470. 用 Rand7() 实现 Rand10(),用 Rand7() 实现 Rand10(),https://leetcode.cn/problems/implement-rand10-using-rand7/,implement-rand10-using-rand7,数学、拒绝采样、概率与统计、随机化,https://algo.itcharge.cn/Solutions/0400-0499/implement-rand10-using-rand7/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0470.%20%E7%94%A8%20Rand7%28%29%20%E5%AE%9E%E7%8E%B0%20Rand10%28%29.md,55.2%,中等,465 -0471,0400-0499,0471. 编码最短长度的字符串,编码最短长度的字符串,https://leetcode.cn/problems/encode-string-with-shortest-length/,encode-string-with-shortest-length,字符串、动态规划,https://algo.itcharge.cn/Solutions/0400-0499/encode-string-with-shortest-length/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0471.%20%E7%BC%96%E7%A0%81%E6%9C%80%E7%9F%AD%E9%95%BF%E5%BA%A6%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,59.6%,困难,43 -0472,0400-0499,0472. 连接词,连接词,https://leetcode.cn/problems/concatenated-words/,concatenated-words,深度优先搜索、字典树、数组、字符串、动态规划,https://algo.itcharge.cn/Solutions/0400-0499/concatenated-words/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0472.%20%E8%BF%9E%E6%8E%A5%E8%AF%8D.md,52.0%,困难,266 -0473,0400-0499,0473. 火柴拼正方形,火柴拼正方形,https://leetcode.cn/problems/matchsticks-to-square/,matchsticks-to-square,位运算、数组、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/0400-0499/matchsticks-to-square/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0473.%20%E7%81%AB%E6%9F%B4%E6%8B%BC%E6%AD%A3%E6%96%B9%E5%BD%A2.md,46.7%,中等,531 -0474,0400-0499,0474. 一和零,一和零,https://leetcode.cn/problems/ones-and-zeroes/,ones-and-zeroes,数组、字符串、动态规划,https://algo.itcharge.cn/Solutions/0400-0499/ones-and-zeroes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0474.%20%E4%B8%80%E5%92%8C%E9%9B%B6.md,65.2%,中等,1075 -0475,0400-0499,0475. 供暖器,供暖器,https://leetcode.cn/problems/heaters/,heaters,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/0400-0499/heaters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0475.%20%E4%BE%9B%E6%9A%96%E5%99%A8.md,41.0%,中等,706 -0476,0400-0499,0476. 数字的补数,数字的补数,https://leetcode.cn/problems/number-complement/,number-complement,位运算,https://algo.itcharge.cn/Solutions/0400-0499/number-complement/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0476.%20%E6%95%B0%E5%AD%97%E7%9A%84%E8%A1%A5%E6%95%B0.md,69.6%,简单,1094 -0477,0400-0499,0477. 汉明距离总和,汉明距离总和,https://leetcode.cn/problems/total-hamming-distance/,total-hamming-distance,位运算、数组、数学,https://algo.itcharge.cn/Solutions/0400-0499/total-hamming-distance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0477.%20%E6%B1%89%E6%98%8E%E8%B7%9D%E7%A6%BB%E6%80%BB%E5%92%8C.md,60.6%,中等,388 -0478,0400-0499,0478. 在圆内随机生成点,在圆内随机生成点,https://leetcode.cn/problems/generate-random-point-in-a-circle/,generate-random-point-in-a-circle,几何、数学、拒绝采样、随机化,https://algo.itcharge.cn/Solutions/0400-0499/generate-random-point-in-a-circle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0478.%20%E5%9C%A8%E5%9C%86%E5%86%85%E9%9A%8F%E6%9C%BA%E7%94%9F%E6%88%90%E7%82%B9.md,48.3%,中等,188 -0479,0400-0499,0479. 最大回文数乘积,最大回文数乘积,https://leetcode.cn/problems/largest-palindrome-product/,largest-palindrome-product,数学,https://algo.itcharge.cn/Solutions/0400-0499/largest-palindrome-product/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0479.%20%E6%9C%80%E5%A4%A7%E5%9B%9E%E6%96%87%E6%95%B0%E4%B9%98%E7%A7%AF.md,62.5%,困难,174 -0480,0400-0499,0480. 滑动窗口中位数,滑动窗口中位数,https://leetcode.cn/problems/sliding-window-median/,sliding-window-median,数组、哈希表、滑动窗口、堆(优先队列),https://algo.itcharge.cn/Solutions/0400-0499/sliding-window-median/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0480.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E4%B8%AD%E4%BD%8D%E6%95%B0.md,44.1%,困难,520 -0481,0400-0499,0481. 神奇字符串,神奇字符串,https://leetcode.cn/problems/magical-string/,magical-string,双指针、字符串,https://algo.itcharge.cn/Solutions/0400-0499/magical-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0481.%20%E7%A5%9E%E5%A5%87%E5%AD%97%E7%AC%A6%E4%B8%B2.md,64.2%,中等,470 -0482,0400-0499,0482. 密钥格式化,密钥格式化,https://leetcode.cn/problems/license-key-formatting/,license-key-formatting,字符串,https://algo.itcharge.cn/Solutions/0400-0499/license-key-formatting/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0482.%20%E5%AF%86%E9%92%A5%E6%A0%BC%E5%BC%8F%E5%8C%96.md,46.7%,简单,596 -0483,0400-0499,0483. 最小好进制,最小好进制,https://leetcode.cn/problems/smallest-good-base/,smallest-good-base,数学、二分查找,https://algo.itcharge.cn/Solutions/0400-0499/smallest-good-base/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0483.%20%E6%9C%80%E5%B0%8F%E5%A5%BD%E8%BF%9B%E5%88%B6.md,59.1%,困难,147 -0484,0400-0499,0484. 寻找排列,寻找排列,https://leetcode.cn/problems/find-permutation/,find-permutation,栈、贪心、数组、字符串,https://algo.itcharge.cn/Solutions/0400-0499/find-permutation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0484.%20%E5%AF%BB%E6%89%BE%E6%8E%92%E5%88%97.md,59.7%,中等,58 -0485,0400-0499,0485. 最大连续 1 的个数,最大连续 1 的个数,https://leetcode.cn/problems/max-consecutive-ones/,max-consecutive-ones,数组,https://algo.itcharge.cn/Solutions/0400-0499/max-consecutive-ones/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0485.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md,61.1%,简单,1615 -0486,0400-0499,0486. 预测赢家,预测赢家,https://leetcode.cn/problems/predict-the-winner/,predict-the-winner,递归、数组、数学、动态规划、博弈,https://algo.itcharge.cn/Solutions/0400-0499/predict-the-winner/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0486.%20%E9%A2%84%E6%B5%8B%E8%B5%A2%E5%AE%B6.md,59.5%,中等,562 -0487,0400-0499,0487. 最大连续1的个数 II,最大连续1的个数 II,https://leetcode.cn/problems/max-consecutive-ones-ii/,max-consecutive-ones-ii,数组、动态规划、滑动窗口,https://algo.itcharge.cn/Solutions/0400-0499/max-consecutive-ones-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0487.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20II.md,57.6%,中等,231 -0488,0400-0499,0488. 祖玛游戏,祖玛游戏,https://leetcode.cn/problems/zuma-game/,zuma-game,栈、广度优先搜索、记忆化搜索、字符串、动态规划,https://algo.itcharge.cn/Solutions/0400-0499/zuma-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0488.%20%E7%A5%96%E7%8E%9B%E6%B8%B8%E6%88%8F.md,48.6%,困难,188 -0489,0400-0499,0489. 扫地机器人,扫地机器人,https://leetcode.cn/problems/robot-room-cleaner/,robot-room-cleaner,回溯、交互,https://algo.itcharge.cn/Solutions/0400-0499/robot-room-cleaner/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0489.%20%E6%89%AB%E5%9C%B0%E6%9C%BA%E5%99%A8%E4%BA%BA.md,74.8%,困难,37 -0490,0400-0499,0490. 迷宫,迷宫,https://leetcode.cn/problems/the-maze/,the-maze,深度优先搜索、广度优先搜索、图,https://algo.itcharge.cn/Solutions/0400-0499/the-maze/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0490.%20%E8%BF%B7%E5%AE%AB.md,50.2%,中等,139 -0491,0400-0499,0491. 递增子序列,递增子序列,https://leetcode.cn/problems/non-decreasing-subsequences/,non-decreasing-subsequences,位运算、数组、哈希表、回溯,https://algo.itcharge.cn/Solutions/0400-0499/non-decreasing-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0491.%20%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.md,52.0%,中等,900 -0492,0400-0499,0492. 构造矩形,构造矩形,https://leetcode.cn/problems/construct-the-rectangle/,construct-the-rectangle,数学,https://algo.itcharge.cn/Solutions/0400-0499/construct-the-rectangle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0492.%20%E6%9E%84%E9%80%A0%E7%9F%A9%E5%BD%A2.md,61.2%,简单,535 -0493,0400-0499,0493. 翻转对,翻转对,https://leetcode.cn/problems/reverse-pairs/,reverse-pairs,树状数组、线段树、数组、二分查找、分治、有序集合、归并排序,https://algo.itcharge.cn/Solutions/0400-0499/reverse-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0493.%20%E7%BF%BB%E8%BD%AC%E5%AF%B9.md,36.5%,困难,401 -0494,0400-0499,0494. 目标和,目标和,https://leetcode.cn/problems/target-sum/,target-sum,数组、动态规划、回溯,https://algo.itcharge.cn/Solutions/0400-0499/target-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0494.%20%E7%9B%AE%E6%A0%87%E5%92%8C.md,48.7%,中等,1985 -0495,0400-0499,0495. 提莫攻击,提莫攻击,https://leetcode.cn/problems/teemo-attacking/,teemo-attacking,数组、模拟,https://algo.itcharge.cn/Solutions/0400-0499/teemo-attacking/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0495.%20%E6%8F%90%E8%8E%AB%E6%94%BB%E5%87%BB.md,59.4%,简单,1275 -0496,0400-0499,0496. 下一个更大元素 I,下一个更大元素 I,https://leetcode.cn/problems/next-greater-element-i/,next-greater-element-i,栈、数组、哈希表、单调栈,https://algo.itcharge.cn/Solutions/0400-0499/next-greater-element-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0496.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0%20I.md,71.8%,简单,2391 -0497,0400-0499,0497. 非重叠矩形中的随机点,非重叠矩形中的随机点,https://leetcode.cn/problems/random-point-in-non-overlapping-rectangles/,random-point-in-non-overlapping-rectangles,水塘抽样、数组、数学、二分查找、有序集合、前缀和、随机化,https://algo.itcharge.cn/Solutions/0400-0499/random-point-in-non-overlapping-rectangles/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0497.%20%E9%9D%9E%E9%87%8D%E5%8F%A0%E7%9F%A9%E5%BD%A2%E4%B8%AD%E7%9A%84%E9%9A%8F%E6%9C%BA%E7%82%B9.md,41.9%,中等,214 -0498,0400-0499,0498. 对角线遍历,对角线遍历,https://leetcode.cn/problems/diagonal-traverse/,diagonal-traverse,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/0400-0499/diagonal-traverse/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0498.%20%E5%AF%B9%E8%A7%92%E7%BA%BF%E9%81%8D%E5%8E%86.md,55.9%,中等,1121 -0499,0400-0499,0499. 迷宫 III,迷宫 III,https://leetcode.cn/problems/the-maze-iii/,the-maze-iii,深度优先搜索、广度优先搜索、图、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/0400-0499/the-maze-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0499.%20%E8%BF%B7%E5%AE%AB%20III.md,43.0%,困难,89 -0500,0500-0599,0500. 键盘行,键盘行,https://leetcode.cn/problems/keyboard-row/,keyboard-row,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0500-0599/keyboard-row/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0500.%20%E9%94%AE%E7%9B%98%E8%A1%8C.md,74.0%,简单,1033 -0501,0500-0599,0501. 二叉搜索树中的众数,二叉搜索树中的众数,https://leetcode.cn/problems/find-mode-in-binary-search-tree/,find-mode-in-binary-search-tree,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/find-mode-in-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0501.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E4%BC%97%E6%95%B0.md,54.7%,简单,1099 -0502,0500-0599,0502. IPO,IPO,https://leetcode.cn/problems/ipo/,ipo,贪心、数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0500-0599/ipo/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0502.%20IPO.md,44.9%,困难,428 -0503,0500-0599,0503. 下一个更大元素 II,下一个更大元素 II,https://leetcode.cn/problems/next-greater-element-ii/,next-greater-element-ii,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/0500-0599/next-greater-element-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0503.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0%20II.md,66.8%,中等,1613 -0504,0500-0599,0504. 七进制数,七进制数,https://leetcode.cn/problems/base-7/,base-7,数学,https://algo.itcharge.cn/Solutions/0500-0599/base-7/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0504.%20%E4%B8%83%E8%BF%9B%E5%88%B6%E6%95%B0.md,51.8%,简单,841 -0505,0500-0599,0505. 迷宫 II,迷宫 II,https://leetcode.cn/problems/the-maze-ii/,the-maze-ii,深度优先搜索、广度优先搜索、图、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/0500-0599/the-maze-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0505.%20%E8%BF%B7%E5%AE%AB%20II.md,51.6%,中等,115 -0506,0500-0599,0506. 相对名次,相对名次,https://leetcode.cn/problems/relative-ranks/,relative-ranks,数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0500-0599/relative-ranks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0506.%20%E7%9B%B8%E5%AF%B9%E5%90%8D%E6%AC%A1.md,65.0%,简单,979 -0507,0500-0599,0507. 完美数,完美数,https://leetcode.cn/problems/perfect-number/,perfect-number,数学,https://algo.itcharge.cn/Solutions/0500-0599/perfect-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0507.%20%E5%AE%8C%E7%BE%8E%E6%95%B0.md,49.1%,简单,570 -0508,0500-0599,0508. 出现次数最多的子树元素和,出现次数最多的子树元素和,https://leetcode.cn/problems/most-frequent-subtree-sum/,most-frequent-subtree-sum,树、深度优先搜索、哈希表、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/most-frequent-subtree-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0508.%20%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E6%9C%80%E5%A4%9A%E7%9A%84%E5%AD%90%E6%A0%91%E5%85%83%E7%B4%A0%E5%92%8C.md,75.5%,中等,567 -0509,0500-0599,0509. 斐波那契数,斐波那契数,https://leetcode.cn/problems/fibonacci-number/,fibonacci-number,递归、记忆化搜索、数学、动态规划,https://algo.itcharge.cn/Solutions/0500-0599/fibonacci-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0509.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md,66.2%,简单,3152 -0510,0500-0599,0510. 二叉搜索树中的中序后继 II,二叉搜索树中的中序后继 II,https://leetcode.cn/problems/inorder-successor-in-bst-ii/,inorder-successor-in-bst-ii,树、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/inorder-successor-in-bst-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0510.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E4%B8%AD%E5%BA%8F%E5%90%8E%E7%BB%A7%20II.md,60.4%,中等,74 -0511,0500-0599,0511. 游戏玩法分析 I,游戏玩法分析 I,https://leetcode.cn/problems/game-play-analysis-i/,game-play-analysis-i,数据库,https://algo.itcharge.cn/Solutions/0500-0599/game-play-analysis-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0511.%20%E6%B8%B8%E6%88%8F%E7%8E%A9%E6%B3%95%E5%88%86%E6%9E%90%20I.md,70.7%,简单,378 -0512,0500-0599,0512. 游戏玩法分析 II,游戏玩法分析 II,https://leetcode.cn/problems/game-play-analysis-ii/,game-play-analysis-ii,数据库,https://algo.itcharge.cn/Solutions/0500-0599/game-play-analysis-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0512.%20%E6%B8%B8%E6%88%8F%E7%8E%A9%E6%B3%95%E5%88%86%E6%9E%90%20II.md,54.2%,简单,229 -0513,0500-0599,0513. 找树左下角的值,找树左下角的值,https://leetcode.cn/problems/find-bottom-left-tree-value/,find-bottom-left-tree-value,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/find-bottom-left-tree-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0513.%20%E6%89%BE%E6%A0%91%E5%B7%A6%E4%B8%8B%E8%A7%92%E7%9A%84%E5%80%BC.md,73.5%,中等,1542 -0514,0500-0599,0514. 自由之路,自由之路,https://leetcode.cn/problems/freedom-trail/,freedom-trail,深度优先搜索、广度优先搜索、字符串、动态规划,https://algo.itcharge.cn/Solutions/0500-0599/freedom-trail/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0514.%20%E8%87%AA%E7%94%B1%E4%B9%8B%E8%B7%AF.md,51.5%,困难,350 -0515,0500-0599,0515. 在每个树行中找最大值,在每个树行中找最大值,https://leetcode.cn/problems/find-largest-value-in-each-tree-row/,find-largest-value-in-each-tree-row,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/find-largest-value-in-each-tree-row/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0515.%20%E5%9C%A8%E6%AF%8F%E4%B8%AA%E6%A0%91%E8%A1%8C%E4%B8%AD%E6%89%BE%E6%9C%80%E5%A4%A7%E5%80%BC.md,66.4%,中等,1115 -0516,0500-0599,0516. 最长回文子序列,最长回文子序列,https://leetcode.cn/problems/longest-palindromic-subsequence/,longest-palindromic-subsequence,字符串、动态规划,https://algo.itcharge.cn/Solutions/0500-0599/longest-palindromic-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0516.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97.md,67.2%,中等,1118 -0517,0500-0599,0517. 超级洗衣机,超级洗衣机,https://leetcode.cn/problems/super-washing-machines/,super-washing-machines,贪心、数组,https://algo.itcharge.cn/Solutions/0500-0599/super-washing-machines/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0517.%20%E8%B6%85%E7%BA%A7%E6%B4%97%E8%A1%A3%E6%9C%BA.md,51.1%,困难,187 -0518,0500-0599,0518. 零钱兑换 II,零钱兑换 II,https://leetcode.cn/problems/coin-change-ii/,coin-change-ii,数组、动态规划,https://algo.itcharge.cn/Solutions/0500-0599/coin-change-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0518.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2%20II.md,70.5%,中等,1279 -0519,0500-0599,0519. 随机翻转矩阵,随机翻转矩阵,https://leetcode.cn/problems/random-flip-matrix/,random-flip-matrix,水塘抽样、哈希表、数学、随机化,https://algo.itcharge.cn/Solutions/0500-0599/random-flip-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0519.%20%E9%9A%8F%E6%9C%BA%E7%BF%BB%E8%BD%AC%E7%9F%A9%E9%98%B5.md,46.3%,中等,213 -0520,0500-0599,0520. 检测大写字母,检测大写字母,https://leetcode.cn/problems/detect-capital/,detect-capital,字符串,https://algo.itcharge.cn/Solutions/0500-0599/detect-capital/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0520.%20%E6%A3%80%E6%B5%8B%E5%A4%A7%E5%86%99%E5%AD%97%E6%AF%8D.md,56.8%,简单,1332 -0521,0500-0599,0521. 最长特殊序列 Ⅰ,最长特殊序列 Ⅰ,https://leetcode.cn/problems/longest-uncommon-subsequence-i/,longest-uncommon-subsequence-i,字符串,https://algo.itcharge.cn/Solutions/0500-0599/longest-uncommon-subsequence-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0521.%20%E6%9C%80%E9%95%BF%E7%89%B9%E6%AE%8A%E5%BA%8F%E5%88%97%20%E2%85%A0.md,73.7%,简单,573 -0522,0500-0599,0522. 最长特殊序列 II,最长特殊序列 II,https://leetcode.cn/problems/longest-uncommon-subsequence-ii/,longest-uncommon-subsequence-ii,数组、哈希表、双指针、字符串、排序,https://algo.itcharge.cn/Solutions/0500-0599/longest-uncommon-subsequence-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0522.%20%E6%9C%80%E9%95%BF%E7%89%B9%E6%AE%8A%E5%BA%8F%E5%88%97%20II.md,48.8%,中等,362 -0523,0500-0599,0523. 连续的子数组和,连续的子数组和,https://leetcode.cn/problems/continuous-subarray-sum/,continuous-subarray-sum,数组、哈希表、数学、前缀和,https://algo.itcharge.cn/Solutions/0500-0599/continuous-subarray-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0523.%20%E8%BF%9E%E7%BB%AD%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md,28.5%,中等,782 -0524,0500-0599,0524. 通过删除字母匹配到字典里最长单词,通过删除字母匹配到字典里最长单词,https://leetcode.cn/problems/longest-word-in-dictionary-through-deleting/,longest-word-in-dictionary-through-deleting,数组、双指针、字符串、排序,https://algo.itcharge.cn/Solutions/0500-0599/longest-word-in-dictionary-through-deleting/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0524.%20%E9%80%9A%E8%BF%87%E5%88%A0%E9%99%A4%E5%AD%97%E6%AF%8D%E5%8C%B9%E9%85%8D%E5%88%B0%E5%AD%97%E5%85%B8%E9%87%8C%E6%9C%80%E9%95%BF%E5%8D%95%E8%AF%8D.md,50.0%,中等,974 -0525,0500-0599,0525. 连续数组,连续数组,https://leetcode.cn/problems/contiguous-array/,contiguous-array,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/0500-0599/contiguous-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0525.%20%E8%BF%9E%E7%BB%AD%E6%95%B0%E7%BB%84.md,54.7%,中等,704 -0526,0500-0599,0526. 优美的排列,优美的排列,https://leetcode.cn/problems/beautiful-arrangement/,beautiful-arrangement,位运算、数组、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/0500-0599/beautiful-arrangement/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0526.%20%E4%BC%98%E7%BE%8E%E7%9A%84%E6%8E%92%E5%88%97.md,73.2%,中等,515 -0527,0500-0599,0527. 单词缩写,单词缩写,https://leetcode.cn/problems/word-abbreviation/,word-abbreviation,贪心、字典树、数组、字符串、排序,https://algo.itcharge.cn/Solutions/0500-0599/word-abbreviation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0527.%20%E5%8D%95%E8%AF%8D%E7%BC%A9%E5%86%99.md,60.1%,困难,42 -0528,0500-0599,0528. 按权重随机选择,按权重随机选择,https://leetcode.cn/problems/random-pick-with-weight/,random-pick-with-weight,数组、数学、二分查找、前缀和、随机化,https://algo.itcharge.cn/Solutions/0500-0599/random-pick-with-weight/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0528.%20%E6%8C%89%E6%9D%83%E9%87%8D%E9%9A%8F%E6%9C%BA%E9%80%89%E6%8B%A9.md,48.4%,中等,490 -0529,0500-0599,0529. 扫雷游戏,扫雷游戏,https://leetcode.cn/problems/minesweeper/,minesweeper,深度优先搜索、广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0500-0599/minesweeper/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0529.%20%E6%89%AB%E9%9B%B7%E6%B8%B8%E6%88%8F.md,64.0%,中等,600 -0530,0500-0599,0530. 二叉搜索树的最小绝对差,二叉搜索树的最小绝对差,https://leetcode.cn/problems/minimum-absolute-difference-in-bst/,minimum-absolute-difference-in-bst,树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/minimum-absolute-difference-in-bst/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0530.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BB%9D%E5%AF%B9%E5%B7%AE.md,63.4%,简单,1173 -0531,0500-0599,0531. 孤独像素 I,孤独像素 I,https://leetcode.cn/problems/lonely-pixel-i/,lonely-pixel-i,数组、哈希表、矩阵,https://algo.itcharge.cn/Solutions/0500-0599/lonely-pixel-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0531.%20%E5%AD%A4%E7%8B%AC%E5%83%8F%E7%B4%A0%20I.md,64.2%,中等,119 -0532,0500-0599,0532. 数组中的 k-diff 数对,数组中的 k-diff 数对,https://leetcode.cn/problems/k-diff-pairs-in-an-array/,k-diff-pairs-in-an-array,数组、哈希表、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/0500-0599/k-diff-pairs-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0532.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%20k-diff%20%E6%95%B0%E5%AF%B9.md,45.6%,中等,706 -0533,0500-0599,0533. 孤独像素 II,孤独像素 II,https://leetcode.cn/problems/lonely-pixel-ii/,lonely-pixel-ii,数组、哈希表、矩阵,https://algo.itcharge.cn/Solutions/0500-0599/lonely-pixel-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0533.%20%E5%AD%A4%E7%8B%AC%E5%83%8F%E7%B4%A0%20II.md,52.8%,中等,47 -0534,0500-0599,0534. 游戏玩法分析 III,游戏玩法分析 III,https://leetcode.cn/problems/game-play-analysis-iii/,game-play-analysis-iii,数据库,https://algo.itcharge.cn/Solutions/0500-0599/game-play-analysis-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0534.%20%E6%B8%B8%E6%88%8F%E7%8E%A9%E6%B3%95%E5%88%86%E6%9E%90%20III.md,68.9%,中等,201 -0535,0500-0599,0535. TinyURL 的加密与解密,TinyURL 的加密与解密,https://leetcode.cn/problems/encode-and-decode-tinyurl/,encode-and-decode-tinyurl,设计、哈希表、字符串、哈希函数,https://algo.itcharge.cn/Solutions/0500-0599/encode-and-decode-tinyurl/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0535.%20TinyURL%20%E7%9A%84%E5%8A%A0%E5%AF%86%E4%B8%8E%E8%A7%A3%E5%AF%86.md,87.5%,中等,278 -0536,0500-0599,0536. 从字符串生成二叉树,从字符串生成二叉树,https://leetcode.cn/problems/construct-binary-tree-from-string/,construct-binary-tree-from-string,树、深度优先搜索、字符串、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/construct-binary-tree-from-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0536.%20%E4%BB%8E%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%94%9F%E6%88%90%E4%BA%8C%E5%8F%89%E6%A0%91.md,55.2%,中等,97 -0537,0500-0599,0537. 复数乘法,复数乘法,https://leetcode.cn/problems/complex-number-multiplication/,complex-number-multiplication,数学、字符串、模拟,https://algo.itcharge.cn/Solutions/0500-0599/complex-number-multiplication/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0537.%20%E5%A4%8D%E6%95%B0%E4%B9%98%E6%B3%95.md,74.6%,中等,666 -0538,0500-0599,0538. 把二叉搜索树转换为累加树,把二叉搜索树转换为累加树,https://leetcode.cn/problems/convert-bst-to-greater-tree/,convert-bst-to-greater-tree,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/convert-bst-to-greater-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0538.%20%E6%8A%8A%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BD%AC%E6%8D%A2%E4%B8%BA%E7%B4%AF%E5%8A%A0%E6%A0%91.md,76.6%,中等,1553 -0539,0500-0599,0539. 最小时间差,最小时间差,https://leetcode.cn/problems/minimum-time-difference/,minimum-time-difference,数组、数学、字符串、排序,https://algo.itcharge.cn/Solutions/0500-0599/minimum-time-difference/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0539.%20%E6%9C%80%E5%B0%8F%E6%97%B6%E9%97%B4%E5%B7%AE.md,65.9%,中等,672 -0540,0500-0599,0540. 有序数组中的单一元素,有序数组中的单一元素,https://leetcode.cn/problems/single-element-in-a-sorted-array/,single-element-in-a-sorted-array,数组、二分查找,https://algo.itcharge.cn/Solutions/0500-0599/single-element-in-a-sorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0540.%20%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%8D%95%E4%B8%80%E5%85%83%E7%B4%A0.md,60.5%,中等,1076 -0541,0500-0599,0541. 反转字符串 II,反转字符串 II,https://leetcode.cn/problems/reverse-string-ii/,reverse-string-ii,双指针、字符串,https://algo.itcharge.cn/Solutions/0500-0599/reverse-string-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0541.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%20II.md,58.0%,简单,1560 -0542,0500-0599,0542. 01 矩阵,01 矩阵,https://leetcode.cn/problems/01-matrix/,01-matrix,广度优先搜索、数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0500-0599/01-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0542.%2001%20%E7%9F%A9%E9%98%B5.md,46.6%,中等,1110 -0543,0500-0599,0543. 二叉树的直径,二叉树的直径,https://leetcode.cn/problems/diameter-of-binary-tree/,diameter-of-binary-tree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/diameter-of-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0543.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md,58.6%,简单,2257 -0544,0500-0599,0544. 输出比赛匹配对,输出比赛匹配对,https://leetcode.cn/problems/output-contest-matches/,output-contest-matches,递归、字符串、模拟,https://algo.itcharge.cn/Solutions/0500-0599/output-contest-matches/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0544.%20%E8%BE%93%E5%87%BA%E6%AF%94%E8%B5%9B%E5%8C%B9%E9%85%8D%E5%AF%B9.md,72.3%,中等,72 -0545,0500-0599,0545. 二叉树的边界,二叉树的边界,https://leetcode.cn/problems/boundary-of-binary-tree/,boundary-of-binary-tree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/boundary-of-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0545.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BE%B9%E7%95%8C.md,44.7%,中等,101 -0546,0500-0599,0546. 移除盒子,移除盒子,https://leetcode.cn/problems/remove-boxes/,remove-boxes,记忆化搜索、数组、动态规划,https://algo.itcharge.cn/Solutions/0500-0599/remove-boxes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0546.%20%E7%A7%BB%E9%99%A4%E7%9B%92%E5%AD%90.md,60.8%,困难,149 -0547,0500-0599,0547. 省份数量,省份数量,https://leetcode.cn/problems/number-of-provinces/,number-of-provinces,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/0500-0599/number-of-provinces/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0547.%20%E7%9C%81%E4%BB%BD%E6%95%B0%E9%87%8F.md,62.2%,中等,1857 -0548,0500-0599,0548. 将数组分割成和相等的子数组,将数组分割成和相等的子数组,https://leetcode.cn/problems/split-array-with-equal-sum/,split-array-with-equal-sum,数组、前缀和,https://algo.itcharge.cn/Solutions/0500-0599/split-array-with-equal-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0548.%20%E5%B0%86%E6%95%B0%E7%BB%84%E5%88%86%E5%89%B2%E6%88%90%E5%92%8C%E7%9B%B8%E7%AD%89%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,39.0%,困难,54 -0549,0500-0599,0549. 二叉树中最长的连续序列,二叉树中最长的连续序列,https://leetcode.cn/problems/binary-tree-longest-consecutive-sequence-ii/,binary-tree-longest-consecutive-sequence-ii,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/binary-tree-longest-consecutive-sequence-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0549.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E6%9C%80%E9%95%BF%E7%9A%84%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md,50.3%,中等,83 -0550,0500-0599,0550. 游戏玩法分析 IV,游戏玩法分析 IV,https://leetcode.cn/problems/game-play-analysis-iv/,game-play-analysis-iv,数据库,https://algo.itcharge.cn/Solutions/0500-0599/game-play-analysis-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0550.%20%E6%B8%B8%E6%88%8F%E7%8E%A9%E6%B3%95%E5%88%86%E6%9E%90%20IV.md,43.8%,中等,337 -0551,0500-0599,0551. 学生出勤记录 I,学生出勤记录 I,https://leetcode.cn/problems/student-attendance-record-i/,student-attendance-record-i,字符串,https://algo.itcharge.cn/Solutions/0500-0599/student-attendance-record-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0551.%20%E5%AD%A6%E7%94%9F%E5%87%BA%E5%8B%A4%E8%AE%B0%E5%BD%95%20I.md,56.7%,简单,991 -0552,0500-0599,0552. 学生出勤记录 II,学生出勤记录 II,https://leetcode.cn/problems/student-attendance-record-ii/,student-attendance-record-ii,动态规划,https://algo.itcharge.cn/Solutions/0500-0599/student-attendance-record-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0552.%20%E5%AD%A6%E7%94%9F%E5%87%BA%E5%8B%A4%E8%AE%B0%E5%BD%95%20II.md,57.8%,困难,345 -0553,0500-0599,0553. 最优除法,最优除法,https://leetcode.cn/problems/optimal-division/,optimal-division,数组、数学、动态规划,https://algo.itcharge.cn/Solutions/0500-0599/optimal-division/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0553.%20%E6%9C%80%E4%BC%98%E9%99%A4%E6%B3%95.md,64.8%,中等,382 -0554,0500-0599,0554. 砖墙,砖墙,https://leetcode.cn/problems/brick-wall/,brick-wall,数组、哈希表,https://algo.itcharge.cn/Solutions/0500-0599/brick-wall/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0554.%20%E7%A0%96%E5%A2%99.md,51.5%,中等,601 -0555,0500-0599,0555. 分割连接字符串,分割连接字符串,https://leetcode.cn/problems/split-concatenated-strings/,split-concatenated-strings,贪心、数组、字符串,https://algo.itcharge.cn/Solutions/0500-0599/split-concatenated-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0555.%20%E5%88%86%E5%89%B2%E8%BF%9E%E6%8E%A5%E5%AD%97%E7%AC%A6%E4%B8%B2.md,37.6%,中等,32 -0556,0500-0599,0556. 下一个更大元素 III,下一个更大元素 III,https://leetcode.cn/problems/next-greater-element-iii/,next-greater-element-iii,数学、双指针、字符串,https://algo.itcharge.cn/Solutions/0500-0599/next-greater-element-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0556.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0%20III.md,36.9%,中等,568 -0557,0500-0599,0557. 反转字符串中的单词 III,反转字符串中的单词 III,https://leetcode.cn/problems/reverse-words-in-a-string-iii/,reverse-words-in-a-string-iii,双指针、字符串,https://algo.itcharge.cn/Solutions/0500-0599/reverse-words-in-a-string-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0557.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D%20III.md,73.8%,简单,2558 -0558,0500-0599,0558. 四叉树交集,四叉树交集,https://leetcode.cn/problems/logical-or-of-two-binary-grids-represented-as-quad-trees/,logical-or-of-two-binary-grids-represented-as-quad-trees,树、分治,https://algo.itcharge.cn/Solutions/0500-0599/logical-or-of-two-binary-grids-represented-as-quad-trees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0558.%20%E5%9B%9B%E5%8F%89%E6%A0%91%E4%BA%A4%E9%9B%86.md,62.8%,中等,164 -0559,0500-0599,0559. N 叉树的最大深度,N 叉树的最大深度,https://leetcode.cn/problems/maximum-depth-of-n-ary-tree/,maximum-depth-of-n-ary-tree,树、深度优先搜索、广度优先搜索,https://algo.itcharge.cn/Solutions/0500-0599/maximum-depth-of-n-ary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0559.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md,75.0%,简单,1071 -0560,0500-0599,0560. 和为 K 的子数组,和为 K 的子数组,https://leetcode.cn/problems/subarray-sum-equals-k/,subarray-sum-equals-k,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/0500-0599/subarray-sum-equals-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0560.%20%E5%92%8C%E4%B8%BA%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,45.0%,中等,1867 -0561,0500-0599,0561. 数组拆分,数组拆分,https://leetcode.cn/problems/array-partition/,array-partition,贪心、数组、计数排序、排序,https://algo.itcharge.cn/Solutions/0500-0599/array-partition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0561.%20%E6%95%B0%E7%BB%84%E6%8B%86%E5%88%86.md,78.5%,简单,1125 -0562,0500-0599,0562. 矩阵中最长的连续1线段,矩阵中最长的连续1线段,https://leetcode.cn/problems/longest-line-of-consecutive-one-in-matrix/,longest-line-of-consecutive-one-in-matrix,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0500-0599/longest-line-of-consecutive-one-in-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0562.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E6%9C%80%E9%95%BF%E7%9A%84%E8%BF%9E%E7%BB%AD1%E7%BA%BF%E6%AE%B5.md,49.7%,中等,102 -0563,0500-0599,0563. 二叉树的坡度,二叉树的坡度,https://leetcode.cn/problems/binary-tree-tilt/,binary-tree-tilt,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0500-0599/binary-tree-tilt/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0563.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%9D%A1%E5%BA%A6.md,65.9%,简单,761 -0564,0500-0599,0564. 寻找最近的回文数,寻找最近的回文数,https://leetcode.cn/problems/find-the-closest-palindrome/,find-the-closest-palindrome,数学、字符串,https://algo.itcharge.cn/Solutions/0500-0599/find-the-closest-palindrome/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0564.%20%E5%AF%BB%E6%89%BE%E6%9C%80%E8%BF%91%E7%9A%84%E5%9B%9E%E6%96%87%E6%95%B0.md,30.4%,困难,261 -0565,0500-0599,0565. 数组嵌套,数组嵌套,https://leetcode.cn/problems/array-nesting/,array-nesting,深度优先搜索、数组,https://algo.itcharge.cn/Solutions/0500-0599/array-nesting/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0565.%20%E6%95%B0%E7%BB%84%E5%B5%8C%E5%A5%97.md,62.4%,中等,457 -0566,0500-0599,0566. 重塑矩阵,重塑矩阵,https://leetcode.cn/problems/reshape-the-matrix/,reshape-the-matrix,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/0500-0599/reshape-the-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0566.%20%E9%87%8D%E5%A1%91%E7%9F%A9%E9%98%B5.md,64.8%,简单,1336 -0567,0500-0599,0567. 字符串的排列,字符串的排列,https://leetcode.cn/problems/permutation-in-string/,permutation-in-string,哈希表、双指针、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/0500-0599/permutation-in-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0567.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%8E%92%E5%88%97.md,44.5%,中等,2322 -0568,0500-0599,0568. 最大休假天数,最大休假天数,https://leetcode.cn/problems/maximum-vacation-days/,maximum-vacation-days,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0500-0599/maximum-vacation-days/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0568.%20%E6%9C%80%E5%A4%A7%E4%BC%91%E5%81%87%E5%A4%A9%E6%95%B0.md,53.8%,困难,42 -0569,0500-0599,0569. 员工薪水中位数,员工薪水中位数,https://leetcode.cn/problems/median-employee-salary/,median-employee-salary,数据库,https://algo.itcharge.cn/Solutions/0500-0599/median-employee-salary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0569.%20%E5%91%98%E5%B7%A5%E8%96%AA%E6%B0%B4%E4%B8%AD%E4%BD%8D%E6%95%B0.md,57.4%,困难,266 -0570,0500-0599,0570. 至少有5名直接下属的经理,至少有5名直接下属的经理,https://leetcode.cn/problems/managers-with-at-least-5-direct-reports/,managers-with-at-least-5-direct-reports,数据库,https://algo.itcharge.cn/Solutions/0500-0599/managers-with-at-least-5-direct-reports/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0570.%20%E8%87%B3%E5%B0%91%E6%9C%895%E5%90%8D%E7%9B%B4%E6%8E%A5%E4%B8%8B%E5%B1%9E%E7%9A%84%E7%BB%8F%E7%90%86.md,64.9%,中等,227 -0571,0500-0599,0571. 给定数字的频率查询中位数,给定数字的频率查询中位数,https://leetcode.cn/problems/find-median-given-frequency-of-numbers/,find-median-given-frequency-of-numbers,数据库,https://algo.itcharge.cn/Solutions/0500-0599/find-median-given-frequency-of-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0571.%20%E7%BB%99%E5%AE%9A%E6%95%B0%E5%AD%97%E7%9A%84%E9%A2%91%E7%8E%87%E6%9F%A5%E8%AF%A2%E4%B8%AD%E4%BD%8D%E6%95%B0.md,47.0%,困难,148 -0572,0500-0599,0572. 另一棵树的子树,另一棵树的子树,https://leetcode.cn/problems/subtree-of-another-tree/,subtree-of-another-tree,树、深度优先搜索、二叉树、字符串匹配、哈希函数,https://algo.itcharge.cn/Solutions/0500-0599/subtree-of-another-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0572.%20%E5%8F%A6%E4%B8%80%E6%A3%B5%E6%A0%91%E7%9A%84%E5%AD%90%E6%A0%91.md,47.5%,简单,1318 -0573,0500-0599,0573. 松鼠模拟,松鼠模拟,https://leetcode.cn/problems/squirrel-simulation/,squirrel-simulation,数组、数学,https://algo.itcharge.cn/Solutions/0500-0599/squirrel-simulation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0573.%20%E6%9D%BE%E9%BC%A0%E6%A8%A1%E6%8B%9F.md,65.3%,中等,49 -0574,0500-0599,0574. 当选者,当选者,https://leetcode.cn/problems/winning-candidate/,winning-candidate,数据库,https://algo.itcharge.cn/Solutions/0500-0599/winning-candidate/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0574.%20%E5%BD%93%E9%80%89%E8%80%85.md,66.4%,中等,162 -0575,0500-0599,0575. 分糖果,分糖果,https://leetcode.cn/problems/distribute-candies/,distribute-candies,数组、哈希表,https://algo.itcharge.cn/Solutions/0500-0599/distribute-candies/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0575.%20%E5%88%86%E7%B3%96%E6%9E%9C.md,70.4%,简单,1070 -0576,0500-0599,0576. 出界的路径数,出界的路径数,https://leetcode.cn/problems/out-of-boundary-paths/,out-of-boundary-paths,动态规划,https://algo.itcharge.cn/Solutions/0500-0599/out-of-boundary-paths/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0576.%20%E5%87%BA%E7%95%8C%E7%9A%84%E8%B7%AF%E5%BE%84%E6%95%B0.md,47.0%,中等,382 -0577,0500-0599,0577. 员工奖金,员工奖金,https://leetcode.cn/problems/employee-bonus/,employee-bonus,数据库,https://algo.itcharge.cn/Solutions/0500-0599/employee-bonus/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0577.%20%E5%91%98%E5%B7%A5%E5%A5%96%E9%87%91.md,69.2%,简单,165 -0578,0500-0599,0578. 查询回答率最高的问题,查询回答率最高的问题,https://leetcode.cn/problems/get-highest-answer-rate-question/,get-highest-answer-rate-question,数据库,https://algo.itcharge.cn/Solutions/0500-0599/get-highest-answer-rate-question/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0578.%20%E6%9F%A5%E8%AF%A2%E5%9B%9E%E7%AD%94%E7%8E%87%E6%9C%80%E9%AB%98%E7%9A%84%E9%97%AE%E9%A2%98.md,42.3%,中等,190 -0579,0500-0599,0579. 查询员工的累计薪水,查询员工的累计薪水,https://leetcode.cn/problems/find-cumulative-salary-of-an-employee/,find-cumulative-salary-of-an-employee,数据库,https://algo.itcharge.cn/Solutions/0500-0599/find-cumulative-salary-of-an-employee/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0579.%20%E6%9F%A5%E8%AF%A2%E5%91%98%E5%B7%A5%E7%9A%84%E7%B4%AF%E8%AE%A1%E8%96%AA%E6%B0%B4.md,44.1%,困难,188 -0580,0500-0599,0580. 统计各专业学生人数,统计各专业学生人数,https://leetcode.cn/problems/count-student-number-in-departments/,count-student-number-in-departments,数据库,https://algo.itcharge.cn/Solutions/0500-0599/count-student-number-in-departments/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0580.%20%E7%BB%9F%E8%AE%A1%E5%90%84%E4%B8%93%E4%B8%9A%E5%AD%A6%E7%94%9F%E4%BA%BA%E6%95%B0.md,53.6%,中等,156 -0581,0500-0599,0581. 最短无序连续子数组,最短无序连续子数组,https://leetcode.cn/problems/shortest-unsorted-continuous-subarray/,shortest-unsorted-continuous-subarray,栈、贪心、数组、双指针、排序、单调栈,https://algo.itcharge.cn/Solutions/0500-0599/shortest-unsorted-continuous-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0581.%20%E6%9C%80%E7%9F%AD%E6%97%A0%E5%BA%8F%E8%BF%9E%E7%BB%AD%E5%AD%90%E6%95%B0%E7%BB%84.md,41.8%,中等,1350 -0582,0500-0599,0582. 杀掉进程,杀掉进程,https://leetcode.cn/problems/kill-process/,kill-process,树、深度优先搜索、广度优先搜索、数组、哈希表,https://algo.itcharge.cn/Solutions/0500-0599/kill-process/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0582.%20%E6%9D%80%E6%8E%89%E8%BF%9B%E7%A8%8B.md,45.9%,中等,188 -0583,0500-0599,0583. 两个字符串的删除操作,两个字符串的删除操作,https://leetcode.cn/problems/delete-operation-for-two-strings/,delete-operation-for-two-strings,字符串、动态规划,https://algo.itcharge.cn/Solutions/0500-0599/delete-operation-for-two-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0583.%20%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%88%A0%E9%99%A4%E6%93%8D%E4%BD%9C.md,66.6%,中等,918 -0584,0500-0599,0584. 寻找用户推荐人,寻找用户推荐人,https://leetcode.cn/problems/find-customer-referee/,find-customer-referee,数据库,https://algo.itcharge.cn/Solutions/0500-0599/find-customer-referee/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0584.%20%E5%AF%BB%E6%89%BE%E7%94%A8%E6%88%B7%E6%8E%A8%E8%8D%90%E4%BA%BA.md,65.4%,简单,436 -0585,0500-0599,0585. 2016年的投资,2016年的投资,https://leetcode.cn/problems/investments-in-2016/,investments-in-2016,数据库,https://algo.itcharge.cn/Solutions/0500-0599/investments-in-2016/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0585.%202016%E5%B9%B4%E7%9A%84%E6%8A%95%E8%B5%84.md,47.7%,中等,190 -0586,0500-0599,0586. 订单最多的客户,订单最多的客户,https://leetcode.cn/problems/customer-placing-the-largest-number-of-orders/,customer-placing-the-largest-number-of-orders,数据库,https://algo.itcharge.cn/Solutions/0500-0599/customer-placing-the-largest-number-of-orders/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0586.%20%E8%AE%A2%E5%8D%95%E6%9C%80%E5%A4%9A%E7%9A%84%E5%AE%A2%E6%88%B7.md,69.5%,简单,357 -0587,0500-0599,0587. 安装栅栏,安装栅栏,https://leetcode.cn/problems/erect-the-fence/,erect-the-fence,几何、数组、数学,https://algo.itcharge.cn/Solutions/0500-0599/erect-the-fence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0587.%20%E5%AE%89%E8%A3%85%E6%A0%85%E6%A0%8F.md,60.9%,困难,139 -0588,0500-0599,0588. 设计内存文件系统,设计内存文件系统,https://leetcode.cn/problems/design-in-memory-file-system/,design-in-memory-file-system,设计、字典树、哈希表、字符串,https://algo.itcharge.cn/Solutions/0500-0599/design-in-memory-file-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0588.%20%E8%AE%BE%E8%AE%A1%E5%86%85%E5%AD%98%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F.md,43.5%,困难,56 -0589,0500-0599,0589. N 叉树的前序遍历,N 叉树的前序遍历,https://leetcode.cn/problems/n-ary-tree-preorder-traversal/,n-ary-tree-preorder-traversal,栈、树、深度优先搜索,https://algo.itcharge.cn/Solutions/0500-0599/n-ary-tree-preorder-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0589.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md,76.5%,简单,1142 -0590,0500-0599,0590. N 叉树的后序遍历,N 叉树的后序遍历,https://leetcode.cn/problems/n-ary-tree-postorder-traversal/,n-ary-tree-postorder-traversal,栈、树、深度优先搜索,https://algo.itcharge.cn/Solutions/0500-0599/n-ary-tree-postorder-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0590.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md,78.7%,简单,918 -0591,0500-0599,0591. 标签验证器,标签验证器,https://leetcode.cn/problems/tag-validator/,tag-validator,栈、字符串,https://algo.itcharge.cn/Solutions/0500-0599/tag-validator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0591.%20%E6%A0%87%E7%AD%BE%E9%AA%8C%E8%AF%81%E5%99%A8.md,52.1%,困难,197 -0592,0500-0599,0592. 分数加减运算,分数加减运算,https://leetcode.cn/problems/fraction-addition-and-subtraction/,fraction-addition-and-subtraction,数学、字符串、模拟,https://algo.itcharge.cn/Solutions/0500-0599/fraction-addition-and-subtraction/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0592.%20%E5%88%86%E6%95%B0%E5%8A%A0%E5%87%8F%E8%BF%90%E7%AE%97.md,59.8%,中等,478 -0593,0500-0599,0593. 有效的正方形,有效的正方形,https://leetcode.cn/problems/valid-square/,valid-square,几何、数学,https://algo.itcharge.cn/Solutions/0500-0599/valid-square/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0593.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%AD%A3%E6%96%B9%E5%BD%A2.md,47.1%,中等,590 -0594,0500-0599,0594. 最长和谐子序列,最长和谐子序列,https://leetcode.cn/problems/longest-harmonious-subsequence/,longest-harmonious-subsequence,数组、哈希表、排序,https://algo.itcharge.cn/Solutions/0500-0599/longest-harmonious-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0594.%20%E6%9C%80%E9%95%BF%E5%92%8C%E8%B0%90%E5%AD%90%E5%BA%8F%E5%88%97.md,56.1%,简单,705 -0595,0500-0599,0595. 大的国家,大的国家,https://leetcode.cn/problems/big-countries/,big-countries,数据库,https://algo.itcharge.cn/Solutions/0500-0599/big-countries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0595.%20%E5%A4%A7%E7%9A%84%E5%9B%BD%E5%AE%B6.md,66.8%,简单,594 -0596,0500-0599,0596. 超过5名学生的课,超过5名学生的课,https://leetcode.cn/problems/classes-more-than-5-students/,classes-more-than-5-students,数据库,https://algo.itcharge.cn/Solutions/0500-0599/classes-more-than-5-students/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0596.%20%E8%B6%85%E8%BF%875%E5%90%8D%E5%AD%A6%E7%94%9F%E7%9A%84%E8%AF%BE.md,50.7%,简单,477 -0597,0500-0599,0597. 好友申请 I:总体通过率,好友申请 I:总体通过率,https://leetcode.cn/problems/friend-requests-i-overall-acceptance-rate/,friend-requests-i-overall-acceptance-rate,数据库,https://algo.itcharge.cn/Solutions/0500-0599/friend-requests-i-overall-acceptance-rate/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0597.%20%E5%A5%BD%E5%8F%8B%E7%94%B3%E8%AF%B7%20I%EF%BC%9A%E6%80%BB%E4%BD%93%E9%80%9A%E8%BF%87%E7%8E%87.md,43.2%,简单,126 -0598,0500-0599,0598. 范围求和 II,范围求和 II,https://leetcode.cn/problems/range-addition-ii/,range-addition-ii,数组、数学,https://algo.itcharge.cn/Solutions/0500-0599/range-addition-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0598.%20%E8%8C%83%E5%9B%B4%E6%B1%82%E5%92%8C%20II.md,57.8%,简单,625 -0599,0500-0599,0599. 两个列表的最小索引总和,两个列表的最小索引总和,https://leetcode.cn/problems/minimum-index-sum-of-two-lists/,minimum-index-sum-of-two-lists,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0500-0599/minimum-index-sum-of-two-lists/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0599.%20%E4%B8%A4%E4%B8%AA%E5%88%97%E8%A1%A8%E7%9A%84%E6%9C%80%E5%B0%8F%E7%B4%A2%E5%BC%95%E6%80%BB%E5%92%8C.md,56.7%,简单,740 -0600,0600-0699,0600. 不含连续1的非负整数,不含连续1的非负整数,https://leetcode.cn/problems/non-negative-integers-without-consecutive-ones/,non-negative-integers-without-consecutive-ones,动态规划,https://algo.itcharge.cn/Solutions/0600-0699/non-negative-integers-without-consecutive-ones/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0600.%20%E4%B8%8D%E5%90%AB%E8%BF%9E%E7%BB%AD1%E7%9A%84%E9%9D%9E%E8%B4%9F%E6%95%B4%E6%95%B0.md,49.5%,困难,314 -0601,0600-0699,0601. 体育馆的人流量,体育馆的人流量,https://leetcode.cn/problems/human-traffic-of-stadium/,human-traffic-of-stadium,数据库,https://algo.itcharge.cn/Solutions/0600-0699/human-traffic-of-stadium/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0601.%20%E4%BD%93%E8%82%B2%E9%A6%86%E7%9A%84%E4%BA%BA%E6%B5%81%E9%87%8F.md,48.0%,困难,573 -0602,0600-0699,0602. 好友申请 II :谁有最多的好友,好友申请 II :谁有最多的好友,https://leetcode.cn/problems/friend-requests-ii-who-has-the-most-friends/,friend-requests-ii-who-has-the-most-friends,数据库,https://algo.itcharge.cn/Solutions/0600-0699/friend-requests-ii-who-has-the-most-friends/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0602.%20%E5%A5%BD%E5%8F%8B%E7%94%B3%E8%AF%B7%20II%20%EF%BC%9A%E8%B0%81%E6%9C%89%E6%9C%80%E5%A4%9A%E7%9A%84%E5%A5%BD%E5%8F%8B.md,61.1%,中等,164 -0603,0600-0699,0603. 连续空余座位,连续空余座位,https://leetcode.cn/problems/consecutive-available-seats/,consecutive-available-seats,数据库,https://algo.itcharge.cn/Solutions/0600-0699/consecutive-available-seats/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0603.%20%E8%BF%9E%E7%BB%AD%E7%A9%BA%E4%BD%99%E5%BA%A7%E4%BD%8D.md,64.0%,简单,237 -0604,0600-0699,0604. 迭代压缩字符串,迭代压缩字符串,https://leetcode.cn/problems/design-compressed-string-iterator/,design-compressed-string-iterator,设计、数组、哈希表、字符串、迭代器,https://algo.itcharge.cn/Solutions/0600-0699/design-compressed-string-iterator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0604.%20%E8%BF%AD%E4%BB%A3%E5%8E%8B%E7%BC%A9%E5%AD%97%E7%AC%A6%E4%B8%B2.md,38.7%,简单,93 -0605,0600-0699,0605. 种花问题,种花问题,https://leetcode.cn/problems/can-place-flowers/,can-place-flowers,贪心、数组,https://algo.itcharge.cn/Solutions/0600-0699/can-place-flowers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0605.%20%E7%A7%8D%E8%8A%B1%E9%97%AE%E9%A2%98.md,32.3%,简单,1868 -0606,0600-0699,0606. 根据二叉树创建字符串,根据二叉树创建字符串,https://leetcode.cn/problems/construct-string-from-binary-tree/,construct-string-from-binary-tree,树、深度优先搜索、字符串、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/construct-string-from-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0606.%20%E6%A0%B9%E6%8D%AE%E4%BA%8C%E5%8F%89%E6%A0%91%E5%88%9B%E5%BB%BA%E5%AD%97%E7%AC%A6%E4%B8%B2.md,62.2%,简单,728 -0607,0600-0699,0607. 销售员,销售员,https://leetcode.cn/problems/sales-person/,sales-person,数据库,https://algo.itcharge.cn/Solutions/0600-0699/sales-person/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0607.%20%E9%94%80%E5%94%AE%E5%91%98.md,68.2%,简单,396 -0608,0600-0699,0608. 树节点,树节点,https://leetcode.cn/problems/tree-node/,tree-node,数据库,https://algo.itcharge.cn/Solutions/0600-0699/tree-node/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0608.%20%E6%A0%91%E8%8A%82%E7%82%B9.md,61.0%,中等,401 -0609,0600-0699,0609. 在系统中查找重复文件,在系统中查找重复文件,https://leetcode.cn/problems/find-duplicate-file-in-system/,find-duplicate-file-in-system,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0600-0699/find-duplicate-file-in-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0609.%20%E5%9C%A8%E7%B3%BB%E7%BB%9F%E4%B8%AD%E6%9F%A5%E6%89%BE%E9%87%8D%E5%A4%8D%E6%96%87%E4%BB%B6.md,52.4%,中等,159 -0610,0600-0699,0610. 判断三角形,判断三角形,https://leetcode.cn/problems/triangle-judgement/,triangle-judgement,数据库,https://algo.itcharge.cn/Solutions/0600-0699/triangle-judgement/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0610.%20%E5%88%A4%E6%96%AD%E4%B8%89%E8%A7%92%E5%BD%A2.md,64.4%,简单,126 -0611,0600-0699,0611. 有效三角形的个数,有效三角形的个数,https://leetcode.cn/problems/valid-triangle-number/,valid-triangle-number,贪心、数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/0600-0699/valid-triangle-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0611.%20%E6%9C%89%E6%95%88%E4%B8%89%E8%A7%92%E5%BD%A2%E7%9A%84%E4%B8%AA%E6%95%B0.md,53.7%,中等,642 -0612,0600-0699,0612. 平面上的最近距离,平面上的最近距离,https://leetcode.cn/problems/shortest-distance-in-a-plane/,shortest-distance-in-a-plane,数据库,https://algo.itcharge.cn/Solutions/0600-0699/shortest-distance-in-a-plane/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0612.%20%E5%B9%B3%E9%9D%A2%E4%B8%8A%E7%9A%84%E6%9C%80%E8%BF%91%E8%B7%9D%E7%A6%BB.md,65.0%,中等,103 -0613,0600-0699,0613. 直线上的最近距离,直线上的最近距离,https://leetcode.cn/problems/shortest-distance-in-a-line/,shortest-distance-in-a-line,数据库,https://algo.itcharge.cn/Solutions/0600-0699/shortest-distance-in-a-line/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0613.%20%E7%9B%B4%E7%BA%BF%E4%B8%8A%E7%9A%84%E6%9C%80%E8%BF%91%E8%B7%9D%E7%A6%BB.md,79.6%,简单,121 -0614,0600-0699,0614. 二级关注者,二级关注者,https://leetcode.cn/problems/second-degree-follower/,second-degree-follower,数据库,https://algo.itcharge.cn/Solutions/0600-0699/second-degree-follower/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0614.%20%E4%BA%8C%E7%BA%A7%E5%85%B3%E6%B3%A8%E8%80%85.md,37.3%,中等,107 -0615,0600-0699,0615. 平均工资:部门与公司比较,平均工资:部门与公司比较,https://leetcode.cn/problems/average-salary-departments-vs-company/,average-salary-departments-vs-company,数据库,https://algo.itcharge.cn/Solutions/0600-0699/average-salary-departments-vs-company/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0615.%20%E5%B9%B3%E5%9D%87%E5%B7%A5%E8%B5%84%EF%BC%9A%E9%83%A8%E9%97%A8%E4%B8%8E%E5%85%AC%E5%8F%B8%E6%AF%94%E8%BE%83.md,42.3%,困难,150 -0616,0600-0699,0616. 给字符串添加加粗标签,给字符串添加加粗标签,https://leetcode.cn/problems/add-bold-tag-in-string/,add-bold-tag-in-string,字典树、数组、哈希表、字符串、字符串匹配,https://algo.itcharge.cn/Solutions/0600-0699/add-bold-tag-in-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0616.%20%E7%BB%99%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%B7%BB%E5%8A%A0%E5%8A%A0%E7%B2%97%E6%A0%87%E7%AD%BE.md,49.2%,中等,95 -0617,0600-0699,0617. 合并二叉树,合并二叉树,https://leetcode.cn/problems/merge-two-binary-trees/,merge-two-binary-trees,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/merge-two-binary-trees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0617.%20%E5%90%88%E5%B9%B6%E4%BA%8C%E5%8F%89%E6%A0%91.md,79.1%,简单,2362 -0618,0600-0699,0618. 学生地理信息报告,学生地理信息报告,https://leetcode.cn/problems/students-report-by-geography/,students-report-by-geography,数据库,https://algo.itcharge.cn/Solutions/0600-0699/students-report-by-geography/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0618.%20%E5%AD%A6%E7%94%9F%E5%9C%B0%E7%90%86%E4%BF%A1%E6%81%AF%E6%8A%A5%E5%91%8A.md,62.2%,困难,88 -0619,0600-0699,0619. 只出现一次的最大数字,只出现一次的最大数字,https://leetcode.cn/problems/biggest-single-number/,biggest-single-number,数据库,https://algo.itcharge.cn/Solutions/0600-0699/biggest-single-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0619.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E5%AD%97.md,48.3%,简单,184 -0620,0600-0699,0620. 有趣的电影,有趣的电影,https://leetcode.cn/problems/not-boring-movies/,not-boring-movies,数据库,https://algo.itcharge.cn/Solutions/0600-0699/not-boring-movies/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0620.%20%E6%9C%89%E8%B6%A3%E7%9A%84%E7%94%B5%E5%BD%B1.md,77.1%,简单,458 -0621,0600-0699,0621. 任务调度器,任务调度器,https://leetcode.cn/problems/task-scheduler/,task-scheduler,贪心、数组、哈希表、计数、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0600-0699/task-scheduler/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0621.%20%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6%E5%99%A8.md,59.7%,中等,844 -0622,0600-0699,0622. 设计循环队列,设计循环队列,https://leetcode.cn/problems/design-circular-queue/,design-circular-queue,设计、队列、数组、链表,https://algo.itcharge.cn/Solutions/0600-0699/design-circular-queue/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0622.%20%E8%AE%BE%E8%AE%A1%E5%BE%AA%E7%8E%AF%E9%98%9F%E5%88%97.md,47.1%,中等,1002 -0623,0600-0699,0623. 在二叉树中增加一行,在二叉树中增加一行,https://leetcode.cn/problems/add-one-row-to-tree/,add-one-row-to-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/add-one-row-to-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0623.%20%E5%9C%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E5%A2%9E%E5%8A%A0%E4%B8%80%E8%A1%8C.md,60.1%,中等,655 -0624,0600-0699,0624. 数组列表中的最大距离,数组列表中的最大距离,https://leetcode.cn/problems/maximum-distance-in-arrays/,maximum-distance-in-arrays,贪心、数组,https://algo.itcharge.cn/Solutions/0600-0699/maximum-distance-in-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0624.%20%E6%95%B0%E7%BB%84%E5%88%97%E8%A1%A8%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md,40.8%,中等,96 -0625,0600-0699,0625. 最小因式分解,最小因式分解,https://leetcode.cn/problems/minimum-factorization/,minimum-factorization,贪心、数学,https://algo.itcharge.cn/Solutions/0600-0699/minimum-factorization/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0625.%20%E6%9C%80%E5%B0%8F%E5%9B%A0%E5%BC%8F%E5%88%86%E8%A7%A3.md,34.6%,中等,70 -0626,0600-0699,0626. 换座位,换座位,https://leetcode.cn/problems/exchange-seats/,exchange-seats,数据库,https://algo.itcharge.cn/Solutions/0600-0699/exchange-seats/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0626.%20%E6%8D%A2%E5%BA%A7%E4%BD%8D.md,67.9%,中等,601 -0627,0600-0699,0627. 变更性别,变更性别,https://leetcode.cn/problems/swap-salary/,swap-salary,数据库,https://algo.itcharge.cn/Solutions/0600-0699/swap-salary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0627.%20%E5%8F%98%E6%9B%B4%E6%80%A7%E5%88%AB.md,82.1%,简单,653 -0628,0600-0699,0628. 三个数的最大乘积,三个数的最大乘积,https://leetcode.cn/problems/maximum-product-of-three-numbers/,maximum-product-of-three-numbers,数组、数学、排序,https://algo.itcharge.cn/Solutions/0600-0699/maximum-product-of-three-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0628.%20%E4%B8%89%E4%B8%AA%E6%95%B0%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B9%98%E7%A7%AF.md,52.0%,简单,1090 -0629,0600-0699,0629. K 个逆序对数组,K 个逆序对数组,https://leetcode.cn/problems/k-inverse-pairs-array/,k-inverse-pairs-array,动态规划,https://algo.itcharge.cn/Solutions/0600-0699/k-inverse-pairs-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0629.%20K%20%E4%B8%AA%E9%80%86%E5%BA%8F%E5%AF%B9%E6%95%B0%E7%BB%84.md,51.1%,困难,212 -0630,0600-0699,0630. 课程表 III,课程表 III,https://leetcode.cn/problems/course-schedule-iii/,course-schedule-iii,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/0600-0699/course-schedule-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0630.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8%20III.md,46.2%,困难,267 -0631,0600-0699,0631. 设计 Excel 求和公式,设计 Excel 求和公式,https://leetcode.cn/problems/design-excel-sum-formula/,design-excel-sum-formula,图、设计、拓扑排序,https://algo.itcharge.cn/Solutions/0600-0699/design-excel-sum-formula/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0631.%20%E8%AE%BE%E8%AE%A1%20Excel%20%E6%B1%82%E5%92%8C%E5%85%AC%E5%BC%8F.md,33.4%,困难,48 -0632,0600-0699,0632. 最小区间,最小区间,https://leetcode.cn/problems/smallest-range-covering-elements-from-k-lists/,smallest-range-covering-elements-from-k-lists,贪心、数组、哈希表、排序、滑动窗口、堆(优先队列),https://algo.itcharge.cn/Solutions/0600-0699/smallest-range-covering-elements-from-k-lists/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0632.%20%E6%9C%80%E5%B0%8F%E5%8C%BA%E9%97%B4.md,60.7%,困难,313 -0633,0600-0699,0633. 平方数之和,平方数之和,https://leetcode.cn/problems/sum-of-square-numbers/,sum-of-square-numbers,数学、双指针、二分查找,https://algo.itcharge.cn/Solutions/0600-0699/sum-of-square-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0633.%20%E5%B9%B3%E6%96%B9%E6%95%B0%E4%B9%8B%E5%92%8C.md,38.3%,中等,1032 -0634,0600-0699,0634. 寻找数组的错位排列,寻找数组的错位排列,https://leetcode.cn/problems/find-the-derangement-of-an-array/,find-the-derangement-of-an-array,数学、动态规划,https://algo.itcharge.cn/Solutions/0600-0699/find-the-derangement-of-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0634.%20%E5%AF%BB%E6%89%BE%E6%95%B0%E7%BB%84%E7%9A%84%E9%94%99%E4%BD%8D%E6%8E%92%E5%88%97.md,47.4%,中等,35 -0635,0600-0699,0635. 设计日志存储系统,设计日志存储系统,https://leetcode.cn/problems/design-log-storage-system/,design-log-storage-system,设计、哈希表、字符串、有序集合,https://algo.itcharge.cn/Solutions/0600-0699/design-log-storage-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0635.%20%E8%AE%BE%E8%AE%A1%E6%97%A5%E5%BF%97%E5%AD%98%E5%82%A8%E7%B3%BB%E7%BB%9F.md,56.3%,中等,108 -0636,0600-0699,0636. 函数的独占时间,函数的独占时间,https://leetcode.cn/problems/exclusive-time-of-functions/,exclusive-time-of-functions,栈、数组,https://algo.itcharge.cn/Solutions/0600-0699/exclusive-time-of-functions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0636.%20%E5%87%BD%E6%95%B0%E7%9A%84%E7%8B%AC%E5%8D%A0%E6%97%B6%E9%97%B4.md,66.0%,中等,348 -0637,0600-0699,0637. 二叉树的层平均值,二叉树的层平均值,https://leetcode.cn/problems/average-of-levels-in-binary-tree/,average-of-levels-in-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/average-of-levels-in-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0637.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%B9%B3%E5%9D%87%E5%80%BC.md,69.8%,简单,1059 -0638,0600-0699,0638. 大礼包,大礼包,https://leetcode.cn/problems/shopping-offers/,shopping-offers,位运算、记忆化搜索、数组、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/0600-0699/shopping-offers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0638.%20%E5%A4%A7%E7%A4%BC%E5%8C%85.md,62.9%,中等,338 -0639,0600-0699,0639. 解码方法 II,解码方法 II,https://leetcode.cn/problems/decode-ways-ii/,decode-ways-ii,字符串、动态规划,https://algo.itcharge.cn/Solutions/0600-0699/decode-ways-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0639.%20%E8%A7%A3%E7%A0%81%E6%96%B9%E6%B3%95%20II.md,37.4%,困难,322 -0640,0600-0699,0640. 求解方程,求解方程,https://leetcode.cn/problems/solve-the-equation/,solve-the-equation,数学、字符串、模拟,https://algo.itcharge.cn/Solutions/0600-0699/solve-the-equation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0640.%20%E6%B1%82%E8%A7%A3%E6%96%B9%E7%A8%8B.md,44.6%,中等,711 -0641,0600-0699,0641. 设计循环双端队列,设计循环双端队列,https://leetcode.cn/problems/design-circular-deque/,design-circular-deque,设计、队列、数组、链表,https://algo.itcharge.cn/Solutions/0600-0699/design-circular-deque/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0641.%20%E8%AE%BE%E8%AE%A1%E5%BE%AA%E7%8E%AF%E5%8F%8C%E7%AB%AF%E9%98%9F%E5%88%97.md,57.1%,中等,647 -0642,0600-0699,0642. 设计搜索自动补全系统,设计搜索自动补全系统,https://leetcode.cn/problems/design-search-autocomplete-system/,design-search-autocomplete-system,设计、字典树、字符串、数据流,https://algo.itcharge.cn/Solutions/0600-0699/design-search-autocomplete-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0642.%20%E8%AE%BE%E8%AE%A1%E6%90%9C%E7%B4%A2%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8%E7%B3%BB%E7%BB%9F.md,56.1%,困难,91 -0643,0600-0699,0643. 子数组最大平均数 I,子数组最大平均数 I,https://leetcode.cn/problems/maximum-average-subarray-i/,maximum-average-subarray-i,数组、滑动窗口,https://algo.itcharge.cn/Solutions/0600-0699/maximum-average-subarray-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0643.%20%E5%AD%90%E6%95%B0%E7%BB%84%E6%9C%80%E5%A4%A7%E5%B9%B3%E5%9D%87%E6%95%B0%20I.md,43.4%,简单,912 -0644,0600-0699,0644. 子数组最大平均数 II,子数组最大平均数 II,https://leetcode.cn/problems/maximum-average-subarray-ii/,maximum-average-subarray-ii,数组、二分查找、前缀和,https://algo.itcharge.cn/Solutions/0600-0699/maximum-average-subarray-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0644.%20%E5%AD%90%E6%95%B0%E7%BB%84%E6%9C%80%E5%A4%A7%E5%B9%B3%E5%9D%87%E6%95%B0%20II.md,44.4%,困难,41 -0645,0600-0699,0645. 错误的集合,错误的集合,https://leetcode.cn/problems/set-mismatch/,set-mismatch,位运算、数组、哈希表、排序,https://algo.itcharge.cn/Solutions/0600-0699/set-mismatch/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0645.%20%E9%94%99%E8%AF%AF%E7%9A%84%E9%9B%86%E5%90%88.md,39.7%,简单,1049 -0646,0600-0699,0646. 最长数对链,最长数对链,https://leetcode.cn/problems/maximum-length-of-pair-chain/,maximum-length-of-pair-chain,贪心、数组、动态规划、排序,https://algo.itcharge.cn/Solutions/0600-0699/maximum-length-of-pair-chain/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0646.%20%E6%9C%80%E9%95%BF%E6%95%B0%E5%AF%B9%E9%93%BE.md,62.3%,中等,649 -0647,0600-0699,0647. 回文子串,回文子串,https://leetcode.cn/problems/palindromic-substrings/,palindromic-substrings,字符串、动态规划,https://algo.itcharge.cn/Solutions/0600-0699/palindromic-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0647.%20%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.md,66.9%,中等,1716 -0648,0600-0699,0648. 单词替换,单词替换,https://leetcode.cn/problems/replace-words/,replace-words,字典树、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0600-0699/replace-words/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0648.%20%E5%8D%95%E8%AF%8D%E6%9B%BF%E6%8D%A2.md,64.0%,中等,823 -0649,0600-0699,0649. Dota2 参议院,Dota2 参议院,https://leetcode.cn/problems/dota2-senate/,dota2-senate,贪心、队列、字符串,https://algo.itcharge.cn/Solutions/0600-0699/dota2-senate/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0649.%20Dota2%20%E5%8F%82%E8%AE%AE%E9%99%A2.md,48.2%,中等,417 -0650,0600-0699,0650. 只有两个键的键盘,只有两个键的键盘,https://leetcode.cn/problems/2-keys-keyboard/,2-keys-keyboard,数学、动态规划,https://algo.itcharge.cn/Solutions/0600-0699/2-keys-keyboard/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0650.%20%E5%8F%AA%E6%9C%89%E4%B8%A4%E4%B8%AA%E9%94%AE%E7%9A%84%E9%94%AE%E7%9B%98.md,57.7%,中等,788 -0651,0600-0699,0651. 4键键盘,4键键盘,https://leetcode.cn/problems/4-keys-keyboard/,4-keys-keyboard,数学、动态规划,https://algo.itcharge.cn/Solutions/0600-0699/4-keys-keyboard/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0651.%204%E9%94%AE%E9%94%AE%E7%9B%98.md,59.7%,中等,98 -0652,0600-0699,0652. 寻找重复的子树,寻找重复的子树,https://leetcode.cn/problems/find-duplicate-subtrees/,find-duplicate-subtrees,树、深度优先搜索、哈希表、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/find-duplicate-subtrees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0652.%20%E5%AF%BB%E6%89%BE%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E6%A0%91.md,61.3%,中等,645 -0653,0600-0699,0653. 两数之和 IV - 输入二叉搜索树,两数之和 IV - 输入二叉搜索树,https://leetcode.cn/problems/two-sum-iv-input-is-a-bst/,two-sum-iv-input-is-a-bst,树、深度优先搜索、广度优先搜索、二叉搜索树、哈希表、双指针、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/two-sum-iv-input-is-a-bst/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0653.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C%20IV%20-%20%E8%BE%93%E5%85%A5%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,63.5%,简单,985 -0654,0600-0699,0654. 最大二叉树,最大二叉树,https://leetcode.cn/problems/maximum-binary-tree/,maximum-binary-tree,栈、树、数组、分治、二叉树、单调栈,https://algo.itcharge.cn/Solutions/0600-0699/maximum-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0654.%20%E6%9C%80%E5%A4%A7%E4%BA%8C%E5%8F%89%E6%A0%91.md,82.6%,中等,1602 -0655,0600-0699,0655. 输出二叉树,输出二叉树,https://leetcode.cn/problems/print-binary-tree/,print-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/print-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0655.%20%E8%BE%93%E5%87%BA%E4%BA%8C%E5%8F%89%E6%A0%91.md,69.7%,中等,510 -0656,0600-0699,0656. 金币路径,金币路径,https://leetcode.cn/problems/coin-path/,coin-path,数组、动态规划,https://algo.itcharge.cn/Solutions/0600-0699/coin-path/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0656.%20%E9%87%91%E5%B8%81%E8%B7%AF%E5%BE%84.md,34.3%,困难,35 -0657,0600-0699,0657. 机器人能否返回原点,机器人能否返回原点,https://leetcode.cn/problems/robot-return-to-origin/,robot-return-to-origin,字符串、模拟,https://algo.itcharge.cn/Solutions/0600-0699/robot-return-to-origin/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0657.%20%E6%9C%BA%E5%99%A8%E4%BA%BA%E8%83%BD%E5%90%A6%E8%BF%94%E5%9B%9E%E5%8E%9F%E7%82%B9.md,79.0%,简单,835 -0658,0600-0699,0658. 找到 K 个最接近的元素,找到 K 个最接近的元素,https://leetcode.cn/problems/find-k-closest-elements/,find-k-closest-elements,数组、双指针、二分查找、排序、滑动窗口、堆(优先队列),https://algo.itcharge.cn/Solutions/0600-0699/find-k-closest-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0658.%20%E6%89%BE%E5%88%B0%20K%20%E4%B8%AA%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E5%85%83%E7%B4%A0.md,47.9%,中等,827 -0659,0600-0699,0659. 分割数组为连续子序列,分割数组为连续子序列,https://leetcode.cn/problems/split-array-into-consecutive-subsequences/,split-array-into-consecutive-subsequences,贪心、数组、哈希表、堆(优先队列),https://algo.itcharge.cn/Solutions/0600-0699/split-array-into-consecutive-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0659.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84%E4%B8%BA%E8%BF%9E%E7%BB%AD%E5%AD%90%E5%BA%8F%E5%88%97.md,54.7%,中等,389 -0660,0600-0699,0660. 移除 9,移除 9,https://leetcode.cn/problems/remove-9/,remove-9,数学,https://algo.itcharge.cn/Solutions/0600-0699/remove-9/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0660.%20%E7%A7%BB%E9%99%A4%209.md,65.0%,困难,40 -0661,0600-0699,0661. 图片平滑器,图片平滑器,https://leetcode.cn/problems/image-smoother/,image-smoother,数组、矩阵,https://algo.itcharge.cn/Solutions/0600-0699/image-smoother/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0661.%20%E5%9B%BE%E7%89%87%E5%B9%B3%E6%BB%91%E5%99%A8.md,64.2%,简单,571 -0662,0600-0699,0662. 二叉树最大宽度,二叉树最大宽度,https://leetcode.cn/problems/maximum-width-of-binary-tree/,maximum-width-of-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/maximum-width-of-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0662.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%A4%A7%E5%AE%BD%E5%BA%A6.md,43.6%,中等,830 -0663,0600-0699,0663. 均匀树划分,均匀树划分,https://leetcode.cn/problems/equal-tree-partition/,equal-tree-partition,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/equal-tree-partition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0663.%20%E5%9D%87%E5%8C%80%E6%A0%91%E5%88%92%E5%88%86.md,46.0%,中等,59 -0664,0600-0699,0664. 奇怪的打印机,奇怪的打印机,https://leetcode.cn/problems/strange-printer/,strange-printer,字符串、动态规划,https://algo.itcharge.cn/Solutions/0600-0699/strange-printer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0664.%20%E5%A5%87%E6%80%AA%E7%9A%84%E6%89%93%E5%8D%B0%E6%9C%BA.md,65.3%,困难,236 -0665,0600-0699,0665. 非递减数列,非递减数列,https://leetcode.cn/problems/non-decreasing-array/,non-decreasing-array,数组,https://algo.itcharge.cn/Solutions/0600-0699/non-decreasing-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0665.%20%E9%9D%9E%E9%80%92%E5%87%8F%E6%95%B0%E5%88%97.md,27.7%,中等,1195 -0666,0600-0699,0666. 路径总和 IV,路径总和 IV,https://leetcode.cn/problems/path-sum-iv/,path-sum-iv,树、深度优先搜索、数组、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/path-sum-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0666.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C%20IV.md,62.7%,中等,110 -0667,0600-0699,0667. 优美的排列 II,优美的排列 II,https://leetcode.cn/problems/beautiful-arrangement-ii/,beautiful-arrangement-ii,数组、数学,https://algo.itcharge.cn/Solutions/0600-0699/beautiful-arrangement-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0667.%20%E4%BC%98%E7%BE%8E%E7%9A%84%E6%8E%92%E5%88%97%20II.md,66.7%,中等,519 -0668,0600-0699,0668. 乘法表中第k小的数,乘法表中第k小的数,https://leetcode.cn/problems/kth-smallest-number-in-multiplication-table/,kth-smallest-number-in-multiplication-table,数学、二分查找,https://algo.itcharge.cn/Solutions/0600-0699/kth-smallest-number-in-multiplication-table/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0668.%20%E4%B9%98%E6%B3%95%E8%A1%A8%E4%B8%AD%E7%AC%ACk%E5%B0%8F%E7%9A%84%E6%95%B0.md,58.6%,困难,278 -0669,0600-0699,0669. 修剪二叉搜索树,修剪二叉搜索树,https://leetcode.cn/problems/trim-a-binary-search-tree/,trim-a-binary-search-tree,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/trim-a-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0669.%20%E4%BF%AE%E5%89%AA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,67.5%,中等,933 -0670,0600-0699,0670. 最大交换,最大交换,https://leetcode.cn/problems/maximum-swap/,maximum-swap,贪心、数学,https://algo.itcharge.cn/Solutions/0600-0699/maximum-swap/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0670.%20%E6%9C%80%E5%A4%A7%E4%BA%A4%E6%8D%A2.md,47.9%,中等,936 -0671,0600-0699,0671. 二叉树中第二小的节点,二叉树中第二小的节点,https://leetcode.cn/problems/second-minimum-node-in-a-binary-tree/,second-minimum-node-in-a-binary-tree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/second-minimum-node-in-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0671.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%AC%AC%E4%BA%8C%E5%B0%8F%E7%9A%84%E8%8A%82%E7%82%B9.md,48.0%,简单,862 -0672,0600-0699,0672. 灯泡开关 Ⅱ,灯泡开关 Ⅱ,https://leetcode.cn/problems/bulb-switcher-ii/,bulb-switcher-ii,位运算、深度优先搜索、广度优先搜索、数学,https://algo.itcharge.cn/Solutions/0600-0699/bulb-switcher-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0672.%20%E7%81%AF%E6%B3%A1%E5%BC%80%E5%85%B3%20%E2%85%A1.md,60.8%,中等,263 -0673,0600-0699,0673. 最长递增子序列的个数,最长递增子序列的个数,https://leetcode.cn/problems/number-of-longest-increasing-subsequence/,number-of-longest-increasing-subsequence,树状数组、线段树、数组、动态规划,https://algo.itcharge.cn/Solutions/0600-0699/number-of-longest-increasing-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0673.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md,44.6%,中等,653 -0674,0600-0699,0674. 最长连续递增序列,最长连续递增序列,https://leetcode.cn/problems/longest-continuous-increasing-subsequence/,longest-continuous-increasing-subsequence,数组,https://algo.itcharge.cn/Solutions/0600-0699/longest-continuous-increasing-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0674.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E9%80%92%E5%A2%9E%E5%BA%8F%E5%88%97.md,55.6%,简单,1298 -0675,0600-0699,0675. 为高尔夫比赛砍树,为高尔夫比赛砍树,https://leetcode.cn/problems/cut-off-trees-for-golf-event/,cut-off-trees-for-golf-event,广度优先搜索、数组、矩阵、堆(优先队列),https://algo.itcharge.cn/Solutions/0600-0699/cut-off-trees-for-golf-event/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0675.%20%E4%B8%BA%E9%AB%98%E5%B0%94%E5%A4%AB%E6%AF%94%E8%B5%9B%E7%A0%8D%E6%A0%91.md,52.5%,困难,219 -0676,0600-0699,0676. 实现一个魔法字典,实现一个魔法字典,https://leetcode.cn/problems/implement-magic-dictionary/,implement-magic-dictionary,设计、字典树、哈希表、字符串,https://algo.itcharge.cn/Solutions/0600-0699/implement-magic-dictionary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0676.%20%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E9%AD%94%E6%B3%95%E5%AD%97%E5%85%B8.md,65.3%,中等,471 -0677,0600-0699,0677. 键值映射,键值映射,https://leetcode.cn/problems/map-sum-pairs/,map-sum-pairs,设计、字典树、哈希表、字符串,https://algo.itcharge.cn/Solutions/0600-0699/map-sum-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0677.%20%E9%94%AE%E5%80%BC%E6%98%A0%E5%B0%84.md,65.7%,中等,705 -0678,0600-0699,0678. 有效的括号字符串,有效的括号字符串,https://leetcode.cn/problems/valid-parenthesis-string/,valid-parenthesis-string,栈、贪心、字符串、动态规划,https://algo.itcharge.cn/Solutions/0600-0699/valid-parenthesis-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0678.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7%E5%AD%97%E7%AC%A6%E4%B8%B2.md,39.3%,中等,671 -0679,0600-0699,0679. 24 点游戏,24 点游戏,https://leetcode.cn/problems/24-game/,24-game,数组、数学、回溯,https://algo.itcharge.cn/Solutions/0600-0699/24-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0679.%2024%20%E7%82%B9%E6%B8%B8%E6%88%8F.md,53.8%,困难,362 -0680,0600-0699,0680. 验证回文串 II,验证回文串 II,https://leetcode.cn/problems/valid-palindrome-ii/,valid-palindrome-ii,贪心、双指针、字符串,https://algo.itcharge.cn/Solutions/0600-0699/valid-palindrome-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0680.%20%E9%AA%8C%E8%AF%81%E5%9B%9E%E6%96%87%E4%B8%B2%20II.md,40.0%,简单,1190 -0681,0600-0699,0681. 最近时刻,最近时刻,https://leetcode.cn/problems/next-closest-time/,next-closest-time,字符串、枚举,https://algo.itcharge.cn/Solutions/0600-0699/next-closest-time/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0681.%20%E6%9C%80%E8%BF%91%E6%97%B6%E5%88%BB.md,49.9%,中等,92 -0682,0600-0699,0682. 棒球比赛,棒球比赛,https://leetcode.cn/problems/baseball-game/,baseball-game,栈、数组、模拟,https://algo.itcharge.cn/Solutions/0600-0699/baseball-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0682.%20%E6%A3%92%E7%90%83%E6%AF%94%E8%B5%9B.md,71.3%,简单,991 -0683,0600-0699,0683. K 个关闭的灯泡,K 个关闭的灯泡,https://leetcode.cn/problems/k-empty-slots/,k-empty-slots,树状数组、数组、有序集合、滑动窗口,https://algo.itcharge.cn/Solutions/0600-0699/k-empty-slots/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0683.%20K%20%E4%B8%AA%E5%85%B3%E9%97%AD%E7%9A%84%E7%81%AF%E6%B3%A1.md,45.9%,困难,78 -0684,0600-0699,0684. 冗余连接,冗余连接,https://leetcode.cn/problems/redundant-connection/,redundant-connection,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/0600-0699/redundant-connection/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0684.%20%E5%86%97%E4%BD%99%E8%BF%9E%E6%8E%A5.md,67.4%,中等,939 -0685,0600-0699,0685. 冗余连接 II,冗余连接 II,https://leetcode.cn/problems/redundant-connection-ii/,redundant-connection-ii,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/0600-0699/redundant-connection-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0685.%20%E5%86%97%E4%BD%99%E8%BF%9E%E6%8E%A5%20II.md,42.2%,困难,356 -0686,0600-0699,0686. 重复叠加字符串匹配,重复叠加字符串匹配,https://leetcode.cn/problems/repeated-string-match/,repeated-string-match,字符串、字符串匹配,https://algo.itcharge.cn/Solutions/0600-0699/repeated-string-match/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0686.%20%E9%87%8D%E5%A4%8D%E5%8F%A0%E5%8A%A0%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D.md,39.8%,中等,642 -0687,0600-0699,0687. 最长同值路径,最长同值路径,https://leetcode.cn/problems/longest-univalue-path/,longest-univalue-path,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0600-0699/longest-univalue-path/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0687.%20%E6%9C%80%E9%95%BF%E5%90%8C%E5%80%BC%E8%B7%AF%E5%BE%84.md,47.7%,中等,671 -0688,0600-0699,0688. 骑士在棋盘上的概率,骑士在棋盘上的概率,https://leetcode.cn/problems/knight-probability-in-chessboard/,knight-probability-in-chessboard,动态规划,https://algo.itcharge.cn/Solutions/0600-0699/knight-probability-in-chessboard/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0688.%20%E9%AA%91%E5%A3%AB%E5%9C%A8%E6%A3%8B%E7%9B%98%E4%B8%8A%E7%9A%84%E6%A6%82%E7%8E%87.md,58.1%,中等,391 -0689,0600-0699,0689. 三个无重叠子数组的最大和,三个无重叠子数组的最大和,https://leetcode.cn/problems/maximum-sum-of-3-non-overlapping-subarrays/,maximum-sum-of-3-non-overlapping-subarrays,数组、动态规划,https://algo.itcharge.cn/Solutions/0600-0699/maximum-sum-of-3-non-overlapping-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0689.%20%E4%B8%89%E4%B8%AA%E6%97%A0%E9%87%8D%E5%8F%A0%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md,56.2%,困难,293 -0690,0600-0699,0690. 员工的重要性,员工的重要性,https://leetcode.cn/problems/employee-importance/,employee-importance,深度优先搜索、广度优先搜索、哈希表,https://algo.itcharge.cn/Solutions/0600-0699/employee-importance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0690.%20%E5%91%98%E5%B7%A5%E7%9A%84%E9%87%8D%E8%A6%81%E6%80%A7.md,65.7%,中等,668 -0691,0600-0699,0691. 贴纸拼词,贴纸拼词,https://leetcode.cn/problems/stickers-to-spell-word/,stickers-to-spell-word,位运算、数组、字符串、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/0600-0699/stickers-to-spell-word/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0691.%20%E8%B4%B4%E7%BA%B8%E6%8B%BC%E8%AF%8D.md,58.9%,困难,207 -0692,0600-0699,0692. 前K个高频单词,前K个高频单词,https://leetcode.cn/problems/top-k-frequent-words/,top-k-frequent-words,字典树、哈希表、字符串、桶排序、计数、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0600-0699/top-k-frequent-words/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0692.%20%E5%89%8DK%E4%B8%AA%E9%AB%98%E9%A2%91%E5%8D%95%E8%AF%8D.md,56.2%,中等,1066 -0693,0600-0699,0693. 交替位二进制数,交替位二进制数,https://leetcode.cn/problems/binary-number-with-alternating-bits/,binary-number-with-alternating-bits,位运算,https://algo.itcharge.cn/Solutions/0600-0699/binary-number-with-alternating-bits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0693.%20%E4%BA%A4%E6%9B%BF%E4%BD%8D%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%95%B0.md,65.1%,简单,840 -0694,0600-0699,0694. 不同岛屿的数量,不同岛屿的数量,https://leetcode.cn/problems/number-of-distinct-islands/,number-of-distinct-islands,深度优先搜索、广度优先搜索、并查集、哈希表、哈希函数,https://algo.itcharge.cn/Solutions/0600-0699/number-of-distinct-islands/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0694.%20%E4%B8%8D%E5%90%8C%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%95%B0%E9%87%8F.md,57.6%,中等,173 -0695,0600-0699,0695. 岛屿的最大面积,岛屿的最大面积,https://leetcode.cn/problems/max-area-of-island/,max-area-of-island,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/0600-0699/max-area-of-island/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0695.%20%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%9C%80%E5%A4%A7%E9%9D%A2%E7%A7%AF.md,68.0%,中等,2524 -0696,0600-0699,0696. 计数二进制子串,计数二进制子串,https://leetcode.cn/problems/count-binary-substrings/,count-binary-substrings,双指针、字符串,https://algo.itcharge.cn/Solutions/0600-0699/count-binary-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0696.%20%E8%AE%A1%E6%95%B0%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%90%E4%B8%B2.md,63.7%,简单,630 -0697,0600-0699,0697. 数组的度,数组的度,https://leetcode.cn/problems/degree-of-an-array/,degree-of-an-array,数组、哈希表,https://algo.itcharge.cn/Solutions/0600-0699/degree-of-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0697.%20%E6%95%B0%E7%BB%84%E7%9A%84%E5%BA%A6.md,59.3%,简单,1136 -0698,0600-0699,0698. 划分为k个相等的子集,划分为k个相等的子集,https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/,partition-to-k-equal-sum-subsets,位运算、记忆化搜索、数组、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/0600-0699/partition-to-k-equal-sum-subsets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0698.%20%E5%88%92%E5%88%86%E4%B8%BAk%E4%B8%AA%E7%9B%B8%E7%AD%89%E7%9A%84%E5%AD%90%E9%9B%86.md,42.1%,中等,1398 -0699,0600-0699,0699. 掉落的方块,掉落的方块,https://leetcode.cn/problems/falling-squares/,falling-squares,线段树、数组、有序集合,https://algo.itcharge.cn/Solutions/0600-0699/falling-squares/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0699.%20%E6%8E%89%E8%90%BD%E7%9A%84%E6%96%B9%E5%9D%97.md,54.8%,困难,240 -0700,0700-0799,0700. 二叉搜索树中的搜索,二叉搜索树中的搜索,https://leetcode.cn/problems/search-in-a-binary-search-tree/,search-in-a-binary-search-tree,树、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0700-0799/search-in-a-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0700.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E6%90%9C%E7%B4%A2.md,77.6%,简单,1861 -0701,0700-0799,0701. 二叉搜索树中的插入操作,二叉搜索树中的插入操作,https://leetcode.cn/problems/insert-into-a-binary-search-tree/,insert-into-a-binary-search-tree,树、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0700-0799/insert-into-a-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0701.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E6%8F%92%E5%85%A5%E6%93%8D%E4%BD%9C.md,70.8%,中等,1364 -0702,0700-0799,0702. 搜索长度未知的有序数组,搜索长度未知的有序数组,https://leetcode.cn/problems/search-in-a-sorted-array-of-unknown-size/,search-in-a-sorted-array-of-unknown-size,数组、二分查找、交互,https://algo.itcharge.cn/Solutions/0700-0799/search-in-a-sorted-array-of-unknown-size/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0702.%20%E6%90%9C%E7%B4%A2%E9%95%BF%E5%BA%A6%E6%9C%AA%E7%9F%A5%E7%9A%84%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md,74.8%,中等,121 -0703,0700-0799,0703. 数据流中的第 K 大元素,数据流中的第 K 大元素,https://leetcode.cn/problems/kth-largest-element-in-a-stream/,kth-largest-element-in-a-stream,树、设计、二叉搜索树、二叉树、数据流、堆(优先队列),https://algo.itcharge.cn/Solutions/0700-0799/kth-largest-element-in-a-stream/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0703.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E5%85%83%E7%B4%A0.md,52.5%,简单,805 -0704,0700-0799,0704. 二分查找,二分查找,https://leetcode.cn/problems/binary-search/,binary-search,数组、二分查找,https://algo.itcharge.cn/Solutions/0700-0799/binary-search/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0704.%20%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.md,54.5%,简单,4941 -0705,0700-0799,0705. 设计哈希集合,设计哈希集合,https://leetcode.cn/problems/design-hashset/,design-hashset,设计、数组、哈希表、链表、哈希函数,https://algo.itcharge.cn/Solutions/0700-0799/design-hashset/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0705.%20%E8%AE%BE%E8%AE%A1%E5%93%88%E5%B8%8C%E9%9B%86%E5%90%88.md,63.3%,简单,620 -0706,0700-0799,0706. 设计哈希映射,设计哈希映射,https://leetcode.cn/problems/design-hashmap/,design-hashmap,设计、数组、哈希表、链表、哈希函数,https://algo.itcharge.cn/Solutions/0700-0799/design-hashmap/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0706.%20%E8%AE%BE%E8%AE%A1%E5%93%88%E5%B8%8C%E6%98%A0%E5%B0%84.md,63.6%,简单,600 -0707,0700-0799,0707. 设计链表,设计链表,https://leetcode.cn/problems/design-linked-list/,design-linked-list,设计、链表,https://algo.itcharge.cn/Solutions/0700-0799/design-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0707.%20%E8%AE%BE%E8%AE%A1%E9%93%BE%E8%A1%A8.md,34.7%,中等,1405 -0708,0700-0799,0708. 循环有序列表的插入,循环有序列表的插入,https://leetcode.cn/problems/insert-into-a-sorted-circular-linked-list/,insert-into-a-sorted-circular-linked-list,链表,https://algo.itcharge.cn/Solutions/0700-0799/insert-into-a-sorted-circular-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0708.%20%E5%BE%AA%E7%8E%AF%E6%9C%89%E5%BA%8F%E5%88%97%E8%A1%A8%E7%9A%84%E6%8F%92%E5%85%A5.md,37.7%,中等,98 -0709,0700-0799,0709. 转换成小写字母,转换成小写字母,https://leetcode.cn/problems/to-lower-case/,to-lower-case,字符串,https://algo.itcharge.cn/Solutions/0700-0799/to-lower-case/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0709.%20%E8%BD%AC%E6%8D%A2%E6%88%90%E5%B0%8F%E5%86%99%E5%AD%97%E6%AF%8D.md,76.8%,简单,916 -0710,0700-0799,0710. 黑名单中的随机数,黑名单中的随机数,https://leetcode.cn/problems/random-pick-with-blacklist/,random-pick-with-blacklist,数组、哈希表、数学、二分查找、排序、随机化,https://algo.itcharge.cn/Solutions/0700-0799/random-pick-with-blacklist/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0710.%20%E9%BB%91%E5%90%8D%E5%8D%95%E4%B8%AD%E7%9A%84%E9%9A%8F%E6%9C%BA%E6%95%B0.md,43.7%,困难,436 -0711,0700-0799,0711. 不同岛屿的数量 II,不同岛屿的数量 II,https://leetcode.cn/problems/number-of-distinct-islands-ii/,number-of-distinct-islands-ii,深度优先搜索、广度优先搜索、并查集、哈希表、哈希函数,https://algo.itcharge.cn/Solutions/0700-0799/number-of-distinct-islands-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0711.%20%E4%B8%8D%E5%90%8C%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%95%B0%E9%87%8F%20II.md,56.0%,困难,47 -0712,0700-0799,0712. 两个字符串的最小ASCII删除和,两个字符串的最小ASCII删除和,https://leetcode.cn/problems/minimum-ascii-delete-sum-for-two-strings/,minimum-ascii-delete-sum-for-two-strings,字符串、动态规划,https://algo.itcharge.cn/Solutions/0700-0799/minimum-ascii-delete-sum-for-two-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0712.%20%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%B0%8FASCII%E5%88%A0%E9%99%A4%E5%92%8C.md,68.9%,中等,334 -0713,0700-0799,0713. 乘积小于 K 的子数组,乘积小于 K 的子数组,https://leetcode.cn/problems/subarray-product-less-than-k/,subarray-product-less-than-k,数组、滑动窗口,https://algo.itcharge.cn/Solutions/0700-0799/subarray-product-less-than-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0713.%20%E4%B9%98%E7%A7%AF%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,49.6%,中等,899 -0714,0700-0799,0714. 买卖股票的最佳时机含手续费,买卖股票的最佳时机含手续费,https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/,best-time-to-buy-and-sell-stock-with-transaction-fee,贪心、数组,https://algo.itcharge.cn/Solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0714.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%E5%90%AB%E6%89%8B%E7%BB%AD%E8%B4%B9.md,75.2%,中等,1269 -0715,0700-0799,0715. Range 模块,Range 模块,https://leetcode.cn/problems/range-module/,range-module,设计、线段树、有序集合,https://algo.itcharge.cn/Solutions/0700-0799/range-module/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0715.%20Range%20%E6%A8%A1%E5%9D%97.md,52.9%,困难,207 -0716,0700-0799,0716. 最大栈,最大栈,https://leetcode.cn/problems/max-stack/,max-stack,栈、设计、链表、双向链表、有序集合,https://algo.itcharge.cn/Solutions/0700-0799/max-stack/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0716.%20%E6%9C%80%E5%A4%A7%E6%A0%88.md,44.3%,困难,109 -0717,0700-0799,0717. 1 比特与 2 比特字符,1 比特与 2 比特字符,https://leetcode.cn/problems/1-bit-and-2-bit-characters/,1-bit-and-2-bit-characters,数组,https://algo.itcharge.cn/Solutions/0700-0799/1-bit-and-2-bit-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0717.%201%20%E6%AF%94%E7%89%B9%E4%B8%8E%202%20%E6%AF%94%E7%89%B9%E5%AD%97%E7%AC%A6.md,55.3%,简单,827 -0718,0700-0799,0718. 最长重复子数组,最长重复子数组,https://leetcode.cn/problems/maximum-length-of-repeated-subarray/,maximum-length-of-repeated-subarray,数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/0700-0799/maximum-length-of-repeated-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md,56.9%,中等,1059 -0719,0700-0799,0719. 找出第 K 小的数对距离,找出第 K 小的数对距离,https://leetcode.cn/problems/find-k-th-smallest-pair-distance/,find-k-th-smallest-pair-distance,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/0700-0799/find-k-th-smallest-pair-distance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0719.%20%E6%89%BE%E5%87%BA%E7%AC%AC%20K%20%E5%B0%8F%E7%9A%84%E6%95%B0%E5%AF%B9%E8%B7%9D%E7%A6%BB.md,46.7%,困难,273 -0720,0700-0799,0720. 词典中最长的单词,词典中最长的单词,https://leetcode.cn/problems/longest-word-in-dictionary/,longest-word-in-dictionary,字典树、数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/0700-0799/longest-word-in-dictionary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0720.%20%E8%AF%8D%E5%85%B8%E4%B8%AD%E6%9C%80%E9%95%BF%E7%9A%84%E5%8D%95%E8%AF%8D.md,51.9%,中等,711 -0721,0700-0799,0721. 账户合并,账户合并,https://leetcode.cn/problems/accounts-merge/,accounts-merge,深度优先搜索、广度优先搜索、并查集、数组、字符串,https://algo.itcharge.cn/Solutions/0700-0799/accounts-merge/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0721.%20%E8%B4%A6%E6%88%B7%E5%90%88%E5%B9%B6.md,48.2%,中等,441 -0722,0700-0799,0722. 删除注释,删除注释,https://leetcode.cn/problems/remove-comments/,remove-comments,数组、字符串,https://algo.itcharge.cn/Solutions/0700-0799/remove-comments/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0722.%20%E5%88%A0%E9%99%A4%E6%B3%A8%E9%87%8A.md,34.2%,中等,104 -0723,0700-0799,0723. 粉碎糖果,粉碎糖果,https://leetcode.cn/problems/candy-crush/,candy-crush,数组、双指针、矩阵、模拟,https://algo.itcharge.cn/Solutions/0700-0799/candy-crush/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0723.%20%E7%B2%89%E7%A2%8E%E7%B3%96%E6%9E%9C.md,73.9%,中等,61 -0724,0700-0799,0724. 寻找数组的中心下标,寻找数组的中心下标,https://leetcode.cn/problems/find-pivot-index/,find-pivot-index,数组、前缀和,https://algo.itcharge.cn/Solutions/0700-0799/find-pivot-index/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0724.%20%E5%AF%BB%E6%89%BE%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E5%BF%83%E4%B8%8B%E6%A0%87.md,51.5%,简单,1549 -0725,0700-0799,0725. 分隔链表,分隔链表,https://leetcode.cn/problems/split-linked-list-in-parts/,split-linked-list-in-parts,链表,https://algo.itcharge.cn/Solutions/0700-0799/split-linked-list-in-parts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0725.%20%E5%88%86%E9%9A%94%E9%93%BE%E8%A1%A8.md,60.5%,中等,748 -0726,0700-0799,0726. 原子的数量,原子的数量,https://leetcode.cn/problems/number-of-atoms/,number-of-atoms,栈、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/0700-0799/number-of-atoms/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0726.%20%E5%8E%9F%E5%AD%90%E7%9A%84%E6%95%B0%E9%87%8F.md,55.2%,困难,476 -0727,0700-0799,0727. 最小窗口子序列,最小窗口子序列,https://leetcode.cn/problems/minimum-window-subsequence/,minimum-window-subsequence,字符串、动态规划、滑动窗口,https://algo.itcharge.cn/Solutions/0700-0799/minimum-window-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0727.%20%E6%9C%80%E5%B0%8F%E7%AA%97%E5%8F%A3%E5%AD%90%E5%BA%8F%E5%88%97.md,42.4%,困难,81 -0728,0700-0799,0728. 自除数,自除数,https://leetcode.cn/problems/self-dividing-numbers/,self-dividing-numbers,数学,https://algo.itcharge.cn/Solutions/0700-0799/self-dividing-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0728.%20%E8%87%AA%E9%99%A4%E6%95%B0.md,77.2%,简单,753 -0729,0700-0799,0729. 我的日程安排表 I,我的日程安排表 I,https://leetcode.cn/problems/my-calendar-i/,my-calendar-i,设计、线段树、二分查找、有序集合,https://algo.itcharge.cn/Solutions/0700-0799/my-calendar-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0729.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20I.md,58.4%,中等,442 -0730,0700-0799,0730. 统计不同回文子序列,统计不同回文子序列,https://leetcode.cn/problems/count-different-palindromic-subsequences/,count-different-palindromic-subsequences,字符串、动态规划,https://algo.itcharge.cn/Solutions/0700-0799/count-different-palindromic-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0730.%20%E7%BB%9F%E8%AE%A1%E4%B8%8D%E5%90%8C%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97.md,64.2%,困难,127 -0731,0700-0799,0731. 我的日程安排表 II,我的日程安排表 II,https://leetcode.cn/problems/my-calendar-ii/,my-calendar-ii,设计、线段树、二分查找、有序集合,https://algo.itcharge.cn/Solutions/0700-0799/my-calendar-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0731.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20II.md,62.7%,中等,239 -0732,0700-0799,0732. 我的日程安排表 III,我的日程安排表 III,https://leetcode.cn/problems/my-calendar-iii/,my-calendar-iii,设计、线段树、二分查找、有序集合,https://algo.itcharge.cn/Solutions/0700-0799/my-calendar-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0732.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20III.md,71.5%,困难,241 -0733,0700-0799,0733. 图像渲染,图像渲染,https://leetcode.cn/problems/flood-fill/,flood-fill,深度优先搜索、广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0700-0799/flood-fill/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0733.%20%E5%9B%BE%E5%83%8F%E6%B8%B2%E6%9F%93.md,58.7%,简单,1298 -0734,0700-0799,0734. 句子相似性,句子相似性,https://leetcode.cn/problems/sentence-similarity/,sentence-similarity,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0700-0799/sentence-similarity/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0734.%20%E5%8F%A5%E5%AD%90%E7%9B%B8%E4%BC%BC%E6%80%A7.md,46.7%,简单,76 -0735,0700-0799,0735. 行星碰撞,行星碰撞,https://leetcode.cn/problems/asteroid-collision/,asteroid-collision,栈、数组、模拟,https://algo.itcharge.cn/Solutions/0700-0799/asteroid-collision/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0735.%20%E8%A1%8C%E6%98%9F%E7%A2%B0%E6%92%9E.md,42.9%,中等,827 -0736,0700-0799,0736. Lisp 语法解析,Lisp 语法解析,https://leetcode.cn/problems/parse-lisp-expression/,parse-lisp-expression,栈、递归、哈希表、字符串,https://algo.itcharge.cn/Solutions/0700-0799/parse-lisp-expression/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0736.%20Lisp%20%E8%AF%AD%E6%B3%95%E8%A7%A3%E6%9E%90.md,66.4%,困难,156 -0737,0700-0799,0737. 句子相似性 II,句子相似性 II,https://leetcode.cn/problems/sentence-similarity-ii/,sentence-similarity-ii,深度优先搜索、广度优先搜索、并查集、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0700-0799/sentence-similarity-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0737.%20%E5%8F%A5%E5%AD%90%E7%9B%B8%E4%BC%BC%E6%80%A7%20II.md,48.4%,中等,110 -0738,0700-0799,0738. 单调递增的数字,单调递增的数字,https://leetcode.cn/problems/monotone-increasing-digits/,monotone-increasing-digits,贪心、数学,https://algo.itcharge.cn/Solutions/0700-0799/monotone-increasing-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0738.%20%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.md,50.3%,中等,957 -0739,0700-0799,0739. 每日温度,每日温度,https://leetcode.cn/problems/daily-temperatures/,daily-temperatures,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/0700-0799/daily-temperatures/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0739.%20%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.md,68.9%,中等,2682 -0740,0700-0799,0740. 删除并获得点数,删除并获得点数,https://leetcode.cn/problems/delete-and-earn/,delete-and-earn,数组、哈希表、动态规划,https://algo.itcharge.cn/Solutions/0700-0799/delete-and-earn/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0740.%20%E5%88%A0%E9%99%A4%E5%B9%B6%E8%8E%B7%E5%BE%97%E7%82%B9%E6%95%B0.md,62.0%,中等,976 -0741,0700-0799,0741. 摘樱桃,摘樱桃,https://leetcode.cn/problems/cherry-pickup/,cherry-pickup,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0700-0799/cherry-pickup/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0741.%20%E6%91%98%E6%A8%B1%E6%A1%83.md,50.5%,困难,144 -0742,0700-0799,0742. 二叉树最近的叶节点,二叉树最近的叶节点,https://leetcode.cn/problems/closest-leaf-in-a-binary-tree/,closest-leaf-in-a-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0700-0799/closest-leaf-in-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0742.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E8%BF%91%E7%9A%84%E5%8F%B6%E8%8A%82%E7%82%B9.md,48.9%,中等,81 -0743,0700-0799,0743. 网络延迟时间,网络延迟时间,https://leetcode.cn/problems/network-delay-time/,network-delay-time,深度优先搜索、广度优先搜索、图、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/0700-0799/network-delay-time/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0743.%20%E7%BD%91%E7%BB%9C%E5%BB%B6%E8%BF%9F%E6%97%B6%E9%97%B4.md,55.6%,中等,874 -0744,0700-0799,0744. 寻找比目标字母大的最小字母,寻找比目标字母大的最小字母,https://leetcode.cn/problems/find-smallest-letter-greater-than-target/,find-smallest-letter-greater-than-target,数组、二分查找,https://algo.itcharge.cn/Solutions/0700-0799/find-smallest-letter-greater-than-target/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0744.%20%E5%AF%BB%E6%89%BE%E6%AF%94%E7%9B%AE%E6%A0%87%E5%AD%97%E6%AF%8D%E5%A4%A7%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%97%E6%AF%8D.md,48.3%,简单,990 -0745,0700-0799,0745. 前缀和后缀搜索,前缀和后缀搜索,https://leetcode.cn/problems/prefix-and-suffix-search/,prefix-and-suffix-search,设计、字典树、哈希表、字符串,https://algo.itcharge.cn/Solutions/0700-0799/prefix-and-suffix-search/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0745.%20%E5%89%8D%E7%BC%80%E5%92%8C%E5%90%8E%E7%BC%80%E6%90%9C%E7%B4%A2.md,43.9%,困难,256 -0746,0700-0799,0746. 使用最小花费爬楼梯,使用最小花费爬楼梯,https://leetcode.cn/problems/min-cost-climbing-stairs/,min-cost-climbing-stairs,数组、动态规划,https://algo.itcharge.cn/Solutions/0700-0799/min-cost-climbing-stairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0746.%20%E4%BD%BF%E7%94%A8%E6%9C%80%E5%B0%8F%E8%8A%B1%E8%B4%B9%E7%88%AC%E6%A5%BC%E6%A2%AF.md,64.7%,简单,2409 -0747,0700-0799,0747. 至少是其他数字两倍的最大数,至少是其他数字两倍的最大数,https://leetcode.cn/problems/largest-number-at-least-twice-of-others/,largest-number-at-least-twice-of-others,数组、排序,https://algo.itcharge.cn/Solutions/0700-0799/largest-number-at-least-twice-of-others/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0747.%20%E8%87%B3%E5%B0%91%E6%98%AF%E5%85%B6%E4%BB%96%E6%95%B0%E5%AD%97%E4%B8%A4%E5%80%8D%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0.md,46.3%,简单,936 -0748,0700-0799,0748. 最短补全词,最短补全词,https://leetcode.cn/problems/shortest-completing-word/,shortest-completing-word,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0700-0799/shortest-completing-word/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0748.%20%E6%9C%80%E7%9F%AD%E8%A1%A5%E5%85%A8%E8%AF%8D.md,66.7%,简单,572 -0749,0700-0799,0749. 隔离病毒,隔离病毒,https://leetcode.cn/problems/contain-virus/,contain-virus,深度优先搜索、广度优先搜索、数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/0700-0799/contain-virus/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0749.%20%E9%9A%94%E7%A6%BB%E7%97%85%E6%AF%92.md,69.1%,困难,140 -0750,0700-0799,0750. 角矩形的数量,角矩形的数量,https://leetcode.cn/problems/number-of-corner-rectangles/,number-of-corner-rectangles,数组、数学、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0700-0799/number-of-corner-rectangles/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0750.%20%E8%A7%92%E7%9F%A9%E5%BD%A2%E7%9A%84%E6%95%B0%E9%87%8F.md,73.1%,中等,61 -0751,0700-0799,0751. IP 到 CIDR,IP 到 CIDR,https://leetcode.cn/problems/ip-to-cidr/,ip-to-cidr,位运算、字符串,https://algo.itcharge.cn/Solutions/0700-0799/ip-to-cidr/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0751.%20IP%20%E5%88%B0%20CIDR.md,48.3%,中等,38 -0752,0700-0799,0752. 打开转盘锁,打开转盘锁,https://leetcode.cn/problems/open-the-lock/,open-the-lock,广度优先搜索、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0700-0799/open-the-lock/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0752.%20%E6%89%93%E5%BC%80%E8%BD%AC%E7%9B%98%E9%94%81.md,52.7%,中等,1214 -0753,0700-0799,0753. 破解保险箱,破解保险箱,https://leetcode.cn/problems/cracking-the-safe/,cracking-the-safe,深度优先搜索、图、欧拉回路,https://algo.itcharge.cn/Solutions/0700-0799/cracking-the-safe/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0753.%20%E7%A0%B4%E8%A7%A3%E4%BF%9D%E9%99%A9%E7%AE%B1.md,74.9%,困难,152 -0754,0700-0799,0754. 到达终点数字,到达终点数字,https://leetcode.cn/problems/reach-a-number/,reach-a-number,数学、二分查找,https://algo.itcharge.cn/Solutions/0700-0799/reach-a-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0754.%20%E5%88%B0%E8%BE%BE%E7%BB%88%E7%82%B9%E6%95%B0%E5%AD%97.md,51.4%,中等,404 -0755,0700-0799,0755. 倒水,倒水,https://leetcode.cn/problems/pour-water/,pour-water,数组、模拟,https://algo.itcharge.cn/Solutions/0700-0799/pour-water/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0755.%20%E5%80%92%E6%B0%B4.md,48.2%,中等,43 -0756,0700-0799,0756. 金字塔转换矩阵,金字塔转换矩阵,https://leetcode.cn/problems/pyramid-transition-matrix/,pyramid-transition-matrix,位运算、深度优先搜索、广度优先搜索,https://algo.itcharge.cn/Solutions/0700-0799/pyramid-transition-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0756.%20%E9%87%91%E5%AD%97%E5%A1%94%E8%BD%AC%E6%8D%A2%E7%9F%A9%E9%98%B5.md,52.2%,中等,104 -0757,0700-0799,0757. 设置交集大小至少为2,设置交集大小至少为2,https://leetcode.cn/problems/set-intersection-size-at-least-two/,set-intersection-size-at-least-two,贪心、数组、排序,https://algo.itcharge.cn/Solutions/0700-0799/set-intersection-size-at-least-two/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0757.%20%E8%AE%BE%E7%BD%AE%E4%BA%A4%E9%9B%86%E5%A4%A7%E5%B0%8F%E8%87%B3%E5%B0%91%E4%B8%BA2.md,56.1%,困难,196 -0758,0700-0799,0758. 字符串中的加粗单词,字符串中的加粗单词,https://leetcode.cn/problems/bold-words-in-string/,bold-words-in-string,字典树、数组、哈希表、字符串、字符串匹配,https://algo.itcharge.cn/Solutions/0700-0799/bold-words-in-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0758.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8A%A0%E7%B2%97%E5%8D%95%E8%AF%8D.md,48.3%,中等,85 -0759,0700-0799,0759. 员工空闲时间,员工空闲时间,https://leetcode.cn/problems/employee-free-time/,employee-free-time,数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0700-0799/employee-free-time/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0759.%20%E5%91%98%E5%B7%A5%E7%A9%BA%E9%97%B2%E6%97%B6%E9%97%B4.md,70.2%,困难,77 -0760,0700-0799,0760. 找出变位映射,找出变位映射,https://leetcode.cn/problems/find-anagram-mappings/,find-anagram-mappings,数组、哈希表,https://algo.itcharge.cn/Solutions/0700-0799/find-anagram-mappings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0760.%20%E6%89%BE%E5%87%BA%E5%8F%98%E4%BD%8D%E6%98%A0%E5%B0%84.md,84.4%,简单,131 -0761,0700-0799,0761. 特殊的二进制序列,特殊的二进制序列,https://leetcode.cn/problems/special-binary-string/,special-binary-string,递归、字符串,https://algo.itcharge.cn/Solutions/0700-0799/special-binary-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0761.%20%E7%89%B9%E6%AE%8A%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%BA%8F%E5%88%97.md,75.2%,困难,150 -0762,0700-0799,0762. 二进制表示中质数个计算置位,二进制表示中质数个计算置位,https://leetcode.cn/problems/prime-number-of-set-bits-in-binary-representation/,prime-number-of-set-bits-in-binary-representation,位运算、数学,https://algo.itcharge.cn/Solutions/0700-0799/prime-number-of-set-bits-in-binary-representation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0762.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E8%A1%A8%E7%A4%BA%E4%B8%AD%E8%B4%A8%E6%95%B0%E4%B8%AA%E8%AE%A1%E7%AE%97%E7%BD%AE%E4%BD%8D.md,75.3%,简单,497 -0763,0700-0799,0763. 划分字母区间,划分字母区间,https://leetcode.cn/problems/partition-labels/,partition-labels,贪心、哈希表、双指针、字符串,https://algo.itcharge.cn/Solutions/0700-0799/partition-labels/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0763.%20%E5%88%92%E5%88%86%E5%AD%97%E6%AF%8D%E5%8C%BA%E9%97%B4.md,76.8%,中等,1613 -0764,0700-0799,0764. 最大加号标志,最大加号标志,https://leetcode.cn/problems/largest-plus-sign/,largest-plus-sign,数组、动态规划,https://algo.itcharge.cn/Solutions/0700-0799/largest-plus-sign/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0764.%20%E6%9C%80%E5%A4%A7%E5%8A%A0%E5%8F%B7%E6%A0%87%E5%BF%97.md,54.2%,中等,346 -0765,0700-0799,0765. 情侣牵手,情侣牵手,https://leetcode.cn/problems/couples-holding-hands/,couples-holding-hands,贪心、深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/0700-0799/couples-holding-hands/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0765.%20%E6%83%85%E4%BE%A3%E7%89%B5%E6%89%8B.md,65.9%,困难,549 -0766,0700-0799,0766. 托普利茨矩阵,托普利茨矩阵,https://leetcode.cn/problems/toeplitz-matrix/,toeplitz-matrix,数组、矩阵,https://algo.itcharge.cn/Solutions/0700-0799/toeplitz-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0766.%20%E6%89%98%E6%99%AE%E5%88%A9%E8%8C%A8%E7%9F%A9%E9%98%B5.md,70.3%,简单,772 -0767,0700-0799,0767. 重构字符串,重构字符串,https://leetcode.cn/problems/reorganize-string/,reorganize-string,贪心、哈希表、字符串、计数、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0700-0799/reorganize-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0767.%20%E9%87%8D%E6%9E%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,48.4%,中等,620 -0768,0700-0799,0768. 最多能完成排序的块 II,最多能完成排序的块 II,https://leetcode.cn/problems/max-chunks-to-make-sorted-ii/,max-chunks-to-make-sorted-ii,栈、贪心、数组、排序、单调栈,https://algo.itcharge.cn/Solutions/0700-0799/max-chunks-to-make-sorted-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0768.%20%E6%9C%80%E5%A4%9A%E8%83%BD%E5%AE%8C%E6%88%90%E6%8E%92%E5%BA%8F%E7%9A%84%E5%9D%97%20II.md,58.7%,困难,386 -0769,0700-0799,0769. 最多能完成排序的块,最多能完成排序的块,https://leetcode.cn/problems/max-chunks-to-make-sorted/,max-chunks-to-make-sorted,栈、贪心、数组、排序、单调栈,https://algo.itcharge.cn/Solutions/0700-0799/max-chunks-to-make-sorted/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0769.%20%E6%9C%80%E5%A4%9A%E8%83%BD%E5%AE%8C%E6%88%90%E6%8E%92%E5%BA%8F%E7%9A%84%E5%9D%97.md,59.2%,中等,752 -0770,0700-0799,0770. 基本计算器 IV,基本计算器 IV,https://leetcode.cn/problems/basic-calculator-iv/,basic-calculator-iv,栈、递归、哈希表、数学、字符串,https://algo.itcharge.cn/Solutions/0700-0799/basic-calculator-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0770.%20%E5%9F%BA%E6%9C%AC%E8%AE%A1%E7%AE%97%E5%99%A8%20IV.md,56.0%,困难,40 -0771,0700-0799,0771. 宝石与石头,宝石与石头,https://leetcode.cn/problems/jewels-and-stones/,jewels-and-stones,哈希表、字符串,https://algo.itcharge.cn/Solutions/0700-0799/jewels-and-stones/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0771.%20%E5%AE%9D%E7%9F%B3%E4%B8%8E%E7%9F%B3%E5%A4%B4.md,85.1%,简单,1437 -0772,0700-0799,0772. 基本计算器 III,基本计算器 III,https://leetcode.cn/problems/basic-calculator-iii/,basic-calculator-iii,栈、递归、数学、字符串,https://algo.itcharge.cn/Solutions/0700-0799/basic-calculator-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0772.%20%E5%9F%BA%E6%9C%AC%E8%AE%A1%E7%AE%97%E5%99%A8%20III.md,53.0%,困难,203 -0773,0700-0799,0773. 滑动谜题,滑动谜题,https://leetcode.cn/problems/sliding-puzzle/,sliding-puzzle,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0700-0799/sliding-puzzle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0773.%20%E6%BB%91%E5%8A%A8%E8%B0%9C%E9%A2%98.md,70.2%,困难,501 -0774,0700-0799,0774. 最小化去加油站的最大距离,最小化去加油站的最大距离,https://leetcode.cn/problems/minimize-max-distance-to-gas-station/,minimize-max-distance-to-gas-station,数组、二分查找,https://algo.itcharge.cn/Solutions/0700-0799/minimize-max-distance-to-gas-station/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0774.%20%E6%9C%80%E5%B0%8F%E5%8C%96%E5%8E%BB%E5%8A%A0%E6%B2%B9%E7%AB%99%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md,63.9%,困难,39 -0775,0700-0799,0775. 全局倒置与局部倒置,全局倒置与局部倒置,https://leetcode.cn/problems/global-and-local-inversions/,global-and-local-inversions,数组、数学,https://algo.itcharge.cn/Solutions/0700-0799/global-and-local-inversions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0775.%20%E5%85%A8%E5%B1%80%E5%80%92%E7%BD%AE%E4%B8%8E%E5%B1%80%E9%83%A8%E5%80%92%E7%BD%AE.md,49.4%,中等,418 -0776,0700-0799,0776. 拆分二叉搜索树,拆分二叉搜索树,https://leetcode.cn/problems/split-bst/,split-bst,树、二叉搜索树、递归、二叉树,https://algo.itcharge.cn/Solutions/0700-0799/split-bst/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0776.%20%E6%8B%86%E5%88%86%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,59.8%,中等,53 -0777,0700-0799,0777. 在LR字符串中交换相邻字符,在LR字符串中交换相邻字符,https://leetcode.cn/problems/swap-adjacent-in-lr-string/,swap-adjacent-in-lr-string,双指针、字符串,https://algo.itcharge.cn/Solutions/0700-0799/swap-adjacent-in-lr-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0777.%20%E5%9C%A8LR%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E4%BA%A4%E6%8D%A2%E7%9B%B8%E9%82%BB%E5%AD%97%E7%AC%A6.md,38.4%,中等,305 -0778,0700-0799,0778. 水位上升的泳池中游泳,水位上升的泳池中游泳,https://leetcode.cn/problems/swim-in-rising-water/,swim-in-rising-water,深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列),https://algo.itcharge.cn/Solutions/0700-0799/swim-in-rising-water/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0778.%20%E6%B0%B4%E4%BD%8D%E4%B8%8A%E5%8D%87%E7%9A%84%E6%B3%B3%E6%B1%A0%E4%B8%AD%E6%B8%B8%E6%B3%B3.md,59.0%,困难,436 -0779,0700-0799,0779. 第K个语法符号,第K个语法符号,https://leetcode.cn/problems/k-th-symbol-in-grammar/,k-th-symbol-in-grammar,位运算、递归、数学,https://algo.itcharge.cn/Solutions/0700-0799/k-th-symbol-in-grammar/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0779.%20%E7%AC%ACK%E4%B8%AA%E8%AF%AD%E6%B3%95%E7%AC%A6%E5%8F%B7.md,49.7%,中等,751 -0780,0700-0799,0780. 到达终点,到达终点,https://leetcode.cn/problems/reaching-points/,reaching-points,数学,https://algo.itcharge.cn/Solutions/0700-0799/reaching-points/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0780.%20%E5%88%B0%E8%BE%BE%E7%BB%88%E7%82%B9.md,37.6%,困难,266 -0781,0700-0799,0781. 森林中的兔子,森林中的兔子,https://leetcode.cn/problems/rabbits-in-forest/,rabbits-in-forest,贪心、数组、哈希表、数学,https://algo.itcharge.cn/Solutions/0700-0799/rabbits-in-forest/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0781.%20%E6%A3%AE%E6%9E%97%E4%B8%AD%E7%9A%84%E5%85%94%E5%AD%90.md,58.9%,中等,795 -0782,0700-0799,0782. 变为棋盘,变为棋盘,https://leetcode.cn/problems/transform-to-chessboard/,transform-to-chessboard,位运算、数组、数学、矩阵,https://algo.itcharge.cn/Solutions/0700-0799/transform-to-chessboard/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0782.%20%E5%8F%98%E4%B8%BA%E6%A3%8B%E7%9B%98.md,59.7%,困难,149 -0783,0700-0799,0783. 二叉搜索树节点最小距离,二叉搜索树节点最小距离,https://leetcode.cn/problems/minimum-distance-between-bst-nodes/,minimum-distance-between-bst-nodes,树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0700-0799/minimum-distance-between-bst-nodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0783.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%8A%82%E7%82%B9%E6%9C%80%E5%B0%8F%E8%B7%9D%E7%A6%BB.md,60.1%,简单,830 -0784,0700-0799,0784. 字母大小写全排列,字母大小写全排列,https://leetcode.cn/problems/letter-case-permutation/,letter-case-permutation,位运算、字符串、回溯,https://algo.itcharge.cn/Solutions/0700-0799/letter-case-permutation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0784.%20%E5%AD%97%E6%AF%8D%E5%A4%A7%E5%B0%8F%E5%86%99%E5%85%A8%E6%8E%92%E5%88%97.md,72.6%,中等,1186 -0785,0700-0799,0785. 判断二分图,判断二分图,https://leetcode.cn/problems/is-graph-bipartite/,is-graph-bipartite,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/0700-0799/is-graph-bipartite/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0785.%20%E5%88%A4%E6%96%AD%E4%BA%8C%E5%88%86%E5%9B%BE.md,54.6%,中等,1468 -0786,0700-0799,0786. 第 K 个最小的素数分数,第 K 个最小的素数分数,https://leetcode.cn/problems/k-th-smallest-prime-fraction/,k-th-smallest-prime-fraction,数组、二分查找、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0700-0799/k-th-smallest-prime-fraction/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0786.%20%E7%AC%AC%20K%20%E4%B8%AA%E6%9C%80%E5%B0%8F%E7%9A%84%E7%B4%A0%E6%95%B0%E5%88%86%E6%95%B0.md,67.6%,中等,318 -0787,0700-0799,0787. K 站中转内最便宜的航班,K 站中转内最便宜的航班,https://leetcode.cn/problems/cheapest-flights-within-k-stops/,cheapest-flights-within-k-stops,深度优先搜索、广度优先搜索、图、动态规划、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/0700-0799/cheapest-flights-within-k-stops/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0787.%20K%20%E7%AB%99%E4%B8%AD%E8%BD%AC%E5%86%85%E6%9C%80%E4%BE%BF%E5%AE%9C%E7%9A%84%E8%88%AA%E7%8F%AD.md,39.7%,中等,667 -0788,0700-0799,0788. 旋转数字,旋转数字,https://leetcode.cn/problems/rotated-digits/,rotated-digits,数学、动态规划,https://algo.itcharge.cn/Solutions/0700-0799/rotated-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0788.%20%E6%97%8B%E8%BD%AC%E6%95%B0%E5%AD%97.md,66.2%,中等,517 -0789,0700-0799,0789. 逃脱阻碍者,逃脱阻碍者,https://leetcode.cn/problems/escape-the-ghosts/,escape-the-ghosts,数组、数学,https://algo.itcharge.cn/Solutions/0700-0799/escape-the-ghosts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0789.%20%E9%80%83%E8%84%B1%E9%98%BB%E7%A2%8D%E8%80%85.md,68.5%,中等,326 -0790,0700-0799,0790. 多米诺和托米诺平铺,多米诺和托米诺平铺,https://leetcode.cn/problems/domino-and-tromino-tiling/,domino-and-tromino-tiling,动态规划,https://algo.itcharge.cn/Solutions/0700-0799/domino-and-tromino-tiling/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0790.%20%E5%A4%9A%E7%B1%B3%E8%AF%BA%E5%92%8C%E6%89%98%E7%B1%B3%E8%AF%BA%E5%B9%B3%E9%93%BA.md,55.8%,中等,284 -0791,0700-0799,0791. 自定义字符串排序,自定义字符串排序,https://leetcode.cn/problems/custom-sort-string/,custom-sort-string,哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/0700-0799/custom-sort-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0791.%20%E8%87%AA%E5%AE%9A%E4%B9%89%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%8E%92%E5%BA%8F.md,74.2%,中等,599 -0792,0700-0799,0792. 匹配子序列的单词数,匹配子序列的单词数,https://leetcode.cn/problems/number-of-matching-subsequences/,number-of-matching-subsequences,字典树、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/0700-0799/number-of-matching-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0792.%20%E5%8C%B9%E9%85%8D%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E5%8D%95%E8%AF%8D%E6%95%B0.md,51.0%,中等,447 -0793,0700-0799,0793. 阶乘函数后 K 个零,阶乘函数后 K 个零,https://leetcode.cn/problems/preimage-size-of-factorial-zeroes-function/,preimage-size-of-factorial-zeroes-function,数学、二分查找,https://algo.itcharge.cn/Solutions/0700-0799/preimage-size-of-factorial-zeroes-function/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0793.%20%E9%98%B6%E4%B9%98%E5%87%BD%E6%95%B0%E5%90%8E%20K%20%E4%B8%AA%E9%9B%B6.md,48.7%,困难,289 -0794,0700-0799,0794. 有效的井字游戏,有效的井字游戏,https://leetcode.cn/problems/valid-tic-tac-toe-state/,valid-tic-tac-toe-state,数组、字符串,https://algo.itcharge.cn/Solutions/0700-0799/valid-tic-tac-toe-state/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0794.%20%E6%9C%89%E6%95%88%E7%9A%84%E4%BA%95%E5%AD%97%E6%B8%B8%E6%88%8F.md,38.6%,中等,497 -0795,0700-0799,0795. 区间子数组个数,区间子数组个数,https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum/,number-of-subarrays-with-bounded-maximum,数组、双指针,https://algo.itcharge.cn/Solutions/0700-0799/number-of-subarrays-with-bounded-maximum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0795.%20%E5%8C%BA%E9%97%B4%E5%AD%90%E6%95%B0%E7%BB%84%E4%B8%AA%E6%95%B0.md,57.8%,中等,351 -0796,0700-0799,0796. 旋转字符串,旋转字符串,https://leetcode.cn/problems/rotate-string/,rotate-string,字符串、字符串匹配,https://algo.itcharge.cn/Solutions/0700-0799/rotate-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0796.%20%E6%97%8B%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md,63.3%,简单,899 -0797,0700-0799,0797. 所有可能的路径,所有可能的路径,https://leetcode.cn/problems/all-paths-from-source-to-target/,all-paths-from-source-to-target,深度优先搜索、广度优先搜索、图、回溯,https://algo.itcharge.cn/Solutions/0700-0799/all-paths-from-source-to-target/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0797.%20%E6%89%80%E6%9C%89%E5%8F%AF%E8%83%BD%E7%9A%84%E8%B7%AF%E5%BE%84.md,78.9%,中等,1854 -0798,0700-0799,0798. 得分最高的最小轮调,得分最高的最小轮调,https://leetcode.cn/problems/smallest-rotation-with-highest-score/,smallest-rotation-with-highest-score,数组、前缀和,https://algo.itcharge.cn/Solutions/0700-0799/smallest-rotation-with-highest-score/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0798.%20%E5%BE%97%E5%88%86%E6%9C%80%E9%AB%98%E7%9A%84%E6%9C%80%E5%B0%8F%E8%BD%AE%E8%B0%83.md,61.6%,困难,226 -0799,0700-0799,0799. 香槟塔,香槟塔,https://leetcode.cn/problems/champagne-tower/,champagne-tower,动态规划,https://algo.itcharge.cn/Solutions/0700-0799/champagne-tower/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0799.%20%E9%A6%99%E6%A7%9F%E5%A1%94.md,53.0%,中等,311 -0800,0800-0899,0800. 相似 RGB 颜色,相似 RGB 颜色,https://leetcode.cn/problems/similar-rgb-color/,similar-rgb-color,数学、字符串、枚举,https://algo.itcharge.cn/Solutions/0800-0899/similar-rgb-color/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0800.%20%E7%9B%B8%E4%BC%BC%20RGB%20%E9%A2%9C%E8%89%B2.md,70.2%,简单,56 -0801,0800-0899,0801. 使序列递增的最小交换次数,使序列递增的最小交换次数,https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/,minimum-swaps-to-make-sequences-increasing,数组、动态规划,https://algo.itcharge.cn/Solutions/0800-0899/minimum-swaps-to-make-sequences-increasing/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0801.%20%E4%BD%BF%E5%BA%8F%E5%88%97%E9%80%92%E5%A2%9E%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0.md,50.6%,困难,316 -0802,0800-0899,0802. 找到最终的安全状态,找到最终的安全状态,https://leetcode.cn/problems/find-eventual-safe-states/,find-eventual-safe-states,深度优先搜索、广度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/0800-0899/find-eventual-safe-states/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0802.%20%E6%89%BE%E5%88%B0%E6%9C%80%E7%BB%88%E7%9A%84%E5%AE%89%E5%85%A8%E7%8A%B6%E6%80%81.md,59.2%,中等,465 -0803,0800-0899,0803. 打砖块,打砖块,https://leetcode.cn/problems/bricks-falling-when-hit/,bricks-falling-when-hit,并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/0800-0899/bricks-falling-when-hit/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0803.%20%E6%89%93%E7%A0%96%E5%9D%97.md,47.0%,困难,153 -0804,0800-0899,0804. 唯一摩尔斯密码词,唯一摩尔斯密码词,https://leetcode.cn/problems/unique-morse-code-words/,unique-morse-code-words,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0800-0899/unique-morse-code-words/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0804.%20%E5%94%AF%E4%B8%80%E6%91%A9%E5%B0%94%E6%96%AF%E5%AF%86%E7%A0%81%E8%AF%8D.md,82.2%,简单,842 -0805,0800-0899,0805. 数组的均值分割,数组的均值分割,https://leetcode.cn/problems/split-array-with-same-average/,split-array-with-same-average,位运算、数组、数学、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/0800-0899/split-array-with-same-average/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0805.%20%E6%95%B0%E7%BB%84%E7%9A%84%E5%9D%87%E5%80%BC%E5%88%86%E5%89%B2.md,43.0%,困难,190 -0806,0800-0899,0806. 写字符串需要的行数,写字符串需要的行数,https://leetcode.cn/problems/number-of-lines-to-write-string/,number-of-lines-to-write-string,数组、字符串,https://algo.itcharge.cn/Solutions/0800-0899/number-of-lines-to-write-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0806.%20%E5%86%99%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%9C%80%E8%A6%81%E7%9A%84%E8%A1%8C%E6%95%B0.md,68.4%,简单,642 -0807,0800-0899,0807. 保持城市天际线,保持城市天际线,https://leetcode.cn/problems/max-increase-to-keep-city-skyline/,max-increase-to-keep-city-skyline,贪心、数组、矩阵,https://algo.itcharge.cn/Solutions/0800-0899/max-increase-to-keep-city-skyline/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0807.%20%E4%BF%9D%E6%8C%81%E5%9F%8E%E5%B8%82%E5%A4%A9%E9%99%85%E7%BA%BF.md,88.1%,中等,759 -0808,0800-0899,0808. 分汤,分汤,https://leetcode.cn/problems/soup-servings/,soup-servings,数学、动态规划、概率与统计,https://algo.itcharge.cn/Solutions/0800-0899/soup-servings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0808.%20%E5%88%86%E6%B1%A4.md,58.8%,中等,166 -0809,0800-0899,0809. 情感丰富的文字,情感丰富的文字,https://leetcode.cn/problems/expressive-words/,expressive-words,数组、双指针、字符串,https://algo.itcharge.cn/Solutions/0800-0899/expressive-words/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0809.%20%E6%83%85%E6%84%9F%E4%B8%B0%E5%AF%8C%E7%9A%84%E6%96%87%E5%AD%97.md,48.9%,中等,370 -0810,0800-0899,0810. 黑板异或游戏,黑板异或游戏,https://leetcode.cn/problems/chalkboard-xor-game/,chalkboard-xor-game,位运算、脑筋急转弯、数组、数学、博弈,https://algo.itcharge.cn/Solutions/0800-0899/chalkboard-xor-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0810.%20%E9%BB%91%E6%9D%BF%E5%BC%82%E6%88%96%E6%B8%B8%E6%88%8F.md,72.5%,困难,154 -0811,0800-0899,0811. 子域名访问计数,子域名访问计数,https://leetcode.cn/problems/subdomain-visit-count/,subdomain-visit-count,数组、哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/0800-0899/subdomain-visit-count/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0811.%20%E5%AD%90%E5%9F%9F%E5%90%8D%E8%AE%BF%E9%97%AE%E8%AE%A1%E6%95%B0.md,76.7%,中等,565 -0812,0800-0899,0812. 最大三角形面积,最大三角形面积,https://leetcode.cn/problems/largest-triangle-area/,largest-triangle-area,几何、数组、数学,https://algo.itcharge.cn/Solutions/0800-0899/largest-triangle-area/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0812.%20%E6%9C%80%E5%A4%A7%E4%B8%89%E8%A7%92%E5%BD%A2%E9%9D%A2%E7%A7%AF.md,68.2%,简单,325 -0813,0800-0899,0813. 最大平均值和的分组,最大平均值和的分组,https://leetcode.cn/problems/largest-sum-of-averages/,largest-sum-of-averages,数组、动态规划、前缀和,https://algo.itcharge.cn/Solutions/0800-0899/largest-sum-of-averages/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0813.%20%E6%9C%80%E5%A4%A7%E5%B9%B3%E5%9D%87%E5%80%BC%E5%92%8C%E7%9A%84%E5%88%86%E7%BB%84.md,61.7%,中等,270 -0814,0800-0899,0814. 二叉树剪枝,二叉树剪枝,https://leetcode.cn/problems/binary-tree-pruning/,binary-tree-pruning,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0800-0899/binary-tree-pruning/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0814.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E5%89%AA%E6%9E%9D.md,72.6%,中等,796 -0815,0800-0899,0815. 公交路线,公交路线,https://leetcode.cn/problems/bus-routes/,bus-routes,广度优先搜索、数组、哈希表,https://algo.itcharge.cn/Solutions/0800-0899/bus-routes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0815.%20%E5%85%AC%E4%BA%A4%E8%B7%AF%E7%BA%BF.md,44.4%,困难,412 -0816,0800-0899,0816. 模糊坐标,模糊坐标,https://leetcode.cn/problems/ambiguous-coordinates/,ambiguous-coordinates,字符串、回溯,https://algo.itcharge.cn/Solutions/0800-0899/ambiguous-coordinates/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0816.%20%E6%A8%A1%E7%B3%8A%E5%9D%90%E6%A0%87.md,62.6%,中等,391 -0817,0800-0899,0817. 链表组件,链表组件,https://leetcode.cn/problems/linked-list-components/,linked-list-components,数组、哈希表、链表,https://algo.itcharge.cn/Solutions/0800-0899/linked-list-components/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0817.%20%E9%93%BE%E8%A1%A8%E7%BB%84%E4%BB%B6.md,61.4%,中等,586 -0818,0800-0899,0818. 赛车,赛车,https://leetcode.cn/problems/race-car/,race-car,动态规划,https://algo.itcharge.cn/Solutions/0800-0899/race-car/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0818.%20%E8%B5%9B%E8%BD%A6.md,44.9%,困难,69 -0819,0800-0899,0819. 最常见的单词,最常见的单词,https://leetcode.cn/problems/most-common-word/,most-common-word,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/0800-0899/most-common-word/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0819.%20%E6%9C%80%E5%B8%B8%E8%A7%81%E7%9A%84%E5%8D%95%E8%AF%8D.md,45.6%,简单,728 -0820,0800-0899,0820. 单词的压缩编码,单词的压缩编码,https://leetcode.cn/problems/short-encoding-of-words/,short-encoding-of-words,字典树、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0800-0899/short-encoding-of-words/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0820.%20%E5%8D%95%E8%AF%8D%E7%9A%84%E5%8E%8B%E7%BC%A9%E7%BC%96%E7%A0%81.md,52.1%,中等,736 -0821,0800-0899,0821. 字符的最短距离,字符的最短距离,https://leetcode.cn/problems/shortest-distance-to-a-character/,shortest-distance-to-a-character,数组、双指针、字符串,https://algo.itcharge.cn/Solutions/0800-0899/shortest-distance-to-a-character/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0821.%20%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%9D%E7%A6%BB.md,72.9%,简单,997 -0822,0800-0899,0822. 翻转卡片游戏,翻转卡片游戏,https://leetcode.cn/problems/card-flipping-game/,card-flipping-game,数组、哈希表,https://algo.itcharge.cn/Solutions/0800-0899/card-flipping-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0822.%20%E7%BF%BB%E8%BD%AC%E5%8D%A1%E7%89%87%E6%B8%B8%E6%88%8F.md,51.6%,中等,68 -0823,0800-0899,0823. 带因子的二叉树,带因子的二叉树,https://leetcode.cn/problems/binary-trees-with-factors/,binary-trees-with-factors,数组、哈希表、动态规划,https://algo.itcharge.cn/Solutions/0800-0899/binary-trees-with-factors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0823.%20%E5%B8%A6%E5%9B%A0%E5%AD%90%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91.md,43.5%,中等,82 -0824,0800-0899,0824. 山羊拉丁文,山羊拉丁文,https://leetcode.cn/problems/goat-latin/,goat-latin,字符串,https://algo.itcharge.cn/Solutions/0800-0899/goat-latin/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0824.%20%E5%B1%B1%E7%BE%8A%E6%8B%89%E4%B8%81%E6%96%87.md,65.1%,简单,747 -0825,0800-0899,0825. 适龄的朋友,适龄的朋友,https://leetcode.cn/problems/friends-of-appropriate-ages/,friends-of-appropriate-ages,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/0800-0899/friends-of-appropriate-ages/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0825.%20%E9%80%82%E9%BE%84%E7%9A%84%E6%9C%8B%E5%8F%8B.md,45.4%,中等,361 -0826,0800-0899,0826. 安排工作以达到最大收益,安排工作以达到最大收益,https://leetcode.cn/problems/most-profit-assigning-work/,most-profit-assigning-work,贪心、数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/0800-0899/most-profit-assigning-work/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0826.%20%E5%AE%89%E6%8E%92%E5%B7%A5%E4%BD%9C%E4%BB%A5%E8%BE%BE%E5%88%B0%E6%9C%80%E5%A4%A7%E6%94%B6%E7%9B%8A.md,42.6%,中等,228 -0827,0800-0899,0827. 最大人工岛,最大人工岛,https://leetcode.cn/problems/making-a-large-island/,making-a-large-island,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/0800-0899/making-a-large-island/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0827.%20%E6%9C%80%E5%A4%A7%E4%BA%BA%E5%B7%A5%E5%B2%9B.md,47.1%,困难,538 -0828,0800-0899,0828. 统计子串中的唯一字符,统计子串中的唯一字符,https://leetcode.cn/problems/count-unique-characters-of-all-substrings-of-a-given-string/,count-unique-characters-of-all-substrings-of-a-given-string,哈希表、字符串、动态规划,https://algo.itcharge.cn/Solutions/0800-0899/count-unique-characters-of-all-substrings-of-a-given-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0828.%20%E7%BB%9F%E8%AE%A1%E5%AD%90%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%94%AF%E4%B8%80%E5%AD%97%E7%AC%A6.md,65.6%,困难,310 -0829,0800-0899,0829. 连续整数求和,连续整数求和,https://leetcode.cn/problems/consecutive-numbers-sum/,consecutive-numbers-sum,数学、枚举,https://algo.itcharge.cn/Solutions/0800-0899/consecutive-numbers-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0829.%20%E8%BF%9E%E7%BB%AD%E6%95%B4%E6%95%B0%E6%B1%82%E5%92%8C.md,46.3%,困难,377 -0830,0800-0899,0830. 较大分组的位置,较大分组的位置,https://leetcode.cn/problems/positions-of-large-groups/,positions-of-large-groups,字符串,https://algo.itcharge.cn/Solutions/0800-0899/positions-of-large-groups/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0830.%20%E8%BE%83%E5%A4%A7%E5%88%86%E7%BB%84%E7%9A%84%E4%BD%8D%E7%BD%AE.md,54.1%,简单,699 -0831,0800-0899,0831. 隐藏个人信息,隐藏个人信息,https://leetcode.cn/problems/masking-personal-information/,masking-personal-information,字符串,https://algo.itcharge.cn/Solutions/0800-0899/masking-personal-information/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0831.%20%E9%9A%90%E8%97%8F%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF.md,53.8%,中等,276 -0832,0800-0899,0832. 翻转图像,翻转图像,https://leetcode.cn/problems/flipping-an-image/,flipping-an-image,数组、双指针、矩阵、模拟,https://algo.itcharge.cn/Solutions/0800-0899/flipping-an-image/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0832.%20%E7%BF%BB%E8%BD%AC%E5%9B%BE%E5%83%8F.md,79.5%,简单,1123 -0833,0800-0899,0833. 字符串中的查找与替换,字符串中的查找与替换,https://leetcode.cn/problems/find-and-replace-in-string/,find-and-replace-in-string,数组、字符串、排序,https://algo.itcharge.cn/Solutions/0800-0899/find-and-replace-in-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0833.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%9F%A5%E6%89%BE%E4%B8%8E%E6%9B%BF%E6%8D%A2.md,44.0%,中等,135 -0834,0800-0899,0834. 树中距离之和,树中距离之和,https://leetcode.cn/problems/sum-of-distances-in-tree/,sum-of-distances-in-tree,树、深度优先搜索、图、动态规划,https://algo.itcharge.cn/Solutions/0800-0899/sum-of-distances-in-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0834.%20%E6%A0%91%E4%B8%AD%E8%B7%9D%E7%A6%BB%E4%B9%8B%E5%92%8C.md,54.4%,困难,179 -0835,0800-0899,0835. 图像重叠,图像重叠,https://leetcode.cn/problems/image-overlap/,image-overlap,数组、矩阵,https://algo.itcharge.cn/Solutions/0800-0899/image-overlap/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0835.%20%E5%9B%BE%E5%83%8F%E9%87%8D%E5%8F%A0.md,58.2%,中等,73 -0836,0800-0899,0836. 矩形重叠,矩形重叠,https://leetcode.cn/problems/rectangle-overlap/,rectangle-overlap,几何、数学,https://algo.itcharge.cn/Solutions/0800-0899/rectangle-overlap/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0836.%20%E7%9F%A9%E5%BD%A2%E9%87%8D%E5%8F%A0.md,49.0%,简单,776 -0837,0800-0899,0837. 新 21 点,新 21 点,https://leetcode.cn/problems/new-21-game/,new-21-game,数学、动态规划、滑动窗口、概率与统计,https://algo.itcharge.cn/Solutions/0800-0899/new-21-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0837.%20%E6%96%B0%2021%20%E7%82%B9.md,39.8%,中等,273 -0838,0800-0899,0838. 推多米诺,推多米诺,https://leetcode.cn/problems/push-dominoes/,push-dominoes,双指针、字符串、动态规划,https://algo.itcharge.cn/Solutions/0800-0899/push-dominoes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0838.%20%E6%8E%A8%E5%A4%9A%E7%B1%B3%E8%AF%BA.md,55.6%,中等,559 -0839,0800-0899,0839. 相似字符串组,相似字符串组,https://leetcode.cn/problems/similar-string-groups/,similar-string-groups,深度优先搜索、广度优先搜索、并查集、数组、字符串,https://algo.itcharge.cn/Solutions/0800-0899/similar-string-groups/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0839.%20%E7%9B%B8%E4%BC%BC%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%BB%84.md,58.8%,困难,332 -0840,0800-0899,0840. 矩阵中的幻方,矩阵中的幻方,https://leetcode.cn/problems/magic-squares-in-grid/,magic-squares-in-grid,数组、数学、矩阵,https://algo.itcharge.cn/Solutions/0800-0899/magic-squares-in-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0840.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E5%B9%BB%E6%96%B9.md,36.6%,中等,148 -0841,0800-0899,0841. 钥匙和房间,钥匙和房间,https://leetcode.cn/problems/keys-and-rooms/,keys-and-rooms,深度优先搜索、广度优先搜索、图,https://algo.itcharge.cn/Solutions/0800-0899/keys-and-rooms/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0841.%20%E9%92%A5%E5%8C%99%E5%92%8C%E6%88%BF%E9%97%B4.md,67.9%,中等,812 -0842,0800-0899,0842. 将数组拆分成斐波那契序列,将数组拆分成斐波那契序列,https://leetcode.cn/problems/split-array-into-fibonacci-sequence/,split-array-into-fibonacci-sequence,字符串、回溯,https://algo.itcharge.cn/Solutions/0800-0899/split-array-into-fibonacci-sequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0842.%20%E5%B0%86%E6%95%B0%E7%BB%84%E6%8B%86%E5%88%86%E6%88%90%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E5%BA%8F%E5%88%97.md,48.3%,中等,381 -0843,0800-0899,0843. 猜猜这个单词,猜猜这个单词,https://leetcode.cn/problems/guess-the-word/,guess-the-word,数组、数学、字符串、博弈、交互,https://algo.itcharge.cn/Solutions/0800-0899/guess-the-word/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0843.%20%E7%8C%9C%E7%8C%9C%E8%BF%99%E4%B8%AA%E5%8D%95%E8%AF%8D.md,36.7%,困难,65 -0844,0800-0899,0844. 比较含退格的字符串,比较含退格的字符串,https://leetcode.cn/problems/backspace-string-compare/,backspace-string-compare,栈、双指针、字符串、模拟,https://algo.itcharge.cn/Solutions/0800-0899/backspace-string-compare/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0844.%20%E6%AF%94%E8%BE%83%E5%90%AB%E9%80%80%E6%A0%BC%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,47.9%,简单,1897 -0845,0800-0899,0845. 数组中的最长山脉,数组中的最长山脉,https://leetcode.cn/problems/longest-mountain-in-array/,longest-mountain-in-array,数组、双指针、动态规划、枚举,https://algo.itcharge.cn/Solutions/0800-0899/longest-mountain-in-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0845.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E9%95%BF%E5%B1%B1%E8%84%89.md,42.3%,中等,712 -0846,0800-0899,0846. 一手顺子,一手顺子,https://leetcode.cn/problems/hand-of-straights/,hand-of-straights,贪心、数组、哈希表、排序,https://algo.itcharge.cn/Solutions/0800-0899/hand-of-straights/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0846.%20%E4%B8%80%E6%89%8B%E9%A1%BA%E5%AD%90.md,57.2%,中等,537 -0847,0800-0899,0847. 访问所有节点的最短路径,访问所有节点的最短路径,https://leetcode.cn/problems/shortest-path-visiting-all-nodes/,shortest-path-visiting-all-nodes,位运算、广度优先搜索、图、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/0800-0899/shortest-path-visiting-all-nodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0847.%20%E8%AE%BF%E9%97%AE%E6%89%80%E6%9C%89%E8%8A%82%E7%82%B9%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md,67.6%,困难,231 -0848,0800-0899,0848. 字母移位,字母移位,https://leetcode.cn/problems/shifting-letters/,shifting-letters,数组、字符串,https://algo.itcharge.cn/Solutions/0800-0899/shifting-letters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0848.%20%E5%AD%97%E6%AF%8D%E7%A7%BB%E4%BD%8D.md,46.1%,中等,151 -0849,0800-0899,0849. 到最近的人的最大距离,到最近的人的最大距离,https://leetcode.cn/problems/maximize-distance-to-closest-person/,maximize-distance-to-closest-person,数组,https://algo.itcharge.cn/Solutions/0800-0899/maximize-distance-to-closest-person/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0849.%20%E5%88%B0%E6%9C%80%E8%BF%91%E7%9A%84%E4%BA%BA%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md,44.2%,中等,267 -0850,0800-0899,0850. 矩形面积 II,矩形面积 II,https://leetcode.cn/problems/rectangle-area-ii/,rectangle-area-ii,线段树、数组、有序集合、扫描线,https://algo.itcharge.cn/Solutions/0800-0899/rectangle-area-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0850.%20%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF%20II.md,62.9%,困难,179 -0851,0800-0899,0851. 喧闹和富有,喧闹和富有,https://leetcode.cn/problems/loud-and-rich/,loud-and-rich,深度优先搜索、图、拓扑排序、数组,https://algo.itcharge.cn/Solutions/0800-0899/loud-and-rich/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0851.%20%E5%96%A7%E9%97%B9%E5%92%8C%E5%AF%8C%E6%9C%89.md,63.1%,中等,331 -0852,0800-0899,0852. 山脉数组的峰顶索引,山脉数组的峰顶索引,https://leetcode.cn/problems/peak-index-in-a-mountain-array/,peak-index-in-a-mountain-array,数组、二分查找,https://algo.itcharge.cn/Solutions/0800-0899/peak-index-in-a-mountain-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0852.%20%E5%B1%B1%E8%84%89%E6%95%B0%E7%BB%84%E7%9A%84%E5%B3%B0%E9%A1%B6%E7%B4%A2%E5%BC%95.md,68.7%,中等,1144 -0853,0800-0899,0853. 车队,车队,https://leetcode.cn/problems/car-fleet/,car-fleet,栈、数组、排序、单调栈,https://algo.itcharge.cn/Solutions/0800-0899/car-fleet/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0853.%20%E8%BD%A6%E9%98%9F.md,41.3%,中等,205 -0854,0800-0899,0854. 相似度为 K 的字符串,相似度为 K 的字符串,https://leetcode.cn/problems/k-similar-strings/,k-similar-strings,广度优先搜索、字符串,https://algo.itcharge.cn/Solutions/0800-0899/k-similar-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0854.%20%E7%9B%B8%E4%BC%BC%E5%BA%A6%E4%B8%BA%20K%20%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,46.8%,困难,248 -0855,0800-0899,0855. 考场就座,考场就座,https://leetcode.cn/problems/exam-room/,exam-room,设计、有序集合、堆(优先队列),https://algo.itcharge.cn/Solutions/0800-0899/exam-room/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0855.%20%E8%80%83%E5%9C%BA%E5%B0%B1%E5%BA%A7.md,47.7%,中等,214 -0856,0800-0899,0856. 括号的分数,括号的分数,https://leetcode.cn/problems/score-of-parentheses/,score-of-parentheses,栈、字符串,https://algo.itcharge.cn/Solutions/0800-0899/score-of-parentheses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0856.%20%E6%8B%AC%E5%8F%B7%E7%9A%84%E5%88%86%E6%95%B0.md,68.4%,中等,708 -0857,0800-0899,0857. 雇佣 K 名工人的最低成本,雇佣 K 名工人的最低成本,https://leetcode.cn/problems/minimum-cost-to-hire-k-workers/,minimum-cost-to-hire-k-workers,贪心、数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0800-0899/minimum-cost-to-hire-k-workers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0857.%20%E9%9B%87%E4%BD%A3%20K%20%E5%90%8D%E5%B7%A5%E4%BA%BA%E7%9A%84%E6%9C%80%E4%BD%8E%E6%88%90%E6%9C%AC.md,63.6%,困难,216 -0858,0800-0899,0858. 镜面反射,镜面反射,https://leetcode.cn/problems/mirror-reflection/,mirror-reflection,几何、数学、数论,https://algo.itcharge.cn/Solutions/0800-0899/mirror-reflection/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0858.%20%E9%95%9C%E9%9D%A2%E5%8F%8D%E5%B0%84.md,57.5%,中等,80 -0859,0800-0899,0859. 亲密字符串,亲密字符串,https://leetcode.cn/problems/buddy-strings/,buddy-strings,哈希表、字符串,https://algo.itcharge.cn/Solutions/0800-0899/buddy-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0859.%20%E4%BA%B2%E5%AF%86%E5%AD%97%E7%AC%A6%E4%B8%B2.md,34.5%,简单,889 -0860,0800-0899,0860. 柠檬水找零,柠檬水找零,https://leetcode.cn/problems/lemonade-change/,lemonade-change,贪心、数组,https://algo.itcharge.cn/Solutions/0800-0899/lemonade-change/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0860.%20%E6%9F%A0%E6%AA%AC%E6%B0%B4%E6%89%BE%E9%9B%B6.md,58.6%,简单,1307 -0861,0800-0899,0861. 翻转矩阵后的得分,翻转矩阵后的得分,https://leetcode.cn/problems/score-after-flipping-matrix/,score-after-flipping-matrix,贪心、位运算、数组、矩阵,https://algo.itcharge.cn/Solutions/0800-0899/score-after-flipping-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0861.%20%E7%BF%BB%E8%BD%AC%E7%9F%A9%E9%98%B5%E5%90%8E%E7%9A%84%E5%BE%97%E5%88%86.md,80.8%,中等,520 -0862,0800-0899,0862. 和至少为 K 的最短子数组,和至少为 K 的最短子数组,https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/,shortest-subarray-with-sum-at-least-k,队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列),https://algo.itcharge.cn/Solutions/0800-0899/shortest-subarray-with-sum-at-least-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0862.%20%E5%92%8C%E8%87%B3%E5%B0%91%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%90%E6%95%B0%E7%BB%84.md,26.5%,困难,383 -0863,0800-0899,0863. 二叉树中所有距离为 K 的结点,二叉树中所有距离为 K 的结点,https://leetcode.cn/problems/all-nodes-distance-k-in-binary-tree/,all-nodes-distance-k-in-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0800-0899/all-nodes-distance-k-in-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0863.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E6%89%80%E6%9C%89%E8%B7%9D%E7%A6%BB%E4%B8%BA%20K%20%E7%9A%84%E7%BB%93%E7%82%B9.md,61.4%,中等,756 -0864,0800-0899,0864. 获取所有钥匙的最短路径,获取所有钥匙的最短路径,https://leetcode.cn/problems/shortest-path-to-get-all-keys/,shortest-path-to-get-all-keys,位运算、广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0800-0899/shortest-path-to-get-all-keys/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0864.%20%E8%8E%B7%E5%8F%96%E6%89%80%E6%9C%89%E9%92%A5%E5%8C%99%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md,59.5%,困难,245 -0865,0800-0899,0865. 具有所有最深节点的最小子树,具有所有最深节点的最小子树,https://leetcode.cn/problems/smallest-subtree-with-all-the-deepest-nodes/,smallest-subtree-with-all-the-deepest-nodes,树、深度优先搜索、广度优先搜索、哈希表、二叉树,https://algo.itcharge.cn/Solutions/0800-0899/smallest-subtree-with-all-the-deepest-nodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0865.%20%E5%85%B7%E6%9C%89%E6%89%80%E6%9C%89%E6%9C%80%E6%B7%B1%E8%8A%82%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%90%E6%A0%91.md,68.9%,中等,225 -0866,0800-0899,0866. 回文素数,回文素数,https://leetcode.cn/problems/prime-palindrome/,prime-palindrome,数学,https://algo.itcharge.cn/Solutions/0800-0899/prime-palindrome/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0866.%20%E5%9B%9E%E6%96%87%E7%B4%A0%E6%95%B0.md,23.8%,中等,128 -0867,0800-0899,0867. 转置矩阵,转置矩阵,https://leetcode.cn/problems/transpose-matrix/,transpose-matrix,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/0800-0899/transpose-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0867.%20%E8%BD%AC%E7%BD%AE%E7%9F%A9%E9%98%B5.md,66.8%,简单,871 -0868,0800-0899,0868. 二进制间距,二进制间距,https://leetcode.cn/problems/binary-gap/,binary-gap,位运算,https://algo.itcharge.cn/Solutions/0800-0899/binary-gap/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0868.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E9%97%B4%E8%B7%9D.md,69.4%,简单,693 -0869,0800-0899,0869. 重新排序得到 2 的幂,重新排序得到 2 的幂,https://leetcode.cn/problems/reordered-power-of-2/,reordered-power-of-2,数学、计数、枚举、排序,https://algo.itcharge.cn/Solutions/0800-0899/reordered-power-of-2/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0869.%20%E9%87%8D%E6%96%B0%E6%8E%92%E5%BA%8F%E5%BE%97%E5%88%B0%202%20%E7%9A%84%E5%B9%82.md,63.6%,中等,532 -0870,0800-0899,0870. 优势洗牌,优势洗牌,https://leetcode.cn/problems/advantage-shuffle/,advantage-shuffle,贪心、数组、双指针、排序,https://algo.itcharge.cn/Solutions/0800-0899/advantage-shuffle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0870.%20%E4%BC%98%E5%8A%BF%E6%B4%97%E7%89%8C.md,50.4%,中等,756 -0871,0800-0899,0871. 最低加油次数,最低加油次数,https://leetcode.cn/problems/minimum-number-of-refueling-stops/,minimum-number-of-refueling-stops,贪心、数组、动态规划、堆(优先队列),https://algo.itcharge.cn/Solutions/0800-0899/minimum-number-of-refueling-stops/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0871.%20%E6%9C%80%E4%BD%8E%E5%8A%A0%E6%B2%B9%E6%AC%A1%E6%95%B0.md,43.2%,困难,367 -0872,0800-0899,0872. 叶子相似的树,叶子相似的树,https://leetcode.cn/problems/leaf-similar-trees/,leaf-similar-trees,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0800-0899/leaf-similar-trees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0872.%20%E5%8F%B6%E5%AD%90%E7%9B%B8%E4%BC%BC%E7%9A%84%E6%A0%91.md,65.0%,简单,883 -0873,0800-0899,0873. 最长的斐波那契子序列的长度,最长的斐波那契子序列的长度,https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/,length-of-longest-fibonacci-subsequence,数组、哈希表、动态规划,https://algo.itcharge.cn/Solutions/0800-0899/length-of-longest-fibonacci-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0873.%20%E6%9C%80%E9%95%BF%E7%9A%84%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E9%95%BF%E5%BA%A6.md,56.3%,中等,381 -0874,0800-0899,0874. 模拟行走机器人,模拟行走机器人,https://leetcode.cn/problems/walking-robot-simulation/,walking-robot-simulation,数组、模拟,https://algo.itcharge.cn/Solutions/0800-0899/walking-robot-simulation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0874.%20%E6%A8%A1%E6%8B%9F%E8%A1%8C%E8%B5%B0%E6%9C%BA%E5%99%A8%E4%BA%BA.md,43.1%,中等,341 -0875,0800-0899,0875. 爱吃香蕉的珂珂,爱吃香蕉的珂珂,https://leetcode.cn/problems/koko-eating-bananas/,koko-eating-bananas,数组、二分查找,https://algo.itcharge.cn/Solutions/0800-0899/koko-eating-bananas/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0875.%20%E7%88%B1%E5%90%83%E9%A6%99%E8%95%89%E7%9A%84%E7%8F%82%E7%8F%82.md,49.5%,中等,971 -0876,0800-0899,0876. 链表的中间结点,链表的中间结点,https://leetcode.cn/problems/middle-of-the-linked-list/,middle-of-the-linked-list,链表、双指针,https://algo.itcharge.cn/Solutions/0800-0899/middle-of-the-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0876.%20%E9%93%BE%E8%A1%A8%E7%9A%84%E4%B8%AD%E9%97%B4%E7%BB%93%E7%82%B9.md,70.2%,简单,3542 -0877,0800-0899,0877. 石子游戏,石子游戏,https://leetcode.cn/problems/stone-game/,stone-game,数组、数学、动态规划、博弈,https://algo.itcharge.cn/Solutions/0800-0899/stone-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0877.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F.md,76.5%,中等,664 -0878,0800-0899,0878. 第 N 个神奇数字,第 N 个神奇数字,https://leetcode.cn/problems/nth-magical-number/,nth-magical-number,数学、二分查找,https://algo.itcharge.cn/Solutions/0800-0899/nth-magical-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0878.%20%E7%AC%AC%20N%20%E4%B8%AA%E7%A5%9E%E5%A5%87%E6%95%B0%E5%AD%97.md,40.0%,困难,226 -0879,0800-0899,0879. 盈利计划,盈利计划,https://leetcode.cn/problems/profitable-schemes/,profitable-schemes,数组、动态规划,https://algo.itcharge.cn/Solutions/0800-0899/profitable-schemes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0879.%20%E7%9B%88%E5%88%A9%E8%AE%A1%E5%88%92.md,54.7%,困难,233 -0880,0800-0899,0880. 索引处的解码字符串,索引处的解码字符串,https://leetcode.cn/problems/decoded-string-at-index/,decoded-string-at-index,栈、字符串,https://algo.itcharge.cn/Solutions/0800-0899/decoded-string-at-index/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0880.%20%E7%B4%A2%E5%BC%95%E5%A4%84%E7%9A%84%E8%A7%A3%E7%A0%81%E5%AD%97%E7%AC%A6%E4%B8%B2.md,26.9%,中等,113 -0881,0800-0899,0881. 救生艇,救生艇,https://leetcode.cn/problems/boats-to-save-people/,boats-to-save-people,贪心、数组、双指针、排序,https://algo.itcharge.cn/Solutions/0800-0899/boats-to-save-people/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0881.%20%E6%95%91%E7%94%9F%E8%89%87.md,53.7%,中等,754 -0882,0800-0899,0882. 细分图中的可到达节点,细分图中的可到达节点,https://leetcode.cn/problems/reachable-nodes-in-subdivided-graph/,reachable-nodes-in-subdivided-graph,图、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/0800-0899/reachable-nodes-in-subdivided-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0882.%20%E7%BB%86%E5%88%86%E5%9B%BE%E4%B8%AD%E7%9A%84%E5%8F%AF%E5%88%B0%E8%BE%BE%E8%8A%82%E7%82%B9.md,64.1%,困难,141 -0883,0800-0899,0883. 三维形体投影面积,三维形体投影面积,https://leetcode.cn/problems/projection-area-of-3d-shapes/,projection-area-of-3d-shapes,几何、数组、数学、矩阵,https://algo.itcharge.cn/Solutions/0800-0899/projection-area-of-3d-shapes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0883.%20%E4%B8%89%E7%BB%B4%E5%BD%A2%E4%BD%93%E6%8A%95%E5%BD%B1%E9%9D%A2%E7%A7%AF.md,76.4%,简单,566 -0884,0800-0899,0884. 两句话中的不常见单词,两句话中的不常见单词,https://leetcode.cn/problems/uncommon-words-from-two-sentences/,uncommon-words-from-two-sentences,哈希表、字符串,https://algo.itcharge.cn/Solutions/0800-0899/uncommon-words-from-two-sentences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0884.%20%E4%B8%A4%E5%8F%A5%E8%AF%9D%E4%B8%AD%E7%9A%84%E4%B8%8D%E5%B8%B8%E8%A7%81%E5%8D%95%E8%AF%8D.md,71.2%,简单,640 -0885,0800-0899,0885. 螺旋矩阵 III,螺旋矩阵 III,https://leetcode.cn/problems/spiral-matrix-iii/,spiral-matrix-iii,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/0800-0899/spiral-matrix-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0885.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5%20III.md,71.2%,中等,132 -0886,0800-0899,0886. 可能的二分法,可能的二分法,https://leetcode.cn/problems/possible-bipartition/,possible-bipartition,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/0800-0899/possible-bipartition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0886.%20%E5%8F%AF%E8%83%BD%E7%9A%84%E4%BA%8C%E5%88%86%E6%B3%95.md,52.1%,中等,614 -0887,0800-0899,0887. 鸡蛋掉落,鸡蛋掉落,https://leetcode.cn/problems/super-egg-drop/,super-egg-drop,数学、二分查找、动态规划,https://algo.itcharge.cn/Solutions/0800-0899/super-egg-drop/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0887.%20%E9%B8%A1%E8%9B%8B%E6%8E%89%E8%90%BD.md,30.6%,困难,468 -0888,0800-0899,0888. 公平的糖果交换,公平的糖果交换,https://leetcode.cn/problems/fair-candy-swap/,fair-candy-swap,数组、哈希表、二分查找、排序,https://algo.itcharge.cn/Solutions/0800-0899/fair-candy-swap/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0888.%20%E5%85%AC%E5%B9%B3%E7%9A%84%E7%B3%96%E6%9E%9C%E4%BA%A4%E6%8D%A2.md,63.6%,简单,598 -0889,0800-0899,0889. 根据前序和后序遍历构造二叉树,根据前序和后序遍历构造二叉树,https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/,construct-binary-tree-from-preorder-and-postorder-traversal,树、数组、哈希表、分治、二叉树,https://algo.itcharge.cn/Solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0889.%20%E6%A0%B9%E6%8D%AE%E5%89%8D%E5%BA%8F%E5%92%8C%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md,68.0%,中等,362 -0890,0800-0899,0890. 查找和替换模式,查找和替换模式,https://leetcode.cn/problems/find-and-replace-pattern/,find-and-replace-pattern,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0800-0899/find-and-replace-pattern/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0890.%20%E6%9F%A5%E6%89%BE%E5%92%8C%E6%9B%BF%E6%8D%A2%E6%A8%A1%E5%BC%8F.md,78.6%,中等,474 -0891,0800-0899,0891. 子序列宽度之和,子序列宽度之和,https://leetcode.cn/problems/sum-of-subsequence-widths/,sum-of-subsequence-widths,数组、数学、排序,https://algo.itcharge.cn/Solutions/0800-0899/sum-of-subsequence-widths/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0891.%20%E5%AD%90%E5%BA%8F%E5%88%97%E5%AE%BD%E5%BA%A6%E4%B9%8B%E5%92%8C.md,46.5%,困难,200 -0892,0800-0899,0892. 三维形体的表面积,三维形体的表面积,https://leetcode.cn/problems/surface-area-of-3d-shapes/,surface-area-of-3d-shapes,几何、数组、数学、矩阵,https://algo.itcharge.cn/Solutions/0800-0899/surface-area-of-3d-shapes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0892.%20%E4%B8%89%E7%BB%B4%E5%BD%A2%E4%BD%93%E7%9A%84%E8%A1%A8%E9%9D%A2%E7%A7%AF.md,64.4%,简单,776 -0893,0800-0899,0893. 特殊等价字符串组,特殊等价字符串组,https://leetcode.cn/problems/groups-of-special-equivalent-strings/,groups-of-special-equivalent-strings,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0800-0899/groups-of-special-equivalent-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0893.%20%E7%89%B9%E6%AE%8A%E7%AD%89%E4%BB%B7%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%BB%84.md,73.0%,中等,142 -0894,0800-0899,0894. 所有可能的真二叉树,所有可能的真二叉树,https://leetcode.cn/problems/all-possible-full-binary-trees/,all-possible-full-binary-trees,树、递归、记忆化搜索、动态规划、二叉树,https://algo.itcharge.cn/Solutions/0800-0899/all-possible-full-binary-trees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0894.%20%E6%89%80%E6%9C%89%E5%8F%AF%E8%83%BD%E7%9A%84%E7%9C%9F%E4%BA%8C%E5%8F%89%E6%A0%91.md,77.6%,中等,197 -0895,0800-0899,0895. 最大频率栈,最大频率栈,https://leetcode.cn/problems/maximum-frequency-stack/,maximum-frequency-stack,栈、设计、哈希表、有序集合,https://algo.itcharge.cn/Solutions/0800-0899/maximum-frequency-stack/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0895.%20%E6%9C%80%E5%A4%A7%E9%A2%91%E7%8E%87%E6%A0%88.md,64.4%,困难,322 -0896,0800-0899,0896. 单调数列,单调数列,https://leetcode.cn/problems/monotonic-array/,monotonic-array,数组,https://algo.itcharge.cn/Solutions/0800-0899/monotonic-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0896.%20%E5%8D%95%E8%B0%83%E6%95%B0%E5%88%97.md,57.0%,简单,979 -0897,0800-0899,0897. 递增顺序搜索树,递增顺序搜索树,https://leetcode.cn/problems/increasing-order-search-tree/,increasing-order-search-tree,栈、树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0800-0899/increasing-order-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0897.%20%E9%80%92%E5%A2%9E%E9%A1%BA%E5%BA%8F%E6%90%9C%E7%B4%A2%E6%A0%91.md,74.1%,简单,895 -0898,0800-0899,0898. 子数组按位或操作,子数组按位或操作,https://leetcode.cn/problems/bitwise-ors-of-subarrays/,bitwise-ors-of-subarrays,位运算、数组、动态规划,https://algo.itcharge.cn/Solutions/0800-0899/bitwise-ors-of-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0898.%20%E5%AD%90%E6%95%B0%E7%BB%84%E6%8C%89%E4%BD%8D%E6%88%96%E6%93%8D%E4%BD%9C.md,39.1%,中等,62 -0899,0800-0899,0899. 有序队列,有序队列,https://leetcode.cn/problems/orderly-queue/,orderly-queue,数学、字符串、排序,https://algo.itcharge.cn/Solutions/0800-0899/orderly-queue/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0899.%20%E6%9C%89%E5%BA%8F%E9%98%9F%E5%88%97.md,64.2%,困难,278 -0900,0900-0999,0900. RLE 迭代器,RLE 迭代器,https://leetcode.cn/problems/rle-iterator/,rle-iterator,设计、数组、计数、迭代器,https://algo.itcharge.cn/Solutions/0900-0999/rle-iterator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0900.%20RLE%20%E8%BF%AD%E4%BB%A3%E5%99%A8.md,51.3%,中等,87 -0901,0900-0999,0901. 股票价格跨度,股票价格跨度,https://leetcode.cn/problems/online-stock-span/,online-stock-span,栈、设计、数据流、单调栈,https://algo.itcharge.cn/Solutions/0900-0999/online-stock-span/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0901.%20%E8%82%A1%E7%A5%A8%E4%BB%B7%E6%A0%BC%E8%B7%A8%E5%BA%A6.md,62.3%,中等,662 -0902,0900-0999,0902. 最大为 N 的数字组合,最大为 N 的数字组合,https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/,numbers-at-most-n-given-digit-set,数组、数学、字符串、二分查找、动态规划,https://algo.itcharge.cn/Solutions/0900-0999/numbers-at-most-n-given-digit-set/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0902.%20%E6%9C%80%E5%A4%A7%E4%B8%BA%20N%20%E7%9A%84%E6%95%B0%E5%AD%97%E7%BB%84%E5%90%88.md,46.2%,困难,397 -0903,0900-0999,0903. DI 序列的有效排列,DI 序列的有效排列,https://leetcode.cn/problems/valid-permutations-for-di-sequence/,valid-permutations-for-di-sequence,字符串、动态规划、前缀和,https://algo.itcharge.cn/Solutions/0900-0999/valid-permutations-for-di-sequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0903.%20DI%20%E5%BA%8F%E5%88%97%E7%9A%84%E6%9C%89%E6%95%88%E6%8E%92%E5%88%97.md,56.4%,困难,64 -0904,0900-0999,0904. 水果成篮,水果成篮,https://leetcode.cn/problems/fruit-into-baskets/,fruit-into-baskets,数组、哈希表、滑动窗口,https://algo.itcharge.cn/Solutions/0900-0999/fruit-into-baskets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0904.%20%E6%B0%B4%E6%9E%9C%E6%88%90%E7%AF%AE.md,44.8%,中等,1444 -0905,0900-0999,0905. 按奇偶排序数组,按奇偶排序数组,https://leetcode.cn/problems/sort-array-by-parity/,sort-array-by-parity,数组、双指针、排序,https://algo.itcharge.cn/Solutions/0900-0999/sort-array-by-parity/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0905.%20%E6%8C%89%E5%A5%87%E5%81%B6%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md,71.0%,简单,1444 -0906,0900-0999,0906. 超级回文数,超级回文数,https://leetcode.cn/problems/super-palindromes/,super-palindromes,数学、枚举,https://algo.itcharge.cn/Solutions/0900-0999/super-palindromes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0906.%20%E8%B6%85%E7%BA%A7%E5%9B%9E%E6%96%87%E6%95%B0.md,31.8%,困难,79 -0907,0900-0999,0907. 子数组的最小值之和,子数组的最小值之和,https://leetcode.cn/problems/sum-of-subarray-minimums/,sum-of-subarray-minimums,栈、数组、动态规划、单调栈,https://algo.itcharge.cn/Solutions/0900-0999/sum-of-subarray-minimums/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0907.%20%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC%E4%B9%8B%E5%92%8C.md,38.3%,中等,438 -0908,0900-0999,0908. 最小差值 I,最小差值 I,https://leetcode.cn/problems/smallest-range-i/,smallest-range-i,数组、数学,https://algo.itcharge.cn/Solutions/0900-0999/smallest-range-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0908.%20%E6%9C%80%E5%B0%8F%E5%B7%AE%E5%80%BC%20I.md,74.4%,简单,581 -0909,0900-0999,0909. 蛇梯棋,蛇梯棋,https://leetcode.cn/problems/snakes-and-ladders/,snakes-and-ladders,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0900-0999/snakes-and-ladders/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0909.%20%E8%9B%87%E6%A2%AF%E6%A3%8B.md,45.8%,中等,222 -0910,0900-0999,0910. 最小差值 II,最小差值 II,https://leetcode.cn/problems/smallest-range-ii/,smallest-range-ii,贪心、数组、数学、排序,https://algo.itcharge.cn/Solutions/0900-0999/smallest-range-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0910.%20%E6%9C%80%E5%B0%8F%E5%B7%AE%E5%80%BC%20II.md,35.6%,中等,123 -0911,0900-0999,0911. 在线选举,在线选举,https://leetcode.cn/problems/online-election/,online-election,设计、数组、哈希表、二分查找,https://algo.itcharge.cn/Solutions/0900-0999/online-election/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0911.%20%E5%9C%A8%E7%BA%BF%E9%80%89%E4%B8%BE.md,53.8%,中等,367 -0912,0900-0999,0912. 排序数组,排序数组,https://leetcode.cn/problems/sort-an-array/,sort-an-array,数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序,https://algo.itcharge.cn/Solutions/0900-0999/sort-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md,51.8%,中等,2119 -0913,0900-0999,0913. 猫和老鼠,猫和老鼠,https://leetcode.cn/problems/cat-and-mouse/,cat-and-mouse,图、拓扑排序、记忆化搜索、数学、动态规划、博弈,https://algo.itcharge.cn/Solutions/0900-0999/cat-and-mouse/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0913.%20%E7%8C%AB%E5%92%8C%E8%80%81%E9%BC%A0.md,54.0%,困难,140 -0914,0900-0999,0914. 卡牌分组,卡牌分组,https://leetcode.cn/problems/x-of-a-kind-in-a-deck-of-cards/,x-of-a-kind-in-a-deck-of-cards,数组、哈希表、数学、计数、数论,https://algo.itcharge.cn/Solutions/0900-0999/x-of-a-kind-in-a-deck-of-cards/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0914.%20%E5%8D%A1%E7%89%8C%E5%88%86%E7%BB%84.md,37.5%,简单,745 -0915,0900-0999,0915. 分割数组,分割数组,https://leetcode.cn/problems/partition-array-into-disjoint-intervals/,partition-array-into-disjoint-intervals,数组,https://algo.itcharge.cn/Solutions/0900-0999/partition-array-into-disjoint-intervals/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0915.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84.md,50.1%,中等,560 -0916,0900-0999,0916. 单词子集,单词子集,https://leetcode.cn/problems/word-subsets/,word-subsets,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0900-0999/word-subsets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0916.%20%E5%8D%95%E8%AF%8D%E5%AD%90%E9%9B%86.md,46.2%,中等,119 -0917,0900-0999,0917. 仅仅反转字母,仅仅反转字母,https://leetcode.cn/problems/reverse-only-letters/,reverse-only-letters,双指针、字符串,https://algo.itcharge.cn/Solutions/0900-0999/reverse-only-letters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0917.%20%E4%BB%85%E4%BB%85%E5%8F%8D%E8%BD%AC%E5%AD%97%E6%AF%8D.md,59.4%,简单,1067 -0918,0900-0999,0918. 环形子数组的最大和,环形子数组的最大和,https://leetcode.cn/problems/maximum-sum-circular-subarray/,maximum-sum-circular-subarray,队列、数组、分治、动态规划、单调队列,https://algo.itcharge.cn/Solutions/0900-0999/maximum-sum-circular-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0918.%20%E7%8E%AF%E5%BD%A2%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md,37.8%,中等,509 -0919,0900-0999,0919. 完全二叉树插入器,完全二叉树插入器,https://leetcode.cn/problems/complete-binary-tree-inserter/,complete-binary-tree-inserter,树、广度优先搜索、设计、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/complete-binary-tree-inserter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0919.%20%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E6%8F%92%E5%85%A5%E5%99%A8.md,66.9%,中等,414 -0920,0900-0999,0920. 播放列表的数量,播放列表的数量,https://leetcode.cn/problems/number-of-music-playlists/,number-of-music-playlists,数学、动态规划、组合数学,https://algo.itcharge.cn/Solutions/0900-0999/number-of-music-playlists/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0920.%20%E6%92%AD%E6%94%BE%E5%88%97%E8%A1%A8%E7%9A%84%E6%95%B0%E9%87%8F.md,52.2%,困难,41 -0921,0900-0999,0921. 使括号有效的最少添加,使括号有效的最少添加,https://leetcode.cn/problems/minimum-add-to-make-parentheses-valid/,minimum-add-to-make-parentheses-valid,栈、贪心、字符串,https://algo.itcharge.cn/Solutions/0900-0999/minimum-add-to-make-parentheses-valid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0921.%20%E4%BD%BF%E6%8B%AC%E5%8F%B7%E6%9C%89%E6%95%88%E7%9A%84%E6%9C%80%E5%B0%91%E6%B7%BB%E5%8A%A0.md,73.0%,中等,916 -0922,0900-0999,0922. 按奇偶排序数组 II,按奇偶排序数组 II,https://leetcode.cn/problems/sort-array-by-parity-ii/,sort-array-by-parity-ii,数组、双指针、排序,https://algo.itcharge.cn/Solutions/0900-0999/sort-array-by-parity-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0922.%20%E6%8C%89%E5%A5%87%E5%81%B6%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%20II.md,71.3%,简单,1069 -0923,0900-0999,0923. 三数之和的多种可能,三数之和的多种可能,https://leetcode.cn/problems/3sum-with-multiplicity/,3sum-with-multiplicity,数组、哈希表、双指针、计数、排序,https://algo.itcharge.cn/Solutions/0900-0999/3sum-with-multiplicity/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0923.%20%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C%E7%9A%84%E5%A4%9A%E7%A7%8D%E5%8F%AF%E8%83%BD.md,36.9%,中等,120 -0924,0900-0999,0924. 尽量减少恶意软件的传播,尽量减少恶意软件的传播,https://leetcode.cn/problems/minimize-malware-spread/,minimize-malware-spread,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/0900-0999/minimize-malware-spread/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0924.%20%E5%B0%BD%E9%87%8F%E5%87%8F%E5%B0%91%E6%81%B6%E6%84%8F%E8%BD%AF%E4%BB%B6%E7%9A%84%E4%BC%A0%E6%92%AD.md,35.8%,困难,148 -0925,0900-0999,0925. 长按键入,长按键入,https://leetcode.cn/problems/long-pressed-name/,long-pressed-name,双指针、字符串,https://algo.itcharge.cn/Solutions/0900-0999/long-pressed-name/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0925.%20%E9%95%BF%E6%8C%89%E9%94%AE%E5%85%A5.md,37.5%,简单,828 -0926,0900-0999,0926. 将字符串翻转到单调递增,将字符串翻转到单调递增,https://leetcode.cn/problems/flip-string-to-monotone-increasing/,flip-string-to-monotone-increasing,字符串、动态规划,https://algo.itcharge.cn/Solutions/0900-0999/flip-string-to-monotone-increasing/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0926.%20%E5%B0%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%BF%BB%E8%BD%AC%E5%88%B0%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E.md,63.5%,中等,518 -0927,0900-0999,0927. 三等分,三等分,https://leetcode.cn/problems/three-equal-parts/,three-equal-parts,数组、数学,https://algo.itcharge.cn/Solutions/0900-0999/three-equal-parts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0927.%20%E4%B8%89%E7%AD%89%E5%88%86.md,43.9%,困难,365 -0928,0900-0999,0928. 尽量减少恶意软件的传播 II,尽量减少恶意软件的传播 II,https://leetcode.cn/problems/minimize-malware-spread-ii/,minimize-malware-spread-ii,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/0900-0999/minimize-malware-spread-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0928.%20%E5%B0%BD%E9%87%8F%E5%87%8F%E5%B0%91%E6%81%B6%E6%84%8F%E8%BD%AF%E4%BB%B6%E7%9A%84%E4%BC%A0%E6%92%AD%20II.md,43.7%,困难,74 -0929,0900-0999,0929. 独特的电子邮件地址,独特的电子邮件地址,https://leetcode.cn/problems/unique-email-addresses/,unique-email-addresses,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0900-0999/unique-email-addresses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0929.%20%E7%8B%AC%E7%89%B9%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E5%9C%B0%E5%9D%80.md,68.6%,简单,539 -0930,0900-0999,0930. 和相同的二元子数组,和相同的二元子数组,https://leetcode.cn/problems/binary-subarrays-with-sum/,binary-subarrays-with-sum,数组、哈希表、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/0900-0999/binary-subarrays-with-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0930.%20%E5%92%8C%E7%9B%B8%E5%90%8C%E7%9A%84%E4%BA%8C%E5%85%83%E5%AD%90%E6%95%B0%E7%BB%84.md,55.1%,中等,438 -0931,0900-0999,0931. 下降路径最小和,下降路径最小和,https://leetcode.cn/problems/minimum-falling-path-sum/,minimum-falling-path-sum,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/0900-0999/minimum-falling-path-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0931.%20%E4%B8%8B%E9%99%8D%E8%B7%AF%E5%BE%84%E6%9C%80%E5%B0%8F%E5%92%8C.md,67.1%,中等,1052 -0932,0900-0999,0932. 漂亮数组,漂亮数组,https://leetcode.cn/problems/beautiful-array/,beautiful-array,数组、数学、分治,https://algo.itcharge.cn/Solutions/0900-0999/beautiful-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0932.%20%E6%BC%82%E4%BA%AE%E6%95%B0%E7%BB%84.md,65.6%,中等,130 -0933,0900-0999,0933. 最近的请求次数,最近的请求次数,https://leetcode.cn/problems/number-of-recent-calls/,number-of-recent-calls,设计、队列、数据流,https://algo.itcharge.cn/Solutions/0900-0999/number-of-recent-calls/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0933.%20%E6%9C%80%E8%BF%91%E7%9A%84%E8%AF%B7%E6%B1%82%E6%AC%A1%E6%95%B0.md,76.8%,简单,835 -0934,0900-0999,0934. 最短的桥,最短的桥,https://leetcode.cn/problems/shortest-bridge/,shortest-bridge,深度优先搜索、广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0900-0999/shortest-bridge/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0934.%20%E6%9C%80%E7%9F%AD%E7%9A%84%E6%A1%A5.md,52.4%,中等,730 -0935,0900-0999,0935. 骑士拨号器,骑士拨号器,https://leetcode.cn/problems/knight-dialer/,knight-dialer,动态规划,https://algo.itcharge.cn/Solutions/0900-0999/knight-dialer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0935.%20%E9%AA%91%E5%A3%AB%E6%8B%A8%E5%8F%B7%E5%99%A8.md,51.5%,中等,130 -0936,0900-0999,0936. 戳印序列,戳印序列,https://leetcode.cn/problems/stamping-the-sequence/,stamping-the-sequence,栈、贪心、队列、字符串,https://algo.itcharge.cn/Solutions/0900-0999/stamping-the-sequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0936.%20%E6%88%B3%E5%8D%B0%E5%BA%8F%E5%88%97.md,42.3%,困难,39 -0937,0900-0999,0937. 重新排列日志文件,重新排列日志文件,https://leetcode.cn/problems/reorder-data-in-log-files/,reorder-data-in-log-files,数组、字符串、排序,https://algo.itcharge.cn/Solutions/0900-0999/reorder-data-in-log-files/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0937.%20%E9%87%8D%E6%96%B0%E6%8E%92%E5%88%97%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6.md,63.5%,中等,504 -0938,0900-0999,0938. 二叉搜索树的范围和,二叉搜索树的范围和,https://leetcode.cn/problems/range-sum-of-bst/,range-sum-of-bst,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/range-sum-of-bst/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0938.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E8%8C%83%E5%9B%B4%E5%92%8C.md,82.1%,简单,999 -0939,0900-0999,0939. 最小面积矩形,最小面积矩形,https://leetcode.cn/problems/minimum-area-rectangle/,minimum-area-rectangle,几何、数组、哈希表、数学、排序,https://algo.itcharge.cn/Solutions/0900-0999/minimum-area-rectangle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0939.%20%E6%9C%80%E5%B0%8F%E9%9D%A2%E7%A7%AF%E7%9F%A9%E5%BD%A2.md,48.4%,中等,104 -0940,0900-0999,0940. 不同的子序列 II,不同的子序列 II,https://leetcode.cn/problems/distinct-subsequences-ii/,distinct-subsequences-ii,字符串、动态规划,https://algo.itcharge.cn/Solutions/0900-0999/distinct-subsequences-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0940.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97%20II.md,53.5%,困难,283 -0941,0900-0999,0941. 有效的山脉数组,有效的山脉数组,https://leetcode.cn/problems/valid-mountain-array/,valid-mountain-array,数组,https://algo.itcharge.cn/Solutions/0900-0999/valid-mountain-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0941.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%B1%B1%E8%84%89%E6%95%B0%E7%BB%84.md,39.5%,简单,805 -0942,0900-0999,0942. 增减字符串匹配,增减字符串匹配,https://leetcode.cn/problems/di-string-match/,di-string-match,贪心、数组、双指针、字符串,https://algo.itcharge.cn/Solutions/0900-0999/di-string-match/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0942.%20%E5%A2%9E%E5%87%8F%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D.md,77.2%,简单,794 -0943,0900-0999,0943. 最短超级串,最短超级串,https://leetcode.cn/problems/find-the-shortest-superstring/,find-the-shortest-superstring,位运算、数组、字符串、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/0900-0999/find-the-shortest-superstring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0943.%20%E6%9C%80%E7%9F%AD%E8%B6%85%E7%BA%A7%E4%B8%B2.md,47.2%,困难,76 -0944,0900-0999,0944. 删列造序,删列造序,https://leetcode.cn/problems/delete-columns-to-make-sorted/,delete-columns-to-make-sorted,数组、字符串,https://algo.itcharge.cn/Solutions/0900-0999/delete-columns-to-make-sorted/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0944.%20%E5%88%A0%E5%88%97%E9%80%A0%E5%BA%8F.md,69.0%,简单,504 -0945,0900-0999,0945. 使数组唯一的最小增量,使数组唯一的最小增量,https://leetcode.cn/problems/minimum-increment-to-make-array-unique/,minimum-increment-to-make-array-unique,贪心、数组、计数、排序,https://algo.itcharge.cn/Solutions/0900-0999/minimum-increment-to-make-array-unique/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0945.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E5%94%AF%E4%B8%80%E7%9A%84%E6%9C%80%E5%B0%8F%E5%A2%9E%E9%87%8F.md,47.9%,中等,619 -0946,0900-0999,0946. 验证栈序列,验证栈序列,https://leetcode.cn/problems/validate-stack-sequences/,validate-stack-sequences,栈、数组、模拟,https://algo.itcharge.cn/Solutions/0900-0999/validate-stack-sequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0946.%20%E9%AA%8C%E8%AF%81%E6%A0%88%E5%BA%8F%E5%88%97.md,66.6%,中等,851 -0947,0900-0999,0947. 移除最多的同行或同列石头,移除最多的同行或同列石头,https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/,most-stones-removed-with-same-row-or-column,深度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/0900-0999/most-stones-removed-with-same-row-or-column/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0947.%20%E7%A7%BB%E9%99%A4%E6%9C%80%E5%A4%9A%E7%9A%84%E5%90%8C%E8%A1%8C%E6%88%96%E5%90%8C%E5%88%97%E7%9F%B3%E5%A4%B4.md,61.6%,中等,426 -0948,0900-0999,0948. 令牌放置,令牌放置,https://leetcode.cn/problems/bag-of-tokens/,bag-of-tokens,贪心、数组、双指针、排序,https://algo.itcharge.cn/Solutions/0900-0999/bag-of-tokens/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0948.%20%E4%BB%A4%E7%89%8C%E6%94%BE%E7%BD%AE.md,40.5%,中等,157 -0949,0900-0999,0949. 给定数字能组成的最大时间,给定数字能组成的最大时间,https://leetcode.cn/problems/largest-time-for-given-digits/,largest-time-for-given-digits,字符串、枚举,https://algo.itcharge.cn/Solutions/0900-0999/largest-time-for-given-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0949.%20%E7%BB%99%E5%AE%9A%E6%95%B0%E5%AD%97%E8%83%BD%E7%BB%84%E6%88%90%E7%9A%84%E6%9C%80%E5%A4%A7%E6%97%B6%E9%97%B4.md,37.9%,中等,184 -0950,0900-0999,0950. 按递增顺序显示卡牌,按递增顺序显示卡牌,https://leetcode.cn/problems/reveal-cards-in-increasing-order/,reveal-cards-in-increasing-order,队列、数组、排序、模拟,https://algo.itcharge.cn/Solutions/0900-0999/reveal-cards-in-increasing-order/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0950.%20%E6%8C%89%E9%80%92%E5%A2%9E%E9%A1%BA%E5%BA%8F%E6%98%BE%E7%A4%BA%E5%8D%A1%E7%89%8C.md,78.6%,中等,233 -0951,0900-0999,0951. 翻转等价二叉树,翻转等价二叉树,https://leetcode.cn/problems/flip-equivalent-binary-trees/,flip-equivalent-binary-trees,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/flip-equivalent-binary-trees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0951.%20%E7%BF%BB%E8%BD%AC%E7%AD%89%E4%BB%B7%E4%BA%8C%E5%8F%89%E6%A0%91.md,66.8%,中等,253 -0952,0900-0999,0952. 按公因数计算最大组件大小,按公因数计算最大组件大小,https://leetcode.cn/problems/largest-component-size-by-common-factor/,largest-component-size-by-common-factor,并查集、数组、数学、数论,https://algo.itcharge.cn/Solutions/0900-0999/largest-component-size-by-common-factor/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0952.%20%E6%8C%89%E5%85%AC%E5%9B%A0%E6%95%B0%E8%AE%A1%E7%AE%97%E6%9C%80%E5%A4%A7%E7%BB%84%E4%BB%B6%E5%A4%A7%E5%B0%8F.md,51.1%,困难,184 -0953,0900-0999,0953. 验证外星语词典,验证外星语词典,https://leetcode.cn/problems/verifying-an-alien-dictionary/,verifying-an-alien-dictionary,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0900-0999/verifying-an-alien-dictionary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0953.%20%E9%AA%8C%E8%AF%81%E5%A4%96%E6%98%9F%E8%AF%AD%E8%AF%8D%E5%85%B8.md,57.7%,简单,699 -0954,0900-0999,0954. 二倍数对数组,二倍数对数组,https://leetcode.cn/problems/array-of-doubled-pairs/,array-of-doubled-pairs,贪心、数组、哈希表、排序,https://algo.itcharge.cn/Solutions/0900-0999/array-of-doubled-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0954.%20%E4%BA%8C%E5%80%8D%E6%95%B0%E5%AF%B9%E6%95%B0%E7%BB%84.md,39.1%,中等,478 -0955,0900-0999,0955. 删列造序 II,删列造序 II,https://leetcode.cn/problems/delete-columns-to-make-sorted-ii/,delete-columns-to-make-sorted-ii,贪心、数组、字符串,https://algo.itcharge.cn/Solutions/0900-0999/delete-columns-to-make-sorted-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0955.%20%E5%88%A0%E5%88%97%E9%80%A0%E5%BA%8F%20II.md,35.5%,中等,90 -0956,0900-0999,0956. 最高的广告牌,最高的广告牌,https://leetcode.cn/problems/tallest-billboard/,tallest-billboard,数组、动态规划,https://algo.itcharge.cn/Solutions/0900-0999/tallest-billboard/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0956.%20%E6%9C%80%E9%AB%98%E7%9A%84%E5%B9%BF%E5%91%8A%E7%89%8C.md,46.4%,困难,78 -0957,0900-0999,0957. N 天后的牢房,N 天后的牢房,https://leetcode.cn/problems/prison-cells-after-n-days/,prison-cells-after-n-days,位运算、数组、哈希表、数学,https://algo.itcharge.cn/Solutions/0900-0999/prison-cells-after-n-days/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0957.%20N%20%E5%A4%A9%E5%90%8E%E7%9A%84%E7%89%A2%E6%88%BF.md,37.0%,中等,189 -0958,0900-0999,0958. 二叉树的完全性检验,二叉树的完全性检验,https://leetcode.cn/problems/check-completeness-of-a-binary-tree/,check-completeness-of-a-binary-tree,树、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/check-completeness-of-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0958.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%8C%E5%85%A8%E6%80%A7%E6%A3%80%E9%AA%8C.md,54.5%,中等,459 -0959,0900-0999,0959. 由斜杠划分区域,由斜杠划分区域,https://leetcode.cn/problems/regions-cut-by-slashes/,regions-cut-by-slashes,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/0900-0999/regions-cut-by-slashes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0959.%20%E7%94%B1%E6%96%9C%E6%9D%A0%E5%88%92%E5%88%86%E5%8C%BA%E5%9F%9F.md,74.3%,中等,354 -0960,0900-0999,0960. 删列造序 III,删列造序 III,https://leetcode.cn/problems/delete-columns-to-make-sorted-iii/,delete-columns-to-make-sorted-iii,数组、字符串、动态规划,https://algo.itcharge.cn/Solutions/0900-0999/delete-columns-to-make-sorted-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0960.%20%E5%88%A0%E5%88%97%E9%80%A0%E5%BA%8F%20III.md,59.0%,困难,61 -0961,0900-0999,0961. 在长度 2N 的数组中找出重复 N 次的元素,在长度 2N 的数组中找出重复 N 次的元素,https://leetcode.cn/problems/n-repeated-element-in-size-2n-array/,n-repeated-element-in-size-2n-array,数组、哈希表,https://algo.itcharge.cn/Solutions/0900-0999/n-repeated-element-in-size-2n-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0961.%20%E5%9C%A8%E9%95%BF%E5%BA%A6%202N%20%E7%9A%84%E6%95%B0%E7%BB%84%E4%B8%AD%E6%89%BE%E5%87%BA%E9%87%8D%E5%A4%8D%20N%20%E6%AC%A1%E7%9A%84%E5%85%83%E7%B4%A0.md,70.2%,简单,726 -0962,0900-0999,0962. 最大宽度坡,最大宽度坡,https://leetcode.cn/problems/maximum-width-ramp/,maximum-width-ramp,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/0900-0999/maximum-width-ramp/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0962.%20%E6%9C%80%E5%A4%A7%E5%AE%BD%E5%BA%A6%E5%9D%A1.md,47.4%,中等,227 -0963,0900-0999,0963. 最小面积矩形 II,最小面积矩形 II,https://leetcode.cn/problems/minimum-area-rectangle-ii/,minimum-area-rectangle-ii,几何、数组、数学,https://algo.itcharge.cn/Solutions/0900-0999/minimum-area-rectangle-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0963.%20%E6%9C%80%E5%B0%8F%E9%9D%A2%E7%A7%AF%E7%9F%A9%E5%BD%A2%20II.md,51.1%,中等,52 -0964,0900-0999,0964. 表示数字的最少运算符,表示数字的最少运算符,https://leetcode.cn/problems/least-operators-to-express-number/,least-operators-to-express-number,记忆化搜索、数学、动态规划,https://algo.itcharge.cn/Solutions/0900-0999/least-operators-to-express-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0964.%20%E8%A1%A8%E7%A4%BA%E6%95%B0%E5%AD%97%E7%9A%84%E6%9C%80%E5%B0%91%E8%BF%90%E7%AE%97%E7%AC%A6.md,46.6%,困难,40 -0965,0900-0999,0965. 单值二叉树,单值二叉树,https://leetcode.cn/problems/univalued-binary-tree/,univalued-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/univalued-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0965.%20%E5%8D%95%E5%80%BC%E4%BA%8C%E5%8F%89%E6%A0%91.md,70.7%,简单,881 -0966,0900-0999,0966. 元音拼写检查器,元音拼写检查器,https://leetcode.cn/problems/vowel-spellchecker/,vowel-spellchecker,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/0900-0999/vowel-spellchecker/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0966.%20%E5%85%83%E9%9F%B3%E6%8B%BC%E5%86%99%E6%A3%80%E6%9F%A5%E5%99%A8.md,43.0%,中等,69 -0967,0900-0999,0967. 连续差相同的数字,连续差相同的数字,https://leetcode.cn/problems/numbers-with-same-consecutive-differences/,numbers-with-same-consecutive-differences,广度优先搜索、回溯,https://algo.itcharge.cn/Solutions/0900-0999/numbers-with-same-consecutive-differences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0967.%20%E8%BF%9E%E7%BB%AD%E5%B7%AE%E7%9B%B8%E5%90%8C%E7%9A%84%E6%95%B0%E5%AD%97.md,50.5%,中等,237 -0968,0900-0999,0968. 监控二叉树,监控二叉树,https://leetcode.cn/problems/binary-tree-cameras/,binary-tree-cameras,树、深度优先搜索、动态规划、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/binary-tree-cameras/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0968.%20%E7%9B%91%E6%8E%A7%E4%BA%8C%E5%8F%89%E6%A0%91.md,52.3%,困难,618 -0969,0900-0999,0969. 煎饼排序,煎饼排序,https://leetcode.cn/problems/pancake-sorting/,pancake-sorting,贪心、数组、双指针、排序,https://algo.itcharge.cn/Solutions/0900-0999/pancake-sorting/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0969.%20%E7%85%8E%E9%A5%BC%E6%8E%92%E5%BA%8F.md,67.5%,中等,684 -0970,0900-0999,0970. 强整数,强整数,https://leetcode.cn/problems/powerful-integers/,powerful-integers,哈希表、数学,https://algo.itcharge.cn/Solutions/0900-0999/powerful-integers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0970.%20%E5%BC%BA%E6%95%B4%E6%95%B0.md,47.0%,中等,307 -0971,0900-0999,0971. 翻转二叉树以匹配先序遍历,翻转二叉树以匹配先序遍历,https://leetcode.cn/problems/flip-binary-tree-to-match-preorder-traversal/,flip-binary-tree-to-match-preorder-traversal,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/flip-binary-tree-to-match-preorder-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0971.%20%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91%E4%BB%A5%E5%8C%B9%E9%85%8D%E5%85%88%E5%BA%8F%E9%81%8D%E5%8E%86.md,45.5%,中等,164 -0972,0900-0999,0972. 相等的有理数,相等的有理数,https://leetcode.cn/problems/equal-rational-numbers/,equal-rational-numbers,数学、字符串,https://algo.itcharge.cn/Solutions/0900-0999/equal-rational-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0972.%20%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%89%E7%90%86%E6%95%B0.md,41.5%,困难,53 -0973,0900-0999,0973. 最接近原点的 K 个点,最接近原点的 K 个点,https://leetcode.cn/problems/k-closest-points-to-origin/,k-closest-points-to-origin,几何、数组、数学、分治、快速选择、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/0900-0999/k-closest-points-to-origin/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0973.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E5%8E%9F%E7%82%B9%E7%9A%84%20K%20%E4%B8%AA%E7%82%B9.md,65.2%,中等,823 -0974,0900-0999,0974. 和可被 K 整除的子数组,和可被 K 整除的子数组,https://leetcode.cn/problems/subarray-sums-divisible-by-k/,subarray-sums-divisible-by-k,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/0900-0999/subarray-sums-divisible-by-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0974.%20%E5%92%8C%E5%8F%AF%E8%A2%AB%20K%20%E6%95%B4%E9%99%A4%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,47.9%,中等,540 -0975,0900-0999,0975. 奇偶跳,奇偶跳,https://leetcode.cn/problems/odd-even-jump/,odd-even-jump,栈、数组、动态规划、有序集合、单调栈,https://algo.itcharge.cn/Solutions/0900-0999/odd-even-jump/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0975.%20%E5%A5%87%E5%81%B6%E8%B7%B3.md,47.8%,困难,90 -0976,0900-0999,0976. 三角形的最大周长,三角形的最大周长,https://leetcode.cn/problems/largest-perimeter-triangle/,largest-perimeter-triangle,贪心、数组、数学、排序,https://algo.itcharge.cn/Solutions/0900-0999/largest-perimeter-triangle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0976.%20%E4%B8%89%E8%A7%92%E5%BD%A2%E7%9A%84%E6%9C%80%E5%A4%A7%E5%91%A8%E9%95%BF.md,57.5%,简单,842 -0977,0900-0999,0977. 有序数组的平方,有序数组的平方,https://leetcode.cn/problems/squares-of-a-sorted-array/,squares-of-a-sorted-array,数组、双指针、排序,https://algo.itcharge.cn/Solutions/0900-0999/squares-of-a-sorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0977.%20%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.md,68.0%,简单,3385 -0978,0900-0999,0978. 最长湍流子数组,最长湍流子数组,https://leetcode.cn/problems/longest-turbulent-subarray/,longest-turbulent-subarray,数组、动态规划、滑动窗口,https://algo.itcharge.cn/Solutions/0900-0999/longest-turbulent-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0978.%20%E6%9C%80%E9%95%BF%E6%B9%8D%E6%B5%81%E5%AD%90%E6%95%B0%E7%BB%84.md,47.5%,中等,690 -0979,0900-0999,0979. 在二叉树中分配硬币,在二叉树中分配硬币,https://leetcode.cn/problems/distribute-coins-in-binary-tree/,distribute-coins-in-binary-tree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/distribute-coins-in-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0979.%20%E5%9C%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E5%88%86%E9%85%8D%E7%A1%AC%E5%B8%81.md,72.4%,中等,204 -0980,0900-0999,0980. 不同路径 III,不同路径 III,https://leetcode.cn/problems/unique-paths-iii/,unique-paths-iii,位运算、数组、回溯、矩阵,https://algo.itcharge.cn/Solutions/0900-0999/unique-paths-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0980.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84%20III.md,74.1%,困难,307 -0981,0900-0999,0981. 基于时间的键值存储,基于时间的键值存储,https://leetcode.cn/problems/time-based-key-value-store/,time-based-key-value-store,设计、哈希表、字符串、二分查找,https://algo.itcharge.cn/Solutions/0900-0999/time-based-key-value-store/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0981.%20%E5%9F%BA%E4%BA%8E%E6%97%B6%E9%97%B4%E7%9A%84%E9%94%AE%E5%80%BC%E5%AD%98%E5%82%A8.md,52.9%,中等,388 -0982,0900-0999,0982. 按位与为零的三元组,按位与为零的三元组,https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/,triples-with-bitwise-and-equal-to-zero,位运算、数组、哈希表,https://algo.itcharge.cn/Solutions/0900-0999/triples-with-bitwise-and-equal-to-zero/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0982.%20%E6%8C%89%E4%BD%8D%E4%B8%8E%E4%B8%BA%E9%9B%B6%E7%9A%84%E4%B8%89%E5%85%83%E7%BB%84.md,67.3%,困难,151 -0983,0900-0999,0983. 最低票价,最低票价,https://leetcode.cn/problems/minimum-cost-for-tickets/,minimum-cost-for-tickets,数组、动态规划,https://algo.itcharge.cn/Solutions/0900-0999/minimum-cost-for-tickets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0983.%20%E6%9C%80%E4%BD%8E%E7%A5%A8%E4%BB%B7.md,63.5%,中等,545 -0984,0900-0999,0984. 不含 AAA 或 BBB 的字符串,不含 AAA 或 BBB 的字符串,https://leetcode.cn/problems/string-without-aaa-or-bbb/,string-without-aaa-or-bbb,贪心、字符串,https://algo.itcharge.cn/Solutions/0900-0999/string-without-aaa-or-bbb/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0984.%20%E4%B8%8D%E5%90%AB%20AAA%20%E6%88%96%20BBB%20%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,43.4%,中等,217 -0985,0900-0999,0985. 查询后的偶数和,查询后的偶数和,https://leetcode.cn/problems/sum-of-even-numbers-after-queries/,sum-of-even-numbers-after-queries,数组、模拟,https://algo.itcharge.cn/Solutions/0900-0999/sum-of-even-numbers-after-queries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0985.%20%E6%9F%A5%E8%AF%A2%E5%90%8E%E7%9A%84%E5%81%B6%E6%95%B0%E5%92%8C.md,61.1%,中等,225 -0986,0900-0999,0986. 区间列表的交集,区间列表的交集,https://leetcode.cn/problems/interval-list-intersections/,interval-list-intersections,数组、双指针,https://algo.itcharge.cn/Solutions/0900-0999/interval-list-intersections/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0986.%20%E5%8C%BA%E9%97%B4%E5%88%97%E8%A1%A8%E7%9A%84%E4%BA%A4%E9%9B%86.md,68.5%,中等,590 -0987,0900-0999,0987. 二叉树的垂序遍历,二叉树的垂序遍历,https://leetcode.cn/problems/vertical-order-traversal-of-a-binary-tree/,vertical-order-traversal-of-a-binary-tree,树、深度优先搜索、广度优先搜索、哈希表、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/vertical-order-traversal-of-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0987.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%9E%82%E5%BA%8F%E9%81%8D%E5%8E%86.md,53.8%,困难,513 -0988,0900-0999,0988. 从叶结点开始的最小字符串,从叶结点开始的最小字符串,https://leetcode.cn/problems/smallest-string-starting-from-leaf/,smallest-string-starting-from-leaf,树、深度优先搜索、字符串、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/smallest-string-starting-from-leaf/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0988.%20%E4%BB%8E%E5%8F%B6%E7%BB%93%E7%82%B9%E5%BC%80%E5%A7%8B%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%97%E7%AC%A6%E4%B8%B2.md,51.1%,中等,193 -0989,0900-0999,0989. 数组形式的整数加法,数组形式的整数加法,https://leetcode.cn/problems/add-to-array-form-of-integer/,add-to-array-form-of-integer,数组、数学,https://algo.itcharge.cn/Solutions/0900-0999/add-to-array-form-of-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0989.%20%E6%95%B0%E7%BB%84%E5%BD%A2%E5%BC%8F%E7%9A%84%E6%95%B4%E6%95%B0%E5%8A%A0%E6%B3%95.md,46.0%,简单,787 -0990,0900-0999,0990. 等式方程的可满足性,等式方程的可满足性,https://leetcode.cn/problems/satisfiability-of-equality-equations/,satisfiability-of-equality-equations,并查集、图、数组、字符串,https://algo.itcharge.cn/Solutions/0900-0999/satisfiability-of-equality-equations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0990.%20%E7%AD%89%E5%BC%8F%E6%96%B9%E7%A8%8B%E7%9A%84%E5%8F%AF%E6%BB%A1%E8%B6%B3%E6%80%A7.md,53.4%,中等,898 -0991,0900-0999,0991. 坏了的计算器,坏了的计算器,https://leetcode.cn/problems/broken-calculator/,broken-calculator,贪心、数学,https://algo.itcharge.cn/Solutions/0900-0999/broken-calculator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0991.%20%E5%9D%8F%E4%BA%86%E7%9A%84%E8%AE%A1%E7%AE%97%E5%99%A8.md,52.3%,中等,145 -0992,0900-0999,0992. K 个不同整数的子数组,K 个不同整数的子数组,https://leetcode.cn/problems/subarrays-with-k-different-integers/,subarrays-with-k-different-integers,数组、哈希表、计数、滑动窗口,https://algo.itcharge.cn/Solutions/0900-0999/subarrays-with-k-different-integers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0992.%20K%20%E4%B8%AA%E4%B8%8D%E5%90%8C%E6%95%B4%E6%95%B0%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,47.5%,困难,336 -0993,0900-0999,0993. 二叉树的堂兄弟节点,二叉树的堂兄弟节点,https://leetcode.cn/problems/cousins-in-binary-tree/,cousins-in-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/cousins-in-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0993.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%A0%82%E5%85%84%E5%BC%9F%E8%8A%82%E7%82%B9.md,55.8%,简单,1010 -0994,0900-0999,0994. 腐烂的橘子,腐烂的橘子,https://leetcode.cn/problems/rotting-oranges/,rotting-oranges,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/0900-0999/rotting-oranges/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0994.%20%E8%85%90%E7%83%82%E7%9A%84%E6%A9%98%E5%AD%90.md,51.0%,中等,2107 -0995,0900-0999,0995. K 连续位的最小翻转次数,K 连续位的最小翻转次数,https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/,minimum-number-of-k-consecutive-bit-flips,位运算、队列、数组、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0995.%20K%20%E8%BF%9E%E7%BB%AD%E4%BD%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BF%BB%E8%BD%AC%E6%AC%A1%E6%95%B0.md,53.9%,困难,287 -0996,0900-0999,0996. 正方形数组的数目,正方形数组的数目,https://leetcode.cn/problems/number-of-squareful-arrays/,number-of-squareful-arrays,位运算、数组、数学、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/0900-0999/number-of-squareful-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0996.%20%E6%AD%A3%E6%96%B9%E5%BD%A2%E6%95%B0%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,50.4%,困难,138 -0997,0900-0999,0997. 找到小镇的法官,找到小镇的法官,https://leetcode.cn/problems/find-the-town-judge/,find-the-town-judge,图、数组、哈希表,https://algo.itcharge.cn/Solutions/0900-0999/find-the-town-judge/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0997.%20%E6%89%BE%E5%88%B0%E5%B0%8F%E9%95%87%E7%9A%84%E6%B3%95%E5%AE%98.md,51.9%,简单,863 -0998,0900-0999,0998. 最大二叉树 II,最大二叉树 II,https://leetcode.cn/problems/maximum-binary-tree-ii/,maximum-binary-tree-ii,树、二叉树,https://algo.itcharge.cn/Solutions/0900-0999/maximum-binary-tree-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0998.%20%E6%9C%80%E5%A4%A7%E4%BA%8C%E5%8F%89%E6%A0%91%20II.md,68.7%,中等,437 -0999,0900-0999,0999. 可以被一步捕获的棋子数,可以被一步捕获的棋子数,https://leetcode.cn/problems/available-captures-for-rook/,available-captures-for-rook,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/0900-0999/available-captures-for-rook/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0999.%20%E5%8F%AF%E4%BB%A5%E8%A2%AB%E4%B8%80%E6%AD%A5%E6%8D%95%E8%8E%B7%E7%9A%84%E6%A3%8B%E5%AD%90%E6%95%B0.md,69.3%,简单,639 -1000,1000-1099,1000. 合并石头的最低成本,合并石头的最低成本,https://leetcode.cn/problems/minimum-cost-to-merge-stones/,minimum-cost-to-merge-stones,数组、动态规划、前缀和,https://algo.itcharge.cn/Solutions/1000-1099/minimum-cost-to-merge-stones/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1000.%20%E5%90%88%E5%B9%B6%E7%9F%B3%E5%A4%B4%E7%9A%84%E6%9C%80%E4%BD%8E%E6%88%90%E6%9C%AC.md,53.6%,困难,110 -1001,1000-1099,1001. 网格照明,网格照明,https://leetcode.cn/problems/grid-illumination/,grid-illumination,数组、哈希表,https://algo.itcharge.cn/Solutions/1000-1099/grid-illumination/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1001.%20%E7%BD%91%E6%A0%BC%E7%85%A7%E6%98%8E.md,44.9%,困难,283 -1002,1000-1099,1002. 查找共用字符,查找共用字符,https://leetcode.cn/problems/find-common-characters/,find-common-characters,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/1000-1099/find-common-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1002.%20%E6%9F%A5%E6%89%BE%E5%85%B1%E7%94%A8%E5%AD%97%E7%AC%A6.md,70.6%,简单,842 -1003,1000-1099,1003. 检查替换后的词是否有效,检查替换后的词是否有效,https://leetcode.cn/problems/check-if-word-is-valid-after-substitutions/,check-if-word-is-valid-after-substitutions,栈、字符串,https://algo.itcharge.cn/Solutions/1000-1099/check-if-word-is-valid-after-substitutions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1003.%20%E6%A3%80%E6%9F%A5%E6%9B%BF%E6%8D%A2%E5%90%8E%E7%9A%84%E8%AF%8D%E6%98%AF%E5%90%A6%E6%9C%89%E6%95%88.md,63.6%,中等,442 -1004,1000-1099,1004. 最大连续1的个数 III,最大连续1的个数 III,https://leetcode.cn/problems/max-consecutive-ones-iii/,max-consecutive-ones-iii,数组、二分查找、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/1000-1099/max-consecutive-ones-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1004.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20III.md,59.5%,中等,1101 -1005,1000-1099,1005. K 次取反后最大化的数组和,K 次取反后最大化的数组和,https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/,maximize-sum-of-array-after-k-negations,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1000-1099/maximize-sum-of-array-after-k-negations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1005.%20K%20%E6%AC%A1%E5%8F%96%E5%8F%8D%E5%90%8E%E6%9C%80%E5%A4%A7%E5%8C%96%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.md,50.8%,简单,1493 -1006,1000-1099,1006. 笨阶乘,笨阶乘,https://leetcode.cn/problems/clumsy-factorial/,clumsy-factorial,栈、数学、模拟,https://algo.itcharge.cn/Solutions/1000-1099/clumsy-factorial/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1006.%20%E7%AC%A8%E9%98%B6%E4%B9%98.md,62.7%,中等,667 -1007,1000-1099,1007. 行相等的最少多米诺旋转,行相等的最少多米诺旋转,https://leetcode.cn/problems/minimum-domino-rotations-for-equal-row/,minimum-domino-rotations-for-equal-row,贪心、数组,https://algo.itcharge.cn/Solutions/1000-1099/minimum-domino-rotations-for-equal-row/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1007.%20%E8%A1%8C%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%80%E5%B0%91%E5%A4%9A%E7%B1%B3%E8%AF%BA%E6%97%8B%E8%BD%AC.md,47.8%,中等,125 -1008,1000-1099,1008. 前序遍历构造二叉搜索树,前序遍历构造二叉搜索树,https://leetcode.cn/problems/construct-binary-search-tree-from-preorder-traversal/,construct-binary-search-tree-from-preorder-traversal,栈、树、二叉搜索树、数组、二叉树、单调栈,https://algo.itcharge.cn/Solutions/1000-1099/construct-binary-search-tree-from-preorder-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1008.%20%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,71.8%,中等,392 -1009,1000-1099,1009. 十进制整数的反码,十进制整数的反码,https://leetcode.cn/problems/complement-of-base-10-integer/,complement-of-base-10-integer,位运算,https://algo.itcharge.cn/Solutions/1000-1099/complement-of-base-10-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1009.%20%E5%8D%81%E8%BF%9B%E5%88%B6%E6%95%B4%E6%95%B0%E7%9A%84%E5%8F%8D%E7%A0%81.md,58.6%,简单,340 -1010,1000-1099,1010. 总持续时间可被 60 整除的歌曲,总持续时间可被 60 整除的歌曲,https://leetcode.cn/problems/pairs-of-songs-with-total-durations-divisible-by-60/,pairs-of-songs-with-total-durations-divisible-by-60,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/1000-1099/pairs-of-songs-with-total-durations-divisible-by-60/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1010.%20%E6%80%BB%E6%8C%81%E7%BB%AD%E6%97%B6%E9%97%B4%E5%8F%AF%E8%A2%AB%2060%20%E6%95%B4%E9%99%A4%E7%9A%84%E6%AD%8C%E6%9B%B2.md,49.6%,中等,487 -1011,1000-1099,1011. 在 D 天内送达包裹的能力,在 D 天内送达包裹的能力,https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/,capacity-to-ship-packages-within-d-days,数组、二分查找,https://algo.itcharge.cn/Solutions/1000-1099/capacity-to-ship-packages-within-d-days/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1011.%20%E5%9C%A8%20D%20%E5%A4%A9%E5%86%85%E9%80%81%E8%BE%BE%E5%8C%85%E8%A3%B9%E7%9A%84%E8%83%BD%E5%8A%9B.md,62.0%,中等,857 -1012,1000-1099,1012. 至少有 1 位重复的数字,至少有 1 位重复的数字,https://leetcode.cn/problems/numbers-with-repeated-digits/,numbers-with-repeated-digits,数学、动态规划,https://algo.itcharge.cn/Solutions/1000-1099/numbers-with-repeated-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1012.%20%E8%87%B3%E5%B0%91%E6%9C%89%201%20%E4%BD%8D%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97.md,52.4%,困难,189 -1013,1000-1099,1013. 将数组分成和相等的三个部分,将数组分成和相等的三个部分,https://leetcode.cn/problems/partition-array-into-three-parts-with-equal-sum/,partition-array-into-three-parts-with-equal-sum,贪心、数组,https://algo.itcharge.cn/Solutions/1000-1099/partition-array-into-three-parts-with-equal-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1013.%20%E5%B0%86%E6%95%B0%E7%BB%84%E5%88%86%E6%88%90%E5%92%8C%E7%9B%B8%E7%AD%89%E7%9A%84%E4%B8%89%E4%B8%AA%E9%83%A8%E5%88%86.md,38.5%,简单,1048 -1014,1000-1099,1014. 最佳观光组合,最佳观光组合,https://leetcode.cn/problems/best-sightseeing-pair/,best-sightseeing-pair,数组、动态规划,https://algo.itcharge.cn/Solutions/1000-1099/best-sightseeing-pair/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1014.%20%E6%9C%80%E4%BD%B3%E8%A7%82%E5%85%89%E7%BB%84%E5%90%88.md,57.1%,中等,719 -1015,1000-1099,1015. 可被 K 整除的最小整数,可被 K 整除的最小整数,https://leetcode.cn/problems/smallest-integer-divisible-by-k/,smallest-integer-divisible-by-k,哈希表、数学,https://algo.itcharge.cn/Solutions/1000-1099/smallest-integer-divisible-by-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1015.%20%E5%8F%AF%E8%A2%AB%20K%20%E6%95%B4%E9%99%A4%E7%9A%84%E6%9C%80%E5%B0%8F%E6%95%B4%E6%95%B0.md,46.6%,中等,170 -1016,1000-1099,1016. 子串能表示从 1 到 N 数字的二进制串,子串能表示从 1 到 N 数字的二进制串,https://leetcode.cn/problems/binary-string-with-substrings-representing-1-to-n/,binary-string-with-substrings-representing-1-to-n,字符串,https://algo.itcharge.cn/Solutions/1000-1099/binary-string-with-substrings-representing-1-to-n/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1016.%20%E5%AD%90%E4%B8%B2%E8%83%BD%E8%A1%A8%E7%A4%BA%E4%BB%8E%201%20%E5%88%B0%20N%20%E6%95%B0%E5%AD%97%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B8%B2.md,63.3%,中等,268 -1017,1000-1099,1017. 负二进制转换,负二进制转换,https://leetcode.cn/problems/convert-to-base-2/,convert-to-base-2,数学,https://algo.itcharge.cn/Solutions/1000-1099/convert-to-base-2/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1017.%20%E8%B4%9F%E4%BA%8C%E8%BF%9B%E5%88%B6%E8%BD%AC%E6%8D%A2.md,65.0%,中等,255 -1018,1000-1099,1018. 可被 5 整除的二进制前缀,可被 5 整除的二进制前缀,https://leetcode.cn/problems/binary-prefix-divisible-by-5/,binary-prefix-divisible-by-5,数组,https://algo.itcharge.cn/Solutions/1000-1099/binary-prefix-divisible-by-5/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1018.%20%E5%8F%AF%E8%A2%AB%205%20%E6%95%B4%E9%99%A4%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%89%8D%E7%BC%80.md,50.6%,简单,450 -1019,1000-1099,1019. 链表中的下一个更大节点,链表中的下一个更大节点,https://leetcode.cn/problems/next-greater-node-in-linked-list/,next-greater-node-in-linked-list,栈、数组、链表、单调栈,https://algo.itcharge.cn/Solutions/1000-1099/next-greater-node-in-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1019.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E8%8A%82%E7%82%B9.md,64.2%,中等,654 -1020,1000-1099,1020. 飞地的数量,飞地的数量,https://leetcode.cn/problems/number-of-enclaves/,number-of-enclaves,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/1000-1099/number-of-enclaves/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1020.%20%E9%A3%9E%E5%9C%B0%E7%9A%84%E6%95%B0%E9%87%8F.md,62.3%,中等,836 -1021,1000-1099,1021. 删除最外层的括号,删除最外层的括号,https://leetcode.cn/problems/remove-outermost-parentheses/,remove-outermost-parentheses,栈、字符串,https://algo.itcharge.cn/Solutions/1000-1099/remove-outermost-parentheses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1021.%20%E5%88%A0%E9%99%A4%E6%9C%80%E5%A4%96%E5%B1%82%E7%9A%84%E6%8B%AC%E5%8F%B7.md,81.4%,简单,1078 -1022,1000-1099,1022. 从根到叶的二进制数之和,从根到叶的二进制数之和,https://leetcode.cn/problems/sum-of-root-to-leaf-binary-numbers/,sum-of-root-to-leaf-binary-numbers,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1000-1099/sum-of-root-to-leaf-binary-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1022.%20%E4%BB%8E%E6%A0%B9%E5%88%B0%E5%8F%B6%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%95%B0%E4%B9%8B%E5%92%8C.md,74.8%,简单,654 -1023,1000-1099,1023. 驼峰式匹配,驼峰式匹配,https://leetcode.cn/problems/camelcase-matching/,camelcase-matching,字典树、双指针、字符串、字符串匹配,https://algo.itcharge.cn/Solutions/1000-1099/camelcase-matching/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1023.%20%E9%A9%BC%E5%B3%B0%E5%BC%8F%E5%8C%B9%E9%85%8D.md,64.6%,中等,475 -1024,1000-1099,1024. 视频拼接,视频拼接,https://leetcode.cn/problems/video-stitching/,video-stitching,贪心、数组、动态规划,https://algo.itcharge.cn/Solutions/1000-1099/video-stitching/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1024.%20%E8%A7%86%E9%A2%91%E6%8B%BC%E6%8E%A5.md,53.1%,中等,547 -1025,1000-1099,1025. 除数博弈,除数博弈,https://leetcode.cn/problems/divisor-game/,divisor-game,脑筋急转弯、数学、动态规划、博弈,https://algo.itcharge.cn/Solutions/1000-1099/divisor-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1025.%20%E9%99%A4%E6%95%B0%E5%8D%9A%E5%BC%88.md,70.7%,简单,796 -1026,1000-1099,1026. 节点与其祖先之间的最大差值,节点与其祖先之间的最大差值,https://leetcode.cn/problems/maximum-difference-between-node-and-ancestor/,maximum-difference-between-node-and-ancestor,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1000-1099/maximum-difference-between-node-and-ancestor/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1026.%20%E8%8A%82%E7%82%B9%E4%B8%8E%E5%85%B6%E7%A5%96%E5%85%88%E4%B9%8B%E9%97%B4%E7%9A%84%E6%9C%80%E5%A4%A7%E5%B7%AE%E5%80%BC.md,75.2%,中等,478 -1027,1000-1099,1027. 最长等差数列,最长等差数列,https://leetcode.cn/problems/longest-arithmetic-subsequence/,longest-arithmetic-subsequence,数组、哈希表、二分查找、动态规划,https://algo.itcharge.cn/Solutions/1000-1099/longest-arithmetic-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1027.%20%E6%9C%80%E9%95%BF%E7%AD%89%E5%B7%AE%E6%95%B0%E5%88%97.md,49.4%,中等,317 -1028,1000-1099,1028. 从先序遍历还原二叉树,从先序遍历还原二叉树,https://leetcode.cn/problems/recover-a-tree-from-preorder-traversal/,recover-a-tree-from-preorder-traversal,树、深度优先搜索、字符串、二叉树,https://algo.itcharge.cn/Solutions/1000-1099/recover-a-tree-from-preorder-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1028.%20%E4%BB%8E%E5%85%88%E5%BA%8F%E9%81%8D%E5%8E%86%E8%BF%98%E5%8E%9F%E4%BA%8C%E5%8F%89%E6%A0%91.md,72.9%,困难,535 -1029,1000-1099,1029. 两地调度,两地调度,https://leetcode.cn/problems/two-city-scheduling/,two-city-scheduling,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1000-1099/two-city-scheduling/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1029.%20%E4%B8%A4%E5%9C%B0%E8%B0%83%E5%BA%A6.md,68.8%,中等,279 -1030,1000-1099,1030. 距离顺序排列矩阵单元格,距离顺序排列矩阵单元格,https://leetcode.cn/problems/matrix-cells-in-distance-order/,matrix-cells-in-distance-order,几何、数组、数学、矩阵、排序,https://algo.itcharge.cn/Solutions/1000-1099/matrix-cells-in-distance-order/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1030.%20%E8%B7%9D%E7%A6%BB%E9%A1%BA%E5%BA%8F%E6%8E%92%E5%88%97%E7%9F%A9%E9%98%B5%E5%8D%95%E5%85%83%E6%A0%BC.md,70.6%,简单,527 -1031,1000-1099,1031. 两个非重叠子数组的最大和,两个非重叠子数组的最大和,https://leetcode.cn/problems/maximum-sum-of-two-non-overlapping-subarrays/,maximum-sum-of-two-non-overlapping-subarrays,数组、动态规划、滑动窗口,https://algo.itcharge.cn/Solutions/1000-1099/maximum-sum-of-two-non-overlapping-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1031.%20%E4%B8%A4%E4%B8%AA%E9%9D%9E%E9%87%8D%E5%8F%A0%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md,65.6%,中等,303 -1032,1000-1099,1032. 字符流,字符流,https://leetcode.cn/problems/stream-of-characters/,stream-of-characters,设计、字典树、数组、字符串、数据流,https://algo.itcharge.cn/Solutions/1000-1099/stream-of-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1032.%20%E5%AD%97%E7%AC%A6%E6%B5%81.md,56.6%,困难,259 -1033,1000-1099,1033. 移动石子直到连续,移动石子直到连续,https://leetcode.cn/problems/moving-stones-until-consecutive/,moving-stones-until-consecutive,脑筋急转弯、数学,https://algo.itcharge.cn/Solutions/1000-1099/moving-stones-until-consecutive/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1033.%20%E7%A7%BB%E5%8A%A8%E7%9F%B3%E5%AD%90%E7%9B%B4%E5%88%B0%E8%BF%9E%E7%BB%AD.md,49.3%,中等,301 -1034,1000-1099,1034. 边界着色,边界着色,https://leetcode.cn/problems/coloring-a-border/,coloring-a-border,深度优先搜索、广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/1000-1099/coloring-a-border/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1034.%20%E8%BE%B9%E7%95%8C%E7%9D%80%E8%89%B2.md,55.1%,中等,534 -1035,1000-1099,1035. 不相交的线,不相交的线,https://leetcode.cn/problems/uncrossed-lines/,uncrossed-lines,数组、动态规划,https://algo.itcharge.cn/Solutions/1000-1099/uncrossed-lines/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1035.%20%E4%B8%8D%E7%9B%B8%E4%BA%A4%E7%9A%84%E7%BA%BF.md,70.3%,中等,611 -1036,1000-1099,1036. 逃离大迷宫,逃离大迷宫,https://leetcode.cn/problems/escape-a-large-maze/,escape-a-large-maze,深度优先搜索、广度优先搜索、数组、哈希表,https://algo.itcharge.cn/Solutions/1000-1099/escape-a-large-maze/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1036.%20%E9%80%83%E7%A6%BB%E5%A4%A7%E8%BF%B7%E5%AE%AB.md,46.8%,困难,218 -1037,1000-1099,1037. 有效的回旋镖,有效的回旋镖,https://leetcode.cn/problems/valid-boomerang/,valid-boomerang,几何、数组、数学,https://algo.itcharge.cn/Solutions/1000-1099/valid-boomerang/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1037.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%9B%9E%E6%97%8B%E9%95%96.md,48.5%,简单,424 -1038,1000-1099,1038. 从二叉搜索树到更大和树,从二叉搜索树到更大和树,https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/,binary-search-tree-to-greater-sum-tree,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/1000-1099/binary-search-tree-to-greater-sum-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1038.%20%E4%BB%8E%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E5%88%B0%E6%9B%B4%E5%A4%A7%E5%92%8C%E6%A0%91.md,81.3%,中等,530 -1039,1000-1099,1039. 多边形三角剖分的最低得分,多边形三角剖分的最低得分,https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/,minimum-score-triangulation-of-polygon,数组、动态规划,https://algo.itcharge.cn/Solutions/1000-1099/minimum-score-triangulation-of-polygon/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1039.%20%E5%A4%9A%E8%BE%B9%E5%BD%A2%E4%B8%89%E8%A7%92%E5%89%96%E5%88%86%E7%9A%84%E6%9C%80%E4%BD%8E%E5%BE%97%E5%88%86.md,64.5%,中等,149 -1040,1000-1099,1040. 移动石子直到连续 II,移动石子直到连续 II,https://leetcode.cn/problems/moving-stones-until-consecutive-ii/,moving-stones-until-consecutive-ii,数组、数学、双指针、排序,https://algo.itcharge.cn/Solutions/1000-1099/moving-stones-until-consecutive-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1040.%20%E7%A7%BB%E5%8A%A8%E7%9F%B3%E5%AD%90%E7%9B%B4%E5%88%B0%E8%BF%9E%E7%BB%AD%20II.md,66.2%,中等,94 -1041,1000-1099,1041. 困于环中的机器人,困于环中的机器人,https://leetcode.cn/problems/robot-bounded-in-circle/,robot-bounded-in-circle,数学、字符串、模拟,https://algo.itcharge.cn/Solutions/1000-1099/robot-bounded-in-circle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1041.%20%E5%9B%B0%E4%BA%8E%E7%8E%AF%E4%B8%AD%E7%9A%84%E6%9C%BA%E5%99%A8%E4%BA%BA.md,57.0%,中等,431 -1042,1000-1099,1042. 不邻接植花,不邻接植花,https://leetcode.cn/problems/flower-planting-with-no-adjacent/,flower-planting-with-no-adjacent,深度优先搜索、广度优先搜索、图,https://algo.itcharge.cn/Solutions/1000-1099/flower-planting-with-no-adjacent/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1042.%20%E4%B8%8D%E9%82%BB%E6%8E%A5%E6%A4%8D%E8%8A%B1.md,61.1%,中等,342 -1043,1000-1099,1043. 分隔数组以得到最大和,分隔数组以得到最大和,https://leetcode.cn/problems/partition-array-for-maximum-sum/,partition-array-for-maximum-sum,数组、动态规划,https://algo.itcharge.cn/Solutions/1000-1099/partition-array-for-maximum-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1043.%20%E5%88%86%E9%9A%94%E6%95%B0%E7%BB%84%E4%BB%A5%E5%BE%97%E5%88%B0%E6%9C%80%E5%A4%A7%E5%92%8C.md,75.5%,中等,297 -1044,1000-1099,1044. 最长重复子串,最长重复子串,https://leetcode.cn/problems/longest-duplicate-substring/,longest-duplicate-substring,字符串、二分查找、后缀数组、滑动窗口、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/1000-1099/longest-duplicate-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1044.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E4%B8%B2.md,35.4%,困难,239 -1045,1000-1099,1045. 买下所有产品的客户,买下所有产品的客户,https://leetcode.cn/problems/customers-who-bought-all-products/,customers-who-bought-all-products,数据库,https://algo.itcharge.cn/Solutions/1000-1099/customers-who-bought-all-products/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1045.%20%E4%B9%B0%E4%B8%8B%E6%89%80%E6%9C%89%E4%BA%A7%E5%93%81%E7%9A%84%E5%AE%A2%E6%88%B7.md,61.6%,中等,202 -1046,1000-1099,1046. 最后一块石头的重量,最后一块石头的重量,https://leetcode.cn/problems/last-stone-weight/,last-stone-weight,数组、堆(优先队列),https://algo.itcharge.cn/Solutions/1000-1099/last-stone-weight/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1046.%20%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7%9A%84%E9%87%8D%E9%87%8F.md,65.6%,简单,1214 -1047,1000-1099,1047. 删除字符串中的所有相邻重复项,删除字符串中的所有相邻重复项,https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/,remove-all-adjacent-duplicates-in-string,栈、字符串,https://algo.itcharge.cn/Solutions/1000-1099/remove-all-adjacent-duplicates-in-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1047.%20%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E7%9B%B8%E9%82%BB%E9%87%8D%E5%A4%8D%E9%A1%B9.md,72.4%,简单,1615 -1048,1000-1099,1048. 最长字符串链,最长字符串链,https://leetcode.cn/problems/longest-string-chain/,longest-string-chain,数组、哈希表、双指针、字符串、动态规划,https://algo.itcharge.cn/Solutions/1000-1099/longest-string-chain/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1048.%20%E6%9C%80%E9%95%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%93%BE.md,55.8%,中等,399 -1049,1000-1099,1049. 最后一块石头的重量 II,最后一块石头的重量 II,https://leetcode.cn/problems/last-stone-weight-ii/,last-stone-weight-ii,数组、动态规划,https://algo.itcharge.cn/Solutions/1000-1099/last-stone-weight-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1049.%20%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7%9A%84%E9%87%8D%E9%87%8F%20II.md,69.2%,中等,840 -1050,1000-1099,1050. 合作过至少三次的演员和导演,合作过至少三次的演员和导演,https://leetcode.cn/problems/actors-and-directors-who-cooperated-at-least-three-times/,actors-and-directors-who-cooperated-at-least-three-times,数据库,https://algo.itcharge.cn/Solutions/1000-1099/actors-and-directors-who-cooperated-at-least-three-times/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1050.%20%E5%90%88%E4%BD%9C%E8%BF%87%E8%87%B3%E5%B0%91%E4%B8%89%E6%AC%A1%E7%9A%84%E6%BC%94%E5%91%98%E5%92%8C%E5%AF%BC%E6%BC%94.md,76.8%,简单,207 -1051,1000-1099,1051. 高度检查器,高度检查器,https://leetcode.cn/problems/height-checker/,height-checker,数组、计数排序、排序,https://algo.itcharge.cn/Solutions/1000-1099/height-checker/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1051.%20%E9%AB%98%E5%BA%A6%E6%A3%80%E6%9F%A5%E5%99%A8.md,80.1%,简单,685 -1052,1000-1099,1052. 爱生气的书店老板,爱生气的书店老板,https://leetcode.cn/problems/grumpy-bookstore-owner/,grumpy-bookstore-owner,数组、滑动窗口,https://algo.itcharge.cn/Solutions/1000-1099/grumpy-bookstore-owner/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1052.%20%E7%88%B1%E7%94%9F%E6%B0%94%E7%9A%84%E4%B9%A6%E5%BA%97%E8%80%81%E6%9D%BF.md,58.0%,中等,909 -1053,1000-1099,1053. 交换一次的先前排列,交换一次的先前排列,https://leetcode.cn/problems/previous-permutation-with-one-swap/,previous-permutation-with-one-swap,贪心、数组,https://algo.itcharge.cn/Solutions/1000-1099/previous-permutation-with-one-swap/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1053.%20%E4%BA%A4%E6%8D%A2%E4%B8%80%E6%AC%A1%E7%9A%84%E5%85%88%E5%89%8D%E6%8E%92%E5%88%97.md,48.3%,中等,302 -1054,1000-1099,1054. 距离相等的条形码,距离相等的条形码,https://leetcode.cn/problems/distant-barcodes/,distant-barcodes,贪心、数组、哈希表、计数、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1000-1099/distant-barcodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1054.%20%E8%B7%9D%E7%A6%BB%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9D%A1%E5%BD%A2%E7%A0%81.md,44.8%,中等,312 -1055,1000-1099,1055. 形成字符串的最短路径,形成字符串的最短路径,https://leetcode.cn/problems/shortest-way-to-form-string/,shortest-way-to-form-string,贪心、双指针、字符串,https://algo.itcharge.cn/Solutions/1000-1099/shortest-way-to-form-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1055.%20%E5%BD%A2%E6%88%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md,60.5%,中等,150 -1056,1000-1099,1056. 易混淆数,易混淆数,https://leetcode.cn/problems/confusing-number/,confusing-number,数学,https://algo.itcharge.cn/Solutions/1000-1099/confusing-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1056.%20%E6%98%93%E6%B7%B7%E6%B7%86%E6%95%B0.md,43.6%,简单,120 -1057,1000-1099,1057. 校园自行车分配,校园自行车分配,https://leetcode.cn/problems/campus-bikes/,campus-bikes,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1000-1099/campus-bikes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1057.%20%E6%A0%A1%E5%9B%AD%E8%87%AA%E8%A1%8C%E8%BD%A6%E5%88%86%E9%85%8D.md,51.0%,中等,59 -1058,1000-1099,1058. 最小化舍入误差以满足目标,最小化舍入误差以满足目标,https://leetcode.cn/problems/minimize-rounding-error-to-meet-target/,minimize-rounding-error-to-meet-target,贪心、数组、数学、字符串,https://algo.itcharge.cn/Solutions/1000-1099/minimize-rounding-error-to-meet-target/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1058.%20%E6%9C%80%E5%B0%8F%E5%8C%96%E8%88%8D%E5%85%A5%E8%AF%AF%E5%B7%AE%E4%BB%A5%E6%BB%A1%E8%B6%B3%E7%9B%AE%E6%A0%87.md,37.4%,中等,50 -1059,1000-1099,1059. 从始点到终点的所有路径,从始点到终点的所有路径,https://leetcode.cn/problems/all-paths-from-source-lead-to-destination/,all-paths-from-source-lead-to-destination,深度优先搜索、图,https://algo.itcharge.cn/Solutions/1000-1099/all-paths-from-source-lead-to-destination/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1059.%20%E4%BB%8E%E5%A7%8B%E7%82%B9%E5%88%B0%E7%BB%88%E7%82%B9%E7%9A%84%E6%89%80%E6%9C%89%E8%B7%AF%E5%BE%84.md,35.8%,中等,57 -1060,1000-1099,1060. 有序数组中的缺失元素,有序数组中的缺失元素,https://leetcode.cn/problems/missing-element-in-sorted-array/,missing-element-in-sorted-array,数组、二分查找,https://algo.itcharge.cn/Solutions/1000-1099/missing-element-in-sorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1060.%20%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%BC%BA%E5%A4%B1%E5%85%83%E7%B4%A0.md,54.7%,中等,158 -1061,1000-1099,1061. 按字典序排列最小的等效字符串,按字典序排列最小的等效字符串,https://leetcode.cn/problems/lexicographically-smallest-equivalent-string/,lexicographically-smallest-equivalent-string,并查集、字符串,https://algo.itcharge.cn/Solutions/1000-1099/lexicographically-smallest-equivalent-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1061.%20%E6%8C%89%E5%AD%97%E5%85%B8%E5%BA%8F%E6%8E%92%E5%88%97%E6%9C%80%E5%B0%8F%E7%9A%84%E7%AD%89%E6%95%88%E5%AD%97%E7%AC%A6%E4%B8%B2.md,64.7%,中等,119 -1062,1000-1099,1062. 最长重复子串,最长重复子串,https://leetcode.cn/problems/longest-repeating-substring/,longest-repeating-substring,字符串、二分查找、动态规划、后缀数组、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/1000-1099/longest-repeating-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1062.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E4%B8%B2.md,56.9%,中等,87 -1063,1000-1099,1063. 有效子数组的数目,有效子数组的数目,https://leetcode.cn/problems/number-of-valid-subarrays/,number-of-valid-subarrays,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/1000-1099/number-of-valid-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1063.%20%E6%9C%89%E6%95%88%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,73.8%,困难,61 -1064,1000-1099,1064. 不动点,不动点,https://leetcode.cn/problems/fixed-point/,fixed-point,数组、二分查找,https://algo.itcharge.cn/Solutions/1000-1099/fixed-point/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1064.%20%E4%B8%8D%E5%8A%A8%E7%82%B9.md,64.8%,简单,105 -1065,1000-1099,1065. 字符串的索引对,字符串的索引对,https://leetcode.cn/problems/index-pairs-of-a-string/,index-pairs-of-a-string,字典树、数组、字符串、排序,https://algo.itcharge.cn/Solutions/1000-1099/index-pairs-of-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1065.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E7%B4%A2%E5%BC%95%E5%AF%B9.md,56.5%,简单,110 -1066,1000-1099,1066. 校园自行车分配 II,校园自行车分配 II,https://leetcode.cn/problems/campus-bikes-ii/,campus-bikes-ii,位运算、数组、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/1000-1099/campus-bikes-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1066.%20%E6%A0%A1%E5%9B%AD%E8%87%AA%E8%A1%8C%E8%BD%A6%E5%88%86%E9%85%8D%20II.md,51.3%,中等,71 -1067,1000-1099,1067. 范围内的数字计数,范围内的数字计数,https://leetcode.cn/problems/digit-count-in-range/,digit-count-in-range,数学、动态规划,https://algo.itcharge.cn/Solutions/1000-1099/digit-count-in-range/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1067.%20%E8%8C%83%E5%9B%B4%E5%86%85%E7%9A%84%E6%95%B0%E5%AD%97%E8%AE%A1%E6%95%B0.md,48.3%,困难,51 -1068,1000-1099,1068. 产品销售分析 I,产品销售分析 I,https://leetcode.cn/problems/product-sales-analysis-i/,product-sales-analysis-i,数据库,https://algo.itcharge.cn/Solutions/1000-1099/product-sales-analysis-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1068.%20%E4%BA%A7%E5%93%81%E9%94%80%E5%94%AE%E5%88%86%E6%9E%90%20I.md,86.7%,简单,112 -1069,1000-1099,1069. 产品销售分析 II,产品销售分析 II,https://leetcode.cn/problems/product-sales-analysis-ii/,product-sales-analysis-ii,数据库,https://algo.itcharge.cn/Solutions/1000-1099/product-sales-analysis-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1069.%20%E4%BA%A7%E5%93%81%E9%94%80%E5%94%AE%E5%88%86%E6%9E%90%20II.md,81.8%,简单,85 -1070,1000-1099,1070. 产品销售分析 III,产品销售分析 III,https://leetcode.cn/problems/product-sales-analysis-iii/,product-sales-analysis-iii,数据库,https://algo.itcharge.cn/Solutions/1000-1099/product-sales-analysis-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1070.%20%E4%BA%A7%E5%93%81%E9%94%80%E5%94%AE%E5%88%86%E6%9E%90%20III.md,48.0%,中等,106 -1071,1000-1099,1071. 字符串的最大公因子,字符串的最大公因子,https://leetcode.cn/problems/greatest-common-divisor-of-strings/,greatest-common-divisor-of-strings,数学、字符串,https://algo.itcharge.cn/Solutions/1000-1099/greatest-common-divisor-of-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1071.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%A4%A7%E5%85%AC%E5%9B%A0%E5%AD%90.md,57.9%,简单,818 -1072,1000-1099,1072. 按列翻转得到最大值等行数,按列翻转得到最大值等行数,https://leetcode.cn/problems/flip-columns-for-maximum-number-of-equal-rows/,flip-columns-for-maximum-number-of-equal-rows,数组、哈希表、矩阵,https://algo.itcharge.cn/Solutions/1000-1099/flip-columns-for-maximum-number-of-equal-rows/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1072.%20%E6%8C%89%E5%88%97%E7%BF%BB%E8%BD%AC%E5%BE%97%E5%88%B0%E6%9C%80%E5%A4%A7%E5%80%BC%E7%AD%89%E8%A1%8C%E6%95%B0.md,71.4%,中等,206 -1073,1000-1099,1073. 负二进制数相加,负二进制数相加,https://leetcode.cn/problems/adding-two-negabinary-numbers/,adding-two-negabinary-numbers,数组、数学,https://algo.itcharge.cn/Solutions/1000-1099/adding-two-negabinary-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1073.%20%E8%B4%9F%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%95%B0%E7%9B%B8%E5%8A%A0.md,41.6%,中等,193 -1074,1000-1099,1074. 元素和为目标值的子矩阵数量,元素和为目标值的子矩阵数量,https://leetcode.cn/problems/number-of-submatrices-that-sum-to-target/,number-of-submatrices-that-sum-to-target,数组、哈希表、矩阵、前缀和,https://algo.itcharge.cn/Solutions/1000-1099/number-of-submatrices-that-sum-to-target/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1074.%20%E5%85%83%E7%B4%A0%E5%92%8C%E4%B8%BA%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E5%AD%90%E7%9F%A9%E9%98%B5%E6%95%B0%E9%87%8F.md,67.4%,困难,223 -1075,1000-1099,1075. 项目员工 I,项目员工 I,https://leetcode.cn/problems/project-employees-i/,project-employees-i,数据库,https://algo.itcharge.cn/Solutions/1000-1099/project-employees-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1075.%20%E9%A1%B9%E7%9B%AE%E5%91%98%E5%B7%A5%20I.md,70.2%,简单,132 -1076,1000-1099,1076. 项目员工II,项目员工II,https://leetcode.cn/problems/project-employees-ii/,project-employees-ii,数据库,https://algo.itcharge.cn/Solutions/1000-1099/project-employees-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1076.%20%E9%A1%B9%E7%9B%AE%E5%91%98%E5%B7%A5II.md,49.4%,简单,132 -1077,1000-1099,1077. 项目员工 III,项目员工 III,https://leetcode.cn/problems/project-employees-iii/,project-employees-iii,数据库,https://algo.itcharge.cn/Solutions/1000-1099/project-employees-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1077.%20%E9%A1%B9%E7%9B%AE%E5%91%98%E5%B7%A5%20III.md,72.3%,中等,147 -1078,1000-1099,1078. Bigram 分词,Bigram 分词,https://leetcode.cn/problems/occurrences-after-bigram/,occurrences-after-bigram,字符串,https://algo.itcharge.cn/Solutions/1000-1099/occurrences-after-bigram/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1078.%20Bigram%20%E5%88%86%E8%AF%8D.md,65.2%,简单,521 -1079,1000-1099,1079. 活字印刷,活字印刷,https://leetcode.cn/problems/letter-tile-possibilities/,letter-tile-possibilities,哈希表、字符串、回溯、计数,https://algo.itcharge.cn/Solutions/1000-1099/letter-tile-possibilities/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1079.%20%E6%B4%BB%E5%AD%97%E5%8D%B0%E5%88%B7.md,79.1%,中等,405 -1080,1000-1099,1080. 根到叶路径上的不足节点,根到叶路径上的不足节点,https://leetcode.cn/problems/insufficient-nodes-in-root-to-leaf-paths/,insufficient-nodes-in-root-to-leaf-paths,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1000-1099/insufficient-nodes-in-root-to-leaf-paths/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1080.%20%E6%A0%B9%E5%88%B0%E5%8F%B6%E8%B7%AF%E5%BE%84%E4%B8%8A%E7%9A%84%E4%B8%8D%E8%B6%B3%E8%8A%82%E7%82%B9.md,61.4%,中等,271 -1081,1000-1099,1081. 不同字符的最小子序列,不同字符的最小子序列,https://leetcode.cn/problems/smallest-subsequence-of-distinct-characters/,smallest-subsequence-of-distinct-characters,栈、贪心、字符串、单调栈,https://algo.itcharge.cn/Solutions/1000-1099/smallest-subsequence-of-distinct-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1081.%20%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%90%E5%BA%8F%E5%88%97.md,58.4%,中等,241 -1082,1000-1099,1082. 销售分析 I,销售分析 I,https://leetcode.cn/problems/sales-analysis-i/,sales-analysis-i,数据库,https://algo.itcharge.cn/Solutions/1000-1099/sales-analysis-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1082.%20%E9%94%80%E5%94%AE%E5%88%86%E6%9E%90%20I.md,76.6%,简单,139 -1083,1000-1099,1083. 销售分析 II,销售分析 II,https://leetcode.cn/problems/sales-analysis-ii/,sales-analysis-ii,数据库,https://algo.itcharge.cn/Solutions/1000-1099/sales-analysis-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1083.%20%E9%94%80%E5%94%AE%E5%88%86%E6%9E%90%20II.md,53.0%,简单,156 -1084,1000-1099,1084. 销售分析III,销售分析III,https://leetcode.cn/problems/sales-analysis-iii/,sales-analysis-iii,数据库,https://algo.itcharge.cn/Solutions/1000-1099/sales-analysis-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1084.%20%E9%94%80%E5%94%AE%E5%88%86%E6%9E%90III.md,52.2%,简单,351 -1085,1000-1099,1085. 最小元素各数位之和,最小元素各数位之和,https://leetcode.cn/problems/sum-of-digits-in-the-minimum-number/,sum-of-digits-in-the-minimum-number,数组、数学,https://algo.itcharge.cn/Solutions/1000-1099/sum-of-digits-in-the-minimum-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1085.%20%E6%9C%80%E5%B0%8F%E5%85%83%E7%B4%A0%E5%90%84%E6%95%B0%E4%BD%8D%E4%B9%8B%E5%92%8C.md,77.9%,简单,110 -1086,1000-1099,1086. 前五科的均分,前五科的均分,https://leetcode.cn/problems/high-five/,high-five,数组、哈希表、排序,https://algo.itcharge.cn/Solutions/1000-1099/high-five/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1086.%20%E5%89%8D%E4%BA%94%E7%A7%91%E7%9A%84%E5%9D%87%E5%88%86.md,67.7%,简单,120 -1087,1000-1099,1087. 花括号展开,花括号展开,https://leetcode.cn/problems/brace-expansion/,brace-expansion,广度优先搜索、字符串、回溯,https://algo.itcharge.cn/Solutions/1000-1099/brace-expansion/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1087.%20%E8%8A%B1%E6%8B%AC%E5%8F%B7%E5%B1%95%E5%BC%80.md,56.8%,中等,89 -1088,1000-1099,1088. 易混淆数 II,易混淆数 II,https://leetcode.cn/problems/confusing-number-ii/,confusing-number-ii,数学、回溯,https://algo.itcharge.cn/Solutions/1000-1099/confusing-number-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1088.%20%E6%98%93%E6%B7%B7%E6%B7%86%E6%95%B0%20II.md,49.9%,困难,50 -1089,1000-1099,1089. 复写零,复写零,https://leetcode.cn/problems/duplicate-zeros/,duplicate-zeros,数组、双指针,https://algo.itcharge.cn/Solutions/1000-1099/duplicate-zeros/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1089.%20%E5%A4%8D%E5%86%99%E9%9B%B6.md,60.1%,简单,762 -1090,1000-1099,1090. 受标签影响的最大值,受标签影响的最大值,https://leetcode.cn/problems/largest-values-from-labels/,largest-values-from-labels,贪心、数组、哈希表、计数、排序,https://algo.itcharge.cn/Solutions/1000-1099/largest-values-from-labels/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1090.%20%E5%8F%97%E6%A0%87%E7%AD%BE%E5%BD%B1%E5%93%8D%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,66.9%,中等,313 -1091,1000-1099,1091. 二进制矩阵中的最短路径,二进制矩阵中的最短路径,https://leetcode.cn/problems/shortest-path-in-binary-matrix/,shortest-path-in-binary-matrix,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/1000-1099/shortest-path-in-binary-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1091.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md,40.4%,中等,736 -1092,1000-1099,1092. 最短公共超序列,最短公共超序列,https://leetcode.cn/problems/shortest-common-supersequence/,shortest-common-supersequence,字符串、动态规划,https://algo.itcharge.cn/Solutions/1000-1099/shortest-common-supersequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1092.%20%E6%9C%80%E7%9F%AD%E5%85%AC%E5%85%B1%E8%B6%85%E5%BA%8F%E5%88%97.md,58.5%,困难,172 -1093,1000-1099,1093. 大样本统计,大样本统计,https://leetcode.cn/problems/statistics-from-a-large-sample/,statistics-from-a-large-sample,数组、数学、概率与统计,https://algo.itcharge.cn/Solutions/1000-1099/statistics-from-a-large-sample/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1093.%20%E5%A4%A7%E6%A0%B7%E6%9C%AC%E7%BB%9F%E8%AE%A1.md,41.9%,中等,206 -1094,1000-1099,1094. 拼车,拼车,https://leetcode.cn/problems/car-pooling/,car-pooling,数组、前缀和、排序、模拟、堆(优先队列),https://algo.itcharge.cn/Solutions/1000-1099/car-pooling/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1094.%20%E6%8B%BC%E8%BD%A6.md,51.8%,中等,1350 -1095,1000-1099,1095. 山脉数组中查找目标值,山脉数组中查找目标值,https://leetcode.cn/problems/find-in-mountain-array/,find-in-mountain-array,数组、二分查找、交互,https://algo.itcharge.cn/Solutions/1000-1099/find-in-mountain-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1095.%20%E5%B1%B1%E8%84%89%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E7%9B%AE%E6%A0%87%E5%80%BC.md,37.7%,困难,470 -1096,1000-1099,1096. 花括号展开 II,花括号展开 II,https://leetcode.cn/problems/brace-expansion-ii/,brace-expansion-ii,栈、广度优先搜索、字符串、回溯,https://algo.itcharge.cn/Solutions/1000-1099/brace-expansion-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1096.%20%E8%8A%B1%E6%8B%AC%E5%8F%B7%E5%B1%95%E5%BC%80%20II.md,73.5%,困难,155 -1097,1000-1099,1097. 游戏玩法分析 V,游戏玩法分析 V,https://leetcode.cn/problems/game-play-analysis-v/,game-play-analysis-v,数据库,https://algo.itcharge.cn/Solutions/1000-1099/game-play-analysis-v/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1097.%20%E6%B8%B8%E6%88%8F%E7%8E%A9%E6%B3%95%E5%88%86%E6%9E%90%20V.md,52.4%,困难,169 -1098,1000-1099,1098. 小众书籍,小众书籍,https://leetcode.cn/problems/unpopular-books/,unpopular-books,数据库,https://algo.itcharge.cn/Solutions/1000-1099/unpopular-books/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1098.%20%E5%B0%8F%E4%BC%97%E4%B9%A6%E7%B1%8D.md,47.1%,中等,135 -1099,1000-1099,1099. 小于 K 的两数之和,小于 K 的两数之和,https://leetcode.cn/problems/two-sum-less-than-k/,two-sum-less-than-k,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/1000-1099/two-sum-less-than-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1099.%20%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md,59.8%,简单,145 -1100,1100-1199,1100. 长度为 K 的无重复字符子串,长度为 K 的无重复字符子串,https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/,find-k-length-substrings-with-no-repeated-characters,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1100.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%20K%20%E7%9A%84%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E5%AD%90%E4%B8%B2.md,69.8%,中等,180 -1101,1100-1199,1101. 彼此熟识的最早时间,彼此熟识的最早时间,https://leetcode.cn/problems/the-earliest-moment-when-everyone-become-friends/,the-earliest-moment-when-everyone-become-friends,并查集、数组,https://algo.itcharge.cn/Solutions/1100-1199/the-earliest-moment-when-everyone-become-friends/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1101.%20%E5%BD%BC%E6%AD%A4%E7%86%9F%E8%AF%86%E7%9A%84%E6%9C%80%E6%97%A9%E6%97%B6%E9%97%B4.md,68.8%,中等,108 -1102,1100-1199,1102. 得分最高的路径,得分最高的路径,https://leetcode.cn/problems/path-with-maximum-minimum-value/,path-with-maximum-minimum-value,深度优先搜索、广度优先搜索、并查集、数组、矩阵、堆(优先队列),https://algo.itcharge.cn/Solutions/1100-1199/path-with-maximum-minimum-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1102.%20%E5%BE%97%E5%88%86%E6%9C%80%E9%AB%98%E7%9A%84%E8%B7%AF%E5%BE%84.md,40.2%,中等,112 -1103,1100-1199,1103. 分糖果 II,分糖果 II,https://leetcode.cn/problems/distribute-candies-to-people/,distribute-candies-to-people,数学、模拟,https://algo.itcharge.cn/Solutions/1100-1199/distribute-candies-to-people/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1103.%20%E5%88%86%E7%B3%96%E6%9E%9C%20II.md,63.7%,简单,1236 -1104,1100-1199,1104. 二叉树寻路,二叉树寻路,https://leetcode.cn/problems/path-in-zigzag-labelled-binary-tree/,path-in-zigzag-labelled-binary-tree,树、数学、二叉树,https://algo.itcharge.cn/Solutions/1100-1199/path-in-zigzag-labelled-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1104.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E5%AF%BB%E8%B7%AF.md,75.9%,中等,777 -1105,1100-1199,1105. 填充书架,填充书架,https://leetcode.cn/problems/filling-bookcase-shelves/,filling-bookcase-shelves,数组、动态规划,https://algo.itcharge.cn/Solutions/1100-1199/filling-bookcase-shelves/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1105.%20%E5%A1%AB%E5%85%85%E4%B9%A6%E6%9E%B6.md,67.2%,中等,207 -1106,1100-1199,1106. 解析布尔表达式,解析布尔表达式,https://leetcode.cn/problems/parsing-a-boolean-expression/,parsing-a-boolean-expression,栈、递归、字符串,https://algo.itcharge.cn/Solutions/1100-1199/parsing-a-boolean-expression/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1106.%20%E8%A7%A3%E6%9E%90%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F.md,68.5%,困难,572 -1107,1100-1199,1107. 每日新用户统计,每日新用户统计,https://leetcode.cn/problems/new-users-daily-count/,new-users-daily-count,数据库,https://algo.itcharge.cn/Solutions/1100-1199/new-users-daily-count/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1107.%20%E6%AF%8F%E6%97%A5%E6%96%B0%E7%94%A8%E6%88%B7%E7%BB%9F%E8%AE%A1.md,41.2%,中等,135 -1108,1100-1199,1108. IP 地址无效化,IP 地址无效化,https://leetcode.cn/problems/defanging-an-ip-address/,defanging-an-ip-address,字符串,https://algo.itcharge.cn/Solutions/1100-1199/defanging-an-ip-address/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1108.%20IP%20%E5%9C%B0%E5%9D%80%E6%97%A0%E6%95%88%E5%8C%96.md,85.4%,简单,1011 -1109,1100-1199,1109. 航班预订统计,航班预订统计,https://leetcode.cn/problems/corporate-flight-bookings/,corporate-flight-bookings,数组、前缀和,https://algo.itcharge.cn/Solutions/1100-1199/corporate-flight-bookings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1109.%20%E8%88%AA%E7%8F%AD%E9%A2%84%E8%AE%A2%E7%BB%9F%E8%AE%A1.md,63.6%,中等,1625 -1110,1100-1199,1110. 删点成林,删点成林,https://leetcode.cn/problems/delete-nodes-and-return-forest/,delete-nodes-and-return-forest,树、深度优先搜索、数组、哈希表、二叉树,https://algo.itcharge.cn/Solutions/1100-1199/delete-nodes-and-return-forest/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1110.%20%E5%88%A0%E7%82%B9%E6%88%90%E6%9E%97.md,69.4%,中等,511 -1111,1100-1199,1111. 有效括号的嵌套深度,有效括号的嵌套深度,https://leetcode.cn/problems/maximum-nesting-depth-of-two-valid-parentheses-strings/,maximum-nesting-depth-of-two-valid-parentheses-strings,栈、字符串,https://algo.itcharge.cn/Solutions/1100-1199/maximum-nesting-depth-of-two-valid-parentheses-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1111.%20%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7%E7%9A%84%E5%B5%8C%E5%A5%97%E6%B7%B1%E5%BA%A6.md,76.8%,中等,446 -1112,1100-1199,1112. 每位学生的最高成绩,每位学生的最高成绩,https://leetcode.cn/problems/highest-grade-for-each-student/,highest-grade-for-each-student,数据库,https://algo.itcharge.cn/Solutions/1100-1199/highest-grade-for-each-student/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1112.%20%E6%AF%8F%E4%BD%8D%E5%AD%A6%E7%94%9F%E7%9A%84%E6%9C%80%E9%AB%98%E6%88%90%E7%BB%A9.md,65.9%,中等,168 -1113,1100-1199,1113. 报告的记录,报告的记录,https://leetcode.cn/problems/reported-posts/,reported-posts,数据库,https://algo.itcharge.cn/Solutions/1100-1199/reported-posts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1113.%20%E6%8A%A5%E5%91%8A%E7%9A%84%E8%AE%B0%E5%BD%95.md,53.4%,简单,75 -1114,1100-1199,1114. 按序打印,按序打印,https://leetcode.cn/problems/print-in-order/,print-in-order,多线程,https://algo.itcharge.cn/Solutions/1100-1199/print-in-order/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1114.%20%E6%8C%89%E5%BA%8F%E6%89%93%E5%8D%B0.md,65.2%,简单,744 -1115,1100-1199,1115. 交替打印 FooBar,交替打印 FooBar,https://leetcode.cn/problems/print-foobar-alternately/,print-foobar-alternately,多线程,https://algo.itcharge.cn/Solutions/1100-1199/print-foobar-alternately/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1115.%20%E4%BA%A4%E6%9B%BF%E6%89%93%E5%8D%B0%20FooBar.md,57.0%,中等,607 -1116,1100-1199,1116. 打印零与奇偶数,打印零与奇偶数,https://leetcode.cn/problems/print-zero-even-odd/,print-zero-even-odd,多线程,https://algo.itcharge.cn/Solutions/1100-1199/print-zero-even-odd/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1116.%20%E6%89%93%E5%8D%B0%E9%9B%B6%E4%B8%8E%E5%A5%87%E5%81%B6%E6%95%B0.md,54.3%,中等,460 -1117,1100-1199,1117. H2O 生成,H2O 生成,https://leetcode.cn/problems/building-h2o/,building-h2o,多线程,https://algo.itcharge.cn/Solutions/1100-1199/building-h2o/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1117.%20H2O%20%E7%94%9F%E6%88%90.md,53.9%,中等,334 -1118,1100-1199,1118. 一月有多少天,一月有多少天,https://leetcode.cn/problems/number-of-days-in-a-month/,number-of-days-in-a-month,数学,https://algo.itcharge.cn/Solutions/1100-1199/number-of-days-in-a-month/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1118.%20%E4%B8%80%E6%9C%88%E6%9C%89%E5%A4%9A%E5%B0%91%E5%A4%A9.md,64.9%,简单,68 -1119,1100-1199,1119. 删去字符串中的元音,删去字符串中的元音,https://leetcode.cn/problems/remove-vowels-from-a-string/,remove-vowels-from-a-string,字符串,https://algo.itcharge.cn/Solutions/1100-1199/remove-vowels-from-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1119.%20%E5%88%A0%E5%8E%BB%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%85%83%E9%9F%B3.md,87.2%,简单,184 -1120,1100-1199,1120. 子树的最大平均值,子树的最大平均值,https://leetcode.cn/problems/maximum-average-subtree/,maximum-average-subtree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1100-1199/maximum-average-subtree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1120.%20%E5%AD%90%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E5%B9%B3%E5%9D%87%E5%80%BC.md,62.9%,中等,82 -1121,1100-1199,1121. 将数组分成几个递增序列,将数组分成几个递增序列,https://leetcode.cn/problems/divide-array-into-increasing-sequences/,divide-array-into-increasing-sequences,贪心、数组,https://algo.itcharge.cn/Solutions/1100-1199/divide-array-into-increasing-sequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1121.%20%E5%B0%86%E6%95%B0%E7%BB%84%E5%88%86%E6%88%90%E5%87%A0%E4%B8%AA%E9%80%92%E5%A2%9E%E5%BA%8F%E5%88%97.md,60.6%,困难,27 -1122,1100-1199,1122. 数组的相对排序,数组的相对排序,https://leetcode.cn/problems/relative-sort-array/,relative-sort-array,数组、哈希表、计数排序、排序,https://algo.itcharge.cn/Solutions/1100-1199/relative-sort-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1122.%20%E6%95%B0%E7%BB%84%E7%9A%84%E7%9B%B8%E5%AF%B9%E6%8E%92%E5%BA%8F.md,70.5%,简单,1118 -1123,1100-1199,1123. 最深叶节点的最近公共祖先,最深叶节点的最近公共祖先,https://leetcode.cn/problems/lowest-common-ancestor-of-deepest-leaves/,lowest-common-ancestor-of-deepest-leaves,树、深度优先搜索、广度优先搜索、哈希表、二叉树,https://algo.itcharge.cn/Solutions/1100-1199/lowest-common-ancestor-of-deepest-leaves/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1123.%20%E6%9C%80%E6%B7%B1%E5%8F%B6%E8%8A%82%E7%82%B9%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md,71.8%,中等,171 -1124,1100-1199,1124. 表现良好的最长时间段,表现良好的最长时间段,https://leetcode.cn/problems/longest-well-performing-interval/,longest-well-performing-interval,栈、数组、哈希表、前缀和、单调栈,https://algo.itcharge.cn/Solutions/1100-1199/longest-well-performing-interval/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1124.%20%E8%A1%A8%E7%8E%B0%E8%89%AF%E5%A5%BD%E7%9A%84%E6%9C%80%E9%95%BF%E6%97%B6%E9%97%B4%E6%AE%B5.md,39.2%,中等,371 -1125,1100-1199,1125. 最小的必要团队,最小的必要团队,https://leetcode.cn/problems/smallest-sufficient-team/,smallest-sufficient-team,位运算、数组、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/1100-1199/smallest-sufficient-team/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1125.%20%E6%9C%80%E5%B0%8F%E7%9A%84%E5%BF%85%E8%A6%81%E5%9B%A2%E9%98%9F.md,61.1%,困难,151 -1126,1100-1199,1126. 查询活跃业务,查询活跃业务,https://leetcode.cn/problems/active-businesses/,active-businesses,数据库,https://algo.itcharge.cn/Solutions/1100-1199/active-businesses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1126.%20%E6%9F%A5%E8%AF%A2%E6%B4%BB%E8%B7%83%E4%B8%9A%E5%8A%A1.md,68.1%,中等,150 -1127,1100-1199,1127. 用户购买平台,用户购买平台,https://leetcode.cn/problems/user-purchase-platform/,user-purchase-platform,数据库,https://algo.itcharge.cn/Solutions/1100-1199/user-purchase-platform/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1127.%20%E7%94%A8%E6%88%B7%E8%B4%AD%E4%B9%B0%E5%B9%B3%E5%8F%B0.md,43.0%,困难,108 -1128,1100-1199,1128. 等价多米诺骨牌对的数量,等价多米诺骨牌对的数量,https://leetcode.cn/problems/number-of-equivalent-domino-pairs/,number-of-equivalent-domino-pairs,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/1100-1199/number-of-equivalent-domino-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1128.%20%E7%AD%89%E4%BB%B7%E5%A4%9A%E7%B1%B3%E8%AF%BA%E9%AA%A8%E7%89%8C%E5%AF%B9%E7%9A%84%E6%95%B0%E9%87%8F.md,54.1%,简单,547 -1129,1100-1199,1129. 颜色交替的最短路径,颜色交替的最短路径,https://leetcode.cn/problems/shortest-path-with-alternating-colors/,shortest-path-with-alternating-colors,广度优先搜索、图,https://algo.itcharge.cn/Solutions/1100-1199/shortest-path-with-alternating-colors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1129.%20%E9%A2%9C%E8%89%B2%E4%BA%A4%E6%9B%BF%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md,48.7%,中等,400 -1130,1100-1199,1130. 叶值的最小代价生成树,叶值的最小代价生成树,https://leetcode.cn/problems/minimum-cost-tree-from-leaf-values/,minimum-cost-tree-from-leaf-values,栈、贪心、数组、动态规划、单调栈,https://algo.itcharge.cn/Solutions/1100-1199/minimum-cost-tree-from-leaf-values/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1130.%20%E5%8F%B6%E5%80%BC%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BB%A3%E4%BB%B7%E7%94%9F%E6%88%90%E6%A0%91.md,70.8%,中等,253 -1131,1100-1199,1131. 绝对值表达式的最大值,绝对值表达式的最大值,https://leetcode.cn/problems/maximum-of-absolute-value-expression/,maximum-of-absolute-value-expression,数组、数学,https://algo.itcharge.cn/Solutions/1100-1199/maximum-of-absolute-value-expression/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1131.%20%E7%BB%9D%E5%AF%B9%E5%80%BC%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,47.5%,中等,69 -1132,1100-1199,1132. 报告的记录 II,报告的记录 II,https://leetcode.cn/problems/reported-posts-ii/,reported-posts-ii,数据库,https://algo.itcharge.cn/Solutions/1100-1199/reported-posts-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1132.%20%E6%8A%A5%E5%91%8A%E7%9A%84%E8%AE%B0%E5%BD%95%20II.md,38.6%,中等,79 -1133,1100-1199,1133. 最大唯一数,最大唯一数,https://leetcode.cn/problems/largest-unique-number/,largest-unique-number,数组、哈希表、排序,https://algo.itcharge.cn/Solutions/1100-1199/largest-unique-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1133.%20%E6%9C%80%E5%A4%A7%E5%94%AF%E4%B8%80%E6%95%B0.md,65.6%,简单,104 -1134,1100-1199,1134. 阿姆斯特朗数,阿姆斯特朗数,https://leetcode.cn/problems/armstrong-number/,armstrong-number,数学,https://algo.itcharge.cn/Solutions/1100-1199/armstrong-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1134.%20%E9%98%BF%E5%A7%86%E6%96%AF%E7%89%B9%E6%9C%97%E6%95%B0.md,77.4%,简单,78 -1135,1100-1199,1135. 最低成本联通所有城市,最低成本联通所有城市,https://leetcode.cn/problems/connecting-cities-with-minimum-cost/,connecting-cities-with-minimum-cost,并查集、图、最小生成树、堆(优先队列),https://algo.itcharge.cn/Solutions/1100-1199/connecting-cities-with-minimum-cost/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1135.%20%E6%9C%80%E4%BD%8E%E6%88%90%E6%9C%AC%E8%81%94%E9%80%9A%E6%89%80%E6%9C%89%E5%9F%8E%E5%B8%82.md,57.9%,中等,152 -1136,1100-1199,1136. 并行课程,并行课程,https://leetcode.cn/problems/parallel-courses/,parallel-courses,图、拓扑排序,https://algo.itcharge.cn/Solutions/1100-1199/parallel-courses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1136.%20%E5%B9%B6%E8%A1%8C%E8%AF%BE%E7%A8%8B.md,60.3%,中等,102 -1137,1100-1199,1137. 第 N 个泰波那契数,第 N 个泰波那契数,https://leetcode.cn/problems/n-th-tribonacci-number/,n-th-tribonacci-number,记忆化搜索、数学、动态规划,https://algo.itcharge.cn/Solutions/1100-1199/n-th-tribonacci-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1137.%20%E7%AC%AC%20N%20%E4%B8%AA%E6%B3%B0%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md,61.0%,简单,1439 -1138,1100-1199,1138. 字母板上的路径,字母板上的路径,https://leetcode.cn/problems/alphabet-board-path/,alphabet-board-path,哈希表、字符串,https://algo.itcharge.cn/Solutions/1100-1199/alphabet-board-path/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1138.%20%E5%AD%97%E6%AF%8D%E6%9D%BF%E4%B8%8A%E7%9A%84%E8%B7%AF%E5%BE%84.md,51.8%,中等,440 -1139,1100-1199,1139. 最大的以 1 为边界的正方形,最大的以 1 为边界的正方形,https://leetcode.cn/problems/largest-1-bordered-square/,largest-1-bordered-square,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/1100-1199/largest-1-bordered-square/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1139.%20%E6%9C%80%E5%A4%A7%E7%9A%84%E4%BB%A5%201%20%E4%B8%BA%E8%BE%B9%E7%95%8C%E7%9A%84%E6%AD%A3%E6%96%B9%E5%BD%A2.md,56.1%,中等,372 -1140,1100-1199,1140. 石子游戏 II,石子游戏 II,https://leetcode.cn/problems/stone-game-ii/,stone-game-ii,数组、数学、动态规划、博弈,https://algo.itcharge.cn/Solutions/1100-1199/stone-game-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1140.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%20II.md,70.4%,中等,221 -1141,1100-1199,1141. 查询近30天活跃用户数,查询近30天活跃用户数,https://leetcode.cn/problems/user-activity-for-the-past-30-days-i/,user-activity-for-the-past-30-days-i,数据库,https://algo.itcharge.cn/Solutions/1100-1199/user-activity-for-the-past-30-days-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1141.%20%E6%9F%A5%E8%AF%A2%E8%BF%9130%E5%A4%A9%E6%B4%BB%E8%B7%83%E7%94%A8%E6%88%B7%E6%95%B0.md,44.9%,简单,321 -1142,1100-1199,1142. 过去30天的用户活动 II,过去30天的用户活动 II,https://leetcode.cn/problems/user-activity-for-the-past-30-days-ii/,user-activity-for-the-past-30-days-ii,数据库,https://algo.itcharge.cn/Solutions/1100-1199/user-activity-for-the-past-30-days-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1142.%20%E8%BF%87%E5%8E%BB30%E5%A4%A9%E7%9A%84%E7%94%A8%E6%88%B7%E6%B4%BB%E5%8A%A8%20II.md,37.2%,简单,72 -1143,1100-1199,1143. 最长公共子序列,最长公共子序列,https://leetcode.cn/problems/longest-common-subsequence/,longest-common-subsequence,字符串、动态规划,https://algo.itcharge.cn/Solutions/1100-1199/longest-common-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1143.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E5%BA%8F%E5%88%97.md,64.9%,中等,1882 -1144,1100-1199,1144. 递减元素使数组呈锯齿状,递减元素使数组呈锯齿状,https://leetcode.cn/problems/decrease-elements-to-make-array-zigzag/,decrease-elements-to-make-array-zigzag,贪心、数组,https://algo.itcharge.cn/Solutions/1100-1199/decrease-elements-to-make-array-zigzag/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1144.%20%E9%80%92%E5%87%8F%E5%85%83%E7%B4%A0%E4%BD%BF%E6%95%B0%E7%BB%84%E5%91%88%E9%94%AF%E9%BD%BF%E7%8A%B6.md,50.5%,中等,339 -1145,1100-1199,1145. 二叉树着色游戏,二叉树着色游戏,https://leetcode.cn/problems/binary-tree-coloring-game/,binary-tree-coloring-game,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1100-1199/binary-tree-coloring-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1145.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9D%80%E8%89%B2%E6%B8%B8%E6%88%8F.md,55.4%,中等,382 -1146,1100-1199,1146. 快照数组,快照数组,https://leetcode.cn/problems/snapshot-array/,snapshot-array,设计、数组、哈希表、二分查找,https://algo.itcharge.cn/Solutions/1100-1199/snapshot-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1146.%20%E5%BF%AB%E7%85%A7%E6%95%B0%E7%BB%84.md,33.5%,中等,118 -1147,1100-1199,1147. 段式回文,段式回文,https://leetcode.cn/problems/longest-chunked-palindrome-decomposition/,longest-chunked-palindrome-decomposition,贪心、双指针、字符串、动态规划、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/1100-1199/longest-chunked-palindrome-decomposition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1147.%20%E6%AE%B5%E5%BC%8F%E5%9B%9E%E6%96%87.md,59.0%,困难,361 -1148,1100-1199,1148. 文章浏览 I,文章浏览 I,https://leetcode.cn/problems/article-views-i/,article-views-i,数据库,https://algo.itcharge.cn/Solutions/1100-1199/article-views-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1148.%20%E6%96%87%E7%AB%A0%E6%B5%8F%E8%A7%88%20I.md,71.4%,简单,189 -1149,1100-1199,1149. 文章浏览 II,文章浏览 II,https://leetcode.cn/problems/article-views-ii/,article-views-ii,数据库,https://algo.itcharge.cn/Solutions/1100-1199/article-views-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1149.%20%E6%96%87%E7%AB%A0%E6%B5%8F%E8%A7%88%20II.md,44.5%,中等,76 -1150,1100-1199,1150. 检查一个数是否在数组中占绝大多数,检查一个数是否在数组中占绝大多数,https://leetcode.cn/problems/check-if-a-number-is-majority-element-in-a-sorted-array/,check-if-a-number-is-majority-element-in-a-sorted-array,数组、二分查找,https://algo.itcharge.cn/Solutions/1100-1199/check-if-a-number-is-majority-element-in-a-sorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1150.%20%E6%A3%80%E6%9F%A5%E4%B8%80%E4%B8%AA%E6%95%B0%E6%98%AF%E5%90%A6%E5%9C%A8%E6%95%B0%E7%BB%84%E4%B8%AD%E5%8D%A0%E7%BB%9D%E5%A4%A7%E5%A4%9A%E6%95%B0.md,59.5%,简单,128 -1151,1100-1199,1151. 最少交换次数来组合所有的 1,最少交换次数来组合所有的 1,https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together/,minimum-swaps-to-group-all-1s-together,数组、滑动窗口,https://algo.itcharge.cn/Solutions/1100-1199/minimum-swaps-to-group-all-1s-together/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1151.%20%E6%9C%80%E5%B0%91%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0%E6%9D%A5%E7%BB%84%E5%90%88%E6%89%80%E6%9C%89%E7%9A%84%201.md,52.8%,中等,139 -1152,1100-1199,1152. 用户网站访问行为分析,用户网站访问行为分析,https://leetcode.cn/problems/analyze-user-website-visit-pattern/,analyze-user-website-visit-pattern,数组、哈希表、排序,https://algo.itcharge.cn/Solutions/1100-1199/analyze-user-website-visit-pattern/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1152.%20%E7%94%A8%E6%88%B7%E7%BD%91%E7%AB%99%E8%AE%BF%E9%97%AE%E8%A1%8C%E4%B8%BA%E5%88%86%E6%9E%90.md,41.5%,中等,58 -1153,1100-1199,1153. 字符串转化,字符串转化,https://leetcode.cn/problems/string-transforms-into-another-string/,string-transforms-into-another-string,哈希表、字符串,https://algo.itcharge.cn/Solutions/1100-1199/string-transforms-into-another-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1153.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E5%8C%96.md,37.8%,困难,31 -1154,1100-1199,1154. 一年中的第几天,一年中的第几天,https://leetcode.cn/problems/day-of-the-year/,day-of-the-year,数学、字符串,https://algo.itcharge.cn/Solutions/1100-1199/day-of-the-year/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1154.%20%E4%B8%80%E5%B9%B4%E4%B8%AD%E7%9A%84%E7%AC%AC%E5%87%A0%E5%A4%A9.md,62.5%,简单,643 -1155,1100-1199,1155. 掷骰子等于目标和的方法数,掷骰子等于目标和的方法数,https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/,number-of-dice-rolls-with-target-sum,动态规划,https://algo.itcharge.cn/Solutions/1100-1199/number-of-dice-rolls-with-target-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1155.%20%E6%8E%B7%E9%AA%B0%E5%AD%90%E7%AD%89%E4%BA%8E%E7%9B%AE%E6%A0%87%E5%92%8C%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md,50.9%,中等,204 -1156,1100-1199,1156. 单字符重复子串的最大长度,单字符重复子串的最大长度,https://leetcode.cn/problems/swap-for-longest-repeated-character-substring/,swap-for-longest-repeated-character-substring,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/1100-1199/swap-for-longest-repeated-character-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1156.%20%E5%8D%95%E5%AD%97%E7%AC%A6%E9%87%8D%E5%A4%8D%E5%AD%90%E4%B8%B2%E7%9A%84%E6%9C%80%E5%A4%A7%E9%95%BF%E5%BA%A6.md,51.3%,中等,297 -1157,1100-1199,1157. 子数组中占绝大多数的元素,子数组中占绝大多数的元素,https://leetcode.cn/problems/online-majority-element-in-subarray/,online-majority-element-in-subarray,设计、树状数组、线段树、数组、二分查找,https://algo.itcharge.cn/Solutions/1100-1199/online-majority-element-in-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1157.%20%E5%AD%90%E6%95%B0%E7%BB%84%E4%B8%AD%E5%8D%A0%E7%BB%9D%E5%A4%A7%E5%A4%9A%E6%95%B0%E7%9A%84%E5%85%83%E7%B4%A0.md,46.2%,困难,126 -1158,1100-1199,1158. 市场分析 I,市场分析 I,https://leetcode.cn/problems/market-analysis-i/,market-analysis-i,数据库,https://algo.itcharge.cn/Solutions/1100-1199/market-analysis-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1158.%20%E5%B8%82%E5%9C%BA%E5%88%86%E6%9E%90%20I.md,54.5%,中等,271 -1159,1100-1199,1159. 市场分析 II,市场分析 II,https://leetcode.cn/problems/market-analysis-ii/,market-analysis-ii,数据库,https://algo.itcharge.cn/Solutions/1100-1199/market-analysis-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1159.%20%E5%B8%82%E5%9C%BA%E5%88%86%E6%9E%90%20II.md,50.6%,困难,123 -1160,1100-1199,1160. 拼写单词,拼写单词,https://leetcode.cn/problems/find-words-that-can-be-formed-by-characters/,find-words-that-can-be-formed-by-characters,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/1100-1199/find-words-that-can-be-formed-by-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1160.%20%E6%8B%BC%E5%86%99%E5%8D%95%E8%AF%8D.md,68.2%,简单,1065 -1161,1100-1199,1161. 最大层内元素和,最大层内元素和,https://leetcode.cn/problems/maximum-level-sum-of-a-binary-tree/,maximum-level-sum-of-a-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1100-1199/maximum-level-sum-of-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1161.%20%E6%9C%80%E5%A4%A7%E5%B1%82%E5%86%85%E5%85%83%E7%B4%A0%E5%92%8C.md,66.1%,中等,508 -1162,1100-1199,1162. 地图分析,地图分析,https://leetcode.cn/problems/as-far-from-land-as-possible/,as-far-from-land-as-possible,广度优先搜索、数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/1100-1199/as-far-from-land-as-possible/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1162.%20%E5%9C%B0%E5%9B%BE%E5%88%86%E6%9E%90.md,46.7%,中等,669 -1163,1100-1199,1163. 按字典序排在最后的子串,按字典序排在最后的子串,https://leetcode.cn/problems/last-substring-in-lexicographical-order/,last-substring-in-lexicographical-order,双指针、字符串,https://algo.itcharge.cn/Solutions/1100-1199/last-substring-in-lexicographical-order/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1163.%20%E6%8C%89%E5%AD%97%E5%85%B8%E5%BA%8F%E6%8E%92%E5%9C%A8%E6%9C%80%E5%90%8E%E7%9A%84%E5%AD%90%E4%B8%B2.md,35.2%,困难,238 -1164,1100-1199,1164. 指定日期的产品价格,指定日期的产品价格,https://leetcode.cn/problems/product-price-at-a-given-date/,product-price-at-a-given-date,数据库,https://algo.itcharge.cn/Solutions/1100-1199/product-price-at-a-given-date/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1164.%20%E6%8C%87%E5%AE%9A%E6%97%A5%E6%9C%9F%E7%9A%84%E4%BA%A7%E5%93%81%E4%BB%B7%E6%A0%BC.md,58.4%,中等,188 -1165,1100-1199,1165. 单行键盘,单行键盘,https://leetcode.cn/problems/single-row-keyboard/,single-row-keyboard,哈希表、字符串,https://algo.itcharge.cn/Solutions/1100-1199/single-row-keyboard/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1165.%20%E5%8D%95%E8%A1%8C%E9%94%AE%E7%9B%98.md,84.0%,简单,156 -1166,1100-1199,1166. 设计文件系统,设计文件系统,https://leetcode.cn/problems/design-file-system/,design-file-system,设计、字典树、哈希表、字符串,https://algo.itcharge.cn/Solutions/1100-1199/design-file-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1166.%20%E8%AE%BE%E8%AE%A1%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F.md,49.7%,中等,87 -1167,1100-1199,1167. 连接棒材的最低费用,连接棒材的最低费用,https://leetcode.cn/problems/minimum-cost-to-connect-sticks/,minimum-cost-to-connect-sticks,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/1100-1199/minimum-cost-to-connect-sticks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1167.%20%E8%BF%9E%E6%8E%A5%E6%A3%92%E6%9D%90%E7%9A%84%E6%9C%80%E4%BD%8E%E8%B4%B9%E7%94%A8.md,51.2%,中等,54 -1168,1100-1199,1168. 水资源分配优化,水资源分配优化,https://leetcode.cn/problems/optimize-water-distribution-in-a-village/,optimize-water-distribution-in-a-village,并查集、图、最小生成树,https://algo.itcharge.cn/Solutions/1100-1199/optimize-water-distribution-in-a-village/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1168.%20%E6%B0%B4%E8%B5%84%E6%BA%90%E5%88%86%E9%85%8D%E4%BC%98%E5%8C%96.md,62.5%,困难,55 -1169,1100-1199,1169. 查询无效交易,查询无效交易,https://leetcode.cn/problems/invalid-transactions/,invalid-transactions,数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/1100-1199/invalid-transactions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1169.%20%E6%9F%A5%E8%AF%A2%E6%97%A0%E6%95%88%E4%BA%A4%E6%98%93.md,33.0%,中等,112 -1170,1100-1199,1170. 比较字符串最小字母出现频次,比较字符串最小字母出现频次,https://leetcode.cn/problems/compare-strings-by-frequency-of-the-smallest-character/,compare-strings-by-frequency-of-the-smallest-character,数组、哈希表、字符串、二分查找、排序,https://algo.itcharge.cn/Solutions/1100-1199/compare-strings-by-frequency-of-the-smallest-character/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1170.%20%E6%AF%94%E8%BE%83%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%9C%80%E5%B0%8F%E5%AD%97%E6%AF%8D%E5%87%BA%E7%8E%B0%E9%A2%91%E6%AC%A1.md,66.3%,中等,432 -1171,1100-1199,1171. 从链表中删去总和值为零的连续节点,从链表中删去总和值为零的连续节点,https://leetcode.cn/problems/remove-zero-sum-consecutive-nodes-from-linked-list/,remove-zero-sum-consecutive-nodes-from-linked-list,哈希表、链表,https://algo.itcharge.cn/Solutions/1100-1199/remove-zero-sum-consecutive-nodes-from-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1171.%20%E4%BB%8E%E9%93%BE%E8%A1%A8%E4%B8%AD%E5%88%A0%E5%8E%BB%E6%80%BB%E5%92%8C%E5%80%BC%E4%B8%BA%E9%9B%B6%E7%9A%84%E8%BF%9E%E7%BB%AD%E8%8A%82%E7%82%B9.md,53.1%,中等,332 -1172,1100-1199,1172. 餐盘栈,餐盘栈,https://leetcode.cn/problems/dinner-plate-stacks/,dinner-plate-stacks,栈、设计、哈希表、堆(优先队列),https://algo.itcharge.cn/Solutions/1100-1199/dinner-plate-stacks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1172.%20%E9%A4%90%E7%9B%98%E6%A0%88.md,40.0%,困难,158 -1173,1100-1199,1173. 即时食物配送 I,即时食物配送 I,https://leetcode.cn/problems/immediate-food-delivery-i/,immediate-food-delivery-i,数据库,https://algo.itcharge.cn/Solutions/1100-1199/immediate-food-delivery-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1173.%20%E5%8D%B3%E6%97%B6%E9%A3%9F%E7%89%A9%E9%85%8D%E9%80%81%20I.md,76.5%,简单,140 -1174,1100-1199,1174. 即时食物配送 II,即时食物配送 II,https://leetcode.cn/problems/immediate-food-delivery-ii/,immediate-food-delivery-ii,数据库,https://algo.itcharge.cn/Solutions/1100-1199/immediate-food-delivery-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1174.%20%E5%8D%B3%E6%97%B6%E9%A3%9F%E7%89%A9%E9%85%8D%E9%80%81%20II.md,61.9%,中等,118 -1175,1100-1199,1175. 质数排列,质数排列,https://leetcode.cn/problems/prime-arrangements/,prime-arrangements,数学,https://algo.itcharge.cn/Solutions/1100-1199/prime-arrangements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1175.%20%E8%B4%A8%E6%95%B0%E6%8E%92%E5%88%97.md,56.3%,简单,381 -1176,1100-1199,1176. 健身计划评估,健身计划评估,https://leetcode.cn/problems/diet-plan-performance/,diet-plan-performance,数组、滑动窗口,https://algo.itcharge.cn/Solutions/1100-1199/diet-plan-performance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1176.%20%E5%81%A5%E8%BA%AB%E8%AE%A1%E5%88%92%E8%AF%84%E4%BC%B0.md,48.5%,简单,96 -1177,1100-1199,1177. 构建回文串检测,构建回文串检测,https://leetcode.cn/problems/can-make-palindrome-from-substring/,can-make-palindrome-from-substring,位运算、数组、哈希表、字符串、前缀和,https://algo.itcharge.cn/Solutions/1100-1199/can-make-palindrome-from-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1177.%20%E6%9E%84%E5%BB%BA%E5%9B%9E%E6%96%87%E4%B8%B2%E6%A3%80%E6%B5%8B.md,41.9%,中等,242 -1178,1100-1199,1178. 猜字谜,猜字谜,https://leetcode.cn/problems/number-of-valid-words-for-each-puzzle/,number-of-valid-words-for-each-puzzle,位运算、字典树、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/1100-1199/number-of-valid-words-for-each-puzzle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1178.%20%E7%8C%9C%E5%AD%97%E8%B0%9C.md,46.7%,困难,201 -1179,1100-1199,1179. 重新格式化部门表,重新格式化部门表,https://leetcode.cn/problems/reformat-department-table/,reformat-department-table,数据库,https://algo.itcharge.cn/Solutions/1100-1199/reformat-department-table/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1179.%20%E9%87%8D%E6%96%B0%E6%A0%BC%E5%BC%8F%E5%8C%96%E9%83%A8%E9%97%A8%E8%A1%A8.md,64.8%,简单,272 -1180,1100-1199,1180. 统计只含单一字母的子串,统计只含单一字母的子串,https://leetcode.cn/problems/count-substrings-with-only-one-distinct-letter/,count-substrings-with-only-one-distinct-letter,数学、字符串,https://algo.itcharge.cn/Solutions/1100-1199/count-substrings-with-only-one-distinct-letter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1180.%20%E7%BB%9F%E8%AE%A1%E5%8F%AA%E5%90%AB%E5%8D%95%E4%B8%80%E5%AD%97%E6%AF%8D%E7%9A%84%E5%AD%90%E4%B8%B2.md,78.1%,简单,107 -1181,1100-1199,1181. 前后拼接,前后拼接,https://leetcode.cn/problems/before-and-after-puzzle/,before-and-after-puzzle,数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/1100-1199/before-and-after-puzzle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1181.%20%E5%89%8D%E5%90%8E%E6%8B%BC%E6%8E%A5.md,39.8%,中等,37 -1182,1100-1199,1182. 与目标颜色间的最短距离,与目标颜色间的最短距离,https://leetcode.cn/problems/shortest-distance-to-target-color/,shortest-distance-to-target-color,数组、二分查找、动态规划,https://algo.itcharge.cn/Solutions/1100-1199/shortest-distance-to-target-color/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1182.%20%E4%B8%8E%E7%9B%AE%E6%A0%87%E9%A2%9C%E8%89%B2%E9%97%B4%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%9D%E7%A6%BB.md,47.7%,中等,99 -1183,1100-1199,1183. 矩阵中 1 的最大数量,矩阵中 1 的最大数量,https://leetcode.cn/problems/maximum-number-of-ones/,maximum-number-of-ones,贪心、堆(优先队列),https://algo.itcharge.cn/Solutions/1100-1199/maximum-number-of-ones/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1183.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%201%20%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md,62.5%,困难,28 -1184,1100-1199,1184. 公交站间的距离,公交站间的距离,https://leetcode.cn/problems/distance-between-bus-stops/,distance-between-bus-stops,数组,https://algo.itcharge.cn/Solutions/1100-1199/distance-between-bus-stops/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1184.%20%E5%85%AC%E4%BA%A4%E7%AB%99%E9%97%B4%E7%9A%84%E8%B7%9D%E7%A6%BB.md,61.8%,简单,622 -1185,1100-1199,1185. 一周中的第几天,一周中的第几天,https://leetcode.cn/problems/day-of-the-week/,day-of-the-week,数学,https://algo.itcharge.cn/Solutions/1100-1199/day-of-the-week/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1185.%20%E4%B8%80%E5%91%A8%E4%B8%AD%E7%9A%84%E7%AC%AC%E5%87%A0%E5%A4%A9.md,62.2%,简单,532 -1186,1100-1199,1186. 删除一次得到子数组最大和,删除一次得到子数组最大和,https://leetcode.cn/problems/maximum-subarray-sum-with-one-deletion/,maximum-subarray-sum-with-one-deletion,数组、动态规划,https://algo.itcharge.cn/Solutions/1100-1199/maximum-subarray-sum-with-one-deletion/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1186.%20%E5%88%A0%E9%99%A4%E4%B8%80%E6%AC%A1%E5%BE%97%E5%88%B0%E5%AD%90%E6%95%B0%E7%BB%84%E6%9C%80%E5%A4%A7%E5%92%8C.md,48.1%,中等,262 -1187,1100-1199,1187. 使数组严格递增,使数组严格递增,https://leetcode.cn/problems/make-array-strictly-increasing/,make-array-strictly-increasing,数组、二分查找、动态规划、排序,https://algo.itcharge.cn/Solutions/1100-1199/make-array-strictly-increasing/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1187.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E4%B8%A5%E6%A0%BC%E9%80%92%E5%A2%9E.md,59.8%,困难,113 -1188,1100-1199,1188. 设计有限阻塞队列,设计有限阻塞队列,https://leetcode.cn/problems/design-bounded-blocking-queue/,design-bounded-blocking-queue,多线程,https://algo.itcharge.cn/Solutions/1100-1199/design-bounded-blocking-queue/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1188.%20%E8%AE%BE%E8%AE%A1%E6%9C%89%E9%99%90%E9%98%BB%E5%A1%9E%E9%98%9F%E5%88%97.md,70.2%,中等,89 -1189,1100-1199,1189. “气球” 的最大数量,“气球” 的最大数量,https://leetcode.cn/problems/maximum-number-of-balloons/,maximum-number-of-balloons,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/1100-1199/maximum-number-of-balloons/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1189.%20%E2%80%9C%E6%B0%94%E7%90%83%E2%80%9D%20%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md,68.3%,简单,815 -1190,1100-1199,1190. 反转每对括号间的子串,反转每对括号间的子串,https://leetcode.cn/problems/reverse-substrings-between-each-pair-of-parentheses/,reverse-substrings-between-each-pair-of-parentheses,栈、字符串,https://algo.itcharge.cn/Solutions/1100-1199/reverse-substrings-between-each-pair-of-parentheses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1190.%20%E5%8F%8D%E8%BD%AC%E6%AF%8F%E5%AF%B9%E6%8B%AC%E5%8F%B7%E9%97%B4%E7%9A%84%E5%AD%90%E4%B8%B2.md,64.8%,中等,752 -1191,1100-1199,1191. K 次串联后最大子数组之和,K 次串联后最大子数组之和,https://leetcode.cn/problems/k-concatenation-maximum-sum/,k-concatenation-maximum-sum,数组、动态规划,https://algo.itcharge.cn/Solutions/1100-1199/k-concatenation-maximum-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1191.%20K%20%E6%AC%A1%E4%B8%B2%E8%81%94%E5%90%8E%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E4%B9%8B%E5%92%8C.md,27.0%,中等,135 -1192,1100-1199,1192. 查找集群内的关键连接,查找集群内的关键连接,https://leetcode.cn/problems/critical-connections-in-a-network/,critical-connections-in-a-network,深度优先搜索、图、双连通分量,https://algo.itcharge.cn/Solutions/1100-1199/critical-connections-in-a-network/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1192.%20%E6%9F%A5%E6%89%BE%E9%9B%86%E7%BE%A4%E5%86%85%E7%9A%84%E5%85%B3%E9%94%AE%E8%BF%9E%E6%8E%A5.md,54.3%,困难,112 -1193,1100-1199,1193. 每月交易 I,每月交易 I,https://leetcode.cn/problems/monthly-transactions-i/,monthly-transactions-i,数据库,https://algo.itcharge.cn/Solutions/1100-1199/monthly-transactions-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1193.%20%E6%AF%8F%E6%9C%88%E4%BA%A4%E6%98%93%20I.md,60.9%,中等,155 -1194,1100-1199,1194. 锦标赛优胜者,锦标赛优胜者,https://leetcode.cn/problems/tournament-winners/,tournament-winners,数据库,https://algo.itcharge.cn/Solutions/1100-1199/tournament-winners/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1194.%20%E9%94%A6%E6%A0%87%E8%B5%9B%E4%BC%98%E8%83%9C%E8%80%85.md,51.0%,困难,99 -1195,1100-1199,1195. 交替打印字符串,交替打印字符串,https://leetcode.cn/problems/fizz-buzz-multithreaded/,fizz-buzz-multithreaded,多线程,https://algo.itcharge.cn/Solutions/1100-1199/fizz-buzz-multithreaded/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1195.%20%E4%BA%A4%E6%9B%BF%E6%89%93%E5%8D%B0%E5%AD%97%E7%AC%A6%E4%B8%B2.md,65.0%,中等,359 -1196,1100-1199,1196. 最多可以买到的苹果数量,最多可以买到的苹果数量,https://leetcode.cn/problems/how-many-apples-can-you-put-into-the-basket/,how-many-apples-can-you-put-into-the-basket,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1100-1199/how-many-apples-can-you-put-into-the-basket/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1196.%20%E6%9C%80%E5%A4%9A%E5%8F%AF%E4%BB%A5%E4%B9%B0%E5%88%B0%E7%9A%84%E8%8B%B9%E6%9E%9C%E6%95%B0%E9%87%8F.md,68.2%,简单,82 -1197,1100-1199,1197. 进击的骑士,进击的骑士,https://leetcode.cn/problems/minimum-knight-moves/,minimum-knight-moves,广度优先搜索,https://algo.itcharge.cn/Solutions/1100-1199/minimum-knight-moves/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1197.%20%E8%BF%9B%E5%87%BB%E7%9A%84%E9%AA%91%E5%A3%AB.md,39.2%,中等,88 -1198,1100-1199,1198. 找出所有行中最小公共元素,找出所有行中最小公共元素,https://leetcode.cn/problems/find-smallest-common-element-in-all-rows/,find-smallest-common-element-in-all-rows,数组、哈希表、二分查找、计数、矩阵,https://algo.itcharge.cn/Solutions/1100-1199/find-smallest-common-element-in-all-rows/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1198.%20%E6%89%BE%E5%87%BA%E6%89%80%E6%9C%89%E8%A1%8C%E4%B8%AD%E6%9C%80%E5%B0%8F%E5%85%AC%E5%85%B1%E5%85%83%E7%B4%A0.md,73.9%,中等,94 -1199,1100-1199,1199. 建造街区的最短时间,建造街区的最短时间,https://leetcode.cn/problems/minimum-time-to-build-blocks/,minimum-time-to-build-blocks,贪心、数学、堆(优先队列),https://algo.itcharge.cn/Solutions/1100-1199/minimum-time-to-build-blocks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1199.%20%E5%BB%BA%E9%80%A0%E8%A1%97%E5%8C%BA%E7%9A%84%E6%9C%80%E7%9F%AD%E6%97%B6%E9%97%B4.md,47.3%,困难,31 -1200,1200-1299,1200. 最小绝对差,最小绝对差,https://leetcode.cn/problems/minimum-absolute-difference/,minimum-absolute-difference,数组、排序,https://algo.itcharge.cn/Solutions/1200-1299/minimum-absolute-difference/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1200.%20%E6%9C%80%E5%B0%8F%E7%BB%9D%E5%AF%B9%E5%B7%AE.md,72.5%,简单,629 -1201,1200-1299,1201. 丑数 III,丑数 III,https://leetcode.cn/problems/ugly-number-iii/,ugly-number-iii,数学、二分查找、数论,https://algo.itcharge.cn/Solutions/1200-1299/ugly-number-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1201.%20%E4%B8%91%E6%95%B0%20III.md,28.5%,中等,156 -1202,1200-1299,1202. 交换字符串中的元素,交换字符串中的元素,https://leetcode.cn/problems/smallest-string-with-swaps/,smallest-string-with-swaps,深度优先搜索、广度优先搜索、并查集、哈希表、字符串,https://algo.itcharge.cn/Solutions/1200-1299/smallest-string-with-swaps/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1202.%20%E4%BA%A4%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%85%83%E7%B4%A0.md,51.3%,中等,371 -1203,1200-1299,1203. 项目管理,项目管理,https://leetcode.cn/problems/sort-items-by-groups-respecting-dependencies/,sort-items-by-groups-respecting-dependencies,深度优先搜索、广度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/1200-1299/sort-items-by-groups-respecting-dependencies/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1203.%20%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86.md,60.8%,困难,175 -1204,1200-1299,1204. 最后一个能进入电梯的人,最后一个能进入电梯的人,https://leetcode.cn/problems/last-person-to-fit-in-the-bus/,last-person-to-fit-in-the-bus,数据库,https://algo.itcharge.cn/Solutions/1200-1299/last-person-to-fit-in-the-bus/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1204.%20%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E8%83%BD%E8%BF%9B%E5%85%A5%E7%94%B5%E6%A2%AF%E7%9A%84%E4%BA%BA.md,74.0%,中等,132 -1205,1200-1299,1205. 每月交易II,每月交易II,https://leetcode.cn/problems/monthly-transactions-ii/,monthly-transactions-ii,数据库,https://algo.itcharge.cn/Solutions/1200-1299/monthly-transactions-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1205.%20%E6%AF%8F%E6%9C%88%E4%BA%A4%E6%98%93II.md,45.7%,中等,109 -1206,1200-1299,1206. 设计跳表,设计跳表,https://leetcode.cn/problems/design-skiplist/,design-skiplist,设计、链表,https://algo.itcharge.cn/Solutions/1200-1299/design-skiplist/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1206.%20%E8%AE%BE%E8%AE%A1%E8%B7%B3%E8%A1%A8.md,68.3%,困难,251 -1207,1200-1299,1207. 独一无二的出现次数,独一无二的出现次数,https://leetcode.cn/problems/unique-number-of-occurrences/,unique-number-of-occurrences,数组、哈希表,https://algo.itcharge.cn/Solutions/1200-1299/unique-number-of-occurrences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1207.%20%E7%8B%AC%E4%B8%80%E6%97%A0%E4%BA%8C%E7%9A%84%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0.md,72.8%,简单,1078 -1208,1200-1299,1208. 尽可能使字符串相等,尽可能使字符串相等,https://leetcode.cn/problems/get-equal-substrings-within-budget/,get-equal-substrings-within-budget,字符串、二分查找、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/1200-1299/get-equal-substrings-within-budget/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1208.%20%E5%B0%BD%E5%8F%AF%E8%83%BD%E4%BD%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E7%AD%89.md,50.0%,中等,773 -1209,1200-1299,1209. 删除字符串中的所有相邻重复项 II,删除字符串中的所有相邻重复项 II,https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string-ii/,remove-all-adjacent-duplicates-in-string-ii,栈、字符串,https://algo.itcharge.cn/Solutions/1200-1299/remove-all-adjacent-duplicates-in-string-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1209.%20%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E7%9B%B8%E9%82%BB%E9%87%8D%E5%A4%8D%E9%A1%B9%20II.md,50.8%,中等,231 -1210,1200-1299,1210. 穿过迷宫的最少移动次数,穿过迷宫的最少移动次数,https://leetcode.cn/problems/minimum-moves-to-reach-target-with-rotations/,minimum-moves-to-reach-target-with-rotations,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/1200-1299/minimum-moves-to-reach-target-with-rotations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1210.%20%E7%A9%BF%E8%BF%87%E8%BF%B7%E5%AE%AB%E7%9A%84%E6%9C%80%E5%B0%91%E7%A7%BB%E5%8A%A8%E6%AC%A1%E6%95%B0.md,64.3%,困难,181 -1211,1200-1299,1211. 查询结果的质量和占比,查询结果的质量和占比,https://leetcode.cn/problems/queries-quality-and-percentage/,queries-quality-and-percentage,数据库,https://algo.itcharge.cn/Solutions/1200-1299/queries-quality-and-percentage/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1211.%20%E6%9F%A5%E8%AF%A2%E7%BB%93%E6%9E%9C%E7%9A%84%E8%B4%A8%E9%87%8F%E5%92%8C%E5%8D%A0%E6%AF%94.md,67.3%,简单,146 -1212,1200-1299,1212. 查询球队积分,查询球队积分,https://leetcode.cn/problems/team-scores-in-football-tournament/,team-scores-in-football-tournament,数据库,https://algo.itcharge.cn/Solutions/1200-1299/team-scores-in-football-tournament/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1212.%20%E6%9F%A5%E8%AF%A2%E7%90%83%E9%98%9F%E7%A7%AF%E5%88%86.md,51.4%,中等,165 -1213,1200-1299,1213. 三个有序数组的交集,三个有序数组的交集,https://leetcode.cn/problems/intersection-of-three-sorted-arrays/,intersection-of-three-sorted-arrays,数组、哈希表、二分查找、计数,https://algo.itcharge.cn/Solutions/1200-1299/intersection-of-three-sorted-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1213.%20%E4%B8%89%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.md,78.3%,简单,184 -1214,1200-1299,1214. 查找两棵二叉搜索树之和,查找两棵二叉搜索树之和,https://leetcode.cn/problems/two-sum-bsts/,two-sum-bsts,栈、树、深度优先搜索、二叉搜索树、双指针、二分查找、二叉树,https://algo.itcharge.cn/Solutions/1200-1299/two-sum-bsts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1214.%20%E6%9F%A5%E6%89%BE%E4%B8%A4%E6%A3%B5%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B9%8B%E5%92%8C.md,65.9%,中等,100 -1215,1200-1299,1215. 步进数,步进数,https://leetcode.cn/problems/stepping-numbers/,stepping-numbers,广度优先搜索、回溯,https://algo.itcharge.cn/Solutions/1200-1299/stepping-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1215.%20%E6%AD%A5%E8%BF%9B%E6%95%B0.md,43.3%,中等,54 -1216,1200-1299,1216. 验证回文字符串 III,验证回文字符串 III,https://leetcode.cn/problems/valid-palindrome-iii/,valid-palindrome-iii,字符串、动态规划,https://algo.itcharge.cn/Solutions/1200-1299/valid-palindrome-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1216.%20%E9%AA%8C%E8%AF%81%E5%9B%9E%E6%96%87%E5%AD%97%E7%AC%A6%E4%B8%B2%20III.md,57.8%,困难,57 -1217,1200-1299,1217. 玩筹码,玩筹码,https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/,minimum-cost-to-move-chips-to-the-same-position,贪心、数组、数学,https://algo.itcharge.cn/Solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1217.%20%E7%8E%A9%E7%AD%B9%E7%A0%81.md,74.6%,简单,750 -1218,1200-1299,1218. 最长定差子序列,最长定差子序列,https://leetcode.cn/problems/longest-arithmetic-subsequence-of-given-difference/,longest-arithmetic-subsequence-of-given-difference,数组、哈希表、动态规划,https://algo.itcharge.cn/Solutions/1200-1299/longest-arithmetic-subsequence-of-given-difference/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1218.%20%E6%9C%80%E9%95%BF%E5%AE%9A%E5%B7%AE%E5%AD%90%E5%BA%8F%E5%88%97.md,51.6%,中等,421 -1219,1200-1299,1219. 黄金矿工,黄金矿工,https://leetcode.cn/problems/path-with-maximum-gold/,path-with-maximum-gold,数组、回溯、矩阵,https://algo.itcharge.cn/Solutions/1200-1299/path-with-maximum-gold/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1219.%20%E9%BB%84%E9%87%91%E7%9F%BF%E5%B7%A5.md,69.1%,中等,525 -1220,1200-1299,1220. 统计元音字母序列的数目,统计元音字母序列的数目,https://leetcode.cn/problems/count-vowels-permutation/,count-vowels-permutation,动态规划,https://algo.itcharge.cn/Solutions/1200-1299/count-vowels-permutation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1220.%20%E7%BB%9F%E8%AE%A1%E5%85%83%E9%9F%B3%E5%AD%97%E6%AF%8D%E5%BA%8F%E5%88%97%E7%9A%84%E6%95%B0%E7%9B%AE.md,60.7%,困难,380 -1221,1200-1299,1221. 分割平衡字符串,分割平衡字符串,https://leetcode.cn/problems/split-a-string-in-balanced-strings/,split-a-string-in-balanced-strings,贪心、字符串、计数,https://algo.itcharge.cn/Solutions/1200-1299/split-a-string-in-balanced-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1221.%20%E5%88%86%E5%89%B2%E5%B9%B3%E8%A1%A1%E5%AD%97%E7%AC%A6%E4%B8%B2.md,85.0%,简单,1363 -1222,1200-1299,1222. 可以攻击国王的皇后,可以攻击国王的皇后,https://leetcode.cn/problems/queens-that-can-attack-the-king/,queens-that-can-attack-the-king,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/1200-1299/queens-that-can-attack-the-king/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1222.%20%E5%8F%AF%E4%BB%A5%E6%94%BB%E5%87%BB%E5%9B%BD%E7%8E%8B%E7%9A%84%E7%9A%87%E5%90%8E.md,69.4%,中等,200 -1223,1200-1299,1223. 掷骰子模拟,掷骰子模拟,https://leetcode.cn/problems/dice-roll-simulation/,dice-roll-simulation,数组、动态规划,https://algo.itcharge.cn/Solutions/1200-1299/dice-roll-simulation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1223.%20%E6%8E%B7%E9%AA%B0%E5%AD%90%E6%A8%A1%E6%8B%9F.md,61.9%,困难,186 -1224,1200-1299,1224. 最大相等频率,最大相等频率,https://leetcode.cn/problems/maximum-equal-frequency/,maximum-equal-frequency,数组、哈希表,https://algo.itcharge.cn/Solutions/1200-1299/maximum-equal-frequency/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1224.%20%E6%9C%80%E5%A4%A7%E7%9B%B8%E7%AD%89%E9%A2%91%E7%8E%87.md,43.6%,困难,297 -1225,1200-1299,1225. 报告系统状态的连续日期,报告系统状态的连续日期,https://leetcode.cn/problems/report-contiguous-dates/,report-contiguous-dates,数据库,https://algo.itcharge.cn/Solutions/1200-1299/report-contiguous-dates/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1225.%20%E6%8A%A5%E5%91%8A%E7%B3%BB%E7%BB%9F%E7%8A%B6%E6%80%81%E7%9A%84%E8%BF%9E%E7%BB%AD%E6%97%A5%E6%9C%9F.md,53.5%,困难,136 -1226,1200-1299,1226. 哲学家进餐,哲学家进餐,https://leetcode.cn/problems/the-dining-philosophers/,the-dining-philosophers,多线程,https://algo.itcharge.cn/Solutions/1200-1299/the-dining-philosophers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1226.%20%E5%93%B2%E5%AD%A6%E5%AE%B6%E8%BF%9B%E9%A4%90.md,59.4%,中等,183 -1227,1200-1299,1227. 飞机座位分配概率,飞机座位分配概率,https://leetcode.cn/problems/airplane-seat-assignment-probability/,airplane-seat-assignment-probability,脑筋急转弯、数学、动态规划、概率与统计,https://algo.itcharge.cn/Solutions/1200-1299/airplane-seat-assignment-probability/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1227.%20%E9%A3%9E%E6%9C%BA%E5%BA%A7%E4%BD%8D%E5%88%86%E9%85%8D%E6%A6%82%E7%8E%87.md,67.0%,中等,191 -1228,1200-1299,1228. 等差数列中缺失的数字,等差数列中缺失的数字,https://leetcode.cn/problems/missing-number-in-arithmetic-progression/,missing-number-in-arithmetic-progression,数组、数学,https://algo.itcharge.cn/Solutions/1200-1299/missing-number-in-arithmetic-progression/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1228.%20%E7%AD%89%E5%B7%AE%E6%95%B0%E5%88%97%E4%B8%AD%E7%BC%BA%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md,53.9%,简单,82 -1229,1200-1299,1229. 安排会议日程,安排会议日程,https://leetcode.cn/problems/meeting-scheduler/,meeting-scheduler,数组、双指针、排序,https://algo.itcharge.cn/Solutions/1200-1299/meeting-scheduler/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1229.%20%E5%AE%89%E6%8E%92%E4%BC%9A%E8%AE%AE%E6%97%A5%E7%A8%8B.md,46.5%,中等,123 -1230,1200-1299,1230. 抛掷硬币,抛掷硬币,https://leetcode.cn/problems/toss-strange-coins/,toss-strange-coins,数学、动态规划、概率与统计,https://algo.itcharge.cn/Solutions/1200-1299/toss-strange-coins/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1230.%20%E6%8A%9B%E6%8E%B7%E7%A1%AC%E5%B8%81.md,54.3%,中等,115 -1231,1200-1299,1231. 分享巧克力,分享巧克力,https://leetcode.cn/problems/divide-chocolate/,divide-chocolate,数组、二分查找,https://algo.itcharge.cn/Solutions/1200-1299/divide-chocolate/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1231.%20%E5%88%86%E4%BA%AB%E5%B7%A7%E5%85%8B%E5%8A%9B.md,58.9%,困难,103 -1232,1200-1299,1232. 缀点成线,缀点成线,https://leetcode.cn/problems/check-if-it-is-a-straight-line/,check-if-it-is-a-straight-line,几何、数组、数学,https://algo.itcharge.cn/Solutions/1200-1299/check-if-it-is-a-straight-line/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1232.%20%E7%BC%80%E7%82%B9%E6%88%90%E7%BA%BF.md,45.5%,简单,602 -1233,1200-1299,1233. 删除子文件夹,删除子文件夹,https://leetcode.cn/problems/remove-sub-folders-from-the-filesystem/,remove-sub-folders-from-the-filesystem,字典树、数组、字符串,https://algo.itcharge.cn/Solutions/1200-1299/remove-sub-folders-from-the-filesystem/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1233.%20%E5%88%A0%E9%99%A4%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9.md,61.5%,中等,451 -1234,1200-1299,1234. 替换子串得到平衡字符串,替换子串得到平衡字符串,https://leetcode.cn/problems/replace-the-substring-for-balanced-string/,replace-the-substring-for-balanced-string,字符串、滑动窗口,https://algo.itcharge.cn/Solutions/1200-1299/replace-the-substring-for-balanced-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1234.%20%E6%9B%BF%E6%8D%A2%E5%AD%90%E4%B8%B2%E5%BE%97%E5%88%B0%E5%B9%B3%E8%A1%A1%E5%AD%97%E7%AC%A6%E4%B8%B2.md,44.9%,中等,323 -1235,1200-1299,1235. 规划兼职工作,规划兼职工作,https://leetcode.cn/problems/maximum-profit-in-job-scheduling/,maximum-profit-in-job-scheduling,数组、二分查找、动态规划、排序,https://algo.itcharge.cn/Solutions/1200-1299/maximum-profit-in-job-scheduling/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1235.%20%E8%A7%84%E5%88%92%E5%85%BC%E8%81%8C%E5%B7%A5%E4%BD%9C.md,57.8%,困难,380 -1236,1200-1299,1236. 网络爬虫,网络爬虫,https://leetcode.cn/problems/web-crawler/,web-crawler,深度优先搜索、广度优先搜索、字符串、交互,https://algo.itcharge.cn/Solutions/1200-1299/web-crawler/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1236.%20%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB.md,57.3%,中等,42 -1237,1200-1299,1237. 找出给定方程的正整数解,找出给定方程的正整数解,https://leetcode.cn/problems/find-positive-integer-solution-for-a-given-equation/,find-positive-integer-solution-for-a-given-equation,数学、双指针、二分查找、交互,https://algo.itcharge.cn/Solutions/1200-1299/find-positive-integer-solution-for-a-given-equation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1237.%20%E6%89%BE%E5%87%BA%E7%BB%99%E5%AE%9A%E6%96%B9%E7%A8%8B%E7%9A%84%E6%AD%A3%E6%95%B4%E6%95%B0%E8%A7%A3.md,78.2%,中等,316 -1238,1200-1299,1238. 循环码排列,循环码排列,https://leetcode.cn/problems/circular-permutation-in-binary-representation/,circular-permutation-in-binary-representation,位运算、数学、回溯,https://algo.itcharge.cn/Solutions/1200-1299/circular-permutation-in-binary-representation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1238.%20%E5%BE%AA%E7%8E%AF%E7%A0%81%E6%8E%92%E5%88%97.md,77.5%,中等,226 -1239,1200-1299,1239. 串联字符串的最大长度,串联字符串的最大长度,https://leetcode.cn/problems/maximum-length-of-a-concatenated-string-with-unique-characters/,maximum-length-of-a-concatenated-string-with-unique-characters,位运算、数组、字符串、回溯,https://algo.itcharge.cn/Solutions/1200-1299/maximum-length-of-a-concatenated-string-with-unique-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1239.%20%E4%B8%B2%E8%81%94%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%A4%A7%E9%95%BF%E5%BA%A6.md,49.1%,中等,451 -1240,1200-1299,1240. 铺瓷砖,铺瓷砖,https://leetcode.cn/problems/tiling-a-rectangle-with-the-fewest-squares/,tiling-a-rectangle-with-the-fewest-squares,回溯,https://algo.itcharge.cn/Solutions/1200-1299/tiling-a-rectangle-with-the-fewest-squares/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1240.%20%E9%93%BA%E7%93%B7%E7%A0%96.md,65.7%,困难,112 -1241,1200-1299,1241. 每个帖子的评论数,每个帖子的评论数,https://leetcode.cn/problems/number-of-comments-per-post/,number-of-comments-per-post,数据库,https://algo.itcharge.cn/Solutions/1200-1299/number-of-comments-per-post/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1241.%20%E6%AF%8F%E4%B8%AA%E5%B8%96%E5%AD%90%E7%9A%84%E8%AF%84%E8%AE%BA%E6%95%B0.md,59.7%,简单,94 -1242,1200-1299,1242. 多线程网页爬虫,多线程网页爬虫,https://leetcode.cn/problems/web-crawler-multithreaded/,web-crawler-multithreaded,深度优先搜索、广度优先搜索、多线程,https://algo.itcharge.cn/Solutions/1200-1299/web-crawler-multithreaded/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1242.%20%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%BD%91%E9%A1%B5%E7%88%AC%E8%99%AB.md,48.2%,中等,28 -1243,1200-1299,1243. 数组变换,数组变换,https://leetcode.cn/problems/array-transformation/,array-transformation,数组、模拟,https://algo.itcharge.cn/Solutions/1200-1299/array-transformation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1243.%20%E6%95%B0%E7%BB%84%E5%8F%98%E6%8D%A2.md,53.8%,简单,86 -1244,1200-1299,1244. 力扣排行榜,力扣排行榜,https://leetcode.cn/problems/design-a-leaderboard/,design-a-leaderboard,设计、哈希表、排序,https://algo.itcharge.cn/Solutions/1200-1299/design-a-leaderboard/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1244.%20%E5%8A%9B%E6%89%A3%E6%8E%92%E8%A1%8C%E6%A6%9C.md,63.5%,中等,69 -1245,1200-1299,1245. 树的直径,树的直径,https://leetcode.cn/problems/tree-diameter/,tree-diameter,树、深度优先搜索、广度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/1200-1299/tree-diameter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1245.%20%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md,54.4%,中等,116 -1246,1200-1299,1246. 删除回文子数组,删除回文子数组,https://leetcode.cn/problems/palindrome-removal/,palindrome-removal,数组、动态规划,https://algo.itcharge.cn/Solutions/1200-1299/palindrome-removal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1246.%20%E5%88%A0%E9%99%A4%E5%9B%9E%E6%96%87%E5%AD%90%E6%95%B0%E7%BB%84.md,50.3%,困难,61 -1247,1200-1299,1247. 交换字符使得字符串相同,交换字符使得字符串相同,https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/,minimum-swaps-to-make-strings-equal,贪心、数学、字符串,https://algo.itcharge.cn/Solutions/1200-1299/minimum-swaps-to-make-strings-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1247.%20%E4%BA%A4%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%BD%BF%E5%BE%97%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%90%8C.md,69.1%,中等,441 -1248,1200-1299,1248. 统计「优美子数组」,统计「优美子数组」,https://leetcode.cn/problems/count-number-of-nice-subarrays/,count-number-of-nice-subarrays,数组、哈希表、数学、滑动窗口,https://algo.itcharge.cn/Solutions/1200-1299/count-number-of-nice-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1248.%20%E7%BB%9F%E8%AE%A1%E3%80%8C%E4%BC%98%E7%BE%8E%E5%AD%90%E6%95%B0%E7%BB%84%E3%80%8D.md,57.9%,中等,637 -1249,1200-1299,1249. 移除无效的括号,移除无效的括号,https://leetcode.cn/problems/minimum-remove-to-make-valid-parentheses/,minimum-remove-to-make-valid-parentheses,栈、字符串,https://algo.itcharge.cn/Solutions/1200-1299/minimum-remove-to-make-valid-parentheses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1249.%20%E7%A7%BB%E9%99%A4%E6%97%A0%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.md,59.4%,中等,561 -1250,1200-1299,1250. 检查「好数组」,检查「好数组」,https://leetcode.cn/problems/check-if-it-is-a-good-array/,check-if-it-is-a-good-array,数组、数学、数论,https://algo.itcharge.cn/Solutions/1200-1299/check-if-it-is-a-good-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1250.%20%E6%A3%80%E6%9F%A5%E3%80%8C%E5%A5%BD%E6%95%B0%E7%BB%84%E3%80%8D.md,71.0%,困难,153 -1251,1200-1299,1251. 平均售价,平均售价,https://leetcode.cn/problems/average-selling-price/,average-selling-price,数据库,https://algo.itcharge.cn/Solutions/1200-1299/average-selling-price/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1251.%20%E5%B9%B3%E5%9D%87%E5%94%AE%E4%BB%B7.md,75.3%,简单,203 -1252,1200-1299,1252. 奇数值单元格的数目,奇数值单元格的数目,https://leetcode.cn/problems/cells-with-odd-values-in-a-matrix/,cells-with-odd-values-in-a-matrix,数组、数学、模拟,https://algo.itcharge.cn/Solutions/1200-1299/cells-with-odd-values-in-a-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1252.%20%E5%A5%87%E6%95%B0%E5%80%BC%E5%8D%95%E5%85%83%E6%A0%BC%E7%9A%84%E6%95%B0%E7%9B%AE.md,79.6%,简单,657 -1253,1200-1299,1253. 重构 2 行二进制矩阵,重构 2 行二进制矩阵,https://leetcode.cn/problems/reconstruct-a-2-row-binary-matrix/,reconstruct-a-2-row-binary-matrix,贪心、数组、矩阵,https://algo.itcharge.cn/Solutions/1200-1299/reconstruct-a-2-row-binary-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1253.%20%E9%87%8D%E6%9E%84%202%20%E8%A1%8C%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9F%A9%E9%98%B5.md,40.8%,中等,124 -1254,1200-1299,1254. 统计封闭岛屿的数目,统计封闭岛屿的数目,https://leetcode.cn/problems/number-of-closed-islands/,number-of-closed-islands,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/1200-1299/number-of-closed-islands/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1254.%20%E7%BB%9F%E8%AE%A1%E5%B0%81%E9%97%AD%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%95%B0%E7%9B%AE.md,64.2%,中等,810 -1255,1200-1299,1255. 得分最高的单词集合,得分最高的单词集合,https://leetcode.cn/problems/maximum-score-words-formed-by-letters/,maximum-score-words-formed-by-letters,位运算、数组、字符串、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/1200-1299/maximum-score-words-formed-by-letters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1255.%20%E5%BE%97%E5%88%86%E6%9C%80%E9%AB%98%E7%9A%84%E5%8D%95%E8%AF%8D%E9%9B%86%E5%90%88.md,79.9%,困难,246 -1256,1200-1299,1256. 加密数字,加密数字,https://leetcode.cn/problems/encode-number/,encode-number,位运算、数学、字符串,https://algo.itcharge.cn/Solutions/1200-1299/encode-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1256.%20%E5%8A%A0%E5%AF%86%E6%95%B0%E5%AD%97.md,68.7%,中等,55 -1257,1200-1299,1257. 最小公共区域,最小公共区域,https://leetcode.cn/problems/smallest-common-region/,smallest-common-region,树、深度优先搜索、广度优先搜索、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/1200-1299/smallest-common-region/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1257.%20%E6%9C%80%E5%B0%8F%E5%85%AC%E5%85%B1%E5%8C%BA%E5%9F%9F.md,59.1%,中等,68 -1258,1200-1299,1258. 近义词句子,近义词句子,https://leetcode.cn/problems/synonymous-sentences/,synonymous-sentences,并查集、数组、哈希表、字符串、回溯,https://algo.itcharge.cn/Solutions/1200-1299/synonymous-sentences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1258.%20%E8%BF%91%E4%B9%89%E8%AF%8D%E5%8F%A5%E5%AD%90.md,59.2%,中等,78 -1259,1200-1299,1259. 不相交的握手,不相交的握手,https://leetcode.cn/problems/handshakes-that-dont-cross/,handshakes-that-dont-cross,数学、动态规划,https://algo.itcharge.cn/Solutions/1200-1299/handshakes-that-dont-cross/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1259.%20%E4%B8%8D%E7%9B%B8%E4%BA%A4%E7%9A%84%E6%8F%A1%E6%89%8B.md,53.2%,困难,68 -1260,1200-1299,1260. 二维网格迁移,二维网格迁移,https://leetcode.cn/problems/shift-2d-grid/,shift-2d-grid,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/1200-1299/shift-2d-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1260.%20%E4%BA%8C%E7%BB%B4%E7%BD%91%E6%A0%BC%E8%BF%81%E7%A7%BB.md,65.4%,简单,667 -1261,1200-1299,1261. 在受污染的二叉树中查找元素,在受污染的二叉树中查找元素,https://leetcode.cn/problems/find-elements-in-a-contaminated-binary-tree/,find-elements-in-a-contaminated-binary-tree,树、深度优先搜索、广度优先搜索、设计、哈希表、二叉树,https://algo.itcharge.cn/Solutions/1200-1299/find-elements-in-a-contaminated-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1261.%20%E5%9C%A8%E5%8F%97%E6%B1%A1%E6%9F%93%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%85%83%E7%B4%A0.md,73.5%,中等,168 -1262,1200-1299,1262. 可被三整除的最大和,可被三整除的最大和,https://leetcode.cn/problems/greatest-sum-divisible-by-three/,greatest-sum-divisible-by-three,贪心、数组、动态规划、排序,https://algo.itcharge.cn/Solutions/1200-1299/greatest-sum-divisible-by-three/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1262.%20%E5%8F%AF%E8%A2%AB%E4%B8%89%E6%95%B4%E9%99%A4%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md,56.3%,中等,416 -1263,1200-1299,1263. 推箱子,推箱子,https://leetcode.cn/problems/minimum-moves-to-move-a-box-to-their-target-location/,minimum-moves-to-move-a-box-to-their-target-location,广度优先搜索、数组、矩阵、堆(优先队列),https://algo.itcharge.cn/Solutions/1200-1299/minimum-moves-to-move-a-box-to-their-target-location/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1263.%20%E6%8E%A8%E7%AE%B1%E5%AD%90.md,54.3%,困难,156 -1264,1200-1299,1264. 页面推荐,页面推荐,https://leetcode.cn/problems/page-recommendations/,page-recommendations,数据库,https://algo.itcharge.cn/Solutions/1200-1299/page-recommendations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1264.%20%E9%A1%B5%E9%9D%A2%E6%8E%A8%E8%8D%90.md,57.0%,中等,163 -1265,1200-1299,1265. 逆序打印不可变链表,逆序打印不可变链表,https://leetcode.cn/problems/print-immutable-linked-list-in-reverse/,print-immutable-linked-list-in-reverse,栈、递归、链表、双指针,https://algo.itcharge.cn/Solutions/1200-1299/print-immutable-linked-list-in-reverse/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1265.%20%E9%80%86%E5%BA%8F%E6%89%93%E5%8D%B0%E4%B8%8D%E5%8F%AF%E5%8F%98%E9%93%BE%E8%A1%A8.md,90.7%,中等,101 -1266,1200-1299,1266. 访问所有点的最小时间,访问所有点的最小时间,https://leetcode.cn/problems/minimum-time-visiting-all-points/,minimum-time-visiting-all-points,几何、数组、数学,https://algo.itcharge.cn/Solutions/1200-1299/minimum-time-visiting-all-points/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1266.%20%E8%AE%BF%E9%97%AE%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%97%B6%E9%97%B4.md,82.8%,简单,533 -1267,1200-1299,1267. 统计参与通信的服务器,统计参与通信的服务器,https://leetcode.cn/problems/count-servers-that-communicate/,count-servers-that-communicate,深度优先搜索、广度优先搜索、并查集、数组、计数、矩阵,https://algo.itcharge.cn/Solutions/1200-1299/count-servers-that-communicate/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1267.%20%E7%BB%9F%E8%AE%A1%E5%8F%82%E4%B8%8E%E9%80%9A%E4%BF%A1%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8.md,61.9%,中等,206 -1268,1200-1299,1268. 搜索推荐系统,搜索推荐系统,https://leetcode.cn/problems/search-suggestions-system/,search-suggestions-system,字典树、数组、字符串,https://algo.itcharge.cn/Solutions/1200-1299/search-suggestions-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1268.%20%E6%90%9C%E7%B4%A2%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F.md,59.5%,中等,244 -1269,1200-1299,1269. 停在原地的方案数,停在原地的方案数,https://leetcode.cn/problems/number-of-ways-to-stay-in-the-same-place-after-some-steps/,number-of-ways-to-stay-in-the-same-place-after-some-steps,动态规划,https://algo.itcharge.cn/Solutions/1200-1299/number-of-ways-to-stay-in-the-same-place-after-some-steps/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1269.%20%E5%81%9C%E5%9C%A8%E5%8E%9F%E5%9C%B0%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,49.0%,困难,350 -1270,1200-1299,1270. 向公司CEO汇报工作的所有人,向公司CEO汇报工作的所有人,https://leetcode.cn/problems/all-people-report-to-the-given-manager/,all-people-report-to-the-given-manager,数据库,https://algo.itcharge.cn/Solutions/1200-1299/all-people-report-to-the-given-manager/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1270.%20%E5%90%91%E5%85%AC%E5%8F%B8CEO%E6%B1%87%E6%8A%A5%E5%B7%A5%E4%BD%9C%E7%9A%84%E6%89%80%E6%9C%89%E4%BA%BA.md,79.7%,中等,135 -1271,1200-1299,1271. 十六进制魔术数字,十六进制魔术数字,https://leetcode.cn/problems/hexspeak/,hexspeak,数学、字符串,https://algo.itcharge.cn/Solutions/1200-1299/hexspeak/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1271.%20%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E9%AD%94%E6%9C%AF%E6%95%B0%E5%AD%97.md,52.4%,简单,67 -1272,1200-1299,1272. 删除区间,删除区间,https://leetcode.cn/problems/remove-interval/,remove-interval,数组,https://algo.itcharge.cn/Solutions/1200-1299/remove-interval/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1272.%20%E5%88%A0%E9%99%A4%E5%8C%BA%E9%97%B4.md,56.8%,中等,51 -1273,1200-1299,1273. 删除树节点,删除树节点,https://leetcode.cn/problems/delete-tree-nodes/,delete-tree-nodes,树、深度优先搜索、广度优先搜索,https://algo.itcharge.cn/Solutions/1200-1299/delete-tree-nodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1273.%20%E5%88%A0%E9%99%A4%E6%A0%91%E8%8A%82%E7%82%B9.md,57.1%,中等,70 -1274,1200-1299,1274. 矩形内船只的数目,矩形内船只的数目,https://leetcode.cn/problems/number-of-ships-in-a-rectangle/,number-of-ships-in-a-rectangle,数组、分治、交互,https://algo.itcharge.cn/Solutions/1200-1299/number-of-ships-in-a-rectangle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1274.%20%E7%9F%A9%E5%BD%A2%E5%86%85%E8%88%B9%E5%8F%AA%E7%9A%84%E6%95%B0%E7%9B%AE.md,64.9%,困难,36 -1275,1200-1299,1275. 找出井字棋的获胜者,找出井字棋的获胜者,https://leetcode.cn/problems/find-winner-on-a-tic-tac-toe-game/,find-winner-on-a-tic-tac-toe-game,数组、哈希表、矩阵、模拟,https://algo.itcharge.cn/Solutions/1200-1299/find-winner-on-a-tic-tac-toe-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1275.%20%E6%89%BE%E5%87%BA%E4%BA%95%E5%AD%97%E6%A3%8B%E7%9A%84%E8%8E%B7%E8%83%9C%E8%80%85.md,55.1%,简单,241 -1276,1200-1299,1276. 不浪费原料的汉堡制作方案,不浪费原料的汉堡制作方案,https://leetcode.cn/problems/number-of-burgers-with-no-waste-of-ingredients/,number-of-burgers-with-no-waste-of-ingredients,数学,https://algo.itcharge.cn/Solutions/1200-1299/number-of-burgers-with-no-waste-of-ingredients/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1276.%20%E4%B8%8D%E6%B5%AA%E8%B4%B9%E5%8E%9F%E6%96%99%E7%9A%84%E6%B1%89%E5%A0%A1%E5%88%B6%E4%BD%9C%E6%96%B9%E6%A1%88.md,50.3%,中等,132 -1277,1200-1299,1277. 统计全为 1 的正方形子矩阵,统计全为 1 的正方形子矩阵,https://leetcode.cn/problems/count-square-submatrices-with-all-ones/,count-square-submatrices-with-all-ones,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/1200-1299/count-square-submatrices-with-all-ones/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1277.%20%E7%BB%9F%E8%AE%A1%E5%85%A8%E4%B8%BA%201%20%E7%9A%84%E6%AD%A3%E6%96%B9%E5%BD%A2%E5%AD%90%E7%9F%A9%E9%98%B5.md,73.5%,中等,345 -1278,1200-1299,1278. 分割回文串 III,分割回文串 III,https://leetcode.cn/problems/palindrome-partitioning-iii/,palindrome-partitioning-iii,字符串、动态规划,https://algo.itcharge.cn/Solutions/1200-1299/palindrome-partitioning-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1278.%20%E5%88%86%E5%89%B2%E5%9B%9E%E6%96%87%E4%B8%B2%20III.md,62.2%,困难,97 -1279,1200-1299,1279. 红绿灯路口,红绿灯路口,https://leetcode.cn/problems/traffic-light-controlled-intersection/,traffic-light-controlled-intersection,多线程,https://algo.itcharge.cn/Solutions/1200-1299/traffic-light-controlled-intersection/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1279.%20%E7%BA%A2%E7%BB%BF%E7%81%AF%E8%B7%AF%E5%8F%A3.md,57.6%,简单,28 -1280,1200-1299,1280. 学生们参加各科测试的次数,学生们参加各科测试的次数,https://leetcode.cn/problems/students-and-examinations/,students-and-examinations,数据库,https://algo.itcharge.cn/Solutions/1200-1299/students-and-examinations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1280.%20%E5%AD%A6%E7%94%9F%E4%BB%AC%E5%8F%82%E5%8A%A0%E5%90%84%E7%A7%91%E6%B5%8B%E8%AF%95%E7%9A%84%E6%AC%A1%E6%95%B0.md,49.6%,简单,157 -1281,1200-1299,1281. 整数的各位积和之差,整数的各位积和之差,https://leetcode.cn/problems/subtract-the-product-and-sum-of-digits-of-an-integer/,subtract-the-product-and-sum-of-digits-of-an-integer,数学,https://algo.itcharge.cn/Solutions/1200-1299/subtract-the-product-and-sum-of-digits-of-an-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1281.%20%E6%95%B4%E6%95%B0%E7%9A%84%E5%90%84%E4%BD%8D%E7%A7%AF%E5%92%8C%E4%B9%8B%E5%B7%AE.md,83.2%,简单,929 -1282,1200-1299,1282. 用户分组,用户分组,https://leetcode.cn/problems/group-the-people-given-the-group-size-they-belong-to/,group-the-people-given-the-group-size-they-belong-to,数组、哈希表,https://algo.itcharge.cn/Solutions/1200-1299/group-the-people-given-the-group-size-they-belong-to/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1282.%20%E7%94%A8%E6%88%B7%E5%88%86%E7%BB%84.md,86.5%,中等,803 -1283,1200-1299,1283. 使结果不超过阈值的最小除数,使结果不超过阈值的最小除数,https://leetcode.cn/problems/find-the-smallest-divisor-given-a-threshold/,find-the-smallest-divisor-given-a-threshold,数组、二分查找,https://algo.itcharge.cn/Solutions/1200-1299/find-the-smallest-divisor-given-a-threshold/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1283.%20%E4%BD%BF%E7%BB%93%E6%9E%9C%E4%B8%8D%E8%B6%85%E8%BF%87%E9%98%88%E5%80%BC%E7%9A%84%E6%9C%80%E5%B0%8F%E9%99%A4%E6%95%B0.md,49.1%,中等,190 -1284,1200-1299,1284. 转化为全零矩阵的最少反转次数,转化为全零矩阵的最少反转次数,https://leetcode.cn/problems/minimum-number-of-flips-to-convert-binary-matrix-to-zero-matrix/,minimum-number-of-flips-to-convert-binary-matrix-to-zero-matrix,位运算、广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/1200-1299/minimum-number-of-flips-to-convert-binary-matrix-to-zero-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1284.%20%E8%BD%AC%E5%8C%96%E4%B8%BA%E5%85%A8%E9%9B%B6%E7%9F%A9%E9%98%B5%E7%9A%84%E6%9C%80%E5%B0%91%E5%8F%8D%E8%BD%AC%E6%AC%A1%E6%95%B0.md,68.2%,困难,98 -1285,1200-1299,1285. 找到连续区间的开始和结束数字,找到连续区间的开始和结束数字,https://leetcode.cn/problems/find-the-start-and-end-number-of-continuous-ranges/,find-the-start-and-end-number-of-continuous-ranges,数据库,https://algo.itcharge.cn/Solutions/1200-1299/find-the-start-and-end-number-of-continuous-ranges/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1285.%20%E6%89%BE%E5%88%B0%E8%BF%9E%E7%BB%AD%E5%8C%BA%E9%97%B4%E7%9A%84%E5%BC%80%E5%A7%8B%E5%92%8C%E7%BB%93%E6%9D%9F%E6%95%B0%E5%AD%97.md,80.9%,中等,113 -1286,1200-1299,1286. 字母组合迭代器,字母组合迭代器,https://leetcode.cn/problems/iterator-for-combination/,iterator-for-combination,设计、字符串、回溯、迭代器,https://algo.itcharge.cn/Solutions/1200-1299/iterator-for-combination/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1286.%20%E5%AD%97%E6%AF%8D%E7%BB%84%E5%90%88%E8%BF%AD%E4%BB%A3%E5%99%A8.md,65.1%,中等,144 -1287,1200-1299,1287. 有序数组中出现次数超过25%的元素,有序数组中出现次数超过25%的元素,https://leetcode.cn/problems/element-appearing-more-than-25-in-sorted-array/,element-appearing-more-than-25-in-sorted-array,数组,https://algo.itcharge.cn/Solutions/1200-1299/element-appearing-more-than-25-in-sorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1287.%20%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E8%B6%85%E8%BF%8725%25%E7%9A%84%E5%85%83%E7%B4%A0.md,58.8%,简单,344 -1288,1200-1299,1288. 删除被覆盖区间,删除被覆盖区间,https://leetcode.cn/problems/remove-covered-intervals/,remove-covered-intervals,数组、排序,https://algo.itcharge.cn/Solutions/1200-1299/remove-covered-intervals/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1288.%20%E5%88%A0%E9%99%A4%E8%A2%AB%E8%A6%86%E7%9B%96%E5%8C%BA%E9%97%B4.md,56.0%,中等,291 -1289,1200-1299,1289. 下降路径最小和 II,下降路径最小和 II,https://leetcode.cn/problems/minimum-falling-path-sum-ii/,minimum-falling-path-sum-ii,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/1200-1299/minimum-falling-path-sum-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1289.%20%E4%B8%8B%E9%99%8D%E8%B7%AF%E5%BE%84%E6%9C%80%E5%B0%8F%E5%92%8C%20%20II.md,58.4%,困难,181 -1290,1200-1299,1290. 二进制链表转整数,二进制链表转整数,https://leetcode.cn/problems/convert-binary-number-in-a-linked-list-to-integer/,convert-binary-number-in-a-linked-list-to-integer,链表、数学,https://algo.itcharge.cn/Solutions/1200-1299/convert-binary-number-in-a-linked-list-to-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1290.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E9%93%BE%E8%A1%A8%E8%BD%AC%E6%95%B4%E6%95%B0.md,80.5%,简单,986 -1291,1200-1299,1291. 顺次数,顺次数,https://leetcode.cn/problems/sequential-digits/,sequential-digits,枚举,https://algo.itcharge.cn/Solutions/1200-1299/sequential-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1291.%20%E9%A1%BA%E6%AC%A1%E6%95%B0.md,53.5%,中等,219 -1292,1200-1299,1292. 元素和小于等于阈值的正方形的最大边长,元素和小于等于阈值的正方形的最大边长,https://leetcode.cn/problems/maximum-side-length-of-a-square-with-sum-less-than-or-equal-to-threshold/,maximum-side-length-of-a-square-with-sum-less-than-or-equal-to-threshold,数组、二分查找、矩阵、前缀和,https://algo.itcharge.cn/Solutions/1200-1299/maximum-side-length-of-a-square-with-sum-less-than-or-equal-to-threshold/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1292.%20%E5%85%83%E7%B4%A0%E5%92%8C%E5%B0%8F%E4%BA%8E%E7%AD%89%E4%BA%8E%E9%98%88%E5%80%BC%E7%9A%84%E6%AD%A3%E6%96%B9%E5%BD%A2%E7%9A%84%E6%9C%80%E5%A4%A7%E8%BE%B9%E9%95%BF.md,50.7%,中等,161 -1293,1200-1299,1293. 网格中的最短路径,网格中的最短路径,https://leetcode.cn/problems/shortest-path-in-a-grid-with-obstacles-elimination/,shortest-path-in-a-grid-with-obstacles-elimination,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/1200-1299/shortest-path-in-a-grid-with-obstacles-elimination/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1293.%20%E7%BD%91%E6%A0%BC%E4%B8%AD%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md,38.3%,困难,198 -1294,1200-1299,1294. 不同国家的天气类型,不同国家的天气类型,https://leetcode.cn/problems/weather-type-in-each-country/,weather-type-in-each-country,数据库,https://algo.itcharge.cn/Solutions/1200-1299/weather-type-in-each-country/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1294.%20%E4%B8%8D%E5%90%8C%E5%9B%BD%E5%AE%B6%E7%9A%84%E5%A4%A9%E6%B0%94%E7%B1%BB%E5%9E%8B.md,65.5%,简单,132 -1295,1200-1299,1295. 统计位数为偶数的数字,统计位数为偶数的数字,https://leetcode.cn/problems/find-numbers-with-even-number-of-digits/,find-numbers-with-even-number-of-digits,数组,https://algo.itcharge.cn/Solutions/1200-1299/find-numbers-with-even-number-of-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1295.%20%E7%BB%9F%E8%AE%A1%E4%BD%8D%E6%95%B0%E4%B8%BA%E5%81%B6%E6%95%B0%E7%9A%84%E6%95%B0%E5%AD%97.md,80.1%,简单,770 -1296,1200-1299,1296. 划分数组为连续数字的集合,划分数组为连续数字的集合,https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/,divide-array-in-sets-of-k-consecutive-numbers,贪心、数组、哈希表、排序,https://algo.itcharge.cn/Solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1296.%20%E5%88%92%E5%88%86%E6%95%B0%E7%BB%84%E4%B8%BA%E8%BF%9E%E7%BB%AD%E6%95%B0%E5%AD%97%E7%9A%84%E9%9B%86%E5%90%88.md,49.1%,中等,169 -1297,1200-1299,1297. 子串的最大出现次数,子串的最大出现次数,https://leetcode.cn/problems/maximum-number-of-occurrences-of-a-substring/,maximum-number-of-occurrences-of-a-substring,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/1200-1299/maximum-number-of-occurrences-of-a-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1297.%20%E5%AD%90%E4%B8%B2%E7%9A%84%E6%9C%80%E5%A4%A7%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0.md,48.3%,中等,127 -1298,1200-1299,1298. 你能从盒子里获得的最大糖果数,你能从盒子里获得的最大糖果数,https://leetcode.cn/problems/maximum-candies-you-can-get-from-boxes/,maximum-candies-you-can-get-from-boxes,广度优先搜索、图、数组,https://algo.itcharge.cn/Solutions/1200-1299/maximum-candies-you-can-get-from-boxes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1298.%20%E4%BD%A0%E8%83%BD%E4%BB%8E%E7%9B%92%E5%AD%90%E9%87%8C%E8%8E%B7%E5%BE%97%E7%9A%84%E6%9C%80%E5%A4%A7%E7%B3%96%E6%9E%9C%E6%95%B0.md,59.9%,困难,119 -1299,1200-1299,1299. 将每个元素替换为右侧最大元素,将每个元素替换为右侧最大元素,https://leetcode.cn/problems/replace-elements-with-greatest-element-on-right-side/,replace-elements-with-greatest-element-on-right-side,数组,https://algo.itcharge.cn/Solutions/1200-1299/replace-elements-with-greatest-element-on-right-side/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1299.%20%E5%B0%86%E6%AF%8F%E4%B8%AA%E5%85%83%E7%B4%A0%E6%9B%BF%E6%8D%A2%E4%B8%BA%E5%8F%B3%E4%BE%A7%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md,77.0%,简单,562 -1300,1300-1399,1300. 转变数组后最接近目标值的数组和,转变数组后最接近目标值的数组和,https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/,sum-of-mutated-array-closest-to-target,数组、二分查找、排序,https://algo.itcharge.cn/Solutions/1300-1399/sum-of-mutated-array-closest-to-target/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1300.%20%E8%BD%AC%E5%8F%98%E6%95%B0%E7%BB%84%E5%90%8E%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.md,46.8%,中等,452 -1301,1300-1399,1301. 最大得分的路径数目,最大得分的路径数目,https://leetcode.cn/problems/number-of-paths-with-max-score/,number-of-paths-with-max-score,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/1300-1399/number-of-paths-with-max-score/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1301.%20%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86%E7%9A%84%E8%B7%AF%E5%BE%84%E6%95%B0%E7%9B%AE.md,37.7%,困难,148 -1302,1300-1399,1302. 层数最深叶子节点的和,层数最深叶子节点的和,https://leetcode.cn/problems/deepest-leaves-sum/,deepest-leaves-sum,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1300-1399/deepest-leaves-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1302.%20%E5%B1%82%E6%95%B0%E6%9C%80%E6%B7%B1%E5%8F%B6%E5%AD%90%E8%8A%82%E7%82%B9%E7%9A%84%E5%92%8C.md,85.5%,中等,774 -1303,1300-1399,1303. 求团队人数,求团队人数,https://leetcode.cn/problems/find-the-team-size/,find-the-team-size,数据库,https://algo.itcharge.cn/Solutions/1300-1399/find-the-team-size/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1303.%20%E6%B1%82%E5%9B%A2%E9%98%9F%E4%BA%BA%E6%95%B0.md,82.5%,简单,167 -1304,1300-1399,1304. 和为零的 N 个不同整数,和为零的 N 个不同整数,https://leetcode.cn/problems/find-n-unique-integers-sum-up-to-zero/,find-n-unique-integers-sum-up-to-zero,数组、数学,https://algo.itcharge.cn/Solutions/1300-1399/find-n-unique-integers-sum-up-to-zero/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1304.%20%E5%92%8C%E4%B8%BA%E9%9B%B6%E7%9A%84%20N%20%E4%B8%AA%E4%B8%8D%E5%90%8C%E6%95%B4%E6%95%B0.md,70.3%,简单,488 -1305,1300-1399,1305. 两棵二叉搜索树中的所有元素,两棵二叉搜索树中的所有元素,https://leetcode.cn/problems/all-elements-in-two-binary-search-trees/,all-elements-in-two-binary-search-trees,树、深度优先搜索、二叉搜索树、二叉树、排序,https://algo.itcharge.cn/Solutions/1300-1399/all-elements-in-two-binary-search-trees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1305.%20%E4%B8%A4%E6%A3%B5%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0.md,78.0%,中等,693 -1306,1300-1399,1306. 跳跃游戏 III,跳跃游戏 III,https://leetcode.cn/problems/jump-game-iii/,jump-game-iii,深度优先搜索、广度优先搜索、数组,https://algo.itcharge.cn/Solutions/1300-1399/jump-game-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1306.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20III.md,58.2%,中等,450 -1307,1300-1399,1307. 口算难题,口算难题,https://leetcode.cn/problems/verbal-arithmetic-puzzle/,verbal-arithmetic-puzzle,数组、数学、字符串、回溯,https://algo.itcharge.cn/Solutions/1300-1399/verbal-arithmetic-puzzle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1307.%20%E5%8F%A3%E7%AE%97%E9%9A%BE%E9%A2%98.md,34.7%,困难,73 -1308,1300-1399,1308. 不同性别每日分数总计,不同性别每日分数总计,https://leetcode.cn/problems/running-total-for-different-genders/,running-total-for-different-genders,数据库,https://algo.itcharge.cn/Solutions/1300-1399/running-total-for-different-genders/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1308.%20%E4%B8%8D%E5%90%8C%E6%80%A7%E5%88%AB%E6%AF%8F%E6%97%A5%E5%88%86%E6%95%B0%E6%80%BB%E8%AE%A1.md,73.6%,中等,102 -1309,1300-1399,1309. 解码字母到整数映射,解码字母到整数映射,https://leetcode.cn/problems/decrypt-string-from-alphabet-to-integer-mapping/,decrypt-string-from-alphabet-to-integer-mapping,字符串,https://algo.itcharge.cn/Solutions/1300-1399/decrypt-string-from-alphabet-to-integer-mapping/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1309.%20%E8%A7%A3%E7%A0%81%E5%AD%97%E6%AF%8D%E5%88%B0%E6%95%B4%E6%95%B0%E6%98%A0%E5%B0%84.md,76.8%,简单,485 -1310,1300-1399,1310. 子数组异或查询,子数组异或查询,https://leetcode.cn/problems/xor-queries-of-a-subarray/,xor-queries-of-a-subarray,位运算、数组、前缀和,https://algo.itcharge.cn/Solutions/1300-1399/xor-queries-of-a-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1310.%20%E5%AD%90%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%9F%A5%E8%AF%A2.md,72.0%,中等,558 -1311,1300-1399,1311. 获取你好友已观看的视频,获取你好友已观看的视频,https://leetcode.cn/problems/get-watched-videos-by-your-friends/,get-watched-videos-by-your-friends,广度优先搜索、图、数组、哈希表、排序,https://algo.itcharge.cn/Solutions/1300-1399/get-watched-videos-by-your-friends/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1311.%20%E8%8E%B7%E5%8F%96%E4%BD%A0%E5%A5%BD%E5%8F%8B%E5%B7%B2%E8%A7%82%E7%9C%8B%E7%9A%84%E8%A7%86%E9%A2%91.md,40.0%,中等,118 -1312,1300-1399,1312. 让字符串成为回文串的最少插入次数,让字符串成为回文串的最少插入次数,https://leetcode.cn/problems/minimum-insertion-steps-to-make-a-string-palindrome/,minimum-insertion-steps-to-make-a-string-palindrome,字符串、动态规划,https://algo.itcharge.cn/Solutions/1300-1399/minimum-insertion-steps-to-make-a-string-palindrome/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1312.%20%E8%AE%A9%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%88%90%E4%B8%BA%E5%9B%9E%E6%96%87%E4%B8%B2%E7%9A%84%E6%9C%80%E5%B0%91%E6%8F%92%E5%85%A5%E6%AC%A1%E6%95%B0.md,69.1%,困难,254 -1313,1300-1399,1313. 解压缩编码列表,解压缩编码列表,https://leetcode.cn/problems/decompress-run-length-encoded-list/,decompress-run-length-encoded-list,数组,https://algo.itcharge.cn/Solutions/1300-1399/decompress-run-length-encoded-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1313.%20%E8%A7%A3%E5%8E%8B%E7%BC%A9%E7%BC%96%E7%A0%81%E5%88%97%E8%A1%A8.md,83.2%,简单,647 -1314,1300-1399,1314. 矩阵区域和,矩阵区域和,https://leetcode.cn/problems/matrix-block-sum/,matrix-block-sum,数组、矩阵、前缀和,https://algo.itcharge.cn/Solutions/1300-1399/matrix-block-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1314.%20%E7%9F%A9%E9%98%B5%E5%8C%BA%E5%9F%9F%E5%92%8C.md,75.5%,中等,375 -1315,1300-1399,1315. 祖父节点值为偶数的节点和,祖父节点值为偶数的节点和,https://leetcode.cn/problems/sum-of-nodes-with-even-valued-grandparent/,sum-of-nodes-with-even-valued-grandparent,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1300-1399/sum-of-nodes-with-even-valued-grandparent/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1315.%20%E7%A5%96%E7%88%B6%E8%8A%82%E7%82%B9%E5%80%BC%E4%B8%BA%E5%81%B6%E6%95%B0%E7%9A%84%E8%8A%82%E7%82%B9%E5%92%8C.md,81.6%,中等,377 -1316,1300-1399,1316. 不同的循环子字符串,不同的循环子字符串,https://leetcode.cn/problems/distinct-echo-substrings/,distinct-echo-substrings,字典树、字符串、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/1300-1399/distinct-echo-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1316.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E5%BE%AA%E7%8E%AF%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,48.3%,困难,88 -1317,1300-1399,1317. 将整数转换为两个无零整数的和,将整数转换为两个无零整数的和,https://leetcode.cn/problems/convert-integer-to-the-sum-of-two-no-zero-integers/,convert-integer-to-the-sum-of-two-no-zero-integers,数学,https://algo.itcharge.cn/Solutions/1300-1399/convert-integer-to-the-sum-of-two-no-zero-integers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1317.%20%E5%B0%86%E6%95%B4%E6%95%B0%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%B8%A4%E4%B8%AA%E6%97%A0%E9%9B%B6%E6%95%B4%E6%95%B0%E7%9A%84%E5%92%8C.md,61.9%,简单,258 -1318,1300-1399,1318. 或运算的最小翻转次数,或运算的最小翻转次数,https://leetcode.cn/problems/minimum-flips-to-make-a-or-b-equal-to-c/,minimum-flips-to-make-a-or-b-equal-to-c,位运算,https://algo.itcharge.cn/Solutions/1300-1399/minimum-flips-to-make-a-or-b-equal-to-c/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1318.%20%E6%88%96%E8%BF%90%E7%AE%97%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BF%BB%E8%BD%AC%E6%AC%A1%E6%95%B0.md,66.8%,中等,177 -1319,1300-1399,1319. 连通网络的操作次数,连通网络的操作次数,https://leetcode.cn/problems/number-of-operations-to-make-network-connected/,number-of-operations-to-make-network-connected,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/1300-1399/number-of-operations-to-make-network-connected/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1319.%20%E8%BF%9E%E9%80%9A%E7%BD%91%E7%BB%9C%E7%9A%84%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,62.4%,中等,687 -1320,1300-1399,1320. 二指输入的的最小距离,二指输入的的最小距离,https://leetcode.cn/problems/minimum-distance-to-type-a-word-using-two-fingers/,minimum-distance-to-type-a-word-using-two-fingers,字符串、动态规划,https://algo.itcharge.cn/Solutions/1300-1399/minimum-distance-to-type-a-word-using-two-fingers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1320.%20%E4%BA%8C%E6%8C%87%E8%BE%93%E5%85%A5%E7%9A%84%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B7%9D%E7%A6%BB.md,60.6%,困难,79 -1321,1300-1399,1321. 餐馆营业额变化增长,餐馆营业额变化增长,https://leetcode.cn/problems/restaurant-growth/,restaurant-growth,数据库,https://algo.itcharge.cn/Solutions/1300-1399/restaurant-growth/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1321.%20%E9%A4%90%E9%A6%86%E8%90%A5%E4%B8%9A%E9%A2%9D%E5%8F%98%E5%8C%96%E5%A2%9E%E9%95%BF.md,61.9%,中等,172 -1322,1300-1399,1322. 广告效果,广告效果,https://leetcode.cn/problems/ads-performance/,ads-performance,数据库,https://algo.itcharge.cn/Solutions/1300-1399/ads-performance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1322.%20%E5%B9%BF%E5%91%8A%E6%95%88%E6%9E%9C.md,59.6%,简单,86 -1323,1300-1399,1323. 6 和 9 组成的最大数字,6 和 9 组成的最大数字,https://leetcode.cn/problems/maximum-69-number/,maximum-69-number,贪心、数学,https://algo.itcharge.cn/Solutions/1300-1399/maximum-69-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1323.%206%20%E5%92%8C%209%20%E7%BB%84%E6%88%90%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E5%AD%97.md,75.0%,简单,639 -1324,1300-1399,1324. 竖直打印单词,竖直打印单词,https://leetcode.cn/problems/print-words-vertically/,print-words-vertically,数组、字符串、模拟,https://algo.itcharge.cn/Solutions/1300-1399/print-words-vertically/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1324.%20%E7%AB%96%E7%9B%B4%E6%89%93%E5%8D%B0%E5%8D%95%E8%AF%8D.md,59.2%,中等,179 -1325,1300-1399,1325. 删除给定值的叶子节点,删除给定值的叶子节点,https://leetcode.cn/problems/delete-leaves-with-a-given-value/,delete-leaves-with-a-given-value,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1300-1399/delete-leaves-with-a-given-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1325.%20%E5%88%A0%E9%99%A4%E7%BB%99%E5%AE%9A%E5%80%BC%E7%9A%84%E5%8F%B6%E5%AD%90%E8%8A%82%E7%82%B9.md,73.3%,中等,265 -1326,1300-1399,1326. 灌溉花园的最少水龙头数目,灌溉花园的最少水龙头数目,https://leetcode.cn/problems/minimum-number-of-taps-to-open-to-water-a-garden/,minimum-number-of-taps-to-open-to-water-a-garden,贪心、数组、动态规划,https://algo.itcharge.cn/Solutions/1300-1399/minimum-number-of-taps-to-open-to-water-a-garden/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1326.%20%E7%81%8C%E6%BA%89%E8%8A%B1%E5%9B%AD%E7%9A%84%E6%9C%80%E5%B0%91%E6%B0%B4%E9%BE%99%E5%A4%B4%E6%95%B0%E7%9B%AE.md,54.2%,困难,262 -1327,1300-1399,1327. 列出指定时间段内所有的下单产品,列出指定时间段内所有的下单产品,https://leetcode.cn/problems/list-the-products-ordered-in-a-period/,list-the-products-ordered-in-a-period,数据库,https://algo.itcharge.cn/Solutions/1300-1399/list-the-products-ordered-in-a-period/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1327.%20%E5%88%97%E5%87%BA%E6%8C%87%E5%AE%9A%E6%97%B6%E9%97%B4%E6%AE%B5%E5%86%85%E6%89%80%E6%9C%89%E7%9A%84%E4%B8%8B%E5%8D%95%E4%BA%A7%E5%93%81.md,69.5%,简单,92 -1328,1300-1399,1328. 破坏回文串,破坏回文串,https://leetcode.cn/problems/break-a-palindrome/,break-a-palindrome,贪心、字符串,https://algo.itcharge.cn/Solutions/1300-1399/break-a-palindrome/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1328.%20%E7%A0%B4%E5%9D%8F%E5%9B%9E%E6%96%87%E4%B8%B2.md,47.0%,中等,170 -1329,1300-1399,1329. 将矩阵按对角线排序,将矩阵按对角线排序,https://leetcode.cn/problems/sort-the-matrix-diagonally/,sort-the-matrix-diagonally,数组、矩阵、排序,https://algo.itcharge.cn/Solutions/1300-1399/sort-the-matrix-diagonally/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1329.%20%E5%B0%86%E7%9F%A9%E9%98%B5%E6%8C%89%E5%AF%B9%E8%A7%92%E7%BA%BF%E6%8E%92%E5%BA%8F.md,77.8%,中等,240 -1330,1300-1399,1330. 翻转子数组得到最大的数组值,翻转子数组得到最大的数组值,https://leetcode.cn/problems/reverse-subarray-to-maximize-array-value/,reverse-subarray-to-maximize-array-value,贪心、数组、数学,https://algo.itcharge.cn/Solutions/1300-1399/reverse-subarray-to-maximize-array-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1330.%20%E7%BF%BB%E8%BD%AC%E5%AD%90%E6%95%B0%E7%BB%84%E5%BE%97%E5%88%B0%E6%9C%80%E5%A4%A7%E7%9A%84%E6%95%B0%E7%BB%84%E5%80%BC.md,57.7%,困难,81 -1331,1300-1399,1331. 数组序号转换,数组序号转换,https://leetcode.cn/problems/rank-transform-of-an-array/,rank-transform-of-an-array,数组、哈希表、排序,https://algo.itcharge.cn/Solutions/1300-1399/rank-transform-of-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1331.%20%E6%95%B0%E7%BB%84%E5%BA%8F%E5%8F%B7%E8%BD%AC%E6%8D%A2.md,60.4%,简单,529 -1332,1300-1399,1332. 删除回文子序列,删除回文子序列,https://leetcode.cn/problems/remove-palindromic-subsequences/,remove-palindromic-subsequences,双指针、字符串,https://algo.itcharge.cn/Solutions/1300-1399/remove-palindromic-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1332.%20%E5%88%A0%E9%99%A4%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97.md,77.7%,简单,379 -1333,1300-1399,1333. 餐厅过滤器,餐厅过滤器,https://leetcode.cn/problems/filter-restaurants-by-vegan-friendly-price-and-distance/,filter-restaurants-by-vegan-friendly-price-and-distance,数组、排序,https://algo.itcharge.cn/Solutions/1300-1399/filter-restaurants-by-vegan-friendly-price-and-distance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1333.%20%E9%A4%90%E5%8E%85%E8%BF%87%E6%BB%A4%E5%99%A8.md,56.7%,中等,166 -1334,1300-1399,1334. 阈值距离内邻居最少的城市,阈值距离内邻居最少的城市,https://leetcode.cn/problems/find-the-city-with-the-smallest-number-of-neighbors-at-a-threshold-distance/,find-the-city-with-the-smallest-number-of-neighbors-at-a-threshold-distance,图、动态规划、最短路,https://algo.itcharge.cn/Solutions/1300-1399/find-the-city-with-the-smallest-number-of-neighbors-at-a-threshold-distance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1334.%20%E9%98%88%E5%80%BC%E8%B7%9D%E7%A6%BB%E5%86%85%E9%82%BB%E5%B1%85%E6%9C%80%E5%B0%91%E7%9A%84%E5%9F%8E%E5%B8%82.md,52.7%,中等,168 -1335,1300-1399,1335. 工作计划的最低难度,工作计划的最低难度,https://leetcode.cn/problems/minimum-difficulty-of-a-job-schedule/,minimum-difficulty-of-a-job-schedule,数组、动态规划,https://algo.itcharge.cn/Solutions/1300-1399/minimum-difficulty-of-a-job-schedule/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1335.%20%E5%B7%A5%E4%BD%9C%E8%AE%A1%E5%88%92%E7%9A%84%E6%9C%80%E4%BD%8E%E9%9A%BE%E5%BA%A6.md,66.7%,困难,175 -1336,1300-1399,1336. 每次访问的交易次数,每次访问的交易次数,https://leetcode.cn/problems/number-of-transactions-per-visit/,number-of-transactions-per-visit,数据库,https://algo.itcharge.cn/Solutions/1300-1399/number-of-transactions-per-visit/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1336.%20%E6%AF%8F%E6%AC%A1%E8%AE%BF%E9%97%AE%E7%9A%84%E4%BA%A4%E6%98%93%E6%AC%A1%E6%95%B0.md,45.5%,困难,81 -1337,1300-1399,1337. 矩阵中战斗力最弱的 K 行,矩阵中战斗力最弱的 K 行,https://leetcode.cn/problems/the-k-weakest-rows-in-a-matrix/,the-k-weakest-rows-in-a-matrix,数组、二分查找、矩阵、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1300-1399/the-k-weakest-rows-in-a-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1337.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E6%88%98%E6%96%97%E5%8A%9B%E6%9C%80%E5%BC%B1%E7%9A%84%20K%20%E8%A1%8C.md,68.6%,简单,909 -1338,1300-1399,1338. 数组大小减半,数组大小减半,https://leetcode.cn/problems/reduce-array-size-to-the-half/,reduce-array-size-to-the-half,贪心、数组、哈希表、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1300-1399/reduce-array-size-to-the-half/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1338.%20%E6%95%B0%E7%BB%84%E5%A4%A7%E5%B0%8F%E5%87%8F%E5%8D%8A.md,64.9%,中等,186 -1339,1300-1399,1339. 分裂二叉树的最大乘积,分裂二叉树的最大乘积,https://leetcode.cn/problems/maximum-product-of-splitted-binary-tree/,maximum-product-of-splitted-binary-tree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1300-1399/maximum-product-of-splitted-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1339.%20%E5%88%86%E8%A3%82%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B9%98%E7%A7%AF.md,41.5%,中等,189 -1340,1300-1399,1340. 跳跃游戏 V,跳跃游戏 V,https://leetcode.cn/problems/jump-game-v/,jump-game-v,数组、动态规划、排序,https://algo.itcharge.cn/Solutions/1300-1399/jump-game-v/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1340.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20V.md,59.3%,困难,136 -1341,1300-1399,1341. 电影评分,电影评分,https://leetcode.cn/problems/movie-rating/,movie-rating,数据库,https://algo.itcharge.cn/Solutions/1300-1399/movie-rating/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1341.%20%E7%94%B5%E5%BD%B1%E8%AF%84%E5%88%86.md,40.5%,中等,121 -1342,1300-1399,1342. 将数字变成 0 的操作次数,将数字变成 0 的操作次数,https://leetcode.cn/problems/number-of-steps-to-reduce-a-number-to-zero/,number-of-steps-to-reduce-a-number-to-zero,位运算、数学,https://algo.itcharge.cn/Solutions/1300-1399/number-of-steps-to-reduce-a-number-to-zero/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1342.%20%E5%B0%86%E6%95%B0%E5%AD%97%E5%8F%98%E6%88%90%200%20%E7%9A%84%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,76.0%,简单,1576 -1343,1300-1399,1343. 大小为 K 且平均值大于等于阈值的子数组数目,大小为 K 且平均值大于等于阈值的子数组数目,https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/,number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold,数组、滑动窗口,https://algo.itcharge.cn/Solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1343.%20%E5%A4%A7%E5%B0%8F%E4%B8%BA%20K%20%E4%B8%94%E5%B9%B3%E5%9D%87%E5%80%BC%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E9%98%88%E5%80%BC%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md,57.4%,中等,303 -1344,1300-1399,1344. 时钟指针的夹角,时钟指针的夹角,https://leetcode.cn/problems/angle-between-hands-of-a-clock/,angle-between-hands-of-a-clock,数学,https://algo.itcharge.cn/Solutions/1300-1399/angle-between-hands-of-a-clock/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1344.%20%E6%97%B6%E9%92%9F%E6%8C%87%E9%92%88%E7%9A%84%E5%A4%B9%E8%A7%92.md,60.2%,中等,179 -1345,1300-1399,1345. 跳跃游戏 IV,跳跃游戏 IV,https://leetcode.cn/problems/jump-game-iv/,jump-game-iv,广度优先搜索、数组、哈希表,https://algo.itcharge.cn/Solutions/1300-1399/jump-game-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1345.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20IV.md,45.7%,困难,312 -1346,1300-1399,1346. 检查整数及其两倍数是否存在,检查整数及其两倍数是否存在,https://leetcode.cn/problems/check-if-n-and-its-double-exist/,check-if-n-and-its-double-exist,数组、哈希表、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/1300-1399/check-if-n-and-its-double-exist/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1346.%20%E6%A3%80%E6%9F%A5%E6%95%B4%E6%95%B0%E5%8F%8A%E5%85%B6%E4%B8%A4%E5%80%8D%E6%95%B0%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8.md,42.0%,简单,545 -1347,1300-1399,1347. 制造字母异位词的最小步骤数,制造字母异位词的最小步骤数,https://leetcode.cn/problems/minimum-number-of-steps-to-make-two-strings-anagram/,minimum-number-of-steps-to-make-two-strings-anagram,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/1300-1399/minimum-number-of-steps-to-make-two-strings-anagram/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1347.%20%E5%88%B6%E9%80%A0%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E6%AD%A5%E9%AA%A4%E6%95%B0.md,76.1%,中等,175 -1348,1300-1399,1348. 推文计数,推文计数,https://leetcode.cn/problems/tweet-counts-per-frequency/,tweet-counts-per-frequency,设计、哈希表、二分查找、有序集合、排序,https://algo.itcharge.cn/Solutions/1300-1399/tweet-counts-per-frequency/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1348.%20%E6%8E%A8%E6%96%87%E8%AE%A1%E6%95%B0.md,35.0%,中等,80 -1349,1300-1399,1349. 参加考试的最大学生数,参加考试的最大学生数,https://leetcode.cn/problems/maximum-students-taking-exam/,maximum-students-taking-exam,位运算、数组、动态规划、状态压缩、矩阵,https://algo.itcharge.cn/Solutions/1300-1399/maximum-students-taking-exam/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1349.%20%E5%8F%82%E5%8A%A0%E8%80%83%E8%AF%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0.md,54.3%,困难,138 -1350,1300-1399,1350. 院系无效的学生,院系无效的学生,https://leetcode.cn/problems/students-with-invalid-departments/,students-with-invalid-departments,数据库,https://algo.itcharge.cn/Solutions/1300-1399/students-with-invalid-departments/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1350.%20%E9%99%A2%E7%B3%BB%E6%97%A0%E6%95%88%E7%9A%84%E5%AD%A6%E7%94%9F.md,85.0%,简单,106 -1351,1300-1399,1351. 统计有序矩阵中的负数,统计有序矩阵中的负数,https://leetcode.cn/problems/count-negative-numbers-in-a-sorted-matrix/,count-negative-numbers-in-a-sorted-matrix,数组、二分查找、矩阵,https://algo.itcharge.cn/Solutions/1300-1399/count-negative-numbers-in-a-sorted-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1351.%20%E7%BB%9F%E8%AE%A1%E6%9C%89%E5%BA%8F%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E8%B4%9F%E6%95%B0.md,74.2%,简单,797 -1352,1300-1399,1352. 最后 K 个数的乘积,最后 K 个数的乘积,https://leetcode.cn/problems/product-of-the-last-k-numbers/,product-of-the-last-k-numbers,设计、队列、数组、数学、数据流,https://algo.itcharge.cn/Solutions/1300-1399/product-of-the-last-k-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1352.%20%E6%9C%80%E5%90%8E%20K%20%E4%B8%AA%E6%95%B0%E7%9A%84%E4%B9%98%E7%A7%AF.md,48.4%,中等,130 -1353,1300-1399,1353. 最多可以参加的会议数目,最多可以参加的会议数目,https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended/,maximum-number-of-events-that-can-be-attended,贪心、数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1300-1399/maximum-number-of-events-that-can-be-attended/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1353.%20%E6%9C%80%E5%A4%9A%E5%8F%AF%E4%BB%A5%E5%8F%82%E5%8A%A0%E7%9A%84%E4%BC%9A%E8%AE%AE%E6%95%B0%E7%9B%AE.md,29.5%,中等,213 -1354,1300-1399,1354. 多次求和构造目标数组,多次求和构造目标数组,https://leetcode.cn/problems/construct-target-array-with-multiple-sums/,construct-target-array-with-multiple-sums,数组、堆(优先队列),https://algo.itcharge.cn/Solutions/1300-1399/construct-target-array-with-multiple-sums/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1354.%20%E5%A4%9A%E6%AC%A1%E6%B1%82%E5%92%8C%E6%9E%84%E9%80%A0%E7%9B%AE%E6%A0%87%E6%95%B0%E7%BB%84.md,29.0%,困难,93 -1355,1300-1399,1355. 活动参与者,活动参与者,https://leetcode.cn/problems/activity-participants/,activity-participants,数据库,https://algo.itcharge.cn/Solutions/1300-1399/activity-participants/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1355.%20%E6%B4%BB%E5%8A%A8%E5%8F%82%E4%B8%8E%E8%80%85.md,66.8%,中等,86 -1356,1300-1399,1356. 根据数字二进制下 1 的数目排序,根据数字二进制下 1 的数目排序,https://leetcode.cn/problems/sort-integers-by-the-number-of-1-bits/,sort-integers-by-the-number-of-1-bits,位运算、数组、计数、排序,https://algo.itcharge.cn/Solutions/1300-1399/sort-integers-by-the-number-of-1-bits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1356.%20%E6%A0%B9%E6%8D%AE%E6%95%B0%E5%AD%97%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B8%8B%201%20%E7%9A%84%E6%95%B0%E7%9B%AE%E6%8E%92%E5%BA%8F.md,73.5%,简单,686 -1357,1300-1399,1357. 每隔 n 个顾客打折,每隔 n 个顾客打折,https://leetcode.cn/problems/apply-discount-every-n-orders/,apply-discount-every-n-orders,设计、数组、哈希表,https://algo.itcharge.cn/Solutions/1300-1399/apply-discount-every-n-orders/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1357.%20%E6%AF%8F%E9%9A%94%20n%20%E4%B8%AA%E9%A1%BE%E5%AE%A2%E6%89%93%E6%8A%98.md,54.5%,中等,71 -1358,1300-1399,1358. 包含所有三种字符的子字符串数目,包含所有三种字符的子字符串数目,https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/,number-of-substrings-containing-all-three-characters,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/1300-1399/number-of-substrings-containing-all-three-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1358.%20%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E4%B8%89%E7%A7%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%9B%AE.md,52.9%,中等,184 -1359,1300-1399,1359. 有效的快递序列数目,有效的快递序列数目,https://leetcode.cn/problems/count-all-valid-pickup-and-delivery-options/,count-all-valid-pickup-and-delivery-options,数学、动态规划、组合数学,https://algo.itcharge.cn/Solutions/1300-1399/count-all-valid-pickup-and-delivery-options/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1359.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%BF%AB%E9%80%92%E5%BA%8F%E5%88%97%E6%95%B0%E7%9B%AE.md,58.4%,困难,122 -1360,1300-1399,1360. 日期之间隔几天,日期之间隔几天,https://leetcode.cn/problems/number-of-days-between-two-dates/,number-of-days-between-two-dates,数学、字符串,https://algo.itcharge.cn/Solutions/1300-1399/number-of-days-between-two-dates/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1360.%20%E6%97%A5%E6%9C%9F%E4%B9%8B%E9%97%B4%E9%9A%94%E5%87%A0%E5%A4%A9.md,51.1%,简单,239 -1361,1300-1399,1361. 验证二叉树,验证二叉树,https://leetcode.cn/problems/validate-binary-tree-nodes/,validate-binary-tree-nodes,树、深度优先搜索、广度优先搜索、并查集、图、二叉树,https://algo.itcharge.cn/Solutions/1300-1399/validate-binary-tree-nodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1361.%20%E9%AA%8C%E8%AF%81%E4%BA%8C%E5%8F%89%E6%A0%91.md,39.9%,中等,302 -1362,1300-1399,1362. 最接近的因数,最接近的因数,https://leetcode.cn/problems/closest-divisors/,closest-divisors,数学,https://algo.itcharge.cn/Solutions/1300-1399/closest-divisors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1362.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E5%9B%A0%E6%95%B0.md,54.7%,中等,97 -1363,1300-1399,1363. 形成三的最大倍数,形成三的最大倍数,https://leetcode.cn/problems/largest-multiple-of-three/,largest-multiple-of-three,贪心、数组、动态规划,https://algo.itcharge.cn/Solutions/1300-1399/largest-multiple-of-three/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1363.%20%E5%BD%A2%E6%88%90%E4%B8%89%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%8D%E6%95%B0.md,35.9%,困难,134 -1364,1300-1399,1364. 顾客的可信联系人数量,顾客的可信联系人数量,https://leetcode.cn/problems/number-of-trusted-contacts-of-a-customer/,number-of-trusted-contacts-of-a-customer,数据库,https://algo.itcharge.cn/Solutions/1300-1399/number-of-trusted-contacts-of-a-customer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1364.%20%E9%A1%BE%E5%AE%A2%E7%9A%84%E5%8F%AF%E4%BF%A1%E8%81%94%E7%B3%BB%E4%BA%BA%E6%95%B0%E9%87%8F.md,68.3%,中等,90 -1365,1300-1399,1365. 有多少小于当前数字的数字,有多少小于当前数字的数字,https://leetcode.cn/problems/how-many-numbers-are-smaller-than-the-current-number/,how-many-numbers-are-smaller-than-the-current-number,数组、哈希表、计数、排序,https://algo.itcharge.cn/Solutions/1300-1399/how-many-numbers-are-smaller-than-the-current-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1365.%20%E6%9C%89%E5%A4%9A%E5%B0%91%E5%B0%8F%E4%BA%8E%E5%BD%93%E5%89%8D%E6%95%B0%E5%AD%97%E7%9A%84%E6%95%B0%E5%AD%97.md,82.4%,简单,1313 -1366,1300-1399,1366. 通过投票对团队排名,通过投票对团队排名,https://leetcode.cn/problems/rank-teams-by-votes/,rank-teams-by-votes,数组、哈希表、字符串、计数、排序,https://algo.itcharge.cn/Solutions/1300-1399/rank-teams-by-votes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1366.%20%E9%80%9A%E8%BF%87%E6%8A%95%E7%A5%A8%E5%AF%B9%E5%9B%A2%E9%98%9F%E6%8E%92%E5%90%8D.md,51.1%,中等,213 -1367,1300-1399,1367. 二叉树中的链表,二叉树中的链表,https://leetcode.cn/problems/linked-list-in-binary-tree/,linked-list-in-binary-tree,树、深度优先搜索、广度优先搜索、链表、二叉树,https://algo.itcharge.cn/Solutions/1300-1399/linked-list-in-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1367.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E9%93%BE%E8%A1%A8.md,43.7%,中等,354 -1368,1300-1399,1368. 使网格图至少有一条有效路径的最小代价,使网格图至少有一条有效路径的最小代价,https://leetcode.cn/problems/minimum-cost-to-make-at-least-one-valid-path-in-a-grid/,minimum-cost-to-make-at-least-one-valid-path-in-a-grid,广度优先搜索、图、数组、矩阵、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/1300-1399/minimum-cost-to-make-at-least-one-valid-path-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1368.%20%E4%BD%BF%E7%BD%91%E6%A0%BC%E5%9B%BE%E8%87%B3%E5%B0%91%E6%9C%89%E4%B8%80%E6%9D%A1%E6%9C%89%E6%95%88%E8%B7%AF%E5%BE%84%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BB%A3%E4%BB%B7.md,59.6%,困难,153 -1369,1300-1399,1369. 获取最近第二次的活动,获取最近第二次的活动,https://leetcode.cn/problems/get-the-second-most-recent-activity/,get-the-second-most-recent-activity,数据库,https://algo.itcharge.cn/Solutions/1300-1399/get-the-second-most-recent-activity/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1369.%20%E8%8E%B7%E5%8F%96%E6%9C%80%E8%BF%91%E7%AC%AC%E4%BA%8C%E6%AC%A1%E7%9A%84%E6%B4%BB%E5%8A%A8.md,61.6%,困难,84 -1370,1300-1399,1370. 上升下降字符串,上升下降字符串,https://leetcode.cn/problems/increasing-decreasing-string/,increasing-decreasing-string,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/1300-1399/increasing-decreasing-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1370.%20%E4%B8%8A%E5%8D%87%E4%B8%8B%E9%99%8D%E5%AD%97%E7%AC%A6%E4%B8%B2.md,79.0%,简单,670 -1371,1300-1399,1371. 每个元音包含偶数次的最长子字符串,每个元音包含偶数次的最长子字符串,https://leetcode.cn/problems/find-the-longest-substring-containing-vowels-in-even-counts/,find-the-longest-substring-containing-vowels-in-even-counts,位运算、哈希表、字符串、前缀和,https://algo.itcharge.cn/Solutions/1300-1399/find-the-longest-substring-containing-vowels-in-even-counts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1371.%20%E6%AF%8F%E4%B8%AA%E5%85%83%E9%9F%B3%E5%8C%85%E5%90%AB%E5%81%B6%E6%95%B0%E6%AC%A1%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,59.1%,中等,325 -1372,1300-1399,1372. 二叉树中的最长交错路径,二叉树中的最长交错路径,https://leetcode.cn/problems/longest-zigzag-path-in-a-binary-tree/,longest-zigzag-path-in-a-binary-tree,树、深度优先搜索、动态规划、二叉树,https://algo.itcharge.cn/Solutions/1300-1399/longest-zigzag-path-in-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1372.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E9%95%BF%E4%BA%A4%E9%94%99%E8%B7%AF%E5%BE%84.md,54.7%,中等,264 -1373,1300-1399,1373. 二叉搜索子树的最大键值和,二叉搜索子树的最大键值和,https://leetcode.cn/problems/maximum-sum-bst-in-binary-tree/,maximum-sum-bst-in-binary-tree,树、深度优先搜索、二叉搜索树、动态规划、二叉树,https://algo.itcharge.cn/Solutions/1300-1399/maximum-sum-bst-in-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1373.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E5%AD%90%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E9%94%AE%E5%80%BC%E5%92%8C.md,47.8%,困难,410 -1374,1300-1399,1374. 生成每种字符都是奇数个的字符串,生成每种字符都是奇数个的字符串,https://leetcode.cn/problems/generate-a-string-with-characters-that-have-odd-counts/,generate-a-string-with-characters-that-have-odd-counts,字符串,https://algo.itcharge.cn/Solutions/1300-1399/generate-a-string-with-characters-that-have-odd-counts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1374.%20%E7%94%9F%E6%88%90%E6%AF%8F%E7%A7%8D%E5%AD%97%E7%AC%A6%E9%83%BD%E6%98%AF%E5%A5%87%E6%95%B0%E4%B8%AA%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,77.7%,简单,551 -1375,1300-1399,1375. 二进制字符串前缀一致的次数,二进制字符串前缀一致的次数,https://leetcode.cn/problems/number-of-times-binary-string-is-prefix-aligned/,number-of-times-binary-string-is-prefix-aligned,数组,https://algo.itcharge.cn/Solutions/1300-1399/number-of-times-binary-string-is-prefix-aligned/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1375.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%89%8D%E7%BC%80%E4%B8%80%E8%87%B4%E7%9A%84%E6%AC%A1%E6%95%B0.md,68.1%,中等,423 -1376,1300-1399,1376. 通知所有员工所需的时间,通知所有员工所需的时间,https://leetcode.cn/problems/time-needed-to-inform-all-employees/,time-needed-to-inform-all-employees,树、深度优先搜索、广度优先搜索,https://algo.itcharge.cn/Solutions/1300-1399/time-needed-to-inform-all-employees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1376.%20%E9%80%9A%E7%9F%A5%E6%89%80%E6%9C%89%E5%91%98%E5%B7%A5%E6%89%80%E9%9C%80%E7%9A%84%E6%97%B6%E9%97%B4.md,60.2%,中等,431 -1377,1300-1399,1377. T 秒后青蛙的位置,T 秒后青蛙的位置,https://leetcode.cn/problems/frog-position-after-t-seconds/,frog-position-after-t-seconds,树、深度优先搜索、广度优先搜索、图,https://algo.itcharge.cn/Solutions/1300-1399/frog-position-after-t-seconds/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1377.%20T%20%E7%A7%92%E5%90%8E%E9%9D%92%E8%9B%99%E7%9A%84%E4%BD%8D%E7%BD%AE.md,42.7%,困难,273 -1378,1300-1399,1378. 使用唯一标识码替换员工ID,使用唯一标识码替换员工ID,https://leetcode.cn/problems/replace-employee-id-with-the-unique-identifier/,replace-employee-id-with-the-unique-identifier,数据库,https://algo.itcharge.cn/Solutions/1300-1399/replace-employee-id-with-the-unique-identifier/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1378.%20%E4%BD%BF%E7%94%A8%E5%94%AF%E4%B8%80%E6%A0%87%E8%AF%86%E7%A0%81%E6%9B%BF%E6%8D%A2%E5%91%98%E5%B7%A5ID.md,85.7%,简单,105 -1379,1300-1399,1379. 找出克隆二叉树中的相同节点,找出克隆二叉树中的相同节点,https://leetcode.cn/problems/find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree/,find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1300-1399/find-a-corresponding-node-of-a-binary-tree-in-a-clone-of-that-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1379.%20%E6%89%BE%E5%87%BA%E5%85%8B%E9%9A%86%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E7%9B%B8%E5%90%8C%E8%8A%82%E7%82%B9.md,83.3%,简单,248 -1380,1300-1399,1380. 矩阵中的幸运数,矩阵中的幸运数,https://leetcode.cn/problems/lucky-numbers-in-a-matrix/,lucky-numbers-in-a-matrix,数组、矩阵,https://algo.itcharge.cn/Solutions/1300-1399/lucky-numbers-in-a-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1380.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E5%B9%B8%E8%BF%90%E6%95%B0.md,76.4%,简单,758 -1381,1300-1399,1381. 设计一个支持增量操作的栈,设计一个支持增量操作的栈,https://leetcode.cn/problems/design-a-stack-with-increment-operation/,design-a-stack-with-increment-operation,栈、设计、数组,https://algo.itcharge.cn/Solutions/1300-1399/design-a-stack-with-increment-operation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1381.%20%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E6%94%AF%E6%8C%81%E5%A2%9E%E9%87%8F%E6%93%8D%E4%BD%9C%E7%9A%84%E6%A0%88.md,72.4%,中等,230 -1382,1300-1399,1382. 将二叉搜索树变平衡,将二叉搜索树变平衡,https://leetcode.cn/problems/balance-a-binary-search-tree/,balance-a-binary-search-tree,贪心、树、深度优先搜索、二叉搜索树、分治、二叉树,https://algo.itcharge.cn/Solutions/1300-1399/balance-a-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1382.%20%E5%B0%86%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E5%8F%98%E5%B9%B3%E8%A1%A1.md,73.6%,中等,300 -1383,1300-1399,1383. 最大的团队表现值,最大的团队表现值,https://leetcode.cn/problems/maximum-performance-of-a-team/,maximum-performance-of-a-team,贪心、数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1300-1399/maximum-performance-of-a-team/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1383.%20%E6%9C%80%E5%A4%A7%E7%9A%84%E5%9B%A2%E9%98%9F%E8%A1%A8%E7%8E%B0%E5%80%BC.md,35.3%,困难,128 -1384,1300-1399,1384. 按年度列出销售总额,按年度列出销售总额,https://leetcode.cn/problems/total-sales-amount-by-year/,total-sales-amount-by-year,数据库,https://algo.itcharge.cn/Solutions/1300-1399/total-sales-amount-by-year/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1384.%20%E6%8C%89%E5%B9%B4%E5%BA%A6%E5%88%97%E5%87%BA%E9%94%80%E5%94%AE%E6%80%BB%E9%A2%9D.md,57.7%,困难,101 -1385,1300-1399,1385. 两个数组间的距离值,两个数组间的距离值,https://leetcode.cn/problems/find-the-distance-value-between-two-arrays/,find-the-distance-value-between-two-arrays,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/1300-1399/find-the-distance-value-between-two-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1385.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E9%97%B4%E7%9A%84%E8%B7%9D%E7%A6%BB%E5%80%BC.md,64.1%,简单,511 -1386,1300-1399,1386. 安排电影院座位,安排电影院座位,https://leetcode.cn/problems/cinema-seat-allocation/,cinema-seat-allocation,贪心、位运算、数组、哈希表,https://algo.itcharge.cn/Solutions/1300-1399/cinema-seat-allocation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1386.%20%E5%AE%89%E6%8E%92%E7%94%B5%E5%BD%B1%E9%99%A2%E5%BA%A7%E4%BD%8D.md,35.5%,中等,175 -1387,1300-1399,1387. 将整数按权重排序,将整数按权重排序,https://leetcode.cn/problems/sort-integers-by-the-power-value/,sort-integers-by-the-power-value,记忆化搜索、动态规划、排序,https://algo.itcharge.cn/Solutions/1300-1399/sort-integers-by-the-power-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1387.%20%E5%B0%86%E6%95%B4%E6%95%B0%E6%8C%89%E6%9D%83%E9%87%8D%E6%8E%92%E5%BA%8F.md,69.5%,中等,268 -1388,1300-1399,1388. 3n 块披萨,3n 块披萨,https://leetcode.cn/problems/pizza-with-3n-slices/,pizza-with-3n-slices,贪心、数组、动态规划、堆(优先队列),https://algo.itcharge.cn/Solutions/1300-1399/pizza-with-3n-slices/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1388.%203n%20%E5%9D%97%E6%8A%AB%E8%90%A8.md,56.5%,困难,76 -1389,1300-1399,1389. 按既定顺序创建目标数组,按既定顺序创建目标数组,https://leetcode.cn/problems/create-target-array-in-the-given-order/,create-target-array-in-the-given-order,数组、模拟,https://algo.itcharge.cn/Solutions/1300-1399/create-target-array-in-the-given-order/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1389.%20%E6%8C%89%E6%97%A2%E5%AE%9A%E9%A1%BA%E5%BA%8F%E5%88%9B%E5%BB%BA%E7%9B%AE%E6%A0%87%E6%95%B0%E7%BB%84.md,83.0%,简单,582 -1390,1300-1399,1390. 四因数,四因数,https://leetcode.cn/problems/four-divisors/,four-divisors,数组、数学,https://algo.itcharge.cn/Solutions/1300-1399/four-divisors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1390.%20%E5%9B%9B%E5%9B%A0%E6%95%B0.md,38.9%,中等,146 -1391,1300-1399,1391. 检查网格中是否存在有效路径,检查网格中是否存在有效路径,https://leetcode.cn/problems/check-if-there-is-a-valid-path-in-a-grid/,check-if-there-is-a-valid-path-in-a-grid,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/1300-1399/check-if-there-is-a-valid-path-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1391.%20%E6%A3%80%E6%9F%A5%E7%BD%91%E6%A0%BC%E4%B8%AD%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E6%9C%89%E6%95%88%E8%B7%AF%E5%BE%84.md,42.0%,中等,266 -1392,1300-1399,1392. 最长快乐前缀,最长快乐前缀,https://leetcode.cn/problems/longest-happy-prefix/,longest-happy-prefix,字符串、字符串匹配、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/1300-1399/longest-happy-prefix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1392.%20%E6%9C%80%E9%95%BF%E5%BF%AB%E4%B9%90%E5%89%8D%E7%BC%80.md,44.6%,困难,232 -1393,1300-1399,1393. 股票的资本损益,股票的资本损益,https://leetcode.cn/problems/capital-gainloss/,capital-gainloss,数据库,https://algo.itcharge.cn/Solutions/1300-1399/capital-gainloss/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1393.%20%E8%82%A1%E7%A5%A8%E7%9A%84%E8%B5%84%E6%9C%AC%E6%8D%9F%E7%9B%8A.md,83.8%,中等,260 -1394,1300-1399,1394. 找出数组中的幸运数,找出数组中的幸运数,https://leetcode.cn/problems/find-lucky-integer-in-an-array/,find-lucky-integer-in-an-array,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/1300-1399/find-lucky-integer-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1394.%20%E6%89%BE%E5%87%BA%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%B9%B8%E8%BF%90%E6%95%B0.md,65.6%,简单,430 -1395,1300-1399,1395. 统计作战单位数,统计作战单位数,https://leetcode.cn/problems/count-number-of-teams/,count-number-of-teams,树状数组、数组、动态规划,https://algo.itcharge.cn/Solutions/1300-1399/count-number-of-teams/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1395.%20%E7%BB%9F%E8%AE%A1%E4%BD%9C%E6%88%98%E5%8D%95%E4%BD%8D%E6%95%B0.md,71.3%,中等,294 -1396,1300-1399,1396. 设计地铁系统,设计地铁系统,https://leetcode.cn/problems/design-underground-system/,design-underground-system,设计、哈希表、字符串,https://algo.itcharge.cn/Solutions/1300-1399/design-underground-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1396.%20%E8%AE%BE%E8%AE%A1%E5%9C%B0%E9%93%81%E7%B3%BB%E7%BB%9F.md,41.9%,中等,266 -1397,1300-1399,1397. 找到所有好字符串,找到所有好字符串,https://leetcode.cn/problems/find-all-good-strings/,find-all-good-strings,字符串、动态规划、字符串匹配,https://algo.itcharge.cn/Solutions/1300-1399/find-all-good-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1397.%20%E6%89%BE%E5%88%B0%E6%89%80%E6%9C%89%E5%A5%BD%E5%AD%97%E7%AC%A6%E4%B8%B2.md,43.8%,困难,67 -1398,1300-1399,1398. 购买了产品 A 和产品 B 却没有购买产品 C 的顾客,购买了产品 A 和产品 B 却没有购买产品 C 的顾客,https://leetcode.cn/problems/customers-who-bought-products-a-and-b-but-not-c/,customers-who-bought-products-a-and-b-but-not-c,数据库,https://algo.itcharge.cn/Solutions/1300-1399/customers-who-bought-products-a-and-b-but-not-c/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1398.%20%E8%B4%AD%E4%B9%B0%E4%BA%86%E4%BA%A7%E5%93%81%20A%20%E5%92%8C%E4%BA%A7%E5%93%81%20B%20%E5%8D%B4%E6%B2%A1%E6%9C%89%E8%B4%AD%E4%B9%B0%E4%BA%A7%E5%93%81%20C%20%E7%9A%84%E9%A1%BE%E5%AE%A2.md,72.2%,中等,145 -1399,1300-1399,1399. 统计最大组的数目,统计最大组的数目,https://leetcode.cn/problems/count-largest-group/,count-largest-group,哈希表、数学,https://algo.itcharge.cn/Solutions/1300-1399/count-largest-group/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1399.%20%E7%BB%9F%E8%AE%A1%E6%9C%80%E5%A4%A7%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,67.0%,简单,211 -1400,1400-1499,1400. 构造 K 个回文字符串,构造 K 个回文字符串,https://leetcode.cn/problems/construct-k-palindrome-strings/,construct-k-palindrome-strings,贪心、哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/1400-1499/construct-k-palindrome-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1400.%20%E6%9E%84%E9%80%A0%20K%20%E4%B8%AA%E5%9B%9E%E6%96%87%E5%AD%97%E7%AC%A6%E4%B8%B2.md,61.3%,中等,151 -1401,1400-1499,1401. 圆和矩形是否有重叠,圆和矩形是否有重叠,https://leetcode.cn/problems/circle-and-rectangle-overlapping/,circle-and-rectangle-overlapping,几何、数学,https://algo.itcharge.cn/Solutions/1400-1499/circle-and-rectangle-overlapping/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1401.%20%E5%9C%86%E5%92%8C%E7%9F%A9%E5%BD%A2%E6%98%AF%E5%90%A6%E6%9C%89%E9%87%8D%E5%8F%A0.md,51.7%,中等,251 -1402,1400-1499,1402. 做菜顺序,做菜顺序,https://leetcode.cn/problems/reducing-dishes/,reducing-dishes,贪心、数组、动态规划、排序,https://algo.itcharge.cn/Solutions/1400-1499/reducing-dishes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1402.%20%E5%81%9A%E8%8F%9C%E9%A1%BA%E5%BA%8F.md,76.1%,困难,244 -1403,1400-1499,1403. 非递增顺序的最小子序列,非递增顺序的最小子序列,https://leetcode.cn/problems/minimum-subsequence-in-non-increasing-order/,minimum-subsequence-in-non-increasing-order,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1400-1499/minimum-subsequence-in-non-increasing-order/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1403.%20%E9%9D%9E%E9%80%92%E5%A2%9E%E9%A1%BA%E5%BA%8F%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%90%E5%BA%8F%E5%88%97.md,73.3%,简单,756 -1404,1400-1499,1404. 将二进制表示减到 1 的步骤数,将二进制表示减到 1 的步骤数,https://leetcode.cn/problems/number-of-steps-to-reduce-a-number-in-binary-representation-to-one/,number-of-steps-to-reduce-a-number-in-binary-representation-to-one,位运算、字符串,https://algo.itcharge.cn/Solutions/1400-1499/number-of-steps-to-reduce-a-number-in-binary-representation-to-one/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1404.%20%E5%B0%86%E4%BA%8C%E8%BF%9B%E5%88%B6%E8%A1%A8%E7%A4%BA%E5%87%8F%E5%88%B0%201%20%E7%9A%84%E6%AD%A5%E9%AA%A4%E6%95%B0.md,50.9%,中等,198 -1405,1400-1499,1405. 最长快乐字符串,最长快乐字符串,https://leetcode.cn/problems/longest-happy-string/,longest-happy-string,贪心、字符串、堆(优先队列),https://algo.itcharge.cn/Solutions/1400-1499/longest-happy-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1405.%20%E6%9C%80%E9%95%BF%E5%BF%AB%E4%B9%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,63.6%,中等,521 -1406,1400-1499,1406. 石子游戏 III,石子游戏 III,https://leetcode.cn/problems/stone-game-iii/,stone-game-iii,数组、数学、动态规划、博弈,https://algo.itcharge.cn/Solutions/1400-1499/stone-game-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1406.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%20III.md,59.2%,困难,124 -1407,1400-1499,1407. 排名靠前的旅行者,排名靠前的旅行者,https://leetcode.cn/problems/top-travellers/,top-travellers,数据库,https://algo.itcharge.cn/Solutions/1400-1499/top-travellers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1407.%20%E6%8E%92%E5%90%8D%E9%9D%A0%E5%89%8D%E7%9A%84%E6%97%85%E8%A1%8C%E8%80%85.md,56.8%,简单,265 -1408,1400-1499,1408. 数组中的字符串匹配,数组中的字符串匹配,https://leetcode.cn/problems/string-matching-in-an-array/,string-matching-in-an-array,数组、字符串、字符串匹配,https://algo.itcharge.cn/Solutions/1400-1499/string-matching-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1408.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D.md,64.4%,简单,558 -1409,1400-1499,1409. 查询带键的排列,查询带键的排列,https://leetcode.cn/problems/queries-on-a-permutation-with-key/,queries-on-a-permutation-with-key,树状数组、数组、模拟,https://algo.itcharge.cn/Solutions/1400-1499/queries-on-a-permutation-with-key/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1409.%20%E6%9F%A5%E8%AF%A2%E5%B8%A6%E9%94%AE%E7%9A%84%E6%8E%92%E5%88%97.md,81.4%,中等,197 -1410,1400-1499,1410. HTML 实体解析器,HTML 实体解析器,https://leetcode.cn/problems/html-entity-parser/,html-entity-parser,哈希表、字符串,https://algo.itcharge.cn/Solutions/1400-1499/html-entity-parser/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1410.%20HTML%20%E5%AE%9E%E4%BD%93%E8%A7%A3%E6%9E%90%E5%99%A8.md,47.0%,中等,143 -1411,1400-1499,1411. 给 N x 3 网格图涂色的方案数,给 N x 3 网格图涂色的方案数,https://leetcode.cn/problems/number-of-ways-to-paint-n-3-grid/,number-of-ways-to-paint-n-3-grid,动态规划,https://algo.itcharge.cn/Solutions/1400-1499/number-of-ways-to-paint-n-3-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1411.%20%E7%BB%99%20N%20x%203%20%E7%BD%91%E6%A0%BC%E5%9B%BE%E6%B6%82%E8%89%B2%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,57.2%,困难,168 -1412,1400-1499,1412. 查找成绩处于中游的学生,查找成绩处于中游的学生,https://leetcode.cn/problems/find-the-quiet-students-in-all-exams/,find-the-quiet-students-in-all-exams,数据库,https://algo.itcharge.cn/Solutions/1400-1499/find-the-quiet-students-in-all-exams/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1412.%20%E6%9F%A5%E6%89%BE%E6%88%90%E7%BB%A9%E5%A4%84%E4%BA%8E%E4%B8%AD%E6%B8%B8%E7%9A%84%E5%AD%A6%E7%94%9F.md,54.4%,困难,121 -1413,1400-1499,1413. 逐步求和得到正数的最小值,逐步求和得到正数的最小值,https://leetcode.cn/problems/minimum-value-to-get-positive-step-by-step-sum/,minimum-value-to-get-positive-step-by-step-sum,数组、前缀和,https://algo.itcharge.cn/Solutions/1400-1499/minimum-value-to-get-positive-step-by-step-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1413.%20%E9%80%90%E6%AD%A5%E6%B1%82%E5%92%8C%E5%BE%97%E5%88%B0%E6%AD%A3%E6%95%B0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md,73.0%,简单,701 -1414,1400-1499,1414. 和为 K 的最少斐波那契数字数目,和为 K 的最少斐波那契数字数目,https://leetcode.cn/problems/find-the-minimum-number-of-fibonacci-numbers-whose-sum-is-k/,find-the-minimum-number-of-fibonacci-numbers-whose-sum-is-k,贪心、数学,https://algo.itcharge.cn/Solutions/1400-1499/find-the-minimum-number-of-fibonacci-numbers-whose-sum-is-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1414.%20%E5%92%8C%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E5%B0%91%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%AD%97%E6%95%B0%E7%9B%AE.md,70.4%,中等,456 -1415,1400-1499,1415. 长度为 n 的开心字符串中字典序第 k 小的字符串,长度为 n 的开心字符串中字典序第 k 小的字符串,https://leetcode.cn/problems/the-k-th-lexicographical-string-of-all-happy-strings-of-length-n/,the-k-th-lexicographical-string-of-all-happy-strings-of-length-n,字符串、回溯,https://algo.itcharge.cn/Solutions/1400-1499/the-k-th-lexicographical-string-of-all-happy-strings-of-length-n/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1415.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%20n%20%E7%9A%84%E5%BC%80%E5%BF%83%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E5%AD%97%E5%85%B8%E5%BA%8F%E7%AC%AC%20k%20%E5%B0%8F%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,68.6%,中等,238 -1416,1400-1499,1416. 恢复数组,恢复数组,https://leetcode.cn/problems/restore-the-array/,restore-the-array,字符串、动态规划,https://algo.itcharge.cn/Solutions/1400-1499/restore-the-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1416.%20%E6%81%A2%E5%A4%8D%E6%95%B0%E7%BB%84.md,42.7%,困难,81 -1417,1400-1499,1417. 重新格式化字符串,重新格式化字符串,https://leetcode.cn/problems/reformat-the-string/,reformat-the-string,字符串,https://algo.itcharge.cn/Solutions/1400-1499/reformat-the-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1417.%20%E9%87%8D%E6%96%B0%E6%A0%BC%E5%BC%8F%E5%8C%96%E5%AD%97%E7%AC%A6%E4%B8%B2.md,55.2%,简单,623 -1418,1400-1499,1418. 点菜展示表,点菜展示表,https://leetcode.cn/problems/display-table-of-food-orders-in-a-restaurant/,display-table-of-food-orders-in-a-restaurant,数组、哈希表、字符串、有序集合、排序,https://algo.itcharge.cn/Solutions/1400-1499/display-table-of-food-orders-in-a-restaurant/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1418.%20%E7%82%B9%E8%8F%9C%E5%B1%95%E7%A4%BA%E8%A1%A8.md,73.1%,中等,454 -1419,1400-1499,1419. 数青蛙,数青蛙,https://leetcode.cn/problems/minimum-number-of-frogs-croaking/,minimum-number-of-frogs-croaking,字符串、计数,https://algo.itcharge.cn/Solutions/1400-1499/minimum-number-of-frogs-croaking/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1419.%20%E6%95%B0%E9%9D%92%E8%9B%99.md,50.2%,中等,438 -1420,1400-1499,1420. 生成数组,生成数组,https://leetcode.cn/problems/build-array-where-you-can-find-the-maximum-exactly-k-comparisons/,build-array-where-you-can-find-the-maximum-exactly-k-comparisons,动态规划、前缀和,https://algo.itcharge.cn/Solutions/1400-1499/build-array-where-you-can-find-the-maximum-exactly-k-comparisons/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1420.%20%E7%94%9F%E6%88%90%E6%95%B0%E7%BB%84.md,63.6%,困难,68 -1421,1400-1499,1421. 净现值查询,净现值查询,https://leetcode.cn/problems/npv-queries/,npv-queries,数据库,https://algo.itcharge.cn/Solutions/1400-1499/npv-queries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1421.%20%E5%87%80%E7%8E%B0%E5%80%BC%E6%9F%A5%E8%AF%A2.md,70.9%,简单,49 -1422,1400-1499,1422. 分割字符串的最大得分,分割字符串的最大得分,https://leetcode.cn/problems/maximum-score-after-splitting-a-string/,maximum-score-after-splitting-a-string,字符串,https://algo.itcharge.cn/Solutions/1400-1499/maximum-score-after-splitting-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1422.%20%E5%88%86%E5%89%B2%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md,56.8%,简单,687 -1423,1400-1499,1423. 可获得的最大点数,可获得的最大点数,https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/,maximum-points-you-can-obtain-from-cards,数组、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/1400-1499/maximum-points-you-can-obtain-from-cards/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1423.%20%E5%8F%AF%E8%8E%B7%E5%BE%97%E7%9A%84%E6%9C%80%E5%A4%A7%E7%82%B9%E6%95%B0.md,55.0%,中等,650 -1424,1400-1499,1424. 对角线遍历 II,对角线遍历 II,https://leetcode.cn/problems/diagonal-traverse-ii/,diagonal-traverse-ii,数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1400-1499/diagonal-traverse-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1424.%20%E5%AF%B9%E8%A7%92%E7%BA%BF%E9%81%8D%E5%8E%86%20II.md,42.2%,中等,211 -1425,1400-1499,1425. 带限制的子序列和,带限制的子序列和,https://leetcode.cn/problems/constrained-subsequence-sum/,constrained-subsequence-sum,队列、数组、动态规划、滑动窗口、单调队列、堆(优先队列),https://algo.itcharge.cn/Solutions/1400-1499/constrained-subsequence-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1425.%20%E5%B8%A6%E9%99%90%E5%88%B6%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97%E5%92%8C.md,47.5%,困难,116 -1426,1400-1499,1426. 数元素,数元素,https://leetcode.cn/problems/counting-elements/,counting-elements,数组、哈希表,https://algo.itcharge.cn/Solutions/1400-1499/counting-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1426.%20%E6%95%B0%E5%85%83%E7%B4%A0.md,69.7%,简单,83 -1427,1400-1499,1427. 字符串的左右移,字符串的左右移,https://leetcode.cn/problems/perform-string-shifts/,perform-string-shifts,数组、数学、字符串,https://algo.itcharge.cn/Solutions/1400-1499/perform-string-shifts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1427.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%B7%A6%E5%8F%B3%E7%A7%BB.md,58.7%,简单,131 -1428,1400-1499,1428. 至少有一个 1 的最左端列,至少有一个 1 的最左端列,https://leetcode.cn/problems/leftmost-column-with-at-least-a-one/,leftmost-column-with-at-least-a-one,数组、二分查找、交互、矩阵,https://algo.itcharge.cn/Solutions/1400-1499/leftmost-column-with-at-least-a-one/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1428.%20%E8%87%B3%E5%B0%91%E6%9C%89%E4%B8%80%E4%B8%AA%201%20%E7%9A%84%E6%9C%80%E5%B7%A6%E7%AB%AF%E5%88%97.md,61.4%,中等,38 -1429,1400-1499,1429. 第一个唯一数字,第一个唯一数字,https://leetcode.cn/problems/first-unique-number/,first-unique-number,设计、队列、数组、哈希表、数据流,https://algo.itcharge.cn/Solutions/1400-1499/first-unique-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1429.%20%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%94%AF%E4%B8%80%E6%95%B0%E5%AD%97.md,53.3%,中等,85 -1430,1400-1499,1430. 判断给定的序列是否是二叉树从根到叶的路径,判断给定的序列是否是二叉树从根到叶的路径,https://leetcode.cn/problems/check-if-a-string-is-a-valid-sequence-from-root-to-leaves-path-in-a-binary-tree/,check-if-a-string-is-a-valid-sequence-from-root-to-leaves-path-in-a-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1400-1499/check-if-a-string-is-a-valid-sequence-from-root-to-leaves-path-in-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1430.%20%E5%88%A4%E6%96%AD%E7%BB%99%E5%AE%9A%E7%9A%84%E5%BA%8F%E5%88%97%E6%98%AF%E5%90%A6%E6%98%AF%E4%BA%8C%E5%8F%89%E6%A0%91%E4%BB%8E%E6%A0%B9%E5%88%B0%E5%8F%B6%E7%9A%84%E8%B7%AF%E5%BE%84.md,54.6%,中等,54 -1431,1400-1499,1431. 拥有最多糖果的孩子,拥有最多糖果的孩子,https://leetcode.cn/problems/kids-with-the-greatest-number-of-candies/,kids-with-the-greatest-number-of-candies,数组,https://algo.itcharge.cn/Solutions/1400-1499/kids-with-the-greatest-number-of-candies/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1431.%20%E6%8B%A5%E6%9C%89%E6%9C%80%E5%A4%9A%E7%B3%96%E6%9E%9C%E7%9A%84%E5%AD%A9%E5%AD%90.md,84.6%,简单,1215 -1432,1400-1499,1432. 改变一个整数能得到的最大差值,改变一个整数能得到的最大差值,https://leetcode.cn/problems/max-difference-you-can-get-from-changing-an-integer/,max-difference-you-can-get-from-changing-an-integer,贪心、数学,https://algo.itcharge.cn/Solutions/1400-1499/max-difference-you-can-get-from-changing-an-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1432.%20%E6%94%B9%E5%8F%98%E4%B8%80%E4%B8%AA%E6%95%B4%E6%95%B0%E8%83%BD%E5%BE%97%E5%88%B0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%B7%AE%E5%80%BC.md,39.9%,中等,137 -1433,1400-1499,1433. 检查一个字符串是否可以打破另一个字符串,检查一个字符串是否可以打破另一个字符串,https://leetcode.cn/problems/check-if-a-string-can-break-another-string/,check-if-a-string-can-break-another-string,贪心、字符串、排序,https://algo.itcharge.cn/Solutions/1400-1499/check-if-a-string-can-break-another-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1433.%20%E6%A3%80%E6%9F%A5%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E6%89%93%E7%A0%B4%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2.md,64.7%,中等,148 -1434,1400-1499,1434. 每个人戴不同帽子的方案数,每个人戴不同帽子的方案数,https://leetcode.cn/problems/number-of-ways-to-wear-different-hats-to-each-other/,number-of-ways-to-wear-different-hats-to-each-other,位运算、数组、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/1400-1499/number-of-ways-to-wear-different-hats-to-each-other/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1434.%20%E6%AF%8F%E4%B8%AA%E4%BA%BA%E6%88%B4%E4%B8%8D%E5%90%8C%E5%B8%BD%E5%AD%90%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,51.7%,困难,72 -1435,1400-1499,1435. 制作会话柱状图,制作会话柱状图,https://leetcode.cn/problems/create-a-session-bar-chart/,create-a-session-bar-chart,数据库,https://algo.itcharge.cn/Solutions/1400-1499/create-a-session-bar-chart/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1435.%20%E5%88%B6%E4%BD%9C%E4%BC%9A%E8%AF%9D%E6%9F%B1%E7%8A%B6%E5%9B%BE.md,63.7%,简单,62 -1436,1400-1499,1436. 旅行终点站,旅行终点站,https://leetcode.cn/problems/destination-city/,destination-city,哈希表、字符串,https://algo.itcharge.cn/Solutions/1400-1499/destination-city/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1436.%20%E6%97%85%E8%A1%8C%E7%BB%88%E7%82%B9%E7%AB%99.md,81.8%,简单,766 -1437,1400-1499,1437. 是否所有 1 都至少相隔 k 个元素,是否所有 1 都至少相隔 k 个元素,https://leetcode.cn/problems/check-if-all-1s-are-at-least-length-k-places-away/,check-if-all-1s-are-at-least-length-k-places-away,数组,https://algo.itcharge.cn/Solutions/1400-1499/check-if-all-1s-are-at-least-length-k-places-away/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1437.%20%E6%98%AF%E5%90%A6%E6%89%80%E6%9C%89%201%20%E9%83%BD%E8%87%B3%E5%B0%91%E7%9B%B8%E9%9A%94%20k%20%E4%B8%AA%E5%85%83%E7%B4%A0.md,55.6%,简单,260 -1438,1400-1499,1438. 绝对差不超过限制的最长连续子数组,绝对差不超过限制的最长连续子数组,https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/,longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit,队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列),https://algo.itcharge.cn/Solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1438.%20%E7%BB%9D%E5%AF%B9%E5%B7%AE%E4%B8%8D%E8%B6%85%E8%BF%87%E9%99%90%E5%88%B6%E7%9A%84%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%AD%90%E6%95%B0%E7%BB%84.md,49.6%,中等,586 -1439,1400-1499,1439. 有序矩阵中的第 k 个最小数组和,有序矩阵中的第 k 个最小数组和,https://leetcode.cn/problems/find-the-kth-smallest-sum-of-a-matrix-with-sorted-rows/,find-the-kth-smallest-sum-of-a-matrix-with-sorted-rows,数组、二分查找、矩阵、堆(优先队列),https://algo.itcharge.cn/Solutions/1400-1499/find-the-kth-smallest-sum-of-a-matrix-with-sorted-rows/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1439.%20%E6%9C%89%E5%BA%8F%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E7%AC%AC%20k%20%E4%B8%AA%E6%9C%80%E5%B0%8F%E6%95%B0%E7%BB%84%E5%92%8C.md,66.6%,困难,136 -1440,1400-1499,1440. 计算布尔表达式的值,计算布尔表达式的值,https://leetcode.cn/problems/evaluate-boolean-expression/,evaluate-boolean-expression,数据库,https://algo.itcharge.cn/Solutions/1400-1499/evaluate-boolean-expression/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1440.%20%E8%AE%A1%E7%AE%97%E5%B8%83%E5%B0%94%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%80%BC.md,69.7%,中等,87 -1441,1400-1499,1441. 用栈操作构建数组,用栈操作构建数组,https://leetcode.cn/problems/build-an-array-with-stack-operations/,build-an-array-with-stack-operations,栈、数组、模拟,https://algo.itcharge.cn/Solutions/1400-1499/build-an-array-with-stack-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1441.%20%E7%94%A8%E6%A0%88%E6%93%8D%E4%BD%9C%E6%9E%84%E5%BB%BA%E6%95%B0%E7%BB%84.md,71.5%,中等,899 -1442,1400-1499,1442. 形成两个异或相等数组的三元组数目,形成两个异或相等数组的三元组数目,https://leetcode.cn/problems/count-triplets-that-can-form-two-arrays-of-equal-xor/,count-triplets-that-can-form-two-arrays-of-equal-xor,位运算、数组、哈希表、数学、前缀和,https://algo.itcharge.cn/Solutions/1400-1499/count-triplets-that-can-form-two-arrays-of-equal-xor/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1442.%20%E5%BD%A2%E6%88%90%E4%B8%A4%E4%B8%AA%E5%BC%82%E6%88%96%E7%9B%B8%E7%AD%89%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%89%E5%85%83%E7%BB%84%E6%95%B0%E7%9B%AE.md,79.3%,中等,415 -1443,1400-1499,1443. 收集树上所有苹果的最少时间,收集树上所有苹果的最少时间,https://leetcode.cn/problems/minimum-time-to-collect-all-apples-in-a-tree/,minimum-time-to-collect-all-apples-in-a-tree,树、深度优先搜索、广度优先搜索、哈希表,https://algo.itcharge.cn/Solutions/1400-1499/minimum-time-to-collect-all-apples-in-a-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1443.%20%E6%94%B6%E9%9B%86%E6%A0%91%E4%B8%8A%E6%89%80%E6%9C%89%E8%8B%B9%E6%9E%9C%E7%9A%84%E6%9C%80%E5%B0%91%E6%97%B6%E9%97%B4.md,43.1%,中等,190 -1444,1400-1499,1444. 切披萨的方案数,切披萨的方案数,https://leetcode.cn/problems/number-of-ways-of-cutting-a-pizza/,number-of-ways-of-cutting-a-pizza,记忆化搜索、数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/1400-1499/number-of-ways-of-cutting-a-pizza/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1444.%20%E5%88%87%E6%8A%AB%E8%90%A8%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,54.3%,困难,99 -1445,1400-1499,1445. 苹果和桔子,苹果和桔子,https://leetcode.cn/problems/apples-oranges/,apples-oranges,数据库,https://algo.itcharge.cn/Solutions/1400-1499/apples-oranges/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1445.%20%E8%8B%B9%E6%9E%9C%E5%92%8C%E6%A1%94%E5%AD%90.md,84.1%,中等,130 -1446,1400-1499,1446. 连续字符,连续字符,https://leetcode.cn/problems/consecutive-characters/,consecutive-characters,字符串,https://algo.itcharge.cn/Solutions/1400-1499/consecutive-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1446.%20%E8%BF%9E%E7%BB%AD%E5%AD%97%E7%AC%A6.md,60.3%,简单,795 -1447,1400-1499,1447. 最简分数,最简分数,https://leetcode.cn/problems/simplified-fractions/,simplified-fractions,数学、字符串、数论,https://algo.itcharge.cn/Solutions/1400-1499/simplified-fractions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1447.%20%E6%9C%80%E7%AE%80%E5%88%86%E6%95%B0.md,67.5%,中等,529 -1448,1400-1499,1448. 统计二叉树中好节点的数目,统计二叉树中好节点的数目,https://leetcode.cn/problems/count-good-nodes-in-binary-tree/,count-good-nodes-in-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1400-1499/count-good-nodes-in-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1448.%20%E7%BB%9F%E8%AE%A1%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E5%A5%BD%E8%8A%82%E7%82%B9%E7%9A%84%E6%95%B0%E7%9B%AE.md,71.6%,中等,316 -1449,1400-1499,1449. 数位成本和为目标值的最大数字,数位成本和为目标值的最大数字,https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/,form-largest-integer-with-digits-that-add-up-to-target,数组、动态规划,https://algo.itcharge.cn/Solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1449.%20%E6%95%B0%E4%BD%8D%E6%88%90%E6%9C%AC%E5%92%8C%E4%B8%BA%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E5%AD%97.md,62.3%,困难,232 -1450,1400-1499,1450. 在既定时间做作业的学生人数,在既定时间做作业的学生人数,https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/,number-of-students-doing-homework-at-a-given-time,数组,https://algo.itcharge.cn/Solutions/1400-1499/number-of-students-doing-homework-at-a-given-time/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1450.%20%E5%9C%A8%E6%97%A2%E5%AE%9A%E6%97%B6%E9%97%B4%E5%81%9A%E4%BD%9C%E4%B8%9A%E7%9A%84%E5%AD%A6%E7%94%9F%E4%BA%BA%E6%95%B0.md,82.4%,简单,687 -1451,1400-1499,1451. 重新排列句子中的单词,重新排列句子中的单词,https://leetcode.cn/problems/rearrange-words-in-a-sentence/,rearrange-words-in-a-sentence,字符串、排序,https://algo.itcharge.cn/Solutions/1400-1499/rearrange-words-in-a-sentence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1451.%20%E9%87%8D%E6%96%B0%E6%8E%92%E5%88%97%E5%8F%A5%E5%AD%90%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D.md,54.0%,中等,213 -1452,1400-1499,1452. 收藏清单,收藏清单,https://leetcode.cn/problems/people-whose-list-of-favorite-companies-is-not-a-subset-of-another-list/,people-whose-list-of-favorite-companies-is-not-a-subset-of-another-list,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/1400-1499/people-whose-list-of-favorite-companies-is-not-a-subset-of-another-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1452.%20%E6%94%B6%E8%97%8F%E6%B8%85%E5%8D%95.md,51.1%,中等,121 -1453,1400-1499,1453. 圆形靶内的最大飞镖数量,圆形靶内的最大飞镖数量,https://leetcode.cn/problems/maximum-number-of-darts-inside-of-a-circular-dartboard/,maximum-number-of-darts-inside-of-a-circular-dartboard,几何、数组、数学,https://algo.itcharge.cn/Solutions/1400-1499/maximum-number-of-darts-inside-of-a-circular-dartboard/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1453.%20%E5%9C%86%E5%BD%A2%E9%9D%B6%E5%86%85%E7%9A%84%E6%9C%80%E5%A4%A7%E9%A3%9E%E9%95%96%E6%95%B0%E9%87%8F.md,37.8%,困难,43 -1454,1400-1499,1454. 活跃用户,活跃用户,https://leetcode.cn/problems/active-users/,active-users,数据库,https://algo.itcharge.cn/Solutions/1400-1499/active-users/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1454.%20%E6%B4%BB%E8%B7%83%E7%94%A8%E6%88%B7.md,38.3%,中等,127 -1455,1400-1499,1455. 检查单词是否为句中其他单词的前缀,检查单词是否为句中其他单词的前缀,https://leetcode.cn/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/,check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence,字符串、字符串匹配,https://algo.itcharge.cn/Solutions/1400-1499/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1455.%20%E6%A3%80%E6%9F%A5%E5%8D%95%E8%AF%8D%E6%98%AF%E5%90%A6%E4%B8%BA%E5%8F%A5%E4%B8%AD%E5%85%B6%E4%BB%96%E5%8D%95%E8%AF%8D%E7%9A%84%E5%89%8D%E7%BC%80.md,64.8%,简单,701 -1456,1400-1499,1456. 定长子串中元音的最大数目,定长子串中元音的最大数目,https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/,maximum-number-of-vowels-in-a-substring-of-given-length,字符串、滑动窗口,https://algo.itcharge.cn/Solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1456.%20%E5%AE%9A%E9%95%BF%E5%AD%90%E4%B8%B2%E4%B8%AD%E5%85%83%E9%9F%B3%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md,54.5%,中等,370 -1457,1400-1499,1457. 二叉树中的伪回文路径,二叉树中的伪回文路径,https://leetcode.cn/problems/pseudo-palindromic-paths-in-a-binary-tree/,pseudo-palindromic-paths-in-a-binary-tree,位运算、树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1400-1499/pseudo-palindromic-paths-in-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1457.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E4%BC%AA%E5%9B%9E%E6%96%87%E8%B7%AF%E5%BE%84.md,62.1%,中等,187 -1458,1400-1499,1458. 两个子序列的最大点积,两个子序列的最大点积,https://leetcode.cn/problems/max-dot-product-of-two-subsequences/,max-dot-product-of-two-subsequences,数组、动态规划,https://algo.itcharge.cn/Solutions/1400-1499/max-dot-product-of-two-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1458.%20%E4%B8%A4%E4%B8%AA%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E6%9C%80%E5%A4%A7%E7%82%B9%E7%A7%AF.md,46.8%,困难,125 -1459,1400-1499,1459. 矩形面积,矩形面积,https://leetcode.cn/problems/rectangles-area/,rectangles-area,数据库,https://algo.itcharge.cn/Solutions/1400-1499/rectangles-area/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1459.%20%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF.md,62.7%,中等,98 -1460,1400-1499,1460. 通过翻转子数组使两个数组相等,通过翻转子数组使两个数组相等,https://leetcode.cn/problems/make-two-arrays-equal-by-reversing-subarrays/,make-two-arrays-equal-by-reversing-subarrays,数组、哈希表、排序,https://algo.itcharge.cn/Solutions/1400-1499/make-two-arrays-equal-by-reversing-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1460.%20%E9%80%9A%E8%BF%87%E7%BF%BB%E8%BD%AC%E5%AD%90%E6%95%B0%E7%BB%84%E4%BD%BF%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9B%B8%E7%AD%89.md,77.2%,简单,755 -1461,1400-1499,1461. 检查一个字符串是否包含所有长度为 K 的二进制子串,检查一个字符串是否包含所有长度为 K 的二进制子串,https://leetcode.cn/problems/check-if-a-string-contains-all-binary-codes-of-size-k/,check-if-a-string-contains-all-binary-codes-of-size-k,位运算、哈希表、字符串、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/1400-1499/check-if-a-string-contains-all-binary-codes-of-size-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1461.%20%E6%A3%80%E6%9F%A5%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E9%95%BF%E5%BA%A6%E4%B8%BA%20K%20%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%90%E4%B8%B2.md,52.6%,中等,132 -1462,1400-1499,1462. 课程表 IV,课程表 IV,https://leetcode.cn/problems/course-schedule-iv/,course-schedule-iv,深度优先搜索、广度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/1400-1499/course-schedule-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1462.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8%20IV.md,45.8%,中等,220 -1463,1400-1499,1463. 摘樱桃 II,摘樱桃 II,https://leetcode.cn/problems/cherry-pickup-ii/,cherry-pickup-ii,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/1400-1499/cherry-pickup-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1463.%20%E6%91%98%E6%A8%B1%E6%A1%83%20II.md,62.1%,困难,104 -1464,1400-1499,1464. 数组中两元素的最大乘积,数组中两元素的最大乘积,https://leetcode.cn/problems/maximum-product-of-two-elements-in-an-array/,maximum-product-of-two-elements-in-an-array,数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1400-1499/maximum-product-of-two-elements-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1464.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E4%B8%A4%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B9%98%E7%A7%AF.md,78.6%,简单,859 -1465,1400-1499,1465. 切割后面积最大的蛋糕,切割后面积最大的蛋糕,https://leetcode.cn/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/,maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1400-1499/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1465.%20%E5%88%87%E5%89%B2%E5%90%8E%E9%9D%A2%E7%A7%AF%E6%9C%80%E5%A4%A7%E7%9A%84%E8%9B%8B%E7%B3%95.md,32.8%,中等,106 -1466,1400-1499,1466. 重新规划路线,重新规划路线,https://leetcode.cn/problems/reorder-routes-to-make-all-paths-lead-to-the-city-zero/,reorder-routes-to-make-all-paths-lead-to-the-city-zero,深度优先搜索、广度优先搜索、图,https://algo.itcharge.cn/Solutions/1400-1499/reorder-routes-to-make-all-paths-lead-to-the-city-zero/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1466.%20%E9%87%8D%E6%96%B0%E8%A7%84%E5%88%92%E8%B7%AF%E7%BA%BF.md,51.1%,中等,231 -1467,1400-1499,1467. 两个盒子中球的颜色数相同的概率,两个盒子中球的颜色数相同的概率,https://leetcode.cn/problems/probability-of-a-two-boxes-having-the-same-number-of-distinct-balls/,probability-of-a-two-boxes-having-the-same-number-of-distinct-balls,数组、数学、动态规划、回溯、组合数学、概率与统计,https://algo.itcharge.cn/Solutions/1400-1499/probability-of-a-two-boxes-having-the-same-number-of-distinct-balls/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1467.%20%E4%B8%A4%E4%B8%AA%E7%9B%92%E5%AD%90%E4%B8%AD%E7%90%83%E7%9A%84%E9%A2%9C%E8%89%B2%E6%95%B0%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A6%82%E7%8E%87.md,63.1%,困难,68 -1468,1400-1499,1468. 计算税后工资,计算税后工资,https://leetcode.cn/problems/calculate-salaries/,calculate-salaries,数据库,https://algo.itcharge.cn/Solutions/1400-1499/calculate-salaries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1468.%20%E8%AE%A1%E7%AE%97%E7%A8%8E%E5%90%8E%E5%B7%A5%E8%B5%84.md,70.0%,中等,65 -1469,1400-1499,1469. 寻找所有的独生节点,寻找所有的独生节点,https://leetcode.cn/problems/find-all-the-lonely-nodes/,find-all-the-lonely-nodes,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1400-1499/find-all-the-lonely-nodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1469.%20%E5%AF%BB%E6%89%BE%E6%89%80%E6%9C%89%E7%9A%84%E7%8B%AC%E7%94%9F%E8%8A%82%E7%82%B9.md,82.2%,简单,138 -1470,1400-1499,1470. 重新排列数组,重新排列数组,https://leetcode.cn/problems/shuffle-the-array/,shuffle-the-array,数组,https://algo.itcharge.cn/Solutions/1400-1499/shuffle-the-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1470.%20%E9%87%8D%E6%96%B0%E6%8E%92%E5%88%97%E6%95%B0%E7%BB%84.md,84.9%,简单,1150 -1471,1400-1499,1471. 数组中的 k 个最强值,数组中的 k 个最强值,https://leetcode.cn/problems/the-k-strongest-values-in-an-array/,the-k-strongest-values-in-an-array,数组、双指针、排序,https://algo.itcharge.cn/Solutions/1400-1499/the-k-strongest-values-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1471.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%20k%20%E4%B8%AA%E6%9C%80%E5%BC%BA%E5%80%BC.md,55.5%,中等,144 -1472,1400-1499,1472. 设计浏览器历史记录,设计浏览器历史记录,https://leetcode.cn/problems/design-browser-history/,design-browser-history,栈、设计、数组、链表、数据流、双向链表,https://algo.itcharge.cn/Solutions/1400-1499/design-browser-history/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1472.%20%E8%AE%BE%E8%AE%A1%E6%B5%8F%E8%A7%88%E5%99%A8%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95.md,61.5%,中等,258 -1473,1400-1499,1473. 粉刷房子 III,粉刷房子 III,https://leetcode.cn/problems/paint-house-iii/,paint-house-iii,数组、动态规划,https://algo.itcharge.cn/Solutions/1400-1499/paint-house-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1473.%20%E7%B2%89%E5%88%B7%E6%88%BF%E5%AD%90%20III.md,66.3%,困难,192 -1474,1400-1499,1474. 删除链表 M 个节点之后的 N 个节点,删除链表 M 个节点之后的 N 个节点,https://leetcode.cn/problems/delete-n-nodes-after-m-nodes-of-a-linked-list/,delete-n-nodes-after-m-nodes-of-a-linked-list,链表,https://algo.itcharge.cn/Solutions/1400-1499/delete-n-nodes-after-m-nodes-of-a-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1474.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%20M%20%E4%B8%AA%E8%8A%82%E7%82%B9%E4%B9%8B%E5%90%8E%E7%9A%84%20N%20%E4%B8%AA%E8%8A%82%E7%82%B9.md,69.0%,简单,105 -1475,1400-1499,1475. 商品折扣后的最终价格,商品折扣后的最终价格,https://leetcode.cn/problems/final-prices-with-a-special-discount-in-a-shop/,final-prices-with-a-special-discount-in-a-shop,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/1400-1499/final-prices-with-a-special-discount-in-a-shop/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1475.%20%E5%95%86%E5%93%81%E6%8A%98%E6%89%A3%E5%90%8E%E7%9A%84%E6%9C%80%E7%BB%88%E4%BB%B7%E6%A0%BC.md,73.3%,简单,858 -1476,1400-1499,1476. 子矩形查询,子矩形查询,https://leetcode.cn/problems/subrectangle-queries/,subrectangle-queries,设计、数组、矩阵,https://algo.itcharge.cn/Solutions/1400-1499/subrectangle-queries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1476.%20%E5%AD%90%E7%9F%A9%E5%BD%A2%E6%9F%A5%E8%AF%A2.md,86.6%,中等,147 -1477,1400-1499,1477. 找两个和为目标值且不重叠的子数组,找两个和为目标值且不重叠的子数组,https://leetcode.cn/problems/find-two-non-overlapping-sub-arrays-each-with-target-sum/,find-two-non-overlapping-sub-arrays-each-with-target-sum,数组、哈希表、二分查找、动态规划、滑动窗口,https://algo.itcharge.cn/Solutions/1400-1499/find-two-non-overlapping-sub-arrays-each-with-target-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1477.%20%E6%89%BE%E4%B8%A4%E4%B8%AA%E5%92%8C%E4%B8%BA%E7%9B%AE%E6%A0%87%E5%80%BC%E4%B8%94%E4%B8%8D%E9%87%8D%E5%8F%A0%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,31.2%,中等,146 -1478,1400-1499,1478. 安排邮筒,安排邮筒,https://leetcode.cn/problems/allocate-mailboxes/,allocate-mailboxes,数组、数学、动态规划、排序,https://algo.itcharge.cn/Solutions/1400-1499/allocate-mailboxes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1478.%20%E5%AE%89%E6%8E%92%E9%82%AE%E7%AD%92.md,62.7%,困难,97 -1479,1400-1499,1479. 周内每天的销售情况,周内每天的销售情况,https://leetcode.cn/problems/sales-by-day-of-the-week/,sales-by-day-of-the-week,数据库,https://algo.itcharge.cn/Solutions/1400-1499/sales-by-day-of-the-week/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1479.%20%E5%91%A8%E5%86%85%E6%AF%8F%E5%A4%A9%E7%9A%84%E9%94%80%E5%94%AE%E6%83%85%E5%86%B5.md,55.7%,困难,64 -1480,1400-1499,1480. 一维数组的动态和,一维数组的动态和,https://leetcode.cn/problems/running-sum-of-1d-array/,running-sum-of-1d-array,数组、前缀和,https://algo.itcharge.cn/Solutions/1400-1499/running-sum-of-1d-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1480.%20%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84%E7%9A%84%E5%8A%A8%E6%80%81%E5%92%8C.md,76.5%,简单,2514 -1481,1400-1499,1481. 不同整数的最少数目,不同整数的最少数目,https://leetcode.cn/problems/least-number-of-unique-integers-after-k-removals/,least-number-of-unique-integers-after-k-removals,贪心、数组、哈希表、计数、排序,https://algo.itcharge.cn/Solutions/1400-1499/least-number-of-unique-integers-after-k-removals/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1481.%20%E4%B8%8D%E5%90%8C%E6%95%B4%E6%95%B0%E7%9A%84%E6%9C%80%E5%B0%91%E6%95%B0%E7%9B%AE.md,45.2%,中等,253 -1482,1400-1499,1482. 制作 m 束花所需的最少天数,制作 m 束花所需的最少天数,https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/,minimum-number-of-days-to-make-m-bouquets,数组、二分查找,https://algo.itcharge.cn/Solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1482.%20%E5%88%B6%E4%BD%9C%20m%20%E6%9D%9F%E8%8A%B1%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E5%B0%91%E5%A4%A9%E6%95%B0.md,56.8%,中等,507 -1483,1400-1499,1483. 树节点的第 K 个祖先,树节点的第 K 个祖先,https://leetcode.cn/problems/kth-ancestor-of-a-tree-node/,kth-ancestor-of-a-tree-node,树、深度优先搜索、广度优先搜索、设计、二分查找,https://algo.itcharge.cn/Solutions/1400-1499/kth-ancestor-of-a-tree-node/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1483.%20%E6%A0%91%E8%8A%82%E7%82%B9%E7%9A%84%E7%AC%AC%20K%20%E4%B8%AA%E7%A5%96%E5%85%88.md,44.9%,困难,157 -1484,1400-1499,1484. 按日期分组销售产品,按日期分组销售产品,https://leetcode.cn/problems/group-sold-products-by-the-date/,group-sold-products-by-the-date,数据库,https://algo.itcharge.cn/Solutions/1400-1499/group-sold-products-by-the-date/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1484.%20%E6%8C%89%E6%97%A5%E6%9C%9F%E5%88%86%E7%BB%84%E9%94%80%E5%94%AE%E4%BA%A7%E5%93%81.md,67.7%,简单,300 -1485,1400-1499,1485. 克隆含随机指针的二叉树,克隆含随机指针的二叉树,https://leetcode.cn/problems/clone-binary-tree-with-random-pointer/,clone-binary-tree-with-random-pointer,树、深度优先搜索、广度优先搜索、哈希表、二叉树,https://algo.itcharge.cn/Solutions/1400-1499/clone-binary-tree-with-random-pointer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1485.%20%E5%85%8B%E9%9A%86%E5%90%AB%E9%9A%8F%E6%9C%BA%E6%8C%87%E9%92%88%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91.md,78.5%,中等,39 -1486,1400-1499,1486. 数组异或操作,数组异或操作,https://leetcode.cn/problems/xor-operation-in-an-array/,xor-operation-in-an-array,位运算、数学,https://algo.itcharge.cn/Solutions/1400-1499/xor-operation-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1486.%20%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%93%8D%E4%BD%9C.md,85.5%,简单,796 -1487,1400-1499,1487. 保证文件名唯一,保证文件名唯一,https://leetcode.cn/problems/making-file-names-unique/,making-file-names-unique,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/1400-1499/making-file-names-unique/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1487.%20%E4%BF%9D%E8%AF%81%E6%96%87%E4%BB%B6%E5%90%8D%E5%94%AF%E4%B8%80.md,41.5%,中等,336 -1488,1400-1499,1488. 避免洪水泛滥,避免洪水泛滥,https://leetcode.cn/problems/avoid-flood-in-the-city/,avoid-flood-in-the-city,贪心、数组、哈希表、二分查找、堆(优先队列),https://algo.itcharge.cn/Solutions/1400-1499/avoid-flood-in-the-city/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1488.%20%E9%81%BF%E5%85%8D%E6%B4%AA%E6%B0%B4%E6%B3%9B%E6%BB%A5.md,26.3%,中等,172 -1489,1400-1499,1489. 找到最小生成树里的关键边和伪关键边,找到最小生成树里的关键边和伪关键边,https://leetcode.cn/problems/find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree/,find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree,并查集、图、最小生成树、排序、强连通分量,https://algo.itcharge.cn/Solutions/1400-1499/find-critical-and-pseudo-critical-edges-in-minimum-spanning-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1489.%20%E6%89%BE%E5%88%B0%E6%9C%80%E5%B0%8F%E7%94%9F%E6%88%90%E6%A0%91%E9%87%8C%E7%9A%84%E5%85%B3%E9%94%AE%E8%BE%B9%E5%92%8C%E4%BC%AA%E5%85%B3%E9%94%AE%E8%BE%B9.md,66.5%,困难,150 -1490,1400-1499,1490. 克隆 N 叉树,克隆 N 叉树,https://leetcode.cn/problems/clone-n-ary-tree/,clone-n-ary-tree,树、深度优先搜索、广度优先搜索、哈希表,https://algo.itcharge.cn/Solutions/1400-1499/clone-n-ary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1490.%20%E5%85%8B%E9%9A%86%20N%20%E5%8F%89%E6%A0%91.md,83.6%,中等,51 -1491,1400-1499,1491. 去掉最低工资和最高工资后的工资平均值,去掉最低工资和最高工资后的工资平均值,https://leetcode.cn/problems/average-salary-excluding-the-minimum-and-maximum-salary/,average-salary-excluding-the-minimum-and-maximum-salary,数组、排序,https://algo.itcharge.cn/Solutions/1400-1499/average-salary-excluding-the-minimum-and-maximum-salary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1491.%20%E5%8E%BB%E6%8E%89%E6%9C%80%E4%BD%8E%E5%B7%A5%E8%B5%84%E5%92%8C%E6%9C%80%E9%AB%98%E5%B7%A5%E8%B5%84%E5%90%8E%E7%9A%84%E5%B7%A5%E8%B5%84%E5%B9%B3%E5%9D%87%E5%80%BC.md,62.7%,简单,700 -1492,1400-1499,1492. n 的第 k 个因子,n 的第 k 个因子,https://leetcode.cn/problems/the-kth-factor-of-n/,the-kth-factor-of-n,数学、数论,https://algo.itcharge.cn/Solutions/1400-1499/the-kth-factor-of-n/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1492.%20n%20%E7%9A%84%E7%AC%AC%20k%20%E4%B8%AA%E5%9B%A0%E5%AD%90.md,60.8%,中等,158 -1493,1400-1499,1493. 删掉一个元素以后全为 1 的最长子数组,删掉一个元素以后全为 1 的最长子数组,https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/,longest-subarray-of-1s-after-deleting-one-element,数组、动态规划、滑动窗口,https://algo.itcharge.cn/Solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1493.%20%E5%88%A0%E6%8E%89%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%E4%BB%A5%E5%90%8E%E5%85%A8%E4%B8%BA%201%20%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E6%95%B0%E7%BB%84.md,59.5%,中等,318 -1494,1400-1499,1494. 并行课程 II,并行课程 II,https://leetcode.cn/problems/parallel-courses-ii/,parallel-courses-ii,位运算、图、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/1400-1499/parallel-courses-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1494.%20%E5%B9%B6%E8%A1%8C%E8%AF%BE%E7%A8%8B%20II.md,51.8%,困难,99 -1495,1400-1499,1495. 上月播放的儿童适宜电影,上月播放的儿童适宜电影,https://leetcode.cn/problems/friendly-movies-streamed-last-month/,friendly-movies-streamed-last-month,数据库,https://algo.itcharge.cn/Solutions/1400-1499/friendly-movies-streamed-last-month/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1495.%20%E4%B8%8A%E6%9C%88%E6%92%AD%E6%94%BE%E7%9A%84%E5%84%BF%E7%AB%A5%E9%80%82%E5%AE%9C%E7%94%B5%E5%BD%B1.md,53.6%,简单,50 -1496,1400-1499,1496. 判断路径是否相交,判断路径是否相交,https://leetcode.cn/problems/path-crossing/,path-crossing,哈希表、字符串,https://algo.itcharge.cn/Solutions/1400-1499/path-crossing/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1496.%20%E5%88%A4%E6%96%AD%E8%B7%AF%E5%BE%84%E6%98%AF%E5%90%A6%E7%9B%B8%E4%BA%A4.md,53.5%,简单,249 -1497,1400-1499,1497. 检查数组对是否可以被 k 整除,检查数组对是否可以被 k 整除,https://leetcode.cn/problems/check-if-array-pairs-are-divisible-by-k/,check-if-array-pairs-are-divisible-by-k,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/1400-1499/check-if-array-pairs-are-divisible-by-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1497.%20%E6%A3%80%E6%9F%A5%E6%95%B0%E7%BB%84%E5%AF%B9%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%A2%AB%20k%20%E6%95%B4%E9%99%A4.md,40.1%,中等,151 -1498,1400-1499,1498. 满足条件的子序列数目,满足条件的子序列数目,https://leetcode.cn/problems/number-of-subsequences-that-satisfy-the-given-sum-condition/,number-of-subsequences-that-satisfy-the-given-sum-condition,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/1400-1499/number-of-subsequences-that-satisfy-the-given-sum-condition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1498.%20%E6%BB%A1%E8%B6%B3%E6%9D%A1%E4%BB%B6%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97%E6%95%B0%E7%9B%AE.md,38.2%,中等,132 -1499,1400-1499,1499. 满足不等式的最大值,满足不等式的最大值,https://leetcode.cn/problems/max-value-of-equation/,max-value-of-equation,队列、数组、滑动窗口、单调队列、堆(优先队列),https://algo.itcharge.cn/Solutions/1400-1499/max-value-of-equation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1499.%20%E6%BB%A1%E8%B6%B3%E4%B8%8D%E7%AD%89%E5%BC%8F%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,40.9%,困难,93 -1500,1500-1599,1500. 设计文件分享系统,设计文件分享系统,https://leetcode.cn/problems/design-a-file-sharing-system/,design-a-file-sharing-system,设计、哈希表、数据流、堆(优先队列),https://algo.itcharge.cn/Solutions/1500-1599/design-a-file-sharing-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1500.%20%E8%AE%BE%E8%AE%A1%E6%96%87%E4%BB%B6%E5%88%86%E4%BA%AB%E7%B3%BB%E7%BB%9F.md,29.8%,中等,51 -1501,1500-1599,1501. 可以放心投资的国家,可以放心投资的国家,https://leetcode.cn/problems/countries-you-can-safely-invest-in/,countries-you-can-safely-invest-in,数据库,https://algo.itcharge.cn/Solutions/1500-1599/countries-you-can-safely-invest-in/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1501.%20%E5%8F%AF%E4%BB%A5%E6%94%BE%E5%BF%83%E6%8A%95%E8%B5%84%E7%9A%84%E5%9B%BD%E5%AE%B6.md,58.5%,中等,146 -1502,1500-1599,1502. 判断能否形成等差数列,判断能否形成等差数列,https://leetcode.cn/problems/can-make-arithmetic-progression-from-sequence/,can-make-arithmetic-progression-from-sequence,数组、排序,https://algo.itcharge.cn/Solutions/1500-1599/can-make-arithmetic-progression-from-sequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1502.%20%E5%88%A4%E6%96%AD%E8%83%BD%E5%90%A6%E5%BD%A2%E6%88%90%E7%AD%89%E5%B7%AE%E6%95%B0%E5%88%97.md,69.4%,简单,593 -1503,1500-1599,1503. 所有蚂蚁掉下来前的最后一刻,所有蚂蚁掉下来前的最后一刻,https://leetcode.cn/problems/last-moment-before-all-ants-fall-out-of-a-plank/,last-moment-before-all-ants-fall-out-of-a-plank,脑筋急转弯、数组、模拟,https://algo.itcharge.cn/Solutions/1500-1599/last-moment-before-all-ants-fall-out-of-a-plank/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1503.%20%E6%89%80%E6%9C%89%E8%9A%82%E8%9A%81%E6%8E%89%E4%B8%8B%E6%9D%A5%E5%89%8D%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E5%88%BB.md,53.7%,中等,119 -1504,1500-1599,1504. 统计全 1 子矩形,统计全 1 子矩形,https://leetcode.cn/problems/count-submatrices-with-all-ones/,count-submatrices-with-all-ones,栈、数组、动态规划、矩阵、单调栈,https://algo.itcharge.cn/Solutions/1500-1599/count-submatrices-with-all-ones/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1504.%20%E7%BB%9F%E8%AE%A1%E5%85%A8%201%20%E5%AD%90%E7%9F%A9%E5%BD%A2.md,62.4%,中等,173 -1505,1500-1599,1505. 最多 K 次交换相邻数位后得到的最小整数,最多 K 次交换相邻数位后得到的最小整数,https://leetcode.cn/problems/minimum-possible-integer-after-at-most-k-adjacent-swaps-on-digits/,minimum-possible-integer-after-at-most-k-adjacent-swaps-on-digits,贪心、树状数组、线段树、字符串,https://algo.itcharge.cn/Solutions/1500-1599/minimum-possible-integer-after-at-most-k-adjacent-swaps-on-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1505.%20%E6%9C%80%E5%A4%9A%20K%20%E6%AC%A1%E4%BA%A4%E6%8D%A2%E7%9B%B8%E9%82%BB%E6%95%B0%E4%BD%8D%E5%90%8E%E5%BE%97%E5%88%B0%E7%9A%84%E6%9C%80%E5%B0%8F%E6%95%B4%E6%95%B0.md,39.8%,困难,95 -1506,1500-1599,1506. 找到 N 叉树的根节点,找到 N 叉树的根节点,https://leetcode.cn/problems/find-root-of-n-ary-tree/,find-root-of-n-ary-tree,位运算、树、深度优先搜索、哈希表,https://algo.itcharge.cn/Solutions/1500-1599/find-root-of-n-ary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1506.%20%E6%89%BE%E5%88%B0%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E6%A0%B9%E8%8A%82%E7%82%B9.md,81.4%,中等,32 -1507,1500-1599,1507. 转变日期格式,转变日期格式,https://leetcode.cn/problems/reformat-date/,reformat-date,字符串,https://algo.itcharge.cn/Solutions/1500-1599/reformat-date/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1507.%20%E8%BD%AC%E5%8F%98%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F.md,58.9%,简单,211 -1508,1500-1599,1508. 子数组和排序后的区间和,子数组和排序后的区间和,https://leetcode.cn/problems/range-sum-of-sorted-subarray-sums/,range-sum-of-sorted-subarray-sums,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/1500-1599/range-sum-of-sorted-subarray-sums/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1508.%20%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C%E6%8E%92%E5%BA%8F%E5%90%8E%E7%9A%84%E5%8C%BA%E9%97%B4%E5%92%8C.md,57.7%,中等,114 -1509,1500-1599,1509. 三次操作后最大值与最小值的最小差,三次操作后最大值与最小值的最小差,https://leetcode.cn/problems/minimum-difference-between-largest-and-smallest-value-in-three-moves/,minimum-difference-between-largest-and-smallest-value-in-three-moves,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1500-1599/minimum-difference-between-largest-and-smallest-value-in-three-moves/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1509.%20%E4%B8%89%E6%AC%A1%E6%93%8D%E4%BD%9C%E5%90%8E%E6%9C%80%E5%A4%A7%E5%80%BC%E4%B8%8E%E6%9C%80%E5%B0%8F%E5%80%BC%E7%9A%84%E6%9C%80%E5%B0%8F%E5%B7%AE.md,55.5%,中等,139 -1510,1500-1599,1510. 石子游戏 IV,石子游戏 IV,https://leetcode.cn/problems/stone-game-iv/,stone-game-iv,数学、动态规划、博弈,https://algo.itcharge.cn/Solutions/1500-1599/stone-game-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1510.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%20IV.md,60.2%,困难,105 -1511,1500-1599,1511. 消费者下单频率,消费者下单频率,https://leetcode.cn/problems/customer-order-frequency/,customer-order-frequency,数据库,https://algo.itcharge.cn/Solutions/1500-1599/customer-order-frequency/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1511.%20%E6%B6%88%E8%B4%B9%E8%80%85%E4%B8%8B%E5%8D%95%E9%A2%91%E7%8E%87.md,68.9%,简单,99 -1512,1500-1599,1512. 好数对的数目,好数对的数目,https://leetcode.cn/problems/number-of-good-pairs/,number-of-good-pairs,数组、哈希表、数学、计数,https://algo.itcharge.cn/Solutions/1500-1599/number-of-good-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1512.%20%E5%A5%BD%E6%95%B0%E5%AF%B9%E7%9A%84%E6%95%B0%E7%9B%AE.md,84.4%,简单,967 -1513,1500-1599,1513. 仅含 1 的子串数,仅含 1 的子串数,https://leetcode.cn/problems/number-of-substrings-with-only-1s/,number-of-substrings-with-only-1s,数学、字符串,https://algo.itcharge.cn/Solutions/1500-1599/number-of-substrings-with-only-1s/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1513.%20%E4%BB%85%E5%90%AB%201%20%E7%9A%84%E5%AD%90%E4%B8%B2%E6%95%B0.md,39.5%,中等,201 -1514,1500-1599,1514. 概率最大的路径,概率最大的路径,https://leetcode.cn/problems/path-with-maximum-probability/,path-with-maximum-probability,图、数组、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/1500-1599/path-with-maximum-probability/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1514.%20%E6%A6%82%E7%8E%87%E6%9C%80%E5%A4%A7%E7%9A%84%E8%B7%AF%E5%BE%84.md,40.7%,中等,265 -1515,1500-1599,1515. 服务中心的最佳位置,服务中心的最佳位置,https://leetcode.cn/problems/best-position-for-a-service-centre/,best-position-for-a-service-centre,几何、数学、随机化,https://algo.itcharge.cn/Solutions/1500-1599/best-position-for-a-service-centre/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1515.%20%E6%9C%8D%E5%8A%A1%E4%B8%AD%E5%BF%83%E7%9A%84%E6%9C%80%E4%BD%B3%E4%BD%8D%E7%BD%AE.md,35.2%,困难,72 -1516,1500-1599,1516. 移动 N 叉树的子树,移动 N 叉树的子树,https://leetcode.cn/problems/move-sub-tree-of-n-ary-tree/,move-sub-tree-of-n-ary-tree,树、深度优先搜索,https://algo.itcharge.cn/Solutions/1500-1599/move-sub-tree-of-n-ary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1516.%20%E7%A7%BB%E5%8A%A8%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E5%AD%90%E6%A0%91.md,55.9%,困难,18 -1517,1500-1599,1517. 查找拥有有效邮箱的用户,查找拥有有效邮箱的用户,https://leetcode.cn/problems/find-users-with-valid-e-mails/,find-users-with-valid-e-mails,数据库,https://algo.itcharge.cn/Solutions/1500-1599/find-users-with-valid-e-mails/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1517.%20%E6%9F%A5%E6%89%BE%E6%8B%A5%E6%9C%89%E6%9C%89%E6%95%88%E9%82%AE%E7%AE%B1%E7%9A%84%E7%94%A8%E6%88%B7.md,50.4%,简单,66 -1518,1500-1599,1518. 换水问题,换水问题,https://leetcode.cn/problems/water-bottles/,water-bottles,数学、模拟,https://algo.itcharge.cn/Solutions/1500-1599/water-bottles/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1518.%20%E6%8D%A2%E6%B0%B4%E9%97%AE%E9%A2%98.md,69.6%,简单,913 -1519,1500-1599,1519. 子树中标签相同的节点数,子树中标签相同的节点数,https://leetcode.cn/problems/number-of-nodes-in-the-sub-tree-with-the-same-label/,number-of-nodes-in-the-sub-tree-with-the-same-label,树、深度优先搜索、广度优先搜索、哈希表、计数,https://algo.itcharge.cn/Solutions/1500-1599/number-of-nodes-in-the-sub-tree-with-the-same-label/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1519.%20%E5%AD%90%E6%A0%91%E4%B8%AD%E6%A0%87%E7%AD%BE%E7%9B%B8%E5%90%8C%E7%9A%84%E8%8A%82%E7%82%B9%E6%95%B0.md,33.2%,中等,150 -1520,1500-1599,1520. 最多的不重叠子字符串,最多的不重叠子字符串,https://leetcode.cn/problems/maximum-number-of-non-overlapping-substrings/,maximum-number-of-non-overlapping-substrings,贪心、字符串,https://algo.itcharge.cn/Solutions/1500-1599/maximum-number-of-non-overlapping-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1520.%20%E6%9C%80%E5%A4%9A%E7%9A%84%E4%B8%8D%E9%87%8D%E5%8F%A0%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,35.6%,困难,87 -1521,1500-1599,1521. 找到最接近目标值的函数值,找到最接近目标值的函数值,https://leetcode.cn/problems/find-a-value-of-a-mysterious-function-closest-to-target/,find-a-value-of-a-mysterious-function-closest-to-target,位运算、线段树、数组、二分查找,https://algo.itcharge.cn/Solutions/1500-1599/find-a-value-of-a-mysterious-function-closest-to-target/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1521.%20%E6%89%BE%E5%88%B0%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E5%87%BD%E6%95%B0%E5%80%BC.md,43.6%,困难,78 -1522,1500-1599,1522. N 叉树的直径,N 叉树的直径,https://leetcode.cn/problems/diameter-of-n-ary-tree/,diameter-of-n-ary-tree,树、深度优先搜索,https://algo.itcharge.cn/Solutions/1500-1599/diameter-of-n-ary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1522.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md,71.5%,中等,63 -1523,1500-1599,1523. 在区间范围内统计奇数数目,在区间范围内统计奇数数目,https://leetcode.cn/problems/count-odd-numbers-in-an-interval-range/,count-odd-numbers-in-an-interval-range,数学,https://algo.itcharge.cn/Solutions/1500-1599/count-odd-numbers-in-an-interval-range/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1523.%20%E5%9C%A8%E5%8C%BA%E9%97%B4%E8%8C%83%E5%9B%B4%E5%86%85%E7%BB%9F%E8%AE%A1%E5%A5%87%E6%95%B0%E6%95%B0%E7%9B%AE.md,49.2%,简单,705 -1524,1500-1599,1524. 和为奇数的子数组数目,和为奇数的子数组数目,https://leetcode.cn/problems/number-of-sub-arrays-with-odd-sum/,number-of-sub-arrays-with-odd-sum,数组、数学、动态规划、前缀和,https://algo.itcharge.cn/Solutions/1500-1599/number-of-sub-arrays-with-odd-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1524.%20%E5%92%8C%E4%B8%BA%E5%A5%87%E6%95%B0%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md,45.7%,中等,167 -1525,1500-1599,1525. 字符串的好分割数目,字符串的好分割数目,https://leetcode.cn/problems/number-of-good-ways-to-split-a-string/,number-of-good-ways-to-split-a-string,位运算、字符串、动态规划,https://algo.itcharge.cn/Solutions/1500-1599/number-of-good-ways-to-split-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1525.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%A5%BD%E5%88%86%E5%89%B2%E6%95%B0%E7%9B%AE.md,66.1%,中等,159 -1526,1500-1599,1526. 形成目标数组的子数组最少增加次数,形成目标数组的子数组最少增加次数,https://leetcode.cn/problems/minimum-number-of-increments-on-subarrays-to-form-a-target-array/,minimum-number-of-increments-on-subarrays-to-form-a-target-array,栈、贪心、数组、动态规划、单调栈,https://algo.itcharge.cn/Solutions/1500-1599/minimum-number-of-increments-on-subarrays-to-form-a-target-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1526.%20%E5%BD%A2%E6%88%90%E7%9B%AE%E6%A0%87%E6%95%B0%E7%BB%84%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%9C%80%E5%B0%91%E5%A2%9E%E5%8A%A0%E6%AC%A1%E6%95%B0.md,65.0%,困难,94 -1527,1500-1599,1527. 患某种疾病的患者,患某种疾病的患者,https://leetcode.cn/problems/patients-with-a-condition/,patients-with-a-condition,数据库,https://algo.itcharge.cn/Solutions/1500-1599/patients-with-a-condition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1527.%20%E6%82%A3%E6%9F%90%E7%A7%8D%E7%96%BE%E7%97%85%E7%9A%84%E6%82%A3%E8%80%85.md,46.7%,简单,264 -1528,1500-1599,1528. 重新排列字符串,重新排列字符串,https://leetcode.cn/problems/shuffle-string/,shuffle-string,数组、字符串,https://algo.itcharge.cn/Solutions/1500-1599/shuffle-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1528.%20%E9%87%8D%E6%96%B0%E6%8E%92%E5%88%97%E5%AD%97%E7%AC%A6%E4%B8%B2.md,78.4%,简单,486 -1529,1500-1599,1529. 最少的后缀翻转次数,最少的后缀翻转次数,https://leetcode.cn/problems/minimum-suffix-flips/,minimum-suffix-flips,贪心、字符串,https://algo.itcharge.cn/Solutions/1500-1599/minimum-suffix-flips/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1529.%20%E6%9C%80%E5%B0%91%E7%9A%84%E5%90%8E%E7%BC%80%E7%BF%BB%E8%BD%AC%E6%AC%A1%E6%95%B0.md,70.3%,中等,182 -1530,1500-1599,1530. 好叶子节点对的数量,好叶子节点对的数量,https://leetcode.cn/problems/number-of-good-leaf-nodes-pairs/,number-of-good-leaf-nodes-pairs,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1500-1599/number-of-good-leaf-nodes-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1530.%20%E5%A5%BD%E5%8F%B6%E5%AD%90%E8%8A%82%E7%82%B9%E5%AF%B9%E7%9A%84%E6%95%B0%E9%87%8F.md,58.5%,中等,204 -1531,1500-1599,1531. 压缩字符串 II,压缩字符串 II,https://leetcode.cn/problems/string-compression-ii/,string-compression-ii,字符串、动态规划,https://algo.itcharge.cn/Solutions/1500-1599/string-compression-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1531.%20%E5%8E%8B%E7%BC%A9%E5%AD%97%E7%AC%A6%E4%B8%B2%20II.md,38.0%,困难,49 -1532,1500-1599,1532. 最近的三笔订单,最近的三笔订单,https://leetcode.cn/problems/the-most-recent-three-orders/,the-most-recent-three-orders,数据库,https://algo.itcharge.cn/Solutions/1500-1599/the-most-recent-three-orders/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1532.%20%E6%9C%80%E8%BF%91%E7%9A%84%E4%B8%89%E7%AC%94%E8%AE%A2%E5%8D%95.md,63.0%,中等,97 -1533,1500-1599,1533. 找到最大整数的索引,找到最大整数的索引,https://leetcode.cn/problems/find-the-index-of-the-large-integer/,find-the-index-of-the-large-integer,数组、二分查找、交互,https://algo.itcharge.cn/Solutions/1500-1599/find-the-index-of-the-large-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1533.%20%E6%89%BE%E5%88%B0%E6%9C%80%E5%A4%A7%E6%95%B4%E6%95%B0%E7%9A%84%E7%B4%A2%E5%BC%95.md,58.8%,中等,43 -1534,1500-1599,1534. 统计好三元组,统计好三元组,https://leetcode.cn/problems/count-good-triplets/,count-good-triplets,数组、枚举,https://algo.itcharge.cn/Solutions/1500-1599/count-good-triplets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1534.%20%E7%BB%9F%E8%AE%A1%E5%A5%BD%E4%B8%89%E5%85%83%E7%BB%84.md,77.3%,简单,248 -1535,1500-1599,1535. 找出数组游戏的赢家,找出数组游戏的赢家,https://leetcode.cn/problems/find-the-winner-of-an-array-game/,find-the-winner-of-an-array-game,数组、模拟,https://algo.itcharge.cn/Solutions/1500-1599/find-the-winner-of-an-array-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1535.%20%E6%89%BE%E5%87%BA%E6%95%B0%E7%BB%84%E6%B8%B8%E6%88%8F%E7%9A%84%E8%B5%A2%E5%AE%B6.md,46.2%,中等,225 -1536,1500-1599,1536. 排布二进制网格的最少交换次数,排布二进制网格的最少交换次数,https://leetcode.cn/problems/minimum-swaps-to-arrange-a-binary-grid/,minimum-swaps-to-arrange-a-binary-grid,贪心、数组、矩阵,https://algo.itcharge.cn/Solutions/1500-1599/minimum-swaps-to-arrange-a-binary-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1536.%20%E6%8E%92%E5%B8%83%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%BD%91%E6%A0%BC%E7%9A%84%E6%9C%80%E5%B0%91%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0.md,46.2%,中等,96 -1537,1500-1599,1537. 最大得分,最大得分,https://leetcode.cn/problems/get-the-maximum-score/,get-the-maximum-score,贪心、数组、双指针、动态规划,https://algo.itcharge.cn/Solutions/1500-1599/get-the-maximum-score/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1537.%20%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md,40.1%,困难,131 -1538,1500-1599,1538. 找出隐藏数组中出现次数最多的元素,找出隐藏数组中出现次数最多的元素,https://leetcode.cn/problems/guess-the-majority-in-a-hidden-array/,guess-the-majority-in-a-hidden-array,数组、数学、交互,https://algo.itcharge.cn/Solutions/1500-1599/guess-the-majority-in-a-hidden-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1538.%20%E6%89%BE%E5%87%BA%E9%9A%90%E8%97%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E6%9C%80%E5%A4%9A%E7%9A%84%E5%85%83%E7%B4%A0.md,56.8%,中等,14 -1539,1500-1599,1539. 第 k 个缺失的正整数,第 k 个缺失的正整数,https://leetcode.cn/problems/kth-missing-positive-number/,kth-missing-positive-number,数组、二分查找,https://algo.itcharge.cn/Solutions/1500-1599/kth-missing-positive-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1539.%20%E7%AC%AC%20k%20%E4%B8%AA%E7%BC%BA%E5%A4%B1%E7%9A%84%E6%AD%A3%E6%95%B4%E6%95%B0.md,54.0%,简单,566 -1540,1500-1599,1540. K 次操作转变字符串,K 次操作转变字符串,https://leetcode.cn/problems/can-convert-string-in-k-moves/,can-convert-string-in-k-moves,哈希表、字符串,https://algo.itcharge.cn/Solutions/1500-1599/can-convert-string-in-k-moves/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1540.%20K%20%E6%AC%A1%E6%93%8D%E4%BD%9C%E8%BD%AC%E5%8F%98%E5%AD%97%E7%AC%A6%E4%B8%B2.md,33.4%,中等,112 -1541,1500-1599,1541. 平衡括号字符串的最少插入次数,平衡括号字符串的最少插入次数,https://leetcode.cn/problems/minimum-insertions-to-balance-a-parentheses-string/,minimum-insertions-to-balance-a-parentheses-string,栈、贪心、字符串,https://algo.itcharge.cn/Solutions/1500-1599/minimum-insertions-to-balance-a-parentheses-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1541.%20%E5%B9%B3%E8%A1%A1%E6%8B%AC%E5%8F%B7%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%B0%91%E6%8F%92%E5%85%A5%E6%AC%A1%E6%95%B0.md,48.8%,中等,223 -1542,1500-1599,1542. 找出最长的超赞子字符串,找出最长的超赞子字符串,https://leetcode.cn/problems/find-longest-awesome-substring/,find-longest-awesome-substring,位运算、哈希表、字符串,https://algo.itcharge.cn/Solutions/1500-1599/find-longest-awesome-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1542.%20%E6%89%BE%E5%87%BA%E6%9C%80%E9%95%BF%E7%9A%84%E8%B6%85%E8%B5%9E%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,43.9%,困难,76 -1543,1500-1599,1543. 产品名称格式修复,产品名称格式修复,https://leetcode.cn/problems/fix-product-name-format/,fix-product-name-format,数据库,https://algo.itcharge.cn/Solutions/1500-1599/fix-product-name-format/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1543.%20%E4%BA%A7%E5%93%81%E5%90%8D%E7%A7%B0%E6%A0%BC%E5%BC%8F%E4%BF%AE%E5%A4%8D.md,55.4%,简单,57 -1544,1500-1599,1544. 整理字符串,整理字符串,https://leetcode.cn/problems/make-the-string-great/,make-the-string-great,栈、字符串,https://algo.itcharge.cn/Solutions/1500-1599/make-the-string-great/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1544.%20%E6%95%B4%E7%90%86%E5%AD%97%E7%AC%A6%E4%B8%B2.md,55.9%,简单,452 -1545,1500-1599,1545. 找出第 N 个二进制字符串中的第 K 位,找出第 N 个二进制字符串中的第 K 位,https://leetcode.cn/problems/find-kth-bit-in-nth-binary-string/,find-kth-bit-in-nth-binary-string,递归、字符串,https://algo.itcharge.cn/Solutions/1500-1599/find-kth-bit-in-nth-binary-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1545.%20%E6%89%BE%E5%87%BA%E7%AC%AC%20N%20%E4%B8%AA%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E7%AC%AC%20K%20%E4%BD%8D.md,59.0%,中等,189 -1546,1500-1599,1546. 和为目标值且不重叠的非空子数组的最大数目,和为目标值且不重叠的非空子数组的最大数目,https://leetcode.cn/problems/maximum-number-of-non-overlapping-subarrays-with-sum-equals-target/,maximum-number-of-non-overlapping-subarrays-with-sum-equals-target,贪心、数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/1500-1599/maximum-number-of-non-overlapping-subarrays-with-sum-equals-target/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1546.%20%E5%92%8C%E4%B8%BA%E7%9B%AE%E6%A0%87%E5%80%BC%E4%B8%94%E4%B8%8D%E9%87%8D%E5%8F%A0%E7%9A%84%E9%9D%9E%E7%A9%BA%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md,44.8%,中等,110 -1547,1500-1599,1547. 切棍子的最小成本,切棍子的最小成本,https://leetcode.cn/problems/minimum-cost-to-cut-a-stick/,minimum-cost-to-cut-a-stick,数组、动态规划、排序,https://algo.itcharge.cn/Solutions/1500-1599/minimum-cost-to-cut-a-stick/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1547.%20%E5%88%87%E6%A3%8D%E5%AD%90%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md,56.6%,困难,107 -1548,1500-1599,1548. 图中最相似的路径,图中最相似的路径,https://leetcode.cn/problems/the-most-similar-path-in-a-graph/,the-most-similar-path-in-a-graph,图、动态规划,https://algo.itcharge.cn/Solutions/1500-1599/the-most-similar-path-in-a-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1548.%20%E5%9B%BE%E4%B8%AD%E6%9C%80%E7%9B%B8%E4%BC%BC%E7%9A%84%E8%B7%AF%E5%BE%84.md,68.0%,困难,24 -1549,1500-1599,1549. 每件商品的最新订单,每件商品的最新订单,https://leetcode.cn/problems/the-most-recent-orders-for-each-product/,the-most-recent-orders-for-each-product,数据库,https://algo.itcharge.cn/Solutions/1500-1599/the-most-recent-orders-for-each-product/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1549.%20%E6%AF%8F%E4%BB%B6%E5%95%86%E5%93%81%E7%9A%84%E6%9C%80%E6%96%B0%E8%AE%A2%E5%8D%95.md,67.7%,中等,121 -1550,1500-1599,1550. 存在连续三个奇数的数组,存在连续三个奇数的数组,https://leetcode.cn/problems/three-consecutive-odds/,three-consecutive-odds,数组,https://algo.itcharge.cn/Solutions/1500-1599/three-consecutive-odds/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1550.%20%E5%AD%98%E5%9C%A8%E8%BF%9E%E7%BB%AD%E4%B8%89%E4%B8%AA%E5%A5%87%E6%95%B0%E7%9A%84%E6%95%B0%E7%BB%84.md,65.6%,简单,399 -1551,1500-1599,1551. 使数组中所有元素相等的最小操作数,使数组中所有元素相等的最小操作数,https://leetcode.cn/problems/minimum-operations-to-make-array-equal/,minimum-operations-to-make-array-equal,数学,https://algo.itcharge.cn/Solutions/1500-1599/minimum-operations-to-make-array-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1551.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E4%B8%AD%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md,82.1%,中等,223 -1552,1500-1599,1552. 两球之间的磁力,两球之间的磁力,https://leetcode.cn/problems/magnetic-force-between-two-balls/,magnetic-force-between-two-balls,数组、二分查找、排序,https://algo.itcharge.cn/Solutions/1500-1599/magnetic-force-between-two-balls/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1552.%20%E4%B8%A4%E7%90%83%E4%B9%8B%E9%97%B4%E7%9A%84%E7%A3%81%E5%8A%9B.md,56.8%,中等,226 -1553,1500-1599,1553. 吃掉 N 个橘子的最少天数,吃掉 N 个橘子的最少天数,https://leetcode.cn/problems/minimum-number-of-days-to-eat-n-oranges/,minimum-number-of-days-to-eat-n-oranges,记忆化搜索、动态规划,https://algo.itcharge.cn/Solutions/1500-1599/minimum-number-of-days-to-eat-n-oranges/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1553.%20%E5%90%83%E6%8E%89%20N%20%E4%B8%AA%E6%A9%98%E5%AD%90%E7%9A%84%E6%9C%80%E5%B0%91%E5%A4%A9%E6%95%B0.md,32.4%,困难,150 -1554,1500-1599,1554. 只有一个不同字符的字符串,只有一个不同字符的字符串,https://leetcode.cn/problems/strings-differ-by-one-character/,strings-differ-by-one-character,哈希表、字符串、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/1500-1599/strings-differ-by-one-character/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1554.%20%E5%8F%AA%E6%9C%89%E4%B8%80%E4%B8%AA%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,50.0%,中等,33 -1555,1500-1599,1555. 银行账户概要,银行账户概要,https://leetcode.cn/problems/bank-account-summary/,bank-account-summary,数据库,https://algo.itcharge.cn/Solutions/1500-1599/bank-account-summary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1555.%20%E9%93%B6%E8%A1%8C%E8%B4%A6%E6%88%B7%E6%A6%82%E8%A6%81.md,44.9%,中等,76 -1556,1500-1599,1556. 千位分隔数,千位分隔数,https://leetcode.cn/problems/thousand-separator/,thousand-separator,字符串,https://algo.itcharge.cn/Solutions/1500-1599/thousand-separator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1556.%20%E5%8D%83%E4%BD%8D%E5%88%86%E9%9A%94%E6%95%B0.md,56.2%,简单,301 -1557,1500-1599,1557. 可以到达所有点的最少点数目,可以到达所有点的最少点数目,https://leetcode.cn/problems/minimum-number-of-vertices-to-reach-all-nodes/,minimum-number-of-vertices-to-reach-all-nodes,图,https://algo.itcharge.cn/Solutions/1500-1599/minimum-number-of-vertices-to-reach-all-nodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1557.%20%E5%8F%AF%E4%BB%A5%E5%88%B0%E8%BE%BE%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%91%E7%82%B9%E6%95%B0%E7%9B%AE.md,81.5%,中等,236 -1558,1500-1599,1558. 得到目标数组的最少函数调用次数,得到目标数组的最少函数调用次数,https://leetcode.cn/problems/minimum-numbers-of-function-calls-to-make-target-array/,minimum-numbers-of-function-calls-to-make-target-array,贪心、位运算、数组,https://algo.itcharge.cn/Solutions/1500-1599/minimum-numbers-of-function-calls-to-make-target-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1558.%20%E5%BE%97%E5%88%B0%E7%9B%AE%E6%A0%87%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%91%E5%87%BD%E6%95%B0%E8%B0%83%E7%94%A8%E6%AC%A1%E6%95%B0.md,63.0%,中等,97 -1559,1500-1599,1559. 二维网格图中探测环,二维网格图中探测环,https://leetcode.cn/problems/detect-cycles-in-2d-grid/,detect-cycles-in-2d-grid,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/1500-1599/detect-cycles-in-2d-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1559.%20%E4%BA%8C%E7%BB%B4%E7%BD%91%E6%A0%BC%E5%9B%BE%E4%B8%AD%E6%8E%A2%E6%B5%8B%E7%8E%AF.md,40.6%,中等,115 -1560,1500-1599,1560. 圆形赛道上经过次数最多的扇区,圆形赛道上经过次数最多的扇区,https://leetcode.cn/problems/most-visited-sector-in-a-circular-track/,most-visited-sector-in-a-circular-track,数组、模拟,https://algo.itcharge.cn/Solutions/1500-1599/most-visited-sector-in-a-circular-track/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1560.%20%E5%9C%86%E5%BD%A2%E8%B5%9B%E9%81%93%E4%B8%8A%E7%BB%8F%E8%BF%87%E6%AC%A1%E6%95%B0%E6%9C%80%E5%A4%9A%E7%9A%84%E6%89%87%E5%8C%BA.md,57.4%,简单,131 -1561,1500-1599,1561. 你可以获得的最大硬币数目,你可以获得的最大硬币数目,https://leetcode.cn/problems/maximum-number-of-coins-you-can-get/,maximum-number-of-coins-you-can-get,贪心、数组、数学、博弈、排序,https://algo.itcharge.cn/Solutions/1500-1599/maximum-number-of-coins-you-can-get/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1561.%20%E4%BD%A0%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%BE%97%E7%9A%84%E6%9C%80%E5%A4%A7%E7%A1%AC%E5%B8%81%E6%95%B0%E7%9B%AE.md,77.8%,中等,250 -1562,1500-1599,1562. 查找大小为 M 的最新分组,查找大小为 M 的最新分组,https://leetcode.cn/problems/find-latest-group-of-size-m/,find-latest-group-of-size-m,数组、二分查找、模拟,https://algo.itcharge.cn/Solutions/1500-1599/find-latest-group-of-size-m/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1562.%20%E6%9F%A5%E6%89%BE%E5%A4%A7%E5%B0%8F%E4%B8%BA%20M%20%E7%9A%84%E6%9C%80%E6%96%B0%E5%88%86%E7%BB%84.md,36.5%,中等,131 -1563,1500-1599,1563. 石子游戏 V,石子游戏 V,https://leetcode.cn/problems/stone-game-v/,stone-game-v,数组、数学、动态规划、博弈,https://algo.itcharge.cn/Solutions/1500-1599/stone-game-v/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1563.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%20V.md,39.6%,困难,79 -1564,1500-1599,1564. 把箱子放进仓库里 I,把箱子放进仓库里 I,https://leetcode.cn/problems/put-boxes-into-the-warehouse-i/,put-boxes-into-the-warehouse-i,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1500-1599/put-boxes-into-the-warehouse-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1564.%20%E6%8A%8A%E7%AE%B1%E5%AD%90%E6%94%BE%E8%BF%9B%E4%BB%93%E5%BA%93%E9%87%8C%20I.md,57.8%,中等,41 -1565,1500-1599,1565. 按月统计订单数与顾客数,按月统计订单数与顾客数,https://leetcode.cn/problems/unique-orders-and-customers-per-month/,unique-orders-and-customers-per-month,数据库,https://algo.itcharge.cn/Solutions/1500-1599/unique-orders-and-customers-per-month/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1565.%20%E6%8C%89%E6%9C%88%E7%BB%9F%E8%AE%A1%E8%AE%A2%E5%8D%95%E6%95%B0%E4%B8%8E%E9%A1%BE%E5%AE%A2%E6%95%B0.md,73.9%,简单,55 -1566,1500-1599,1566. 重复至少 K 次且长度为 M 的模式,重复至少 K 次且长度为 M 的模式,https://leetcode.cn/problems/detect-pattern-of-length-m-repeated-k-or-more-times/,detect-pattern-of-length-m-repeated-k-or-more-times,数组、枚举,https://algo.itcharge.cn/Solutions/1500-1599/detect-pattern-of-length-m-repeated-k-or-more-times/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1566.%20%E9%87%8D%E5%A4%8D%E8%87%B3%E5%B0%91%20K%20%E6%AC%A1%E4%B8%94%E9%95%BF%E5%BA%A6%E4%B8%BA%20M%20%E7%9A%84%E6%A8%A1%E5%BC%8F.md,44.2%,简单,182 -1567,1500-1599,1567. 乘积为正数的最长子数组长度,乘积为正数的最长子数组长度,https://leetcode.cn/problems/maximum-length-of-subarray-with-positive-product/,maximum-length-of-subarray-with-positive-product,贪心、数组、动态规划,https://algo.itcharge.cn/Solutions/1500-1599/maximum-length-of-subarray-with-positive-product/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1567.%20%E4%B9%98%E7%A7%AF%E4%B8%BA%E6%AD%A3%E6%95%B0%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E6%95%B0%E7%BB%84%E9%95%BF%E5%BA%A6.md,42.7%,中等,462 -1568,1500-1599,1568. 使陆地分离的最少天数,使陆地分离的最少天数,https://leetcode.cn/problems/minimum-number-of-days-to-disconnect-island/,minimum-number-of-days-to-disconnect-island,深度优先搜索、广度优先搜索、数组、矩阵、强连通分量,https://algo.itcharge.cn/Solutions/1500-1599/minimum-number-of-days-to-disconnect-island/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1568.%20%E4%BD%BF%E9%99%86%E5%9C%B0%E5%88%86%E7%A6%BB%E7%9A%84%E6%9C%80%E5%B0%91%E5%A4%A9%E6%95%B0.md,45.0%,困难,82 -1569,1500-1599,1569. 将子数组重新排序得到同一个二叉搜索树的方案数,将子数组重新排序得到同一个二叉搜索树的方案数,https://leetcode.cn/problems/number-of-ways-to-reorder-array-to-get-same-bst/,number-of-ways-to-reorder-array-to-get-same-bst,树、并查集、二叉搜索树、记忆化搜索、数组、数学、分治、动态规划、二叉树、组合数学,https://algo.itcharge.cn/Solutions/1500-1599/number-of-ways-to-reorder-array-to-get-same-bst/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1569.%20%E5%B0%86%E5%AD%90%E6%95%B0%E7%BB%84%E9%87%8D%E6%96%B0%E6%8E%92%E5%BA%8F%E5%BE%97%E5%88%B0%E5%90%8C%E4%B8%80%E4%B8%AA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,49.1%,困难,64 -1570,1500-1599,1570. 两个稀疏向量的点积,两个稀疏向量的点积,https://leetcode.cn/problems/dot-product-of-two-sparse-vectors/,dot-product-of-two-sparse-vectors,设计、数组、哈希表、双指针,https://algo.itcharge.cn/Solutions/1500-1599/dot-product-of-two-sparse-vectors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1570.%20%E4%B8%A4%E4%B8%AA%E7%A8%80%E7%96%8F%E5%90%91%E9%87%8F%E7%9A%84%E7%82%B9%E7%A7%AF.md,88.8%,中等,59 -1571,1500-1599,1571. 仓库经理,仓库经理,https://leetcode.cn/problems/warehouse-manager/,warehouse-manager,数据库,https://algo.itcharge.cn/Solutions/1500-1599/warehouse-manager/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1571.%20%E4%BB%93%E5%BA%93%E7%BB%8F%E7%90%86.md,77.6%,简单,96 -1572,1500-1599,1572. 矩阵对角线元素的和,矩阵对角线元素的和,https://leetcode.cn/problems/matrix-diagonal-sum/,matrix-diagonal-sum,数组、矩阵,https://algo.itcharge.cn/Solutions/1500-1599/matrix-diagonal-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1572.%20%E7%9F%A9%E9%98%B5%E5%AF%B9%E8%A7%92%E7%BA%BF%E5%85%83%E7%B4%A0%E7%9A%84%E5%92%8C.md,80.7%,简单,577 -1573,1500-1599,1573. 分割字符串的方案数,分割字符串的方案数,https://leetcode.cn/problems/number-of-ways-to-split-a-string/,number-of-ways-to-split-a-string,数学、字符串,https://algo.itcharge.cn/Solutions/1500-1599/number-of-ways-to-split-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1573.%20%E5%88%86%E5%89%B2%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,31.2%,中等,92 -1574,1500-1599,1574. 删除最短的子数组使剩余数组有序,删除最短的子数组使剩余数组有序,https://leetcode.cn/problems/shortest-subarray-to-be-removed-to-make-array-sorted/,shortest-subarray-to-be-removed-to-make-array-sorted,栈、数组、双指针、二分查找、单调栈,https://algo.itcharge.cn/Solutions/1500-1599/shortest-subarray-to-be-removed-to-make-array-sorted/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1574.%20%E5%88%A0%E9%99%A4%E6%9C%80%E7%9F%AD%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E4%BD%BF%E5%89%A9%E4%BD%99%E6%95%B0%E7%BB%84%E6%9C%89%E5%BA%8F.md,43.2%,中等,288 -1575,1500-1599,1575. 统计所有可行路径,统计所有可行路径,https://leetcode.cn/problems/count-all-possible-routes/,count-all-possible-routes,记忆化搜索、数组、动态规划,https://algo.itcharge.cn/Solutions/1500-1599/count-all-possible-routes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1575.%20%E7%BB%9F%E8%AE%A1%E6%89%80%E6%9C%89%E5%8F%AF%E8%A1%8C%E8%B7%AF%E5%BE%84.md,57.5%,困难,123 -1576,1500-1599,1576. 替换所有的问号,替换所有的问号,https://leetcode.cn/problems/replace-all-s-to-avoid-consecutive-repeating-characters/,replace-all-s-to-avoid-consecutive-repeating-characters,字符串,https://algo.itcharge.cn/Solutions/1500-1599/replace-all-s-to-avoid-consecutive-repeating-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1576.%20%E6%9B%BF%E6%8D%A2%E6%89%80%E6%9C%89%E7%9A%84%E9%97%AE%E5%8F%B7.md,51.0%,简单,649 -1577,1500-1599,1577. 数的平方等于两数乘积的方法数,数的平方等于两数乘积的方法数,https://leetcode.cn/problems/number-of-ways-where-square-of-number-is-equal-to-product-of-two-numbers/,number-of-ways-where-square-of-number-is-equal-to-product-of-two-numbers,数组、哈希表、数学、双指针,https://algo.itcharge.cn/Solutions/1500-1599/number-of-ways-where-square-of-number-is-equal-to-product-of-two-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1577.%20%E6%95%B0%E7%9A%84%E5%B9%B3%E6%96%B9%E7%AD%89%E4%BA%8E%E4%B8%A4%E6%95%B0%E4%B9%98%E7%A7%AF%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md,34.6%,中等,108 -1578,1500-1599,1578. 使绳子变成彩色的最短时间,使绳子变成彩色的最短时间,https://leetcode.cn/problems/minimum-time-to-make-rope-colorful/,minimum-time-to-make-rope-colorful,贪心、数组、字符串、动态规划,https://algo.itcharge.cn/Solutions/1500-1599/minimum-time-to-make-rope-colorful/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1578.%20%E4%BD%BF%E7%BB%B3%E5%AD%90%E5%8F%98%E6%88%90%E5%BD%A9%E8%89%B2%E7%9A%84%E6%9C%80%E7%9F%AD%E6%97%B6%E9%97%B4.md,59.7%,中等,265 -1579,1500-1599,1579. 保证图可完全遍历,保证图可完全遍历,https://leetcode.cn/problems/remove-max-number-of-edges-to-keep-graph-fully-traversable/,remove-max-number-of-edges-to-keep-graph-fully-traversable,并查集、图,https://algo.itcharge.cn/Solutions/1500-1599/remove-max-number-of-edges-to-keep-graph-fully-traversable/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1579.%20%E4%BF%9D%E8%AF%81%E5%9B%BE%E5%8F%AF%E5%AE%8C%E5%85%A8%E9%81%8D%E5%8E%86.md,62.1%,困难,329 -1580,1500-1599,1580. 把箱子放进仓库里 II,把箱子放进仓库里 II,https://leetcode.cn/problems/put-boxes-into-the-warehouse-ii/,put-boxes-into-the-warehouse-ii,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1500-1599/put-boxes-into-the-warehouse-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1580.%20%E6%8A%8A%E7%AE%B1%E5%AD%90%E6%94%BE%E8%BF%9B%E4%BB%93%E5%BA%93%E9%87%8C%20II.md,59.5%,中等,31 -1581,1500-1599,1581. 进店却未进行过交易的顾客,进店却未进行过交易的顾客,https://leetcode.cn/problems/customer-who-visited-but-did-not-make-any-transactions/,customer-who-visited-but-did-not-make-any-transactions,数据库,https://algo.itcharge.cn/Solutions/1500-1599/customer-who-visited-but-did-not-make-any-transactions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1581.%20%E8%BF%9B%E5%BA%97%E5%8D%B4%E6%9C%AA%E8%BF%9B%E8%A1%8C%E8%BF%87%E4%BA%A4%E6%98%93%E7%9A%84%E9%A1%BE%E5%AE%A2.md,79.5%,简单,288 -1582,1500-1599,1582. 二进制矩阵中的特殊位置,二进制矩阵中的特殊位置,https://leetcode.cn/problems/special-positions-in-a-binary-matrix/,special-positions-in-a-binary-matrix,数组、矩阵,https://algo.itcharge.cn/Solutions/1500-1599/special-positions-in-a-binary-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1582.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E7%89%B9%E6%AE%8A%E4%BD%8D%E7%BD%AE.md,69.5%,简单,469 -1583,1500-1599,1583. 统计不开心的朋友,统计不开心的朋友,https://leetcode.cn/problems/count-unhappy-friends/,count-unhappy-friends,数组、模拟,https://algo.itcharge.cn/Solutions/1500-1599/count-unhappy-friends/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1583.%20%E7%BB%9F%E8%AE%A1%E4%B8%8D%E5%BC%80%E5%BF%83%E7%9A%84%E6%9C%8B%E5%8F%8B.md,67.9%,中等,256 -1584,1500-1599,1584. 连接所有点的最小费用,连接所有点的最小费用,https://leetcode.cn/problems/min-cost-to-connect-all-points/,min-cost-to-connect-all-points,并查集、图、数组、最小生成树,https://algo.itcharge.cn/Solutions/1500-1599/min-cost-to-connect-all-points/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1584.%20%E8%BF%9E%E6%8E%A5%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B4%B9%E7%94%A8.md,65.7%,中等,641 -1585,1500-1599,1585. 检查字符串是否可以通过排序子字符串得到另一个字符串,检查字符串是否可以通过排序子字符串得到另一个字符串,https://leetcode.cn/problems/check-if-string-is-transformable-with-substring-sort-operations/,check-if-string-is-transformable-with-substring-sort-operations,贪心、字符串、排序,https://algo.itcharge.cn/Solutions/1500-1599/check-if-string-is-transformable-with-substring-sort-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1585.%20%E6%A3%80%E6%9F%A5%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E6%8E%92%E5%BA%8F%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%BE%97%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2.md,43.5%,困难,53 -1586,1500-1599,1586. 二叉搜索树迭代器 II,二叉搜索树迭代器 II,https://leetcode.cn/problems/binary-search-tree-iterator-ii/,binary-search-tree-iterator-ii,栈、树、设计、二叉搜索树、二叉树、迭代器,https://algo.itcharge.cn/Solutions/1500-1599/binary-search-tree-iterator-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1586.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BF%AD%E4%BB%A3%E5%99%A8%20II.md,63.0%,中等,40 -1587,1500-1599,1587. 银行账户概要 II,银行账户概要 II,https://leetcode.cn/problems/bank-account-summary-ii/,bank-account-summary-ii,数据库,https://algo.itcharge.cn/Solutions/1500-1599/bank-account-summary-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1587.%20%E9%93%B6%E8%A1%8C%E8%B4%A6%E6%88%B7%E6%A6%82%E8%A6%81%20II.md,80.2%,简单,157 -1588,1500-1599,1588. 所有奇数长度子数组的和,所有奇数长度子数组的和,https://leetcode.cn/problems/sum-of-all-odd-length-subarrays/,sum-of-all-odd-length-subarrays,数组、数学、前缀和,https://algo.itcharge.cn/Solutions/1500-1599/sum-of-all-odd-length-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1588.%20%E6%89%80%E6%9C%89%E5%A5%87%E6%95%B0%E9%95%BF%E5%BA%A6%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E5%92%8C.md,83.2%,简单,985 -1589,1500-1599,1589. 所有排列中的最大和,所有排列中的最大和,https://leetcode.cn/problems/maximum-sum-obtained-of-any-permutation/,maximum-sum-obtained-of-any-permutation,贪心、数组、前缀和、排序,https://algo.itcharge.cn/Solutions/1500-1599/maximum-sum-obtained-of-any-permutation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1589.%20%E6%89%80%E6%9C%89%E6%8E%92%E5%88%97%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md,32.4%,中等,96 -1590,1500-1599,1590. 使数组和能被 P 整除,使数组和能被 P 整除,https://leetcode.cn/problems/make-sum-divisible-by-p/,make-sum-divisible-by-p,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/1500-1599/make-sum-divisible-by-p/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1590.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E5%92%8C%E8%83%BD%E8%A2%AB%20P%20%E6%95%B4%E9%99%A4.md,36.4%,中等,198 -1591,1500-1599,1591. 奇怪的打印机 II,奇怪的打印机 II,https://leetcode.cn/problems/strange-printer-ii/,strange-printer-ii,图、拓扑排序、数组、矩阵,https://algo.itcharge.cn/Solutions/1500-1599/strange-printer-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1591.%20%E5%A5%87%E6%80%AA%E7%9A%84%E6%89%93%E5%8D%B0%E6%9C%BA%20II.md,63.7%,困难,67 -1592,1500-1599,1592. 重新排列单词间的空格,重新排列单词间的空格,https://leetcode.cn/problems/rearrange-spaces-between-words/,rearrange-spaces-between-words,字符串,https://algo.itcharge.cn/Solutions/1500-1599/rearrange-spaces-between-words/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1592.%20%E9%87%8D%E6%96%B0%E6%8E%92%E5%88%97%E5%8D%95%E8%AF%8D%E9%97%B4%E7%9A%84%E7%A9%BA%E6%A0%BC.md,46.7%,简单,578 -1593,1500-1599,1593. 拆分字符串使唯一子字符串的数目最大,拆分字符串使唯一子字符串的数目最大,https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/,split-a-string-into-the-max-number-of-unique-substrings,哈希表、字符串、回溯,https://algo.itcharge.cn/Solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1593.%20%E6%8B%86%E5%88%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BD%BF%E5%94%AF%E4%B8%80%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE%E6%9C%80%E5%A4%A7.md,57.4%,中等,141 -1594,1500-1599,1594. 矩阵的最大非负积,矩阵的最大非负积,https://leetcode.cn/problems/maximum-non-negative-product-in-a-matrix/,maximum-non-negative-product-in-a-matrix,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/1500-1599/maximum-non-negative-product-in-a-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1594.%20%E7%9F%A9%E9%98%B5%E7%9A%84%E6%9C%80%E5%A4%A7%E9%9D%9E%E8%B4%9F%E7%A7%AF.md,33.7%,中等,132 -1595,1500-1599,1595. 连通两组点的最小成本,连通两组点的最小成本,https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/,minimum-cost-to-connect-two-groups-of-points,位运算、数组、动态规划、状态压缩、矩阵,https://algo.itcharge.cn/Solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1595.%20%E8%BF%9E%E9%80%9A%E4%B8%A4%E7%BB%84%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md,65.8%,困难,88 -1596,1500-1599,1596. 每位顾客最经常订购的商品,每位顾客最经常订购的商品,https://leetcode.cn/problems/the-most-frequently-ordered-products-for-each-customer/,the-most-frequently-ordered-products-for-each-customer,数据库,https://algo.itcharge.cn/Solutions/1500-1599/the-most-frequently-ordered-products-for-each-customer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1596.%20%E6%AF%8F%E4%BD%8D%E9%A1%BE%E5%AE%A2%E6%9C%80%E7%BB%8F%E5%B8%B8%E8%AE%A2%E8%B4%AD%E7%9A%84%E5%95%86%E5%93%81.md,73.3%,中等,92 -1597,1500-1599,1597. 根据中缀表达式构造二叉表达式树,根据中缀表达式构造二叉表达式树,https://leetcode.cn/problems/build-binary-expression-tree-from-infix-expression/,build-binary-expression-tree-from-infix-expression,栈、树、字符串、二叉树,https://algo.itcharge.cn/Solutions/1500-1599/build-binary-expression-tree-from-infix-expression/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1597.%20%E6%A0%B9%E6%8D%AE%E4%B8%AD%E7%BC%80%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%A0%91.md,68.4%,困难,33 -1598,1500-1599,1598. 文件夹操作日志搜集器,文件夹操作日志搜集器,https://leetcode.cn/problems/crawler-log-folder/,crawler-log-folder,栈、数组、字符串,https://algo.itcharge.cn/Solutions/1500-1599/crawler-log-folder/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1598.%20%E6%96%87%E4%BB%B6%E5%A4%B9%E6%93%8D%E4%BD%9C%E6%97%A5%E5%BF%97%E6%90%9C%E9%9B%86%E5%99%A8.md,69.5%,简单,560 -1599,1500-1599,1599. 经营摩天轮的最大利润,经营摩天轮的最大利润,https://leetcode.cn/problems/maximum-profit-of-operating-a-centennial-wheel/,maximum-profit-of-operating-a-centennial-wheel,数组、模拟,https://algo.itcharge.cn/Solutions/1500-1599/maximum-profit-of-operating-a-centennial-wheel/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1599.%20%E7%BB%8F%E8%90%A5%E6%91%A9%E5%A4%A9%E8%BD%AE%E7%9A%84%E6%9C%80%E5%A4%A7%E5%88%A9%E6%B6%A6.md,51.5%,中等,269 -1600,1600-1699,1600. 王位继承顺序,王位继承顺序,https://leetcode.cn/problems/throne-inheritance/,throne-inheritance,树、深度优先搜索、设计、哈希表,https://algo.itcharge.cn/Solutions/1600-1699/throne-inheritance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1600.%20%E7%8E%8B%E4%BD%8D%E7%BB%A7%E6%89%BF%E9%A1%BA%E5%BA%8F.md,65.6%,中等,235 -1601,1600-1699,1601. 最多可达成的换楼请求数目,最多可达成的换楼请求数目,https://leetcode.cn/problems/maximum-number-of-achievable-transfer-requests/,maximum-number-of-achievable-transfer-requests,位运算、数组、回溯、枚举,https://algo.itcharge.cn/Solutions/1600-1699/maximum-number-of-achievable-transfer-requests/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1601.%20%E6%9C%80%E5%A4%9A%E5%8F%AF%E8%BE%BE%E6%88%90%E7%9A%84%E6%8D%A2%E6%A5%BC%E8%AF%B7%E6%B1%82%E6%95%B0%E7%9B%AE.md,61.8%,困难,243 -1602,1600-1699,1602. 找到二叉树中最近的右侧节点,找到二叉树中最近的右侧节点,https://leetcode.cn/problems/find-nearest-right-node-in-binary-tree/,find-nearest-right-node-in-binary-tree,树、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1600-1699/find-nearest-right-node-in-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1602.%20%E6%89%BE%E5%88%B0%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E6%9C%80%E8%BF%91%E7%9A%84%E5%8F%B3%E4%BE%A7%E8%8A%82%E7%82%B9.md,74.6%,中等,60 -1603,1600-1699,1603. 设计停车系统,设计停车系统,https://leetcode.cn/problems/design-parking-system/,design-parking-system,设计、计数、模拟,https://algo.itcharge.cn/Solutions/1600-1699/design-parking-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1603.%20%E8%AE%BE%E8%AE%A1%E5%81%9C%E8%BD%A6%E7%B3%BB%E7%BB%9F.md,83.8%,简单,586 -1604,1600-1699,1604. 警告一小时内使用相同员工卡大于等于三次的人,警告一小时内使用相同员工卡大于等于三次的人,https://leetcode.cn/problems/alert-using-same-key-card-three-or-more-times-in-a-one-hour-period/,alert-using-same-key-card-three-or-more-times-in-a-one-hour-period,数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/1600-1699/alert-using-same-key-card-three-or-more-times-in-a-one-hour-period/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1604.%20%E8%AD%A6%E5%91%8A%E4%B8%80%E5%B0%8F%E6%97%B6%E5%86%85%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%90%8C%E5%91%98%E5%B7%A5%E5%8D%A1%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E4%B8%89%E6%AC%A1%E7%9A%84%E4%BA%BA.md,50.4%,中等,346 -1605,1600-1699,1605. 给定行和列的和求可行矩阵,给定行和列的和求可行矩阵,https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/,find-valid-matrix-given-row-and-column-sums,贪心、数组、矩阵,https://algo.itcharge.cn/Solutions/1600-1699/find-valid-matrix-given-row-and-column-sums/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1605.%20%E7%BB%99%E5%AE%9A%E8%A1%8C%E5%92%8C%E5%88%97%E7%9A%84%E5%92%8C%E6%B1%82%E5%8F%AF%E8%A1%8C%E7%9F%A9%E9%98%B5.md,80.9%,中等,273 -1606,1600-1699,1606. 找到处理最多请求的服务器,找到处理最多请求的服务器,https://leetcode.cn/problems/find-servers-that-handled-most-number-of-requests/,find-servers-that-handled-most-number-of-requests,贪心、数组、有序集合、堆(优先队列),https://algo.itcharge.cn/Solutions/1600-1699/find-servers-that-handled-most-number-of-requests/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1606.%20%E6%89%BE%E5%88%B0%E5%A4%84%E7%90%86%E6%9C%80%E5%A4%9A%E8%AF%B7%E6%B1%82%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8.md,48.4%,困难,204 -1607,1600-1699,1607. 没有卖出的卖家,没有卖出的卖家,https://leetcode.cn/problems/sellers-with-no-sales/,sellers-with-no-sales,数据库,https://algo.itcharge.cn/Solutions/1600-1699/sellers-with-no-sales/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1607.%20%E6%B2%A1%E6%9C%89%E5%8D%96%E5%87%BA%E7%9A%84%E5%8D%96%E5%AE%B6.md,54.4%,简单,91 -1608,1600-1699,1608. 特殊数组的特征值,特殊数组的特征值,https://leetcode.cn/problems/special-array-with-x-elements-greater-than-or-equal-x/,special-array-with-x-elements-greater-than-or-equal-x,数组、二分查找、排序,https://algo.itcharge.cn/Solutions/1600-1699/special-array-with-x-elements-greater-than-or-equal-x/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1608.%20%E7%89%B9%E6%AE%8A%E6%95%B0%E7%BB%84%E7%9A%84%E7%89%B9%E5%BE%81%E5%80%BC.md,61.4%,简单,808 -1609,1600-1699,1609. 奇偶树,奇偶树,https://leetcode.cn/problems/even-odd-tree/,even-odd-tree,树、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1600-1699/even-odd-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1609.%20%E5%A5%87%E5%81%B6%E6%A0%91.md,58.1%,中等,502 -1610,1600-1699,1610. 可见点的最大数目,可见点的最大数目,https://leetcode.cn/problems/maximum-number-of-visible-points/,maximum-number-of-visible-points,几何、数组、数学、排序、滑动窗口,https://algo.itcharge.cn/Solutions/1600-1699/maximum-number-of-visible-points/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1610.%20%E5%8F%AF%E8%A7%81%E7%82%B9%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md,44.4%,困难,161 -1611,1600-1699,1611. 使整数变为 0 的最少操作次数,使整数变为 0 的最少操作次数,https://leetcode.cn/problems/minimum-one-bit-operations-to-make-integers-zero/,minimum-one-bit-operations-to-make-integers-zero,位运算、记忆化搜索、动态规划,https://algo.itcharge.cn/Solutions/1600-1699/minimum-one-bit-operations-to-make-integers-zero/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1611.%20%E4%BD%BF%E6%95%B4%E6%95%B0%E5%8F%98%E4%B8%BA%200%20%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,61.1%,困难,73 -1612,1600-1699,1612. 检查两棵二叉表达式树是否等价,检查两棵二叉表达式树是否等价,https://leetcode.cn/problems/check-if-two-expression-trees-are-equivalent/,check-if-two-expression-trees-are-equivalent,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1600-1699/check-if-two-expression-trees-are-equivalent/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1612.%20%E6%A3%80%E6%9F%A5%E4%B8%A4%E6%A3%B5%E4%BA%8C%E5%8F%89%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%A0%91%E6%98%AF%E5%90%A6%E7%AD%89%E4%BB%B7.md,74.3%,中等,35 -1613,1600-1699,1613. 找到遗失的ID,找到遗失的ID,https://leetcode.cn/problems/find-the-missing-ids/,find-the-missing-ids,数据库,https://algo.itcharge.cn/Solutions/1600-1699/find-the-missing-ids/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1613.%20%E6%89%BE%E5%88%B0%E9%81%97%E5%A4%B1%E7%9A%84ID.md,72.8%,中等,67 -1614,1600-1699,1614. 括号的最大嵌套深度,括号的最大嵌套深度,https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/,maximum-nesting-depth-of-the-parentheses,栈、字符串,https://algo.itcharge.cn/Solutions/1600-1699/maximum-nesting-depth-of-the-parentheses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1614.%20%E6%8B%AC%E5%8F%B7%E7%9A%84%E6%9C%80%E5%A4%A7%E5%B5%8C%E5%A5%97%E6%B7%B1%E5%BA%A6.md,82.4%,简单,835 -1615,1600-1699,1615. 最大网络秩,最大网络秩,https://leetcode.cn/problems/maximal-network-rank/,maximal-network-rank,图,https://algo.itcharge.cn/Solutions/1600-1699/maximal-network-rank/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1615.%20%E6%9C%80%E5%A4%A7%E7%BD%91%E7%BB%9C%E7%A7%A9.md,60.1%,中等,293 -1616,1600-1699,1616. 分割两个字符串得到回文串,分割两个字符串得到回文串,https://leetcode.cn/problems/split-two-strings-to-make-palindrome/,split-two-strings-to-make-palindrome,双指针、字符串,https://algo.itcharge.cn/Solutions/1600-1699/split-two-strings-to-make-palindrome/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1616.%20%E5%88%86%E5%89%B2%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%BE%97%E5%88%B0%E5%9B%9E%E6%96%87%E4%B8%B2.md,37.6%,中等,261 -1617,1600-1699,1617. 统计子树中城市之间最大距离,统计子树中城市之间最大距离,https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/,count-subtrees-with-max-distance-between-cities,位运算、树、动态规划、状态压缩、枚举,https://algo.itcharge.cn/Solutions/1600-1699/count-subtrees-with-max-distance-between-cities/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1617.%20%E7%BB%9F%E8%AE%A1%E5%AD%90%E6%A0%91%E4%B8%AD%E5%9F%8E%E5%B8%82%E4%B9%8B%E9%97%B4%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md,79.2%,困难,100 -1618,1600-1699,1618. 找出适应屏幕的最大字号,找出适应屏幕的最大字号,https://leetcode.cn/problems/maximum-font-to-fit-a-sentence-in-a-screen/,maximum-font-to-fit-a-sentence-in-a-screen,数组、字符串、二分查找、交互,https://algo.itcharge.cn/Solutions/1600-1699/maximum-font-to-fit-a-sentence-in-a-screen/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1618.%20%E6%89%BE%E5%87%BA%E9%80%82%E5%BA%94%E5%B1%8F%E5%B9%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%97%E5%8F%B7.md,62.5%,中等,27 -1619,1600-1699,1619. 删除某些元素后的数组均值,删除某些元素后的数组均值,https://leetcode.cn/problems/mean-of-array-after-removing-some-elements/,mean-of-array-after-removing-some-elements,数组、排序,https://algo.itcharge.cn/Solutions/1600-1699/mean-of-array-after-removing-some-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1619.%20%E5%88%A0%E9%99%A4%E6%9F%90%E4%BA%9B%E5%85%83%E7%B4%A0%E5%90%8E%E7%9A%84%E6%95%B0%E7%BB%84%E5%9D%87%E5%80%BC.md,71.8%,简单,450 -1620,1600-1699,1620. 网络信号最好的坐标,网络信号最好的坐标,https://leetcode.cn/problems/coordinate-with-maximum-network-quality/,coordinate-with-maximum-network-quality,数组、枚举,https://algo.itcharge.cn/Solutions/1600-1699/coordinate-with-maximum-network-quality/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1620.%20%E7%BD%91%E7%BB%9C%E4%BF%A1%E5%8F%B7%E6%9C%80%E5%A5%BD%E7%9A%84%E5%9D%90%E6%A0%87.md,46.1%,中等,282 -1621,1600-1699,1621. 大小为 K 的不重叠线段的数目,大小为 K 的不重叠线段的数目,https://leetcode.cn/problems/number-of-sets-of-k-non-overlapping-line-segments/,number-of-sets-of-k-non-overlapping-line-segments,数学、动态规划,https://algo.itcharge.cn/Solutions/1600-1699/number-of-sets-of-k-non-overlapping-line-segments/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1621.%20%E5%A4%A7%E5%B0%8F%E4%B8%BA%20K%20%E7%9A%84%E4%B8%8D%E9%87%8D%E5%8F%A0%E7%BA%BF%E6%AE%B5%E7%9A%84%E6%95%B0%E7%9B%AE.md,48.0%,中等,55 -1622,1600-1699,1622. 奇妙序列,奇妙序列,https://leetcode.cn/problems/fancy-sequence/,fancy-sequence,设计、线段树、数学,https://algo.itcharge.cn/Solutions/1600-1699/fancy-sequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1622.%20%E5%A5%87%E5%A6%99%E5%BA%8F%E5%88%97.md,17.2%,困难,106 -1623,1600-1699,1623. 三人国家代表队,三人国家代表队,https://leetcode.cn/problems/all-valid-triplets-that-can-represent-a-country/,all-valid-triplets-that-can-represent-a-country,数据库,https://algo.itcharge.cn/Solutions/1600-1699/all-valid-triplets-that-can-represent-a-country/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1623.%20%E4%B8%89%E4%BA%BA%E5%9B%BD%E5%AE%B6%E4%BB%A3%E8%A1%A8%E9%98%9F.md,78.5%,简单,61 -1624,1600-1699,1624. 两个相同字符之间的最长子字符串,两个相同字符之间的最长子字符串,https://leetcode.cn/problems/largest-substring-between-two-equal-characters/,largest-substring-between-two-equal-characters,哈希表、字符串,https://algo.itcharge.cn/Solutions/1600-1699/largest-substring-between-two-equal-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1624.%20%E4%B8%A4%E4%B8%AA%E7%9B%B8%E5%90%8C%E5%AD%97%E7%AC%A6%E4%B9%8B%E9%97%B4%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,64.4%,简单,693 -1625,1600-1699,1625. 执行操作后字典序最小的字符串,执行操作后字典序最小的字符串,https://leetcode.cn/problems/lexicographically-smallest-string-after-applying-operations/,lexicographically-smallest-string-after-applying-operations,广度优先搜索、字符串,https://algo.itcharge.cn/Solutions/1600-1699/lexicographically-smallest-string-after-applying-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1625.%20%E6%89%A7%E8%A1%8C%E6%93%8D%E4%BD%9C%E5%90%8E%E5%AD%97%E5%85%B8%E5%BA%8F%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,66.7%,中等,150 -1626,1600-1699,1626. 无矛盾的最佳球队,无矛盾的最佳球队,https://leetcode.cn/problems/best-team-with-no-conflicts/,best-team-with-no-conflicts,数组、动态规划、排序,https://algo.itcharge.cn/Solutions/1600-1699/best-team-with-no-conflicts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1626.%20%E6%97%A0%E7%9F%9B%E7%9B%BE%E7%9A%84%E6%9C%80%E4%BD%B3%E7%90%83%E9%98%9F.md,53.7%,中等,248 -1627,1600-1699,1627. 带阈值的图连通性,带阈值的图连通性,https://leetcode.cn/problems/graph-connectivity-with-threshold/,graph-connectivity-with-threshold,并查集、数组、数学,https://algo.itcharge.cn/Solutions/1600-1699/graph-connectivity-with-threshold/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1627.%20%E5%B8%A6%E9%98%88%E5%80%BC%E7%9A%84%E5%9B%BE%E8%BF%9E%E9%80%9A%E6%80%A7.md,42.2%,困难,65 -1628,1600-1699,1628. 设计带解析函数的表达式树,设计带解析函数的表达式树,https://leetcode.cn/problems/design-an-expression-tree-with-evaluate-function/,design-an-expression-tree-with-evaluate-function,栈、树、设计、数学、二叉树,https://algo.itcharge.cn/Solutions/1600-1699/design-an-expression-tree-with-evaluate-function/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1628.%20%E8%AE%BE%E8%AE%A1%E5%B8%A6%E8%A7%A3%E6%9E%90%E5%87%BD%E6%95%B0%E7%9A%84%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%A0%91.md,82.4%,中等,34 -1629,1600-1699,1629. 按键持续时间最长的键,按键持续时间最长的键,https://leetcode.cn/problems/slowest-key/,slowest-key,数组、字符串,https://algo.itcharge.cn/Solutions/1600-1699/slowest-key/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1629.%20%E6%8C%89%E9%94%AE%E6%8C%81%E7%BB%AD%E6%97%B6%E9%97%B4%E6%9C%80%E9%95%BF%E7%9A%84%E9%94%AE.md,55.8%,简单,446 -1630,1600-1699,1630. 等差子数组,等差子数组,https://leetcode.cn/problems/arithmetic-subarrays/,arithmetic-subarrays,数组、排序,https://algo.itcharge.cn/Solutions/1600-1699/arithmetic-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1630.%20%E7%AD%89%E5%B7%AE%E5%AD%90%E6%95%B0%E7%BB%84.md,76.1%,中等,447 -1631,1600-1699,1631. 最小体力消耗路径,最小体力消耗路径,https://leetcode.cn/problems/path-with-minimum-effort/,path-with-minimum-effort,深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列),https://algo.itcharge.cn/Solutions/1600-1699/path-with-minimum-effort/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md,50.9%,中等,443 -1632,1600-1699,1632. 矩阵转换后的秩,矩阵转换后的秩,https://leetcode.cn/problems/rank-transform-of-a-matrix/,rank-transform-of-a-matrix,贪心、并查集、图、拓扑排序、数组、矩阵,https://algo.itcharge.cn/Solutions/1600-1699/rank-transform-of-a-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1632.%20%E7%9F%A9%E9%98%B5%E8%BD%AC%E6%8D%A2%E5%90%8E%E7%9A%84%E7%A7%A9.md,57.5%,困难,97 -1633,1600-1699,1633. 各赛事的用户注册率,各赛事的用户注册率,https://leetcode.cn/problems/percentage-of-users-attended-a-contest/,percentage-of-users-attended-a-contest,数据库,https://algo.itcharge.cn/Solutions/1600-1699/percentage-of-users-attended-a-contest/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1633.%20%E5%90%84%E8%B5%9B%E4%BA%8B%E7%9A%84%E7%94%A8%E6%88%B7%E6%B3%A8%E5%86%8C%E7%8E%87.md,62.7%,简单,102 -1634,1600-1699,1634. 求两个多项式链表的和,求两个多项式链表的和,https://leetcode.cn/problems/add-two-polynomials-represented-as-linked-lists/,add-two-polynomials-represented-as-linked-lists,链表、数学、双指针,https://algo.itcharge.cn/Solutions/1600-1699/add-two-polynomials-represented-as-linked-lists/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1634.%20%E6%B1%82%E4%B8%A4%E4%B8%AA%E5%A4%9A%E9%A1%B9%E5%BC%8F%E9%93%BE%E8%A1%A8%E7%9A%84%E5%92%8C.md,60.1%,中等,56 -1635,1600-1699,1635. Hopper 公司查询 I,Hopper 公司查询 I,https://leetcode.cn/problems/hopper-company-queries-i/,hopper-company-queries-i,数据库,https://algo.itcharge.cn/Solutions/1600-1699/hopper-company-queries-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1635.%20Hopper%20%E5%85%AC%E5%8F%B8%E6%9F%A5%E8%AF%A2%20I.md,49.1%,困难,54 -1636,1600-1699,1636. 按照频率将数组升序排序,按照频率将数组升序排序,https://leetcode.cn/problems/sort-array-by-increasing-frequency/,sort-array-by-increasing-frequency,数组、哈希表、排序,https://algo.itcharge.cn/Solutions/1600-1699/sort-array-by-increasing-frequency/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1636.%20%E6%8C%89%E7%85%A7%E9%A2%91%E7%8E%87%E5%B0%86%E6%95%B0%E7%BB%84%E5%8D%87%E5%BA%8F%E6%8E%92%E5%BA%8F.md,74.8%,简单,609 -1637,1600-1699,1637. 两点之间不包含任何点的最宽垂直区域,两点之间不包含任何点的最宽垂直区域,https://leetcode.cn/problems/widest-vertical-area-between-two-points-containing-no-points/,widest-vertical-area-between-two-points-containing-no-points,数组、排序,https://algo.itcharge.cn/Solutions/1600-1699/widest-vertical-area-between-two-points-containing-no-points/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1637.%20%E4%B8%A4%E7%82%B9%E4%B9%8B%E9%97%B4%E4%B8%8D%E5%8C%85%E5%90%AB%E4%BB%BB%E4%BD%95%E7%82%B9%E7%9A%84%E6%9C%80%E5%AE%BD%E5%9E%82%E7%9B%B4%E5%8C%BA%E5%9F%9F.md,84.3%,中等,274 -1638,1600-1699,1638. 统计只差一个字符的子串数目,统计只差一个字符的子串数目,https://leetcode.cn/problems/count-substrings-that-differ-by-one-character/,count-substrings-that-differ-by-one-character,哈希表、字符串、动态规划,https://algo.itcharge.cn/Solutions/1600-1699/count-substrings-that-differ-by-one-character/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1638.%20%E7%BB%9F%E8%AE%A1%E5%8F%AA%E5%B7%AE%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E4%B8%B2%E6%95%B0%E7%9B%AE.md,77.6%,中等,194 -1639,1600-1699,1639. 通过给定词典构造目标字符串的方案数,通过给定词典构造目标字符串的方案数,https://leetcode.cn/problems/number-of-ways-to-form-a-target-string-given-a-dictionary/,number-of-ways-to-form-a-target-string-given-a-dictionary,数组、字符串、动态规划,https://algo.itcharge.cn/Solutions/1600-1699/number-of-ways-to-form-a-target-string-given-a-dictionary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1639.%20%E9%80%9A%E8%BF%87%E7%BB%99%E5%AE%9A%E8%AF%8D%E5%85%B8%E6%9E%84%E9%80%A0%E7%9B%AE%E6%A0%87%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,46.9%,困难,55 -1640,1600-1699,1640. 能否连接形成数组,能否连接形成数组,https://leetcode.cn/problems/check-array-formation-through-concatenation/,check-array-formation-through-concatenation,数组、哈希表,https://algo.itcharge.cn/Solutions/1600-1699/check-array-formation-through-concatenation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1640.%20%E8%83%BD%E5%90%A6%E8%BF%9E%E6%8E%A5%E5%BD%A2%E6%88%90%E6%95%B0%E7%BB%84.md,60.9%,简单,660 -1641,1600-1699,1641. 统计字典序元音字符串的数目,统计字典序元音字符串的数目,https://leetcode.cn/problems/count-sorted-vowel-strings/,count-sorted-vowel-strings,数学、动态规划、组合数学,https://algo.itcharge.cn/Solutions/1600-1699/count-sorted-vowel-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1641.%20%E7%BB%9F%E8%AE%A1%E5%AD%97%E5%85%B8%E5%BA%8F%E5%85%83%E9%9F%B3%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE.md,82.4%,中等,598 -1642,1600-1699,1642. 可以到达的最远建筑,可以到达的最远建筑,https://leetcode.cn/problems/furthest-building-you-can-reach/,furthest-building-you-can-reach,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/1600-1699/furthest-building-you-can-reach/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1642.%20%E5%8F%AF%E4%BB%A5%E5%88%B0%E8%BE%BE%E7%9A%84%E6%9C%80%E8%BF%9C%E5%BB%BA%E7%AD%91.md,45.3%,中等,171 -1643,1600-1699,1643. 第 K 条最小指令,第 K 条最小指令,https://leetcode.cn/problems/kth-smallest-instructions/,kth-smallest-instructions,数组、数学、动态规划、组合数学,https://algo.itcharge.cn/Solutions/1600-1699/kth-smallest-instructions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1643.%20%E7%AC%AC%20K%20%E6%9D%A1%E6%9C%80%E5%B0%8F%E6%8C%87%E4%BB%A4.md,48.0%,困难,78 -1644,1600-1699,1644. 二叉树的最近公共祖先 II,二叉树的最近公共祖先 II,https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree-ii/,lowest-common-ancestor-of-a-binary-tree-ii,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1600-1699/lowest-common-ancestor-of-a-binary-tree-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1644.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88%20II.md,56.0%,中等,56 -1645,1600-1699,1645. 1645.Hopper 公司查询 II,1645.Hopper 公司查询 II,https://leetcode.cn/problems/hopper-company-queries-ii/,hopper-company-queries-ii,数据库,https://algo.itcharge.cn/Solutions/1600-1699/hopper-company-queries-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1645.%201645.Hopper%20%E5%85%AC%E5%8F%B8%E6%9F%A5%E8%AF%A2%20II.md,41.8%,困难,37 -1646,1600-1699,1646. 获取生成数组中的最大值,获取生成数组中的最大值,https://leetcode.cn/problems/get-maximum-in-generated-array/,get-maximum-in-generated-array,数组、动态规划、模拟,https://algo.itcharge.cn/Solutions/1600-1699/get-maximum-in-generated-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1646.%20%E8%8E%B7%E5%8F%96%E7%94%9F%E6%88%90%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,51.9%,简单,503 -1647,1600-1699,1647. 字符频次唯一的最小删除次数,字符频次唯一的最小删除次数,https://leetcode.cn/problems/minimum-deletions-to-make-character-frequencies-unique/,minimum-deletions-to-make-character-frequencies-unique,贪心、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/1600-1699/minimum-deletions-to-make-character-frequencies-unique/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1647.%20%E5%AD%97%E7%AC%A6%E9%A2%91%E6%AC%A1%E5%94%AF%E4%B8%80%E7%9A%84%E6%9C%80%E5%B0%8F%E5%88%A0%E9%99%A4%E6%AC%A1%E6%95%B0.md,54.5%,中等,186 -1648,1600-1699,1648. 销售价值减少的颜色球,销售价值减少的颜色球,https://leetcode.cn/problems/sell-diminishing-valued-colored-balls/,sell-diminishing-valued-colored-balls,贪心、数组、数学、二分查找、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1600-1699/sell-diminishing-valued-colored-balls/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1648.%20%E9%94%80%E5%94%AE%E4%BB%B7%E5%80%BC%E5%87%8F%E5%B0%91%E7%9A%84%E9%A2%9C%E8%89%B2%E7%90%83.md,31.6%,中等,147 -1649,1600-1699,1649. 通过指令创建有序数组,通过指令创建有序数组,https://leetcode.cn/problems/create-sorted-array-through-instructions/,create-sorted-array-through-instructions,树状数组、线段树、数组、二分查找、分治、有序集合、归并排序,https://algo.itcharge.cn/Solutions/1600-1699/create-sorted-array-through-instructions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1649.%20%E9%80%9A%E8%BF%87%E6%8C%87%E4%BB%A4%E5%88%9B%E5%BB%BA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md,49.3%,困难,98 -1650,1600-1699,1650. 二叉树的最近公共祖先 III,二叉树的最近公共祖先 III,https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree-iii/,lowest-common-ancestor-of-a-binary-tree-iii,树、哈希表、二叉树,https://algo.itcharge.cn/Solutions/1600-1699/lowest-common-ancestor-of-a-binary-tree-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1650.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88%20III.md,80.0%,中等,66 -1651,1600-1699,1651. Hopper 公司查询 III,Hopper 公司查询 III,https://leetcode.cn/problems/hopper-company-queries-iii/,hopper-company-queries-iii,数据库,https://algo.itcharge.cn/Solutions/1600-1699/hopper-company-queries-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1651.%20Hopper%20%E5%85%AC%E5%8F%B8%E6%9F%A5%E8%AF%A2%20III.md,64.0%,困难,37 -1652,1600-1699,1652. 拆炸弹,拆炸弹,https://leetcode.cn/problems/defuse-the-bomb/,defuse-the-bomb,数组,https://algo.itcharge.cn/Solutions/1600-1699/defuse-the-bomb/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1652.%20%E6%8B%86%E7%82%B8%E5%BC%B9.md,66.4%,简单,608 -1653,1600-1699,1653. 使字符串平衡的最少删除次数,使字符串平衡的最少删除次数,https://leetcode.cn/problems/minimum-deletions-to-make-string-balanced/,minimum-deletions-to-make-string-balanced,栈、字符串、动态规划,https://algo.itcharge.cn/Solutions/1600-1699/minimum-deletions-to-make-string-balanced/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1653.%20%E4%BD%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B3%E8%A1%A1%E7%9A%84%E6%9C%80%E5%B0%91%E5%88%A0%E9%99%A4%E6%AC%A1%E6%95%B0.md,61.0%,中等,355 -1654,1600-1699,1654. 到家的最少跳跃次数,到家的最少跳跃次数,https://leetcode.cn/problems/minimum-jumps-to-reach-home/,minimum-jumps-to-reach-home,广度优先搜索、数组、动态规划,https://algo.itcharge.cn/Solutions/1600-1699/minimum-jumps-to-reach-home/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1654.%20%E5%88%B0%E5%AE%B6%E7%9A%84%E6%9C%80%E5%B0%91%E8%B7%B3%E8%B7%83%E6%AC%A1%E6%95%B0.md,31.2%,中等,116 -1655,1600-1699,1655. 分配重复整数,分配重复整数,https://leetcode.cn/problems/distribute-repeating-integers/,distribute-repeating-integers,位运算、数组、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/1600-1699/distribute-repeating-integers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1655.%20%E5%88%86%E9%85%8D%E9%87%8D%E5%A4%8D%E6%95%B4%E6%95%B0.md,39.5%,困难,62 -1656,1600-1699,1656. 设计有序流,设计有序流,https://leetcode.cn/problems/design-an-ordered-stream/,design-an-ordered-stream,设计、数组、哈希表、数据流,https://algo.itcharge.cn/Solutions/1600-1699/design-an-ordered-stream/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1656.%20%E8%AE%BE%E8%AE%A1%E6%9C%89%E5%BA%8F%E6%B5%81.md,84.1%,简单,368 -1657,1600-1699,1657. 确定两个字符串是否接近,确定两个字符串是否接近,https://leetcode.cn/problems/determine-if-two-strings-are-close/,determine-if-two-strings-are-close,哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/1600-1699/determine-if-two-strings-are-close/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1657.%20%E7%A1%AE%E5%AE%9A%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E6%8E%A5%E8%BF%91.md,47.1%,中等,165 -1658,1600-1699,1658. 将 x 减到 0 的最小操作数,将 x 减到 0 的最小操作数,https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/,minimum-operations-to-reduce-x-to-zero,数组、哈希表、二分查找、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/1600-1699/minimum-operations-to-reduce-x-to-zero/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1658.%20%E5%B0%86%20x%20%E5%87%8F%E5%88%B0%200%20%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md,39.2%,中等,440 -1659,1600-1699,1659. 最大化网格幸福感,最大化网格幸福感,https://leetcode.cn/problems/maximize-grid-happiness/,maximize-grid-happiness,位运算、记忆化搜索、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/1600-1699/maximize-grid-happiness/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1659.%20%E6%9C%80%E5%A4%A7%E5%8C%96%E7%BD%91%E6%A0%BC%E5%B9%B8%E7%A6%8F%E6%84%9F.md,64.7%,困难,67 -1660,1600-1699,1660. 纠正二叉树,纠正二叉树,https://leetcode.cn/problems/correct-a-binary-tree/,correct-a-binary-tree,树、深度优先搜索、广度优先搜索、哈希表、二叉树,https://algo.itcharge.cn/Solutions/1600-1699/correct-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1660.%20%E7%BA%A0%E6%AD%A3%E4%BA%8C%E5%8F%89%E6%A0%91.md,76.2%,中等,36 -1661,1600-1699,1661. 每台机器的进程平均运行时间,每台机器的进程平均运行时间,https://leetcode.cn/problems/average-time-of-process-per-machine/,average-time-of-process-per-machine,数据库,https://algo.itcharge.cn/Solutions/1600-1699/average-time-of-process-per-machine/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1661.%20%E6%AF%8F%E5%8F%B0%E6%9C%BA%E5%99%A8%E7%9A%84%E8%BF%9B%E7%A8%8B%E5%B9%B3%E5%9D%87%E8%BF%90%E8%A1%8C%E6%97%B6%E9%97%B4.md,72.6%,简单,131 -1662,1600-1699,1662. 检查两个字符串数组是否相等,检查两个字符串数组是否相等,https://leetcode.cn/problems/check-if-two-string-arrays-are-equivalent/,check-if-two-string-arrays-are-equivalent,数组、字符串,https://algo.itcharge.cn/Solutions/1600-1699/check-if-two-string-arrays-are-equivalent/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1662.%20%E6%A3%80%E6%9F%A5%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%BB%84%E6%98%AF%E5%90%A6%E7%9B%B8%E7%AD%89.md,81.0%,简单,710 -1663,1600-1699,1663. 具有给定数值的最小字符串,具有给定数值的最小字符串,https://leetcode.cn/problems/smallest-string-with-a-given-numeric-value/,smallest-string-with-a-given-numeric-value,贪心、字符串,https://algo.itcharge.cn/Solutions/1600-1699/smallest-string-with-a-given-numeric-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1663.%20%E5%85%B7%E6%9C%89%E7%BB%99%E5%AE%9A%E6%95%B0%E5%80%BC%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%97%E7%AC%A6%E4%B8%B2.md,65.1%,中等,349 -1664,1600-1699,1664. 生成平衡数组的方案数,生成平衡数组的方案数,https://leetcode.cn/problems/ways-to-make-a-fair-array/,ways-to-make-a-fair-array,数组、动态规划,https://algo.itcharge.cn/Solutions/1600-1699/ways-to-make-a-fair-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1664.%20%E7%94%9F%E6%88%90%E5%B9%B3%E8%A1%A1%E6%95%B0%E7%BB%84%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,66.5%,中等,399 -1665,1600-1699,1665. 完成所有任务的最少初始能量,完成所有任务的最少初始能量,https://leetcode.cn/problems/minimum-initial-energy-to-finish-tasks/,minimum-initial-energy-to-finish-tasks,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1600-1699/minimum-initial-energy-to-finish-tasks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1665.%20%E5%AE%8C%E6%88%90%E6%89%80%E6%9C%89%E4%BB%BB%E5%8A%A1%E7%9A%84%E6%9C%80%E5%B0%91%E5%88%9D%E5%A7%8B%E8%83%BD%E9%87%8F.md,65.4%,困难,124 -1666,1600-1699,1666. 改变二叉树的根节点,改变二叉树的根节点,https://leetcode.cn/problems/change-the-root-of-a-binary-tree/,change-the-root-of-a-binary-tree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1600-1699/change-the-root-of-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1666.%20%E6%94%B9%E5%8F%98%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%A0%B9%E8%8A%82%E7%82%B9.md,66.8%,中等,24 -1667,1600-1699,1667. 修复表中的名字,修复表中的名字,https://leetcode.cn/problems/fix-names-in-a-table/,fix-names-in-a-table,数据库,https://algo.itcharge.cn/Solutions/1600-1699/fix-names-in-a-table/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1667.%20%E4%BF%AE%E5%A4%8D%E8%A1%A8%E4%B8%AD%E7%9A%84%E5%90%8D%E5%AD%97.md,63.6%,简单,282 -1668,1600-1699,1668. 最大重复子字符串,最大重复子字符串,https://leetcode.cn/problems/maximum-repeating-substring/,maximum-repeating-substring,字符串、字符串匹配,https://algo.itcharge.cn/Solutions/1600-1699/maximum-repeating-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1668.%20%E6%9C%80%E5%A4%A7%E9%87%8D%E5%A4%8D%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,47.0%,简单,588 -1669,1600-1699,1669. 合并两个链表,合并两个链表,https://leetcode.cn/problems/merge-in-between-linked-lists/,merge-in-between-linked-lists,链表,https://algo.itcharge.cn/Solutions/1600-1699/merge-in-between-linked-lists/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1669.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E9%93%BE%E8%A1%A8.md,77.3%,中等,626 -1670,1600-1699,1670. 设计前中后队列,设计前中后队列,https://leetcode.cn/problems/design-front-middle-back-queue/,design-front-middle-back-queue,设计、队列、数组、链表、数据流,https://algo.itcharge.cn/Solutions/1600-1699/design-front-middle-back-queue/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1670.%20%E8%AE%BE%E8%AE%A1%E5%89%8D%E4%B8%AD%E5%90%8E%E9%98%9F%E5%88%97.md,52.0%,中等,145 -1671,1600-1699,1671. 得到山形数组的最少删除次数,得到山形数组的最少删除次数,https://leetcode.cn/problems/minimum-number-of-removals-to-make-mountain-array/,minimum-number-of-removals-to-make-mountain-array,贪心、数组、二分查找、动态规划,https://algo.itcharge.cn/Solutions/1600-1699/minimum-number-of-removals-to-make-mountain-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1671.%20%E5%BE%97%E5%88%B0%E5%B1%B1%E5%BD%A2%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%91%E5%88%A0%E9%99%A4%E6%AC%A1%E6%95%B0.md,46.7%,困难,75 -1672,1600-1699,1672. 最富有客户的资产总量,最富有客户的资产总量,https://leetcode.cn/problems/richest-customer-wealth/,richest-customer-wealth,数组、矩阵,https://algo.itcharge.cn/Solutions/1600-1699/richest-customer-wealth/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1672.%20%E6%9C%80%E5%AF%8C%E6%9C%89%E5%AE%A2%E6%88%B7%E7%9A%84%E8%B5%84%E4%BA%A7%E6%80%BB%E9%87%8F.md,83.7%,简单,1370 -1673,1600-1699,1673. 找出最具竞争力的子序列,找出最具竞争力的子序列,https://leetcode.cn/problems/find-the-most-competitive-subsequence/,find-the-most-competitive-subsequence,栈、贪心、数组、单调栈,https://algo.itcharge.cn/Solutions/1600-1699/find-the-most-competitive-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1673.%20%E6%89%BE%E5%87%BA%E6%9C%80%E5%85%B7%E7%AB%9E%E4%BA%89%E5%8A%9B%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97.md,39.5%,中等,226 -1674,1600-1699,1674. 使数组互补的最少操作次数,使数组互补的最少操作次数,https://leetcode.cn/problems/minimum-moves-to-make-array-complementary/,minimum-moves-to-make-array-complementary,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/1600-1699/minimum-moves-to-make-array-complementary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1674.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E4%BA%92%E8%A1%A5%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,41.9%,中等,81 -1675,1600-1699,1675. 数组的最小偏移量,数组的最小偏移量,https://leetcode.cn/problems/minimize-deviation-in-array/,minimize-deviation-in-array,贪心、数组、有序集合、堆(优先队列),https://algo.itcharge.cn/Solutions/1600-1699/minimize-deviation-in-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1675.%20%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%8F%E5%81%8F%E7%A7%BB%E9%87%8F.md,45.6%,困难,71 -1676,1600-1699,1676. 二叉树的最近公共祖先 IV,二叉树的最近公共祖先 IV,https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree-iv/,lowest-common-ancestor-of-a-binary-tree-iv,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/1600-1699/lowest-common-ancestor-of-a-binary-tree-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1676.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88%20IV.md,79.9%,中等,53 -1677,1600-1699,1677. 发票中的产品金额,发票中的产品金额,https://leetcode.cn/problems/products-worth-over-invoices/,products-worth-over-invoices,数据库,https://algo.itcharge.cn/Solutions/1600-1699/products-worth-over-invoices/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1677.%20%E5%8F%91%E7%A5%A8%E4%B8%AD%E7%9A%84%E4%BA%A7%E5%93%81%E9%87%91%E9%A2%9D.md,35.3%,简单,54 -1678,1600-1699,1678. 设计 Goal 解析器,设计 Goal 解析器,https://leetcode.cn/problems/goal-parser-interpretation/,goal-parser-interpretation,字符串,https://algo.itcharge.cn/Solutions/1600-1699/goal-parser-interpretation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1678.%20%E8%AE%BE%E8%AE%A1%20Goal%20%E8%A7%A3%E6%9E%90%E5%99%A8.md,86.1%,简单,766 -1679,1600-1699,1679. K 和数对的最大数目,K 和数对的最大数目,https://leetcode.cn/problems/max-number-of-k-sum-pairs/,max-number-of-k-sum-pairs,数组、哈希表、双指针、排序,https://algo.itcharge.cn/Solutions/1600-1699/max-number-of-k-sum-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1679.%20K%20%E5%92%8C%E6%95%B0%E5%AF%B9%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md,54.0%,中等,220 -1680,1600-1699,1680. 连接连续二进制数字,连接连续二进制数字,https://leetcode.cn/problems/concatenation-of-consecutive-binary-numbers/,concatenation-of-consecutive-binary-numbers,位运算、数学、模拟,https://algo.itcharge.cn/Solutions/1600-1699/concatenation-of-consecutive-binary-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1680.%20%E8%BF%9E%E6%8E%A5%E8%BF%9E%E7%BB%AD%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%95%B0%E5%AD%97.md,49.9%,中等,92 -1681,1600-1699,1681. 最小不兼容性,最小不兼容性,https://leetcode.cn/problems/minimum-incompatibility/,minimum-incompatibility,位运算、数组、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/1600-1699/minimum-incompatibility/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1681.%20%E6%9C%80%E5%B0%8F%E4%B8%8D%E5%85%BC%E5%AE%B9%E6%80%A7.md,54.9%,困难,99 -1682,1600-1699,1682. 最长回文子序列 II,最长回文子序列 II,https://leetcode.cn/problems/longest-palindromic-subsequence-ii/,longest-palindromic-subsequence-ii,字符串、动态规划,https://algo.itcharge.cn/Solutions/1600-1699/longest-palindromic-subsequence-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1682.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97%20II.md,57.2%,中等,42 -1683,1600-1699,1683. 无效的推文,无效的推文,https://leetcode.cn/problems/invalid-tweets/,invalid-tweets,数据库,https://algo.itcharge.cn/Solutions/1600-1699/invalid-tweets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1683.%20%E6%97%A0%E6%95%88%E7%9A%84%E6%8E%A8%E6%96%87.md,87.4%,简单,72 -1684,1600-1699,1684. 统计一致字符串的数目,统计一致字符串的数目,https://leetcode.cn/problems/count-the-number-of-consistent-strings/,count-the-number-of-consistent-strings,位运算、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/1600-1699/count-the-number-of-consistent-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1684.%20%E7%BB%9F%E8%AE%A1%E4%B8%80%E8%87%B4%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE.md,85.2%,简单,840 -1685,1600-1699,1685. 有序数组中差绝对值之和,有序数组中差绝对值之和,https://leetcode.cn/problems/sum-of-absolute-differences-in-a-sorted-array/,sum-of-absolute-differences-in-a-sorted-array,数组、数学、前缀和,https://algo.itcharge.cn/Solutions/1600-1699/sum-of-absolute-differences-in-a-sorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1685.%20%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E5%B7%AE%E7%BB%9D%E5%AF%B9%E5%80%BC%E4%B9%8B%E5%92%8C.md,64.9%,中等,171 -1686,1600-1699,1686. 石子游戏 VI,石子游戏 VI,https://leetcode.cn/problems/stone-game-vi/,stone-game-vi,贪心、数组、数学、博弈、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1600-1699/stone-game-vi/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1686.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%20VI.md,50.1%,中等,79 -1687,1600-1699,1687. 从仓库到码头运输箱子,从仓库到码头运输箱子,https://leetcode.cn/problems/delivering-boxes-from-storage-to-ports/,delivering-boxes-from-storage-to-ports,线段树、队列、数组、动态规划、前缀和、单调队列、堆(优先队列),https://algo.itcharge.cn/Solutions/1600-1699/delivering-boxes-from-storage-to-ports/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1687.%20%E4%BB%8E%E4%BB%93%E5%BA%93%E5%88%B0%E7%A0%81%E5%A4%B4%E8%BF%90%E8%BE%93%E7%AE%B1%E5%AD%90.md,58.8%,困难,99 -1688,1600-1699,1688. 比赛中的配对次数,比赛中的配对次数,https://leetcode.cn/problems/count-of-matches-in-tournament/,count-of-matches-in-tournament,数学、模拟,https://algo.itcharge.cn/Solutions/1600-1699/count-of-matches-in-tournament/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1688.%20%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E9%85%8D%E5%AF%B9%E6%AC%A1%E6%95%B0.md,83.8%,简单,643 -1689,1600-1699,1689. 十-二进制数的最少数目,十-二进制数的最少数目,https://leetcode.cn/problems/partitioning-into-minimum-number-of-deci-binary-numbers/,partitioning-into-minimum-number-of-deci-binary-numbers,贪心、字符串,https://algo.itcharge.cn/Solutions/1600-1699/partitioning-into-minimum-number-of-deci-binary-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1689.%20%E5%8D%81-%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%95%B0%E7%9A%84%E6%9C%80%E5%B0%91%E6%95%B0%E7%9B%AE.md,86.6%,中等,298 -1690,1600-1699,1690. 石子游戏 VII,石子游戏 VII,https://leetcode.cn/problems/stone-game-vii/,stone-game-vii,数组、数学、动态规划、博弈,https://algo.itcharge.cn/Solutions/1600-1699/stone-game-vii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1690.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%20VII.md,55.7%,中等,135 -1691,1600-1699,1691. 堆叠长方体的最大高度,堆叠长方体的最大高度,https://leetcode.cn/problems/maximum-height-by-stacking-cuboids/,maximum-height-by-stacking-cuboids,数组、动态规划、排序,https://algo.itcharge.cn/Solutions/1600-1699/maximum-height-by-stacking-cuboids/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1691.%20%E5%A0%86%E5%8F%A0%E9%95%BF%E6%96%B9%E4%BD%93%E7%9A%84%E6%9C%80%E5%A4%A7%E9%AB%98%E5%BA%A6.md,65.0%,困难,176 -1692,1600-1699,1692. 计算分配糖果的不同方式,计算分配糖果的不同方式,https://leetcode.cn/problems/count-ways-to-distribute-candies/,count-ways-to-distribute-candies,动态规划,https://algo.itcharge.cn/Solutions/1600-1699/count-ways-to-distribute-candies/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1692.%20%E8%AE%A1%E7%AE%97%E5%88%86%E9%85%8D%E7%B3%96%E6%9E%9C%E7%9A%84%E4%B8%8D%E5%90%8C%E6%96%B9%E5%BC%8F.md,66.1%,困难,25 -1693,1600-1699,1693. 每天的领导和合伙人,每天的领导和合伙人,https://leetcode.cn/problems/daily-leads-and-partners/,daily-leads-and-partners,数据库,https://algo.itcharge.cn/Solutions/1600-1699/daily-leads-and-partners/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1693.%20%E6%AF%8F%E5%A4%A9%E7%9A%84%E9%A2%86%E5%AF%BC%E5%92%8C%E5%90%88%E4%BC%99%E4%BA%BA.md,82.0%,简单,168 -1694,1600-1699,1694. 重新格式化电话号码,重新格式化电话号码,https://leetcode.cn/problems/reformat-phone-number/,reformat-phone-number,字符串,https://algo.itcharge.cn/Solutions/1600-1699/reformat-phone-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1694.%20%E9%87%8D%E6%96%B0%E6%A0%BC%E5%BC%8F%E5%8C%96%E7%94%B5%E8%AF%9D%E5%8F%B7%E7%A0%81.md,66.1%,简单,566 -1695,1600-1699,1695. 删除子数组的最大得分,删除子数组的最大得分,https://leetcode.cn/problems/maximum-erasure-value/,maximum-erasure-value,数组、哈希表、滑动窗口,https://algo.itcharge.cn/Solutions/1600-1699/maximum-erasure-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1695.%20%E5%88%A0%E9%99%A4%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md,51.9%,中等,228 -1696,1600-1699,1696. 跳跃游戏 VI,跳跃游戏 VI,https://leetcode.cn/problems/jump-game-vi/,jump-game-vi,队列、数组、动态规划、滑动窗口、单调队列、堆(优先队列),https://algo.itcharge.cn/Solutions/1600-1699/jump-game-vi/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1696.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20VI.md,40.2%,中等,193 -1697,1600-1699,1697. 检查边长度限制的路径是否存在,检查边长度限制的路径是否存在,https://leetcode.cn/problems/checking-existence-of-edge-length-limited-paths/,checking-existence-of-edge-length-limited-paths,并查集、图、数组、排序,https://algo.itcharge.cn/Solutions/1600-1699/checking-existence-of-edge-length-limited-paths/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1697.%20%E6%A3%80%E6%9F%A5%E8%BE%B9%E9%95%BF%E5%BA%A6%E9%99%90%E5%88%B6%E7%9A%84%E8%B7%AF%E5%BE%84%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8.md,64.9%,困难,163 -1698,1600-1699,1698. 字符串的不同子字符串个数,字符串的不同子字符串个数,https://leetcode.cn/problems/number-of-distinct-substrings-in-a-string/,number-of-distinct-substrings-in-a-string,字典树、字符串、后缀数组、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/1600-1699/number-of-distinct-substrings-in-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1698.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E4%B8%8D%E5%90%8C%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AA%E6%95%B0.md,55.2%,中等,28 -1699,1600-1699,1699. 两人之间的通话次数,两人之间的通话次数,https://leetcode.cn/problems/number-of-calls-between-two-persons/,number-of-calls-between-two-persons,数据库,https://algo.itcharge.cn/Solutions/1600-1699/number-of-calls-between-two-persons/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1699.%20%E4%B8%A4%E4%BA%BA%E4%B9%8B%E9%97%B4%E7%9A%84%E9%80%9A%E8%AF%9D%E6%AC%A1%E6%95%B0.md,76.4%,中等,124 -1700,1700-1799,1700. 无法吃午餐的学生数量,无法吃午餐的学生数量,https://leetcode.cn/problems/number-of-students-unable-to-eat-lunch/,number-of-students-unable-to-eat-lunch,栈、队列、数组、模拟,https://algo.itcharge.cn/Solutions/1700-1799/number-of-students-unable-to-eat-lunch/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1700.%20%E6%97%A0%E6%B3%95%E5%90%83%E5%8D%88%E9%A4%90%E7%9A%84%E5%AD%A6%E7%94%9F%E6%95%B0%E9%87%8F.md,73.2%,简单,764 -1701,1700-1799,1701. 平均等待时间,平均等待时间,https://leetcode.cn/problems/average-waiting-time/,average-waiting-time,数组、模拟,https://algo.itcharge.cn/Solutions/1700-1799/average-waiting-time/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1701.%20%E5%B9%B3%E5%9D%87%E7%AD%89%E5%BE%85%E6%97%B6%E9%97%B4.md,60.5%,中等,145 -1702,1700-1799,1702. 修改后的最大二进制字符串,修改后的最大二进制字符串,https://leetcode.cn/problems/maximum-binary-string-after-change/,maximum-binary-string-after-change,贪心、字符串,https://algo.itcharge.cn/Solutions/1700-1799/maximum-binary-string-after-change/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1702.%20%E4%BF%AE%E6%94%B9%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%E4%B8%B2.md,48.3%,中等,99 -1703,1700-1799,1703. 得到连续 K 个 1 的最少相邻交换次数,得到连续 K 个 1 的最少相邻交换次数,https://leetcode.cn/problems/minimum-adjacent-swaps-for-k-consecutive-ones/,minimum-adjacent-swaps-for-k-consecutive-ones,贪心、数组、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/1700-1799/minimum-adjacent-swaps-for-k-consecutive-ones/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1703.%20%E5%BE%97%E5%88%B0%E8%BF%9E%E7%BB%AD%20K%20%E4%B8%AA%201%20%E7%9A%84%E6%9C%80%E5%B0%91%E7%9B%B8%E9%82%BB%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0.md,56.6%,困难,87 -1704,1700-1799,1704. 判断字符串的两半是否相似,判断字符串的两半是否相似,https://leetcode.cn/problems/determine-if-string-halves-are-alike/,determine-if-string-halves-are-alike,字符串、计数,https://algo.itcharge.cn/Solutions/1700-1799/determine-if-string-halves-are-alike/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1704.%20%E5%88%A4%E6%96%AD%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E4%B8%A4%E5%8D%8A%E6%98%AF%E5%90%A6%E7%9B%B8%E4%BC%BC.md,78.4%,简单,569 -1705,1700-1799,1705. 吃苹果的最大数目,吃苹果的最大数目,https://leetcode.cn/problems/maximum-number-of-eaten-apples/,maximum-number-of-eaten-apples,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/1700-1799/maximum-number-of-eaten-apples/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1705.%20%E5%90%83%E8%8B%B9%E6%9E%9C%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md,45.4%,中等,394 -1706,1700-1799,1706. 球会落何处,球会落何处,https://leetcode.cn/problems/where-will-the-ball-fall/,where-will-the-ball-fall,深度优先搜索、数组、动态规划、矩阵、模拟,https://algo.itcharge.cn/Solutions/1700-1799/where-will-the-ball-fall/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1706.%20%E7%90%83%E4%BC%9A%E8%90%BD%E4%BD%95%E5%A4%84.md,69.1%,中等,692 -1707,1700-1799,1707. 与数组中元素的最大异或值,与数组中元素的最大异或值,https://leetcode.cn/problems/maximum-xor-with-an-element-from-array/,maximum-xor-with-an-element-from-array,位运算、字典树、数组,https://algo.itcharge.cn/Solutions/1700-1799/maximum-xor-with-an-element-from-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1707.%20%E4%B8%8E%E6%95%B0%E7%BB%84%E4%B8%AD%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BC%82%E6%88%96%E5%80%BC.md,50.9%,困难,176 -1708,1700-1799,1708. 长度为 K 的最大子数组,长度为 K 的最大子数组,https://leetcode.cn/problems/largest-subarray-length-k/,largest-subarray-length-k,贪心、数组,https://algo.itcharge.cn/Solutions/1700-1799/largest-subarray-length-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1708.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84.md,66.9%,简单,52 -1709,1700-1799,1709. 访问日期之间最大的空档期,访问日期之间最大的空档期,https://leetcode.cn/problems/biggest-window-between-visits/,biggest-window-between-visits,数据库,https://algo.itcharge.cn/Solutions/1700-1799/biggest-window-between-visits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1709.%20%E8%AE%BF%E9%97%AE%E6%97%A5%E6%9C%9F%E4%B9%8B%E9%97%B4%E6%9C%80%E5%A4%A7%E7%9A%84%E7%A9%BA%E6%A1%A3%E6%9C%9F.md,69.0%,中等,82 -1710,1700-1799,1710. 卡车上的最大单元数,卡车上的最大单元数,https://leetcode.cn/problems/maximum-units-on-a-truck/,maximum-units-on-a-truck,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1700-1799/maximum-units-on-a-truck/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1710.%20%E5%8D%A1%E8%BD%A6%E4%B8%8A%E7%9A%84%E6%9C%80%E5%A4%A7%E5%8D%95%E5%85%83%E6%95%B0.md,73.4%,简单,583 -1711,1700-1799,1711. 大餐计数,大餐计数,https://leetcode.cn/problems/count-good-meals/,count-good-meals,数组、哈希表,https://algo.itcharge.cn/Solutions/1700-1799/count-good-meals/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1711.%20%E5%A4%A7%E9%A4%90%E8%AE%A1%E6%95%B0.md,36.0%,中等,389 -1712,1700-1799,1712. 将数组分成三个子数组的方案数,将数组分成三个子数组的方案数,https://leetcode.cn/problems/ways-to-split-array-into-three-subarrays/,ways-to-split-array-into-three-subarrays,数组、双指针、二分查找、前缀和,https://algo.itcharge.cn/Solutions/1700-1799/ways-to-split-array-into-three-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1712.%20%E5%B0%86%E6%95%B0%E7%BB%84%E5%88%86%E6%88%90%E4%B8%89%E4%B8%AA%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,28.5%,中等,175 -1713,1700-1799,1713. 得到子序列的最少操作次数,得到子序列的最少操作次数,https://leetcode.cn/problems/minimum-operations-to-make-a-subsequence/,minimum-operations-to-make-a-subsequence,贪心、数组、哈希表、二分查找,https://algo.itcharge.cn/Solutions/1700-1799/minimum-operations-to-make-a-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1713.%20%E5%BE%97%E5%88%B0%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,49.9%,困难,198 -1714,1700-1799,1714. 数组中特殊等间距元素的和,数组中特殊等间距元素的和,https://leetcode.cn/problems/sum-of-special-evenly-spaced-elements-in-array/,sum-of-special-evenly-spaced-elements-in-array,数组、动态规划,https://algo.itcharge.cn/Solutions/1700-1799/sum-of-special-evenly-spaced-elements-in-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1714.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%89%B9%E6%AE%8A%E7%AD%89%E9%97%B4%E8%B7%9D%E5%85%83%E7%B4%A0%E7%9A%84%E5%92%8C.md,59.6%,困难,14 -1715,1700-1799,1715. 苹果和橘子的个数,苹果和橘子的个数,https://leetcode.cn/problems/count-apples-and-oranges/,count-apples-and-oranges,数据库,https://algo.itcharge.cn/Solutions/1700-1799/count-apples-and-oranges/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1715.%20%E8%8B%B9%E6%9E%9C%E5%92%8C%E6%A9%98%E5%AD%90%E7%9A%84%E4%B8%AA%E6%95%B0.md,71.7%,中等,57 -1716,1700-1799,1716. 计算力扣银行的钱,计算力扣银行的钱,https://leetcode.cn/problems/calculate-money-in-leetcode-bank/,calculate-money-in-leetcode-bank,数学,https://algo.itcharge.cn/Solutions/1700-1799/calculate-money-in-leetcode-bank/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1716.%20%E8%AE%A1%E7%AE%97%E5%8A%9B%E6%89%A3%E9%93%B6%E8%A1%8C%E7%9A%84%E9%92%B1.md,69.1%,简单,748 -1717,1700-1799,1717. 删除子字符串的最大得分,删除子字符串的最大得分,https://leetcode.cn/problems/maximum-score-from-removing-substrings/,maximum-score-from-removing-substrings,栈、贪心、字符串,https://algo.itcharge.cn/Solutions/1700-1799/maximum-score-from-removing-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1717.%20%E5%88%A0%E9%99%A4%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md,46.1%,中等,85 -1718,1700-1799,1718. 构建字典序最大的可行序列,构建字典序最大的可行序列,https://leetcode.cn/problems/construct-the-lexicographically-largest-valid-sequence/,construct-the-lexicographically-largest-valid-sequence,数组、回溯,https://algo.itcharge.cn/Solutions/1700-1799/construct-the-lexicographically-largest-valid-sequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1718.%20%E6%9E%84%E5%BB%BA%E5%AD%97%E5%85%B8%E5%BA%8F%E6%9C%80%E5%A4%A7%E7%9A%84%E5%8F%AF%E8%A1%8C%E5%BA%8F%E5%88%97.md,50.9%,中等,79 -1719,1700-1799,1719. 重构一棵树的方案数,重构一棵树的方案数,https://leetcode.cn/problems/number-of-ways-to-reconstruct-a-tree/,number-of-ways-to-reconstruct-a-tree,树、图,https://algo.itcharge.cn/Solutions/1700-1799/number-of-ways-to-reconstruct-a-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1719.%20%E9%87%8D%E6%9E%84%E4%B8%80%E6%A3%B5%E6%A0%91%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,69.0%,困难,93 -1720,1700-1799,1720. 解码异或后的数组,解码异或后的数组,https://leetcode.cn/problems/decode-xored-array/,decode-xored-array,位运算、数组,https://algo.itcharge.cn/Solutions/1700-1799/decode-xored-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1720.%20%E8%A7%A3%E7%A0%81%E5%BC%82%E6%88%96%E5%90%8E%E7%9A%84%E6%95%B0%E7%BB%84.md,86.0%,简单,598 -1721,1700-1799,1721. 交换链表中的节点,交换链表中的节点,https://leetcode.cn/problems/swapping-nodes-in-a-linked-list/,swapping-nodes-in-a-linked-list,链表、双指针,https://algo.itcharge.cn/Solutions/1700-1799/swapping-nodes-in-a-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1721.%20%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md,63.8%,中等,301 -1722,1700-1799,1722. 执行交换操作后的最小汉明距离,执行交换操作后的最小汉明距离,https://leetcode.cn/problems/minimize-hamming-distance-after-swap-operations/,minimize-hamming-distance-after-swap-operations,深度优先搜索、并查集、数组,https://algo.itcharge.cn/Solutions/1700-1799/minimize-hamming-distance-after-swap-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1722.%20%E6%89%A7%E8%A1%8C%E4%BA%A4%E6%8D%A2%E6%93%8D%E4%BD%9C%E5%90%8E%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B1%89%E6%98%8E%E8%B7%9D%E7%A6%BB.md,51.0%,中等,149 -1723,1700-1799,1723. 完成所有工作的最短时间,完成所有工作的最短时间,https://leetcode.cn/problems/find-minimum-time-to-finish-all-jobs/,find-minimum-time-to-finish-all-jobs,位运算、数组、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/1700-1799/find-minimum-time-to-finish-all-jobs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1723.%20%E5%AE%8C%E6%88%90%E6%89%80%E6%9C%89%E5%B7%A5%E4%BD%9C%E7%9A%84%E6%9C%80%E7%9F%AD%E6%97%B6%E9%97%B4.md,50.9%,困难,223 -1724,1700-1799,1724. 检查边长度限制的路径是否存在 II,检查边长度限制的路径是否存在 II,https://leetcode.cn/problems/checking-existence-of-edge-length-limited-paths-ii/,checking-existence-of-edge-length-limited-paths-ii,并查集、图、最小生成树,https://algo.itcharge.cn/Solutions/1700-1799/checking-existence-of-edge-length-limited-paths-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1724.%20%E6%A3%80%E6%9F%A5%E8%BE%B9%E9%95%BF%E5%BA%A6%E9%99%90%E5%88%B6%E7%9A%84%E8%B7%AF%E5%BE%84%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%20II.md,58.5%,困难,22 -1725,1700-1799,1725. 可以形成最大正方形的矩形数目,可以形成最大正方形的矩形数目,https://leetcode.cn/problems/number-of-rectangles-that-can-form-the-largest-square/,number-of-rectangles-that-can-form-the-largest-square,数组,https://algo.itcharge.cn/Solutions/1700-1799/number-of-rectangles-that-can-form-the-largest-square/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1725.%20%E5%8F%AF%E4%BB%A5%E5%BD%A2%E6%88%90%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%96%B9%E5%BD%A2%E7%9A%84%E7%9F%A9%E5%BD%A2%E6%95%B0%E7%9B%AE.md,82.8%,简单,485 -1726,1700-1799,1726. 同积元组,同积元组,https://leetcode.cn/problems/tuple-with-same-product/,tuple-with-same-product,数组、哈希表,https://algo.itcharge.cn/Solutions/1700-1799/tuple-with-same-product/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1726.%20%E5%90%8C%E7%A7%AF%E5%85%83%E7%BB%84.md,52.2%,中等,143 -1727,1700-1799,1727. 重新排列后的最大子矩阵,重新排列后的最大子矩阵,https://leetcode.cn/problems/largest-submatrix-with-rearrangements/,largest-submatrix-with-rearrangements,贪心、数组、矩阵、排序,https://algo.itcharge.cn/Solutions/1700-1799/largest-submatrix-with-rearrangements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1727.%20%E9%87%8D%E6%96%B0%E6%8E%92%E5%88%97%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%90%E7%9F%A9%E9%98%B5.md,59.2%,中等,94 -1728,1700-1799,1728. 猫和老鼠 II,猫和老鼠 II,https://leetcode.cn/problems/cat-and-mouse-ii/,cat-and-mouse-ii,图、拓扑排序、记忆化搜索、数组、数学、动态规划、博弈、矩阵,https://algo.itcharge.cn/Solutions/1700-1799/cat-and-mouse-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1728.%20%E7%8C%AB%E5%92%8C%E8%80%81%E9%BC%A0%20II.md,64.1%,困难,83 -1729,1700-1799,1729. 求关注者的数量,求关注者的数量,https://leetcode.cn/problems/find-followers-count/,find-followers-count,数据库,https://algo.itcharge.cn/Solutions/1700-1799/find-followers-count/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1729.%20%E6%B1%82%E5%85%B3%E6%B3%A8%E8%80%85%E7%9A%84%E6%95%B0%E9%87%8F.md,61.6%,简单,138 -1730,1700-1799,1730. 获取食物的最短路径,获取食物的最短路径,https://leetcode.cn/problems/shortest-path-to-get-food/,shortest-path-to-get-food,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/1700-1799/shortest-path-to-get-food/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1730.%20%E8%8E%B7%E5%8F%96%E9%A3%9F%E7%89%A9%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md,52.7%,中等,41 -1731,1700-1799,1731. 每位经理的下属员工数量,每位经理的下属员工数量,https://leetcode.cn/problems/the-number-of-employees-which-report-to-each-employee/,the-number-of-employees-which-report-to-each-employee,数据库,https://algo.itcharge.cn/Solutions/1700-1799/the-number-of-employees-which-report-to-each-employee/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1731.%20%E6%AF%8F%E4%BD%8D%E7%BB%8F%E7%90%86%E7%9A%84%E4%B8%8B%E5%B1%9E%E5%91%98%E5%B7%A5%E6%95%B0%E9%87%8F.md,47.0%,简单,103 -1732,1700-1799,1732. 找到最高海拔,找到最高海拔,https://leetcode.cn/problems/find-the-highest-altitude/,find-the-highest-altitude,数组、前缀和,https://algo.itcharge.cn/Solutions/1700-1799/find-the-highest-altitude/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1732.%20%E6%89%BE%E5%88%B0%E6%9C%80%E9%AB%98%E6%B5%B7%E6%8B%94.md,81.3%,简单,556 -1733,1700-1799,1733. 需要教语言的最少人数,需要教语言的最少人数,https://leetcode.cn/problems/minimum-number-of-people-to-teach/,minimum-number-of-people-to-teach,贪心、数组,https://algo.itcharge.cn/Solutions/1700-1799/minimum-number-of-people-to-teach/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1733.%20%E9%9C%80%E8%A6%81%E6%95%99%E8%AF%AD%E8%A8%80%E7%9A%84%E6%9C%80%E5%B0%91%E4%BA%BA%E6%95%B0.md,48.5%,中等,76 -1734,1700-1799,1734. 解码异或后的排列,解码异或后的排列,https://leetcode.cn/problems/decode-xored-permutation/,decode-xored-permutation,位运算、数组,https://algo.itcharge.cn/Solutions/1700-1799/decode-xored-permutation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1734.%20%E8%A7%A3%E7%A0%81%E5%BC%82%E6%88%96%E5%90%8E%E7%9A%84%E6%8E%92%E5%88%97.md,72.4%,中等,385 -1735,1700-1799,1735. 生成乘积数组的方案数,生成乘积数组的方案数,https://leetcode.cn/problems/count-ways-to-make-array-with-product/,count-ways-to-make-array-with-product,数组、数学、动态规划、组合数学、数论,https://algo.itcharge.cn/Solutions/1700-1799/count-ways-to-make-array-with-product/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1735.%20%E7%94%9F%E6%88%90%E4%B9%98%E7%A7%AF%E6%95%B0%E7%BB%84%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,52.2%,困难,50 -1736,1700-1799,1736. 替换隐藏数字得到的最晚时间,替换隐藏数字得到的最晚时间,https://leetcode.cn/problems/latest-time-by-replacing-hidden-digits/,latest-time-by-replacing-hidden-digits,贪心、字符串,https://algo.itcharge.cn/Solutions/1700-1799/latest-time-by-replacing-hidden-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1736.%20%E6%9B%BF%E6%8D%A2%E9%9A%90%E8%97%8F%E6%95%B0%E5%AD%97%E5%BE%97%E5%88%B0%E7%9A%84%E6%9C%80%E6%99%9A%E6%97%B6%E9%97%B4.md,44.5%,简单,421 -1737,1700-1799,1737. 满足三条件之一需改变的最少字符数,满足三条件之一需改变的最少字符数,https://leetcode.cn/problems/change-minimum-characters-to-satisfy-one-of-three-conditions/,change-minimum-characters-to-satisfy-one-of-three-conditions,哈希表、字符串、计数、前缀和,https://algo.itcharge.cn/Solutions/1700-1799/change-minimum-characters-to-satisfy-one-of-three-conditions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1737.%20%E6%BB%A1%E8%B6%B3%E4%B8%89%E6%9D%A1%E4%BB%B6%E4%B9%8B%E4%B8%80%E9%9C%80%E6%94%B9%E5%8F%98%E7%9A%84%E6%9C%80%E5%B0%91%E5%AD%97%E7%AC%A6%E6%95%B0.md,35.8%,中等,130 -1738,1700-1799,1738. 找出第 K 大的异或坐标值,找出第 K 大的异或坐标值,https://leetcode.cn/problems/find-kth-largest-xor-coordinate-value/,find-kth-largest-xor-coordinate-value,位运算、数组、分治、矩阵、前缀和、快速选择、堆(优先队列),https://algo.itcharge.cn/Solutions/1700-1799/find-kth-largest-xor-coordinate-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1738.%20%E6%89%BE%E5%87%BA%E7%AC%AC%20K%20%E5%A4%A7%E7%9A%84%E5%BC%82%E6%88%96%E5%9D%90%E6%A0%87%E5%80%BC.md,65.1%,中等,431 -1739,1700-1799,1739. 放置盒子,放置盒子,https://leetcode.cn/problems/building-boxes/,building-boxes,贪心、数学、二分查找,https://algo.itcharge.cn/Solutions/1700-1799/building-boxes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1739.%20%E6%94%BE%E7%BD%AE%E7%9B%92%E5%AD%90.md,64.4%,困难,133 -1740,1700-1799,1740. 找到二叉树中的距离,找到二叉树中的距离,https://leetcode.cn/problems/find-distance-in-a-binary-tree/,find-distance-in-a-binary-tree,树、深度优先搜索、广度优先搜索、哈希表、二叉树,https://algo.itcharge.cn/Solutions/1700-1799/find-distance-in-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1740.%20%E6%89%BE%E5%88%B0%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E8%B7%9D%E7%A6%BB.md,67.1%,中等,55 -1741,1700-1799,1741. 查找每个员工花费的总时间,查找每个员工花费的总时间,https://leetcode.cn/problems/find-total-time-spent-by-each-employee/,find-total-time-spent-by-each-employee,数据库,https://algo.itcharge.cn/Solutions/1700-1799/find-total-time-spent-by-each-employee/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1741.%20%E6%9F%A5%E6%89%BE%E6%AF%8F%E4%B8%AA%E5%91%98%E5%B7%A5%E8%8A%B1%E8%B4%B9%E7%9A%84%E6%80%BB%E6%97%B6%E9%97%B4.md,84.6%,简单,177 -1742,1700-1799,1742. 盒子中小球的最大数量,盒子中小球的最大数量,https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/,maximum-number-of-balls-in-a-box,哈希表、数学、计数,https://algo.itcharge.cn/Solutions/1700-1799/maximum-number-of-balls-in-a-box/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1742.%20%E7%9B%92%E5%AD%90%E4%B8%AD%E5%B0%8F%E7%90%83%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md,75.8%,简单,390 -1743,1700-1799,1743. 从相邻元素对还原数组,从相邻元素对还原数组,https://leetcode.cn/problems/restore-the-array-from-adjacent-pairs/,restore-the-array-from-adjacent-pairs,数组、哈希表,https://algo.itcharge.cn/Solutions/1700-1799/restore-the-array-from-adjacent-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1743.%20%E4%BB%8E%E7%9B%B8%E9%82%BB%E5%85%83%E7%B4%A0%E5%AF%B9%E8%BF%98%E5%8E%9F%E6%95%B0%E7%BB%84.md,69.6%,中等,357 -1744,1700-1799,1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?,你能在你最喜欢的那天吃到你最喜欢的糖果吗?,https://leetcode.cn/problems/can-you-eat-your-favorite-candy-on-your-favorite-day/,can-you-eat-your-favorite-candy-on-your-favorite-day,数组、前缀和,https://algo.itcharge.cn/Solutions/1700-1799/can-you-eat-your-favorite-candy-on-your-favorite-day/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1744.%20%E4%BD%A0%E8%83%BD%E5%9C%A8%E4%BD%A0%E6%9C%80%E5%96%9C%E6%AC%A2%E7%9A%84%E9%82%A3%E5%A4%A9%E5%90%83%E5%88%B0%E4%BD%A0%E6%9C%80%E5%96%9C%E6%AC%A2%E7%9A%84%E7%B3%96%E6%9E%9C%E5%90%97%EF%BC%9F.md,36.4%,中等,392 -1745,1700-1799,1745. 回文串分割 IV,回文串分割 IV,https://leetcode.cn/problems/palindrome-partitioning-iv/,palindrome-partitioning-iv,字符串、动态规划,https://algo.itcharge.cn/Solutions/1700-1799/palindrome-partitioning-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1745.%20%E5%9B%9E%E6%96%87%E4%B8%B2%E5%88%86%E5%89%B2%20IV.md,50.6%,困难,108 -1746,1700-1799,1746. 经过一次操作后的最大子数组和,经过一次操作后的最大子数组和,https://leetcode.cn/problems/maximum-subarray-sum-after-one-operation/,maximum-subarray-sum-after-one-operation,数组、动态规划,https://algo.itcharge.cn/Solutions/1700-1799/maximum-subarray-sum-after-one-operation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1746.%20%E7%BB%8F%E8%BF%87%E4%B8%80%E6%AC%A1%E6%93%8D%E4%BD%9C%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md,60.6%,中等,77 -1747,1700-1799,1747. 应该被禁止的 Leetflex 账户,应该被禁止的 Leetflex 账户,https://leetcode.cn/problems/leetflex-banned-accounts/,leetflex-banned-accounts,数据库,https://algo.itcharge.cn/Solutions/1700-1799/leetflex-banned-accounts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1747.%20%E5%BA%94%E8%AF%A5%E8%A2%AB%E7%A6%81%E6%AD%A2%E7%9A%84%20Leetflex%20%E8%B4%A6%E6%88%B7.md,65.5%,中等,87 -1748,1700-1799,1748. 唯一元素的和,唯一元素的和,https://leetcode.cn/problems/sum-of-unique-elements/,sum-of-unique-elements,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/1700-1799/sum-of-unique-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1748.%20%E5%94%AF%E4%B8%80%E5%85%83%E7%B4%A0%E7%9A%84%E5%92%8C.md,76.8%,简单,645 -1749,1700-1799,1749. 任意子数组和的绝对值的最大值,任意子数组和的绝对值的最大值,https://leetcode.cn/problems/maximum-absolute-sum-of-any-subarray/,maximum-absolute-sum-of-any-subarray,数组、动态规划,https://algo.itcharge.cn/Solutions/1700-1799/maximum-absolute-sum-of-any-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1749.%20%E4%BB%BB%E6%84%8F%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C%E7%9A%84%E7%BB%9D%E5%AF%B9%E5%80%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,54.4%,中等,147 -1750,1700-1799,1750. 删除字符串两端相同字符后的最短长度,删除字符串两端相同字符后的最短长度,https://leetcode.cn/problems/minimum-length-of-string-after-deleting-similar-ends/,minimum-length-of-string-after-deleting-similar-ends,双指针、字符串,https://algo.itcharge.cn/Solutions/1700-1799/minimum-length-of-string-after-deleting-similar-ends/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1750.%20%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%A4%E7%AB%AF%E7%9B%B8%E5%90%8C%E5%AD%97%E7%AC%A6%E5%90%8E%E7%9A%84%E6%9C%80%E7%9F%AD%E9%95%BF%E5%BA%A6.md,50.6%,中等,294 -1751,1700-1799,1751. 最多可以参加的会议数目 II,最多可以参加的会议数目 II,https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended-ii/,maximum-number-of-events-that-can-be-attended-ii,数组、二分查找、动态规划、排序,https://algo.itcharge.cn/Solutions/1700-1799/maximum-number-of-events-that-can-be-attended-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1751.%20%E6%9C%80%E5%A4%9A%E5%8F%AF%E4%BB%A5%E5%8F%82%E5%8A%A0%E7%9A%84%E4%BC%9A%E8%AE%AE%E6%95%B0%E7%9B%AE%20II.md,54.2%,困难,90 -1752,1700-1799,1752. 检查数组是否经排序和轮转得到,检查数组是否经排序和轮转得到,https://leetcode.cn/problems/check-if-array-is-sorted-and-rotated/,check-if-array-is-sorted-and-rotated,数组,https://algo.itcharge.cn/Solutions/1700-1799/check-if-array-is-sorted-and-rotated/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1752.%20%E6%A3%80%E6%9F%A5%E6%95%B0%E7%BB%84%E6%98%AF%E5%90%A6%E7%BB%8F%E6%8E%92%E5%BA%8F%E5%92%8C%E8%BD%AE%E8%BD%AC%E5%BE%97%E5%88%B0.md,58.1%,简单,409 -1753,1700-1799,1753. 移除石子的最大得分,移除石子的最大得分,https://leetcode.cn/problems/maximum-score-from-removing-stones/,maximum-score-from-removing-stones,贪心、数学、堆(优先队列),https://algo.itcharge.cn/Solutions/1700-1799/maximum-score-from-removing-stones/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1753.%20%E7%A7%BB%E9%99%A4%E7%9F%B3%E5%AD%90%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md,70.7%,中等,336 -1754,1700-1799,1754. 构造字典序最大的合并字符串,构造字典序最大的合并字符串,https://leetcode.cn/problems/largest-merge-of-two-strings/,largest-merge-of-two-strings,贪心、双指针、字符串,https://algo.itcharge.cn/Solutions/1700-1799/largest-merge-of-two-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1754.%20%E6%9E%84%E9%80%A0%E5%AD%97%E5%85%B8%E5%BA%8F%E6%9C%80%E5%A4%A7%E7%9A%84%E5%90%88%E5%B9%B6%E5%AD%97%E7%AC%A6%E4%B8%B2.md,56.3%,中等,209 -1755,1700-1799,1755. 最接近目标值的子序列和,最接近目标值的子序列和,https://leetcode.cn/problems/closest-subsequence-sum/,closest-subsequence-sum,位运算、数组、双指针、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/1700-1799/closest-subsequence-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1755.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97%E5%92%8C.md,45.0%,困难,91 -1756,1700-1799,1756. 设计最近使用(MRU)队列,设计最近使用(MRU)队列,https://leetcode.cn/problems/design-most-recently-used-queue/,design-most-recently-used-queue,栈、设计、树状数组、数组、哈希表、有序集合,https://algo.itcharge.cn/Solutions/1700-1799/design-most-recently-used-queue/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1756.%20%E8%AE%BE%E8%AE%A1%E6%9C%80%E8%BF%91%E4%BD%BF%E7%94%A8%EF%BC%88MRU%EF%BC%89%E9%98%9F%E5%88%97.md,82.0%,中等,34 -1757,1700-1799,1757. 可回收且低脂的产品,可回收且低脂的产品,https://leetcode.cn/problems/recyclable-and-low-fat-products/,recyclable-and-low-fat-products,数据库,https://algo.itcharge.cn/Solutions/1700-1799/recyclable-and-low-fat-products/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1757.%20%E5%8F%AF%E5%9B%9E%E6%94%B6%E4%B8%94%E4%BD%8E%E8%84%82%E7%9A%84%E4%BA%A7%E5%93%81.md,87.7%,简单,279 -1758,1700-1799,1758. 生成交替二进制字符串的最少操作数,生成交替二进制字符串的最少操作数,https://leetcode.cn/problems/minimum-changes-to-make-alternating-binary-string/,minimum-changes-to-make-alternating-binary-string,字符串,https://algo.itcharge.cn/Solutions/1700-1799/minimum-changes-to-make-alternating-binary-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1758.%20%E7%94%9F%E6%88%90%E4%BA%A4%E6%9B%BF%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%95%B0.md,69.7%,简单,451 -1759,1700-1799,1759. 统计同质子字符串的数目,统计同质子字符串的数目,https://leetcode.cn/problems/count-number-of-homogenous-substrings/,count-number-of-homogenous-substrings,数学、字符串,https://algo.itcharge.cn/Solutions/1700-1799/count-number-of-homogenous-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1759.%20%E7%BB%9F%E8%AE%A1%E5%90%8C%E8%B4%A8%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE.md,51.1%,中等,272 -1760,1700-1799,1760. 袋子里最少数目的球,袋子里最少数目的球,https://leetcode.cn/problems/minimum-limit-of-balls-in-a-bag/,minimum-limit-of-balls-in-a-bag,数组、二分查找,https://algo.itcharge.cn/Solutions/1700-1799/minimum-limit-of-balls-in-a-bag/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1760.%20%E8%A2%8B%E5%AD%90%E9%87%8C%E6%9C%80%E5%B0%91%E6%95%B0%E7%9B%AE%E7%9A%84%E7%90%83.md,64.1%,中等,280 -1761,1700-1799,1761. 一个图中连通三元组的最小度数,一个图中连通三元组的最小度数,https://leetcode.cn/problems/minimum-degree-of-a-connected-trio-in-a-graph/,minimum-degree-of-a-connected-trio-in-a-graph,图,https://algo.itcharge.cn/Solutions/1700-1799/minimum-degree-of-a-connected-trio-in-a-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1761.%20%E4%B8%80%E4%B8%AA%E5%9B%BE%E4%B8%AD%E8%BF%9E%E9%80%9A%E4%B8%89%E5%85%83%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%8F%E5%BA%A6%E6%95%B0.md,46.1%,困难,52 -1762,1700-1799,1762. 能看到海景的建筑物,能看到海景的建筑物,https://leetcode.cn/problems/buildings-with-an-ocean-view/,buildings-with-an-ocean-view,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/1700-1799/buildings-with-an-ocean-view/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1762.%20%E8%83%BD%E7%9C%8B%E5%88%B0%E6%B5%B7%E6%99%AF%E7%9A%84%E5%BB%BA%E7%AD%91%E7%89%A9.md,71.4%,中等,47 -1763,1700-1799,1763. 最长的美好子字符串,最长的美好子字符串,https://leetcode.cn/problems/longest-nice-substring/,longest-nice-substring,位运算、哈希表、字符串、分治、滑动窗口,https://algo.itcharge.cn/Solutions/1700-1799/longest-nice-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1763.%20%E6%9C%80%E9%95%BF%E7%9A%84%E7%BE%8E%E5%A5%BD%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,67.2%,简单,307 -1764,1700-1799,1764. 通过连接另一个数组的子数组得到一个数组,通过连接另一个数组的子数组得到一个数组,https://leetcode.cn/problems/form-array-by-concatenating-subarrays-of-another-array/,form-array-by-concatenating-subarrays-of-another-array,贪心、数组、字符串匹配,https://algo.itcharge.cn/Solutions/1700-1799/form-array-by-concatenating-subarrays-of-another-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1764.%20%E9%80%9A%E8%BF%87%E8%BF%9E%E6%8E%A5%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E5%BE%97%E5%88%B0%E4%B8%80%E4%B8%AA%E6%95%B0%E7%BB%84.md,55.7%,中等,258 -1765,1700-1799,1765. 地图中的最高点,地图中的最高点,https://leetcode.cn/problems/map-of-highest-peak/,map-of-highest-peak,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/1700-1799/map-of-highest-peak/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1765.%20%E5%9C%B0%E5%9B%BE%E4%B8%AD%E7%9A%84%E6%9C%80%E9%AB%98%E7%82%B9.md,66.4%,中等,328 -1766,1700-1799,1766. 互质树,互质树,https://leetcode.cn/problems/tree-of-coprimes/,tree-of-coprimes,树、深度优先搜索、广度优先搜索、数学,https://algo.itcharge.cn/Solutions/1700-1799/tree-of-coprimes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1766.%20%E4%BA%92%E8%B4%A8%E6%A0%91.md,40.2%,困难,47 -1767,1700-1799,1767. 寻找没有被执行的任务对,寻找没有被执行的任务对,https://leetcode.cn/problems/find-the-subtasks-that-did-not-execute/,find-the-subtasks-that-did-not-execute,数据库,https://algo.itcharge.cn/Solutions/1700-1799/find-the-subtasks-that-did-not-execute/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1767.%20%E5%AF%BB%E6%89%BE%E6%B2%A1%E6%9C%89%E8%A2%AB%E6%89%A7%E8%A1%8C%E7%9A%84%E4%BB%BB%E5%8A%A1%E5%AF%B9.md,80.2%,困难,61 -1768,1700-1799,1768. 交替合并字符串,交替合并字符串,https://leetcode.cn/problems/merge-strings-alternately/,merge-strings-alternately,双指针、字符串,https://algo.itcharge.cn/Solutions/1700-1799/merge-strings-alternately/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1768.%20%E4%BA%A4%E6%9B%BF%E5%90%88%E5%B9%B6%E5%AD%97%E7%AC%A6%E4%B8%B2.md,76.6%,简单,824 -1769,1700-1799,1769. 移动所有球到每个盒子所需的最小操作数,移动所有球到每个盒子所需的最小操作数,https://leetcode.cn/problems/minimum-number-of-operations-to-move-all-balls-to-each-box/,minimum-number-of-operations-to-move-all-balls-to-each-box,数组、字符串,https://algo.itcharge.cn/Solutions/1700-1799/minimum-number-of-operations-to-move-all-balls-to-each-box/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1769.%20%E7%A7%BB%E5%8A%A8%E6%89%80%E6%9C%89%E7%90%83%E5%88%B0%E6%AF%8F%E4%B8%AA%E7%9B%92%E5%AD%90%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md,87.9%,中等,562 -1770,1700-1799,1770. 执行乘法运算的最大分数,执行乘法运算的最大分数,https://leetcode.cn/problems/maximum-score-from-performing-multiplication-operations/,maximum-score-from-performing-multiplication-operations,数组、动态规划,https://algo.itcharge.cn/Solutions/1700-1799/maximum-score-from-performing-multiplication-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1770.%20%E6%89%A7%E8%A1%8C%E4%B9%98%E6%B3%95%E8%BF%90%E7%AE%97%E7%9A%84%E6%9C%80%E5%A4%A7%E5%88%86%E6%95%B0.md,39.6%,困难,131 -1771,1700-1799,1771. 由子序列构造的最长回文串的长度,由子序列构造的最长回文串的长度,https://leetcode.cn/problems/maximize-palindrome-length-from-subsequences/,maximize-palindrome-length-from-subsequences,字符串、动态规划,https://algo.itcharge.cn/Solutions/1700-1799/maximize-palindrome-length-from-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1771.%20%E7%94%B1%E5%AD%90%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E7%9A%84%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E4%B8%B2%E7%9A%84%E9%95%BF%E5%BA%A6.md,38.4%,困难,64 -1772,1700-1799,1772. 按受欢迎程度排列功能,按受欢迎程度排列功能,https://leetcode.cn/problems/sort-features-by-popularity/,sort-features-by-popularity,数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/1700-1799/sort-features-by-popularity/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1772.%20%E6%8C%89%E5%8F%97%E6%AC%A2%E8%BF%8E%E7%A8%8B%E5%BA%A6%E6%8E%92%E5%88%97%E5%8A%9F%E8%83%BD.md,47.2%,中等,21 -1773,1700-1799,1773. 统计匹配检索规则的物品数量,统计匹配检索规则的物品数量,https://leetcode.cn/problems/count-items-matching-a-rule/,count-items-matching-a-rule,数组、字符串,https://algo.itcharge.cn/Solutions/1700-1799/count-items-matching-a-rule/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1773.%20%E7%BB%9F%E8%AE%A1%E5%8C%B9%E9%85%8D%E6%A3%80%E7%B4%A2%E8%A7%84%E5%88%99%E7%9A%84%E7%89%A9%E5%93%81%E6%95%B0%E9%87%8F.md,86.5%,简单,507 -1774,1700-1799,1774. 最接近目标价格的甜点成本,最接近目标价格的甜点成本,https://leetcode.cn/problems/closest-dessert-cost/,closest-dessert-cost,数组、动态规划、回溯,https://algo.itcharge.cn/Solutions/1700-1799/closest-dessert-cost/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1774.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9B%AE%E6%A0%87%E4%BB%B7%E6%A0%BC%E7%9A%84%E7%94%9C%E7%82%B9%E6%88%90%E6%9C%AC.md,57.5%,中等,304 -1775,1700-1799,1775. 通过最少操作次数使数组的和相等,通过最少操作次数使数组的和相等,https://leetcode.cn/problems/equal-sum-arrays-with-minimum-number-of-operations/,equal-sum-arrays-with-minimum-number-of-operations,贪心、数组、哈希表、计数,https://algo.itcharge.cn/Solutions/1700-1799/equal-sum-arrays-with-minimum-number-of-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1775.%20%E9%80%9A%E8%BF%87%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0%E4%BD%BF%E6%95%B0%E7%BB%84%E7%9A%84%E5%92%8C%E7%9B%B8%E7%AD%89.md,56.4%,中等,361 -1776,1700-1799,1776. 车队 II,车队 II,https://leetcode.cn/problems/car-fleet-ii/,car-fleet-ii,栈、数组、数学、单调栈、堆(优先队列),https://algo.itcharge.cn/Solutions/1700-1799/car-fleet-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1776.%20%E8%BD%A6%E9%98%9F%20II.md,48.5%,困难,65 -1777,1700-1799,1777. 每家商店的产品价格,每家商店的产品价格,https://leetcode.cn/problems/products-price-for-each-store/,products-price-for-each-store,数据库,https://algo.itcharge.cn/Solutions/1700-1799/products-price-for-each-store/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1777.%20%E6%AF%8F%E5%AE%B6%E5%95%86%E5%BA%97%E7%9A%84%E4%BA%A7%E5%93%81%E4%BB%B7%E6%A0%BC.md,78.3%,简单,85 -1778,1700-1799,1778. 未知网格中的最短路径,未知网格中的最短路径,https://leetcode.cn/problems/shortest-path-in-a-hidden-grid/,shortest-path-in-a-hidden-grid,深度优先搜索、广度优先搜索、图、交互,https://algo.itcharge.cn/Solutions/1700-1799/shortest-path-in-a-hidden-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1778.%20%E6%9C%AA%E7%9F%A5%E7%BD%91%E6%A0%BC%E4%B8%AD%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md,48.1%,中等,16 -1779,1700-1799,1779. 找到最近的有相同 X 或 Y 坐标的点,找到最近的有相同 X 或 Y 坐标的点,https://leetcode.cn/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/,find-nearest-point-that-has-the-same-x-or-y-coordinate,数组,https://algo.itcharge.cn/Solutions/1700-1799/find-nearest-point-that-has-the-same-x-or-y-coordinate/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1779.%20%E6%89%BE%E5%88%B0%E6%9C%80%E8%BF%91%E7%9A%84%E6%9C%89%E7%9B%B8%E5%90%8C%20X%20%E6%88%96%20Y%20%E5%9D%90%E6%A0%87%E7%9A%84%E7%82%B9.md,69.0%,简单,547 -1780,1700-1799,1780. 判断一个数字是否可以表示成三的幂的和,判断一个数字是否可以表示成三的幂的和,https://leetcode.cn/problems/check-if-number-is-a-sum-of-powers-of-three/,check-if-number-is-a-sum-of-powers-of-three,数学,https://algo.itcharge.cn/Solutions/1700-1799/check-if-number-is-a-sum-of-powers-of-three/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1780.%20%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%AA%E6%95%B0%E5%AD%97%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%A1%A8%E7%A4%BA%E6%88%90%E4%B8%89%E7%9A%84%E5%B9%82%E7%9A%84%E5%92%8C.md,74.8%,中等,503 -1781,1700-1799,1781. 所有子字符串美丽值之和,所有子字符串美丽值之和,https://leetcode.cn/problems/sum-of-beauty-of-all-substrings/,sum-of-beauty-of-all-substrings,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/1700-1799/sum-of-beauty-of-all-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1781.%20%E6%89%80%E6%9C%89%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%BE%8E%E4%B8%BD%E5%80%BC%E4%B9%8B%E5%92%8C.md,66.5%,中等,226 -1782,1700-1799,1782. 统计点对的数目,统计点对的数目,https://leetcode.cn/problems/count-pairs-of-nodes/,count-pairs-of-nodes,图、双指针、二分查找,https://algo.itcharge.cn/Solutions/1700-1799/count-pairs-of-nodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1782.%20%E7%BB%9F%E8%AE%A1%E7%82%B9%E5%AF%B9%E7%9A%84%E6%95%B0%E7%9B%AE.md,35.7%,困难,52 -1783,1700-1799,1783. 大满贯数量,大满贯数量,https://leetcode.cn/problems/grand-slam-titles/,grand-slam-titles,数据库,https://algo.itcharge.cn/Solutions/1700-1799/grand-slam-titles/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1783.%20%E5%A4%A7%E6%BB%A1%E8%B4%AF%E6%95%B0%E9%87%8F.md,80.5%,中等,86 -1784,1700-1799,1784. 检查二进制字符串字段,检查二进制字符串字段,https://leetcode.cn/problems/check-if-binary-string-has-at-most-one-segment-of-ones/,check-if-binary-string-has-at-most-one-segment-of-ones,字符串,https://algo.itcharge.cn/Solutions/1700-1799/check-if-binary-string-has-at-most-one-segment-of-ones/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1784.%20%E6%A3%80%E6%9F%A5%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%AD%97%E6%AE%B5.md,59.5%,简单,541 -1785,1700-1799,1785. 构成特定和需要添加的最少元素,构成特定和需要添加的最少元素,https://leetcode.cn/problems/minimum-elements-to-add-to-form-a-given-sum/,minimum-elements-to-add-to-form-a-given-sum,贪心、数组,https://algo.itcharge.cn/Solutions/1700-1799/minimum-elements-to-add-to-form-a-given-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1785.%20%E6%9E%84%E6%88%90%E7%89%B9%E5%AE%9A%E5%92%8C%E9%9C%80%E8%A6%81%E6%B7%BB%E5%8A%A0%E7%9A%84%E6%9C%80%E5%B0%91%E5%85%83%E7%B4%A0.md,43.5%,中等,292 -1786,1700-1799,1786. 从第一个节点出发到最后一个节点的受限路径数,从第一个节点出发到最后一个节点的受限路径数,https://leetcode.cn/problems/number-of-restricted-paths-from-first-to-last-node/,number-of-restricted-paths-from-first-to-last-node,图、拓扑排序、动态规划、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/1700-1799/number-of-restricted-paths-from-first-to-last-node/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1786.%20%E4%BB%8E%E7%AC%AC%E4%B8%80%E4%B8%AA%E8%8A%82%E7%82%B9%E5%87%BA%E5%8F%91%E5%88%B0%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E5%8F%97%E9%99%90%E8%B7%AF%E5%BE%84%E6%95%B0.md,36.4%,中等,133 -1787,1700-1799,1787. 使所有区间的异或结果为零,使所有区间的异或结果为零,https://leetcode.cn/problems/make-the-xor-of-all-segments-equal-to-zero/,make-the-xor-of-all-segments-equal-to-zero,位运算、数组、动态规划,https://algo.itcharge.cn/Solutions/1700-1799/make-the-xor-of-all-segments-equal-to-zero/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1787.%20%E4%BD%BF%E6%89%80%E6%9C%89%E5%8C%BA%E9%97%B4%E7%9A%84%E5%BC%82%E6%88%96%E7%BB%93%E6%9E%9C%E4%B8%BA%E9%9B%B6.md,64.3%,困难,66 -1788,1700-1799,1788. 最大化花园的美观度,最大化花园的美观度,https://leetcode.cn/problems/maximize-the-beauty-of-the-garden/,maximize-the-beauty-of-the-garden,贪心、数组、前缀和,https://algo.itcharge.cn/Solutions/1700-1799/maximize-the-beauty-of-the-garden/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1788.%20%E6%9C%80%E5%A4%A7%E5%8C%96%E8%8A%B1%E5%9B%AD%E7%9A%84%E7%BE%8E%E8%A7%82%E5%BA%A6.md,65.5%,困难,32 -1789,1700-1799,1789. 员工的直属部门,员工的直属部门,https://leetcode.cn/problems/primary-department-for-each-employee/,primary-department-for-each-employee,数据库,https://algo.itcharge.cn/Solutions/1700-1799/primary-department-for-each-employee/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1789.%20%E5%91%98%E5%B7%A5%E7%9A%84%E7%9B%B4%E5%B1%9E%E9%83%A8%E9%97%A8.md,71.7%,简单,81 -1790,1700-1799,1790. 仅执行一次字符串交换能否使两个字符串相等,仅执行一次字符串交换能否使两个字符串相等,https://leetcode.cn/problems/check-if-one-string-swap-can-make-strings-equal/,check-if-one-string-swap-can-make-strings-equal,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/1700-1799/check-if-one-string-swap-can-make-strings-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1790.%20%E4%BB%85%E6%89%A7%E8%A1%8C%E4%B8%80%E6%AC%A1%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BA%A4%E6%8D%A2%E8%83%BD%E5%90%A6%E4%BD%BF%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E7%AD%89.md,52.5%,简单,868 -1791,1700-1799,1791. 找出星型图的中心节点,找出星型图的中心节点,https://leetcode.cn/problems/find-center-of-star-graph/,find-center-of-star-graph,图,https://algo.itcharge.cn/Solutions/1700-1799/find-center-of-star-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1791.%20%E6%89%BE%E5%87%BA%E6%98%9F%E5%9E%8B%E5%9B%BE%E7%9A%84%E4%B8%AD%E5%BF%83%E8%8A%82%E7%82%B9.md,83.1%,简单,507 -1792,1700-1799,1792. 最大平均通过率,最大平均通过率,https://leetcode.cn/problems/maximum-average-pass-ratio/,maximum-average-pass-ratio,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/1700-1799/maximum-average-pass-ratio/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1792.%20%E6%9C%80%E5%A4%A7%E5%B9%B3%E5%9D%87%E9%80%9A%E8%BF%87%E7%8E%87.md,58.8%,中等,255 -1793,1700-1799,1793. 好子数组的最大分数,好子数组的最大分数,https://leetcode.cn/problems/maximum-score-of-a-good-subarray/,maximum-score-of-a-good-subarray,栈、数组、双指针、二分查找、单调栈,https://algo.itcharge.cn/Solutions/1700-1799/maximum-score-of-a-good-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1793.%20%E5%A5%BD%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%88%86%E6%95%B0.md,45.5%,困难,129 -1794,1700-1799,1794. 统计距离最小的子串对个数,统计距离最小的子串对个数,https://leetcode.cn/problems/count-pairs-of-equal-substrings-with-minimum-difference/,count-pairs-of-equal-substrings-with-minimum-difference,贪心、哈希表、字符串,https://algo.itcharge.cn/Solutions/1700-1799/count-pairs-of-equal-substrings-with-minimum-difference/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1794.%20%E7%BB%9F%E8%AE%A1%E8%B7%9D%E7%A6%BB%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E4%B8%B2%E5%AF%B9%E4%B8%AA%E6%95%B0.md,55.3%,中等,13 -1795,1700-1799,1795. 每个产品在不同商店的价格,每个产品在不同商店的价格,https://leetcode.cn/problems/rearrange-products-table/,rearrange-products-table,数据库,https://algo.itcharge.cn/Solutions/1700-1799/rearrange-products-table/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1795.%20%E6%AF%8F%E4%B8%AA%E4%BA%A7%E5%93%81%E5%9C%A8%E4%B8%8D%E5%90%8C%E5%95%86%E5%BA%97%E7%9A%84%E4%BB%B7%E6%A0%BC.md,78.2%,简单,178 -1796,1700-1799,1796. 字符串中第二大的数字,字符串中第二大的数字,https://leetcode.cn/problems/second-largest-digit-in-a-string/,second-largest-digit-in-a-string,哈希表、字符串,https://algo.itcharge.cn/Solutions/1700-1799/second-largest-digit-in-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1796.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%AC%AC%E4%BA%8C%E5%A4%A7%E7%9A%84%E6%95%B0%E5%AD%97.md,54.9%,简单,456 -1797,1700-1799,1797. 设计一个验证系统,设计一个验证系统,https://leetcode.cn/problems/design-authentication-manager/,design-authentication-manager,设计、哈希表,https://algo.itcharge.cn/Solutions/1700-1799/design-authentication-manager/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1797.%20%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E9%AA%8C%E8%AF%81%E7%B3%BB%E7%BB%9F.md,65.0%,中等,347 -1798,1700-1799,1798. 你能构造出连续值的最大数目,你能构造出连续值的最大数目,https://leetcode.cn/problems/maximum-number-of-consecutive-values-you-can-make/,maximum-number-of-consecutive-values-you-can-make,贪心、数组,https://algo.itcharge.cn/Solutions/1700-1799/maximum-number-of-consecutive-values-you-can-make/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1798.%20%E4%BD%A0%E8%83%BD%E6%9E%84%E9%80%A0%E5%87%BA%E8%BF%9E%E7%BB%AD%E5%80%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md,71.0%,中等,242 -1799,1700-1799,1799. N 次操作后的最大分数和,N 次操作后的最大分数和,https://leetcode.cn/problems/maximize-score-after-n-operations/,maximize-score-after-n-operations,位运算、数组、数学、动态规划、回溯、状态压缩、数论,https://algo.itcharge.cn/Solutions/1700-1799/maximize-score-after-n-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1799.%20N%20%E6%AC%A1%E6%93%8D%E4%BD%9C%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E5%88%86%E6%95%B0%E5%92%8C.md,65.7%,困难,164 -1800,1800-1899,1800. 最大升序子数组和,最大升序子数组和,https://leetcode.cn/problems/maximum-ascending-subarray-sum/,maximum-ascending-subarray-sum,数组,https://algo.itcharge.cn/Solutions/1800-1899/maximum-ascending-subarray-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1800.%20%E6%9C%80%E5%A4%A7%E5%8D%87%E5%BA%8F%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md,68.7%,简单,640 -1801,1800-1899,1801. 积压订单中的订单总数,积压订单中的订单总数,https://leetcode.cn/problems/number-of-orders-in-the-backlog/,number-of-orders-in-the-backlog,数组、模拟、堆(优先队列),https://algo.itcharge.cn/Solutions/1800-1899/number-of-orders-in-the-backlog/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1801.%20%E7%A7%AF%E5%8E%8B%E8%AE%A2%E5%8D%95%E4%B8%AD%E7%9A%84%E8%AE%A2%E5%8D%95%E6%80%BB%E6%95%B0.md,53.2%,中等,299 -1802,1800-1899,1802. 有界数组中指定下标处的最大值,有界数组中指定下标处的最大值,https://leetcode.cn/problems/maximum-value-at-a-given-index-in-a-bounded-array/,maximum-value-at-a-given-index-in-a-bounded-array,贪心、二分查找,https://algo.itcharge.cn/Solutions/1800-1899/maximum-value-at-a-given-index-in-a-bounded-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1802.%20%E6%9C%89%E7%95%8C%E6%95%B0%E7%BB%84%E4%B8%AD%E6%8C%87%E5%AE%9A%E4%B8%8B%E6%A0%87%E5%A4%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,38.1%,中等,382 -1803,1800-1899,1803. 统计异或值在范围内的数对有多少,统计异或值在范围内的数对有多少,https://leetcode.cn/problems/count-pairs-with-xor-in-a-range/,count-pairs-with-xor-in-a-range,位运算、字典树、数组,https://algo.itcharge.cn/Solutions/1800-1899/count-pairs-with-xor-in-a-range/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1803.%20%E7%BB%9F%E8%AE%A1%E5%BC%82%E6%88%96%E5%80%BC%E5%9C%A8%E8%8C%83%E5%9B%B4%E5%86%85%E7%9A%84%E6%95%B0%E5%AF%B9%E6%9C%89%E5%A4%9A%E5%B0%91.md,56.3%,困难,156 -1804,1800-1899,1804. 实现 Trie (前缀树) II,实现 Trie (前缀树) II,https://leetcode.cn/problems/implement-trie-ii-prefix-tree/,implement-trie-ii-prefix-tree,设计、字典树、哈希表、字符串,https://algo.itcharge.cn/Solutions/1800-1899/implement-trie-ii-prefix-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1804.%20%E5%AE%9E%E7%8E%B0%20Trie%20%EF%BC%88%E5%89%8D%E7%BC%80%E6%A0%91%EF%BC%89%20II.md,57.1%,中等,60 -1805,1800-1899,1805. 字符串中不同整数的数目,字符串中不同整数的数目,https://leetcode.cn/problems/number-of-different-integers-in-a-string/,number-of-different-integers-in-a-string,哈希表、字符串,https://algo.itcharge.cn/Solutions/1800-1899/number-of-different-integers-in-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1805.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E4%B8%8D%E5%90%8C%E6%95%B4%E6%95%B0%E7%9A%84%E6%95%B0%E7%9B%AE.md,43.2%,简单,552 -1806,1800-1899,1806. 还原排列的最少操作步数,还原排列的最少操作步数,https://leetcode.cn/problems/minimum-number-of-operations-to-reinitialize-a-permutation/,minimum-number-of-operations-to-reinitialize-a-permutation,数组、数学、模拟,https://algo.itcharge.cn/Solutions/1800-1899/minimum-number-of-operations-to-reinitialize-a-permutation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1806.%20%E8%BF%98%E5%8E%9F%E6%8E%92%E5%88%97%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AD%A5%E6%95%B0.md,76.7%,中等,304 -1807,1800-1899,1807. 替换字符串中的括号内容,替换字符串中的括号内容,https://leetcode.cn/problems/evaluate-the-bracket-pairs-of-a-string/,evaluate-the-bracket-pairs-of-a-string,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/1800-1899/evaluate-the-bracket-pairs-of-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1807.%20%E6%9B%BF%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%8B%AC%E5%8F%B7%E5%86%85%E5%AE%B9.md,67.5%,中等,435 -1808,1800-1899,1808. 好因子的最大数目,好因子的最大数目,https://leetcode.cn/problems/maximize-number-of-nice-divisors/,maximize-number-of-nice-divisors,递归、数学,https://algo.itcharge.cn/Solutions/1800-1899/maximize-number-of-nice-divisors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1808.%20%E5%A5%BD%E5%9B%A0%E5%AD%90%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md,28.6%,困难,61 -1809,1800-1899,1809. 没有广告的剧集,没有广告的剧集,https://leetcode.cn/problems/ad-free-sessions/,ad-free-sessions,数据库,https://algo.itcharge.cn/Solutions/1800-1899/ad-free-sessions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1809.%20%E6%B2%A1%E6%9C%89%E5%B9%BF%E5%91%8A%E7%9A%84%E5%89%A7%E9%9B%86.md,61.0%,简单,51 -1810,1800-1899,1810. 隐藏网格下的最小消耗路径,隐藏网格下的最小消耗路径,https://leetcode.cn/problems/minimum-path-cost-in-a-hidden-grid/,minimum-path-cost-in-a-hidden-grid,深度优先搜索、广度优先搜索、图、交互、堆(优先队列),https://algo.itcharge.cn/Solutions/1800-1899/minimum-path-cost-in-a-hidden-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1810.%20%E9%9A%90%E8%97%8F%E7%BD%91%E6%A0%BC%E4%B8%8B%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md,62.7%,中等,10 -1811,1800-1899,1811. 寻找面试候选人,寻找面试候选人,https://leetcode.cn/problems/find-interview-candidates/,find-interview-candidates,数据库,https://algo.itcharge.cn/Solutions/1800-1899/find-interview-candidates/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1811.%20%E5%AF%BB%E6%89%BE%E9%9D%A2%E8%AF%95%E5%80%99%E9%80%89%E4%BA%BA.md,63.7%,中等,54 -1812,1800-1899,1812. 判断国际象棋棋盘中一个格子的颜色,判断国际象棋棋盘中一个格子的颜色,https://leetcode.cn/problems/determine-color-of-a-chessboard-square/,determine-color-of-a-chessboard-square,数学、字符串,https://algo.itcharge.cn/Solutions/1800-1899/determine-color-of-a-chessboard-square/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1812.%20%E5%88%A4%E6%96%AD%E5%9B%BD%E9%99%85%E8%B1%A1%E6%A3%8B%E6%A3%8B%E7%9B%98%E4%B8%AD%E4%B8%80%E4%B8%AA%E6%A0%BC%E5%AD%90%E7%9A%84%E9%A2%9C%E8%89%B2.md,81.8%,简单,700 -1813,1800-1899,1813. 句子相似性 III,句子相似性 III,https://leetcode.cn/problems/sentence-similarity-iii/,sentence-similarity-iii,数组、双指针、字符串,https://algo.itcharge.cn/Solutions/1800-1899/sentence-similarity-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1813.%20%E5%8F%A5%E5%AD%90%E7%9B%B8%E4%BC%BC%E6%80%A7%20III.md,41.6%,中等,333 -1814,1800-1899,1814. 统计一个数组中好对子的数目,统计一个数组中好对子的数目,https://leetcode.cn/problems/count-nice-pairs-in-an-array/,count-nice-pairs-in-an-array,数组、哈希表、数学、计数,https://algo.itcharge.cn/Solutions/1800-1899/count-nice-pairs-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1814.%20%E7%BB%9F%E8%AE%A1%E4%B8%80%E4%B8%AA%E6%95%B0%E7%BB%84%E4%B8%AD%E5%A5%BD%E5%AF%B9%E5%AD%90%E7%9A%84%E6%95%B0%E7%9B%AE.md,47.1%,中等,314 -1815,1800-1899,1815. 得到新鲜甜甜圈的最多组数,得到新鲜甜甜圈的最多组数,https://leetcode.cn/problems/maximum-number-of-groups-getting-fresh-donuts/,maximum-number-of-groups-getting-fresh-donuts,位运算、记忆化搜索、数组、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/1800-1899/maximum-number-of-groups-getting-fresh-donuts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1815.%20%E5%BE%97%E5%88%B0%E6%96%B0%E9%B2%9C%E7%94%9C%E7%94%9C%E5%9C%88%E7%9A%84%E6%9C%80%E5%A4%9A%E7%BB%84%E6%95%B0.md,53.4%,困难,93 -1816,1800-1899,1816. 截断句子,截断句子,https://leetcode.cn/problems/truncate-sentence/,truncate-sentence,数组、字符串,https://algo.itcharge.cn/Solutions/1800-1899/truncate-sentence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1816.%20%E6%88%AA%E6%96%AD%E5%8F%A5%E5%AD%90.md,72.4%,简单,738 -1817,1800-1899,1817. 查找用户活跃分钟数,查找用户活跃分钟数,https://leetcode.cn/problems/finding-the-users-active-minutes/,finding-the-users-active-minutes,数组、哈希表,https://algo.itcharge.cn/Solutions/1800-1899/finding-the-users-active-minutes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1817.%20%E6%9F%A5%E6%89%BE%E7%94%A8%E6%88%B7%E6%B4%BB%E8%B7%83%E5%88%86%E9%92%9F%E6%95%B0.md,79.4%,中等,315 -1818,1800-1899,1818. 绝对差值和,绝对差值和,https://leetcode.cn/problems/minimum-absolute-sum-difference/,minimum-absolute-sum-difference,数组、二分查找、有序集合、排序,https://algo.itcharge.cn/Solutions/1800-1899/minimum-absolute-sum-difference/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1818.%20%E7%BB%9D%E5%AF%B9%E5%B7%AE%E5%80%BC%E5%92%8C.md,37.6%,中等,393 -1819,1800-1899,1819. 序列中不同最大公约数的数目,序列中不同最大公约数的数目,https://leetcode.cn/problems/number-of-different-subsequences-gcds/,number-of-different-subsequences-gcds,数组、数学、计数、数论,https://algo.itcharge.cn/Solutions/1800-1899/number-of-different-subsequences-gcds/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1819.%20%E5%BA%8F%E5%88%97%E4%B8%AD%E4%B8%8D%E5%90%8C%E6%9C%80%E5%A4%A7%E5%85%AC%E7%BA%A6%E6%95%B0%E7%9A%84%E6%95%B0%E7%9B%AE.md,63.3%,困难,108 -1820,1800-1899,1820. 最多邀请的个数,最多邀请的个数,https://leetcode.cn/problems/maximum-number-of-accepted-invitations/,maximum-number-of-accepted-invitations,数组、回溯、矩阵,https://algo.itcharge.cn/Solutions/1800-1899/maximum-number-of-accepted-invitations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1820.%20%E6%9C%80%E5%A4%9A%E9%82%80%E8%AF%B7%E7%9A%84%E4%B8%AA%E6%95%B0.md,47.7%,中等,17 -1821,1800-1899,1821. 寻找今年具有正收入的客户,寻找今年具有正收入的客户,https://leetcode.cn/problems/find-customers-with-positive-revenue-this-year/,find-customers-with-positive-revenue-this-year,数据库,https://algo.itcharge.cn/Solutions/1800-1899/find-customers-with-positive-revenue-this-year/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1821.%20%E5%AF%BB%E6%89%BE%E4%BB%8A%E5%B9%B4%E5%85%B7%E6%9C%89%E6%AD%A3%E6%94%B6%E5%85%A5%E7%9A%84%E5%AE%A2%E6%88%B7.md,88.5%,简单,45 -1822,1800-1899,1822. 数组元素积的符号,数组元素积的符号,https://leetcode.cn/problems/sign-of-the-product-of-an-array/,sign-of-the-product-of-an-array,数组、数学,https://algo.itcharge.cn/Solutions/1800-1899/sign-of-the-product-of-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1822.%20%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E7%A7%AF%E7%9A%84%E7%AC%A6%E5%8F%B7.md,71.7%,简单,732 -1823,1800-1899,1823. 找出游戏的获胜者,找出游戏的获胜者,https://leetcode.cn/problems/find-the-winner-of-the-circular-game/,find-the-winner-of-the-circular-game,递归、队列、数组、数学、模拟,https://algo.itcharge.cn/Solutions/1800-1899/find-the-winner-of-the-circular-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1823.%20%E6%89%BE%E5%87%BA%E6%B8%B8%E6%88%8F%E7%9A%84%E8%8E%B7%E8%83%9C%E8%80%85.md,78.5%,中等,578 -1824,1800-1899,1824. 最少侧跳次数,最少侧跳次数,https://leetcode.cn/problems/minimum-sideway-jumps/,minimum-sideway-jumps,贪心、数组、动态规划,https://algo.itcharge.cn/Solutions/1800-1899/minimum-sideway-jumps/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1824.%20%E6%9C%80%E5%B0%91%E4%BE%A7%E8%B7%B3%E6%AC%A1%E6%95%B0.md,68.4%,中等,332 -1825,1800-1899,1825. 求出 MK 平均值,求出 MK 平均值,https://leetcode.cn/problems/finding-mk-average/,finding-mk-average,设计、队列、数据流、有序集合、堆(优先队列),https://algo.itcharge.cn/Solutions/1800-1899/finding-mk-average/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1825.%20%E6%B1%82%E5%87%BA%20MK%20%E5%B9%B3%E5%9D%87%E5%80%BC.md,43.4%,困难,190 -1826,1800-1899,1826. 有缺陷的传感器,有缺陷的传感器,https://leetcode.cn/problems/faulty-sensor/,faulty-sensor,数组、双指针,https://algo.itcharge.cn/Solutions/1800-1899/faulty-sensor/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1826.%20%E6%9C%89%E7%BC%BA%E9%99%B7%E7%9A%84%E4%BC%A0%E6%84%9F%E5%99%A8.md,41.7%,简单,40 -1827,1800-1899,1827. 最少操作使数组递增,最少操作使数组递增,https://leetcode.cn/problems/minimum-operations-to-make-the-array-increasing/,minimum-operations-to-make-the-array-increasing,贪心、数组,https://algo.itcharge.cn/Solutions/1800-1899/minimum-operations-to-make-the-array-increasing/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1827.%20%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E4%BD%BF%E6%95%B0%E7%BB%84%E9%80%92%E5%A2%9E.md,81.4%,简单,418 -1828,1800-1899,1828. 统计一个圆中点的数目,统计一个圆中点的数目,https://leetcode.cn/problems/queries-on-number-of-points-inside-a-circle/,queries-on-number-of-points-inside-a-circle,几何、数组、数学,https://algo.itcharge.cn/Solutions/1800-1899/queries-on-number-of-points-inside-a-circle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1828.%20%E7%BB%9F%E8%AE%A1%E4%B8%80%E4%B8%AA%E5%9C%86%E4%B8%AD%E7%82%B9%E7%9A%84%E6%95%B0%E7%9B%AE.md,88.5%,中等,323 -1829,1800-1899,1829. 每个查询的最大异或值,每个查询的最大异或值,https://leetcode.cn/problems/maximum-xor-for-each-query/,maximum-xor-for-each-query,位运算、数组、前缀和,https://algo.itcharge.cn/Solutions/1800-1899/maximum-xor-for-each-query/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1829.%20%E6%AF%8F%E4%B8%AA%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BC%82%E6%88%96%E5%80%BC.md,72.1%,中等,118 -1830,1800-1899,1830. 使字符串有序的最少操作次数,使字符串有序的最少操作次数,https://leetcode.cn/problems/minimum-number-of-operations-to-make-string-sorted/,minimum-number-of-operations-to-make-string-sorted,数学、字符串、组合数学,https://algo.itcharge.cn/Solutions/1800-1899/minimum-number-of-operations-to-make-string-sorted/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1830.%20%E4%BD%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%9C%89%E5%BA%8F%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,53.1%,困难,31 -1831,1800-1899,1831. 每天的最大交易,每天的最大交易,https://leetcode.cn/problems/maximum-transaction-each-day/,maximum-transaction-each-day,数据库,https://algo.itcharge.cn/Solutions/1800-1899/maximum-transaction-each-day/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1831.%20%E6%AF%8F%E5%A4%A9%E7%9A%84%E6%9C%80%E5%A4%A7%E4%BA%A4%E6%98%93.md,78.1%,中等,67 -1832,1800-1899,1832. 判断句子是否为全字母句,判断句子是否为全字母句,https://leetcode.cn/problems/check-if-the-sentence-is-pangram/,check-if-the-sentence-is-pangram,哈希表、字符串,https://algo.itcharge.cn/Solutions/1800-1899/check-if-the-sentence-is-pangram/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1832.%20%E5%88%A4%E6%96%AD%E5%8F%A5%E5%AD%90%E6%98%AF%E5%90%A6%E4%B8%BA%E5%85%A8%E5%AD%97%E6%AF%8D%E5%8F%A5.md,84.8%,简单,612 -1833,1800-1899,1833. 雪糕的最大数量,雪糕的最大数量,https://leetcode.cn/problems/maximum-ice-cream-bars/,maximum-ice-cream-bars,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1800-1899/maximum-ice-cream-bars/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1833.%20%E9%9B%AA%E7%B3%95%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md,68.1%,中等,466 -1834,1800-1899,1834. 单线程 CPU,单线程 CPU,https://leetcode.cn/problems/single-threaded-cpu/,single-threaded-cpu,数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1800-1899/single-threaded-cpu/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1834.%20%E5%8D%95%E7%BA%BF%E7%A8%8B%20CPU.md,37.9%,中等,179 -1835,1800-1899,1835. 所有数对按位与结果的异或和,所有数对按位与结果的异或和,https://leetcode.cn/problems/find-xor-sum-of-all-pairs-bitwise-and/,find-xor-sum-of-all-pairs-bitwise-and,位运算、数组、数学,https://algo.itcharge.cn/Solutions/1800-1899/find-xor-sum-of-all-pairs-bitwise-and/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1835.%20%E6%89%80%E6%9C%89%E6%95%B0%E5%AF%B9%E6%8C%89%E4%BD%8D%E4%B8%8E%E7%BB%93%E6%9E%9C%E7%9A%84%E5%BC%82%E6%88%96%E5%92%8C.md,56.0%,困难,77 -1836,1800-1899,1836. 从未排序的链表中移除重复元素,从未排序的链表中移除重复元素,https://leetcode.cn/problems/remove-duplicates-from-an-unsorted-linked-list/,remove-duplicates-from-an-unsorted-linked-list,哈希表、链表,https://algo.itcharge.cn/Solutions/1800-1899/remove-duplicates-from-an-unsorted-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1836.%20%E4%BB%8E%E6%9C%AA%E6%8E%92%E5%BA%8F%E7%9A%84%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%A7%BB%E9%99%A4%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md,73.0%,中等,60 -1837,1800-1899,1837. K 进制表示下的各位数字总和,K 进制表示下的各位数字总和,https://leetcode.cn/problems/sum-of-digits-in-base-k/,sum-of-digits-in-base-k,数学,https://algo.itcharge.cn/Solutions/1800-1899/sum-of-digits-in-base-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1837.%20K%20%E8%BF%9B%E5%88%B6%E8%A1%A8%E7%A4%BA%E4%B8%8B%E7%9A%84%E5%90%84%E4%BD%8D%E6%95%B0%E5%AD%97%E6%80%BB%E5%92%8C.md,79.3%,简单,173 -1838,1800-1899,1838. 最高频元素的频数,最高频元素的频数,https://leetcode.cn/problems/frequency-of-the-most-frequent-element/,frequency-of-the-most-frequent-element,贪心、数组、二分查找、前缀和、排序、滑动窗口,https://algo.itcharge.cn/Solutions/1800-1899/frequency-of-the-most-frequent-element/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1838.%20%E6%9C%80%E9%AB%98%E9%A2%91%E5%85%83%E7%B4%A0%E7%9A%84%E9%A2%91%E6%95%B0.md,43.1%,中等,381 -1839,1800-1899,1839. 所有元音按顺序排布的最长子字符串,所有元音按顺序排布的最长子字符串,https://leetcode.cn/problems/longest-substring-of-all-vowels-in-order/,longest-substring-of-all-vowels-in-order,字符串、滑动窗口,https://algo.itcharge.cn/Solutions/1800-1899/longest-substring-of-all-vowels-in-order/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1839.%20%E6%89%80%E6%9C%89%E5%85%83%E9%9F%B3%E6%8C%89%E9%A1%BA%E5%BA%8F%E6%8E%92%E5%B8%83%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,49.1%,中等,208 -1840,1800-1899,1840. 最高建筑高度,最高建筑高度,https://leetcode.cn/problems/maximum-building-height/,maximum-building-height,数组、数学,https://algo.itcharge.cn/Solutions/1800-1899/maximum-building-height/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1840.%20%E6%9C%80%E9%AB%98%E5%BB%BA%E7%AD%91%E9%AB%98%E5%BA%A6.md,39.4%,困难,63 -1841,1800-1899,1841. 联赛信息统计,联赛信息统计,https://leetcode.cn/problems/league-statistics/,league-statistics,数据库,https://algo.itcharge.cn/Solutions/1800-1899/league-statistics/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1841.%20%E8%81%94%E8%B5%9B%E4%BF%A1%E6%81%AF%E7%BB%9F%E8%AE%A1.md,52.6%,中等,64 -1842,1800-1899,1842. 下个由相同数字构成的回文串,下个由相同数字构成的回文串,https://leetcode.cn/problems/next-palindrome-using-same-digits/,next-palindrome-using-same-digits,双指针、字符串,https://algo.itcharge.cn/Solutions/1800-1899/next-palindrome-using-same-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1842.%20%E4%B8%8B%E4%B8%AA%E7%94%B1%E7%9B%B8%E5%90%8C%E6%95%B0%E5%AD%97%E6%9E%84%E6%88%90%E7%9A%84%E5%9B%9E%E6%96%87%E4%B8%B2.md,55.7%,困难,19 -1843,1800-1899,1843. 可疑银行账户,可疑银行账户,https://leetcode.cn/problems/suspicious-bank-accounts/,suspicious-bank-accounts,数据库,https://algo.itcharge.cn/Solutions/1800-1899/suspicious-bank-accounts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1843.%20%E5%8F%AF%E7%96%91%E9%93%B6%E8%A1%8C%E8%B4%A6%E6%88%B7.md,43.8%,中等,46 -1844,1800-1899,1844. 将所有数字用字符替换,将所有数字用字符替换,https://leetcode.cn/problems/replace-all-digits-with-characters/,replace-all-digits-with-characters,字符串,https://algo.itcharge.cn/Solutions/1800-1899/replace-all-digits-with-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1844.%20%E5%B0%86%E6%89%80%E6%9C%89%E6%95%B0%E5%AD%97%E7%94%A8%E5%AD%97%E7%AC%A6%E6%9B%BF%E6%8D%A2.md,78.6%,简单,214 -1845,1800-1899,1845. 座位预约管理系统,座位预约管理系统,https://leetcode.cn/problems/seat-reservation-manager/,seat-reservation-manager,设计、堆(优先队列),https://algo.itcharge.cn/Solutions/1800-1899/seat-reservation-manager/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1845.%20%E5%BA%A7%E4%BD%8D%E9%A2%84%E7%BA%A6%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F.md,48.1%,中等,166 -1846,1800-1899,1846. 减小和重新排列数组后的最大元素,减小和重新排列数组后的最大元素,https://leetcode.cn/problems/maximum-element-after-decreasing-and-rearranging/,maximum-element-after-decreasing-and-rearranging,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1800-1899/maximum-element-after-decreasing-and-rearranging/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1846.%20%E5%87%8F%E5%B0%8F%E5%92%8C%E9%87%8D%E6%96%B0%E6%8E%92%E5%88%97%E6%95%B0%E7%BB%84%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md,63.1%,中等,415 -1847,1800-1899,1847. 最近的房间,最近的房间,https://leetcode.cn/problems/closest-room/,closest-room,数组、二分查找、排序,https://algo.itcharge.cn/Solutions/1800-1899/closest-room/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1847.%20%E6%9C%80%E8%BF%91%E7%9A%84%E6%88%BF%E9%97%B4.md,39.9%,困难,75 -1848,1800-1899,1848. 到目标元素的最小距离,到目标元素的最小距离,https://leetcode.cn/problems/minimum-distance-to-the-target-element/,minimum-distance-to-the-target-element,数组,https://algo.itcharge.cn/Solutions/1800-1899/minimum-distance-to-the-target-element/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1848.%20%E5%88%B0%E7%9B%AE%E6%A0%87%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B7%9D%E7%A6%BB.md,66.2%,简单,183 -1849,1800-1899,1849. 将字符串拆分为递减的连续值,将字符串拆分为递减的连续值,https://leetcode.cn/problems/splitting-a-string-into-descending-consecutive-values/,splitting-a-string-into-descending-consecutive-values,字符串、回溯,https://algo.itcharge.cn/Solutions/1800-1899/splitting-a-string-into-descending-consecutive-values/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1849.%20%E5%B0%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%8B%86%E5%88%86%E4%B8%BA%E9%80%92%E5%87%8F%E7%9A%84%E8%BF%9E%E7%BB%AD%E5%80%BC.md,33.2%,中等,138 -1850,1800-1899,1850. 邻位交换的最小次数,邻位交换的最小次数,https://leetcode.cn/problems/minimum-adjacent-swaps-to-reach-the-kth-smallest-number/,minimum-adjacent-swaps-to-reach-the-kth-smallest-number,贪心、双指针、字符串,https://algo.itcharge.cn/Solutions/1800-1899/minimum-adjacent-swaps-to-reach-the-kth-smallest-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1850.%20%E9%82%BB%E4%BD%8D%E4%BA%A4%E6%8D%A2%E7%9A%84%E6%9C%80%E5%B0%8F%E6%AC%A1%E6%95%B0.md,62.7%,中等,69 -1851,1800-1899,1851. 包含每个查询的最小区间,包含每个查询的最小区间,https://leetcode.cn/problems/minimum-interval-to-include-each-query/,minimum-interval-to-include-each-query,数组、二分查找、排序、扫描线、堆(优先队列),https://algo.itcharge.cn/Solutions/1800-1899/minimum-interval-to-include-each-query/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1851.%20%E5%8C%85%E5%90%AB%E6%AF%8F%E4%B8%AA%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%9C%80%E5%B0%8F%E5%8C%BA%E9%97%B4.md,44.1%,困难,81 -1852,1800-1899,1852. 每个子数组的数字种类数,每个子数组的数字种类数,https://leetcode.cn/problems/distinct-numbers-in-each-subarray/,distinct-numbers-in-each-subarray,数组、哈希表、滑动窗口,https://algo.itcharge.cn/Solutions/1800-1899/distinct-numbers-in-each-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1852.%20%E6%AF%8F%E4%B8%AA%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%95%B0%E5%AD%97%E7%A7%8D%E7%B1%BB%E6%95%B0.md,59.4%,中等,21 -1853,1800-1899,1853. 转换日期格式,转换日期格式,https://leetcode.cn/problems/convert-date-format/,convert-date-format,数据库,https://algo.itcharge.cn/Solutions/1800-1899/convert-date-format/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1853.%20%E8%BD%AC%E6%8D%A2%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F.md,62.8%,简单,31 -1854,1800-1899,1854. 人口最多的年份,人口最多的年份,https://leetcode.cn/problems/maximum-population-year/,maximum-population-year,数组、计数,https://algo.itcharge.cn/Solutions/1800-1899/maximum-population-year/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1854.%20%E4%BA%BA%E5%8F%A3%E6%9C%80%E5%A4%9A%E7%9A%84%E5%B9%B4%E4%BB%BD.md,72.3%,简单,224 -1855,1800-1899,1855. 下标对中的最大距离,下标对中的最大距离,https://leetcode.cn/problems/maximum-distance-between-a-pair-of-values/,maximum-distance-between-a-pair-of-values,贪心、数组、双指针、二分查找,https://algo.itcharge.cn/Solutions/1800-1899/maximum-distance-between-a-pair-of-values/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1855.%20%E4%B8%8B%E6%A0%87%E5%AF%B9%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md,59.4%,中等,243 -1856,1800-1899,1856. 子数组最小乘积的最大值,子数组最小乘积的最大值,https://leetcode.cn/problems/maximum-subarray-min-product/,maximum-subarray-min-product,栈、数组、前缀和、单调栈,https://algo.itcharge.cn/Solutions/1800-1899/maximum-subarray-min-product/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1856.%20%E5%AD%90%E6%95%B0%E7%BB%84%E6%9C%80%E5%B0%8F%E4%B9%98%E7%A7%AF%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,37.5%,中等,145 -1857,1800-1899,1857. 有向图中最大颜色值,有向图中最大颜色值,https://leetcode.cn/problems/largest-color-value-in-a-directed-graph/,largest-color-value-in-a-directed-graph,图、拓扑排序、记忆化搜索、哈希表、动态规划、计数,https://algo.itcharge.cn/Solutions/1800-1899/largest-color-value-in-a-directed-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1857.%20%E6%9C%89%E5%90%91%E5%9B%BE%E4%B8%AD%E6%9C%80%E5%A4%A7%E9%A2%9C%E8%89%B2%E5%80%BC.md,49.0%,困难,66 -1858,1800-1899,1858. 包含所有前缀的最长单词,包含所有前缀的最长单词,https://leetcode.cn/problems/longest-word-with-all-prefixes/,longest-word-with-all-prefixes,深度优先搜索、字典树,https://algo.itcharge.cn/Solutions/1800-1899/longest-word-with-all-prefixes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1858.%20%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E5%89%8D%E7%BC%80%E7%9A%84%E6%9C%80%E9%95%BF%E5%8D%95%E8%AF%8D.md,66.0%,中等,45 -1859,1800-1899,1859. 将句子排序,将句子排序,https://leetcode.cn/problems/sorting-the-sentence/,sorting-the-sentence,字符串、排序,https://algo.itcharge.cn/Solutions/1800-1899/sorting-the-sentence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1859.%20%E5%B0%86%E5%8F%A5%E5%AD%90%E6%8E%92%E5%BA%8F.md,72.8%,简单,321 -1860,1800-1899,1860. 增长的内存泄露,增长的内存泄露,https://leetcode.cn/problems/incremental-memory-leak/,incremental-memory-leak,模拟,https://algo.itcharge.cn/Solutions/1800-1899/incremental-memory-leak/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1860.%20%E5%A2%9E%E9%95%BF%E7%9A%84%E5%86%85%E5%AD%98%E6%B3%84%E9%9C%B2.md,76.0%,中等,124 -1861,1800-1899,1861. 旋转盒子,旋转盒子,https://leetcode.cn/problems/rotating-the-box/,rotating-the-box,数组、双指针、矩阵,https://algo.itcharge.cn/Solutions/1800-1899/rotating-the-box/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1861.%20%E6%97%8B%E8%BD%AC%E7%9B%92%E5%AD%90.md,63.4%,中等,114 -1862,1800-1899,1862. 向下取整数对和,向下取整数对和,https://leetcode.cn/problems/sum-of-floored-pairs/,sum-of-floored-pairs,数组、数学、二分查找、前缀和,https://algo.itcharge.cn/Solutions/1800-1899/sum-of-floored-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1862.%20%E5%90%91%E4%B8%8B%E5%8F%96%E6%95%B4%E6%95%B0%E5%AF%B9%E5%92%8C.md,34.7%,困难,64 -1863,1800-1899,1863. 找出所有子集的异或总和再求和,找出所有子集的异或总和再求和,https://leetcode.cn/problems/sum-of-all-subset-xor-totals/,sum-of-all-subset-xor-totals,位运算、数组、数学、回溯、组合数学,https://algo.itcharge.cn/Solutions/1800-1899/sum-of-all-subset-xor-totals/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1863.%20%E6%89%BE%E5%87%BA%E6%89%80%E6%9C%89%E5%AD%90%E9%9B%86%E7%9A%84%E5%BC%82%E6%88%96%E6%80%BB%E5%92%8C%E5%86%8D%E6%B1%82%E5%92%8C.md,84.0%,简单,270 -1864,1800-1899,1864. 构成交替字符串需要的最小交换次数,构成交替字符串需要的最小交换次数,https://leetcode.cn/problems/minimum-number-of-swaps-to-make-the-binary-string-alternating/,minimum-number-of-swaps-to-make-the-binary-string-alternating,贪心、字符串,https://algo.itcharge.cn/Solutions/1800-1899/minimum-number-of-swaps-to-make-the-binary-string-alternating/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1864.%20%E6%9E%84%E6%88%90%E4%BA%A4%E6%9B%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%9C%80%E8%A6%81%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0.md,40.8%,中等,158 -1865,1800-1899,1865. 找出和为指定值的下标对,找出和为指定值的下标对,https://leetcode.cn/problems/finding-pairs-with-a-certain-sum/,finding-pairs-with-a-certain-sum,设计、数组、哈希表,https://algo.itcharge.cn/Solutions/1800-1899/finding-pairs-with-a-certain-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1865.%20%E6%89%BE%E5%87%BA%E5%92%8C%E4%B8%BA%E6%8C%87%E5%AE%9A%E5%80%BC%E7%9A%84%E4%B8%8B%E6%A0%87%E5%AF%B9.md,50.9%,中等,86 -1866,1800-1899,1866. 恰有 K 根木棍可以看到的排列数目,恰有 K 根木棍可以看到的排列数目,https://leetcode.cn/problems/number-of-ways-to-rearrange-sticks-with-k-sticks-visible/,number-of-ways-to-rearrange-sticks-with-k-sticks-visible,数学、动态规划、组合数学,https://algo.itcharge.cn/Solutions/1800-1899/number-of-ways-to-rearrange-sticks-with-k-sticks-visible/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1866.%20%E6%81%B0%E6%9C%89%20K%20%E6%A0%B9%E6%9C%A8%E6%A3%8D%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E7%9A%84%E6%8E%92%E5%88%97%E6%95%B0%E7%9B%AE.md,61.9%,困难,73 -1867,1800-1899,1867. 最大数量高于平均水平的订单,最大数量高于平均水平的订单,https://leetcode.cn/problems/orders-with-maximum-quantity-above-average/,orders-with-maximum-quantity-above-average,数据库,https://algo.itcharge.cn/Solutions/1800-1899/orders-with-maximum-quantity-above-average/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1867.%20%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F%E9%AB%98%E4%BA%8E%E5%B9%B3%E5%9D%87%E6%B0%B4%E5%B9%B3%E7%9A%84%E8%AE%A2%E5%8D%95.md,68.0%,中等,58 -1868,1800-1899,1868. 两个行程编码数组的积,两个行程编码数组的积,https://leetcode.cn/problems/product-of-two-run-length-encoded-arrays/,product-of-two-run-length-encoded-arrays,数组、双指针,https://algo.itcharge.cn/Solutions/1800-1899/product-of-two-run-length-encoded-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1868.%20%E4%B8%A4%E4%B8%AA%E8%A1%8C%E7%A8%8B%E7%BC%96%E7%A0%81%E6%95%B0%E7%BB%84%E7%9A%84%E7%A7%AF.md,48.8%,中等,50 -1869,1800-1899,1869. 哪种连续子字符串更长,哪种连续子字符串更长,https://leetcode.cn/problems/longer-contiguous-segments-of-ones-than-zeros/,longer-contiguous-segments-of-ones-than-zeros,字符串,https://algo.itcharge.cn/Solutions/1800-1899/longer-contiguous-segments-of-ones-than-zeros/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1869.%20%E5%93%AA%E7%A7%8D%E8%BF%9E%E7%BB%AD%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%9B%B4%E9%95%BF.md,70.6%,简单,260 -1870,1800-1899,1870. 准时到达的列车最小时速,准时到达的列车最小时速,https://leetcode.cn/problems/minimum-speed-to-arrive-on-time/,minimum-speed-to-arrive-on-time,数组、二分查找,https://algo.itcharge.cn/Solutions/1800-1899/minimum-speed-to-arrive-on-time/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1870.%20%E5%87%86%E6%97%B6%E5%88%B0%E8%BE%BE%E7%9A%84%E5%88%97%E8%BD%A6%E6%9C%80%E5%B0%8F%E6%97%B6%E9%80%9F.md,42.2%,中等,142 -1871,1800-1899,1871. 跳跃游戏 VII,跳跃游戏 VII,https://leetcode.cn/problems/jump-game-vii/,jump-game-vii,双指针、字符串、前缀和,https://algo.itcharge.cn/Solutions/1800-1899/jump-game-vii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1871.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20VII.md,28.3%,中等,180 -1872,1800-1899,1872. 石子游戏 VIII,石子游戏 VIII,https://leetcode.cn/problems/stone-game-viii/,stone-game-viii,数组、数学、动态规划、博弈、前缀和,https://algo.itcharge.cn/Solutions/1800-1899/stone-game-viii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1872.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%20VIII.md,61.2%,困难,46 -1873,1800-1899,1873. 计算特殊奖金,计算特殊奖金,https://leetcode.cn/problems/calculate-special-bonus/,calculate-special-bonus,数据库,https://algo.itcharge.cn/Solutions/1800-1899/calculate-special-bonus/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1873.%20%E8%AE%A1%E7%AE%97%E7%89%B9%E6%AE%8A%E5%A5%96%E9%87%91.md,62.7%,简单,393 -1874,1800-1899,1874. 两个数组的最小乘积和,两个数组的最小乘积和,https://leetcode.cn/problems/minimize-product-sum-of-two-arrays/,minimize-product-sum-of-two-arrays,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1800-1899/minimize-product-sum-of-two-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1874.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%8F%E4%B9%98%E7%A7%AF%E5%92%8C.md,86.5%,中等,37 -1875,1800-1899,1875. 将工资相同的雇员分组,将工资相同的雇员分组,https://leetcode.cn/problems/group-employees-of-the-same-salary/,group-employees-of-the-same-salary,数据库,https://algo.itcharge.cn/Solutions/1800-1899/group-employees-of-the-same-salary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1875.%20%E5%B0%86%E5%B7%A5%E8%B5%84%E7%9B%B8%E5%90%8C%E7%9A%84%E9%9B%87%E5%91%98%E5%88%86%E7%BB%84.md,64.4%,中等,45 -1876,1800-1899,1876. 长度为三且各字符不同的子字符串,长度为三且各字符不同的子字符串,https://leetcode.cn/problems/substrings-of-size-three-with-distinct-characters/,substrings-of-size-three-with-distinct-characters,哈希表、字符串、计数、滑动窗口,https://algo.itcharge.cn/Solutions/1800-1899/substrings-of-size-three-with-distinct-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1876.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%E4%B8%89%E4%B8%94%E5%90%84%E5%AD%97%E7%AC%A6%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,70.4%,简单,258 -1877,1800-1899,1877. 数组中最大数对和的最小值,数组中最大数对和的最小值,https://leetcode.cn/problems/minimize-maximum-pair-sum-in-array/,minimize-maximum-pair-sum-in-array,贪心、数组、双指针、排序,https://algo.itcharge.cn/Solutions/1800-1899/minimize-maximum-pair-sum-in-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1877.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9C%80%E5%A4%A7%E6%95%B0%E5%AF%B9%E5%92%8C%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md,81.2%,中等,484 -1878,1800-1899,1878. 矩阵中最大的三个菱形和,矩阵中最大的三个菱形和,https://leetcode.cn/problems/get-biggest-three-rhombus-sums-in-a-grid/,get-biggest-three-rhombus-sums-in-a-grid,数组、数学、矩阵、前缀和、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1800-1899/get-biggest-three-rhombus-sums-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1878.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E6%9C%80%E5%A4%A7%E7%9A%84%E4%B8%89%E4%B8%AA%E8%8F%B1%E5%BD%A2%E5%92%8C.md,45.5%,中等,75 -1879,1800-1899,1879. 两个数组最小的异或值之和,两个数组最小的异或值之和,https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/,minimum-xor-sum-of-two-arrays,位运算、数组、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/1800-1899/minimum-xor-sum-of-two-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1879.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E6%9C%80%E5%B0%8F%E7%9A%84%E5%BC%82%E6%88%96%E5%80%BC%E4%B9%8B%E5%92%8C.md,49.8%,困难,70 -1880,1800-1899,1880. 检查某单词是否等于两单词之和,检查某单词是否等于两单词之和,https://leetcode.cn/problems/check-if-word-equals-summation-of-two-words/,check-if-word-equals-summation-of-two-words,字符串,https://algo.itcharge.cn/Solutions/1800-1899/check-if-word-equals-summation-of-two-words/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1880.%20%E6%A3%80%E6%9F%A5%E6%9F%90%E5%8D%95%E8%AF%8D%E6%98%AF%E5%90%A6%E7%AD%89%E4%BA%8E%E4%B8%A4%E5%8D%95%E8%AF%8D%E4%B9%8B%E5%92%8C.md,76.3%,简单,210 -1881,1800-1899,1881. 插入后的最大值,插入后的最大值,https://leetcode.cn/problems/maximum-value-after-insertion/,maximum-value-after-insertion,贪心、字符串,https://algo.itcharge.cn/Solutions/1800-1899/maximum-value-after-insertion/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1881.%20%E6%8F%92%E5%85%A5%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,37.7%,中等,100 -1882,1800-1899,1882. 使用服务器处理任务,使用服务器处理任务,https://leetcode.cn/problems/process-tasks-using-servers/,process-tasks-using-servers,数组、堆(优先队列),https://algo.itcharge.cn/Solutions/1800-1899/process-tasks-using-servers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1882.%20%E4%BD%BF%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%A4%84%E7%90%86%E4%BB%BB%E5%8A%A1.md,30.8%,中等,146 -1883,1800-1899,1883. 准时抵达会议现场的最小跳过休息次数,准时抵达会议现场的最小跳过休息次数,https://leetcode.cn/problems/minimum-skips-to-arrive-at-meeting-on-time/,minimum-skips-to-arrive-at-meeting-on-time,数组、动态规划,https://algo.itcharge.cn/Solutions/1800-1899/minimum-skips-to-arrive-at-meeting-on-time/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1883.%20%E5%87%86%E6%97%B6%E6%8A%B5%E8%BE%BE%E4%BC%9A%E8%AE%AE%E7%8E%B0%E5%9C%BA%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B7%B3%E8%BF%87%E4%BC%91%E6%81%AF%E6%AC%A1%E6%95%B0.md,40.2%,困难,39 -1884,1800-1899,1884. 鸡蛋掉落-两枚鸡蛋,鸡蛋掉落-两枚鸡蛋,https://leetcode.cn/problems/egg-drop-with-2-eggs-and-n-floors/,egg-drop-with-2-eggs-and-n-floors,数学、动态规划,https://algo.itcharge.cn/Solutions/1800-1899/egg-drop-with-2-eggs-and-n-floors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1884.%20%E9%B8%A1%E8%9B%8B%E6%8E%89%E8%90%BD-%E4%B8%A4%E6%9E%9A%E9%B8%A1%E8%9B%8B.md,70.4%,中等,111 -1885,1800-1899,1885. 统计数对,统计数对,https://leetcode.cn/problems/count-pairs-in-two-arrays/,count-pairs-in-two-arrays,数组、二分查找、排序,https://algo.itcharge.cn/Solutions/1800-1899/count-pairs-in-two-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1885.%20%E7%BB%9F%E8%AE%A1%E6%95%B0%E5%AF%B9.md,59.0%,中等,29 -1886,1800-1899,1886. 判断矩阵经轮转后是否一致,判断矩阵经轮转后是否一致,https://leetcode.cn/problems/determine-whether-matrix-can-be-obtained-by-rotation/,determine-whether-matrix-can-be-obtained-by-rotation,数组、矩阵,https://algo.itcharge.cn/Solutions/1800-1899/determine-whether-matrix-can-be-obtained-by-rotation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1886.%20%E5%88%A4%E6%96%AD%E7%9F%A9%E9%98%B5%E7%BB%8F%E8%BD%AE%E8%BD%AC%E5%90%8E%E6%98%AF%E5%90%A6%E4%B8%80%E8%87%B4.md,59.4%,简单,172 -1887,1800-1899,1887. 使数组元素相等的减少操作次数,使数组元素相等的减少操作次数,https://leetcode.cn/problems/reduction-operations-to-make-the-array-elements-equal/,reduction-operations-to-make-the-array-elements-equal,数组、排序,https://algo.itcharge.cn/Solutions/1800-1899/reduction-operations-to-make-the-array-elements-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1887.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E7%9B%B8%E7%AD%89%E7%9A%84%E5%87%8F%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,65.6%,中等,112 -1888,1800-1899,1888. 使二进制字符串字符交替的最少反转次数,使二进制字符串字符交替的最少反转次数,https://leetcode.cn/problems/minimum-number-of-flips-to-make-the-binary-string-alternating/,minimum-number-of-flips-to-make-the-binary-string-alternating,贪心、字符串、动态规划、滑动窗口,https://algo.itcharge.cn/Solutions/1800-1899/minimum-number-of-flips-to-make-the-binary-string-alternating/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1888.%20%E4%BD%BF%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%AD%97%E7%AC%A6%E4%BA%A4%E6%9B%BF%E7%9A%84%E6%9C%80%E5%B0%91%E5%8F%8D%E8%BD%AC%E6%AC%A1%E6%95%B0.md,36.5%,中等,94 -1889,1800-1899,1889. 装包裹的最小浪费空间,装包裹的最小浪费空间,https://leetcode.cn/problems/minimum-space-wasted-from-packaging/,minimum-space-wasted-from-packaging,数组、二分查找、前缀和、排序,https://algo.itcharge.cn/Solutions/1800-1899/minimum-space-wasted-from-packaging/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1889.%20%E8%A3%85%E5%8C%85%E8%A3%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B5%AA%E8%B4%B9%E7%A9%BA%E9%97%B4.md,29.6%,困难,67 -1890,1800-1899,1890. 2020年最后一次登录,2020年最后一次登录,https://leetcode.cn/problems/the-latest-login-in-2020/,the-latest-login-in-2020,数据库,https://algo.itcharge.cn/Solutions/1800-1899/the-latest-login-in-2020/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1890.%202020%E5%B9%B4%E6%9C%80%E5%90%8E%E4%B8%80%E6%AC%A1%E7%99%BB%E5%BD%95.md,70.0%,简单,199 -1891,1800-1899,1891. 割绳子,割绳子,https://leetcode.cn/problems/cutting-ribbons/,cutting-ribbons,数组、二分查找,https://algo.itcharge.cn/Solutions/1800-1899/cutting-ribbons/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1891.%20%E5%89%B2%E7%BB%B3%E5%AD%90.md,42.1%,中等,50 -1892,1800-1899,1892. 页面推荐Ⅱ,页面推荐Ⅱ,https://leetcode.cn/problems/page-recommendations-ii/,page-recommendations-ii,数据库,https://algo.itcharge.cn/Solutions/1800-1899/page-recommendations-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1892.%20%E9%A1%B5%E9%9D%A2%E6%8E%A8%E8%8D%90%E2%85%A1.md,37.6%,困难,34 -1893,1800-1899,1893. 检查是否区域内所有整数都被覆盖,检查是否区域内所有整数都被覆盖,https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/,check-if-all-the-integers-in-a-range-are-covered,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1893.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%8C%BA%E5%9F%9F%E5%86%85%E6%89%80%E6%9C%89%E6%95%B4%E6%95%B0%E9%83%BD%E8%A2%AB%E8%A6%86%E7%9B%96.md,58.9%,简单,530 -1894,1800-1899,1894. 找到需要补充粉笔的学生编号,找到需要补充粉笔的学生编号,https://leetcode.cn/problems/find-the-student-that-will-replace-the-chalk/,find-the-student-that-will-replace-the-chalk,数组、二分查找、前缀和、模拟,https://algo.itcharge.cn/Solutions/1800-1899/find-the-student-that-will-replace-the-chalk/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1894.%20%E6%89%BE%E5%88%B0%E9%9C%80%E8%A6%81%E8%A1%A5%E5%85%85%E7%B2%89%E7%AC%94%E7%9A%84%E5%AD%A6%E7%94%9F%E7%BC%96%E5%8F%B7.md,45.8%,中等,619 -1895,1800-1899,1895. 最大的幻方,最大的幻方,https://leetcode.cn/problems/largest-magic-square/,largest-magic-square,数组、矩阵、前缀和,https://algo.itcharge.cn/Solutions/1800-1899/largest-magic-square/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1895.%20%E6%9C%80%E5%A4%A7%E7%9A%84%E5%B9%BB%E6%96%B9.md,56.3%,中等,62 -1896,1800-1899,1896. 反转表达式值的最少操作次数,反转表达式值的最少操作次数,https://leetcode.cn/problems/minimum-cost-to-change-the-final-value-of-expression/,minimum-cost-to-change-the-final-value-of-expression,栈、数学、字符串、动态规划,https://algo.itcharge.cn/Solutions/1800-1899/minimum-cost-to-change-the-final-value-of-expression/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1896.%20%E5%8F%8D%E8%BD%AC%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%80%BC%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,51.5%,困难,36 -1897,1800-1899,1897. 重新分配字符使所有字符串都相等,重新分配字符使所有字符串都相等,https://leetcode.cn/problems/redistribute-characters-to-make-all-strings-equal/,redistribute-characters-to-make-all-strings-equal,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/1800-1899/redistribute-characters-to-make-all-strings-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1897.%20%E9%87%8D%E6%96%B0%E5%88%86%E9%85%8D%E5%AD%97%E7%AC%A6%E4%BD%BF%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%83%BD%E7%9B%B8%E7%AD%89.md,55.2%,简单,143 -1898,1800-1899,1898. 可移除字符的最大数目,可移除字符的最大数目,https://leetcode.cn/problems/maximum-number-of-removable-characters/,maximum-number-of-removable-characters,数组、字符串、二分查找,https://algo.itcharge.cn/Solutions/1800-1899/maximum-number-of-removable-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1898.%20%E5%8F%AF%E7%A7%BB%E9%99%A4%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md,38.0%,中等,119 -1899,1800-1899,1899. 合并若干三元组以形成目标三元组,合并若干三元组以形成目标三元组,https://leetcode.cn/problems/merge-triplets-to-form-target-triplet/,merge-triplets-to-form-target-triplet,贪心、数组,https://algo.itcharge.cn/Solutions/1800-1899/merge-triplets-to-form-target-triplet/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1899.%20%E5%90%88%E5%B9%B6%E8%8B%A5%E5%B9%B2%E4%B8%89%E5%85%83%E7%BB%84%E4%BB%A5%E5%BD%A2%E6%88%90%E7%9B%AE%E6%A0%87%E4%B8%89%E5%85%83%E7%BB%84.md,65.3%,中等,84 -1900,1900-1999,1900. 最佳运动员的比拼回合,最佳运动员的比拼回合,https://leetcode.cn/problems/the-earliest-and-latest-rounds-where-players-compete/,the-earliest-and-latest-rounds-where-players-compete,记忆化搜索、动态规划,https://algo.itcharge.cn/Solutions/1900-1999/the-earliest-and-latest-rounds-where-players-compete/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1900.%20%E6%9C%80%E4%BD%B3%E8%BF%90%E5%8A%A8%E5%91%98%E7%9A%84%E6%AF%94%E6%8B%BC%E5%9B%9E%E5%90%88.md,45.8%,困难,46 -1901,1900-1999,1901. 寻找峰值 II,寻找峰值 II,https://leetcode.cn/problems/find-a-peak-element-ii/,find-a-peak-element-ii,数组、二分查找、矩阵,https://algo.itcharge.cn/Solutions/1900-1999/find-a-peak-element-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1901.%20%E5%AF%BB%E6%89%BE%E5%B3%B0%E5%80%BC%20II.md,58.9%,中等,130 -1902,1900-1999,1902. 给定二叉搜索树的插入顺序求深度,给定二叉搜索树的插入顺序求深度,https://leetcode.cn/problems/depth-of-bst-given-insertion-order/,depth-of-bst-given-insertion-order,树、二叉搜索树、二叉树、有序集合,https://algo.itcharge.cn/Solutions/1900-1999/depth-of-bst-given-insertion-order/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1902.%20%E7%BB%99%E5%AE%9A%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%8F%92%E5%85%A5%E9%A1%BA%E5%BA%8F%E6%B1%82%E6%B7%B1%E5%BA%A6.md,50.9%,中等,14 -1903,1900-1999,1903. 字符串中的最大奇数,字符串中的最大奇数,https://leetcode.cn/problems/largest-odd-number-in-string/,largest-odd-number-in-string,贪心、数学、字符串,https://algo.itcharge.cn/Solutions/1900-1999/largest-odd-number-in-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1903.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%A5%87%E6%95%B0.md,60.5%,简单,206 -1904,1900-1999,1904. 你完成的完整对局数,你完成的完整对局数,https://leetcode.cn/problems/the-number-of-full-rounds-you-have-played/,the-number-of-full-rounds-you-have-played,数学、字符串,https://algo.itcharge.cn/Solutions/1900-1999/the-number-of-full-rounds-you-have-played/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1904.%20%E4%BD%A0%E5%AE%8C%E6%88%90%E7%9A%84%E5%AE%8C%E6%95%B4%E5%AF%B9%E5%B1%80%E6%95%B0.md,31.4%,中等,106 -1905,1900-1999,1905. 统计子岛屿,统计子岛屿,https://leetcode.cn/problems/count-sub-islands/,count-sub-islands,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/1900-1999/count-sub-islands/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1905.%20%E7%BB%9F%E8%AE%A1%E5%AD%90%E5%B2%9B%E5%B1%BF.md,67.2%,中等,419 -1906,1900-1999,1906. 查询差绝对值的最小值,查询差绝对值的最小值,https://leetcode.cn/problems/minimum-absolute-difference-queries/,minimum-absolute-difference-queries,数组、哈希表,https://algo.itcharge.cn/Solutions/1900-1999/minimum-absolute-difference-queries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1906.%20%E6%9F%A5%E8%AF%A2%E5%B7%AE%E7%BB%9D%E5%AF%B9%E5%80%BC%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md,44.9%,中等,73 -1907,1900-1999,1907. 按分类统计薪水,按分类统计薪水,https://leetcode.cn/problems/count-salary-categories/,count-salary-categories,数据库,https://algo.itcharge.cn/Solutions/1900-1999/count-salary-categories/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1907.%20%E6%8C%89%E5%88%86%E7%B1%BB%E7%BB%9F%E8%AE%A1%E8%96%AA%E6%B0%B4.md,63.6%,中等,60 -1908,1900-1999,1908. Nim 游戏 II,Nim 游戏 II,https://leetcode.cn/problems/game-of-nim/,game-of-nim,位运算、脑筋急转弯、数组、数学、动态规划、博弈,https://algo.itcharge.cn/Solutions/1900-1999/game-of-nim/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1908.%20Nim%20%E6%B8%B8%E6%88%8F%20II.md,62.3%,中等,19 -1909,1900-1999,1909. 删除一个元素使数组严格递增,删除一个元素使数组严格递增,https://leetcode.cn/problems/remove-one-element-to-make-the-array-strictly-increasing/,remove-one-element-to-make-the-array-strictly-increasing,数组,https://algo.itcharge.cn/Solutions/1900-1999/remove-one-element-to-make-the-array-strictly-increasing/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1909.%20%E5%88%A0%E9%99%A4%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%E4%BD%BF%E6%95%B0%E7%BB%84%E4%B8%A5%E6%A0%BC%E9%80%92%E5%A2%9E.md,30.0%,简单,173 -1910,1900-1999,1910. 删除一个字符串中所有出现的给定子字符串,删除一个字符串中所有出现的给定子字符串,https://leetcode.cn/problems/remove-all-occurrences-of-a-substring/,remove-all-occurrences-of-a-substring,字符串,https://algo.itcharge.cn/Solutions/1900-1999/remove-all-occurrences-of-a-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1910.%20%E5%88%A0%E9%99%A4%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E6%89%80%E6%9C%89%E5%87%BA%E7%8E%B0%E7%9A%84%E7%BB%99%E5%AE%9A%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,66.5%,中等,122 -1911,1900-1999,1911. 最大子序列交替和,最大子序列交替和,https://leetcode.cn/problems/maximum-alternating-subsequence-sum/,maximum-alternating-subsequence-sum,数组、动态规划,https://algo.itcharge.cn/Solutions/1900-1999/maximum-alternating-subsequence-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1911.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E5%BA%8F%E5%88%97%E4%BA%A4%E6%9B%BF%E5%92%8C.md,59.1%,中等,119 -1912,1900-1999,1912. 设计电影租借系统,设计电影租借系统,https://leetcode.cn/problems/design-movie-rental-system/,design-movie-rental-system,设计、数组、哈希表、有序集合、堆(优先队列),https://algo.itcharge.cn/Solutions/1900-1999/design-movie-rental-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1912.%20%E8%AE%BE%E8%AE%A1%E7%94%B5%E5%BD%B1%E7%A7%9F%E5%80%9F%E7%B3%BB%E7%BB%9F.md,24.1%,困难,84 -1913,1900-1999,1913. 两个数对之间的最大乘积差,两个数对之间的最大乘积差,https://leetcode.cn/problems/maximum-product-difference-between-two-pairs/,maximum-product-difference-between-two-pairs,数组、排序,https://algo.itcharge.cn/Solutions/1900-1999/maximum-product-difference-between-two-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1913.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E5%AF%B9%E4%B9%8B%E9%97%B4%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B9%98%E7%A7%AF%E5%B7%AE.md,81.5%,简单,238 -1914,1900-1999,1914. 循环轮转矩阵,循环轮转矩阵,https://leetcode.cn/problems/cyclically-rotating-a-grid/,cyclically-rotating-a-grid,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/1900-1999/cyclically-rotating-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1914.%20%E5%BE%AA%E7%8E%AF%E8%BD%AE%E8%BD%AC%E7%9F%A9%E9%98%B5.md,46.5%,中等,100 -1915,1900-1999,1915. 最美子字符串的数目,最美子字符串的数目,https://leetcode.cn/problems/number-of-wonderful-substrings/,number-of-wonderful-substrings,位运算、哈希表、字符串、前缀和,https://algo.itcharge.cn/Solutions/1900-1999/number-of-wonderful-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1915.%20%E6%9C%80%E7%BE%8E%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE.md,44.7%,中等,83 -1916,1900-1999,1916. 统计为蚁群构筑房间的不同顺序,统计为蚁群构筑房间的不同顺序,https://leetcode.cn/problems/count-ways-to-build-rooms-in-an-ant-colony/,count-ways-to-build-rooms-in-an-ant-colony,树、图、拓扑排序、数学、动态规划、组合数学,https://algo.itcharge.cn/Solutions/1900-1999/count-ways-to-build-rooms-in-an-ant-colony/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1916.%20%E7%BB%9F%E8%AE%A1%E4%B8%BA%E8%9A%81%E7%BE%A4%E6%9E%84%E7%AD%91%E6%88%BF%E9%97%B4%E7%9A%84%E4%B8%8D%E5%90%8C%E9%A1%BA%E5%BA%8F.md,55.5%,困难,32 -1917,1900-1999,1917. Leetcodify 好友推荐,Leetcodify 好友推荐,https://leetcode.cn/problems/leetcodify-friends-recommendations/,leetcodify-friends-recommendations,数据库,https://algo.itcharge.cn/Solutions/1900-1999/leetcodify-friends-recommendations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1917.%20Leetcodify%20%E5%A5%BD%E5%8F%8B%E6%8E%A8%E8%8D%90.md,31.6%,困难,30 -1918,1900-1999,1918. 第 K 小的子数组和·,第 K 小的子数组和·,https://leetcode.cn/problems/kth-smallest-subarray-sum/,kth-smallest-subarray-sum,数组、二分查找、滑动窗口,https://algo.itcharge.cn/Solutions/1900-1999/kth-smallest-subarray-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1918.%20%E7%AC%AC%20K%20%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C%C2%B7.md,48.0%,中等,11 -1919,1900-1999,1919. 兴趣相同的朋友,兴趣相同的朋友,https://leetcode.cn/problems/leetcodify-similar-friends/,leetcodify-similar-friends,数据库,https://algo.itcharge.cn/Solutions/1900-1999/leetcodify-similar-friends/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1919.%20%E5%85%B4%E8%B6%A3%E7%9B%B8%E5%90%8C%E7%9A%84%E6%9C%8B%E5%8F%8B.md,43.3%,困难,39 -1920,1900-1999,1920. 基于排列构建数组,基于排列构建数组,https://leetcode.cn/problems/build-array-from-permutation/,build-array-from-permutation,数组、模拟,https://algo.itcharge.cn/Solutions/1900-1999/build-array-from-permutation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1920.%20%E5%9F%BA%E4%BA%8E%E6%8E%92%E5%88%97%E6%9E%84%E5%BB%BA%E6%95%B0%E7%BB%84.md,86.6%,简单,316 -1921,1900-1999,1921. 消灭怪物的最大数量,消灭怪物的最大数量,https://leetcode.cn/problems/eliminate-maximum-number-of-monsters/,eliminate-maximum-number-of-monsters,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1900-1999/eliminate-maximum-number-of-monsters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1921.%20%E6%B6%88%E7%81%AD%E6%80%AA%E7%89%A9%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md,37.0%,中等,124 -1922,1900-1999,1922. 统计好数字的数目,统计好数字的数目,https://leetcode.cn/problems/count-good-numbers/,count-good-numbers,递归、数学,https://algo.itcharge.cn/Solutions/1900-1999/count-good-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1922.%20%E7%BB%9F%E8%AE%A1%E5%A5%BD%E6%95%B0%E5%AD%97%E7%9A%84%E6%95%B0%E7%9B%AE.md,36.2%,中等,104 -1923,1900-1999,1923. 最长公共子路径,最长公共子路径,https://leetcode.cn/problems/longest-common-subpath/,longest-common-subpath,数组、二分查找、后缀数组、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/1900-1999/longest-common-subpath/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1923.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E8%B7%AF%E5%BE%84.md,26.9%,困难,48 -1924,1900-1999,1924. 安装栅栏 II,安装栅栏 II,https://leetcode.cn/problems/erect-the-fence-ii/,erect-the-fence-ii,几何、数组、数学,https://algo.itcharge.cn/Solutions/1900-1999/erect-the-fence-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1924.%20%E5%AE%89%E8%A3%85%E6%A0%85%E6%A0%8F%20II.md,46.4%,困难,11 -1925,1900-1999,1925. 统计平方和三元组的数目,统计平方和三元组的数目,https://leetcode.cn/problems/count-square-sum-triples/,count-square-sum-triples,数学、枚举,https://algo.itcharge.cn/Solutions/1900-1999/count-square-sum-triples/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1925.%20%E7%BB%9F%E8%AE%A1%E5%B9%B3%E6%96%B9%E5%92%8C%E4%B8%89%E5%85%83%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,69.6%,简单,144 -1926,1900-1999,1926. 迷宫中离入口最近的出口,迷宫中离入口最近的出口,https://leetcode.cn/problems/nearest-exit-from-entrance-in-maze/,nearest-exit-from-entrance-in-maze,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/1900-1999/nearest-exit-from-entrance-in-maze/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1926.%20%E8%BF%B7%E5%AE%AB%E4%B8%AD%E7%A6%BB%E5%85%A5%E5%8F%A3%E6%9C%80%E8%BF%91%E7%9A%84%E5%87%BA%E5%8F%A3.md,39.5%,中等,189 -1927,1900-1999,1927. 求和游戏,求和游戏,https://leetcode.cn/problems/sum-game/,sum-game,贪心、数学、博弈,https://algo.itcharge.cn/Solutions/1900-1999/sum-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1927.%20%E6%B1%82%E5%92%8C%E6%B8%B8%E6%88%8F.md,43.6%,中等,67 -1928,1900-1999,1928. 规定时间内到达终点的最小花费,规定时间内到达终点的最小花费,https://leetcode.cn/problems/minimum-cost-to-reach-destination-in-time/,minimum-cost-to-reach-destination-in-time,图、动态规划,https://algo.itcharge.cn/Solutions/1900-1999/minimum-cost-to-reach-destination-in-time/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1928.%20%E8%A7%84%E5%AE%9A%E6%97%B6%E9%97%B4%E5%86%85%E5%88%B0%E8%BE%BE%E7%BB%88%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E8%8A%B1%E8%B4%B9.md,45.9%,困难,84 -1929,1900-1999,1929. 数组串联,数组串联,https://leetcode.cn/problems/concatenation-of-array/,concatenation-of-array,数组,https://algo.itcharge.cn/Solutions/1900-1999/concatenation-of-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1929.%20%E6%95%B0%E7%BB%84%E4%B8%B2%E8%81%94.md,86.2%,简单,347 -1930,1900-1999,1930. 长度为 3 的不同回文子序列,长度为 3 的不同回文子序列,https://leetcode.cn/problems/unique-length-3-palindromic-subsequences/,unique-length-3-palindromic-subsequences,哈希表、字符串、前缀和,https://algo.itcharge.cn/Solutions/1900-1999/unique-length-3-palindromic-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1930.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%203%20%E7%9A%84%E4%B8%8D%E5%90%8C%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97.md,51.6%,中等,153 -1931,1900-1999,1931. 用三种不同颜色为网格涂色,用三种不同颜色为网格涂色,https://leetcode.cn/problems/painting-a-grid-with-three-different-colors/,painting-a-grid-with-three-different-colors,动态规划,https://algo.itcharge.cn/Solutions/1900-1999/painting-a-grid-with-three-different-colors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1931.%20%E7%94%A8%E4%B8%89%E7%A7%8D%E4%B8%8D%E5%90%8C%E9%A2%9C%E8%89%B2%E4%B8%BA%E7%BD%91%E6%A0%BC%E6%B6%82%E8%89%B2.md,59.3%,困难,93 -1932,1900-1999,1932. 合并多棵二叉搜索树,合并多棵二叉搜索树,https://leetcode.cn/problems/merge-bsts-to-create-single-bst/,merge-bsts-to-create-single-bst,树、深度优先搜索、哈希表、二分查找、二叉树,https://algo.itcharge.cn/Solutions/1900-1999/merge-bsts-to-create-single-bst/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1932.%20%E5%90%88%E5%B9%B6%E5%A4%9A%E6%A3%B5%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,33.3%,困难,54 -1933,1900-1999,1933. 判断字符串是否可分解为值均等的子串,判断字符串是否可分解为值均等的子串,https://leetcode.cn/problems/check-if-string-is-decomposable-into-value-equal-substrings/,check-if-string-is-decomposable-into-value-equal-substrings,字符串,https://algo.itcharge.cn/Solutions/1900-1999/check-if-string-is-decomposable-into-value-equal-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1933.%20%E5%88%A4%E6%96%AD%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E5%8F%AF%E5%88%86%E8%A7%A3%E4%B8%BA%E5%80%BC%E5%9D%87%E7%AD%89%E7%9A%84%E5%AD%90%E4%B8%B2.md,49.3%,简单,42 -1934,1900-1999,1934. 确认率,确认率,https://leetcode.cn/problems/confirmation-rate/,confirmation-rate,数据库,https://algo.itcharge.cn/Solutions/1900-1999/confirmation-rate/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1934.%20%E7%A1%AE%E8%AE%A4%E7%8E%87.md,67.8%,中等,63 -1935,1900-1999,1935. 可以输入的最大单词数,可以输入的最大单词数,https://leetcode.cn/problems/maximum-number-of-words-you-can-type/,maximum-number-of-words-you-can-type,哈希表、字符串,https://algo.itcharge.cn/Solutions/1900-1999/maximum-number-of-words-you-can-type/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1935.%20%E5%8F%AF%E4%BB%A5%E8%BE%93%E5%85%A5%E7%9A%84%E6%9C%80%E5%A4%A7%E5%8D%95%E8%AF%8D%E6%95%B0.md,70.9%,简单,233 -1936,1900-1999,1936. 新增的最少台阶数,新增的最少台阶数,https://leetcode.cn/problems/add-minimum-number-of-rungs/,add-minimum-number-of-rungs,贪心、数组,https://algo.itcharge.cn/Solutions/1900-1999/add-minimum-number-of-rungs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1936.%20%E6%96%B0%E5%A2%9E%E7%9A%84%E6%9C%80%E5%B0%91%E5%8F%B0%E9%98%B6%E6%95%B0.md,46.3%,中等,118 -1937,1900-1999,1937. 扣分后的最大得分,扣分后的最大得分,https://leetcode.cn/problems/maximum-number-of-points-with-cost/,maximum-number-of-points-with-cost,数组、动态规划,https://algo.itcharge.cn/Solutions/1900-1999/maximum-number-of-points-with-cost/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1937.%20%E6%89%A3%E5%88%86%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md,28.9%,中等,91 -1938,1900-1999,1938. 查询最大基因差,查询最大基因差,https://leetcode.cn/problems/maximum-genetic-difference-query/,maximum-genetic-difference-query,位运算、字典树、数组,https://algo.itcharge.cn/Solutions/1900-1999/maximum-genetic-difference-query/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1938.%20%E6%9F%A5%E8%AF%A2%E6%9C%80%E5%A4%A7%E5%9F%BA%E5%9B%A0%E5%B7%AE.md,40.2%,困难,51 -1939,1900-1999,1939. 主动请求确认消息的用户,主动请求确认消息的用户,https://leetcode.cn/problems/users-that-actively-request-confirmation-messages/,users-that-actively-request-confirmation-messages,数据库,https://algo.itcharge.cn/Solutions/1900-1999/users-that-actively-request-confirmation-messages/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1939.%20%E4%B8%BB%E5%8A%A8%E8%AF%B7%E6%B1%82%E7%A1%AE%E8%AE%A4%E6%B6%88%E6%81%AF%E7%9A%84%E7%94%A8%E6%88%B7.md,59.8%,简单,28 -1940,1900-1999,1940. 排序数组之间的最长公共子序列,排序数组之间的最长公共子序列,https://leetcode.cn/problems/longest-common-subsequence-between-sorted-arrays/,longest-common-subsequence-between-sorted-arrays,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/1900-1999/longest-common-subsequence-between-sorted-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1940.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B9%8B%E9%97%B4%E7%9A%84%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E5%BA%8F%E5%88%97.md,74.1%,中等,40 -1941,1900-1999,1941. 检查是否所有字符出现次数相同,检查是否所有字符出现次数相同,https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/,check-if-all-characters-have-equal-number-of-occurrences,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1941.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E7%9B%B8%E5%90%8C.md,73.6%,简单,193 -1942,1900-1999,1942. 最小未被占据椅子的编号,最小未被占据椅子的编号,https://leetcode.cn/problems/the-number-of-the-smallest-unoccupied-chair/,the-number-of-the-smallest-unoccupied-chair,数组、有序集合、堆(优先队列),https://algo.itcharge.cn/Solutions/1900-1999/the-number-of-the-smallest-unoccupied-chair/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1942.%20%E6%9C%80%E5%B0%8F%E6%9C%AA%E8%A2%AB%E5%8D%A0%E6%8D%AE%E6%A4%85%E5%AD%90%E7%9A%84%E7%BC%96%E5%8F%B7.md,41.9%,中等,110 -1943,1900-1999,1943. 描述绘画结果,描述绘画结果,https://leetcode.cn/problems/describe-the-painting/,describe-the-painting,数组、前缀和,https://algo.itcharge.cn/Solutions/1900-1999/describe-the-painting/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1943.%20%E6%8F%8F%E8%BF%B0%E7%BB%98%E7%94%BB%E7%BB%93%E6%9E%9C.md,43.9%,中等,75 -1944,1900-1999,1944. 队列中可以看到的人数,队列中可以看到的人数,https://leetcode.cn/problems/number-of-visible-people-in-a-queue/,number-of-visible-people-in-a-queue,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/1900-1999/number-of-visible-people-in-a-queue/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1944.%20%E9%98%9F%E5%88%97%E4%B8%AD%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E7%9A%84%E4%BA%BA%E6%95%B0.md,63.4%,困难,112 -1945,1900-1999,1945. 字符串转化后的各位数字之和,字符串转化后的各位数字之和,https://leetcode.cn/problems/sum-of-digits-of-string-after-convert/,sum-of-digits-of-string-after-convert,字符串、模拟,https://algo.itcharge.cn/Solutions/1900-1999/sum-of-digits-of-string-after-convert/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1945.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E5%8C%96%E5%90%8E%E7%9A%84%E5%90%84%E4%BD%8D%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C.md,70.4%,简单,379 -1946,1900-1999,1946. 子字符串突变后可能得到的最大整数,子字符串突变后可能得到的最大整数,https://leetcode.cn/problems/largest-number-after-mutating-substring/,largest-number-after-mutating-substring,贪心、数组、字符串,https://algo.itcharge.cn/Solutions/1900-1999/largest-number-after-mutating-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1946.%20%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%AA%81%E5%8F%98%E5%90%8E%E5%8F%AF%E8%83%BD%E5%BE%97%E5%88%B0%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B4%E6%95%B0.md,32.2%,中等,113 -1947,1900-1999,1947. 最大兼容性评分和,最大兼容性评分和,https://leetcode.cn/problems/maximum-compatibility-score-sum/,maximum-compatibility-score-sum,位运算、数组、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/1900-1999/maximum-compatibility-score-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1947.%20%E6%9C%80%E5%A4%A7%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%84%E5%88%86%E5%92%8C.md,58.0%,中等,128 -1948,1900-1999,1948. 删除系统中的重复文件夹,删除系统中的重复文件夹,https://leetcode.cn/problems/delete-duplicate-folders-in-system/,delete-duplicate-folders-in-system,字典树、数组、哈希表、字符串、哈希函数,https://algo.itcharge.cn/Solutions/1900-1999/delete-duplicate-folders-in-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1948.%20%E5%88%A0%E9%99%A4%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E6%96%87%E4%BB%B6%E5%A4%B9.md,54.4%,困难,29 -1949,1900-1999,1949. 坚定的友谊,坚定的友谊,https://leetcode.cn/problems/strong-friendship/,strong-friendship,数据库,https://algo.itcharge.cn/Solutions/1900-1999/strong-friendship/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1949.%20%E5%9D%9A%E5%AE%9A%E7%9A%84%E5%8F%8B%E8%B0%8A.md,52.1%,中等,48 -1950,1900-1999,1950. 所有子数组最小值中的最大值,所有子数组最小值中的最大值,https://leetcode.cn/problems/maximum-of-minimum-values-in-all-subarrays/,maximum-of-minimum-values-in-all-subarrays,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/1900-1999/maximum-of-minimum-values-in-all-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1950.%20%E6%89%80%E6%9C%89%E5%AD%90%E6%95%B0%E7%BB%84%E6%9C%80%E5%B0%8F%E5%80%BC%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,51.3%,中等,16 -1951,1900-1999,1951. 查询具有最多共同关注者的所有两两结对组,查询具有最多共同关注者的所有两两结对组,https://leetcode.cn/problems/all-the-pairs-with-the-maximum-number-of-common-followers/,all-the-pairs-with-the-maximum-number-of-common-followers,数据库,https://algo.itcharge.cn/Solutions/1900-1999/all-the-pairs-with-the-maximum-number-of-common-followers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1951.%20%E6%9F%A5%E8%AF%A2%E5%85%B7%E6%9C%89%E6%9C%80%E5%A4%9A%E5%85%B1%E5%90%8C%E5%85%B3%E6%B3%A8%E8%80%85%E7%9A%84%E6%89%80%E6%9C%89%E4%B8%A4%E4%B8%A4%E7%BB%93%E5%AF%B9%E7%BB%84.md,65.2%,中等,53 -1952,1900-1999,1952. 三除数,三除数,https://leetcode.cn/problems/three-divisors/,three-divisors,数学,https://algo.itcharge.cn/Solutions/1900-1999/three-divisors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1952.%20%E4%B8%89%E9%99%A4%E6%95%B0.md,54.8%,简单,175 -1953,1900-1999,1953. 你可以工作的最大周数,你可以工作的最大周数,https://leetcode.cn/problems/maximum-number-of-weeks-for-which-you-can-work/,maximum-number-of-weeks-for-which-you-can-work,贪心、数组,https://algo.itcharge.cn/Solutions/1900-1999/maximum-number-of-weeks-for-which-you-can-work/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1953.%20%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%B7%A5%E4%BD%9C%E7%9A%84%E6%9C%80%E5%A4%A7%E5%91%A8%E6%95%B0.md,37.2%,中等,114 -1954,1900-1999,1954. 收集足够苹果的最小花园周长,收集足够苹果的最小花园周长,https://leetcode.cn/problems/minimum-garden-perimeter-to-collect-enough-apples/,minimum-garden-perimeter-to-collect-enough-apples,数学、二分查找,https://algo.itcharge.cn/Solutions/1900-1999/minimum-garden-perimeter-to-collect-enough-apples/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1954.%20%E6%94%B6%E9%9B%86%E8%B6%B3%E5%A4%9F%E8%8B%B9%E6%9E%9C%E7%9A%84%E6%9C%80%E5%B0%8F%E8%8A%B1%E5%9B%AD%E5%91%A8%E9%95%BF.md,49.7%,中等,93 -1955,1900-1999,1955. 统计特殊子序列的数目,统计特殊子序列的数目,https://leetcode.cn/problems/count-number-of-special-subsequences/,count-number-of-special-subsequences,数组、动态规划,https://algo.itcharge.cn/Solutions/1900-1999/count-number-of-special-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1955.%20%E7%BB%9F%E8%AE%A1%E7%89%B9%E6%AE%8A%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E6%95%B0%E7%9B%AE.md,52.5%,困难,60 -1956,1900-1999,1956. 感染 K 种病毒所需的最短时间,感染 K 种病毒所需的最短时间,https://leetcode.cn/problems/minimum-time-for-k-virus-variants-to-spread/,minimum-time-for-k-virus-variants-to-spread,几何、数组、数学、二分查找、枚举,https://algo.itcharge.cn/Solutions/1900-1999/minimum-time-for-k-virus-variants-to-spread/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1956.%20%E6%84%9F%E6%9F%93%20K%20%E7%A7%8D%E7%97%85%E6%AF%92%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E7%9F%AD%E6%97%B6%E9%97%B4.md,38.0%,困难,15 -1957,1900-1999,1957. 删除字符使字符串变好,删除字符使字符串变好,https://leetcode.cn/problems/delete-characters-to-make-fancy-string/,delete-characters-to-make-fancy-string,字符串,https://algo.itcharge.cn/Solutions/1900-1999/delete-characters-to-make-fancy-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1957.%20%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%BD%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8F%98%E5%A5%BD.md,60.0%,简单,141 -1958,1900-1999,1958. 检查操作是否合法,检查操作是否合法,https://leetcode.cn/problems/check-if-move-is-legal/,check-if-move-is-legal,数组、枚举、矩阵,https://algo.itcharge.cn/Solutions/1900-1999/check-if-move-is-legal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1958.%20%E6%A3%80%E6%9F%A5%E6%93%8D%E4%BD%9C%E6%98%AF%E5%90%A6%E5%90%88%E6%B3%95.md,44.7%,中等,65 -1959,1900-1999,1959. K 次调整数组大小浪费的最小总空间,K 次调整数组大小浪费的最小总空间,https://leetcode.cn/problems/minimum-total-space-wasted-with-k-resizing-operations/,minimum-total-space-wasted-with-k-resizing-operations,数组、动态规划,https://algo.itcharge.cn/Solutions/1900-1999/minimum-total-space-wasted-with-k-resizing-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1959.%20K%20%E6%AC%A1%E8%B0%83%E6%95%B4%E6%95%B0%E7%BB%84%E5%A4%A7%E5%B0%8F%E6%B5%AA%E8%B4%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%80%BB%E7%A9%BA%E9%97%B4.md,45.9%,中等,51 -1960,1900-1999,1960. 两个回文子字符串长度的最大乘积,两个回文子字符串长度的最大乘积,https://leetcode.cn/problems/maximum-product-of-the-length-of-two-palindromic-substrings/,maximum-product-of-the-length-of-two-palindromic-substrings,字符串、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/1900-1999/maximum-product-of-the-length-of-two-palindromic-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1960.%20%E4%B8%A4%E4%B8%AA%E5%9B%9E%E6%96%87%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%95%BF%E5%BA%A6%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B9%98%E7%A7%AF.md,32.3%,困难,37 -1961,1900-1999,1961. 检查字符串是否为数组前缀,检查字符串是否为数组前缀,https://leetcode.cn/problems/check-if-string-is-a-prefix-of-array/,check-if-string-is-a-prefix-of-array,数组、字符串,https://algo.itcharge.cn/Solutions/1900-1999/check-if-string-is-a-prefix-of-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1961.%20%E6%A3%80%E6%9F%A5%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E4%B8%BA%E6%95%B0%E7%BB%84%E5%89%8D%E7%BC%80.md,52.7%,简单,152 -1962,1900-1999,1962. 移除石子使总数最小,移除石子使总数最小,https://leetcode.cn/problems/remove-stones-to-minimize-the-total/,remove-stones-to-minimize-the-total,数组、堆(优先队列),https://algo.itcharge.cn/Solutions/1900-1999/remove-stones-to-minimize-the-total/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1962.%20%E7%A7%BB%E9%99%A4%E7%9F%B3%E5%AD%90%E4%BD%BF%E6%80%BB%E6%95%B0%E6%9C%80%E5%B0%8F.md,46.6%,中等,104 -1963,1900-1999,1963. 使字符串平衡的最小交换次数,使字符串平衡的最小交换次数,https://leetcode.cn/problems/minimum-number-of-swaps-to-make-the-string-balanced/,minimum-number-of-swaps-to-make-the-string-balanced,栈、贪心、双指针、字符串,https://algo.itcharge.cn/Solutions/1900-1999/minimum-number-of-swaps-to-make-the-string-balanced/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1963.%20%E4%BD%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B3%E8%A1%A1%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0.md,64.5%,中等,84 -1964,1900-1999,1964. 找出到每个位置为止最长的有效障碍赛跑路线,找出到每个位置为止最长的有效障碍赛跑路线,https://leetcode.cn/problems/find-the-longest-valid-obstacle-course-at-each-position/,find-the-longest-valid-obstacle-course-at-each-position,树状数组、数组、二分查找,https://algo.itcharge.cn/Solutions/1900-1999/find-the-longest-valid-obstacle-course-at-each-position/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1964.%20%E6%89%BE%E5%87%BA%E5%88%B0%E6%AF%8F%E4%B8%AA%E4%BD%8D%E7%BD%AE%E4%B8%BA%E6%AD%A2%E6%9C%80%E9%95%BF%E7%9A%84%E6%9C%89%E6%95%88%E9%9A%9C%E7%A2%8D%E8%B5%9B%E8%B7%91%E8%B7%AF%E7%BA%BF.md,43.6%,困难,73 -1965,1900-1999,1965. 丢失信息的雇员,丢失信息的雇员,https://leetcode.cn/problems/employees-with-missing-information/,employees-with-missing-information,数据库,https://algo.itcharge.cn/Solutions/1900-1999/employees-with-missing-information/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1965.%20%E4%B8%A2%E5%A4%B1%E4%BF%A1%E6%81%AF%E7%9A%84%E9%9B%87%E5%91%98.md,71.0%,简单,292 -1966,1900-1999,1966. 未排序数组中的可被二分搜索的数,未排序数组中的可被二分搜索的数,https://leetcode.cn/problems/binary-searchable-numbers-in-an-unsorted-array/,binary-searchable-numbers-in-an-unsorted-array,数组、二分查找,https://algo.itcharge.cn/Solutions/1900-1999/binary-searchable-numbers-in-an-unsorted-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1966.%20%E6%9C%AA%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%8F%AF%E8%A2%AB%E4%BA%8C%E5%88%86%E6%90%9C%E7%B4%A2%E7%9A%84%E6%95%B0.md,64.4%,中等,10 -1967,1900-1999,1967. 作为子字符串出现在单词中的字符串数目,作为子字符串出现在单词中的字符串数目,https://leetcode.cn/problems/number-of-strings-that-appear-as-substrings-in-word/,number-of-strings-that-appear-as-substrings-in-word,字符串,https://algo.itcharge.cn/Solutions/1900-1999/number-of-strings-that-appear-as-substrings-in-word/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1967.%20%E4%BD%9C%E4%B8%BA%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%87%BA%E7%8E%B0%E5%9C%A8%E5%8D%95%E8%AF%8D%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%9B%AE.md,79.3%,简单,159 -1968,1900-1999,1968. 构造元素不等于两相邻元素平均值的数组,构造元素不等于两相邻元素平均值的数组,https://leetcode.cn/problems/array-with-elements-not-equal-to-average-of-neighbors/,array-with-elements-not-equal-to-average-of-neighbors,贪心、数组、排序,https://algo.itcharge.cn/Solutions/1900-1999/array-with-elements-not-equal-to-average-of-neighbors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1968.%20%E6%9E%84%E9%80%A0%E5%85%83%E7%B4%A0%E4%B8%8D%E7%AD%89%E4%BA%8E%E4%B8%A4%E7%9B%B8%E9%82%BB%E5%85%83%E7%B4%A0%E5%B9%B3%E5%9D%87%E5%80%BC%E7%9A%84%E6%95%B0%E7%BB%84.md,39.2%,中等,97 -1969,1900-1999,1969. 数组元素的最小非零乘积,数组元素的最小非零乘积,https://leetcode.cn/problems/minimum-non-zero-product-of-the-array-elements/,minimum-non-zero-product-of-the-array-elements,贪心、递归、数学,https://algo.itcharge.cn/Solutions/1900-1999/minimum-non-zero-product-of-the-array-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1969.%20%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%B0%8F%E9%9D%9E%E9%9B%B6%E4%B9%98%E7%A7%AF.md,29.8%,中等,57 -1970,1900-1999,1970. 你能穿过矩阵的最后一天,你能穿过矩阵的最后一天,https://leetcode.cn/problems/last-day-where-you-can-still-cross/,last-day-where-you-can-still-cross,深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵,https://algo.itcharge.cn/Solutions/1900-1999/last-day-where-you-can-still-cross/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1970.%20%E4%BD%A0%E8%83%BD%E7%A9%BF%E8%BF%87%E7%9F%A9%E9%98%B5%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E5%A4%A9.md,50.5%,困难,71 -1971,1900-1999,1971. 寻找图中是否存在路径,寻找图中是否存在路径,https://leetcode.cn/problems/find-if-path-exists-in-graph/,find-if-path-exists-in-graph,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/1900-1999/find-if-path-exists-in-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1971.%20%E5%AF%BB%E6%89%BE%E5%9B%BE%E4%B8%AD%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E8%B7%AF%E5%BE%84.md,54.2%,简单,316 -1972,1900-1999,1972. 同一天的第一个电话和最后一个电话,同一天的第一个电话和最后一个电话,https://leetcode.cn/problems/first-and-last-call-on-the-same-day/,first-and-last-call-on-the-same-day,数据库,https://algo.itcharge.cn/Solutions/1900-1999/first-and-last-call-on-the-same-day/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1972.%20%E5%90%8C%E4%B8%80%E5%A4%A9%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E7%94%B5%E8%AF%9D%E5%92%8C%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E7%94%B5%E8%AF%9D.md,42.5%,困难,46 -1973,1900-1999,1973. 值等于子节点值之和的节点数量,值等于子节点值之和的节点数量,https://leetcode.cn/problems/count-nodes-equal-to-sum-of-descendants/,count-nodes-equal-to-sum-of-descendants,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/1900-1999/count-nodes-equal-to-sum-of-descendants/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1973.%20%E5%80%BC%E7%AD%89%E4%BA%8E%E5%AD%90%E8%8A%82%E7%82%B9%E5%80%BC%E4%B9%8B%E5%92%8C%E7%9A%84%E8%8A%82%E7%82%B9%E6%95%B0%E9%87%8F.md,60.2%,中等,21 -1974,1900-1999,1974. 使用特殊打字机键入单词的最少时间,使用特殊打字机键入单词的最少时间,https://leetcode.cn/problems/minimum-time-to-type-word-using-special-typewriter/,minimum-time-to-type-word-using-special-typewriter,贪心、字符串,https://algo.itcharge.cn/Solutions/1900-1999/minimum-time-to-type-word-using-special-typewriter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1974.%20%E4%BD%BF%E7%94%A8%E7%89%B9%E6%AE%8A%E6%89%93%E5%AD%97%E6%9C%BA%E9%94%AE%E5%85%A5%E5%8D%95%E8%AF%8D%E7%9A%84%E6%9C%80%E5%B0%91%E6%97%B6%E9%97%B4.md,71.3%,简单,142 -1975,1900-1999,1975. 最大方阵和,最大方阵和,https://leetcode.cn/problems/maximum-matrix-sum/,maximum-matrix-sum,贪心、数组、矩阵,https://algo.itcharge.cn/Solutions/1900-1999/maximum-matrix-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1975.%20%E6%9C%80%E5%A4%A7%E6%96%B9%E9%98%B5%E5%92%8C.md,41.6%,中等,76 -1976,1900-1999,1976. 到达目的地的方案数,到达目的地的方案数,https://leetcode.cn/problems/number-of-ways-to-arrive-at-destination/,number-of-ways-to-arrive-at-destination,图、拓扑排序、动态规划、最短路,https://algo.itcharge.cn/Solutions/1900-1999/number-of-ways-to-arrive-at-destination/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1976.%20%E5%88%B0%E8%BE%BE%E7%9B%AE%E7%9A%84%E5%9C%B0%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,36.5%,中等,107 -1977,1900-1999,1977. 划分数字的方案数,划分数字的方案数,https://leetcode.cn/problems/number-of-ways-to-separate-numbers/,number-of-ways-to-separate-numbers,字符串、动态规划、后缀数组,https://algo.itcharge.cn/Solutions/1900-1999/number-of-ways-to-separate-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1977.%20%E5%88%92%E5%88%86%E6%95%B0%E5%AD%97%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,30.1%,困难,28 -1978,1900-1999,1978. 上级经理已离职的公司员工,上级经理已离职的公司员工,https://leetcode.cn/problems/employees-whose-manager-left-the-company/,employees-whose-manager-left-the-company,数据库,https://algo.itcharge.cn/Solutions/1900-1999/employees-whose-manager-left-the-company/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1978.%20%E4%B8%8A%E7%BA%A7%E7%BB%8F%E7%90%86%E5%B7%B2%E7%A6%BB%E8%81%8C%E7%9A%84%E5%85%AC%E5%8F%B8%E5%91%98%E5%B7%A5.md,50.1%,简单,49 -1979,1900-1999,1979. 找出数组的最大公约数,找出数组的最大公约数,https://leetcode.cn/problems/find-greatest-common-divisor-of-array/,find-greatest-common-divisor-of-array,数组、数学、数论,https://algo.itcharge.cn/Solutions/1900-1999/find-greatest-common-divisor-of-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1979.%20%E6%89%BE%E5%87%BA%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%85%AC%E7%BA%A6%E6%95%B0.md,77.1%,简单,272 -1980,1900-1999,1980. 找出不同的二进制字符串,找出不同的二进制字符串,https://leetcode.cn/problems/find-unique-binary-string/,find-unique-binary-string,数组、字符串、回溯,https://algo.itcharge.cn/Solutions/1900-1999/find-unique-binary-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1980.%20%E6%89%BE%E5%87%BA%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%E4%B8%B2.md,59.8%,中等,149 -1981,1900-1999,1981. 最小化目标值与所选元素的差,最小化目标值与所选元素的差,https://leetcode.cn/problems/minimize-the-difference-between-target-and-chosen-elements/,minimize-the-difference-between-target-and-chosen-elements,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/1900-1999/minimize-the-difference-between-target-and-chosen-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1981.%20%E6%9C%80%E5%B0%8F%E5%8C%96%E7%9B%AE%E6%A0%87%E5%80%BC%E4%B8%8E%E6%89%80%E9%80%89%E5%85%83%E7%B4%A0%E7%9A%84%E5%B7%AE.md,33.2%,中等,108 -1982,1900-1999,1982. 从子集的和还原数组,从子集的和还原数组,https://leetcode.cn/problems/find-array-given-subset-sums/,find-array-given-subset-sums,数组、分治,https://algo.itcharge.cn/Solutions/1900-1999/find-array-given-subset-sums/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1982.%20%E4%BB%8E%E5%AD%90%E9%9B%86%E7%9A%84%E5%92%8C%E8%BF%98%E5%8E%9F%E6%95%B0%E7%BB%84.md,48.4%,困难,28 -1983,1900-1999,1983. 范围和相等的最宽索引对,范围和相等的最宽索引对,https://leetcode.cn/problems/widest-pair-of-indices-with-equal-range-sum/,widest-pair-of-indices-with-equal-range-sum,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/1900-1999/widest-pair-of-indices-with-equal-range-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1983.%20%E8%8C%83%E5%9B%B4%E5%92%8C%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%80%E5%AE%BD%E7%B4%A2%E5%BC%95%E5%AF%B9.md,47.7%,中等,13 -1984,1900-1999,1984. 学生分数的最小差值,学生分数的最小差值,https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/,minimum-difference-between-highest-and-lowest-of-k-scores,数组、排序、滑动窗口,https://algo.itcharge.cn/Solutions/1900-1999/minimum-difference-between-highest-and-lowest-of-k-scores/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1984.%20%E5%AD%A6%E7%94%9F%E5%88%86%E6%95%B0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%B7%AE%E5%80%BC.md,61.8%,简单,549 -1985,1900-1999,1985. 找出数组中的第 K 大整数,找出数组中的第 K 大整数,https://leetcode.cn/problems/find-the-kth-largest-integer-in-the-array/,find-the-kth-largest-integer-in-the-array,数组、字符串、分治、快速选择、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/1900-1999/find-the-kth-largest-integer-in-the-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1985.%20%E6%89%BE%E5%87%BA%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E6%95%B4%E6%95%B0.md,42.1%,中等,152 -1986,1900-1999,1986. 完成任务的最少工作时间段,完成任务的最少工作时间段,https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/,minimum-number-of-work-sessions-to-finish-the-tasks,位运算、数组、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1986.%20%E5%AE%8C%E6%88%90%E4%BB%BB%E5%8A%A1%E7%9A%84%E6%9C%80%E5%B0%91%E5%B7%A5%E4%BD%9C%E6%97%B6%E9%97%B4%E6%AE%B5.md,33.0%,中等,118 -1987,1900-1999,1987. 不同的好子序列数目,不同的好子序列数目,https://leetcode.cn/problems/number-of-unique-good-subsequences/,number-of-unique-good-subsequences,字符串、动态规划,https://algo.itcharge.cn/Solutions/1900-1999/number-of-unique-good-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1987.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E5%A5%BD%E5%AD%90%E5%BA%8F%E5%88%97%E6%95%B0%E7%9B%AE.md,50.3%,困难,42 -1988,1900-1999,1988. 找出每所学校的最低分数要求,找出每所学校的最低分数要求,https://leetcode.cn/problems/find-cutoff-score-for-each-school/,find-cutoff-score-for-each-school,数据库,https://algo.itcharge.cn/Solutions/1900-1999/find-cutoff-score-for-each-school/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1988.%20%E6%89%BE%E5%87%BA%E6%AF%8F%E6%89%80%E5%AD%A6%E6%A0%A1%E7%9A%84%E6%9C%80%E4%BD%8E%E5%88%86%E6%95%B0%E8%A6%81%E6%B1%82.md,64.5%,中等,60 -1989,1900-1999,1989. 捉迷藏中可捕获的最大人数,捉迷藏中可捕获的最大人数,https://leetcode.cn/problems/maximum-number-of-people-that-can-be-caught-in-tag/,maximum-number-of-people-that-can-be-caught-in-tag,贪心、数组,https://algo.itcharge.cn/Solutions/1900-1999/maximum-number-of-people-that-can-be-caught-in-tag/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1989.%20%E6%8D%89%E8%BF%B7%E8%97%8F%E4%B8%AD%E5%8F%AF%E6%8D%95%E8%8E%B7%E7%9A%84%E6%9C%80%E5%A4%A7%E4%BA%BA%E6%95%B0.md,55.8%,中等,14 -1990,1900-1999,1990. 统计实验的数量,统计实验的数量,https://leetcode.cn/problems/count-the-number-of-experiments/,count-the-number-of-experiments,数据库,https://algo.itcharge.cn/Solutions/1900-1999/count-the-number-of-experiments/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1990.%20%E7%BB%9F%E8%AE%A1%E5%AE%9E%E9%AA%8C%E7%9A%84%E6%95%B0%E9%87%8F.md,47.0%,中等,28 -1991,1900-1999,1991. 找到数组的中间位置,找到数组的中间位置,https://leetcode.cn/problems/find-the-middle-index-in-array/,find-the-middle-index-in-array,数组、前缀和,https://algo.itcharge.cn/Solutions/1900-1999/find-the-middle-index-in-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1991.%20%E6%89%BE%E5%88%B0%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E9%97%B4%E4%BD%8D%E7%BD%AE.md,63.8%,简单,297 -1992,1900-1999,1992. 找到所有的农场组,找到所有的农场组,https://leetcode.cn/problems/find-all-groups-of-farmland/,find-all-groups-of-farmland,深度优先搜索、广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/1900-1999/find-all-groups-of-farmland/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1992.%20%E6%89%BE%E5%88%B0%E6%89%80%E6%9C%89%E7%9A%84%E5%86%9C%E5%9C%BA%E7%BB%84.md,61.2%,中等,117 -1993,1900-1999,1993. 树上的操作,树上的操作,https://leetcode.cn/problems/operations-on-tree/,operations-on-tree,树、深度优先搜索、广度优先搜索、设计、哈希表,https://algo.itcharge.cn/Solutions/1900-1999/operations-on-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1993.%20%E6%A0%91%E4%B8%8A%E7%9A%84%E6%93%8D%E4%BD%9C.md,39.8%,中等,68 -1994,1900-1999,1994. 好子集的数目,好子集的数目,https://leetcode.cn/problems/the-number-of-good-subsets/,the-number-of-good-subsets,位运算、数组、数学、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/1900-1999/the-number-of-good-subsets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1994.%20%E5%A5%BD%E5%AD%90%E9%9B%86%E7%9A%84%E6%95%B0%E7%9B%AE.md,56.1%,困难,190 -1995,1900-1999,1995. 统计特殊四元组,统计特殊四元组,https://leetcode.cn/problems/count-special-quadruplets/,count-special-quadruplets,数组、枚举,https://algo.itcharge.cn/Solutions/1900-1999/count-special-quadruplets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1995.%20%E7%BB%9F%E8%AE%A1%E7%89%B9%E6%AE%8A%E5%9B%9B%E5%85%83%E7%BB%84.md,66.3%,简单,289 -1996,1900-1999,1996. 游戏中弱角色的数量,游戏中弱角色的数量,https://leetcode.cn/problems/the-number-of-weak-characters-in-the-game/,the-number-of-weak-characters-in-the-game,栈、贪心、数组、排序、单调栈,https://algo.itcharge.cn/Solutions/1900-1999/the-number-of-weak-characters-in-the-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1996.%20%E6%B8%B8%E6%88%8F%E4%B8%AD%E5%BC%B1%E8%A7%92%E8%89%B2%E7%9A%84%E6%95%B0%E9%87%8F.md,41.5%,中等,308 -1997,1900-1999,1997. 访问完所有房间的第一天,访问完所有房间的第一天,https://leetcode.cn/problems/first-day-where-you-have-been-in-all-the-rooms/,first-day-where-you-have-been-in-all-the-rooms,数组、动态规划,https://algo.itcharge.cn/Solutions/1900-1999/first-day-where-you-have-been-in-all-the-rooms/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1997.%20%E8%AE%BF%E9%97%AE%E5%AE%8C%E6%89%80%E6%9C%89%E6%88%BF%E9%97%B4%E7%9A%84%E7%AC%AC%E4%B8%80%E5%A4%A9.md,35.2%,中等,53 -1998,1900-1999,1998. 数组的最大公因数排序,数组的最大公因数排序,https://leetcode.cn/problems/gcd-sort-of-an-array/,gcd-sort-of-an-array,并查集、数组、数学、数论、排序,https://algo.itcharge.cn/Solutions/1900-1999/gcd-sort-of-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1998.%20%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%85%AC%E5%9B%A0%E6%95%B0%E6%8E%92%E5%BA%8F.md,45.8%,困难,59 -1999,1900-1999,1999. 最小的仅由两个数组成的倍数,最小的仅由两个数组成的倍数,https://leetcode.cn/problems/smallest-greater-multiple-made-of-two-digits/,smallest-greater-multiple-made-of-two-digits,数学、枚举,https://algo.itcharge.cn/Solutions/1900-1999/smallest-greater-multiple-made-of-two-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1999.%20%E6%9C%80%E5%B0%8F%E7%9A%84%E4%BB%85%E7%94%B1%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E6%88%90%E7%9A%84%E5%80%8D%E6%95%B0.md,46.8%,中等,14 -2000,2000-2099,2000. 反转单词前缀,反转单词前缀,https://leetcode.cn/problems/reverse-prefix-of-word/,reverse-prefix-of-word,双指针、字符串,https://algo.itcharge.cn/Solutions/2000-2099/reverse-prefix-of-word/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2000.%20%E5%8F%8D%E8%BD%AC%E5%8D%95%E8%AF%8D%E5%89%8D%E7%BC%80.md,77.4%,简单,479 -2001,2000-2099,2001. 可互换矩形的组数,可互换矩形的组数,https://leetcode.cn/problems/number-of-pairs-of-interchangeable-rectangles/,number-of-pairs-of-interchangeable-rectangles,数组、哈希表、数学、计数、数论,https://algo.itcharge.cn/Solutions/2000-2099/number-of-pairs-of-interchangeable-rectangles/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2001.%20%E5%8F%AF%E4%BA%92%E6%8D%A2%E7%9F%A9%E5%BD%A2%E7%9A%84%E7%BB%84%E6%95%B0.md,38.9%,中等,166 -2002,2000-2099,2002. 两个回文子序列长度的最大乘积,两个回文子序列长度的最大乘积,https://leetcode.cn/problems/maximum-product-of-the-length-of-two-palindromic-subsequences/,maximum-product-of-the-length-of-two-palindromic-subsequences,位运算、字符串、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/2000-2099/maximum-product-of-the-length-of-two-palindromic-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2002.%20%E4%B8%A4%E4%B8%AA%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97%E9%95%BF%E5%BA%A6%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B9%98%E7%A7%AF.md,60.3%,中等,123 -2003,2000-2099,2003. 每棵子树内缺失的最小基因值,每棵子树内缺失的最小基因值,https://leetcode.cn/problems/smallest-missing-genetic-value-in-each-subtree/,smallest-missing-genetic-value-in-each-subtree,树、深度优先搜索、并查集、动态规划,https://algo.itcharge.cn/Solutions/2000-2099/smallest-missing-genetic-value-in-each-subtree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2003.%20%E6%AF%8F%E6%A3%B5%E5%AD%90%E6%A0%91%E5%86%85%E7%BC%BA%E5%A4%B1%E7%9A%84%E6%9C%80%E5%B0%8F%E5%9F%BA%E5%9B%A0%E5%80%BC.md,43.0%,困难,59 -2004,2000-2099,2004. 职员招聘人数,职员招聘人数,https://leetcode.cn/problems/the-number-of-seniors-and-juniors-to-join-the-company/,the-number-of-seniors-and-juniors-to-join-the-company,数据库,https://algo.itcharge.cn/Solutions/2000-2099/the-number-of-seniors-and-juniors-to-join-the-company/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2004.%20%E8%81%8C%E5%91%98%E6%8B%9B%E8%81%98%E4%BA%BA%E6%95%B0.md,41.9%,困难,32 -2005,2000-2099,2005. 斐波那契树的移除子树游戏,斐波那契树的移除子树游戏,https://leetcode.cn/problems/subtree-removal-game-with-fibonacci-tree/,subtree-removal-game-with-fibonacci-tree,树、数学、动态规划、二叉树、博弈,https://algo.itcharge.cn/Solutions/2000-2099/subtree-removal-game-with-fibonacci-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2005.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%A0%91%E7%9A%84%E7%A7%BB%E9%99%A4%E5%AD%90%E6%A0%91%E6%B8%B8%E6%88%8F.md,50.1%,困难,11 -2006,2000-2099,2006. 差的绝对值为 K 的数对数目,差的绝对值为 K 的数对数目,https://leetcode.cn/problems/count-number-of-pairs-with-absolute-difference-k/,count-number-of-pairs-with-absolute-difference-k,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2000-2099/count-number-of-pairs-with-absolute-difference-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2006.%20%E5%B7%AE%E7%9A%84%E7%BB%9D%E5%AF%B9%E5%80%BC%E4%B8%BA%20K%20%E7%9A%84%E6%95%B0%E5%AF%B9%E6%95%B0%E7%9B%AE.md,83.9%,简单,529 -2007,2000-2099,2007. 从双倍数组中还原原数组,从双倍数组中还原原数组,https://leetcode.cn/problems/find-original-array-from-doubled-array/,find-original-array-from-doubled-array,贪心、数组、哈希表、排序,https://algo.itcharge.cn/Solutions/2000-2099/find-original-array-from-doubled-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2007.%20%E4%BB%8E%E5%8F%8C%E5%80%8D%E6%95%B0%E7%BB%84%E4%B8%AD%E8%BF%98%E5%8E%9F%E5%8E%9F%E6%95%B0%E7%BB%84.md,33.5%,中等,126 -2008,2000-2099,2008. 出租车的最大盈利,出租车的最大盈利,https://leetcode.cn/problems/maximum-earnings-from-taxi/,maximum-earnings-from-taxi,数组、二分查找、动态规划、排序,https://algo.itcharge.cn/Solutions/2000-2099/maximum-earnings-from-taxi/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2008.%20%E5%87%BA%E7%A7%9F%E8%BD%A6%E7%9A%84%E6%9C%80%E5%A4%A7%E7%9B%88%E5%88%A9.md,46.0%,中等,104 -2009,2000-2099,2009. 使数组连续的最少操作数,使数组连续的最少操作数,https://leetcode.cn/problems/minimum-number-of-operations-to-make-array-continuous/,minimum-number-of-operations-to-make-array-continuous,数组、二分查找,https://algo.itcharge.cn/Solutions/2000-2099/minimum-number-of-operations-to-make-array-continuous/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2009.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E8%BF%9E%E7%BB%AD%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%95%B0.md,43.3%,困难,76 -2010,2000-2099,2010. 职员招聘人数 II,职员招聘人数 II,https://leetcode.cn/problems/the-number-of-seniors-and-juniors-to-join-the-company-ii/,the-number-of-seniors-and-juniors-to-join-the-company-ii,数据库,https://algo.itcharge.cn/Solutions/2000-2099/the-number-of-seniors-and-juniors-to-join-the-company-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2010.%20%E8%81%8C%E5%91%98%E6%8B%9B%E8%81%98%E4%BA%BA%E6%95%B0%20II.md,61.1%,困难,45 -2011,2000-2099,2011. 执行操作后的变量值,执行操作后的变量值,https://leetcode.cn/problems/final-value-of-variable-after-performing-operations/,final-value-of-variable-after-performing-operations,数组、字符串、模拟,https://algo.itcharge.cn/Solutions/2000-2099/final-value-of-variable-after-performing-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2011.%20%E6%89%A7%E8%A1%8C%E6%93%8D%E4%BD%9C%E5%90%8E%E7%9A%84%E5%8F%98%E9%87%8F%E5%80%BC.md,86.9%,简单,403 -2012,2000-2099,2012. 数组美丽值求和,数组美丽值求和,https://leetcode.cn/problems/sum-of-beauty-in-the-array/,sum-of-beauty-in-the-array,数组,https://algo.itcharge.cn/Solutions/2000-2099/sum-of-beauty-in-the-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2012.%20%E6%95%B0%E7%BB%84%E7%BE%8E%E4%B8%BD%E5%80%BC%E6%B1%82%E5%92%8C.md,38.9%,中等,104 -2013,2000-2099,2013. 检测正方形,检测正方形,https://leetcode.cn/problems/detect-squares/,detect-squares,设计、数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2000-2099/detect-squares/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2013.%20%E6%A3%80%E6%B5%8B%E6%AD%A3%E6%96%B9%E5%BD%A2.md,56.6%,中等,244 -2014,2000-2099,2014. 重复 K 次的最长子序列,重复 K 次的最长子序列,https://leetcode.cn/problems/longest-subsequence-repeated-k-times/,longest-subsequence-repeated-k-times,贪心、字符串、回溯、计数、枚举,https://algo.itcharge.cn/Solutions/2000-2099/longest-subsequence-repeated-k-times/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2014.%20%E9%87%8D%E5%A4%8D%20K%20%E6%AC%A1%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E5%BA%8F%E5%88%97.md,54.6%,困难,31 -2015,2000-2099,2015. 每段建筑物的平均高度,每段建筑物的平均高度,https://leetcode.cn/problems/average-height-of-buildings-in-each-segment/,average-height-of-buildings-in-each-segment,贪心、数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2000-2099/average-height-of-buildings-in-each-segment/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2015.%20%E6%AF%8F%E6%AE%B5%E5%BB%BA%E7%AD%91%E7%89%A9%E7%9A%84%E5%B9%B3%E5%9D%87%E9%AB%98%E5%BA%A6.md,57.3%,中等,16 -2016,2000-2099,2016. 增量元素之间的最大差值,增量元素之间的最大差值,https://leetcode.cn/problems/maximum-difference-between-increasing-elements/,maximum-difference-between-increasing-elements,数组,https://algo.itcharge.cn/Solutions/2000-2099/maximum-difference-between-increasing-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2016.%20%E5%A2%9E%E9%87%8F%E5%85%83%E7%B4%A0%E4%B9%8B%E9%97%B4%E7%9A%84%E6%9C%80%E5%A4%A7%E5%B7%AE%E5%80%BC.md,59.7%,简单,506 -2017,2000-2099,2017. 网格游戏,网格游戏,https://leetcode.cn/problems/grid-game/,grid-game,数组、矩阵、前缀和,https://algo.itcharge.cn/Solutions/2000-2099/grid-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2017.%20%E7%BD%91%E6%A0%BC%E6%B8%B8%E6%88%8F.md,38.5%,中等,127 -2018,2000-2099,2018. 判断单词是否能放入填字游戏内,判断单词是否能放入填字游戏内,https://leetcode.cn/problems/check-if-word-can-be-placed-in-crossword/,check-if-word-can-be-placed-in-crossword,数组、枚举、矩阵,https://algo.itcharge.cn/Solutions/2000-2099/check-if-word-can-be-placed-in-crossword/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2018.%20%E5%88%A4%E6%96%AD%E5%8D%95%E8%AF%8D%E6%98%AF%E5%90%A6%E8%83%BD%E6%94%BE%E5%85%A5%E5%A1%AB%E5%AD%97%E6%B8%B8%E6%88%8F%E5%86%85.md,42.2%,中等,68 -2019,2000-2099,2019. 解出数学表达式的学生分数,解出数学表达式的学生分数,https://leetcode.cn/problems/the-score-of-students-solving-math-expression/,the-score-of-students-solving-math-expression,栈、记忆化搜索、数组、数学、字符串、动态规划,https://algo.itcharge.cn/Solutions/2000-2099/the-score-of-students-solving-math-expression/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2019.%20%E8%A7%A3%E5%87%BA%E6%95%B0%E5%AD%A6%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%9A%84%E5%AD%A6%E7%94%9F%E5%88%86%E6%95%B0.md,37.6%,困难,45 -2020,2000-2099,2020. 无流量的帐户数,无流量的帐户数,https://leetcode.cn/problems/number-of-accounts-that-did-not-stream/,number-of-accounts-that-did-not-stream,数据库,https://algo.itcharge.cn/Solutions/2000-2099/number-of-accounts-that-did-not-stream/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2020.%20%E6%97%A0%E6%B5%81%E9%87%8F%E7%9A%84%E5%B8%90%E6%88%B7%E6%95%B0.md,70.9%,中等,34 -2021,2000-2099,2021. 街上最亮的位置,街上最亮的位置,https://leetcode.cn/problems/brightest-position-on-street/,brightest-position-on-street,数组、有序集合、前缀和,https://algo.itcharge.cn/Solutions/2000-2099/brightest-position-on-street/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2021.%20%E8%A1%97%E4%B8%8A%E6%9C%80%E4%BA%AE%E7%9A%84%E4%BD%8D%E7%BD%AE.md,63.0%,中等,23 -2022,2000-2099,2022. 将一维数组转变成二维数组,将一维数组转变成二维数组,https://leetcode.cn/problems/convert-1d-array-into-2d-array/,convert-1d-array-into-2d-array,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/2000-2099/convert-1d-array-into-2d-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2022.%20%E5%B0%86%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84%E8%BD%AC%E5%8F%98%E6%88%90%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84.md,65.5%,简单,483 -2023,2000-2099,2023. 连接后等于目标字符串的字符串对,连接后等于目标字符串的字符串对,https://leetcode.cn/problems/number-of-pairs-of-strings-with-concatenation-equal-to-target/,number-of-pairs-of-strings-with-concatenation-equal-to-target,数组、字符串,https://algo.itcharge.cn/Solutions/2000-2099/number-of-pairs-of-strings-with-concatenation-equal-to-target/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2023.%20%E8%BF%9E%E6%8E%A5%E5%90%8E%E7%AD%89%E4%BA%8E%E7%9B%AE%E6%A0%87%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%AF%B9.md,74.2%,中等,103 -2024,2000-2099,2024. 考试的最大困扰度,考试的最大困扰度,https://leetcode.cn/problems/maximize-the-confusion-of-an-exam/,maximize-the-confusion-of-an-exam,字符串、二分查找、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/2000-2099/maximize-the-confusion-of-an-exam/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2024.%20%E8%80%83%E8%AF%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%9B%B0%E6%89%B0%E5%BA%A6.md,57.3%,中等,441 -2025,2000-2099,2025. 分割数组的最多方案数,分割数组的最多方案数,https://leetcode.cn/problems/maximum-number-of-ways-to-partition-an-array/,maximum-number-of-ways-to-partition-an-array,数组、哈希表、计数、枚举、前缀和,https://algo.itcharge.cn/Solutions/2000-2099/maximum-number-of-ways-to-partition-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2025.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%9A%E6%96%B9%E6%A1%88%E6%95%B0.md,30.4%,困难,63 -2026,2000-2099,2026. 低质量的问题,低质量的问题,https://leetcode.cn/problems/low-quality-problems/,low-quality-problems,数据库,https://algo.itcharge.cn/Solutions/2000-2099/low-quality-problems/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2026.%20%E4%BD%8E%E8%B4%A8%E9%87%8F%E7%9A%84%E9%97%AE%E9%A2%98.md,79.9%,简单,33 -2027,2000-2099,2027. 转换字符串的最少操作次数,转换字符串的最少操作次数,https://leetcode.cn/problems/minimum-moves-to-convert-string/,minimum-moves-to-convert-string,贪心、字符串,https://algo.itcharge.cn/Solutions/2000-2099/minimum-moves-to-convert-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2027.%20%E8%BD%AC%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,67.0%,简单,305 -2028,2000-2099,2028. 找出缺失的观测数据,找出缺失的观测数据,https://leetcode.cn/problems/find-missing-observations/,find-missing-observations,数组、数学、模拟,https://algo.itcharge.cn/Solutions/2000-2099/find-missing-observations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2028.%20%E6%89%BE%E5%87%BA%E7%BC%BA%E5%A4%B1%E7%9A%84%E8%A7%82%E6%B5%8B%E6%95%B0%E6%8D%AE.md,50.7%,中等,400 -2029,2000-2099,2029. 石子游戏 IX,石子游戏 IX,https://leetcode.cn/problems/stone-game-ix/,stone-game-ix,贪心、数组、数学、计数、博弈,https://algo.itcharge.cn/Solutions/2000-2099/stone-game-ix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2029.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%20IX.md,46.9%,中等,198 -2030,2000-2099,2030. 含特定字母的最小子序列,含特定字母的最小子序列,https://leetcode.cn/problems/smallest-k-length-subsequence-with-occurrences-of-a-letter/,smallest-k-length-subsequence-with-occurrences-of-a-letter,栈、贪心、字符串、单调栈,https://algo.itcharge.cn/Solutions/2000-2099/smallest-k-length-subsequence-with-occurrences-of-a-letter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2030.%20%E5%90%AB%E7%89%B9%E5%AE%9A%E5%AD%97%E6%AF%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%90%E5%BA%8F%E5%88%97.md,36.3%,困难,53 -2031,2000-2099,2031. 1 比 0 多的子数组个数,1 比 0 多的子数组个数,https://leetcode.cn/problems/count-subarrays-with-more-ones-than-zeros/,count-subarrays-with-more-ones-than-zeros,树状数组、线段树、数组、二分查找、分治、有序集合、归并排序,https://algo.itcharge.cn/Solutions/2000-2099/count-subarrays-with-more-ones-than-zeros/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2031.%201%20%E6%AF%94%200%20%E5%A4%9A%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E4%B8%AA%E6%95%B0.md,55.2%,中等,22 -2032,2000-2099,2032. 至少在两个数组中出现的值,至少在两个数组中出现的值,https://leetcode.cn/problems/two-out-of-three/,two-out-of-three,数组、哈希表,https://algo.itcharge.cn/Solutions/2000-2099/two-out-of-three/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2032.%20%E8%87%B3%E5%B0%91%E5%9C%A8%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E4%B8%AD%E5%87%BA%E7%8E%B0%E7%9A%84%E5%80%BC.md,73.1%,简单,412 -2033,2000-2099,2033. 获取单值网格的最小操作数,获取单值网格的最小操作数,https://leetcode.cn/problems/minimum-operations-to-make-a-uni-value-grid/,minimum-operations-to-make-a-uni-value-grid,数组、数学、矩阵、排序,https://algo.itcharge.cn/Solutions/2000-2099/minimum-operations-to-make-a-uni-value-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2033.%20%E8%8E%B7%E5%8F%96%E5%8D%95%E5%80%BC%E7%BD%91%E6%A0%BC%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md,43.2%,中等,123 -2034,2000-2099,2034. 股票价格波动,股票价格波动,https://leetcode.cn/problems/stock-price-fluctuation/,stock-price-fluctuation,设计、哈希表、数据流、有序集合、堆(优先队列),https://algo.itcharge.cn/Solutions/2000-2099/stock-price-fluctuation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2034.%20%E8%82%A1%E7%A5%A8%E4%BB%B7%E6%A0%BC%E6%B3%A2%E5%8A%A8.md,45.8%,中等,244 -2035,2000-2099,2035. 将数组分成两个数组并最小化数组和的差,将数组分成两个数组并最小化数组和的差,https://leetcode.cn/problems/partition-array-into-two-arrays-to-minimize-sum-difference/,partition-array-into-two-arrays-to-minimize-sum-difference,位运算、数组、双指针、二分查找、动态规划、状态压缩、有序集合,https://algo.itcharge.cn/Solutions/2000-2099/partition-array-into-two-arrays-to-minimize-sum-difference/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2035.%20%E5%B0%86%E6%95%B0%E7%BB%84%E5%88%86%E6%88%90%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E5%B9%B6%E6%9C%80%E5%B0%8F%E5%8C%96%E6%95%B0%E7%BB%84%E5%92%8C%E7%9A%84%E5%B7%AE.md,34.7%,困难,71 -2036,2000-2099,2036. 最大交替子数组和,最大交替子数组和,https://leetcode.cn/problems/maximum-alternating-subarray-sum/,maximum-alternating-subarray-sum,数组、动态规划,https://algo.itcharge.cn/Solutions/2000-2099/maximum-alternating-subarray-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2036.%20%E6%9C%80%E5%A4%A7%E4%BA%A4%E6%9B%BF%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md,42.3%,中等,19 -2037,2000-2099,2037. 使每位学生都有座位的最少移动次数,使每位学生都有座位的最少移动次数,https://leetcode.cn/problems/minimum-number-of-moves-to-seat-everyone/,minimum-number-of-moves-to-seat-everyone,数组、排序,https://algo.itcharge.cn/Solutions/2000-2099/minimum-number-of-moves-to-seat-everyone/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2037.%20%E4%BD%BF%E6%AF%8F%E4%BD%8D%E5%AD%A6%E7%94%9F%E9%83%BD%E6%9C%89%E5%BA%A7%E4%BD%8D%E7%9A%84%E6%9C%80%E5%B0%91%E7%A7%BB%E5%8A%A8%E6%AC%A1%E6%95%B0.md,85.1%,简单,260 -2038,2000-2099,2038. 如果相邻两个颜色均相同则删除当前颜色,如果相邻两个颜色均相同则删除当前颜色,https://leetcode.cn/problems/remove-colored-pieces-if-both-neighbors-are-the-same-color/,remove-colored-pieces-if-both-neighbors-are-the-same-color,贪心、数学、字符串、博弈,https://algo.itcharge.cn/Solutions/2000-2099/remove-colored-pieces-if-both-neighbors-are-the-same-color/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2038.%20%E5%A6%82%E6%9E%9C%E7%9B%B8%E9%82%BB%E4%B8%A4%E4%B8%AA%E9%A2%9C%E8%89%B2%E5%9D%87%E7%9B%B8%E5%90%8C%E5%88%99%E5%88%A0%E9%99%A4%E5%BD%93%E5%89%8D%E9%A2%9C%E8%89%B2.md,63.4%,中等,452 -2039,2000-2099,2039. 网络空闲的时刻,网络空闲的时刻,https://leetcode.cn/problems/the-time-when-the-network-becomes-idle/,the-time-when-the-network-becomes-idle,广度优先搜索、图、数组,https://algo.itcharge.cn/Solutions/2000-2099/the-time-when-the-network-becomes-idle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2039.%20%E7%BD%91%E7%BB%9C%E7%A9%BA%E9%97%B2%E7%9A%84%E6%97%B6%E5%88%BB.md,55.9%,中等,181 -2040,2000-2099,2040. 两个有序数组的第 K 小乘积,两个有序数组的第 K 小乘积,https://leetcode.cn/problems/kth-smallest-product-of-two-sorted-arrays/,kth-smallest-product-of-two-sorted-arrays,数组、二分查找,https://algo.itcharge.cn/Solutions/2000-2099/kth-smallest-product-of-two-sorted-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2040.%20%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E7%AC%AC%20K%20%E5%B0%8F%E4%B9%98%E7%A7%AF.md,33.4%,困难,35 -2041,2000-2099,2041. 面试中被录取的候选人,面试中被录取的候选人,https://leetcode.cn/problems/accepted-candidates-from-the-interviews/,accepted-candidates-from-the-interviews,数据库,https://algo.itcharge.cn/Solutions/2000-2099/accepted-candidates-from-the-interviews/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2041.%20%E9%9D%A2%E8%AF%95%E4%B8%AD%E8%A2%AB%E5%BD%95%E5%8F%96%E7%9A%84%E5%80%99%E9%80%89%E4%BA%BA.md,76.3%,中等,29 -2042,2000-2099,2042. 检查句子中的数字是否递增,检查句子中的数字是否递增,https://leetcode.cn/problems/check-if-numbers-are-ascending-in-a-sentence/,check-if-numbers-are-ascending-in-a-sentence,字符串,https://algo.itcharge.cn/Solutions/2000-2099/check-if-numbers-are-ascending-in-a-sentence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2042.%20%E6%A3%80%E6%9F%A5%E5%8F%A5%E5%AD%90%E4%B8%AD%E7%9A%84%E6%95%B0%E5%AD%97%E6%98%AF%E5%90%A6%E9%80%92%E5%A2%9E.md,72.0%,简单,499 -2043,2000-2099,2043. 简易银行系统,简易银行系统,https://leetcode.cn/problems/simple-bank-system/,simple-bank-system,设计、数组、哈希表、模拟,https://algo.itcharge.cn/Solutions/2000-2099/simple-bank-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2043.%20%E7%AE%80%E6%98%93%E9%93%B6%E8%A1%8C%E7%B3%BB%E7%BB%9F.md,66.0%,中等,312 -2044,2000-2099,2044. 统计按位或能得到最大值的子集数目,统计按位或能得到最大值的子集数目,https://leetcode.cn/problems/count-number-of-maximum-bitwise-or-subsets/,count-number-of-maximum-bitwise-or-subsets,位运算、数组、回溯,https://algo.itcharge.cn/Solutions/2000-2099/count-number-of-maximum-bitwise-or-subsets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2044.%20%E7%BB%9F%E8%AE%A1%E6%8C%89%E4%BD%8D%E6%88%96%E8%83%BD%E5%BE%97%E5%88%B0%E6%9C%80%E5%A4%A7%E5%80%BC%E7%9A%84%E5%AD%90%E9%9B%86%E6%95%B0%E7%9B%AE.md,81.8%,中等,400 -2045,2000-2099,2045. 到达目的地的第二短时间,到达目的地的第二短时间,https://leetcode.cn/problems/second-minimum-time-to-reach-destination/,second-minimum-time-to-reach-destination,广度优先搜索、图、最短路,https://algo.itcharge.cn/Solutions/2000-2099/second-minimum-time-to-reach-destination/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2045.%20%E5%88%B0%E8%BE%BE%E7%9B%AE%E7%9A%84%E5%9C%B0%E7%9A%84%E7%AC%AC%E4%BA%8C%E7%9F%AD%E6%97%B6%E9%97%B4.md,53.3%,困难,166 -2046,2000-2099,2046. 给按照绝对值排序的链表排序,给按照绝对值排序的链表排序,https://leetcode.cn/problems/sort-linked-list-already-sorted-using-absolute-values/,sort-linked-list-already-sorted-using-absolute-values,链表、双指针、排序,https://algo.itcharge.cn/Solutions/2000-2099/sort-linked-list-already-sorted-using-absolute-values/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2046.%20%E7%BB%99%E6%8C%89%E7%85%A7%E7%BB%9D%E5%AF%B9%E5%80%BC%E6%8E%92%E5%BA%8F%E7%9A%84%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F.md,63.9%,中等,32 -2047,2000-2099,2047. 句子中的有效单词数,句子中的有效单词数,https://leetcode.cn/problems/number-of-valid-words-in-a-sentence/,number-of-valid-words-in-a-sentence,字符串,https://algo.itcharge.cn/Solutions/2000-2099/number-of-valid-words-in-a-sentence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2047.%20%E5%8F%A5%E5%AD%90%E4%B8%AD%E7%9A%84%E6%9C%89%E6%95%88%E5%8D%95%E8%AF%8D%E6%95%B0.md,38.6%,简单,434 -2048,2000-2099,2048. 下一个更大的数值平衡数,下一个更大的数值平衡数,https://leetcode.cn/problems/next-greater-numerically-balanced-number/,next-greater-numerically-balanced-number,数学、回溯、枚举,https://algo.itcharge.cn/Solutions/2000-2099/next-greater-numerically-balanced-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2048.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E7%9A%84%E6%95%B0%E5%80%BC%E5%B9%B3%E8%A1%A1%E6%95%B0.md,45.4%,中等,121 -2049,2000-2099,2049. 统计最高分的节点数目,统计最高分的节点数目,https://leetcode.cn/problems/count-nodes-with-the-highest-score/,count-nodes-with-the-highest-score,树、深度优先搜索、数组、二叉树,https://algo.itcharge.cn/Solutions/2000-2099/count-nodes-with-the-highest-score/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2049.%20%E7%BB%9F%E8%AE%A1%E6%9C%80%E9%AB%98%E5%88%86%E7%9A%84%E8%8A%82%E7%82%B9%E6%95%B0%E7%9B%AE.md,51.8%,中等,315 -2050,2000-2099,2050. 并行课程 III,并行课程 III,https://leetcode.cn/problems/parallel-courses-iii/,parallel-courses-iii,图、拓扑排序、数组、动态规划,https://algo.itcharge.cn/Solutions/2000-2099/parallel-courses-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2050.%20%E5%B9%B6%E8%A1%8C%E8%AF%BE%E7%A8%8B%20III.md,58.5%,困难,108 -2051,2000-2099,2051. 商店中每个成员的级别,商店中每个成员的级别,https://leetcode.cn/problems/the-category-of-each-member-in-the-store/,the-category-of-each-member-in-the-store,数据库,https://algo.itcharge.cn/Solutions/2000-2099/the-category-of-each-member-in-the-store/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2051.%20%E5%95%86%E5%BA%97%E4%B8%AD%E6%AF%8F%E4%B8%AA%E6%88%90%E5%91%98%E7%9A%84%E7%BA%A7%E5%88%AB.md,65.2%,中等,21 -2052,2000-2099,2052. 将句子分隔成行的最低成本,将句子分隔成行的最低成本,https://leetcode.cn/problems/minimum-cost-to-separate-sentence-into-rows/,minimum-cost-to-separate-sentence-into-rows,数组、动态规划,https://algo.itcharge.cn/Solutions/2000-2099/minimum-cost-to-separate-sentence-into-rows/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2052.%20%E5%B0%86%E5%8F%A5%E5%AD%90%E5%88%86%E9%9A%94%E6%88%90%E8%A1%8C%E7%9A%84%E6%9C%80%E4%BD%8E%E6%88%90%E6%9C%AC.md,48.0%,中等,19 -2053,2000-2099,2053. 数组中第 K 个独一无二的字符串,数组中第 K 个独一无二的字符串,https://leetcode.cn/problems/kth-distinct-string-in-an-array/,kth-distinct-string-in-an-array,数组、哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/2000-2099/kth-distinct-string-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2053.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%AC%AC%20K%20%E4%B8%AA%E7%8B%AC%E4%B8%80%E6%97%A0%E4%BA%8C%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,71.1%,简单,176 -2054,2000-2099,2054. 两个最好的不重叠活动,两个最好的不重叠活动,https://leetcode.cn/problems/two-best-non-overlapping-events/,two-best-non-overlapping-events,数组、二分查找、动态规划、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2000-2099/two-best-non-overlapping-events/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2054.%20%E4%B8%A4%E4%B8%AA%E6%9C%80%E5%A5%BD%E7%9A%84%E4%B8%8D%E9%87%8D%E5%8F%A0%E6%B4%BB%E5%8A%A8.md,38.2%,中等,91 -2055,2000-2099,2055. 蜡烛之间的盘子,蜡烛之间的盘子,https://leetcode.cn/problems/plates-between-candles/,plates-between-candles,数组、字符串、二分查找、前缀和,https://algo.itcharge.cn/Solutions/2000-2099/plates-between-candles/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2055.%20%E8%9C%A1%E7%83%9B%E4%B9%8B%E9%97%B4%E7%9A%84%E7%9B%98%E5%AD%90.md,43.4%,中等,438 -2056,2000-2099,2056. 棋盘上有效移动组合的数目,棋盘上有效移动组合的数目,https://leetcode.cn/problems/number-of-valid-move-combinations-on-chessboard/,number-of-valid-move-combinations-on-chessboard,数组、字符串、回溯、模拟,https://algo.itcharge.cn/Solutions/2000-2099/number-of-valid-move-combinations-on-chessboard/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2056.%20%E6%A3%8B%E7%9B%98%E4%B8%8A%E6%9C%89%E6%95%88%E7%A7%BB%E5%8A%A8%E7%BB%84%E5%90%88%E7%9A%84%E6%95%B0%E7%9B%AE.md,58.6%,困难,22 -2057,2000-2099,2057. 值相等的最小索引,值相等的最小索引,https://leetcode.cn/problems/smallest-index-with-equal-value/,smallest-index-with-equal-value,数组,https://algo.itcharge.cn/Solutions/2000-2099/smallest-index-with-equal-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2057.%20%E5%80%BC%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%80%E5%B0%8F%E7%B4%A2%E5%BC%95.md,75.4%,简单,122 -2058,2000-2099,2058. 找出临界点之间的最小和最大距离,找出临界点之间的最小和最大距离,https://leetcode.cn/problems/find-the-minimum-and-maximum-number-of-nodes-between-critical-points/,find-the-minimum-and-maximum-number-of-nodes-between-critical-points,链表,https://algo.itcharge.cn/Solutions/2000-2099/find-the-minimum-and-maximum-number-of-nodes-between-critical-points/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2058.%20%E6%89%BE%E5%87%BA%E4%B8%B4%E7%95%8C%E7%82%B9%E4%B9%8B%E9%97%B4%E7%9A%84%E6%9C%80%E5%B0%8F%E5%92%8C%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md,56.4%,中等,123 -2059,2000-2099,2059. 转化数字的最小运算数,转化数字的最小运算数,https://leetcode.cn/problems/minimum-operations-to-convert-number/,minimum-operations-to-convert-number,广度优先搜索、数组,https://algo.itcharge.cn/Solutions/2000-2099/minimum-operations-to-convert-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2059.%20%E8%BD%AC%E5%8C%96%E6%95%B0%E5%AD%97%E7%9A%84%E6%9C%80%E5%B0%8F%E8%BF%90%E7%AE%97%E6%95%B0.md,48.1%,中等,123 -2060,2000-2099,2060. 同源字符串检测,同源字符串检测,https://leetcode.cn/problems/check-if-an-original-string-exists-given-two-encoded-strings/,check-if-an-original-string-exists-given-two-encoded-strings,字符串、动态规划,https://algo.itcharge.cn/Solutions/2000-2099/check-if-an-original-string-exists-given-two-encoded-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2060.%20%E5%90%8C%E6%BA%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%A3%80%E6%B5%8B.md,40.3%,困难,27 -2061,2000-2099,2061. 扫地机器人清扫过的空间个数,扫地机器人清扫过的空间个数,https://leetcode.cn/problems/number-of-spaces-cleaning-robot-cleaned/,number-of-spaces-cleaning-robot-cleaned,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/2000-2099/number-of-spaces-cleaning-robot-cleaned/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2061.%20%E6%89%AB%E5%9C%B0%E6%9C%BA%E5%99%A8%E4%BA%BA%E6%B8%85%E6%89%AB%E8%BF%87%E7%9A%84%E7%A9%BA%E9%97%B4%E4%B8%AA%E6%95%B0.md,50.2%,中等,26 -2062,2000-2099,2062. 统计字符串中的元音子字符串,统计字符串中的元音子字符串,https://leetcode.cn/problems/count-vowel-substrings-of-a-string/,count-vowel-substrings-of-a-string,哈希表、字符串,https://algo.itcharge.cn/Solutions/2000-2099/count-vowel-substrings-of-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2062.%20%E7%BB%9F%E8%AE%A1%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%85%83%E9%9F%B3%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,62.8%,简单,157 -2063,2000-2099,2063. 所有子字符串中的元音,所有子字符串中的元音,https://leetcode.cn/problems/vowels-of-all-substrings/,vowels-of-all-substrings,数学、字符串、动态规划、组合数学,https://algo.itcharge.cn/Solutions/2000-2099/vowels-of-all-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2063.%20%E6%89%80%E6%9C%89%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%85%83%E9%9F%B3.md,51.6%,中等,137 -2064,2000-2099,2064. 分配给商店的最多商品的最小值,分配给商店的最多商品的最小值,https://leetcode.cn/problems/minimized-maximum-of-products-distributed-to-any-store/,minimized-maximum-of-products-distributed-to-any-store,数组、二分查找,https://algo.itcharge.cn/Solutions/2000-2099/minimized-maximum-of-products-distributed-to-any-store/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2064.%20%E5%88%86%E9%85%8D%E7%BB%99%E5%95%86%E5%BA%97%E7%9A%84%E6%9C%80%E5%A4%9A%E5%95%86%E5%93%81%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md,45.0%,中等,106 -2065,2000-2099,2065. 最大化一张图中的路径价值,最大化一张图中的路径价值,https://leetcode.cn/problems/maximum-path-quality-of-a-graph/,maximum-path-quality-of-a-graph,图、数组、回溯,https://algo.itcharge.cn/Solutions/2000-2099/maximum-path-quality-of-a-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2065.%20%E6%9C%80%E5%A4%A7%E5%8C%96%E4%B8%80%E5%BC%A0%E5%9B%BE%E4%B8%AD%E7%9A%84%E8%B7%AF%E5%BE%84%E4%BB%B7%E5%80%BC.md,54.2%,困难,68 -2066,2000-2099,2066. 账户余额,账户余额,https://leetcode.cn/problems/account-balance/,account-balance,数据库,https://algo.itcharge.cn/Solutions/2000-2099/account-balance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2066.%20%E8%B4%A6%E6%88%B7%E4%BD%99%E9%A2%9D.md,78.7%,中等,28 -2067,2000-2099,2067. 等计数子串的数量,等计数子串的数量,https://leetcode.cn/problems/number-of-equal-count-substrings/,number-of-equal-count-substrings,字符串、计数、前缀和,https://algo.itcharge.cn/Solutions/2000-2099/number-of-equal-count-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2067.%20%E7%AD%89%E8%AE%A1%E6%95%B0%E5%AD%90%E4%B8%B2%E7%9A%84%E6%95%B0%E9%87%8F.md,54.5%,中等,12 -2068,2000-2099,2068. 检查两个字符串是否几乎相等,检查两个字符串是否几乎相等,https://leetcode.cn/problems/check-whether-two-strings-are-almost-equivalent/,check-whether-two-strings-are-almost-equivalent,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/2000-2099/check-whether-two-strings-are-almost-equivalent/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2068.%20%E6%A3%80%E6%9F%A5%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E5%87%A0%E4%B9%8E%E7%9B%B8%E7%AD%89.md,70.0%,简单,156 -2069,2000-2099,2069. 模拟行走机器人 II,模拟行走机器人 II,https://leetcode.cn/problems/walking-robot-simulation-ii/,walking-robot-simulation-ii,设计、模拟,https://algo.itcharge.cn/Solutions/2000-2099/walking-robot-simulation-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2069.%20%E6%A8%A1%E6%8B%9F%E8%A1%8C%E8%B5%B0%E6%9C%BA%E5%99%A8%E4%BA%BA%20II.md,22.1%,中等,113 -2070,2000-2099,2070. 每一个查询的最大美丽值,每一个查询的最大美丽值,https://leetcode.cn/problems/most-beautiful-item-for-each-query/,most-beautiful-item-for-each-query,数组、二分查找、排序,https://algo.itcharge.cn/Solutions/2000-2099/most-beautiful-item-for-each-query/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2070.%20%E6%AF%8F%E4%B8%80%E4%B8%AA%E6%9F%A5%E8%AF%A2%E7%9A%84%E6%9C%80%E5%A4%A7%E7%BE%8E%E4%B8%BD%E5%80%BC.md,45.1%,中等,117 -2071,2000-2099,2071. 你可以安排的最多任务数目,你可以安排的最多任务数目,https://leetcode.cn/problems/maximum-number-of-tasks-you-can-assign/,maximum-number-of-tasks-you-can-assign,贪心、队列、数组、二分查找、排序、单调队列,https://algo.itcharge.cn/Solutions/2000-2099/maximum-number-of-tasks-you-can-assign/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2071.%20%E4%BD%A0%E5%8F%AF%E4%BB%A5%E5%AE%89%E6%8E%92%E7%9A%84%E6%9C%80%E5%A4%9A%E4%BB%BB%E5%8A%A1%E6%95%B0%E7%9B%AE.md,29.9%,困难,51 -2072,2000-2099,2072. 赢得比赛的大学,赢得比赛的大学,https://leetcode.cn/problems/the-winner-university/,the-winner-university,数据库,https://algo.itcharge.cn/Solutions/2000-2099/the-winner-university/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2072.%20%E8%B5%A2%E5%BE%97%E6%AF%94%E8%B5%9B%E7%9A%84%E5%A4%A7%E5%AD%A6.md,68.9%,简单,31 -2073,2000-2099,2073. 买票需要的时间,买票需要的时间,https://leetcode.cn/problems/time-needed-to-buy-tickets/,time-needed-to-buy-tickets,队列、数组、模拟,https://algo.itcharge.cn/Solutions/2000-2099/time-needed-to-buy-tickets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2073.%20%E4%B9%B0%E7%A5%A8%E9%9C%80%E8%A6%81%E7%9A%84%E6%97%B6%E9%97%B4.md,61.7%,简单,220 -2074,2000-2099,2074. 反转偶数长度组的节点,反转偶数长度组的节点,https://leetcode.cn/problems/reverse-nodes-in-even-length-groups/,reverse-nodes-in-even-length-groups,链表,https://algo.itcharge.cn/Solutions/2000-2099/reverse-nodes-in-even-length-groups/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2074.%20%E5%8F%8D%E8%BD%AC%E5%81%B6%E6%95%B0%E9%95%BF%E5%BA%A6%E7%BB%84%E7%9A%84%E8%8A%82%E7%82%B9.md,45.7%,中等,158 -2075,2000-2099,2075. 解码斜向换位密码,解码斜向换位密码,https://leetcode.cn/problems/decode-the-slanted-ciphertext/,decode-the-slanted-ciphertext,字符串、模拟,https://algo.itcharge.cn/Solutions/2000-2099/decode-the-slanted-ciphertext/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2075.%20%E8%A7%A3%E7%A0%81%E6%96%9C%E5%90%91%E6%8D%A2%E4%BD%8D%E5%AF%86%E7%A0%81.md,46.9%,中等,86 -2076,2000-2099,2076. 处理含限制条件的好友请求,处理含限制条件的好友请求,https://leetcode.cn/problems/process-restricted-friend-requests/,process-restricted-friend-requests,并查集、图,https://algo.itcharge.cn/Solutions/2000-2099/process-restricted-friend-requests/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2076.%20%E5%A4%84%E7%90%86%E5%90%AB%E9%99%90%E5%88%B6%E6%9D%A1%E4%BB%B6%E7%9A%84%E5%A5%BD%E5%8F%8B%E8%AF%B7%E6%B1%82.md,51.0%,困难,89 -2077,2000-2099,2077. 殊途同归,殊途同归,https://leetcode.cn/problems/paths-in-maze-that-lead-to-same-room/,paths-in-maze-that-lead-to-same-room,图,https://algo.itcharge.cn/Solutions/2000-2099/paths-in-maze-that-lead-to-same-room/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2077.%20%E6%AE%8A%E9%80%94%E5%90%8C%E5%BD%92.md,62.9%,中等,9 -2078,2000-2099,2078. 两栋颜色不同且距离最远的房子,两栋颜色不同且距离最远的房子,https://leetcode.cn/problems/two-furthest-houses-with-different-colors/,two-furthest-houses-with-different-colors,贪心、数组,https://algo.itcharge.cn/Solutions/2000-2099/two-furthest-houses-with-different-colors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2078.%20%E4%B8%A4%E6%A0%8B%E9%A2%9C%E8%89%B2%E4%B8%8D%E5%90%8C%E4%B8%94%E8%B7%9D%E7%A6%BB%E6%9C%80%E8%BF%9C%E7%9A%84%E6%88%BF%E5%AD%90.md,72.3%,简单,208 -2079,2000-2099,2079. 给植物浇水,给植物浇水,https://leetcode.cn/problems/watering-plants/,watering-plants,数组,https://algo.itcharge.cn/Solutions/2000-2099/watering-plants/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2079.%20%E7%BB%99%E6%A4%8D%E7%89%A9%E6%B5%87%E6%B0%B4.md,77.7%,中等,161 -2080,2000-2099,2080. 区间内查询数字的频率,区间内查询数字的频率,https://leetcode.cn/problems/range-frequency-queries/,range-frequency-queries,设计、线段树、数组、哈希表、二分查找,https://algo.itcharge.cn/Solutions/2000-2099/range-frequency-queries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2080.%20%E5%8C%BA%E9%97%B4%E5%86%85%E6%9F%A5%E8%AF%A2%E6%95%B0%E5%AD%97%E7%9A%84%E9%A2%91%E7%8E%87.md,31.4%,中等,179 -2081,2000-2099,2081. k 镜像数字的和,k 镜像数字的和,https://leetcode.cn/problems/sum-of-k-mirror-numbers/,sum-of-k-mirror-numbers,数学、枚举,https://algo.itcharge.cn/Solutions/2000-2099/sum-of-k-mirror-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2081.%20k%20%E9%95%9C%E5%83%8F%E6%95%B0%E5%AD%97%E7%9A%84%E5%92%8C.md,43.5%,困难,84 -2082,2000-2099,2082. 富有客户的数量,富有客户的数量,https://leetcode.cn/problems/the-number-of-rich-customers/,the-number-of-rich-customers,数据库,https://algo.itcharge.cn/Solutions/2000-2099/the-number-of-rich-customers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2082.%20%E5%AF%8C%E6%9C%89%E5%AE%A2%E6%88%B7%E7%9A%84%E6%95%B0%E9%87%8F.md,74.1%,简单,25 -2083,2000-2099,2083. 求以相同字母开头和结尾的子串总数,求以相同字母开头和结尾的子串总数,https://leetcode.cn/problems/substrings-that-begin-and-end-with-the-same-letter/,substrings-that-begin-and-end-with-the-same-letter,哈希表、数学、字符串、计数、前缀和,https://algo.itcharge.cn/Solutions/2000-2099/substrings-that-begin-and-end-with-the-same-letter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2083.%20%E6%B1%82%E4%BB%A5%E7%9B%B8%E5%90%8C%E5%AD%97%E6%AF%8D%E5%BC%80%E5%A4%B4%E5%92%8C%E7%BB%93%E5%B0%BE%E7%9A%84%E5%AD%90%E4%B8%B2%E6%80%BB%E6%95%B0.md,60.9%,中等,16 -2084,2000-2099,2084. 为订单类型为 0 的客户删除类型为 1 的订单,为订单类型为 0 的客户删除类型为 1 的订单,https://leetcode.cn/problems/drop-type-1-orders-for-customers-with-type-0-orders/,drop-type-1-orders-for-customers-with-type-0-orders,数据库,https://algo.itcharge.cn/Solutions/2000-2099/drop-type-1-orders-for-customers-with-type-0-orders/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2084.%20%E4%B8%BA%E8%AE%A2%E5%8D%95%E7%B1%BB%E5%9E%8B%E4%B8%BA%200%20%E7%9A%84%E5%AE%A2%E6%88%B7%E5%88%A0%E9%99%A4%E7%B1%BB%E5%9E%8B%E4%B8%BA%201%20%E7%9A%84%E8%AE%A2%E5%8D%95.md,82.4%,中等,40 -2085,2000-2099,2085. 统计出现过一次的公共字符串,统计出现过一次的公共字符串,https://leetcode.cn/problems/count-common-words-with-one-occurrence/,count-common-words-with-one-occurrence,数组、哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/2000-2099/count-common-words-with-one-occurrence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2085.%20%E7%BB%9F%E8%AE%A1%E5%87%BA%E7%8E%B0%E8%BF%87%E4%B8%80%E6%AC%A1%E7%9A%84%E5%85%AC%E5%85%B1%E5%AD%97%E7%AC%A6%E4%B8%B2.md,71.4%,简单,143 -2086,2000-2099,2086. 从房屋收集雨水需要的最少水桶数,从房屋收集雨水需要的最少水桶数,https://leetcode.cn/problems/minimum-number-of-food-buckets-to-feed-the-hamsters/,minimum-number-of-food-buckets-to-feed-the-hamsters,贪心、字符串、动态规划,https://algo.itcharge.cn/Solutions/2000-2099/minimum-number-of-food-buckets-to-feed-the-hamsters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2086.%20%E4%BB%8E%E6%88%BF%E5%B1%8B%E6%94%B6%E9%9B%86%E9%9B%A8%E6%B0%B4%E9%9C%80%E8%A6%81%E7%9A%84%E6%9C%80%E5%B0%91%E6%B0%B4%E6%A1%B6%E6%95%B0.md,46.7%,中等,110 -2087,2000-2099,2087. 网格图中机器人回家的最小代价,网格图中机器人回家的最小代价,https://leetcode.cn/problems/minimum-cost-homecoming-of-a-robot-in-a-grid/,minimum-cost-homecoming-of-a-robot-in-a-grid,贪心、数组、矩阵,https://algo.itcharge.cn/Solutions/2000-2099/minimum-cost-homecoming-of-a-robot-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2087.%20%E7%BD%91%E6%A0%BC%E5%9B%BE%E4%B8%AD%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%9B%9E%E5%AE%B6%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BB%A3%E4%BB%B7.md,50.1%,中等,88 -2088,2000-2099,2088. 统计农场中肥沃金字塔的数目,统计农场中肥沃金字塔的数目,https://leetcode.cn/problems/count-fertile-pyramids-in-a-land/,count-fertile-pyramids-in-a-land,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/2000-2099/count-fertile-pyramids-in-a-land/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2088.%20%E7%BB%9F%E8%AE%A1%E5%86%9C%E5%9C%BA%E4%B8%AD%E8%82%A5%E6%B2%83%E9%87%91%E5%AD%97%E5%A1%94%E7%9A%84%E6%95%B0%E7%9B%AE.md,63.4%,困难,57 -2089,2000-2099,2089. 找出数组排序后的目标下标,找出数组排序后的目标下标,https://leetcode.cn/problems/find-target-indices-after-sorting-array/,find-target-indices-after-sorting-array,数组、二分查找、排序,https://algo.itcharge.cn/Solutions/2000-2099/find-target-indices-after-sorting-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2089.%20%E6%89%BE%E5%87%BA%E6%95%B0%E7%BB%84%E6%8E%92%E5%BA%8F%E5%90%8E%E7%9A%84%E7%9B%AE%E6%A0%87%E4%B8%8B%E6%A0%87.md,78.6%,简单,241 -2090,2000-2099,2090. 半径为 k 的子数组平均值,半径为 k 的子数组平均值,https://leetcode.cn/problems/k-radius-subarray-averages/,k-radius-subarray-averages,数组、滑动窗口,https://algo.itcharge.cn/Solutions/2000-2099/k-radius-subarray-averages/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2090.%20%E5%8D%8A%E5%BE%84%E4%B8%BA%20k%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E5%B9%B3%E5%9D%87%E5%80%BC.md,37.5%,中等,120 -2091,2000-2099,2091. 从数组中移除最大值和最小值,从数组中移除最大值和最小值,https://leetcode.cn/problems/removing-minimum-and-maximum-from-array/,removing-minimum-and-maximum-from-array,贪心、数组,https://algo.itcharge.cn/Solutions/2000-2099/removing-minimum-and-maximum-from-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2091.%20%E4%BB%8E%E6%95%B0%E7%BB%84%E4%B8%AD%E7%A7%BB%E9%99%A4%E6%9C%80%E5%A4%A7%E5%80%BC%E5%92%8C%E6%9C%80%E5%B0%8F%E5%80%BC.md,56.6%,中等,150 -2092,2000-2099,2092. 找出知晓秘密的所有专家,找出知晓秘密的所有专家,https://leetcode.cn/problems/find-all-people-with-secret/,find-all-people-with-secret,深度优先搜索、广度优先搜索、并查集、图、排序,https://algo.itcharge.cn/Solutions/2000-2099/find-all-people-with-secret/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2092.%20%E6%89%BE%E5%87%BA%E7%9F%A5%E6%99%93%E7%A7%98%E5%AF%86%E7%9A%84%E6%89%80%E6%9C%89%E4%B8%93%E5%AE%B6.md,29.1%,困难,131 -2093,2000-2099,2093. 前往目标城市的最小费用,前往目标城市的最小费用,https://leetcode.cn/problems/minimum-cost-to-reach-city-with-discounts/,minimum-cost-to-reach-city-with-discounts,图、最短路,https://algo.itcharge.cn/Solutions/2000-2099/minimum-cost-to-reach-city-with-discounts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2093.%20%E5%89%8D%E5%BE%80%E7%9B%AE%E6%A0%87%E5%9F%8E%E5%B8%82%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B4%B9%E7%94%A8.md,58.9%,中等,20 -2094,2000-2099,2094. 找出 3 位偶数,找出 3 位偶数,https://leetcode.cn/problems/finding-3-digit-even-numbers/,finding-3-digit-even-numbers,数组、哈希表、枚举、排序,https://algo.itcharge.cn/Solutions/2000-2099/finding-3-digit-even-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2094.%20%E6%89%BE%E5%87%BA%203%20%E4%BD%8D%E5%81%B6%E6%95%B0.md,55.8%,简单,188 -2095,2000-2099,2095. 删除链表的中间节点,删除链表的中间节点,https://leetcode.cn/problems/delete-the-middle-node-of-a-linked-list/,delete-the-middle-node-of-a-linked-list,链表、双指针,https://algo.itcharge.cn/Solutions/2000-2099/delete-the-middle-node-of-a-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2095.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E4%B8%AD%E9%97%B4%E8%8A%82%E7%82%B9.md,57.5%,中等,222 -2096,2000-2099,2096. 从二叉树一个节点到另一个节点每一步的方向,从二叉树一个节点到另一个节点每一步的方向,https://leetcode.cn/problems/step-by-step-directions-from-a-binary-tree-node-to-another/,step-by-step-directions-from-a-binary-tree-node-to-another,树、深度优先搜索、字符串、二叉树,https://algo.itcharge.cn/Solutions/2000-2099/step-by-step-directions-from-a-binary-tree-node-to-another/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2096.%20%E4%BB%8E%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%80%E4%B8%AA%E8%8A%82%E7%82%B9%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E8%8A%82%E7%82%B9%E6%AF%8F%E4%B8%80%E6%AD%A5%E7%9A%84%E6%96%B9%E5%90%91.md,44.6%,中等,210 -2097,2000-2099,2097. 合法重新排列数对,合法重新排列数对,https://leetcode.cn/problems/valid-arrangement-of-pairs/,valid-arrangement-of-pairs,深度优先搜索、图、欧拉回路,https://algo.itcharge.cn/Solutions/2000-2099/valid-arrangement-of-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2097.%20%E5%90%88%E6%B3%95%E9%87%8D%E6%96%B0%E6%8E%92%E5%88%97%E6%95%B0%E5%AF%B9.md,38.0%,困难,56 -2098,2000-2099,2098. 长度为 K 的最大偶数和子序列,长度为 K 的最大偶数和子序列,https://leetcode.cn/problems/subsequence-of-size-k-with-the-largest-even-sum/,subsequence-of-size-k-with-the-largest-even-sum,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2000-2099/subsequence-of-size-k-with-the-largest-even-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2098.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E5%A4%A7%E5%81%B6%E6%95%B0%E5%92%8C%E5%AD%90%E5%BA%8F%E5%88%97.md,35.0%,中等,11 -2099,2000-2099,2099. 找到和最大的长度为 K 的子序列,找到和最大的长度为 K 的子序列,https://leetcode.cn/problems/find-subsequence-of-length-k-with-the-largest-sum/,find-subsequence-of-length-k-with-the-largest-sum,数组、哈希表、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2000-2099/find-subsequence-of-length-k-with-the-largest-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2099.%20%E6%89%BE%E5%88%B0%E5%92%8C%E6%9C%80%E5%A4%A7%E7%9A%84%E9%95%BF%E5%BA%A6%E4%B8%BA%20K%20%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97.md,48.5%,简单,189 -2100,2100-2199,2100. 适合打劫银行的日子,适合打劫银行的日子,https://leetcode.cn/problems/find-good-days-to-rob-the-bank/,find-good-days-to-rob-the-bank,数组、动态规划、前缀和,https://algo.itcharge.cn/Solutions/2100-2199/find-good-days-to-rob-the-bank/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2100.%20%E9%80%82%E5%90%88%E6%89%93%E5%8A%AB%E9%93%B6%E8%A1%8C%E7%9A%84%E6%97%A5%E5%AD%90.md,48.7%,中等,433 -2101,2100-2199,2101. 引爆最多的炸弹,引爆最多的炸弹,https://leetcode.cn/problems/detonate-the-maximum-bombs/,detonate-the-maximum-bombs,深度优先搜索、广度优先搜索、图、几何、数组、数学,https://algo.itcharge.cn/Solutions/2100-2199/detonate-the-maximum-bombs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2101.%20%E5%BC%95%E7%88%86%E6%9C%80%E5%A4%9A%E7%9A%84%E7%82%B8%E5%BC%B9.md,39.7%,中等,104 -2102,2100-2199,2102. 序列顺序查询,序列顺序查询,https://leetcode.cn/problems/sequentially-ordinal-rank-tracker/,sequentially-ordinal-rank-tracker,设计、数据流、有序集合、堆(优先队列),https://algo.itcharge.cn/Solutions/2100-2199/sequentially-ordinal-rank-tracker/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2102.%20%E5%BA%8F%E5%88%97%E9%A1%BA%E5%BA%8F%E6%9F%A5%E8%AF%A2.md,55.9%,困难,87 -2103,2100-2199,2103. 环和杆,环和杆,https://leetcode.cn/problems/rings-and-rods/,rings-and-rods,哈希表、字符串,https://algo.itcharge.cn/Solutions/2100-2199/rings-and-rods/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2103.%20%E7%8E%AF%E5%92%8C%E6%9D%86.md,79.7%,简单,198 -2104,2100-2199,2104. 子数组范围和,子数组范围和,https://leetcode.cn/problems/sum-of-subarray-ranges/,sum-of-subarray-ranges,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/2100-2199/sum-of-subarray-ranges/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2104.%20%E5%AD%90%E6%95%B0%E7%BB%84%E8%8C%83%E5%9B%B4%E5%92%8C.md,62.9%,中等,403 -2105,2100-2199,2105. 给植物浇水 II,给植物浇水 II,https://leetcode.cn/problems/watering-plants-ii/,watering-plants-ii,数组、双指针、模拟,https://algo.itcharge.cn/Solutions/2100-2199/watering-plants-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2105.%20%E7%BB%99%E6%A4%8D%E7%89%A9%E6%B5%87%E6%B0%B4%20II.md,53.0%,中等,143 -2106,2100-2199,2106. 摘水果,摘水果,https://leetcode.cn/problems/maximum-fruits-harvested-after-at-most-k-steps/,maximum-fruits-harvested-after-at-most-k-steps,数组、二分查找、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/2100-2199/maximum-fruits-harvested-after-at-most-k-steps/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2106.%20%E6%91%98%E6%B0%B4%E6%9E%9C.md,45.1%,困难,202 -2107,2100-2199,2107. 分享 K 个糖果后独特口味的数量,分享 K 个糖果后独特口味的数量,https://leetcode.cn/problems/number-of-unique-flavors-after-sharing-k-candies/,number-of-unique-flavors-after-sharing-k-candies,数组、哈希表、滑动窗口,https://algo.itcharge.cn/Solutions/2100-2199/number-of-unique-flavors-after-sharing-k-candies/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2107.%20%E5%88%86%E4%BA%AB%20K%20%E4%B8%AA%E7%B3%96%E6%9E%9C%E5%90%8E%E7%8B%AC%E7%89%B9%E5%8F%A3%E5%91%B3%E7%9A%84%E6%95%B0%E9%87%8F.md,38.6%,中等,14 -2108,2100-2199,2108. 找出数组中的第一个回文字符串,找出数组中的第一个回文字符串,https://leetcode.cn/problems/find-first-palindromic-string-in-the-array/,find-first-palindromic-string-in-the-array,数组、双指针、字符串,https://algo.itcharge.cn/Solutions/2100-2199/find-first-palindromic-string-in-the-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2108.%20%E6%89%BE%E5%87%BA%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%9B%9E%E6%96%87%E5%AD%97%E7%AC%A6%E4%B8%B2.md,77.5%,简单,210 -2109,2100-2199,2109. 向字符串添加空格,向字符串添加空格,https://leetcode.cn/problems/adding-spaces-to-a-string/,adding-spaces-to-a-string,数组、字符串、模拟,https://algo.itcharge.cn/Solutions/2100-2199/adding-spaces-to-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2109.%20%E5%90%91%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%B7%BB%E5%8A%A0%E7%A9%BA%E6%A0%BC.md,61.5%,中等,121 -2110,2100-2199,2110. 股票平滑下跌阶段的数目,股票平滑下跌阶段的数目,https://leetcode.cn/problems/number-of-smooth-descent-periods-of-a-stock/,number-of-smooth-descent-periods-of-a-stock,数组、数学、动态规划,https://algo.itcharge.cn/Solutions/2100-2199/number-of-smooth-descent-periods-of-a-stock/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2110.%20%E8%82%A1%E7%A5%A8%E5%B9%B3%E6%BB%91%E4%B8%8B%E8%B7%8C%E9%98%B6%E6%AE%B5%E7%9A%84%E6%95%B0%E7%9B%AE.md,52.8%,中等,163 -2111,2100-2199,2111. 使数组 K 递增的最少操作次数,使数组 K 递增的最少操作次数,https://leetcode.cn/problems/minimum-operations-to-make-the-array-k-increasing/,minimum-operations-to-make-the-array-k-increasing,数组、二分查找,https://algo.itcharge.cn/Solutions/2100-2199/minimum-operations-to-make-the-array-k-increasing/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2111.%20%E4%BD%BF%E6%95%B0%E7%BB%84%20K%20%E9%80%92%E5%A2%9E%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,35.0%,困难,97 -2112,2100-2199,2112. 最繁忙的机场,最繁忙的机场,https://leetcode.cn/problems/the-airport-with-the-most-traffic/,the-airport-with-the-most-traffic,数据库,https://algo.itcharge.cn/Solutions/2100-2199/the-airport-with-the-most-traffic/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2112.%20%E6%9C%80%E7%B9%81%E5%BF%99%E7%9A%84%E6%9C%BA%E5%9C%BA.md,68.3%,中等,22 -2113,2100-2199,2113. 查询删除和添加元素后的数组,查询删除和添加元素后的数组,https://leetcode.cn/problems/elements-in-array-after-removing-and-replacing-elements/,elements-in-array-after-removing-and-replacing-elements,数组,https://algo.itcharge.cn/Solutions/2100-2199/elements-in-array-after-removing-and-replacing-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2113.%20%E6%9F%A5%E8%AF%A2%E5%88%A0%E9%99%A4%E5%92%8C%E6%B7%BB%E5%8A%A0%E5%85%83%E7%B4%A0%E5%90%8E%E7%9A%84%E6%95%B0%E7%BB%84.md,61.6%,中等,13 -2114,2100-2199,2114. 句子中的最多单词数,句子中的最多单词数,https://leetcode.cn/problems/maximum-number-of-words-found-in-sentences/,maximum-number-of-words-found-in-sentences,数组、字符串,https://algo.itcharge.cn/Solutions/2100-2199/maximum-number-of-words-found-in-sentences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2114.%20%E5%8F%A5%E5%AD%90%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%9A%E5%8D%95%E8%AF%8D%E6%95%B0.md,85.0%,简单,249 -2115,2100-2199,2115. 从给定原材料中找到所有可以做出的菜,从给定原材料中找到所有可以做出的菜,https://leetcode.cn/problems/find-all-possible-recipes-from-given-supplies/,find-all-possible-recipes-from-given-supplies,图、拓扑排序、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/2100-2199/find-all-possible-recipes-from-given-supplies/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2115.%20%E4%BB%8E%E7%BB%99%E5%AE%9A%E5%8E%9F%E6%9D%90%E6%96%99%E4%B8%AD%E6%89%BE%E5%88%B0%E6%89%80%E6%9C%89%E5%8F%AF%E4%BB%A5%E5%81%9A%E5%87%BA%E7%9A%84%E8%8F%9C.md,42.4%,中等,120 -2116,2100-2199,2116. 判断一个括号字符串是否有效,判断一个括号字符串是否有效,https://leetcode.cn/problems/check-if-a-parentheses-string-can-be-valid/,check-if-a-parentheses-string-can-be-valid,栈、贪心、字符串,https://algo.itcharge.cn/Solutions/2100-2199/check-if-a-parentheses-string-can-be-valid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2116.%20%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%AA%E6%8B%AC%E5%8F%B7%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E6%9C%89%E6%95%88.md,32.0%,中等,75 -2117,2100-2199,2117. 一个区间内所有数乘积的缩写,一个区间内所有数乘积的缩写,https://leetcode.cn/problems/abbreviating-the-product-of-a-range/,abbreviating-the-product-of-a-range,数学,https://algo.itcharge.cn/Solutions/2100-2199/abbreviating-the-product-of-a-range/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2117.%20%E4%B8%80%E4%B8%AA%E5%8C%BA%E9%97%B4%E5%86%85%E6%89%80%E6%9C%89%E6%95%B0%E4%B9%98%E7%A7%AF%E7%9A%84%E7%BC%A9%E5%86%99.md,30.8%,困难,27 -2118,2100-2199,2118. 建立方程,建立方程,https://leetcode.cn/problems/build-the-equation/,build-the-equation,数据库,https://algo.itcharge.cn/Solutions/2100-2199/build-the-equation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2118.%20%E5%BB%BA%E7%AB%8B%E6%96%B9%E7%A8%8B.md,54.6%,困难,15 -2119,2100-2199,2119. 反转两次的数字,反转两次的数字,https://leetcode.cn/problems/a-number-after-a-double-reversal/,a-number-after-a-double-reversal,数学,https://algo.itcharge.cn/Solutions/2100-2199/a-number-after-a-double-reversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2119.%20%E5%8F%8D%E8%BD%AC%E4%B8%A4%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md,73.7%,简单,194 -2120,2100-2199,2120. 执行所有后缀指令,执行所有后缀指令,https://leetcode.cn/problems/execution-of-all-suffix-instructions-staying-in-a-grid/,execution-of-all-suffix-instructions-staying-in-a-grid,字符串、模拟,https://algo.itcharge.cn/Solutions/2100-2199/execution-of-all-suffix-instructions-staying-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2120.%20%E6%89%A7%E8%A1%8C%E6%89%80%E6%9C%89%E5%90%8E%E7%BC%80%E6%8C%87%E4%BB%A4.md,82.5%,中等,124 -2121,2100-2199,2121. 相同元素的间隔之和,相同元素的间隔之和,https://leetcode.cn/problems/intervals-between-identical-elements/,intervals-between-identical-elements,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/2100-2199/intervals-between-identical-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2121.%20%E7%9B%B8%E5%90%8C%E5%85%83%E7%B4%A0%E7%9A%84%E9%97%B4%E9%9A%94%E4%B9%8B%E5%92%8C.md,38.6%,中等,163 -2122,2100-2199,2122. 还原原数组,还原原数组,https://leetcode.cn/problems/recover-the-original-array/,recover-the-original-array,数组、哈希表、枚举、排序,https://algo.itcharge.cn/Solutions/2100-2199/recover-the-original-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2122.%20%E8%BF%98%E5%8E%9F%E5%8E%9F%E6%95%B0%E7%BB%84.md,42.0%,困难,69 -2123,2100-2199,2123. 使矩阵中的 1 互不相邻的最小操作数,使矩阵中的 1 互不相邻的最小操作数,https://leetcode.cn/problems/minimum-operations-to-remove-adjacent-ones-in-matrix/,minimum-operations-to-remove-adjacent-ones-in-matrix,图、数组、矩阵,https://algo.itcharge.cn/Solutions/2100-2199/minimum-operations-to-remove-adjacent-ones-in-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2123.%20%E4%BD%BF%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%201%20%E4%BA%92%E4%B8%8D%E7%9B%B8%E9%82%BB%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md,53.0%,困难,6 -2124,2100-2199,2124. 检查是否所有 A 都在 B 之前,检查是否所有 A 都在 B 之前,https://leetcode.cn/problems/check-if-all-as-appears-before-all-bs/,check-if-all-as-appears-before-all-bs,字符串,https://algo.itcharge.cn/Solutions/2100-2199/check-if-all-as-appears-before-all-bs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2124.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%89%80%E6%9C%89%20A%20%E9%83%BD%E5%9C%A8%20B%20%E4%B9%8B%E5%89%8D.md,69.4%,简单,213 -2125,2100-2199,2125. 银行中的激光束数量,银行中的激光束数量,https://leetcode.cn/problems/number-of-laser-beams-in-a-bank/,number-of-laser-beams-in-a-bank,数组、数学、字符串、矩阵,https://algo.itcharge.cn/Solutions/2100-2199/number-of-laser-beams-in-a-bank/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2125.%20%E9%93%B6%E8%A1%8C%E4%B8%AD%E7%9A%84%E6%BF%80%E5%85%89%E6%9D%9F%E6%95%B0%E9%87%8F.md,83.1%,中等,128 -2126,2100-2199,2126. 摧毁小行星,摧毁小行星,https://leetcode.cn/problems/destroying-asteroids/,destroying-asteroids,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2100-2199/destroying-asteroids/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2126.%20%E6%91%A7%E6%AF%81%E5%B0%8F%E8%A1%8C%E6%98%9F.md,48.8%,中等,113 -2127,2100-2199,2127. 参加会议的最多员工数,参加会议的最多员工数,https://leetcode.cn/problems/maximum-employees-to-be-invited-to-a-meeting/,maximum-employees-to-be-invited-to-a-meeting,深度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/2100-2199/maximum-employees-to-be-invited-to-a-meeting/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2127.%20%E5%8F%82%E5%8A%A0%E4%BC%9A%E8%AE%AE%E7%9A%84%E6%9C%80%E5%A4%9A%E5%91%98%E5%B7%A5%E6%95%B0.md,34.1%,困难,68 -2128,2100-2199,2128. 通过翻转行或列来去除所有的 1,通过翻转行或列来去除所有的 1,https://leetcode.cn/problems/remove-all-ones-with-row-and-column-flips/,remove-all-ones-with-row-and-column-flips,位运算、数组、数学、矩阵,https://algo.itcharge.cn/Solutions/2100-2199/remove-all-ones-with-row-and-column-flips/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2128.%20%E9%80%9A%E8%BF%87%E7%BF%BB%E8%BD%AC%E8%A1%8C%E6%88%96%E5%88%97%E6%9D%A5%E5%8E%BB%E9%99%A4%E6%89%80%E6%9C%89%E7%9A%84%201.md,75.5%,中等,15 -2129,2100-2199,2129. 将标题首字母大写,将标题首字母大写,https://leetcode.cn/problems/capitalize-the-title/,capitalize-the-title,字符串,https://algo.itcharge.cn/Solutions/2100-2199/capitalize-the-title/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2129.%20%E5%B0%86%E6%A0%87%E9%A2%98%E9%A6%96%E5%AD%97%E6%AF%8D%E5%A4%A7%E5%86%99.md,60.7%,简单,157 -2130,2100-2199,2130. 链表最大孪生和,链表最大孪生和,https://leetcode.cn/problems/maximum-twin-sum-of-a-linked-list/,maximum-twin-sum-of-a-linked-list,栈、链表、双指针,https://algo.itcharge.cn/Solutions/2100-2199/maximum-twin-sum-of-a-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2130.%20%E9%93%BE%E8%A1%A8%E6%9C%80%E5%A4%A7%E5%AD%AA%E7%94%9F%E5%92%8C.md,80.4%,中等,177 -2131,2100-2199,2131. 连接两字母单词得到的最长回文串,连接两字母单词得到的最长回文串,https://leetcode.cn/problems/longest-palindrome-by-concatenating-two-letter-words/,longest-palindrome-by-concatenating-two-letter-words,贪心、数组、哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/2100-2199/longest-palindrome-by-concatenating-two-letter-words/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2131.%20%E8%BF%9E%E6%8E%A5%E4%B8%A4%E5%AD%97%E6%AF%8D%E5%8D%95%E8%AF%8D%E5%BE%97%E5%88%B0%E7%9A%84%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E4%B8%B2.md,42.9%,中等,152 -2132,2100-2199,2132. 用邮票贴满网格图,用邮票贴满网格图,https://leetcode.cn/problems/stamping-the-grid/,stamping-the-grid,贪心、数组、矩阵、前缀和,https://algo.itcharge.cn/Solutions/2100-2199/stamping-the-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2132.%20%E7%94%A8%E9%82%AE%E7%A5%A8%E8%B4%B4%E6%BB%A1%E7%BD%91%E6%A0%BC%E5%9B%BE.md,30.7%,困难,67 -2133,2100-2199,2133. 检查是否每一行每一列都包含全部整数,检查是否每一行每一列都包含全部整数,https://leetcode.cn/problems/check-if-every-row-and-column-contains-all-numbers/,check-if-every-row-and-column-contains-all-numbers,数组、哈希表、矩阵,https://algo.itcharge.cn/Solutions/2100-2199/check-if-every-row-and-column-contains-all-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2133.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%AF%8F%E4%B8%80%E8%A1%8C%E6%AF%8F%E4%B8%80%E5%88%97%E9%83%BD%E5%8C%85%E5%90%AB%E5%85%A8%E9%83%A8%E6%95%B4%E6%95%B0.md,55.7%,简单,160 -2134,2100-2199,2134. 最少交换次数来组合所有的 1 II,最少交换次数来组合所有的 1 II,https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together-ii/,minimum-swaps-to-group-all-1s-together-ii,数组、滑动窗口,https://algo.itcharge.cn/Solutions/2100-2199/minimum-swaps-to-group-all-1s-together-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2134.%20%E6%9C%80%E5%B0%91%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0%E6%9D%A5%E7%BB%84%E5%90%88%E6%89%80%E6%9C%89%E7%9A%84%201%20II.md,48.8%,中等,173 -2135,2100-2199,2135. 统计追加字母可以获得的单词数,统计追加字母可以获得的单词数,https://leetcode.cn/problems/count-words-obtained-after-adding-a-letter/,count-words-obtained-after-adding-a-letter,位运算、数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/2100-2199/count-words-obtained-after-adding-a-letter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2135.%20%E7%BB%9F%E8%AE%A1%E8%BF%BD%E5%8A%A0%E5%AD%97%E6%AF%8D%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%BE%97%E7%9A%84%E5%8D%95%E8%AF%8D%E6%95%B0.md,36.1%,中等,106 -2136,2100-2199,2136. 全部开花的最早一天,全部开花的最早一天,https://leetcode.cn/problems/earliest-possible-day-of-full-bloom/,earliest-possible-day-of-full-bloom,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2100-2199/earliest-possible-day-of-full-bloom/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2136.%20%E5%85%A8%E9%83%A8%E5%BC%80%E8%8A%B1%E7%9A%84%E6%9C%80%E6%97%A9%E4%B8%80%E5%A4%A9.md,66.0%,困难,76 -2137,2100-2199,2137. 通过倒水操作让所有的水桶所含水量相等,通过倒水操作让所有的水桶所含水量相等,https://leetcode.cn/problems/pour-water-between-buckets-to-make-water-levels-equal/,pour-water-between-buckets-to-make-water-levels-equal,数组、二分查找,https://algo.itcharge.cn/Solutions/2100-2199/pour-water-between-buckets-to-make-water-levels-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2137.%20%E9%80%9A%E8%BF%87%E5%80%92%E6%B0%B4%E6%93%8D%E4%BD%9C%E8%AE%A9%E6%89%80%E6%9C%89%E7%9A%84%E6%B0%B4%E6%A1%B6%E6%89%80%E5%90%AB%E6%B0%B4%E9%87%8F%E7%9B%B8%E7%AD%89.md,64.5%,中等,13 -2138,2100-2199,2138. 将字符串拆分为若干长度为 k 的组,将字符串拆分为若干长度为 k 的组,https://leetcode.cn/problems/divide-a-string-into-groups-of-size-k/,divide-a-string-into-groups-of-size-k,字符串、模拟,https://algo.itcharge.cn/Solutions/2100-2199/divide-a-string-into-groups-of-size-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2138.%20%E5%B0%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%8B%86%E5%88%86%E4%B8%BA%E8%8B%A5%E5%B9%B2%E9%95%BF%E5%BA%A6%E4%B8%BA%20k%20%E7%9A%84%E7%BB%84.md,66.4%,简单,157 -2139,2100-2199,2139. 得到目标值的最少行动次数,得到目标值的最少行动次数,https://leetcode.cn/problems/minimum-moves-to-reach-target-score/,minimum-moves-to-reach-target-score,贪心、数学,https://algo.itcharge.cn/Solutions/2100-2199/minimum-moves-to-reach-target-score/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2139.%20%E5%BE%97%E5%88%B0%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E6%9C%80%E5%B0%91%E8%A1%8C%E5%8A%A8%E6%AC%A1%E6%95%B0.md,51.5%,中等,165 -2140,2100-2199,2140. 解决智力问题,解决智力问题,https://leetcode.cn/problems/solving-questions-with-brainpower/,solving-questions-with-brainpower,数组、动态规划,https://algo.itcharge.cn/Solutions/2100-2199/solving-questions-with-brainpower/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2140.%20%E8%A7%A3%E5%86%B3%E6%99%BA%E5%8A%9B%E9%97%AE%E9%A2%98.md,44.0%,中等,166 -2141,2100-2199,2141. 同时运行 N 台电脑的最长时间,同时运行 N 台电脑的最长时间,https://leetcode.cn/problems/maximum-running-time-of-n-computers/,maximum-running-time-of-n-computers,贪心、数组、二分查找、排序,https://algo.itcharge.cn/Solutions/2100-2199/maximum-running-time-of-n-computers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2141.%20%E5%90%8C%E6%97%B6%E8%BF%90%E8%A1%8C%20N%20%E5%8F%B0%E7%94%B5%E8%84%91%E7%9A%84%E6%9C%80%E9%95%BF%E6%97%B6%E9%97%B4.md,40.5%,困难,84 -2142,2100-2199,2142. 每辆车的乘客人数 I,每辆车的乘客人数 I,https://leetcode.cn/problems/the-number-of-passengers-in-each-bus-i/,the-number-of-passengers-in-each-bus-i,数据库,https://algo.itcharge.cn/Solutions/2100-2199/the-number-of-passengers-in-each-bus-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2142.%20%E6%AF%8F%E8%BE%86%E8%BD%A6%E7%9A%84%E4%B9%98%E5%AE%A2%E4%BA%BA%E6%95%B0%20I.md,46.6%,中等,21 -2143,2100-2199,2143. 在两个数组的区间中选取数字,在两个数组的区间中选取数字,https://leetcode.cn/problems/choose-numbers-from-two-arrays-in-range/,choose-numbers-from-two-arrays-in-range,数组、动态规划,https://algo.itcharge.cn/Solutions/2100-2199/choose-numbers-from-two-arrays-in-range/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2143.%20%E5%9C%A8%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E5%8C%BA%E9%97%B4%E4%B8%AD%E9%80%89%E5%8F%96%E6%95%B0%E5%AD%97.md,57.1%,困难,11 -2144,2100-2199,2144. 打折购买糖果的最小开销,打折购买糖果的最小开销,https://leetcode.cn/problems/minimum-cost-of-buying-candies-with-discount/,minimum-cost-of-buying-candies-with-discount,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2100-2199/minimum-cost-of-buying-candies-with-discount/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2144.%20%E6%89%93%E6%8A%98%E8%B4%AD%E4%B9%B0%E7%B3%96%E6%9E%9C%E7%9A%84%E6%9C%80%E5%B0%8F%E5%BC%80%E9%94%80.md,66.9%,简单,174 -2145,2100-2199,2145. 统计隐藏数组数目,统计隐藏数组数目,https://leetcode.cn/problems/count-the-hidden-sequences/,count-the-hidden-sequences,数组、前缀和,https://algo.itcharge.cn/Solutions/2100-2199/count-the-hidden-sequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2145.%20%E7%BB%9F%E8%AE%A1%E9%9A%90%E8%97%8F%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md,35.8%,中等,117 -2146,2100-2199,2146. 价格范围内最高排名的 K 样物品,价格范围内最高排名的 K 样物品,https://leetcode.cn/problems/k-highest-ranked-items-within-a-price-range/,k-highest-ranked-items-within-a-price-range,广度优先搜索、数组、矩阵、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2100-2199/k-highest-ranked-items-within-a-price-range/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2146.%20%E4%BB%B7%E6%A0%BC%E8%8C%83%E5%9B%B4%E5%86%85%E6%9C%80%E9%AB%98%E6%8E%92%E5%90%8D%E7%9A%84%20K%20%E6%A0%B7%E7%89%A9%E5%93%81.md,40.1%,中等,98 -2147,2100-2199,2147. 分隔长廊的方案数,分隔长廊的方案数,https://leetcode.cn/problems/number-of-ways-to-divide-a-long-corridor/,number-of-ways-to-divide-a-long-corridor,数学、字符串、动态规划,https://algo.itcharge.cn/Solutions/2100-2199/number-of-ways-to-divide-a-long-corridor/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2147.%20%E5%88%86%E9%9A%94%E9%95%BF%E5%BB%8A%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,41.5%,困难,89 -2148,2100-2199,2148. 元素计数,元素计数,https://leetcode.cn/problems/count-elements-with-strictly-smaller-and-greater-elements/,count-elements-with-strictly-smaller-and-greater-elements,数组、排序,https://algo.itcharge.cn/Solutions/2100-2199/count-elements-with-strictly-smaller-and-greater-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2148.%20%E5%85%83%E7%B4%A0%E8%AE%A1%E6%95%B0.md,57.8%,简单,166 -2149,2100-2199,2149. 按符号重排数组,按符号重排数组,https://leetcode.cn/problems/rearrange-array-elements-by-sign/,rearrange-array-elements-by-sign,数组、双指针、模拟,https://algo.itcharge.cn/Solutions/2100-2199/rearrange-array-elements-by-sign/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2149.%20%E6%8C%89%E7%AC%A6%E5%8F%B7%E9%87%8D%E6%8E%92%E6%95%B0%E7%BB%84.md,79.7%,中等,130 -2150,2100-2199,2150. 找出数组中的所有孤独数字,找出数组中的所有孤独数字,https://leetcode.cn/problems/find-all-lonely-numbers-in-the-array/,find-all-lonely-numbers-in-the-array,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2100-2199/find-all-lonely-numbers-in-the-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2150.%20%E6%89%BE%E5%87%BA%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E5%AD%A4%E7%8B%AC%E6%95%B0%E5%AD%97.md,59.6%,中等,113 -2151,2100-2199,2151. 基于陈述统计最多好人数,基于陈述统计最多好人数,https://leetcode.cn/problems/maximum-good-people-based-on-statements/,maximum-good-people-based-on-statements,位运算、数组、回溯、枚举,https://algo.itcharge.cn/Solutions/2100-2199/maximum-good-people-based-on-statements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2151.%20%E5%9F%BA%E4%BA%8E%E9%99%88%E8%BF%B0%E7%BB%9F%E8%AE%A1%E6%9C%80%E5%A4%9A%E5%A5%BD%E4%BA%BA%E6%95%B0.md,50.3%,困难,93 -2152,2100-2199,2152. 穿过所有点的所需最少直线数量,穿过所有点的所需最少直线数量,https://leetcode.cn/problems/minimum-number-of-lines-to-cover-points/,minimum-number-of-lines-to-cover-points,位运算、几何、数组、哈希表、数学、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/2100-2199/minimum-number-of-lines-to-cover-points/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2152.%20%E7%A9%BF%E8%BF%87%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%89%80%E9%9C%80%E6%9C%80%E5%B0%91%E7%9B%B4%E7%BA%BF%E6%95%B0%E9%87%8F.md,53.0%,中等,17 -2153,2100-2199,2153. 每辆车的乘客人数 II,每辆车的乘客人数 II,https://leetcode.cn/problems/the-number-of-passengers-in-each-bus-ii/,the-number-of-passengers-in-each-bus-ii,数据库,https://algo.itcharge.cn/Solutions/2100-2199/the-number-of-passengers-in-each-bus-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2153.%20%E6%AF%8F%E8%BE%86%E8%BD%A6%E7%9A%84%E4%B9%98%E5%AE%A2%E4%BA%BA%E6%95%B0%20II.md,44.5%,困难,9 -2154,2100-2199,2154. 将找到的值乘以 2,将找到的值乘以 2,https://leetcode.cn/problems/keep-multiplying-found-values-by-two/,keep-multiplying-found-values-by-two,数组、哈希表、排序、模拟,https://algo.itcharge.cn/Solutions/2100-2199/keep-multiplying-found-values-by-two/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2154.%20%E5%B0%86%E6%89%BE%E5%88%B0%E7%9A%84%E5%80%BC%E4%B9%98%E4%BB%A5%202.md,73.5%,简单,193 -2155,2100-2199,2155. 分组得分最高的所有下标,分组得分最高的所有下标,https://leetcode.cn/problems/all-divisions-with-the-highest-score-of-a-binary-array/,all-divisions-with-the-highest-score-of-a-binary-array,数组,https://algo.itcharge.cn/Solutions/2100-2199/all-divisions-with-the-highest-score-of-a-binary-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2155.%20%E5%88%86%E7%BB%84%E5%BE%97%E5%88%86%E6%9C%80%E9%AB%98%E7%9A%84%E6%89%80%E6%9C%89%E4%B8%8B%E6%A0%87.md,64.6%,中等,118 -2156,2100-2199,2156. 查找给定哈希值的子串,查找给定哈希值的子串,https://leetcode.cn/problems/find-substring-with-given-hash-value/,find-substring-with-given-hash-value,字符串、滑动窗口、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/2100-2199/find-substring-with-given-hash-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2156.%20%E6%9F%A5%E6%89%BE%E7%BB%99%E5%AE%9A%E5%93%88%E5%B8%8C%E5%80%BC%E7%9A%84%E5%AD%90%E4%B8%B2.md,25.2%,困难,97 -2157,2100-2199,2157. 字符串分组,字符串分组,https://leetcode.cn/problems/groups-of-strings/,groups-of-strings,位运算、并查集、字符串,https://algo.itcharge.cn/Solutions/2100-2199/groups-of-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2157.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%86%E7%BB%84.md,31.3%,困难,79 -2158,2100-2199,2158. 每天绘制新区域的数量,每天绘制新区域的数量,https://leetcode.cn/problems/amount-of-new-area-painted-each-day/,amount-of-new-area-painted-each-day,线段树、数组、有序集合,https://algo.itcharge.cn/Solutions/2100-2199/amount-of-new-area-painted-each-day/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2158.%20%E6%AF%8F%E5%A4%A9%E7%BB%98%E5%88%B6%E6%96%B0%E5%8C%BA%E5%9F%9F%E7%9A%84%E6%95%B0%E9%87%8F.md,55.3%,困难,19 -2159,2100-2199,2159. 分别排序两列,分别排序两列,https://leetcode.cn/problems/order-two-columns-independently/,order-two-columns-independently,数据库,https://algo.itcharge.cn/Solutions/2100-2199/order-two-columns-independently/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2159.%20%E5%88%86%E5%88%AB%E6%8E%92%E5%BA%8F%E4%B8%A4%E5%88%97.md,61.2%,中等,10 -2160,2100-2199,2160. 拆分数位后四位数字的最小和,拆分数位后四位数字的最小和,https://leetcode.cn/problems/minimum-sum-of-four-digit-number-after-splitting-digits/,minimum-sum-of-four-digit-number-after-splitting-digits,贪心、数学、排序,https://algo.itcharge.cn/Solutions/2100-2199/minimum-sum-of-four-digit-number-after-splitting-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2160.%20%E6%8B%86%E5%88%86%E6%95%B0%E4%BD%8D%E5%90%8E%E5%9B%9B%E4%BD%8D%E6%95%B0%E5%AD%97%E7%9A%84%E6%9C%80%E5%B0%8F%E5%92%8C.md,84.2%,简单,219 -2161,2100-2199,2161. 根据给定数字划分数组,根据给定数字划分数组,https://leetcode.cn/problems/partition-array-according-to-given-pivot/,partition-array-according-to-given-pivot,数组、双指针、模拟,https://algo.itcharge.cn/Solutions/2100-2199/partition-array-according-to-given-pivot/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2161.%20%E6%A0%B9%E6%8D%AE%E7%BB%99%E5%AE%9A%E6%95%B0%E5%AD%97%E5%88%92%E5%88%86%E6%95%B0%E7%BB%84.md,82.5%,中等,120 -2162,2100-2199,2162. 设置时间的最少代价,设置时间的最少代价,https://leetcode.cn/problems/minimum-cost-to-set-cooking-time/,minimum-cost-to-set-cooking-time,数学、枚举,https://algo.itcharge.cn/Solutions/2100-2199/minimum-cost-to-set-cooking-time/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2162.%20%E8%AE%BE%E7%BD%AE%E6%97%B6%E9%97%B4%E7%9A%84%E6%9C%80%E5%B0%91%E4%BB%A3%E4%BB%B7.md,34.3%,中等,82 -2163,2100-2199,2163. 删除元素后和的最小差值,删除元素后和的最小差值,https://leetcode.cn/problems/minimum-difference-in-sums-after-removal-of-elements/,minimum-difference-in-sums-after-removal-of-elements,数组、动态规划、堆(优先队列),https://algo.itcharge.cn/Solutions/2100-2199/minimum-difference-in-sums-after-removal-of-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2163.%20%E5%88%A0%E9%99%A4%E5%85%83%E7%B4%A0%E5%90%8E%E5%92%8C%E7%9A%84%E6%9C%80%E5%B0%8F%E5%B7%AE%E5%80%BC.md,49.1%,困难,63 -2164,2100-2199,2164. 对奇偶下标分别排序,对奇偶下标分别排序,https://leetcode.cn/problems/sort-even-and-odd-indices-independently/,sort-even-and-odd-indices-independently,数组、排序,https://algo.itcharge.cn/Solutions/2100-2199/sort-even-and-odd-indices-independently/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2164.%20%E5%AF%B9%E5%A5%87%E5%81%B6%E4%B8%8B%E6%A0%87%E5%88%86%E5%88%AB%E6%8E%92%E5%BA%8F.md,68.6%,简单,147 -2165,2100-2199,2165. 重排数字的最小值,重排数字的最小值,https://leetcode.cn/problems/smallest-value-of-the-rearranged-number/,smallest-value-of-the-rearranged-number,数学、排序,https://algo.itcharge.cn/Solutions/2100-2199/smallest-value-of-the-rearranged-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2165.%20%E9%87%8D%E6%8E%92%E6%95%B0%E5%AD%97%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md,55.3%,中等,141 -2166,2100-2199,2166. 设计位集,设计位集,https://leetcode.cn/problems/design-bitset/,design-bitset,设计、数组、哈希表,https://algo.itcharge.cn/Solutions/2100-2199/design-bitset/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2166.%20%E8%AE%BE%E8%AE%A1%E4%BD%8D%E9%9B%86.md,30.7%,中等,160 -2167,2100-2199,2167. 移除所有载有违禁货物车厢所需的最少时间,移除所有载有违禁货物车厢所需的最少时间,https://leetcode.cn/problems/minimum-time-to-remove-all-cars-containing-illegal-goods/,minimum-time-to-remove-all-cars-containing-illegal-goods,字符串、动态规划,https://algo.itcharge.cn/Solutions/2100-2199/minimum-time-to-remove-all-cars-containing-illegal-goods/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2167.%20%E7%A7%BB%E9%99%A4%E6%89%80%E6%9C%89%E8%BD%BD%E6%9C%89%E8%BF%9D%E7%A6%81%E8%B4%A7%E7%89%A9%E8%BD%A6%E5%8E%A2%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E5%B0%91%E6%97%B6%E9%97%B4.md,49.2%,困难,79 -2168,2100-2199,2168. 每个数字的频率都相同的独特子字符串的数量,每个数字的频率都相同的独特子字符串的数量,https://leetcode.cn/problems/unique-substrings-with-equal-digit-frequency/,unique-substrings-with-equal-digit-frequency,哈希表、字符串、计数、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/2100-2199/unique-substrings-with-equal-digit-frequency/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2168.%20%E6%AF%8F%E4%B8%AA%E6%95%B0%E5%AD%97%E7%9A%84%E9%A2%91%E7%8E%87%E9%83%BD%E7%9B%B8%E5%90%8C%E7%9A%84%E7%8B%AC%E7%89%B9%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E9%87%8F.md,63.2%,中等,15 -2169,2100-2199,2169. 得到 0 的操作数,得到 0 的操作数,https://leetcode.cn/problems/count-operations-to-obtain-zero/,count-operations-to-obtain-zero,数学、模拟,https://algo.itcharge.cn/Solutions/2100-2199/count-operations-to-obtain-zero/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2169.%20%E5%BE%97%E5%88%B0%200%20%E7%9A%84%E6%93%8D%E4%BD%9C%E6%95%B0.md,73.6%,简单,145 -2170,2100-2199,2170. 使数组变成交替数组的最少操作数,使数组变成交替数组的最少操作数,https://leetcode.cn/problems/minimum-operations-to-make-the-array-alternating/,minimum-operations-to-make-the-array-alternating,贪心、数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2100-2199/minimum-operations-to-make-the-array-alternating/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2170.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E5%8F%98%E6%88%90%E4%BA%A4%E6%9B%BF%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%95%B0.md,31.2%,中等,163 -2171,2100-2199,2171. 拿出最少数目的魔法豆,拿出最少数目的魔法豆,https://leetcode.cn/problems/removing-minimum-number-of-magic-beans/,removing-minimum-number-of-magic-beans,数组、前缀和、排序,https://algo.itcharge.cn/Solutions/2100-2199/removing-minimum-number-of-magic-beans/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2171.%20%E6%8B%BF%E5%87%BA%E6%9C%80%E5%B0%91%E6%95%B0%E7%9B%AE%E7%9A%84%E9%AD%94%E6%B3%95%E8%B1%86.md,40.4%,中等,184 -2172,2100-2199,2172. 数组的最大与和,数组的最大与和,https://leetcode.cn/problems/maximum-and-sum-of-array/,maximum-and-sum-of-array,位运算、数组、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/2100-2199/maximum-and-sum-of-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2172.%20%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B8%8E%E5%92%8C.md,50.6%,困难,79 -2173,2100-2199,2173. 最多连胜的次数,最多连胜的次数,https://leetcode.cn/problems/longest-winning-streak/,longest-winning-streak,数据库,https://algo.itcharge.cn/Solutions/2100-2199/longest-winning-streak/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2173.%20%E6%9C%80%E5%A4%9A%E8%BF%9E%E8%83%9C%E7%9A%84%E6%AC%A1%E6%95%B0.md,56.6%,困难,27 -2174,2100-2199,2174. 通过翻转行或列来去除所有的 1 II,通过翻转行或列来去除所有的 1 II,https://leetcode.cn/problems/remove-all-ones-with-row-and-column-flips-ii/,remove-all-ones-with-row-and-column-flips-ii,位运算、广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/2100-2199/remove-all-ones-with-row-and-column-flips-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2174.%20%E9%80%9A%E8%BF%87%E7%BF%BB%E8%BD%AC%E8%A1%8C%E6%88%96%E5%88%97%E6%9D%A5%E5%8E%BB%E9%99%A4%E6%89%80%E6%9C%89%E7%9A%84%201%20II.md,66.7%,中等,9 -2175,2100-2199,2175. 世界排名的变化,世界排名的变化,https://leetcode.cn/problems/the-change-in-global-rankings/,the-change-in-global-rankings,数据库,https://algo.itcharge.cn/Solutions/2100-2199/the-change-in-global-rankings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2175.%20%E4%B8%96%E7%95%8C%E6%8E%92%E5%90%8D%E7%9A%84%E5%8F%98%E5%8C%96.md,54.8%,中等,12 -2176,2100-2199,2176. 统计数组中相等且可以被整除的数对,统计数组中相等且可以被整除的数对,https://leetcode.cn/problems/count-equal-and-divisible-pairs-in-an-array/,count-equal-and-divisible-pairs-in-an-array,数组,https://algo.itcharge.cn/Solutions/2100-2199/count-equal-and-divisible-pairs-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2176.%20%E7%BB%9F%E8%AE%A1%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9B%B8%E7%AD%89%E4%B8%94%E5%8F%AF%E4%BB%A5%E8%A2%AB%E6%95%B4%E9%99%A4%E7%9A%84%E6%95%B0%E5%AF%B9.md,78.8%,简单,123 -2177,2100-2199,2177. 找到和为给定整数的三个连续整数,找到和为给定整数的三个连续整数,https://leetcode.cn/problems/find-three-consecutive-integers-that-sum-to-a-given-number/,find-three-consecutive-integers-that-sum-to-a-given-number,数学、模拟,https://algo.itcharge.cn/Solutions/2100-2199/find-three-consecutive-integers-that-sum-to-a-given-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2177.%20%E6%89%BE%E5%88%B0%E5%92%8C%E4%B8%BA%E7%BB%99%E5%AE%9A%E6%95%B4%E6%95%B0%E7%9A%84%E4%B8%89%E4%B8%AA%E8%BF%9E%E7%BB%AD%E6%95%B4%E6%95%B0.md,70.0%,中等,99 -2178,2100-2199,2178. 拆分成最多数目的正偶数之和,拆分成最多数目的正偶数之和,https://leetcode.cn/problems/maximum-split-of-positive-even-integers/,maximum-split-of-positive-even-integers,贪心、数学、回溯,https://algo.itcharge.cn/Solutions/2100-2199/maximum-split-of-positive-even-integers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2178.%20%E6%8B%86%E5%88%86%E6%88%90%E6%9C%80%E5%A4%9A%E6%95%B0%E7%9B%AE%E7%9A%84%E6%AD%A3%E5%81%B6%E6%95%B0%E4%B9%8B%E5%92%8C.md,56.5%,中等,112 -2179,2100-2199,2179. 统计数组中好三元组数目,统计数组中好三元组数目,https://leetcode.cn/problems/count-good-triplets-in-an-array/,count-good-triplets-in-an-array,树状数组、线段树、数组、二分查找、分治、有序集合、归并排序,https://algo.itcharge.cn/Solutions/2100-2199/count-good-triplets-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2179.%20%E7%BB%9F%E8%AE%A1%E6%95%B0%E7%BB%84%E4%B8%AD%E5%A5%BD%E4%B8%89%E5%85%83%E7%BB%84%E6%95%B0%E7%9B%AE.md,37.4%,困难,79 -2180,2100-2199,2180. 统计各位数字之和为偶数的整数个数,统计各位数字之和为偶数的整数个数,https://leetcode.cn/problems/count-integers-with-even-digit-sum/,count-integers-with-even-digit-sum,数学、模拟,https://algo.itcharge.cn/Solutions/2100-2199/count-integers-with-even-digit-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2180.%20%E7%BB%9F%E8%AE%A1%E5%90%84%E4%BD%8D%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C%E4%B8%BA%E5%81%B6%E6%95%B0%E7%9A%84%E6%95%B4%E6%95%B0%E4%B8%AA%E6%95%B0.md,68.0%,简单,377 -2181,2100-2199,2181. 合并零之间的节点,合并零之间的节点,https://leetcode.cn/problems/merge-nodes-in-between-zeros/,merge-nodes-in-between-zeros,链表、模拟,https://algo.itcharge.cn/Solutions/2100-2199/merge-nodes-in-between-zeros/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2181.%20%E5%90%88%E5%B9%B6%E9%9B%B6%E4%B9%8B%E9%97%B4%E7%9A%84%E8%8A%82%E7%82%B9.md,84.7%,中等,211 -2182,2100-2199,2182. 构造限制重复的字符串,构造限制重复的字符串,https://leetcode.cn/problems/construct-string-with-repeat-limit/,construct-string-with-repeat-limit,贪心、字符串、计数、堆(优先队列),https://algo.itcharge.cn/Solutions/2100-2199/construct-string-with-repeat-limit/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2182.%20%E6%9E%84%E9%80%A0%E9%99%90%E5%88%B6%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,48.5%,中等,145 -2183,2100-2199,2183. 统计可以被 K 整除的下标对数目,统计可以被 K 整除的下标对数目,https://leetcode.cn/problems/count-array-pairs-divisible-by-k/,count-array-pairs-divisible-by-k,数组、数学、数论,https://algo.itcharge.cn/Solutions/2100-2199/count-array-pairs-divisible-by-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2183.%20%E7%BB%9F%E8%AE%A1%E5%8F%AF%E4%BB%A5%E8%A2%AB%20K%20%E6%95%B4%E9%99%A4%E7%9A%84%E4%B8%8B%E6%A0%87%E5%AF%B9%E6%95%B0%E7%9B%AE.md,28.3%,困难,60 -2184,2100-2199,2184. 建造坚实的砖墙的方法数,建造坚实的砖墙的方法数,https://leetcode.cn/problems/number-of-ways-to-build-sturdy-brick-wall/,number-of-ways-to-build-sturdy-brick-wall,位运算、数组、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/2100-2199/number-of-ways-to-build-sturdy-brick-wall/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2184.%20%E5%BB%BA%E9%80%A0%E5%9D%9A%E5%AE%9E%E7%9A%84%E7%A0%96%E5%A2%99%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md,55.1%,中等,17 -2185,2100-2199,2185. 统计包含给定前缀的字符串,统计包含给定前缀的字符串,https://leetcode.cn/problems/counting-words-with-a-given-prefix/,counting-words-with-a-given-prefix,数组、字符串,https://algo.itcharge.cn/Solutions/2100-2199/counting-words-with-a-given-prefix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2185.%20%E7%BB%9F%E8%AE%A1%E5%8C%85%E5%90%AB%E7%BB%99%E5%AE%9A%E5%89%8D%E7%BC%80%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,81.6%,简单,381 -2186,2100-2199,2186. 使两字符串互为字母异位词的最少步骤数,使两字符串互为字母异位词的最少步骤数,https://leetcode.cn/problems/minimum-number-of-steps-to-make-two-strings-anagram-ii/,minimum-number-of-steps-to-make-two-strings-anagram-ii,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/2100-2199/minimum-number-of-steps-to-make-two-strings-anagram-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2186.%20%E4%BD%BF%E4%B8%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BA%92%E4%B8%BA%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E7%9A%84%E6%9C%80%E5%B0%91%E6%AD%A5%E9%AA%A4%E6%95%B0.md,72.7%,中等,126 -2187,2100-2199,2187. 完成旅途的最少时间,完成旅途的最少时间,https://leetcode.cn/problems/minimum-time-to-complete-trips/,minimum-time-to-complete-trips,数组、二分查找,https://algo.itcharge.cn/Solutions/2100-2199/minimum-time-to-complete-trips/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2187.%20%E5%AE%8C%E6%88%90%E6%97%85%E9%80%94%E7%9A%84%E6%9C%80%E5%B0%91%E6%97%B6%E9%97%B4.md,28.4%,中等,155 -2188,2100-2199,2188. 完成比赛的最少时间,完成比赛的最少时间,https://leetcode.cn/problems/minimum-time-to-finish-the-race/,minimum-time-to-finish-the-race,数组、动态规划,https://algo.itcharge.cn/Solutions/2100-2199/minimum-time-to-finish-the-race/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2188.%20%E5%AE%8C%E6%88%90%E6%AF%94%E8%B5%9B%E7%9A%84%E6%9C%80%E5%B0%91%E6%97%B6%E9%97%B4.md,44.4%,困难,69 -2189,2100-2199,2189. 建造纸牌屋的方法数,建造纸牌屋的方法数,https://leetcode.cn/problems/number-of-ways-to-build-house-of-cards/,number-of-ways-to-build-house-of-cards,数学、动态规划,https://algo.itcharge.cn/Solutions/2100-2199/number-of-ways-to-build-house-of-cards/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2189.%20%E5%BB%BA%E9%80%A0%E7%BA%B8%E7%89%8C%E5%B1%8B%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md,64.9%,中等,15 -2190,2100-2199,2190. 数组中紧跟 key 之后出现最频繁的数字,数组中紧跟 key 之后出现最频繁的数字,https://leetcode.cn/problems/most-frequent-number-following-key-in-an-array/,most-frequent-number-following-key-in-an-array,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2100-2199/most-frequent-number-following-key-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2190.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%B4%A7%E8%B7%9F%20key%20%E4%B9%8B%E5%90%8E%E5%87%BA%E7%8E%B0%E6%9C%80%E9%A2%91%E7%B9%81%E7%9A%84%E6%95%B0%E5%AD%97.md,58.7%,简单,116 -2191,2100-2199,2191. 将杂乱无章的数字排序,将杂乱无章的数字排序,https://leetcode.cn/problems/sort-the-jumbled-numbers/,sort-the-jumbled-numbers,数组、排序,https://algo.itcharge.cn/Solutions/2100-2199/sort-the-jumbled-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2191.%20%E5%B0%86%E6%9D%82%E4%B9%B1%E6%97%A0%E7%AB%A0%E7%9A%84%E6%95%B0%E5%AD%97%E6%8E%92%E5%BA%8F.md,43.5%,中等,111 -2192,2100-2199,2192. 有向无环图中一个节点的所有祖先,有向无环图中一个节点的所有祖先,https://leetcode.cn/problems/all-ancestors-of-a-node-in-a-directed-acyclic-graph/,all-ancestors-of-a-node-in-a-directed-acyclic-graph,深度优先搜索、广度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/2100-2199/all-ancestors-of-a-node-in-a-directed-acyclic-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2192.%20%E6%9C%89%E5%90%91%E6%97%A0%E7%8E%AF%E5%9B%BE%E4%B8%AD%E4%B8%80%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E6%89%80%E6%9C%89%E7%A5%96%E5%85%88.md,45.1%,中等,114 -2193,2100-2199,2193. 得到回文串的最少操作次数,得到回文串的最少操作次数,https://leetcode.cn/problems/minimum-number-of-moves-to-make-palindrome/,minimum-number-of-moves-to-make-palindrome,贪心、树状数组、双指针、字符串,https://algo.itcharge.cn/Solutions/2100-2199/minimum-number-of-moves-to-make-palindrome/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2193.%20%E5%BE%97%E5%88%B0%E5%9B%9E%E6%96%87%E4%B8%B2%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,49.1%,困难,64 -2194,2100-2199,2194. Excel 表中某个范围内的单元格,Excel 表中某个范围内的单元格,https://leetcode.cn/problems/cells-in-a-range-on-an-excel-sheet/,cells-in-a-range-on-an-excel-sheet,字符串,https://algo.itcharge.cn/Solutions/2100-2199/cells-in-a-range-on-an-excel-sheet/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2194.%20Excel%20%E8%A1%A8%E4%B8%AD%E6%9F%90%E4%B8%AA%E8%8C%83%E5%9B%B4%E5%86%85%E7%9A%84%E5%8D%95%E5%85%83%E6%A0%BC.md,84.2%,简单,150 -2195,2100-2199,2195. 向数组中追加 K 个整数,向数组中追加 K 个整数,https://leetcode.cn/problems/append-k-integers-with-minimal-sum/,append-k-integers-with-minimal-sum,贪心、数组、数学、排序,https://algo.itcharge.cn/Solutions/2100-2199/append-k-integers-with-minimal-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2195.%20%E5%90%91%E6%95%B0%E7%BB%84%E4%B8%AD%E8%BF%BD%E5%8A%A0%20K%20%E4%B8%AA%E6%95%B4%E6%95%B0.md,24.0%,中等,228 -2196,2100-2199,2196. 根据描述创建二叉树,根据描述创建二叉树,https://leetcode.cn/problems/create-binary-tree-from-descriptions/,create-binary-tree-from-descriptions,树、深度优先搜索、广度优先搜索、数组、哈希表、二叉树,https://algo.itcharge.cn/Solutions/2100-2199/create-binary-tree-from-descriptions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2196.%20%E6%A0%B9%E6%8D%AE%E6%8F%8F%E8%BF%B0%E5%88%9B%E5%BB%BA%E4%BA%8C%E5%8F%89%E6%A0%91.md,72.8%,中等,160 -2197,2100-2199,2197. 替换数组中的非互质数,替换数组中的非互质数,https://leetcode.cn/problems/replace-non-coprime-numbers-in-array/,replace-non-coprime-numbers-in-array,栈、数组、数学、数论,https://algo.itcharge.cn/Solutions/2100-2199/replace-non-coprime-numbers-in-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2197.%20%E6%9B%BF%E6%8D%A2%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%9D%9E%E4%BA%92%E8%B4%A8%E6%95%B0.md,34.7%,困难,91 -2198,2100-2199,2198. 单因数三元组,单因数三元组,https://leetcode.cn/problems/number-of-single-divisor-triplets/,number-of-single-divisor-triplets,数学,https://algo.itcharge.cn/Solutions/2100-2199/number-of-single-divisor-triplets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2198.%20%E5%8D%95%E5%9B%A0%E6%95%B0%E4%B8%89%E5%85%83%E7%BB%84.md,57.5%,中等,7 -2199,2100-2199,2199. 找到每篇文章的主题,找到每篇文章的主题,https://leetcode.cn/problems/finding-the-topic-of-each-post/,finding-the-topic-of-each-post,数据库,https://algo.itcharge.cn/Solutions/2100-2199/finding-the-topic-of-each-post/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2199.%20%E6%89%BE%E5%88%B0%E6%AF%8F%E7%AF%87%E6%96%87%E7%AB%A0%E7%9A%84%E4%B8%BB%E9%A2%98.md,59.4%,困难,12 -2200,2200-2299,2200. 找出数组中的所有 K 近邻下标,找出数组中的所有 K 近邻下标,https://leetcode.cn/problems/find-all-k-distant-indices-in-an-array/,find-all-k-distant-indices-in-an-array,数组,https://algo.itcharge.cn/Solutions/2200-2299/find-all-k-distant-indices-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2200.%20%E6%89%BE%E5%87%BA%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%20K%20%E8%BF%91%E9%82%BB%E4%B8%8B%E6%A0%87.md,53.8%,简单,148 -2201,2200-2299,2201. 统计可以提取的工件,统计可以提取的工件,https://leetcode.cn/problems/count-artifacts-that-can-be-extracted/,count-artifacts-that-can-be-extracted,数组、哈希表、模拟,https://algo.itcharge.cn/Solutions/2200-2299/count-artifacts-that-can-be-extracted/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2201.%20%E7%BB%9F%E8%AE%A1%E5%8F%AF%E4%BB%A5%E6%8F%90%E5%8F%96%E7%9A%84%E5%B7%A5%E4%BB%B6.md,49.4%,中等,138 -2202,2200-2299,2202. K 次操作后最大化顶端元素,K 次操作后最大化顶端元素,https://leetcode.cn/problems/maximize-the-topmost-element-after-k-moves/,maximize-the-topmost-element-after-k-moves,贪心、数组,https://algo.itcharge.cn/Solutions/2200-2299/maximize-the-topmost-element-after-k-moves/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2202.%20K%20%E6%AC%A1%E6%93%8D%E4%BD%9C%E5%90%8E%E6%9C%80%E5%A4%A7%E5%8C%96%E9%A1%B6%E7%AB%AF%E5%85%83%E7%B4%A0.md,21.7%,中等,150 -2203,2200-2299,2203. 得到要求路径的最小带权子图,得到要求路径的最小带权子图,https://leetcode.cn/problems/minimum-weighted-subgraph-with-the-required-paths/,minimum-weighted-subgraph-with-the-required-paths,图、最短路,https://algo.itcharge.cn/Solutions/2200-2299/minimum-weighted-subgraph-with-the-required-paths/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2203.%20%E5%BE%97%E5%88%B0%E8%A6%81%E6%B1%82%E8%B7%AF%E5%BE%84%E7%9A%84%E6%9C%80%E5%B0%8F%E5%B8%A6%E6%9D%83%E5%AD%90%E5%9B%BE.md,37.7%,困难,72 -2204,2200-2299,2204. 无向图中到环的距离,无向图中到环的距离,https://leetcode.cn/problems/distance-to-a-cycle-in-undirected-graph/,distance-to-a-cycle-in-undirected-graph,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/2200-2299/distance-to-a-cycle-in-undirected-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2204.%20%E6%97%A0%E5%90%91%E5%9B%BE%E4%B8%AD%E5%88%B0%E7%8E%AF%E7%9A%84%E8%B7%9D%E7%A6%BB.md,75.5%,困难,18 -2205,2200-2299,2205. 有资格享受折扣的用户数量,有资格享受折扣的用户数量,https://leetcode.cn/problems/the-number-of-users-that-are-eligible-for-discount/,the-number-of-users-that-are-eligible-for-discount,数据库,https://algo.itcharge.cn/Solutions/2200-2299/the-number-of-users-that-are-eligible-for-discount/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2205.%20%E6%9C%89%E8%B5%84%E6%A0%BC%E4%BA%AB%E5%8F%97%E6%8A%98%E6%89%A3%E7%9A%84%E7%94%A8%E6%88%B7%E6%95%B0%E9%87%8F.md,44.6%,简单,14 -2206,2200-2299,2206. 将数组划分成相等数对,将数组划分成相等数对,https://leetcode.cn/problems/divide-array-into-equal-pairs/,divide-array-into-equal-pairs,位运算、数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2200-2299/divide-array-into-equal-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2206.%20%E5%B0%86%E6%95%B0%E7%BB%84%E5%88%92%E5%88%86%E6%88%90%E7%9B%B8%E7%AD%89%E6%95%B0%E5%AF%B9.md,73.8%,简单,163 -2207,2200-2299,2207. 字符串中最多数目的子字符串,字符串中最多数目的子字符串,https://leetcode.cn/problems/maximize-number-of-subsequences-in-a-string/,maximize-number-of-subsequences-in-a-string,贪心、字符串、前缀和,https://algo.itcharge.cn/Solutions/2200-2299/maximize-number-of-subsequences-in-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2207.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E6%9C%80%E5%A4%9A%E6%95%B0%E7%9B%AE%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,31.5%,中等,107 -2208,2200-2299,2208. 将数组和减半的最少操作次数,将数组和减半的最少操作次数,https://leetcode.cn/problems/minimum-operations-to-halve-array-sum/,minimum-operations-to-halve-array-sum,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/2200-2299/minimum-operations-to-halve-array-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2208.%20%E5%B0%86%E6%95%B0%E7%BB%84%E5%92%8C%E5%87%8F%E5%8D%8A%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,40.9%,中等,99 -2209,2200-2299,2209. 用地毯覆盖后的最少白色砖块,用地毯覆盖后的最少白色砖块,https://leetcode.cn/problems/minimum-white-tiles-after-covering-with-carpets/,minimum-white-tiles-after-covering-with-carpets,字符串、动态规划、前缀和,https://algo.itcharge.cn/Solutions/2200-2299/minimum-white-tiles-after-covering-with-carpets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2209.%20%E7%94%A8%E5%9C%B0%E6%AF%AF%E8%A6%86%E7%9B%96%E5%90%8E%E7%9A%84%E6%9C%80%E5%B0%91%E7%99%BD%E8%89%B2%E7%A0%96%E5%9D%97.md,39.1%,困难,52 -2210,2200-2299,2210. 统计数组中峰和谷的数量,统计数组中峰和谷的数量,https://leetcode.cn/problems/count-hills-and-valleys-in-an-array/,count-hills-and-valleys-in-an-array,数组,https://algo.itcharge.cn/Solutions/2200-2299/count-hills-and-valleys-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2210.%20%E7%BB%9F%E8%AE%A1%E6%95%B0%E7%BB%84%E4%B8%AD%E5%B3%B0%E5%92%8C%E8%B0%B7%E7%9A%84%E6%95%B0%E9%87%8F.md,58.8%,简单,161 -2211,2200-2299,2211. 统计道路上的碰撞次数,统计道路上的碰撞次数,https://leetcode.cn/problems/count-collisions-on-a-road/,count-collisions-on-a-road,栈、字符串,https://algo.itcharge.cn/Solutions/2200-2299/count-collisions-on-a-road/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2211.%20%E7%BB%9F%E8%AE%A1%E9%81%93%E8%B7%AF%E4%B8%8A%E7%9A%84%E7%A2%B0%E6%92%9E%E6%AC%A1%E6%95%B0.md,41.0%,中等,147 -2212,2200-2299,2212. 射箭比赛中的最大得分,射箭比赛中的最大得分,https://leetcode.cn/problems/maximum-points-in-an-archery-competition/,maximum-points-in-an-archery-competition,位运算、递归、数组、枚举,https://algo.itcharge.cn/Solutions/2200-2299/maximum-points-in-an-archery-competition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2212.%20%E5%B0%84%E7%AE%AD%E6%AF%94%E8%B5%9B%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md,47.8%,中等,166 -2213,2200-2299,2213. 由单个字符重复的最长子字符串,由单个字符重复的最长子字符串,https://leetcode.cn/problems/longest-substring-of-one-repeating-character/,longest-substring-of-one-repeating-character,线段树、数组、字符串、有序集合,https://algo.itcharge.cn/Solutions/2200-2299/longest-substring-of-one-repeating-character/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2213.%20%E7%94%B1%E5%8D%95%E4%B8%AA%E5%AD%97%E7%AC%A6%E9%87%8D%E5%A4%8D%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,40.6%,困难,86 -2214,2200-2299,2214. 通关游戏所需的最低生命值,通关游戏所需的最低生命值,https://leetcode.cn/problems/minimum-health-to-beat-game/,minimum-health-to-beat-game,贪心、数组、前缀和,https://algo.itcharge.cn/Solutions/2200-2299/minimum-health-to-beat-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2214.%20%E9%80%9A%E5%85%B3%E6%B8%B8%E6%88%8F%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E4%BD%8E%E7%94%9F%E5%91%BD%E5%80%BC.md,55.4%,中等,11 -2215,2200-2299,2215. 找出两数组的不同,找出两数组的不同,https://leetcode.cn/problems/find-the-difference-of-two-arrays/,find-the-difference-of-two-arrays,数组、哈希表,https://algo.itcharge.cn/Solutions/2200-2299/find-the-difference-of-two-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2215.%20%E6%89%BE%E5%87%BA%E4%B8%A4%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%8D%E5%90%8C.md,66.8%,简单,182 -2216,2200-2299,2216. 美化数组的最少删除数,美化数组的最少删除数,https://leetcode.cn/problems/minimum-deletions-to-make-array-beautiful/,minimum-deletions-to-make-array-beautiful,栈、贪心、数组,https://algo.itcharge.cn/Solutions/2200-2299/minimum-deletions-to-make-array-beautiful/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2216.%20%E7%BE%8E%E5%8C%96%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%91%E5%88%A0%E9%99%A4%E6%95%B0.md,48.6%,中等,171 -2217,2200-2299,2217. 找到指定长度的回文数,找到指定长度的回文数,https://leetcode.cn/problems/find-palindrome-with-fixed-length/,find-palindrome-with-fixed-length,数组、数学,https://algo.itcharge.cn/Solutions/2200-2299/find-palindrome-with-fixed-length/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2217.%20%E6%89%BE%E5%88%B0%E6%8C%87%E5%AE%9A%E9%95%BF%E5%BA%A6%E7%9A%84%E5%9B%9E%E6%96%87%E6%95%B0.md,33.6%,中等,154 -2218,2200-2299,2218. 从栈中取出 K 个硬币的最大面值和,从栈中取出 K 个硬币的最大面值和,https://leetcode.cn/problems/maximum-value-of-k-coins-from-piles/,maximum-value-of-k-coins-from-piles,数组、动态规划、前缀和,https://algo.itcharge.cn/Solutions/2200-2299/maximum-value-of-k-coins-from-piles/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2218.%20%E4%BB%8E%E6%A0%88%E4%B8%AD%E5%8F%96%E5%87%BA%20K%20%E4%B8%AA%E7%A1%AC%E5%B8%81%E7%9A%84%E6%9C%80%E5%A4%A7%E9%9D%A2%E5%80%BC%E5%92%8C.md,55.3%,困难,94 -2219,2200-2299,2219. 数组的最大总分,数组的最大总分,https://leetcode.cn/problems/maximum-sum-score-of-array/,maximum-sum-score-of-array,数组、前缀和,https://algo.itcharge.cn/Solutions/2200-2299/maximum-sum-score-of-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2219.%20%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E6%80%BB%E5%88%86.md,64.0%,中等,17 -2220,2200-2299,2220. 转换数字的最少位翻转次数,转换数字的最少位翻转次数,https://leetcode.cn/problems/minimum-bit-flips-to-convert-number/,minimum-bit-flips-to-convert-number,位运算,https://algo.itcharge.cn/Solutions/2200-2299/minimum-bit-flips-to-convert-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2220.%20%E8%BD%AC%E6%8D%A2%E6%95%B0%E5%AD%97%E7%9A%84%E6%9C%80%E5%B0%91%E4%BD%8D%E7%BF%BB%E8%BD%AC%E6%AC%A1%E6%95%B0.md,82.6%,简单,161 -2221,2200-2299,2221. 数组的三角和,数组的三角和,https://leetcode.cn/problems/find-triangular-sum-of-an-array/,find-triangular-sum-of-an-array,数组、数学、组合数学、模拟,https://algo.itcharge.cn/Solutions/2200-2299/find-triangular-sum-of-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2221.%20%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%89%E8%A7%92%E5%92%8C.md,79.7%,中等,123 -2222,2200-2299,2222. 选择建筑的方案数,选择建筑的方案数,https://leetcode.cn/problems/number-of-ways-to-select-buildings/,number-of-ways-to-select-buildings,字符串、动态规划、前缀和,https://algo.itcharge.cn/Solutions/2200-2299/number-of-ways-to-select-buildings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2222.%20%E9%80%89%E6%8B%A9%E5%BB%BA%E7%AD%91%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,49.9%,中等,138 -2223,2200-2299,2223. 构造字符串的总得分和,构造字符串的总得分和,https://leetcode.cn/problems/sum-of-scores-of-built-strings/,sum-of-scores-of-built-strings,字符串、二分查找、字符串匹配、后缀数组、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/2200-2299/sum-of-scores-of-built-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2223.%20%E6%9E%84%E9%80%A0%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%80%BB%E5%BE%97%E5%88%86%E5%92%8C.md,38.3%,困难,57 -2224,2200-2299,2224. 转化时间需要的最少操作数,转化时间需要的最少操作数,https://leetcode.cn/problems/minimum-number-of-operations-to-convert-time/,minimum-number-of-operations-to-convert-time,贪心、字符串,https://algo.itcharge.cn/Solutions/2200-2299/minimum-number-of-operations-to-convert-time/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2224.%20%E8%BD%AC%E5%8C%96%E6%97%B6%E9%97%B4%E9%9C%80%E8%A6%81%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%95%B0.md,69.4%,简单,162 -2225,2200-2299,2225. 找出输掉零场或一场比赛的玩家,找出输掉零场或一场比赛的玩家,https://leetcode.cn/problems/find-players-with-zero-or-one-losses/,find-players-with-zero-or-one-losses,数组、哈希表、计数、排序,https://algo.itcharge.cn/Solutions/2200-2299/find-players-with-zero-or-one-losses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2225.%20%E6%89%BE%E5%87%BA%E8%BE%93%E6%8E%89%E9%9B%B6%E5%9C%BA%E6%88%96%E4%B8%80%E5%9C%BA%E6%AF%94%E8%B5%9B%E7%9A%84%E7%8E%A9%E5%AE%B6.md,63.0%,中等,119 -2226,2200-2299,2226. 每个小孩最多能分到多少糖果,每个小孩最多能分到多少糖果,https://leetcode.cn/problems/maximum-candies-allocated-to-k-children/,maximum-candies-allocated-to-k-children,数组、二分查找,https://algo.itcharge.cn/Solutions/2200-2299/maximum-candies-allocated-to-k-children/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2226.%20%E6%AF%8F%E4%B8%AA%E5%B0%8F%E5%AD%A9%E6%9C%80%E5%A4%9A%E8%83%BD%E5%88%86%E5%88%B0%E5%A4%9A%E5%B0%91%E7%B3%96%E6%9E%9C.md,34.1%,中等,182 -2227,2200-2299,2227. 加密解密字符串,加密解密字符串,https://leetcode.cn/problems/encrypt-and-decrypt-strings/,encrypt-and-decrypt-strings,设计、字典树、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/2200-2299/encrypt-and-decrypt-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2227.%20%E5%8A%A0%E5%AF%86%E8%A7%A3%E5%AF%86%E5%AD%97%E7%AC%A6%E4%B8%B2.md,39.5%,困难,89 -2228,2200-2299,2228. 7 天内两次购买的用户,7 天内两次购买的用户,https://leetcode.cn/problems/users-with-two-purchases-within-seven-days/,users-with-two-purchases-within-seven-days,数据库,https://algo.itcharge.cn/Solutions/2200-2299/users-with-two-purchases-within-seven-days/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2228.%207%20%E5%A4%A9%E5%86%85%E4%B8%A4%E6%AC%A1%E8%B4%AD%E4%B9%B0%E7%9A%84%E7%94%A8%E6%88%B7.md,47.2%,中等,19 -2229,2200-2299,2229. 检查数组是否连贯,检查数组是否连贯,https://leetcode.cn/problems/check-if-an-array-is-consecutive/,check-if-an-array-is-consecutive,数组,https://algo.itcharge.cn/Solutions/2200-2299/check-if-an-array-is-consecutive/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2229.%20%E6%A3%80%E6%9F%A5%E6%95%B0%E7%BB%84%E6%98%AF%E5%90%A6%E8%BF%9E%E8%B4%AF.md,69.8%,简单,29 -2230,2200-2299,2230. 查找可享受优惠的用户,查找可享受优惠的用户,https://leetcode.cn/problems/the-users-that-are-eligible-for-discount/,the-users-that-are-eligible-for-discount,数据库,https://algo.itcharge.cn/Solutions/2200-2299/the-users-that-are-eligible-for-discount/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2230.%20%E6%9F%A5%E6%89%BE%E5%8F%AF%E4%BA%AB%E5%8F%97%E4%BC%98%E6%83%A0%E7%9A%84%E7%94%A8%E6%88%B7.md,49.4%,简单,9 -2231,2200-2299,2231. 按奇偶性交换后的最大数字,按奇偶性交换后的最大数字,https://leetcode.cn/problems/largest-number-after-digit-swaps-by-parity/,largest-number-after-digit-swaps-by-parity,排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2200-2299/largest-number-after-digit-swaps-by-parity/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2231.%20%E6%8C%89%E5%A5%87%E5%81%B6%E6%80%A7%E4%BA%A4%E6%8D%A2%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E5%AD%97.md,64.3%,简单,195 -2232,2200-2299,2232. 向表达式添加括号后的最小结果,向表达式添加括号后的最小结果,https://leetcode.cn/problems/minimize-result-by-adding-parentheses-to-expression/,minimize-result-by-adding-parentheses-to-expression,字符串、枚举,https://algo.itcharge.cn/Solutions/2200-2299/minimize-result-by-adding-parentheses-to-expression/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2232.%20%E5%90%91%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B7%BB%E5%8A%A0%E6%8B%AC%E5%8F%B7%E5%90%8E%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BB%93%E6%9E%9C.md,61.3%,中等,134 -2233,2200-2299,2233. K 次增加后的最大乘积,K 次增加后的最大乘积,https://leetcode.cn/problems/maximum-product-after-k-increments/,maximum-product-after-k-increments,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/2200-2299/maximum-product-after-k-increments/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2233.%20K%20%E6%AC%A1%E5%A2%9E%E5%8A%A0%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B9%98%E7%A7%AF.md,36.8%,中等,169 -2234,2200-2299,2234. 花园的最大总美丽值,花园的最大总美丽值,https://leetcode.cn/problems/maximum-total-beauty-of-the-gardens/,maximum-total-beauty-of-the-gardens,贪心、数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/2200-2299/maximum-total-beauty-of-the-gardens/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2234.%20%E8%8A%B1%E5%9B%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E6%80%BB%E7%BE%8E%E4%B8%BD%E5%80%BC.md,28.0%,困难,76 -2235,2200-2299,2235. 两整数相加,两整数相加,https://leetcode.cn/problems/add-two-integers/,add-two-integers,数学,https://algo.itcharge.cn/Solutions/2200-2299/add-two-integers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2235.%20%E4%B8%A4%E6%95%B4%E6%95%B0%E7%9B%B8%E5%8A%A0.md,85.2%,简单,155 -2236,2200-2299,2236. 判断根结点是否等于子结点之和,判断根结点是否等于子结点之和,https://leetcode.cn/problems/root-equals-sum-of-children/,root-equals-sum-of-children,树、二叉树,https://algo.itcharge.cn/Solutions/2200-2299/root-equals-sum-of-children/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2236.%20%E5%88%A4%E6%96%AD%E6%A0%B9%E7%BB%93%E7%82%B9%E6%98%AF%E5%90%A6%E7%AD%89%E4%BA%8E%E5%AD%90%E7%BB%93%E7%82%B9%E4%B9%8B%E5%92%8C.md,85.9%,简单,162 -2237,2200-2299,2237. 计算街道上满足所需亮度的位置数量,计算街道上满足所需亮度的位置数量,https://leetcode.cn/problems/count-positions-on-street-with-required-brightness/,count-positions-on-street-with-required-brightness,数组、前缀和,https://algo.itcharge.cn/Solutions/2200-2299/count-positions-on-street-with-required-brightness/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2237.%20%E8%AE%A1%E7%AE%97%E8%A1%97%E9%81%93%E4%B8%8A%E6%BB%A1%E8%B6%B3%E6%89%80%E9%9C%80%E4%BA%AE%E5%BA%A6%E7%9A%84%E4%BD%8D%E7%BD%AE%E6%95%B0%E9%87%8F.md,74.5%,中等,16 -2238,2200-2299,2238. 司机成为乘客的次数,司机成为乘客的次数,https://leetcode.cn/problems/number-of-times-a-driver-was-a-passenger/,number-of-times-a-driver-was-a-passenger,数据库,https://algo.itcharge.cn/Solutions/2200-2299/number-of-times-a-driver-was-a-passenger/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2238.%20%E5%8F%B8%E6%9C%BA%E6%88%90%E4%B8%BA%E4%B9%98%E5%AE%A2%E7%9A%84%E6%AC%A1%E6%95%B0.md,69.3%,中等,14 -2239,2200-2299,2239. 找到最接近 0 的数字,找到最接近 0 的数字,https://leetcode.cn/problems/find-closest-number-to-zero/,find-closest-number-to-zero,数组,https://algo.itcharge.cn/Solutions/2200-2299/find-closest-number-to-zero/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2239.%20%E6%89%BE%E5%88%B0%E6%9C%80%E6%8E%A5%E8%BF%91%200%20%E7%9A%84%E6%95%B0%E5%AD%97.md,53.5%,简单,138 -2240,2200-2299,2240. 买钢笔和铅笔的方案数,买钢笔和铅笔的方案数,https://leetcode.cn/problems/number-of-ways-to-buy-pens-and-pencils/,number-of-ways-to-buy-pens-and-pencils,数学、枚举,https://algo.itcharge.cn/Solutions/2200-2299/number-of-ways-to-buy-pens-and-pencils/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2240.%20%E4%B9%B0%E9%92%A2%E7%AC%94%E5%92%8C%E9%93%85%E7%AC%94%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,57.4%,中等,82 -2241,2200-2299,2241. 设计一个 ATM 机器,设计一个 ATM 机器,https://leetcode.cn/problems/design-an-atm-machine/,design-an-atm-machine,贪心、设计、数组,https://algo.itcharge.cn/Solutions/2200-2299/design-an-atm-machine/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2241.%20%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%20ATM%20%E6%9C%BA%E5%99%A8.md,36.3%,中等,80 -2242,2200-2299,2242. 节点序列的最大得分,节点序列的最大得分,https://leetcode.cn/problems/maximum-score-of-a-node-sequence/,maximum-score-of-a-node-sequence,图、数组、枚举、排序,https://algo.itcharge.cn/Solutions/2200-2299/maximum-score-of-a-node-sequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2242.%20%E8%8A%82%E7%82%B9%E5%BA%8F%E5%88%97%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md,33.9%,困难,46 -2243,2200-2299,2243. 计算字符串的数字和,计算字符串的数字和,https://leetcode.cn/problems/calculate-digit-sum-of-a-string/,calculate-digit-sum-of-a-string,字符串、模拟,https://algo.itcharge.cn/Solutions/2200-2299/calculate-digit-sum-of-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2243.%20%E8%AE%A1%E7%AE%97%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E5%AD%97%E5%92%8C.md,63.5%,简单,164 -2244,2200-2299,2244. 完成所有任务需要的最少轮数,完成所有任务需要的最少轮数,https://leetcode.cn/problems/minimum-rounds-to-complete-all-tasks/,minimum-rounds-to-complete-all-tasks,贪心、数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2200-2299/minimum-rounds-to-complete-all-tasks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2244.%20%E5%AE%8C%E6%88%90%E6%89%80%E6%9C%89%E4%BB%BB%E5%8A%A1%E9%9C%80%E8%A6%81%E7%9A%84%E6%9C%80%E5%B0%91%E8%BD%AE%E6%95%B0.md,57.1%,中等,160 -2245,2200-2299,2245. 转角路径的乘积中最多能有几个尾随零,转角路径的乘积中最多能有几个尾随零,https://leetcode.cn/problems/maximum-trailing-zeros-in-a-cornered-path/,maximum-trailing-zeros-in-a-cornered-path,数组、矩阵、前缀和,https://algo.itcharge.cn/Solutions/2200-2299/maximum-trailing-zeros-in-a-cornered-path/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2245.%20%E8%BD%AC%E8%A7%92%E8%B7%AF%E5%BE%84%E7%9A%84%E4%B9%98%E7%A7%AF%E4%B8%AD%E6%9C%80%E5%A4%9A%E8%83%BD%E6%9C%89%E5%87%A0%E4%B8%AA%E5%B0%BE%E9%9A%8F%E9%9B%B6.md,36.1%,中等,98 -2246,2200-2299,2246. 相邻字符不同的最长路径,相邻字符不同的最长路径,https://leetcode.cn/problems/longest-path-with-different-adjacent-characters/,longest-path-with-different-adjacent-characters,树、深度优先搜索、图、拓扑排序、数组、字符串,https://algo.itcharge.cn/Solutions/2200-2299/longest-path-with-different-adjacent-characters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2246.%20%E7%9B%B8%E9%82%BB%E5%AD%97%E7%AC%A6%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9C%80%E9%95%BF%E8%B7%AF%E5%BE%84.md,47.0%,困难,69 -2247,2200-2299,2247. K 条高速公路的最大旅行费用,K 条高速公路的最大旅行费用,https://leetcode.cn/problems/maximum-cost-of-trip-with-k-highways/,maximum-cost-of-trip-with-k-highways,位运算、图、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/2200-2299/maximum-cost-of-trip-with-k-highways/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2247.%20K%20%E6%9D%A1%E9%AB%98%E9%80%9F%E5%85%AC%E8%B7%AF%E7%9A%84%E6%9C%80%E5%A4%A7%E6%97%85%E8%A1%8C%E8%B4%B9%E7%94%A8.md,56.7%,困难,14 -2248,2200-2299,2248. 多个数组求交集,多个数组求交集,https://leetcode.cn/problems/intersection-of-multiple-arrays/,intersection-of-multiple-arrays,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2200-2299/intersection-of-multiple-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2248.%20%E5%A4%9A%E4%B8%AA%E6%95%B0%E7%BB%84%E6%B1%82%E4%BA%A4%E9%9B%86.md,67.1%,简单,193 -2249,2200-2299,2249. 统计圆内格点数目,统计圆内格点数目,https://leetcode.cn/problems/count-lattice-points-inside-a-circle/,count-lattice-points-inside-a-circle,几何、数组、哈希表、数学、枚举,https://algo.itcharge.cn/Solutions/2200-2299/count-lattice-points-inside-a-circle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2249.%20%E7%BB%9F%E8%AE%A1%E5%9C%86%E5%86%85%E6%A0%BC%E7%82%B9%E6%95%B0%E7%9B%AE.md,53.3%,中等,133 -2250,2200-2299,2250. 统计包含每个点的矩形数目,统计包含每个点的矩形数目,https://leetcode.cn/problems/count-number-of-rectangles-containing-each-point/,count-number-of-rectangles-containing-each-point,树状数组、数组、二分查找、排序,https://algo.itcharge.cn/Solutions/2200-2299/count-number-of-rectangles-containing-each-point/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2250.%20%E7%BB%9F%E8%AE%A1%E5%8C%85%E5%90%AB%E6%AF%8F%E4%B8%AA%E7%82%B9%E7%9A%84%E7%9F%A9%E5%BD%A2%E6%95%B0%E7%9B%AE.md,34.9%,中等,119 -2251,2200-2299,2251. 花期内花的数目,花期内花的数目,https://leetcode.cn/problems/number-of-flowers-in-full-bloom/,number-of-flowers-in-full-bloom,数组、哈希表、二分查找、有序集合、前缀和、排序,https://algo.itcharge.cn/Solutions/2200-2299/number-of-flowers-in-full-bloom/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2251.%20%E8%8A%B1%E6%9C%9F%E5%86%85%E8%8A%B1%E7%9A%84%E6%95%B0%E7%9B%AE.md,49.1%,困难,131 -2252,2200-2299,2252. 表的动态旋转,表的动态旋转,https://leetcode.cn/problems/dynamic-pivoting-of-a-table/,dynamic-pivoting-of-a-table,数据库,https://algo.itcharge.cn/Solutions/2200-2299/dynamic-pivoting-of-a-table/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2252.%20%E8%A1%A8%E7%9A%84%E5%8A%A8%E6%80%81%E6%97%8B%E8%BD%AC.md,57.4%,困难,3 -2253,2200-2299,2253. 动态取消表的旋转,动态取消表的旋转,https://leetcode.cn/problems/dynamic-unpivoting-of-a-table/,dynamic-unpivoting-of-a-table,数据库,https://algo.itcharge.cn/Solutions/2200-2299/dynamic-unpivoting-of-a-table/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2253.%20%E5%8A%A8%E6%80%81%E5%8F%96%E6%B6%88%E8%A1%A8%E7%9A%84%E6%97%8B%E8%BD%AC.md,71.1%,困难,3 -2254,2200-2299,2254. 设计视频共享平台,设计视频共享平台,https://leetcode.cn/problems/design-video-sharing-platform/,design-video-sharing-platform,栈、设计、哈希表、有序集合,https://algo.itcharge.cn/Solutions/2200-2299/design-video-sharing-platform/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2254.%20%E8%AE%BE%E8%AE%A1%E8%A7%86%E9%A2%91%E5%85%B1%E4%BA%AB%E5%B9%B3%E5%8F%B0.md,61.3%,困难,8 -2255,2200-2299,2255. 统计是给定字符串前缀的字符串数目,统计是给定字符串前缀的字符串数目,https://leetcode.cn/problems/count-prefixes-of-a-given-string/,count-prefixes-of-a-given-string,数组、字符串,https://algo.itcharge.cn/Solutions/2200-2299/count-prefixes-of-a-given-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2255.%20%E7%BB%9F%E8%AE%A1%E6%98%AF%E7%BB%99%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%89%8D%E7%BC%80%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%9B%AE.md,78.6%,简单,152 -2256,2200-2299,2256. 最小平均差,最小平均差,https://leetcode.cn/problems/minimum-average-difference/,minimum-average-difference,数组、前缀和,https://algo.itcharge.cn/Solutions/2200-2299/minimum-average-difference/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2256.%20%E6%9C%80%E5%B0%8F%E5%B9%B3%E5%9D%87%E5%B7%AE.md,36.8%,中等,80 -2257,2200-2299,2257. 统计网格图中没有被保卫的格子数,统计网格图中没有被保卫的格子数,https://leetcode.cn/problems/count-unguarded-cells-in-the-grid/,count-unguarded-cells-in-the-grid,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/2200-2299/count-unguarded-cells-in-the-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2257.%20%E7%BB%9F%E8%AE%A1%E7%BD%91%E6%A0%BC%E5%9B%BE%E4%B8%AD%E6%B2%A1%E6%9C%89%E8%A2%AB%E4%BF%9D%E5%8D%AB%E7%9A%84%E6%A0%BC%E5%AD%90%E6%95%B0.md,52.7%,中等,107 -2258,2200-2299,2258. 逃离火灾,逃离火灾,https://leetcode.cn/problems/escape-the-spreading-fire/,escape-the-spreading-fire,广度优先搜索、数组、二分查找、矩阵,https://algo.itcharge.cn/Solutions/2200-2299/escape-the-spreading-fire/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2258.%20%E9%80%83%E7%A6%BB%E7%81%AB%E7%81%BE.md,35.9%,困难,88 -2259,2200-2299,2259. 移除指定数字得到的最大结果,移除指定数字得到的最大结果,https://leetcode.cn/problems/remove-digit-from-number-to-maximize-result/,remove-digit-from-number-to-maximize-result,贪心、字符串、枚举,https://algo.itcharge.cn/Solutions/2200-2299/remove-digit-from-number-to-maximize-result/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2259.%20%E7%A7%BB%E9%99%A4%E6%8C%87%E5%AE%9A%E6%95%B0%E5%AD%97%E5%BE%97%E5%88%B0%E7%9A%84%E6%9C%80%E5%A4%A7%E7%BB%93%E6%9E%9C.md,50.1%,简单,155 -2260,2200-2299,2260. 必须拿起的最小连续卡牌数,必须拿起的最小连续卡牌数,https://leetcode.cn/problems/minimum-consecutive-cards-to-pick-up/,minimum-consecutive-cards-to-pick-up,数组、哈希表、滑动窗口,https://algo.itcharge.cn/Solutions/2200-2299/minimum-consecutive-cards-to-pick-up/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2260.%20%E5%BF%85%E9%A1%BB%E6%8B%BF%E8%B5%B7%E7%9A%84%E6%9C%80%E5%B0%8F%E8%BF%9E%E7%BB%AD%E5%8D%A1%E7%89%8C%E6%95%B0.md,51.2%,中等,153 -2261,2200-2299,2261. 含最多 K 个可整除元素的子数组,含最多 K 个可整除元素的子数组,https://leetcode.cn/problems/k-divisible-elements-subarrays/,k-divisible-elements-subarrays,字典树、数组、哈希表、枚举、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/2200-2299/k-divisible-elements-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2261.%20%E5%90%AB%E6%9C%80%E5%A4%9A%20K%20%E4%B8%AA%E5%8F%AF%E6%95%B4%E9%99%A4%E5%85%83%E7%B4%A0%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,52.9%,中等,132 -2262,2200-2299,2262. 字符串的总引力,字符串的总引力,https://leetcode.cn/problems/total-appeal-of-a-string/,total-appeal-of-a-string,哈希表、字符串、动态规划,https://algo.itcharge.cn/Solutions/2200-2299/total-appeal-of-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2262.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%80%BB%E5%BC%95%E5%8A%9B.md,57.5%,困难,121 -2263,2200-2299,2263. 数组变为有序的最小操作次数,数组变为有序的最小操作次数,https://leetcode.cn/problems/make-array-non-decreasing-or-non-increasing/,make-array-non-decreasing-or-non-increasing,贪心、动态规划,https://algo.itcharge.cn/Solutions/2200-2299/make-array-non-decreasing-or-non-increasing/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2263.%20%E6%95%B0%E7%BB%84%E5%8F%98%E4%B8%BA%E6%9C%89%E5%BA%8F%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,74.0%,困难,15 -2264,2200-2299,2264. 字符串中最大的 3 位相同数字,字符串中最大的 3 位相同数字,https://leetcode.cn/problems/largest-3-same-digit-number-in-string/,largest-3-same-digit-number-in-string,字符串,https://algo.itcharge.cn/Solutions/2200-2299/largest-3-same-digit-number-in-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2264.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E6%9C%80%E5%A4%A7%E7%9A%84%203%20%E4%BD%8D%E7%9B%B8%E5%90%8C%E6%95%B0%E5%AD%97.md,62.0%,简单,170 -2265,2200-2299,2265. 统计值等于子树平均值的节点数,统计值等于子树平均值的节点数,https://leetcode.cn/problems/count-nodes-equal-to-average-of-subtree/,count-nodes-equal-to-average-of-subtree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/2200-2299/count-nodes-equal-to-average-of-subtree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2265.%20%E7%BB%9F%E8%AE%A1%E5%80%BC%E7%AD%89%E4%BA%8E%E5%AD%90%E6%A0%91%E5%B9%B3%E5%9D%87%E5%80%BC%E7%9A%84%E8%8A%82%E7%82%B9%E6%95%B0.md,82.6%,中等,200 -2266,2200-2299,2266. 统计打字方案数,统计打字方案数,https://leetcode.cn/problems/count-number-of-texts/,count-number-of-texts,哈希表、数学、字符串、动态规划,https://algo.itcharge.cn/Solutions/2200-2299/count-number-of-texts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2266.%20%E7%BB%9F%E8%AE%A1%E6%89%93%E5%AD%97%E6%96%B9%E6%A1%88%E6%95%B0.md,43.6%,中等,138 -2267,2200-2299,2267. 检查是否有合法括号字符串路径,检查是否有合法括号字符串路径,https://leetcode.cn/problems/check-if-there-is-a-valid-parentheses-string-path/,check-if-there-is-a-valid-parentheses-string-path,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/2200-2299/check-if-there-is-a-valid-parentheses-string-path/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2267.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%9C%89%E5%90%88%E6%B3%95%E6%8B%AC%E5%8F%B7%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%B7%AF%E5%BE%84.md,37.9%,困难,132 -2268,2200-2299,2268. 最少按键次数,最少按键次数,https://leetcode.cn/problems/minimum-number-of-keypresses/,minimum-number-of-keypresses,贪心、数组、字符串、计数、排序,https://algo.itcharge.cn/Solutions/2200-2299/minimum-number-of-keypresses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2268.%20%E6%9C%80%E5%B0%91%E6%8C%89%E9%94%AE%E6%AC%A1%E6%95%B0.md,68.0%,中等,18 -2269,2200-2299,2269. 找到一个数字的 K 美丽值,找到一个数字的 K 美丽值,https://leetcode.cn/problems/find-the-k-beauty-of-a-number/,find-the-k-beauty-of-a-number,数学、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/2200-2299/find-the-k-beauty-of-a-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2269.%20%E6%89%BE%E5%88%B0%E4%B8%80%E4%B8%AA%E6%95%B0%E5%AD%97%E7%9A%84%20K%20%E7%BE%8E%E4%B8%BD%E5%80%BC.md,62.7%,简单,124 -2270,2200-2299,2270. 分割数组的方案数,分割数组的方案数,https://leetcode.cn/problems/number-of-ways-to-split-array/,number-of-ways-to-split-array,数组、前缀和,https://algo.itcharge.cn/Solutions/2200-2299/number-of-ways-to-split-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2270.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,46.4%,中等,76 -2271,2200-2299,2271. 毯子覆盖的最多白色砖块数,毯子覆盖的最多白色砖块数,https://leetcode.cn/problems/maximum-white-tiles-covered-by-a-carpet/,maximum-white-tiles-covered-by-a-carpet,贪心、数组、二分查找、前缀和、排序,https://algo.itcharge.cn/Solutions/2200-2299/maximum-white-tiles-covered-by-a-carpet/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2271.%20%E6%AF%AF%E5%AD%90%E8%A6%86%E7%9B%96%E7%9A%84%E6%9C%80%E5%A4%9A%E7%99%BD%E8%89%B2%E7%A0%96%E5%9D%97%E6%95%B0.md,32.8%,中等,101 -2272,2200-2299,2272. 最大波动的子字符串,最大波动的子字符串,https://leetcode.cn/problems/substring-with-largest-variance/,substring-with-largest-variance,数组、动态规划,https://algo.itcharge.cn/Solutions/2200-2299/substring-with-largest-variance/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2272.%20%E6%9C%80%E5%A4%A7%E6%B3%A2%E5%8A%A8%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,38.8%,困难,42 -2273,2200-2299,2273. 移除字母异位词后的结果数组,移除字母异位词后的结果数组,https://leetcode.cn/problems/find-resultant-array-after-removing-anagrams/,find-resultant-array-after-removing-anagrams,数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/2200-2299/find-resultant-array-after-removing-anagrams/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2273.%20%E7%A7%BB%E9%99%A4%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E5%90%8E%E7%9A%84%E7%BB%93%E6%9E%9C%E6%95%B0%E7%BB%84.md,59.7%,简单,154 -2274,2200-2299,2274. 不含特殊楼层的最大连续楼层数,不含特殊楼层的最大连续楼层数,https://leetcode.cn/problems/maximum-consecutive-floors-without-special-floors/,maximum-consecutive-floors-without-special-floors,数组、排序,https://algo.itcharge.cn/Solutions/2200-2299/maximum-consecutive-floors-without-special-floors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2274.%20%E4%B8%8D%E5%90%AB%E7%89%B9%E6%AE%8A%E6%A5%BC%E5%B1%82%E7%9A%84%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD%E6%A5%BC%E5%B1%82%E6%95%B0.md,52.6%,中等,110 -2275,2200-2299,2275. 按位与结果大于零的最长组合,按位与结果大于零的最长组合,https://leetcode.cn/problems/largest-combination-with-bitwise-and-greater-than-zero/,largest-combination-with-bitwise-and-greater-than-zero,位运算、数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2200-2299/largest-combination-with-bitwise-and-greater-than-zero/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2275.%20%E6%8C%89%E4%BD%8D%E4%B8%8E%E7%BB%93%E6%9E%9C%E5%A4%A7%E4%BA%8E%E9%9B%B6%E7%9A%84%E6%9C%80%E9%95%BF%E7%BB%84%E5%90%88.md,60.1%,中等,102 -2276,2200-2299,2276. 统计区间中的整数数目,统计区间中的整数数目,https://leetcode.cn/problems/count-integers-in-intervals/,count-integers-in-intervals,设计、线段树、有序集合,https://algo.itcharge.cn/Solutions/2200-2299/count-integers-in-intervals/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2276.%20%E7%BB%9F%E8%AE%A1%E5%8C%BA%E9%97%B4%E4%B8%AD%E7%9A%84%E6%95%B4%E6%95%B0%E6%95%B0%E7%9B%AE.md,36.9%,困难,102 -2277,2200-2299,2277. 树中最接近路径的节点,树中最接近路径的节点,https://leetcode.cn/problems/closest-node-to-path-in-tree/,closest-node-to-path-in-tree,树、深度优先搜索、广度优先搜索、数组,https://algo.itcharge.cn/Solutions/2200-2299/closest-node-to-path-in-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2277.%20%E6%A0%91%E4%B8%AD%E6%9C%80%E6%8E%A5%E8%BF%91%E8%B7%AF%E5%BE%84%E7%9A%84%E8%8A%82%E7%82%B9.md,71.9%,困难,13 -2278,2200-2299,2278. 字母在字符串中的百分比,字母在字符串中的百分比,https://leetcode.cn/problems/percentage-of-letter-in-string/,percentage-of-letter-in-string,字符串,https://algo.itcharge.cn/Solutions/2200-2299/percentage-of-letter-in-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2278.%20%E5%AD%97%E6%AF%8D%E5%9C%A8%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E7%99%BE%E5%88%86%E6%AF%94.md,80.8%,简单,136 -2279,2200-2299,2279. 装满石头的背包的最大数量,装满石头的背包的最大数量,https://leetcode.cn/problems/maximum-bags-with-full-capacity-of-rocks/,maximum-bags-with-full-capacity-of-rocks,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2200-2299/maximum-bags-with-full-capacity-of-rocks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2279.%20%E8%A3%85%E6%BB%A1%E7%9F%B3%E5%A4%B4%E7%9A%84%E8%83%8C%E5%8C%85%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md,63.8%,中等,137 -2280,2200-2299,2280. 表示一个折线图的最少线段数,表示一个折线图的最少线段数,https://leetcode.cn/problems/minimum-lines-to-represent-a-line-chart/,minimum-lines-to-represent-a-line-chart,几何、数组、数学、数论、排序,https://algo.itcharge.cn/Solutions/2200-2299/minimum-lines-to-represent-a-line-chart/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2280.%20%E8%A1%A8%E7%A4%BA%E4%B8%80%E4%B8%AA%E6%8A%98%E7%BA%BF%E5%9B%BE%E7%9A%84%E6%9C%80%E5%B0%91%E7%BA%BF%E6%AE%B5%E6%95%B0.md,22.4%,中等,155 -2281,2200-2299,2281. 巫师的总力量和,巫师的总力量和,https://leetcode.cn/problems/sum-of-total-strength-of-wizards/,sum-of-total-strength-of-wizards,栈、数组、前缀和、单调栈,https://algo.itcharge.cn/Solutions/2200-2299/sum-of-total-strength-of-wizards/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2281.%20%E5%B7%AB%E5%B8%88%E7%9A%84%E6%80%BB%E5%8A%9B%E9%87%8F%E5%92%8C.md,26.6%,困难,73 -2282,2200-2299,2282. 在一个网格中可以看到的人数,在一个网格中可以看到的人数,https://leetcode.cn/problems/number-of-people-that-can-be-seen-in-a-grid/,number-of-people-that-can-be-seen-in-a-grid,栈、数组、矩阵、单调栈,https://algo.itcharge.cn/Solutions/2200-2299/number-of-people-that-can-be-seen-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2282.%20%E5%9C%A8%E4%B8%80%E4%B8%AA%E7%BD%91%E6%A0%BC%E4%B8%AD%E5%8F%AF%E4%BB%A5%E7%9C%8B%E5%88%B0%E7%9A%84%E4%BA%BA%E6%95%B0.md,48.3%,中等,10 -2283,2200-2299,2283. 判断一个数的数字计数是否等于数位的值,判断一个数的数字计数是否等于数位的值,https://leetcode.cn/problems/check-if-number-has-equal-digit-count-and-digit-value/,check-if-number-has-equal-digit-count-and-digit-value,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/2200-2299/check-if-number-has-equal-digit-count-and-digit-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2283.%20%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%AA%E6%95%B0%E7%9A%84%E6%95%B0%E5%AD%97%E8%AE%A1%E6%95%B0%E6%98%AF%E5%90%A6%E7%AD%89%E4%BA%8E%E6%95%B0%E4%BD%8D%E7%9A%84%E5%80%BC.md,79.0%,简单,379 -2284,2200-2299,2284. 最多单词数的发件人,最多单词数的发件人,https://leetcode.cn/problems/sender-with-largest-word-count/,sender-with-largest-word-count,数组、哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/2200-2299/sender-with-largest-word-count/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2284.%20%E6%9C%80%E5%A4%9A%E5%8D%95%E8%AF%8D%E6%95%B0%E7%9A%84%E5%8F%91%E4%BB%B6%E4%BA%BA.md,56.8%,中等,92 -2285,2200-2299,2285. 道路的最大总重要性,道路的最大总重要性,https://leetcode.cn/problems/maximum-total-importance-of-roads/,maximum-total-importance-of-roads,贪心、图、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2200-2299/maximum-total-importance-of-roads/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2285.%20%E9%81%93%E8%B7%AF%E7%9A%84%E6%9C%80%E5%A4%A7%E6%80%BB%E9%87%8D%E8%A6%81%E6%80%A7.md,57.6%,中等,89 -2286,2200-2299,2286. 以组为单位订音乐会的门票,以组为单位订音乐会的门票,https://leetcode.cn/problems/booking-concert-tickets-in-groups/,booking-concert-tickets-in-groups,设计、树状数组、线段树、二分查找,https://algo.itcharge.cn/Solutions/2200-2299/booking-concert-tickets-in-groups/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2286.%20%E4%BB%A5%E7%BB%84%E4%B8%BA%E5%8D%95%E4%BD%8D%E8%AE%A2%E9%9F%B3%E4%B9%90%E4%BC%9A%E7%9A%84%E9%97%A8%E7%A5%A8.md,23.4%,困难,59 -2287,2200-2299,2287. 重排字符形成目标字符串,重排字符形成目标字符串,https://leetcode.cn/problems/rearrange-characters-to-make-target-string/,rearrange-characters-to-make-target-string,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/2200-2299/rearrange-characters-to-make-target-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2287.%20%E9%87%8D%E6%8E%92%E5%AD%97%E7%AC%A6%E5%BD%A2%E6%88%90%E7%9B%AE%E6%A0%87%E5%AD%97%E7%AC%A6%E4%B8%B2.md,65.1%,简单,422 -2288,2200-2299,2288. 价格减免,价格减免,https://leetcode.cn/problems/apply-discount-to-prices/,apply-discount-to-prices,字符串,https://algo.itcharge.cn/Solutions/2200-2299/apply-discount-to-prices/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2288.%20%E4%BB%B7%E6%A0%BC%E5%87%8F%E5%85%8D.md,31.5%,中等,114 -2289,2200-2299,2289. 使数组按非递减顺序排列,使数组按非递减顺序排列,https://leetcode.cn/problems/steps-to-make-array-non-decreasing/,steps-to-make-array-non-decreasing,栈、数组、链表、单调栈,https://algo.itcharge.cn/Solutions/2200-2299/steps-to-make-array-non-decreasing/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2289.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E6%8C%89%E9%9D%9E%E9%80%92%E5%87%8F%E9%A1%BA%E5%BA%8F%E6%8E%92%E5%88%97.md,21.9%,中等,99 -2290,2200-2299,2290. 到达角落需要移除障碍物的最小数目,到达角落需要移除障碍物的最小数目,https://leetcode.cn/problems/minimum-obstacle-removal-to-reach-corner/,minimum-obstacle-removal-to-reach-corner,广度优先搜索、图、数组、矩阵、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/2200-2299/minimum-obstacle-removal-to-reach-corner/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2290.%20%E5%88%B0%E8%BE%BE%E8%A7%92%E8%90%BD%E9%9C%80%E8%A6%81%E7%A7%BB%E9%99%A4%E9%9A%9C%E7%A2%8D%E7%89%A9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%95%B0%E7%9B%AE.md,56.1%,困难,98 -2291,2200-2299,2291. 最大股票收益,最大股票收益,https://leetcode.cn/problems/maximum-profit-from-trading-stocks/,maximum-profit-from-trading-stocks,数组、动态规划,https://algo.itcharge.cn/Solutions/2200-2299/maximum-profit-from-trading-stocks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2291.%20%E6%9C%80%E5%A4%A7%E8%82%A1%E7%A5%A8%E6%94%B6%E7%9B%8A.md,58.6%,中等,15 -2292,2200-2299,2292. 连续两年有 3 个及以上订单的产品,连续两年有 3 个及以上订单的产品,https://leetcode.cn/problems/products-with-three-or-more-orders-in-two-consecutive-years/,products-with-three-or-more-orders-in-two-consecutive-years,数据库,https://algo.itcharge.cn/Solutions/2200-2299/products-with-three-or-more-orders-in-two-consecutive-years/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2292.%20%E8%BF%9E%E7%BB%AD%E4%B8%A4%E5%B9%B4%E6%9C%89%203%20%E4%B8%AA%E5%8F%8A%E4%BB%A5%E4%B8%8A%E8%AE%A2%E5%8D%95%E7%9A%84%E4%BA%A7%E5%93%81.md,44.0%,中等,13 -2293,2200-2299,2293. 极大极小游戏,极大极小游戏,https://leetcode.cn/problems/min-max-game/,min-max-game,数组、模拟,https://algo.itcharge.cn/Solutions/2200-2299/min-max-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2293.%20%E6%9E%81%E5%A4%A7%E6%9E%81%E5%B0%8F%E6%B8%B8%E6%88%8F.md,73.0%,简单,316 -2294,2200-2299,2294. 划分数组使最大差为 K,划分数组使最大差为 K,https://leetcode.cn/problems/partition-array-such-that-maximum-difference-is-k/,partition-array-such-that-maximum-difference-is-k,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2200-2299/partition-array-such-that-maximum-difference-is-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2294.%20%E5%88%92%E5%88%86%E6%95%B0%E7%BB%84%E4%BD%BF%E6%9C%80%E5%A4%A7%E5%B7%AE%E4%B8%BA%20K.md,68.0%,中等,111 -2295,2200-2299,2295. 替换数组中的元素,替换数组中的元素,https://leetcode.cn/problems/replace-elements-in-an-array/,replace-elements-in-an-array,数组、哈希表、模拟,https://algo.itcharge.cn/Solutions/2200-2299/replace-elements-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2295.%20%E6%9B%BF%E6%8D%A2%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%85%83%E7%B4%A0.md,57.8%,中等,114 -2296,2200-2299,2296. 设计一个文本编辑器,设计一个文本编辑器,https://leetcode.cn/problems/design-a-text-editor/,design-a-text-editor,栈、设计、链表、字符串、双向链表、模拟,https://algo.itcharge.cn/Solutions/2200-2299/design-a-text-editor/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2296.%20%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E6%96%87%E6%9C%AC%E7%BC%96%E8%BE%91%E5%99%A8.md,43.8%,困难,122 -2297,2200-2299,2297. 跳跃游戏 VIII,跳跃游戏 VIII,https://leetcode.cn/problems/jump-game-viii/,jump-game-viii,栈、图、数组、动态规划、最短路、单调栈,https://algo.itcharge.cn/Solutions/2200-2299/jump-game-viii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2297.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20VIII.md,56.3%,中等,14 -2298,2200-2299,2298. 周末任务计数,周末任务计数,https://leetcode.cn/problems/tasks-count-in-the-weekend/,tasks-count-in-the-weekend,数据库,https://algo.itcharge.cn/Solutions/2200-2299/tasks-count-in-the-weekend/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2298.%20%E5%91%A8%E6%9C%AB%E4%BB%BB%E5%8A%A1%E8%AE%A1%E6%95%B0.md,78.9%,中等,11 -2299,2200-2299,2299. 强密码检验器 II,强密码检验器 II,https://leetcode.cn/problems/strong-password-checker-ii/,strong-password-checker-ii,字符串,https://algo.itcharge.cn/Solutions/2200-2299/strong-password-checker-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2299.%20%E5%BC%BA%E5%AF%86%E7%A0%81%E6%A3%80%E9%AA%8C%E5%99%A8%20II.md,65.6%,简单,291 -2300,2300-2399,2300. 咒语和药水的成功对数,咒语和药水的成功对数,https://leetcode.cn/problems/successful-pairs-of-spells-and-potions/,successful-pairs-of-spells-and-potions,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/2300-2399/successful-pairs-of-spells-and-potions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2300.%20%E5%92%92%E8%AF%AD%E5%92%8C%E8%8D%AF%E6%B0%B4%E7%9A%84%E6%88%90%E5%8A%9F%E5%AF%B9%E6%95%B0.md,39.3%,中等,115 -2301,2300-2399,2301. 替换字符后匹配,替换字符后匹配,https://leetcode.cn/problems/match-substring-after-replacement/,match-substring-after-replacement,数组、哈希表、字符串、字符串匹配,https://algo.itcharge.cn/Solutions/2300-2399/match-substring-after-replacement/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2301.%20%E6%9B%BF%E6%8D%A2%E5%AD%97%E7%AC%A6%E5%90%8E%E5%8C%B9%E9%85%8D.md,45.3%,困难,67 -2302,2300-2399,2302. 统计得分小于 K 的子数组数目,统计得分小于 K 的子数组数目,https://leetcode.cn/problems/count-subarrays-with-score-less-than-k/,count-subarrays-with-score-less-than-k,数组、二分查找、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/2300-2399/count-subarrays-with-score-less-than-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2302.%20%E7%BB%9F%E8%AE%A1%E5%BE%97%E5%88%86%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md,50.9%,困难,83 -2303,2300-2399,2303. 计算应缴税款总额,计算应缴税款总额,https://leetcode.cn/problems/calculate-amount-paid-in-taxes/,calculate-amount-paid-in-taxes,数组、模拟,https://algo.itcharge.cn/Solutions/2300-2399/calculate-amount-paid-in-taxes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2303.%20%E8%AE%A1%E7%AE%97%E5%BA%94%E7%BC%B4%E7%A8%8E%E6%AC%BE%E6%80%BB%E9%A2%9D.md,70.5%,简单,211 -2304,2300-2399,2304. 网格中的最小路径代价,网格中的最小路径代价,https://leetcode.cn/problems/minimum-path-cost-in-a-grid/,minimum-path-cost-in-a-grid,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/2300-2399/minimum-path-cost-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2304.%20%E7%BD%91%E6%A0%BC%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E4%BB%A3%E4%BB%B7.md,64.2%,中等,125 -2305,2300-2399,2305. 公平分发饼干,公平分发饼干,https://leetcode.cn/problems/fair-distribution-of-cookies/,fair-distribution-of-cookies,位运算、数组、动态规划、回溯、状态压缩,https://algo.itcharge.cn/Solutions/2300-2399/fair-distribution-of-cookies/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2305.%20%E5%85%AC%E5%B9%B3%E5%88%86%E5%8F%91%E9%A5%BC%E5%B9%B2.md,72.5%,中等,135 -2306,2300-2399,2306. 公司命名,公司命名,https://leetcode.cn/problems/naming-a-company/,naming-a-company,位运算、数组、哈希表、字符串、枚举,https://algo.itcharge.cn/Solutions/2300-2399/naming-a-company/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2306.%20%E5%85%AC%E5%8F%B8%E5%91%BD%E5%90%8D.md,44.5%,困难,68 -2307,2300-2399,2307. 检查方程中的矛盾之处,检查方程中的矛盾之处,https://leetcode.cn/problems/check-for-contradictions-in-equations/,check-for-contradictions-in-equations,深度优先搜索、并查集、图、数组,https://algo.itcharge.cn/Solutions/2300-2399/check-for-contradictions-in-equations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2307.%20%E6%A3%80%E6%9F%A5%E6%96%B9%E7%A8%8B%E4%B8%AD%E7%9A%84%E7%9F%9B%E7%9B%BE%E4%B9%8B%E5%A4%84.md,44.0%,困难,6 -2308,2300-2399,2308. 按性别排列表格,按性别排列表格,https://leetcode.cn/problems/arrange-table-by-gender/,arrange-table-by-gender,数据库,https://algo.itcharge.cn/Solutions/2300-2399/arrange-table-by-gender/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2308.%20%E6%8C%89%E6%80%A7%E5%88%AB%E6%8E%92%E5%88%97%E8%A1%A8%E6%A0%BC.md,77.5%,中等,13 -2309,2300-2399,2309. 兼具大小写的最好英文字母,兼具大小写的最好英文字母,https://leetcode.cn/problems/greatest-english-letter-in-upper-and-lower-case/,greatest-english-letter-in-upper-and-lower-case,哈希表、字符串、枚举,https://algo.itcharge.cn/Solutions/2300-2399/greatest-english-letter-in-upper-and-lower-case/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2309.%20%E5%85%BC%E5%85%B7%E5%A4%A7%E5%B0%8F%E5%86%99%E7%9A%84%E6%9C%80%E5%A5%BD%E8%8B%B1%E6%96%87%E5%AD%97%E6%AF%8D.md,71.8%,简单,328 -2310,2300-2399,2310. 个位数字为 K 的整数之和,个位数字为 K 的整数之和,https://leetcode.cn/problems/sum-of-numbers-with-units-digit-k/,sum-of-numbers-with-units-digit-k,贪心、数学、动态规划、枚举,https://algo.itcharge.cn/Solutions/2300-2399/sum-of-numbers-with-units-digit-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2310.%20%E4%B8%AA%E4%BD%8D%E6%95%B0%E5%AD%97%E4%B8%BA%20K%20%E7%9A%84%E6%95%B4%E6%95%B0%E4%B9%8B%E5%92%8C.md,27.6%,中等,128 -2311,2300-2399,2311. 小于等于 K 的最长二进制子序列,小于等于 K 的最长二进制子序列,https://leetcode.cn/problems/longest-binary-subsequence-less-than-or-equal-to-k/,longest-binary-subsequence-less-than-or-equal-to-k,贪心、记忆化搜索、字符串、动态规划,https://algo.itcharge.cn/Solutions/2300-2399/longest-binary-subsequence-less-than-or-equal-to-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2311.%20%E5%B0%8F%E4%BA%8E%E7%AD%89%E4%BA%8E%20K%20%E7%9A%84%E6%9C%80%E9%95%BF%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%90%E5%BA%8F%E5%88%97.md,37.0%,中等,133 -2312,2300-2399,2312. 卖木头块,卖木头块,https://leetcode.cn/problems/selling-pieces-of-wood/,selling-pieces-of-wood,记忆化搜索、数组、动态规划,https://algo.itcharge.cn/Solutions/2300-2399/selling-pieces-of-wood/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2312.%20%E5%8D%96%E6%9C%A8%E5%A4%B4%E5%9D%97.md,53.7%,困难,60 -2313,2300-2399,2313. 二叉树中得到结果所需的最少翻转次数,二叉树中得到结果所需的最少翻转次数,https://leetcode.cn/problems/minimum-flips-in-binary-tree-to-get-result/,minimum-flips-in-binary-tree-to-get-result,树、深度优先搜索、动态规划、二叉树,https://algo.itcharge.cn/Solutions/2300-2399/minimum-flips-in-binary-tree-to-get-result/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2313.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E5%BE%97%E5%88%B0%E7%BB%93%E6%9E%9C%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E5%B0%91%E7%BF%BB%E8%BD%AC%E6%AC%A1%E6%95%B0.md,67.8%,困难,15 -2314,2300-2399,2314. 每个城市最高气温的第一天,每个城市最高气温的第一天,https://leetcode.cn/problems/the-first-day-of-the-maximum-recorded-degree-in-each-city/,the-first-day-of-the-maximum-recorded-degree-in-each-city,数据库,https://algo.itcharge.cn/Solutions/2300-2399/the-first-day-of-the-maximum-recorded-degree-in-each-city/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2314.%20%E6%AF%8F%E4%B8%AA%E5%9F%8E%E5%B8%82%E6%9C%80%E9%AB%98%E6%B0%94%E6%B8%A9%E7%9A%84%E7%AC%AC%E4%B8%80%E5%A4%A9.md,71.5%,中等,12 -2315,2300-2399,2315. 统计星号,统计星号,https://leetcode.cn/problems/count-asterisks/,count-asterisks,字符串,https://algo.itcharge.cn/Solutions/2300-2399/count-asterisks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2315.%20%E7%BB%9F%E8%AE%A1%E6%98%9F%E5%8F%B7.md,85.8%,简单,464 -2316,2300-2399,2316. 统计无向图中无法互相到达点对数,统计无向图中无法互相到达点对数,https://leetcode.cn/problems/count-unreachable-pairs-of-nodes-in-an-undirected-graph/,count-unreachable-pairs-of-nodes-in-an-undirected-graph,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/2300-2399/count-unreachable-pairs-of-nodes-in-an-undirected-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2316.%20%E7%BB%9F%E8%AE%A1%E6%97%A0%E5%90%91%E5%9B%BE%E4%B8%AD%E6%97%A0%E6%B3%95%E4%BA%92%E7%9B%B8%E5%88%B0%E8%BE%BE%E7%82%B9%E5%AF%B9%E6%95%B0.md,39.1%,中等,118 -2317,2300-2399,2317. 操作后的最大异或和,操作后的最大异或和,https://leetcode.cn/problems/maximum-xor-after-operations/,maximum-xor-after-operations,位运算、数组、数学,https://algo.itcharge.cn/Solutions/2300-2399/maximum-xor-after-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2317.%20%E6%93%8D%E4%BD%9C%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BC%82%E6%88%96%E5%92%8C.md,85.2%,中等,67 -2318,2300-2399,2318. 不同骰子序列的数目,不同骰子序列的数目,https://leetcode.cn/problems/number-of-distinct-roll-sequences/,number-of-distinct-roll-sequences,记忆化搜索、动态规划,https://algo.itcharge.cn/Solutions/2300-2399/number-of-distinct-roll-sequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2318.%20%E4%B8%8D%E5%90%8C%E9%AA%B0%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E6%95%B0%E7%9B%AE.md,57.1%,困难,70 -2319,2300-2399,2319. 判断矩阵是否是一个 X 矩阵,判断矩阵是否是一个 X 矩阵,https://leetcode.cn/problems/check-if-matrix-is-x-matrix/,check-if-matrix-is-x-matrix,数组、矩阵,https://algo.itcharge.cn/Solutions/2300-2399/check-if-matrix-is-x-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2319.%20%E5%88%A4%E6%96%AD%E7%9F%A9%E9%98%B5%E6%98%AF%E5%90%A6%E6%98%AF%E4%B8%80%E4%B8%AA%20X%20%E7%9F%A9%E9%98%B5.md,76.2%,简单,340 -2320,2300-2399,2320. 统计放置房子的方式数,统计放置房子的方式数,https://leetcode.cn/problems/count-number-of-ways-to-place-houses/,count-number-of-ways-to-place-houses,动态规划,https://algo.itcharge.cn/Solutions/2300-2399/count-number-of-ways-to-place-houses/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2320.%20%E7%BB%9F%E8%AE%A1%E6%94%BE%E7%BD%AE%E6%88%BF%E5%AD%90%E7%9A%84%E6%96%B9%E5%BC%8F%E6%95%B0.md,40.4%,中等,94 -2321,2300-2399,2321. 拼接数组的最大分数,拼接数组的最大分数,https://leetcode.cn/problems/maximum-score-of-spliced-array/,maximum-score-of-spliced-array,数组、动态规划,https://algo.itcharge.cn/Solutions/2300-2399/maximum-score-of-spliced-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2321.%20%E6%8B%BC%E6%8E%A5%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%88%86%E6%95%B0.md,51.3%,困难,106 -2322,2300-2399,2322. 从树中删除边的最小分数,从树中删除边的最小分数,https://leetcode.cn/problems/minimum-score-after-removals-on-a-tree/,minimum-score-after-removals-on-a-tree,位运算、树、深度优先搜索、数组,https://algo.itcharge.cn/Solutions/2300-2399/minimum-score-after-removals-on-a-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2322.%20%E4%BB%8E%E6%A0%91%E4%B8%AD%E5%88%A0%E9%99%A4%E8%BE%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E5%88%86%E6%95%B0.md,58.9%,困难,55 -2323,2300-2399,2323. 完成所有工作的最短时间 II,完成所有工作的最短时间 II,https://leetcode.cn/problems/find-minimum-time-to-finish-all-jobs-ii/,find-minimum-time-to-finish-all-jobs-ii,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2300-2399/find-minimum-time-to-finish-all-jobs-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2323.%20%E5%AE%8C%E6%88%90%E6%89%80%E6%9C%89%E5%B7%A5%E4%BD%9C%E7%9A%84%E6%9C%80%E7%9F%AD%E6%97%B6%E9%97%B4%20II.md,70.6%,中等,10 -2324,2300-2399,2324. 产品销售分析 IV,产品销售分析 IV,https://leetcode.cn/problems/product-sales-analysis-iv/,product-sales-analysis-iv,数据库,https://algo.itcharge.cn/Solutions/2300-2399/product-sales-analysis-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2324.%20%E4%BA%A7%E5%93%81%E9%94%80%E5%94%AE%E5%88%86%E6%9E%90%20IV.md,70.7%,中等,10 -2325,2300-2399,2325. 解密消息,解密消息,https://leetcode.cn/problems/decode-the-message/,decode-the-message,哈希表、字符串,https://algo.itcharge.cn/Solutions/2300-2399/decode-the-message/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2325.%20%E8%A7%A3%E5%AF%86%E6%B6%88%E6%81%AF.md,86.0%,简单,429 -2326,2300-2399,2326. 螺旋矩阵 IV,螺旋矩阵 IV,https://leetcode.cn/problems/spiral-matrix-iv/,spiral-matrix-iv,数组、链表、矩阵、模拟,https://algo.itcharge.cn/Solutions/2300-2399/spiral-matrix-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2326.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5%20IV.md,66.7%,中等,138 -2327,2300-2399,2327. 知道秘密的人数,知道秘密的人数,https://leetcode.cn/problems/number-of-people-aware-of-a-secret/,number-of-people-aware-of-a-secret,队列、动态规划、模拟,https://algo.itcharge.cn/Solutions/2300-2399/number-of-people-aware-of-a-secret/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2327.%20%E7%9F%A5%E9%81%93%E7%A7%98%E5%AF%86%E7%9A%84%E4%BA%BA%E6%95%B0.md,45.7%,中等,197 -2328,2300-2399,2328. 网格图中递增路径的数目,网格图中递增路径的数目,https://leetcode.cn/problems/number-of-increasing-paths-in-a-grid/,number-of-increasing-paths-in-a-grid,深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/2300-2399/number-of-increasing-paths-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2328.%20%E7%BD%91%E6%A0%BC%E5%9B%BE%E4%B8%AD%E9%80%92%E5%A2%9E%E8%B7%AF%E5%BE%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,50.9%,困难,115 -2329,2300-2399,2329. 产品销售分析Ⅴ,产品销售分析Ⅴ,https://leetcode.cn/problems/product-sales-analysis-v/,product-sales-analysis-v,数据库,https://algo.itcharge.cn/Solutions/2300-2399/product-sales-analysis-v/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2329.%20%E4%BA%A7%E5%93%81%E9%94%80%E5%94%AE%E5%88%86%E6%9E%90%E2%85%A4.md,72.4%,简单,10 -2330,2300-2399,2330. 有效的回文 IV,有效的回文 IV,https://leetcode.cn/problems/valid-palindrome-iv/,valid-palindrome-iv,双指针、字符串,https://algo.itcharge.cn/Solutions/2300-2399/valid-palindrome-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2330.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%9B%9E%E6%96%87%20IV.md,81.5%,中等,15 -2331,2300-2399,2331. 计算布尔二叉树的值,计算布尔二叉树的值,https://leetcode.cn/problems/evaluate-boolean-binary-tree/,evaluate-boolean-binary-tree,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/2300-2399/evaluate-boolean-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2331.%20%E8%AE%A1%E7%AE%97%E5%B8%83%E5%B0%94%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%80%BC.md,84.0%,简单,362 -2332,2300-2399,2332. 坐上公交的最晚时间,坐上公交的最晚时间,https://leetcode.cn/problems/the-latest-time-to-catch-a-bus/,the-latest-time-to-catch-a-bus,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/2300-2399/the-latest-time-to-catch-a-bus/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2332.%20%E5%9D%90%E4%B8%8A%E5%85%AC%E4%BA%A4%E7%9A%84%E6%9C%80%E6%99%9A%E6%97%B6%E9%97%B4.md,24.3%,中等,92 -2333,2300-2399,2333. 最小差值平方和,最小差值平方和,https://leetcode.cn/problems/minimum-sum-of-squared-difference/,minimum-sum-of-squared-difference,数组、数学、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2300-2399/minimum-sum-of-squared-difference/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2333.%20%E6%9C%80%E5%B0%8F%E5%B7%AE%E5%80%BC%E5%B9%B3%E6%96%B9%E5%92%8C.md,26.7%,中等,74 -2334,2300-2399,2334. 元素值大于变化阈值的子数组,元素值大于变化阈值的子数组,https://leetcode.cn/problems/subarray-with-elements-greater-than-varying-threshold/,subarray-with-elements-greater-than-varying-threshold,栈、并查集、数组、单调栈,https://algo.itcharge.cn/Solutions/2300-2399/subarray-with-elements-greater-than-varying-threshold/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2334.%20%E5%85%83%E7%B4%A0%E5%80%BC%E5%A4%A7%E4%BA%8E%E5%8F%98%E5%8C%96%E9%98%88%E5%80%BC%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,47.4%,困难,54 -2335,2300-2399,2335. 装满杯子需要的最短总时长,装满杯子需要的最短总时长,https://leetcode.cn/problems/minimum-amount-of-time-to-fill-cups/,minimum-amount-of-time-to-fill-cups,贪心、数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2300-2399/minimum-amount-of-time-to-fill-cups/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2335.%20%E8%A3%85%E6%BB%A1%E6%9D%AF%E5%AD%90%E9%9C%80%E8%A6%81%E7%9A%84%E6%9C%80%E7%9F%AD%E6%80%BB%E6%97%B6%E9%95%BF.md,64.5%,简单,392 -2336,2300-2399,2336. 无限集中的最小数字,无限集中的最小数字,https://leetcode.cn/problems/smallest-number-in-infinite-set/,smallest-number-in-infinite-set,设计、哈希表、堆(优先队列),https://algo.itcharge.cn/Solutions/2300-2399/smallest-number-in-infinite-set/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2336.%20%E6%97%A0%E9%99%90%E9%9B%86%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E6%95%B0%E5%AD%97.md,69.8%,中等,143 -2337,2300-2399,2337. 移动片段得到字符串,移动片段得到字符串,https://leetcode.cn/problems/move-pieces-to-obtain-a-string/,move-pieces-to-obtain-a-string,双指针、字符串,https://algo.itcharge.cn/Solutions/2300-2399/move-pieces-to-obtain-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2337.%20%E7%A7%BB%E5%8A%A8%E7%89%87%E6%AE%B5%E5%BE%97%E5%88%B0%E5%AD%97%E7%AC%A6%E4%B8%B2.md,39.3%,中等,124 -2338,2300-2399,2338. 统计理想数组的数目,统计理想数组的数目,https://leetcode.cn/problems/count-the-number-of-ideal-arrays/,count-the-number-of-ideal-arrays,数学、动态规划、组合数学、数论,https://algo.itcharge.cn/Solutions/2300-2399/count-the-number-of-ideal-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2338.%20%E7%BB%9F%E8%AE%A1%E7%90%86%E6%83%B3%E6%95%B0%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,30.7%,困难,46 -2339,2300-2399,2339. 联赛的所有比赛,联赛的所有比赛,https://leetcode.cn/problems/all-the-matches-of-the-league/,all-the-matches-of-the-league,数据库,https://algo.itcharge.cn/Solutions/2300-2399/all-the-matches-of-the-league/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2339.%20%E8%81%94%E8%B5%9B%E7%9A%84%E6%89%80%E6%9C%89%E6%AF%94%E8%B5%9B.md,75.8%,简单,11 -2340,2300-2399,2340. 生成有效数组的最少交换次数,生成有效数组的最少交换次数,https://leetcode.cn/problems/minimum-adjacent-swaps-to-make-a-valid-array/,minimum-adjacent-swaps-to-make-a-valid-array,贪心、数组,https://algo.itcharge.cn/Solutions/2300-2399/minimum-adjacent-swaps-to-make-a-valid-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2340.%20%E7%94%9F%E6%88%90%E6%9C%89%E6%95%88%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%91%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0.md,76.5%,中等,10 -2341,2300-2399,2341. 数组能形成多少数对,数组能形成多少数对,https://leetcode.cn/problems/maximum-number-of-pairs-in-array/,maximum-number-of-pairs-in-array,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2300-2399/maximum-number-of-pairs-in-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2341.%20%E6%95%B0%E7%BB%84%E8%83%BD%E5%BD%A2%E6%88%90%E5%A4%9A%E5%B0%91%E6%95%B0%E5%AF%B9.md,81.2%,简单,473 -2342,2300-2399,2342. 数位和相等数对的最大和,数位和相等数对的最大和,https://leetcode.cn/problems/max-sum-of-a-pair-with-equal-sum-of-digits/,max-sum-of-a-pair-with-equal-sum-of-digits,数组、哈希表、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2300-2399/max-sum-of-a-pair-with-equal-sum-of-digits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2342.%20%E6%95%B0%E4%BD%8D%E5%92%8C%E7%9B%B8%E7%AD%89%E6%95%B0%E5%AF%B9%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md,53.6%,中等,143 -2343,2300-2399,2343. 裁剪数字后查询第 K 小的数字,裁剪数字后查询第 K 小的数字,https://leetcode.cn/problems/query-kth-smallest-trimmed-number/,query-kth-smallest-trimmed-number,数组、字符串、分治、快速选择、基数排序、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2300-2399/query-kth-smallest-trimmed-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2343.%20%E8%A3%81%E5%89%AA%E6%95%B0%E5%AD%97%E5%90%8E%E6%9F%A5%E8%AF%A2%E7%AC%AC%20K%20%E5%B0%8F%E7%9A%84%E6%95%B0%E5%AD%97.md,41.3%,中等,143 -2344,2300-2399,2344. 使数组可以被整除的最少删除次数,使数组可以被整除的最少删除次数,https://leetcode.cn/problems/minimum-deletions-to-make-array-divisible/,minimum-deletions-to-make-array-divisible,数组、数学、数论、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2300-2399/minimum-deletions-to-make-array-divisible/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2344.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E5%8F%AF%E4%BB%A5%E8%A2%AB%E6%95%B4%E9%99%A4%E7%9A%84%E6%9C%80%E5%B0%91%E5%88%A0%E9%99%A4%E6%AC%A1%E6%95%B0.md,53.3%,困难,117 -2345,2300-2399,2345. 寻找可见山的数量,寻找可见山的数量,https://leetcode.cn/problems/finding-the-number-of-visible-mountains/,finding-the-number-of-visible-mountains,栈、数组、排序、单调栈,https://algo.itcharge.cn/Solutions/2300-2399/finding-the-number-of-visible-mountains/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2345.%20%E5%AF%BB%E6%89%BE%E5%8F%AF%E8%A7%81%E5%B1%B1%E7%9A%84%E6%95%B0%E9%87%8F.md,47.9%,中等,6 -2346,2300-2399,2346. 以百分比计算排名,以百分比计算排名,https://leetcode.cn/problems/compute-the-rank-as-a-percentage/,compute-the-rank-as-a-percentage,数据库,https://algo.itcharge.cn/Solutions/2300-2399/compute-the-rank-as-a-percentage/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2346.%20%E4%BB%A5%E7%99%BE%E5%88%86%E6%AF%94%E8%AE%A1%E7%AE%97%E6%8E%92%E5%90%8D.md,37.5%,中等,9 -2347,2300-2399,2347. 最好的扑克手牌,最好的扑克手牌,https://leetcode.cn/problems/best-poker-hand/,best-poker-hand,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2300-2399/best-poker-hand/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2347.%20%E6%9C%80%E5%A5%BD%E7%9A%84%E6%89%91%E5%85%8B%E6%89%8B%E7%89%8C.md,59.4%,简单,284 -2348,2300-2399,2348. 全 0 子数组的数目,全 0 子数组的数目,https://leetcode.cn/problems/number-of-zero-filled-subarrays/,number-of-zero-filled-subarrays,数组、数学,https://algo.itcharge.cn/Solutions/2300-2399/number-of-zero-filled-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2348.%20%E5%85%A8%200%20%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,56.3%,中等,116 -2349,2300-2399,2349. 设计数字容器系统,设计数字容器系统,https://leetcode.cn/problems/design-a-number-container-system/,design-a-number-container-system,设计、哈希表、有序集合、堆(优先队列),https://algo.itcharge.cn/Solutions/2300-2399/design-a-number-container-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2349.%20%E8%AE%BE%E8%AE%A1%E6%95%B0%E5%AD%97%E5%AE%B9%E5%99%A8%E7%B3%BB%E7%BB%9F.md,37.3%,中等,93 -2350,2300-2399,2350. 不可能得到的最短骰子序列,不可能得到的最短骰子序列,https://leetcode.cn/problems/shortest-impossible-sequence-of-rolls/,shortest-impossible-sequence-of-rolls,贪心、数组、哈希表,https://algo.itcharge.cn/Solutions/2300-2399/shortest-impossible-sequence-of-rolls/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2350.%20%E4%B8%8D%E5%8F%AF%E8%83%BD%E5%BE%97%E5%88%B0%E7%9A%84%E6%9C%80%E7%9F%AD%E9%AA%B0%E5%AD%90%E5%BA%8F%E5%88%97.md,64.8%,困难,74 -2351,2300-2399,2351. 第一个出现两次的字母,第一个出现两次的字母,https://leetcode.cn/problems/first-letter-to-appear-twice/,first-letter-to-appear-twice,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/2300-2399/first-letter-to-appear-twice/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2351.%20%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%87%BA%E7%8E%B0%E4%B8%A4%E6%AC%A1%E7%9A%84%E5%AD%97%E6%AF%8D.md,84.8%,简单,408 -2352,2300-2399,2352. 相等行列对,相等行列对,https://leetcode.cn/problems/equal-row-and-column-pairs/,equal-row-and-column-pairs,数组、哈希表、矩阵、模拟,https://algo.itcharge.cn/Solutions/2300-2399/equal-row-and-column-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2352.%20%E7%9B%B8%E7%AD%89%E8%A1%8C%E5%88%97%E5%AF%B9.md,74.1%,中等,337 -2353,2300-2399,2353. 设计食物评分系统,设计食物评分系统,https://leetcode.cn/problems/design-a-food-rating-system/,design-a-food-rating-system,设计、哈希表、有序集合、堆(优先队列),https://algo.itcharge.cn/Solutions/2300-2399/design-a-food-rating-system/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2353.%20%E8%AE%BE%E8%AE%A1%E9%A3%9F%E7%89%A9%E8%AF%84%E5%88%86%E7%B3%BB%E7%BB%9F.md,30.6%,中等,117 -2354,2300-2399,2354. 优质数对的数目,优质数对的数目,https://leetcode.cn/problems/number-of-excellent-pairs/,number-of-excellent-pairs,位运算、数组、哈希表、二分查找,https://algo.itcharge.cn/Solutions/2300-2399/number-of-excellent-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2354.%20%E4%BC%98%E8%B4%A8%E6%95%B0%E5%AF%B9%E7%9A%84%E6%95%B0%E7%9B%AE.md,44.5%,困难,76 -2355,2300-2399,2355. 你能拿走的最大图书数量,你能拿走的最大图书数量,https://leetcode.cn/problems/maximum-number-of-books-you-can-take/,maximum-number-of-books-you-can-take,栈、数组、动态规划、单调栈,https://algo.itcharge.cn/Solutions/2300-2399/maximum-number-of-books-you-can-take/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2355.%20%E4%BD%A0%E8%83%BD%E6%8B%BF%E8%B5%B0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%9B%BE%E4%B9%A6%E6%95%B0%E9%87%8F.md,59.0%,困难,10 -2356,2300-2399,2356. 每位教师所教授的科目种类的数量,每位教师所教授的科目种类的数量,https://leetcode.cn/problems/number-of-unique-subjects-taught-by-each-teacher/,number-of-unique-subjects-taught-by-each-teacher,数据库,https://algo.itcharge.cn/Solutions/2300-2399/number-of-unique-subjects-taught-by-each-teacher/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2356.%20%E6%AF%8F%E4%BD%8D%E6%95%99%E5%B8%88%E6%89%80%E6%95%99%E6%8E%88%E7%9A%84%E7%A7%91%E7%9B%AE%E7%A7%8D%E7%B1%BB%E7%9A%84%E6%95%B0%E9%87%8F.md,81.0%,简单,29 -2357,2300-2399,2357. 使数组中所有元素都等于零,使数组中所有元素都等于零,https://leetcode.cn/problems/make-array-zero-by-subtracting-equal-amounts/,make-array-zero-by-subtracting-equal-amounts,贪心、数组、哈希表、排序、模拟、堆(优先队列),https://algo.itcharge.cn/Solutions/2300-2399/make-array-zero-by-subtracting-equal-amounts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2357.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E4%B8%AD%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0%E9%83%BD%E7%AD%89%E4%BA%8E%E9%9B%B6.md,75.9%,简单,471 -2358,2300-2399,2358. 分组的最大数量,分组的最大数量,https://leetcode.cn/problems/maximum-number-of-groups-entering-a-competition/,maximum-number-of-groups-entering-a-competition,贪心、数组、数学、二分查找,https://algo.itcharge.cn/Solutions/2300-2399/maximum-number-of-groups-entering-a-competition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2358.%20%E5%88%86%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md,64.3%,中等,171 -2359,2300-2399,2359. 找到离给定两个节点最近的节点,找到离给定两个节点最近的节点,https://leetcode.cn/problems/find-closest-node-to-given-two-nodes/,find-closest-node-to-given-two-nodes,深度优先搜索、图,https://algo.itcharge.cn/Solutions/2300-2399/find-closest-node-to-given-two-nodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2359.%20%E6%89%BE%E5%88%B0%E7%A6%BB%E7%BB%99%E5%AE%9A%E4%B8%A4%E4%B8%AA%E8%8A%82%E7%82%B9%E6%9C%80%E8%BF%91%E7%9A%84%E8%8A%82%E7%82%B9.md,30.3%,中等,110 -2360,2300-2399,2360. 图中的最长环,图中的最长环,https://leetcode.cn/problems/longest-cycle-in-a-graph/,longest-cycle-in-a-graph,深度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/2300-2399/longest-cycle-in-a-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2360.%20%E5%9B%BE%E4%B8%AD%E7%9A%84%E6%9C%80%E9%95%BF%E7%8E%AF.md,38.0%,困难,140 -2361,2300-2399,2361. 乘坐火车路线的最少费用,乘坐火车路线的最少费用,https://leetcode.cn/problems/minimum-costs-using-the-train-line/,minimum-costs-using-the-train-line,数组、动态规划,https://algo.itcharge.cn/Solutions/2300-2399/minimum-costs-using-the-train-line/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2361.%20%E4%B9%98%E5%9D%90%E7%81%AB%E8%BD%A6%E8%B7%AF%E7%BA%BF%E7%9A%84%E6%9C%80%E5%B0%91%E8%B4%B9%E7%94%A8.md,77.7%,困难,13 -2362,2300-2399,2362. 生成发票,生成发票,https://leetcode.cn/problems/generate-the-invoice/,generate-the-invoice,数据库,https://algo.itcharge.cn/Solutions/2300-2399/generate-the-invoice/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2362.%20%E7%94%9F%E6%88%90%E5%8F%91%E7%A5%A8.md,72.9%,困难,14 -2363,2300-2399,2363. 合并相似的物品,合并相似的物品,https://leetcode.cn/problems/merge-similar-items/,merge-similar-items,数组、哈希表、有序集合、排序,https://algo.itcharge.cn/Solutions/2300-2399/merge-similar-items/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2363.%20%E5%90%88%E5%B9%B6%E7%9B%B8%E4%BC%BC%E7%9A%84%E7%89%A9%E5%93%81.md,78.2%,简单,298 -2364,2300-2399,2364. 统计坏数对的数目,统计坏数对的数目,https://leetcode.cn/problems/count-number-of-bad-pairs/,count-number-of-bad-pairs,数组、哈希表,https://algo.itcharge.cn/Solutions/2300-2399/count-number-of-bad-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2364.%20%E7%BB%9F%E8%AE%A1%E5%9D%8F%E6%95%B0%E5%AF%B9%E7%9A%84%E6%95%B0%E7%9B%AE.md,42.2%,中等,86 -2365,2300-2399,2365. 任务调度器 II,任务调度器 II,https://leetcode.cn/problems/task-scheduler-ii/,task-scheduler-ii,数组、哈希表、模拟,https://algo.itcharge.cn/Solutions/2300-2399/task-scheduler-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2365.%20%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6%E5%99%A8%20II.md,48.0%,中等,79 -2366,2300-2399,2366. 将数组排序的最少替换次数,将数组排序的最少替换次数,https://leetcode.cn/problems/minimum-replacements-to-sort-the-array/,minimum-replacements-to-sort-the-array,贪心、数组、数学,https://algo.itcharge.cn/Solutions/2300-2399/minimum-replacements-to-sort-the-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2366.%20%E5%B0%86%E6%95%B0%E7%BB%84%E6%8E%92%E5%BA%8F%E7%9A%84%E6%9C%80%E5%B0%91%E6%9B%BF%E6%8D%A2%E6%AC%A1%E6%95%B0.md,42.7%,困难,47 -2367,2300-2399,2367. 算术三元组的数目,算术三元组的数目,https://leetcode.cn/problems/number-of-arithmetic-triplets/,number-of-arithmetic-triplets,数组、哈希表、双指针、枚举,https://algo.itcharge.cn/Solutions/2300-2399/number-of-arithmetic-triplets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2367.%20%E7%AE%97%E6%9C%AF%E4%B8%89%E5%85%83%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,83.4%,简单,381 -2368,2300-2399,2368. 受限条件下可到达节点的数目,受限条件下可到达节点的数目,https://leetcode.cn/problems/reachable-nodes-with-restrictions/,reachable-nodes-with-restrictions,树、深度优先搜索、广度优先搜索、图、数组、哈希表,https://algo.itcharge.cn/Solutions/2300-2399/reachable-nodes-with-restrictions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2368.%20%E5%8F%97%E9%99%90%E6%9D%A1%E4%BB%B6%E4%B8%8B%E5%8F%AF%E5%88%B0%E8%BE%BE%E8%8A%82%E7%82%B9%E7%9A%84%E6%95%B0%E7%9B%AE.md,46.1%,中等,148 -2369,2300-2399,2369. 检查数组是否存在有效划分,检查数组是否存在有效划分,https://leetcode.cn/problems/check-if-there-is-a-valid-partition-for-the-array/,check-if-there-is-a-valid-partition-for-the-array,数组、动态规划,https://algo.itcharge.cn/Solutions/2300-2399/check-if-there-is-a-valid-partition-for-the-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2369.%20%E6%A3%80%E6%9F%A5%E6%95%B0%E7%BB%84%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E6%9C%89%E6%95%88%E5%88%92%E5%88%86.md,38.4%,中等,115 -2370,2300-2399,2370. 最长理想子序列,最长理想子序列,https://leetcode.cn/problems/longest-ideal-subsequence/,longest-ideal-subsequence,哈希表、字符串、动态规划,https://algo.itcharge.cn/Solutions/2300-2399/longest-ideal-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2370.%20%E6%9C%80%E9%95%BF%E7%90%86%E6%83%B3%E5%AD%90%E5%BA%8F%E5%88%97.md,43.1%,中等,116 -2371,2300-2399,2371. 最小化网格中的最大值,最小化网格中的最大值,https://leetcode.cn/problems/minimize-maximum-value-in-a-grid/,minimize-maximum-value-in-a-grid,贪心、并查集、图、拓扑排序、数组、矩阵、排序,https://algo.itcharge.cn/Solutions/2300-2399/minimize-maximum-value-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2371.%20%E6%9C%80%E5%B0%8F%E5%8C%96%E7%BD%91%E6%A0%BC%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,74.1%,困难,11 -2372,2300-2399,2372. 计算每个销售人员的影响力,计算每个销售人员的影响力,https://leetcode.cn/problems/calculate-the-influence-of-each-salesperson/,calculate-the-influence-of-each-salesperson,数据库,https://algo.itcharge.cn/Solutions/2300-2399/calculate-the-influence-of-each-salesperson/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2372.%20%E8%AE%A1%E7%AE%97%E6%AF%8F%E4%B8%AA%E9%94%80%E5%94%AE%E4%BA%BA%E5%91%98%E7%9A%84%E5%BD%B1%E5%93%8D%E5%8A%9B.md,77.7%,中等,8 -2373,2300-2399,2373. 矩阵中的局部最大值,矩阵中的局部最大值,https://leetcode.cn/problems/largest-local-values-in-a-matrix/,largest-local-values-in-a-matrix,数组、矩阵,https://algo.itcharge.cn/Solutions/2300-2399/largest-local-values-in-a-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2373.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E5%B1%80%E9%83%A8%E6%9C%80%E5%A4%A7%E5%80%BC.md,85.2%,简单,312 -2374,2300-2399,2374. 边积分最高的节点,边积分最高的节点,https://leetcode.cn/problems/node-with-highest-edge-score/,node-with-highest-edge-score,图、哈希表,https://algo.itcharge.cn/Solutions/2300-2399/node-with-highest-edge-score/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2374.%20%E8%BE%B9%E7%A7%AF%E5%88%86%E6%9C%80%E9%AB%98%E7%9A%84%E8%8A%82%E7%82%B9.md,42.3%,中等,105 -2375,2300-2399,2375. 根据模式串构造最小数字,根据模式串构造最小数字,https://leetcode.cn/problems/construct-smallest-number-from-di-string/,construct-smallest-number-from-di-string,栈、贪心、字符串、回溯,https://algo.itcharge.cn/Solutions/2300-2399/construct-smallest-number-from-di-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2375.%20%E6%A0%B9%E6%8D%AE%E6%A8%A1%E5%BC%8F%E4%B8%B2%E6%9E%84%E9%80%A0%E6%9C%80%E5%B0%8F%E6%95%B0%E5%AD%97.md,70.0%,中等,212 -2376,2300-2399,2376. 统计特殊整数,统计特殊整数,https://leetcode.cn/problems/count-special-integers/,count-special-integers,数学、动态规划,https://algo.itcharge.cn/Solutions/2300-2399/count-special-integers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2376.%20%E7%BB%9F%E8%AE%A1%E7%89%B9%E6%AE%8A%E6%95%B4%E6%95%B0.md,51.6%,困难,113 -2377,2300-2399,2377. 整理奥运表,整理奥运表,https://leetcode.cn/problems/sort-the-olympic-table/,sort-the-olympic-table,数据库,https://algo.itcharge.cn/Solutions/2300-2399/sort-the-olympic-table/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2377.%20%E6%95%B4%E7%90%86%E5%A5%A5%E8%BF%90%E8%A1%A8.md,80.1%,简单,9 -2378,2300-2399,2378. 选择边来最大化树的得分,选择边来最大化树的得分,https://leetcode.cn/problems/choose-edges-to-maximize-score-in-a-tree/,choose-edges-to-maximize-score-in-a-tree,树、深度优先搜索、动态规划,https://algo.itcharge.cn/Solutions/2300-2399/choose-edges-to-maximize-score-in-a-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2378.%20%E9%80%89%E6%8B%A9%E8%BE%B9%E6%9D%A5%E6%9C%80%E5%A4%A7%E5%8C%96%E6%A0%91%E7%9A%84%E5%BE%97%E5%88%86.md,68.4%,中等,8 -2379,2300-2399,2379. 得到 K 个黑块的最少涂色次数,得到 K 个黑块的最少涂色次数,https://leetcode.cn/problems/minimum-recolors-to-get-k-consecutive-black-blocks/,minimum-recolors-to-get-k-consecutive-black-blocks,字符串、滑动窗口,https://algo.itcharge.cn/Solutions/2300-2399/minimum-recolors-to-get-k-consecutive-black-blocks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2379.%20%E5%BE%97%E5%88%B0%20K%20%E4%B8%AA%E9%BB%91%E5%9D%97%E7%9A%84%E6%9C%80%E5%B0%91%E6%B6%82%E8%89%B2%E6%AC%A1%E6%95%B0.md,61.8%,简单,429 -2380,2300-2399,2380. 二进制字符串重新安排顺序需要的时间,二进制字符串重新安排顺序需要的时间,https://leetcode.cn/problems/time-needed-to-rearrange-a-binary-string/,time-needed-to-rearrange-a-binary-string,字符串、动态规划、模拟,https://algo.itcharge.cn/Solutions/2300-2399/time-needed-to-rearrange-a-binary-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2380.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%87%8D%E6%96%B0%E5%AE%89%E6%8E%92%E9%A1%BA%E5%BA%8F%E9%9C%80%E8%A6%81%E7%9A%84%E6%97%B6%E9%97%B4.md,56.1%,中等,73 -2381,2300-2399,2381. 字母移位 II,字母移位 II,https://leetcode.cn/problems/shifting-letters-ii/,shifting-letters-ii,数组、字符串、前缀和,https://algo.itcharge.cn/Solutions/2300-2399/shifting-letters-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2381.%20%E5%AD%97%E6%AF%8D%E7%A7%BB%E4%BD%8D%20II.md,36.8%,中等,100 -2382,2300-2399,2382. 删除操作后的最大子段和,删除操作后的最大子段和,https://leetcode.cn/problems/maximum-segment-sum-after-removals/,maximum-segment-sum-after-removals,并查集、数组、有序集合、前缀和,https://algo.itcharge.cn/Solutions/2300-2399/maximum-segment-sum-after-removals/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2382.%20%E5%88%A0%E9%99%A4%E6%93%8D%E4%BD%9C%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%90%E6%AE%B5%E5%92%8C.md,56.3%,困难,94 -2383,2300-2399,2383. 赢得比赛需要的最少训练时长,赢得比赛需要的最少训练时长,https://leetcode.cn/problems/minimum-hours-of-training-to-win-a-competition/,minimum-hours-of-training-to-win-a-competition,贪心、数组,https://algo.itcharge.cn/Solutions/2300-2399/minimum-hours-of-training-to-win-a-competition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2383.%20%E8%B5%A2%E5%BE%97%E6%AF%94%E8%B5%9B%E9%9C%80%E8%A6%81%E7%9A%84%E6%9C%80%E5%B0%91%E8%AE%AD%E7%BB%83%E6%97%B6%E9%95%BF.md,47.2%,简单,360 -2384,2300-2399,2384. 最大回文数字,最大回文数字,https://leetcode.cn/problems/largest-palindromic-number/,largest-palindromic-number,贪心、哈希表、字符串,https://algo.itcharge.cn/Solutions/2300-2399/largest-palindromic-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2384.%20%E6%9C%80%E5%A4%A7%E5%9B%9E%E6%96%87%E6%95%B0%E5%AD%97.md,31.1%,中等,150 -2385,2300-2399,2385. 感染二叉树需要的总时间,感染二叉树需要的总时间,https://leetcode.cn/problems/amount-of-time-for-binary-tree-to-be-infected/,amount-of-time-for-binary-tree-to-be-infected,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/2300-2399/amount-of-time-for-binary-tree-to-be-infected/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2385.%20%E6%84%9F%E6%9F%93%E4%BA%8C%E5%8F%89%E6%A0%91%E9%9C%80%E8%A6%81%E7%9A%84%E6%80%BB%E6%97%B6%E9%97%B4.md,46.2%,中等,157 -2386,2300-2399,2386. 找出数组的第 K 大和,找出数组的第 K 大和,https://leetcode.cn/problems/find-the-k-sum-of-an-array/,find-the-k-sum-of-an-array,数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2300-2399/find-the-k-sum-of-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2386.%20%E6%89%BE%E5%87%BA%E6%95%B0%E7%BB%84%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E5%92%8C.md,42.3%,困难,51 -2387,2300-2399,2387. 行排序矩阵的中位数,行排序矩阵的中位数,https://leetcode.cn/problems/median-of-a-row-wise-sorted-matrix/,median-of-a-row-wise-sorted-matrix,数组、二分查找、矩阵,https://algo.itcharge.cn/Solutions/2300-2399/median-of-a-row-wise-sorted-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2387.%20%E8%A1%8C%E6%8E%92%E5%BA%8F%E7%9F%A9%E9%98%B5%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md,76.0%,中等,5 -2388,2300-2399,2388. 将表中的空值更改为前一个值,将表中的空值更改为前一个值,https://leetcode.cn/problems/change-null-values-in-a-table-to-the-previous-value/,change-null-values-in-a-table-to-the-previous-value,数据库,https://algo.itcharge.cn/Solutions/2300-2399/change-null-values-in-a-table-to-the-previous-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2388.%20%E5%B0%86%E8%A1%A8%E4%B8%AD%E7%9A%84%E7%A9%BA%E5%80%BC%E6%9B%B4%E6%94%B9%E4%B8%BA%E5%89%8D%E4%B8%80%E4%B8%AA%E5%80%BC.md,67.7%,中等,13 -2389,2300-2399,2389. 和有限的最长子序列,和有限的最长子序列,https://leetcode.cn/problems/longest-subsequence-with-limited-sum/,longest-subsequence-with-limited-sum,贪心、数组、二分查找、前缀和、排序,https://algo.itcharge.cn/Solutions/2300-2399/longest-subsequence-with-limited-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2389.%20%E5%92%8C%E6%9C%89%E9%99%90%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E5%BA%8F%E5%88%97.md,70.9%,简单,343 -2390,2300-2399,2390. 从字符串中移除星号,从字符串中移除星号,https://leetcode.cn/problems/removing-stars-from-a-string/,removing-stars-from-a-string,栈、字符串、模拟,https://algo.itcharge.cn/Solutions/2300-2399/removing-stars-from-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2390.%20%E4%BB%8E%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%A7%BB%E9%99%A4%E6%98%9F%E5%8F%B7.md,69.1%,中等,166 -2391,2300-2399,2391. 收集垃圾的最少总时间,收集垃圾的最少总时间,https://leetcode.cn/problems/minimum-amount-of-time-to-collect-garbage/,minimum-amount-of-time-to-collect-garbage,数组、字符串、前缀和,https://algo.itcharge.cn/Solutions/2300-2399/minimum-amount-of-time-to-collect-garbage/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2391.%20%E6%94%B6%E9%9B%86%E5%9E%83%E5%9C%BE%E7%9A%84%E6%9C%80%E5%B0%91%E6%80%BB%E6%97%B6%E9%97%B4.md,85.7%,中等,159 -2392,2300-2399,2392. 给定条件下构造矩阵,给定条件下构造矩阵,https://leetcode.cn/problems/build-a-matrix-with-conditions/,build-a-matrix-with-conditions,图、拓扑排序、数组、矩阵,https://algo.itcharge.cn/Solutions/2300-2399/build-a-matrix-with-conditions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2392.%20%E7%BB%99%E5%AE%9A%E6%9D%A1%E4%BB%B6%E4%B8%8B%E6%9E%84%E9%80%A0%E7%9F%A9%E9%98%B5.md,55.7%,困难,94 -2393,2300-2399,2393. 严格递增的子数组个数,严格递增的子数组个数,https://leetcode.cn/problems/count-strictly-increasing-subarrays/,count-strictly-increasing-subarrays,数组、数学、动态规划,https://algo.itcharge.cn/Solutions/2300-2399/count-strictly-increasing-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2393.%20%E4%B8%A5%E6%A0%BC%E9%80%92%E5%A2%9E%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E4%B8%AA%E6%95%B0.md,78.5%,中等,14 -2394,2300-2399,2394. 开除员工,开除员工,https://leetcode.cn/problems/employees-with-deductions/,employees-with-deductions,数据库,https://algo.itcharge.cn/Solutions/2300-2399/employees-with-deductions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2394.%20%E5%BC%80%E9%99%A4%E5%91%98%E5%B7%A5.md,53.0%,中等,13 -2395,2300-2399,2395. 和相等的子数组,和相等的子数组,https://leetcode.cn/problems/find-subarrays-with-equal-sum/,find-subarrays-with-equal-sum,数组、哈希表,https://algo.itcharge.cn/Solutions/2300-2399/find-subarrays-with-equal-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2395.%20%E5%92%8C%E7%9B%B8%E7%AD%89%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,76.3%,简单,237 -2396,2300-2399,2396. 严格回文的数字,严格回文的数字,https://leetcode.cn/problems/strictly-palindromic-number/,strictly-palindromic-number,脑筋急转弯、数学、双指针,https://algo.itcharge.cn/Solutions/2300-2399/strictly-palindromic-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2396.%20%E4%B8%A5%E6%A0%BC%E5%9B%9E%E6%96%87%E7%9A%84%E6%95%B0%E5%AD%97.md,87.9%,中等,115 -2397,2300-2399,2397. 被列覆盖的最多行数,被列覆盖的最多行数,https://leetcode.cn/problems/maximum-rows-covered-by-columns/,maximum-rows-covered-by-columns,位运算、数组、回溯、枚举、矩阵,https://algo.itcharge.cn/Solutions/2300-2399/maximum-rows-covered-by-columns/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2397.%20%E8%A2%AB%E5%88%97%E8%A6%86%E7%9B%96%E7%9A%84%E6%9C%80%E5%A4%9A%E8%A1%8C%E6%95%B0.md,54.7%,中等,103 -2398,2300-2399,2398. 预算内的最多机器人数目,预算内的最多机器人数目,https://leetcode.cn/problems/maximum-number-of-robots-within-budget/,maximum-number-of-robots-within-budget,队列、数组、二分查找、前缀和、滑动窗口、堆(优先队列),https://algo.itcharge.cn/Solutions/2300-2399/maximum-number-of-robots-within-budget/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2398.%20%E9%A2%84%E7%AE%97%E5%86%85%E7%9A%84%E6%9C%80%E5%A4%9A%E6%9C%BA%E5%99%A8%E4%BA%BA%E6%95%B0%E7%9B%AE.md,34.4%,困难,85 -2399,2300-2399,2399. 检查相同字母间的距离,检查相同字母间的距离,https://leetcode.cn/problems/check-distances-between-same-letters/,check-distances-between-same-letters,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/2300-2399/check-distances-between-same-letters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2399.%20%E6%A3%80%E6%9F%A5%E7%9B%B8%E5%90%8C%E5%AD%97%E6%AF%8D%E9%97%B4%E7%9A%84%E8%B7%9D%E7%A6%BB.md,75.3%,简单,304 -2400,2400-2499,2400. 恰好移动 k 步到达某一位置的方法数目,恰好移动 k 步到达某一位置的方法数目,https://leetcode.cn/problems/number-of-ways-to-reach-a-position-after-exactly-k-steps/,number-of-ways-to-reach-a-position-after-exactly-k-steps,数学、动态规划、组合数学,https://algo.itcharge.cn/Solutions/2400-2499/number-of-ways-to-reach-a-position-after-exactly-k-steps/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2400.%20%E6%81%B0%E5%A5%BD%E7%A7%BB%E5%8A%A8%20k%20%E6%AD%A5%E5%88%B0%E8%BE%BE%E6%9F%90%E4%B8%80%E4%BD%8D%E7%BD%AE%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0%E7%9B%AE.md,32.7%,中等,156 -2401,2400-2499,2401. 最长优雅子数组,最长优雅子数组,https://leetcode.cn/problems/longest-nice-subarray/,longest-nice-subarray,位运算、数组、滑动窗口,https://algo.itcharge.cn/Solutions/2400-2499/longest-nice-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2401.%20%E6%9C%80%E9%95%BF%E4%BC%98%E9%9B%85%E5%AD%90%E6%95%B0%E7%BB%84.md,49.6%,中等,159 -2402,2400-2499,2402. 会议室 III,会议室 III,https://leetcode.cn/problems/meeting-rooms-iii/,meeting-rooms-iii,数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2400-2499/meeting-rooms-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2402.%20%E4%BC%9A%E8%AE%AE%E5%AE%A4%20III.md,32.6%,困难,119 -2403,2400-2499,2403. 杀死所有怪物的最短时间,杀死所有怪物的最短时间,https://leetcode.cn/problems/minimum-time-to-kill-all-monsters/,minimum-time-to-kill-all-monsters,位运算、数组、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/2400-2499/minimum-time-to-kill-all-monsters/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2403.%20%E6%9D%80%E6%AD%BB%E6%89%80%E6%9C%89%E6%80%AA%E7%89%A9%E7%9A%84%E6%9C%80%E7%9F%AD%E6%97%B6%E9%97%B4.md,70.2%,困难,17 -2404,2400-2499,2404. 出现最频繁的偶数元素,出现最频繁的偶数元素,https://leetcode.cn/problems/most-frequent-even-element/,most-frequent-even-element,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2400-2499/most-frequent-even-element/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2404.%20%E5%87%BA%E7%8E%B0%E6%9C%80%E9%A2%91%E7%B9%81%E7%9A%84%E5%81%B6%E6%95%B0%E5%85%83%E7%B4%A0.md,58.3%,简单,345 -2405,2400-2499,2405. 子字符串的最优划分,子字符串的最优划分,https://leetcode.cn/problems/optimal-partition-of-string/,optimal-partition-of-string,贪心、哈希表、字符串,https://algo.itcharge.cn/Solutions/2400-2499/optimal-partition-of-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2405.%20%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E4%BC%98%E5%88%92%E5%88%86.md,74.9%,中等,127 -2406,2400-2499,2406. 将区间分为最少组数,将区间分为最少组数,https://leetcode.cn/problems/divide-intervals-into-minimum-number-of-groups/,divide-intervals-into-minimum-number-of-groups,贪心、数组、双指针、前缀和、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2400-2499/divide-intervals-into-minimum-number-of-groups/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2406.%20%E5%B0%86%E5%8C%BA%E9%97%B4%E5%88%86%E4%B8%BA%E6%9C%80%E5%B0%91%E7%BB%84%E6%95%B0.md,44.6%,中等,128 -2407,2400-2499,2407. 最长递增子序列 II,最长递增子序列 II,https://leetcode.cn/problems/longest-increasing-subsequence-ii/,longest-increasing-subsequence-ii,树状数组、线段树、队列、数组、分治、动态规划、单调队列,https://algo.itcharge.cn/Solutions/2400-2499/longest-increasing-subsequence-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2407.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%20II.md,30.5%,困难,93 -2408,2400-2499,2408. 设计 SQL,设计 SQL,https://leetcode.cn/problems/design-sql/,design-sql,设计、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/2400-2499/design-sql/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2408.%20%E8%AE%BE%E8%AE%A1%20SQL.md,63.9%,中等,7 -2409,2400-2499,2409. 统计共同度过的日子数,统计共同度过的日子数,https://leetcode.cn/problems/count-days-spent-together/,count-days-spent-together,数学、字符串,https://algo.itcharge.cn/Solutions/2400-2499/count-days-spent-together/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2409.%20%E7%BB%9F%E8%AE%A1%E5%85%B1%E5%90%8C%E5%BA%A6%E8%BF%87%E7%9A%84%E6%97%A5%E5%AD%90%E6%95%B0.md,55.9%,简单,316 -2410,2400-2499,2410. 运动员和训练师的最大匹配数,运动员和训练师的最大匹配数,https://leetcode.cn/problems/maximum-matching-of-players-with-trainers/,maximum-matching-of-players-with-trainers,贪心、数组、双指针、排序,https://algo.itcharge.cn/Solutions/2400-2499/maximum-matching-of-players-with-trainers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2410.%20%E8%BF%90%E5%8A%A8%E5%91%98%E5%92%8C%E8%AE%AD%E7%BB%83%E5%B8%88%E7%9A%84%E6%9C%80%E5%A4%A7%E5%8C%B9%E9%85%8D%E6%95%B0.md,64.7%,中等,81 -2411,2400-2499,2411. 按位或最大的最小子数组长度,按位或最大的最小子数组长度,https://leetcode.cn/problems/smallest-subarrays-with-maximum-bitwise-or/,smallest-subarrays-with-maximum-bitwise-or,位运算、数组、二分查找、滑动窗口,https://algo.itcharge.cn/Solutions/2400-2499/smallest-subarrays-with-maximum-bitwise-or/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2411.%20%E6%8C%89%E4%BD%8D%E6%88%96%E6%9C%80%E5%A4%A7%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%90%E6%95%B0%E7%BB%84%E9%95%BF%E5%BA%A6.md,43.2%,中等,63 -2412,2400-2499,2412. 完成所有交易的初始最少钱数,完成所有交易的初始最少钱数,https://leetcode.cn/problems/minimum-money-required-before-transactions/,minimum-money-required-before-transactions,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2400-2499/minimum-money-required-before-transactions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2412.%20%E5%AE%8C%E6%88%90%E6%89%80%E6%9C%89%E4%BA%A4%E6%98%93%E7%9A%84%E5%88%9D%E5%A7%8B%E6%9C%80%E5%B0%91%E9%92%B1%E6%95%B0.md,48.2%,困难,62 -2413,2400-2499,2413. 最小偶倍数,最小偶倍数,https://leetcode.cn/problems/smallest-even-multiple/,smallest-even-multiple,数学、数论,https://algo.itcharge.cn/Solutions/2400-2499/smallest-even-multiple/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2413.%20%E6%9C%80%E5%B0%8F%E5%81%B6%E5%80%8D%E6%95%B0.md,87.6%,简单,291 -2414,2400-2499,2414. 最长的字母序连续子字符串的长度,最长的字母序连续子字符串的长度,https://leetcode.cn/problems/length-of-the-longest-alphabetical-continuous-substring/,length-of-the-longest-alphabetical-continuous-substring,字符串,https://algo.itcharge.cn/Solutions/2400-2499/length-of-the-longest-alphabetical-continuous-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2414.%20%E6%9C%80%E9%95%BF%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BA%8F%E8%BF%9E%E7%BB%AD%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E9%95%BF%E5%BA%A6.md,60.4%,中等,122 -2415,2400-2499,2415. 反转二叉树的奇数层,反转二叉树的奇数层,https://leetcode.cn/problems/reverse-odd-levels-of-binary-tree/,reverse-odd-levels-of-binary-tree,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/2400-2499/reverse-odd-levels-of-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2415.%20%E5%8F%8D%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%A5%87%E6%95%B0%E5%B1%82.md,70.0%,中等,139 -2416,2400-2499,2416. 字符串的前缀分数和,字符串的前缀分数和,https://leetcode.cn/problems/sum-of-prefix-scores-of-strings/,sum-of-prefix-scores-of-strings,字典树、数组、字符串、计数,https://algo.itcharge.cn/Solutions/2400-2499/sum-of-prefix-scores-of-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2416.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%89%8D%E7%BC%80%E5%88%86%E6%95%B0%E5%92%8C.md,40.5%,困难,124 -2417,2400-2499,2417. 最近的公平整数,最近的公平整数,https://leetcode.cn/problems/closest-fair-integer/,closest-fair-integer,数学、枚举,https://algo.itcharge.cn/Solutions/2400-2499/closest-fair-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2417.%20%E6%9C%80%E8%BF%91%E7%9A%84%E5%85%AC%E5%B9%B3%E6%95%B4%E6%95%B0.md,45.2%,中等,9 -2418,2400-2499,2418. 按身高排序,按身高排序,https://leetcode.cn/problems/sort-the-people/,sort-the-people,数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/2400-2499/sort-the-people/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2418.%20%E6%8C%89%E8%BA%AB%E9%AB%98%E6%8E%92%E5%BA%8F.md,79.4%,简单,373 -2419,2400-2499,2419. 按位与最大的最长子数组,按位与最大的最长子数组,https://leetcode.cn/problems/longest-subarray-with-maximum-bitwise-and/,longest-subarray-with-maximum-bitwise-and,位运算、脑筋急转弯、数组,https://algo.itcharge.cn/Solutions/2400-2499/longest-subarray-with-maximum-bitwise-and/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2419.%20%E6%8C%89%E4%BD%8D%E4%B8%8E%E6%9C%80%E5%A4%A7%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E6%95%B0%E7%BB%84.md,42.5%,中等,107 -2420,2400-2499,2420. 找到所有好下标,找到所有好下标,https://leetcode.cn/problems/find-all-good-indices/,find-all-good-indices,数组、动态规划、前缀和,https://algo.itcharge.cn/Solutions/2400-2499/find-all-good-indices/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2420.%20%E6%89%BE%E5%88%B0%E6%89%80%E6%9C%89%E5%A5%BD%E4%B8%8B%E6%A0%87.md,31.4%,中等,140 -2421,2400-2499,2421. 好路径的数目,好路径的数目,https://leetcode.cn/problems/number-of-good-paths/,number-of-good-paths,树、并查集、图、数组,https://algo.itcharge.cn/Solutions/2400-2499/number-of-good-paths/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2421.%20%E5%A5%BD%E8%B7%AF%E5%BE%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,42.7%,困难,52 -2422,2400-2499,2422. 使用合并操作将数组转换为回文序列,使用合并操作将数组转换为回文序列,https://leetcode.cn/problems/merge-operations-to-turn-array-into-a-palindrome/,merge-operations-to-turn-array-into-a-palindrome,贪心、数组、双指针,https://algo.itcharge.cn/Solutions/2400-2499/merge-operations-to-turn-array-into-a-palindrome/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2422.%20%E4%BD%BF%E7%94%A8%E5%90%88%E5%B9%B6%E6%93%8D%E4%BD%9C%E5%B0%86%E6%95%B0%E7%BB%84%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%9B%9E%E6%96%87%E5%BA%8F%E5%88%97.md,71.5%,中等,11 -2423,2400-2499,2423. 删除字符使频率相同,删除字符使频率相同,https://leetcode.cn/problems/remove-letter-to-equalize-frequency/,remove-letter-to-equalize-frequency,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/2400-2499/remove-letter-to-equalize-frequency/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2423.%20%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%BD%BF%E9%A2%91%E7%8E%87%E7%9B%B8%E5%90%8C.md,25.2%,简单,270 -2424,2400-2499,2424. 最长上传前缀,最长上传前缀,https://leetcode.cn/problems/longest-uploaded-prefix/,longest-uploaded-prefix,并查集、设计、树状数组、线段树、二分查找、有序集合、堆(优先队列),https://algo.itcharge.cn/Solutions/2400-2499/longest-uploaded-prefix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2424.%20%E6%9C%80%E9%95%BF%E4%B8%8A%E4%BC%A0%E5%89%8D%E7%BC%80.md,56.1%,中等,84 -2425,2400-2499,2425. 所有数对的异或和,所有数对的异或和,https://leetcode.cn/problems/bitwise-xor-of-all-pairings/,bitwise-xor-of-all-pairings,位运算、脑筋急转弯、数组,https://algo.itcharge.cn/Solutions/2400-2499/bitwise-xor-of-all-pairings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2425.%20%E6%89%80%E6%9C%89%E6%95%B0%E5%AF%B9%E7%9A%84%E5%BC%82%E6%88%96%E5%92%8C.md,64.8%,中等,71 -2426,2400-2499,2426. 满足不等式的数对数目,满足不等式的数对数目,https://leetcode.cn/problems/number-of-pairs-satisfying-inequality/,number-of-pairs-satisfying-inequality,树状数组、线段树、数组、二分查找、分治、有序集合、归并排序,https://algo.itcharge.cn/Solutions/2400-2499/number-of-pairs-satisfying-inequality/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2426.%20%E6%BB%A1%E8%B6%B3%E4%B8%8D%E7%AD%89%E5%BC%8F%E7%9A%84%E6%95%B0%E5%AF%B9%E6%95%B0%E7%9B%AE.md,46.0%,困难,82 -2427,2400-2499,2427. 公因子的数目,公因子的数目,https://leetcode.cn/problems/number-of-common-factors/,number-of-common-factors,数学、枚举、数论,https://algo.itcharge.cn/Solutions/2400-2499/number-of-common-factors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2427.%20%E5%85%AC%E5%9B%A0%E5%AD%90%E7%9A%84%E6%95%B0%E7%9B%AE.md,81.7%,简单,237 -2428,2400-2499,2428. 沙漏的最大总和,沙漏的最大总和,https://leetcode.cn/problems/maximum-sum-of-an-hourglass/,maximum-sum-of-an-hourglass,数组、矩阵、前缀和,https://algo.itcharge.cn/Solutions/2400-2499/maximum-sum-of-an-hourglass/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2428.%20%E6%B2%99%E6%BC%8F%E7%9A%84%E6%9C%80%E5%A4%A7%E6%80%BB%E5%92%8C.md,74.7%,中等,96 -2429,2400-2499,2429. 最小 XOR,最小 XOR,https://leetcode.cn/problems/minimize-xor/,minimize-xor,贪心、位运算,https://algo.itcharge.cn/Solutions/2400-2499/minimize-xor/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2429.%20%E6%9C%80%E5%B0%8F%20XOR.md,44.5%,中等,110 -2430,2400-2499,2430. 对字母串可执行的最大删除数,对字母串可执行的最大删除数,https://leetcode.cn/problems/maximum-deletions-on-a-string/,maximum-deletions-on-a-string,字符串、动态规划、字符串匹配、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/2400-2499/maximum-deletions-on-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2430.%20%E5%AF%B9%E5%AD%97%E6%AF%8D%E4%B8%B2%E5%8F%AF%E6%89%A7%E8%A1%8C%E7%9A%84%E6%9C%80%E5%A4%A7%E5%88%A0%E9%99%A4%E6%95%B0.md,47.7%,困难,105 -2431,2400-2499,2431. 最大限度地提高购买水果的口味,最大限度地提高购买水果的口味,https://leetcode.cn/problems/maximize-total-tastiness-of-purchased-fruits/,maximize-total-tastiness-of-purchased-fruits,数组、动态规划,https://algo.itcharge.cn/Solutions/2400-2499/maximize-total-tastiness-of-purchased-fruits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2431.%20%E6%9C%80%E5%A4%A7%E9%99%90%E5%BA%A6%E5%9C%B0%E6%8F%90%E9%AB%98%E8%B4%AD%E4%B9%B0%E6%B0%B4%E6%9E%9C%E7%9A%84%E5%8F%A3%E5%91%B3.md,58.8%,中等,12 -2432,2400-2499,2432. 处理用时最长的那个任务的员工,处理用时最长的那个任务的员工,https://leetcode.cn/problems/the-employee-that-worked-on-the-longest-task/,the-employee-that-worked-on-the-longest-task,数组,https://algo.itcharge.cn/Solutions/2400-2499/the-employee-that-worked-on-the-longest-task/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2432.%20%E5%A4%84%E7%90%86%E7%94%A8%E6%97%B6%E6%9C%80%E9%95%BF%E7%9A%84%E9%82%A3%E4%B8%AA%E4%BB%BB%E5%8A%A1%E7%9A%84%E5%91%98%E5%B7%A5.md,55.3%,简单,227 -2433,2400-2499,2433. 找出前缀异或的原始数组,找出前缀异或的原始数组,https://leetcode.cn/problems/find-the-original-array-of-prefix-xor/,find-the-original-array-of-prefix-xor,位运算、数组,https://algo.itcharge.cn/Solutions/2400-2499/find-the-original-array-of-prefix-xor/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2433.%20%E6%89%BE%E5%87%BA%E5%89%8D%E7%BC%80%E5%BC%82%E6%88%96%E7%9A%84%E5%8E%9F%E5%A7%8B%E6%95%B0%E7%BB%84.md,84.8%,中等,86 -2434,2400-2499,2434. 使用机器人打印字典序最小的字符串,使用机器人打印字典序最小的字符串,https://leetcode.cn/problems/using-a-robot-to-print-the-lexicographically-smallest-string/,using-a-robot-to-print-the-lexicographically-smallest-string,栈、贪心、哈希表、字符串,https://algo.itcharge.cn/Solutions/2400-2499/using-a-robot-to-print-the-lexicographically-smallest-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2434.%20%E4%BD%BF%E7%94%A8%E6%9C%BA%E5%99%A8%E4%BA%BA%E6%89%93%E5%8D%B0%E5%AD%97%E5%85%B8%E5%BA%8F%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,42.1%,中等,114 -2435,2400-2499,2435. 矩阵中和能被 K 整除的路径,矩阵中和能被 K 整除的路径,https://leetcode.cn/problems/paths-in-matrix-whose-sum-is-divisible-by-k/,paths-in-matrix-whose-sum-is-divisible-by-k,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/2400-2499/paths-in-matrix-whose-sum-is-divisible-by-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2435.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E5%92%8C%E8%83%BD%E8%A2%AB%20K%20%E6%95%B4%E9%99%A4%E7%9A%84%E8%B7%AF%E5%BE%84.md,51.5%,困难,97 -2436,2400-2499,2436. 使子数组最大公约数大于一的最小分割数,使子数组最大公约数大于一的最小分割数,https://leetcode.cn/problems/minimum-split-into-subarrays-with-gcd-greater-than-one/,minimum-split-into-subarrays-with-gcd-greater-than-one,贪心、数组、数学、动态规划、数论,https://algo.itcharge.cn/Solutions/2400-2499/minimum-split-into-subarrays-with-gcd-greater-than-one/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2436.%20%E4%BD%BF%E5%AD%90%E6%95%B0%E7%BB%84%E6%9C%80%E5%A4%A7%E5%85%AC%E7%BA%A6%E6%95%B0%E5%A4%A7%E4%BA%8E%E4%B8%80%E7%9A%84%E6%9C%80%E5%B0%8F%E5%88%86%E5%89%B2%E6%95%B0.md,76.8%,中等,11 -2437,2400-2499,2437. 有效时间的数目,有效时间的数目,https://leetcode.cn/problems/number-of-valid-clock-times/,number-of-valid-clock-times,字符串、枚举,https://algo.itcharge.cn/Solutions/2400-2499/number-of-valid-clock-times/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2437.%20%E6%9C%89%E6%95%88%E6%97%B6%E9%97%B4%E7%9A%84%E6%95%B0%E7%9B%AE.md,50.5%,简单,285 -2438,2400-2499,2438. 二的幂数组中查询范围内的乘积,二的幂数组中查询范围内的乘积,https://leetcode.cn/problems/range-product-queries-of-powers/,range-product-queries-of-powers,位运算、数组、前缀和,https://algo.itcharge.cn/Solutions/2400-2499/range-product-queries-of-powers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2438.%20%E4%BA%8C%E7%9A%84%E5%B9%82%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E8%AF%A2%E8%8C%83%E5%9B%B4%E5%86%85%E7%9A%84%E4%B9%98%E7%A7%AF.md,41.2%,中等,83 -2439,2400-2499,2439. 最小化数组中的最大值,最小化数组中的最大值,https://leetcode.cn/problems/minimize-maximum-of-array/,minimize-maximum-of-array,贪心、数组、二分查找、动态规划、前缀和,https://algo.itcharge.cn/Solutions/2400-2499/minimize-maximum-of-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2439.%20%E6%9C%80%E5%B0%8F%E5%8C%96%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,39.1%,中等,120 -2440,2400-2499,2440. 创建价值相同的连通块,创建价值相同的连通块,https://leetcode.cn/problems/create-components-with-same-value/,create-components-with-same-value,树、深度优先搜索、数组、数学、枚举,https://algo.itcharge.cn/Solutions/2400-2499/create-components-with-same-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2440.%20%E5%88%9B%E5%BB%BA%E4%BB%B7%E5%80%BC%E7%9B%B8%E5%90%8C%E7%9A%84%E8%BF%9E%E9%80%9A%E5%9D%97.md,61.4%,困难,32 -2441,2400-2499,2441. 与对应负数同时存在的最大正整数,与对应负数同时存在的最大正整数,https://leetcode.cn/problems/largest-positive-integer-that-exists-with-its-negative/,largest-positive-integer-that-exists-with-its-negative,数组、哈希表、双指针、排序,https://algo.itcharge.cn/Solutions/2400-2499/largest-positive-integer-that-exists-with-its-negative/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2441.%20%E4%B8%8E%E5%AF%B9%E5%BA%94%E8%B4%9F%E6%95%B0%E5%90%8C%E6%97%B6%E5%AD%98%E5%9C%A8%E7%9A%84%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%95%B4%E6%95%B0.md,72.5%,简单,272 -2442,2400-2499,2442. 反转之后不同整数的数目,反转之后不同整数的数目,https://leetcode.cn/problems/count-number-of-distinct-integers-after-reverse-operations/,count-number-of-distinct-integers-after-reverse-operations,数组、哈希表、数学,https://algo.itcharge.cn/Solutions/2400-2499/count-number-of-distinct-integers-after-reverse-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2442.%20%E5%8F%8D%E8%BD%AC%E4%B9%8B%E5%90%8E%E4%B8%8D%E5%90%8C%E6%95%B4%E6%95%B0%E7%9A%84%E6%95%B0%E7%9B%AE.md,75.1%,中等,93 -2443,2400-2499,2443. 反转之后的数字和,反转之后的数字和,https://leetcode.cn/problems/sum-of-number-and-its-reverse/,sum-of-number-and-its-reverse,数学、枚举,https://algo.itcharge.cn/Solutions/2400-2499/sum-of-number-and-its-reverse/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2443.%20%E5%8F%8D%E8%BD%AC%E4%B9%8B%E5%90%8E%E7%9A%84%E6%95%B0%E5%AD%97%E5%92%8C.md,46.4%,中等,78 -2444,2400-2499,2444. 统计定界子数组的数目,统计定界子数组的数目,https://leetcode.cn/problems/count-subarrays-with-fixed-bounds/,count-subarrays-with-fixed-bounds,队列、数组、滑动窗口、单调队列,https://algo.itcharge.cn/Solutions/2400-2499/count-subarrays-with-fixed-bounds/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2444.%20%E7%BB%9F%E8%AE%A1%E5%AE%9A%E7%95%8C%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,44.4%,困难,99 -2445,2400-2499,2445. 值为 1 的节点数,值为 1 的节点数,https://leetcode.cn/problems/number-of-nodes-with-value-one/,number-of-nodes-with-value-one,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/2400-2499/number-of-nodes-with-value-one/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2445.%20%E5%80%BC%E4%B8%BA%201%20%E7%9A%84%E8%8A%82%E7%82%B9%E6%95%B0.md,78.2%,中等,15 -2446,2400-2499,2446. 判断两个事件是否存在冲突,判断两个事件是否存在冲突,https://leetcode.cn/problems/determine-if-two-events-have-conflict/,determine-if-two-events-have-conflict,数组、字符串,https://algo.itcharge.cn/Solutions/2400-2499/determine-if-two-events-have-conflict/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2446.%20%E5%88%A4%E6%96%AD%E4%B8%A4%E4%B8%AA%E4%BA%8B%E4%BB%B6%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E5%86%B2%E7%AA%81.md,63.5%,简单,213 -2447,2400-2499,2447. 最大公因数等于 K 的子数组数目,最大公因数等于 K 的子数组数目,https://leetcode.cn/problems/number-of-subarrays-with-gcd-equal-to-k/,number-of-subarrays-with-gcd-equal-to-k,数组、数学、数论,https://algo.itcharge.cn/Solutions/2400-2499/number-of-subarrays-with-gcd-equal-to-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2447.%20%E6%9C%80%E5%A4%A7%E5%85%AC%E5%9B%A0%E6%95%B0%E7%AD%89%E4%BA%8E%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md,41.2%,中等,65 -2448,2400-2499,2448. 使数组相等的最小开销,使数组相等的最小开销,https://leetcode.cn/problems/minimum-cost-to-make-array-equal/,minimum-cost-to-make-array-equal,贪心、数组、二分查找、前缀和、排序,https://algo.itcharge.cn/Solutions/2400-2499/minimum-cost-to-make-array-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2448.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%80%E5%B0%8F%E5%BC%80%E9%94%80.md,36.1%,困难,80 -2449,2400-2499,2449. 使数组相似的最少操作次数,使数组相似的最少操作次数,https://leetcode.cn/problems/minimum-number-of-operations-to-make-arrays-similar/,minimum-number-of-operations-to-make-arrays-similar,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2400-2499/minimum-number-of-operations-to-make-arrays-similar/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2449.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E7%9B%B8%E4%BC%BC%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,65.5%,困难,48 -2450,2400-2499,2450. 应用操作后不同二进制字符串的数量,应用操作后不同二进制字符串的数量,https://leetcode.cn/problems/number-of-distinct-binary-strings-after-applying-operations/,number-of-distinct-binary-strings-after-applying-operations,数学、字符串,https://algo.itcharge.cn/Solutions/2400-2499/number-of-distinct-binary-strings-after-applying-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2450.%20%E5%BA%94%E7%94%A8%E6%93%8D%E4%BD%9C%E5%90%8E%E4%B8%8D%E5%90%8C%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E9%87%8F.md,75.5%,中等,8 -2451,2400-2499,2451. 差值数组不同的字符串,差值数组不同的字符串,https://leetcode.cn/problems/odd-string-difference/,odd-string-difference,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/2400-2499/odd-string-difference/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2451.%20%E5%B7%AE%E5%80%BC%E6%95%B0%E7%BB%84%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,66.3%,简单,239 -2452,2400-2499,2452. 距离字典两次编辑以内的单词,距离字典两次编辑以内的单词,https://leetcode.cn/problems/words-within-two-edits-of-dictionary/,words-within-two-edits-of-dictionary,数组、字符串,https://algo.itcharge.cn/Solutions/2400-2499/words-within-two-edits-of-dictionary/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2452.%20%E8%B7%9D%E7%A6%BB%E5%AD%97%E5%85%B8%E4%B8%A4%E6%AC%A1%E7%BC%96%E8%BE%91%E4%BB%A5%E5%86%85%E7%9A%84%E5%8D%95%E8%AF%8D.md,65.1%,中等,43 -2453,2400-2499,2453. 摧毁一系列目标,摧毁一系列目标,https://leetcode.cn/problems/destroy-sequential-targets/,destroy-sequential-targets,数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2400-2499/destroy-sequential-targets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2453.%20%E6%91%A7%E6%AF%81%E4%B8%80%E7%B3%BB%E5%88%97%E7%9B%AE%E6%A0%87.md,35.5%,中等,69 -2454,2400-2499,2454. 下一个更大元素 IV,下一个更大元素 IV,https://leetcode.cn/problems/next-greater-element-iv/,next-greater-element-iv,栈、数组、二分查找、排序、单调栈、堆(优先队列),https://algo.itcharge.cn/Solutions/2400-2499/next-greater-element-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2454.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0%20IV.md,49.0%,困难,82 -2455,2400-2499,2455. 可被三整除的偶数的平均值,可被三整除的偶数的平均值,https://leetcode.cn/problems/average-value-of-even-numbers-that-are-divisible-by-three/,average-value-of-even-numbers-that-are-divisible-by-three,数组、数学,https://algo.itcharge.cn/Solutions/2400-2499/average-value-of-even-numbers-that-are-divisible-by-three/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2455.%20%E5%8F%AF%E8%A2%AB%E4%B8%89%E6%95%B4%E9%99%A4%E7%9A%84%E5%81%B6%E6%95%B0%E7%9A%84%E5%B9%B3%E5%9D%87%E5%80%BC.md,63.6%,简单,177 -2456,2400-2499,2456. 最流行的视频创作者,最流行的视频创作者,https://leetcode.cn/problems/most-popular-video-creator/,most-popular-video-creator,数组、哈希表、字符串、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2400-2499/most-popular-video-creator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2456.%20%E6%9C%80%E6%B5%81%E8%A1%8C%E7%9A%84%E8%A7%86%E9%A2%91%E5%88%9B%E4%BD%9C%E8%80%85.md,38.3%,中等,119 -2457,2400-2499,2457. 美丽整数的最小增量,美丽整数的最小增量,https://leetcode.cn/problems/minimum-addition-to-make-integer-beautiful/,minimum-addition-to-make-integer-beautiful,贪心、数学,https://algo.itcharge.cn/Solutions/2400-2499/minimum-addition-to-make-integer-beautiful/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2457.%20%E7%BE%8E%E4%B8%BD%E6%95%B4%E6%95%B0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%A2%9E%E9%87%8F.md,39.5%,中等,121 -2458,2400-2499,2458. 移除子树后的二叉树高度,移除子树后的二叉树高度,https://leetcode.cn/problems/height-of-binary-tree-after-subtree-removal-queries/,height-of-binary-tree-after-subtree-removal-queries,树、深度优先搜索、广度优先搜索、数组、二叉树,https://algo.itcharge.cn/Solutions/2400-2499/height-of-binary-tree-after-subtree-removal-queries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2458.%20%E7%A7%BB%E9%99%A4%E5%AD%90%E6%A0%91%E5%90%8E%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91%E9%AB%98%E5%BA%A6.md,41.1%,困难,81 -2459,2400-2499,2459. 通过移动项目到空白区域来排序数组,通过移动项目到空白区域来排序数组,https://leetcode.cn/problems/sort-array-by-moving-items-to-empty-space/,sort-array-by-moving-items-to-empty-space,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2400-2499/sort-array-by-moving-items-to-empty-space/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2459.%20%E9%80%9A%E8%BF%87%E7%A7%BB%E5%8A%A8%E9%A1%B9%E7%9B%AE%E5%88%B0%E7%A9%BA%E7%99%BD%E5%8C%BA%E5%9F%9F%E6%9D%A5%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md,60.1%,困难,3 -2460,2400-2499,2460. 对数组执行操作,对数组执行操作,https://leetcode.cn/problems/apply-operations-to-an-array/,apply-operations-to-an-array,数组、模拟,https://algo.itcharge.cn/Solutions/2400-2499/apply-operations-to-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2460.%20%E5%AF%B9%E6%95%B0%E7%BB%84%E6%89%A7%E8%A1%8C%E6%93%8D%E4%BD%9C.md,68.2%,简单,242 -2461,2400-2499,2461. 长度为 K 子数组中的最大和,长度为 K 子数组中的最大和,https://leetcode.cn/problems/maximum-sum-of-distinct-subarrays-with-length-k/,maximum-sum-of-distinct-subarrays-with-length-k,数组、哈希表、滑动窗口,https://algo.itcharge.cn/Solutions/2400-2499/maximum-sum-of-distinct-subarrays-with-length-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2461.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%20K%20%E5%AD%90%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md,30.6%,中等,142 -2462,2400-2499,2462. 雇佣 K 位工人的总代价,雇佣 K 位工人的总代价,https://leetcode.cn/problems/total-cost-to-hire-k-workers/,total-cost-to-hire-k-workers,数组、双指针、模拟、堆(优先队列),https://algo.itcharge.cn/Solutions/2400-2499/total-cost-to-hire-k-workers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2462.%20%E9%9B%87%E4%BD%A3%20K%20%E4%BD%8D%E5%B7%A5%E4%BA%BA%E7%9A%84%E6%80%BB%E4%BB%A3%E4%BB%B7.md,37.6%,中等,120 -2463,2400-2499,2463. 最小移动总距离,最小移动总距离,https://leetcode.cn/problems/minimum-total-distance-traveled/,minimum-total-distance-traveled,数组、动态规划、排序,https://algo.itcharge.cn/Solutions/2400-2499/minimum-total-distance-traveled/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2463.%20%E6%9C%80%E5%B0%8F%E7%A7%BB%E5%8A%A8%E6%80%BB%E8%B7%9D%E7%A6%BB.md,46.3%,困难,59 -2464,2400-2499,2464. 有效分割中的最少子数组数目,有效分割中的最少子数组数目,https://leetcode.cn/problems/minimum-subarrays-in-a-valid-split/,minimum-subarrays-in-a-valid-split,数组、数学、动态规划、数论,https://algo.itcharge.cn/Solutions/2400-2499/minimum-subarrays-in-a-valid-split/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2464.%20%E6%9C%89%E6%95%88%E5%88%86%E5%89%B2%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%91%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md,63.7%,中等,7 -2465,2400-2499,2465. 不同的平均值数目,不同的平均值数目,https://leetcode.cn/problems/number-of-distinct-averages/,number-of-distinct-averages,数组、哈希表、双指针、排序,https://algo.itcharge.cn/Solutions/2400-2499/number-of-distinct-averages/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2465.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E5%B9%B3%E5%9D%87%E5%80%BC%E6%95%B0%E7%9B%AE.md,72.5%,简单,217 -2466,2400-2499,2466. 统计构造好字符串的方案数,统计构造好字符串的方案数,https://leetcode.cn/problems/count-ways-to-build-good-strings/,count-ways-to-build-good-strings,动态规划,https://algo.itcharge.cn/Solutions/2400-2499/count-ways-to-build-good-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2466.%20%E7%BB%9F%E8%AE%A1%E6%9E%84%E9%80%A0%E5%A5%BD%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,46.2%,中等,69 -2467,2400-2499,2467. 树上最大得分和路径,树上最大得分和路径,https://leetcode.cn/problems/most-profitable-path-in-a-tree/,most-profitable-path-in-a-tree,树、深度优先搜索、广度优先搜索、图、数组,https://algo.itcharge.cn/Solutions/2400-2499/most-profitable-path-in-a-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2467.%20%E6%A0%91%E4%B8%8A%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86%E5%92%8C%E8%B7%AF%E5%BE%84.md,50.3%,中等,46 -2468,2400-2499,2468. 根据限制分割消息,根据限制分割消息,https://leetcode.cn/problems/split-message-based-on-limit/,split-message-based-on-limit,字符串、二分查找,https://algo.itcharge.cn/Solutions/2400-2499/split-message-based-on-limit/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2468.%20%E6%A0%B9%E6%8D%AE%E9%99%90%E5%88%B6%E5%88%86%E5%89%B2%E6%B6%88%E6%81%AF.md,44.4%,困难,53 -2469,2400-2499,2469. 温度转换,温度转换,https://leetcode.cn/problems/convert-the-temperature/,convert-the-temperature,数学,https://algo.itcharge.cn/Solutions/2400-2499/convert-the-temperature/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2469.%20%E6%B8%A9%E5%BA%A6%E8%BD%AC%E6%8D%A2.md,87.1%,简单,178 -2470,2400-2499,2470. 最小公倍数为 K 的子数组数目,最小公倍数为 K 的子数组数目,https://leetcode.cn/problems/number-of-subarrays-with-lcm-equal-to-k/,number-of-subarrays-with-lcm-equal-to-k,数组、数学、数论,https://algo.itcharge.cn/Solutions/2400-2499/number-of-subarrays-with-lcm-equal-to-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2470.%20%E6%9C%80%E5%B0%8F%E5%85%AC%E5%80%8D%E6%95%B0%E4%B8%BA%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md,40.7%,中等,88 -2471,2400-2499,2471. 逐层排序二叉树所需的最少操作数目,逐层排序二叉树所需的最少操作数目,https://leetcode.cn/problems/minimum-number-of-operations-to-sort-a-binary-tree-by-level/,minimum-number-of-operations-to-sort-a-binary-tree-by-level,树、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/2400-2499/minimum-number-of-operations-to-sort-a-binary-tree-by-level/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2471.%20%E9%80%90%E5%B1%82%E6%8E%92%E5%BA%8F%E4%BA%8C%E5%8F%89%E6%A0%91%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%95%B0%E7%9B%AE.md,55.7%,中等,91 -2472,2400-2499,2472. 不重叠回文子字符串的最大数目,不重叠回文子字符串的最大数目,https://leetcode.cn/problems/maximum-number-of-non-overlapping-palindrome-substrings/,maximum-number-of-non-overlapping-palindrome-substrings,字符串、动态规划,https://algo.itcharge.cn/Solutions/2400-2499/maximum-number-of-non-overlapping-palindrome-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2472.%20%E4%B8%8D%E9%87%8D%E5%8F%A0%E5%9B%9E%E6%96%87%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md,43.9%,困难,85 -2473,2400-2499,2473. 购买苹果的最低成本,购买苹果的最低成本,https://leetcode.cn/problems/minimum-cost-to-buy-apples/,minimum-cost-to-buy-apples,图、数组、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/2400-2499/minimum-cost-to-buy-apples/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2473.%20%E8%B4%AD%E4%B9%B0%E8%8B%B9%E6%9E%9C%E7%9A%84%E6%9C%80%E4%BD%8E%E6%88%90%E6%9C%AC.md,59.8%,中等,7 -2474,2400-2499,2474. 购买量严格增加的客户,购买量严格增加的客户,https://leetcode.cn/problems/customers-with-strictly-increasing-purchases/,customers-with-strictly-increasing-purchases,数据库,https://algo.itcharge.cn/Solutions/2400-2499/customers-with-strictly-increasing-purchases/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2474.%20%E8%B4%AD%E4%B9%B0%E9%87%8F%E4%B8%A5%E6%A0%BC%E5%A2%9E%E5%8A%A0%E7%9A%84%E5%AE%A2%E6%88%B7.md,49.6%,困难,14 -2475,2400-2499,2475. 数组中不等三元组的数目,数组中不等三元组的数目,https://leetcode.cn/problems/number-of-unequal-triplets-in-array/,number-of-unequal-triplets-in-array,数组、哈希表,https://algo.itcharge.cn/Solutions/2400-2499/number-of-unequal-triplets-in-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2475.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E4%B8%8D%E7%AD%89%E4%B8%89%E5%85%83%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,77.8%,简单,162 -2476,2400-2499,2476. 二叉搜索树最近节点查询,二叉搜索树最近节点查询,https://leetcode.cn/problems/closest-nodes-queries-in-a-binary-search-tree/,closest-nodes-queries-in-a-binary-search-tree,树、深度优先搜索、数组、二分查找、二叉树,https://algo.itcharge.cn/Solutions/2400-2499/closest-nodes-queries-in-a-binary-search-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2476.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E6%9C%80%E8%BF%91%E8%8A%82%E7%82%B9%E6%9F%A5%E8%AF%A2.md,41.4%,中等,100 -2477,2400-2499,2477. 到达首都的最少油耗,到达首都的最少油耗,https://leetcode.cn/problems/minimum-fuel-cost-to-report-to-the-capital/,minimum-fuel-cost-to-report-to-the-capital,树、深度优先搜索、广度优先搜索、图,https://algo.itcharge.cn/Solutions/2400-2499/minimum-fuel-cost-to-report-to-the-capital/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2477.%20%E5%88%B0%E8%BE%BE%E9%A6%96%E9%83%BD%E7%9A%84%E6%9C%80%E5%B0%91%E6%B2%B9%E8%80%97.md,53.0%,中等,74 -2478,2400-2499,2478. 完美分割的方案数,完美分割的方案数,https://leetcode.cn/problems/number-of-beautiful-partitions/,number-of-beautiful-partitions,字符串、动态规划,https://algo.itcharge.cn/Solutions/2400-2499/number-of-beautiful-partitions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2478.%20%E5%AE%8C%E7%BE%8E%E5%88%86%E5%89%B2%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,40.0%,困难,48 -2479,2400-2499,2479. 两个不重叠子树的最大异或值,两个不重叠子树的最大异或值,https://leetcode.cn/problems/maximum-xor-of-two-non-overlapping-subtrees/,maximum-xor-of-two-non-overlapping-subtrees,树、深度优先搜索、图、字典树,https://algo.itcharge.cn/Solutions/2400-2499/maximum-xor-of-two-non-overlapping-subtrees/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2479.%20%E4%B8%A4%E4%B8%AA%E4%B8%8D%E9%87%8D%E5%8F%A0%E5%AD%90%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BC%82%E6%88%96%E5%80%BC.md,65.9%,困难,7 -2480,2400-2499,2480. 形成化学键,形成化学键,https://leetcode.cn/problems/form-a-chemical-bond/,form-a-chemical-bond,数据库,https://algo.itcharge.cn/Solutions/2400-2499/form-a-chemical-bond/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2480.%20%E5%BD%A2%E6%88%90%E5%8C%96%E5%AD%A6%E9%94%AE.md,84.2%,简单,5 -2481,2400-2499,2481. 分割圆的最少切割次数,分割圆的最少切割次数,https://leetcode.cn/problems/minimum-cuts-to-divide-a-circle/,minimum-cuts-to-divide-a-circle,几何、数学,https://algo.itcharge.cn/Solutions/2400-2499/minimum-cuts-to-divide-a-circle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2481.%20%E5%88%86%E5%89%B2%E5%9C%86%E7%9A%84%E6%9C%80%E5%B0%91%E5%88%87%E5%89%B2%E6%AC%A1%E6%95%B0.md,58.8%,简单,127 -2482,2400-2499,2482. 行和列中一和零的差值,行和列中一和零的差值,https://leetcode.cn/problems/difference-between-ones-and-zeros-in-row-and-column/,difference-between-ones-and-zeros-in-row-and-column,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/2400-2499/difference-between-ones-and-zeros-in-row-and-column/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2482.%20%E8%A1%8C%E5%92%8C%E5%88%97%E4%B8%AD%E4%B8%80%E5%92%8C%E9%9B%B6%E7%9A%84%E5%B7%AE%E5%80%BC.md,82.5%,中等,60 -2483,2400-2499,2483. 商店的最少代价,商店的最少代价,https://leetcode.cn/problems/minimum-penalty-for-a-shop/,minimum-penalty-for-a-shop,字符串、前缀和,https://algo.itcharge.cn/Solutions/2400-2499/minimum-penalty-for-a-shop/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2483.%20%E5%95%86%E5%BA%97%E7%9A%84%E6%9C%80%E5%B0%91%E4%BB%A3%E4%BB%B7.md,63.3%,中等,78 -2484,2400-2499,2484. 统计回文子序列数目,统计回文子序列数目,https://leetcode.cn/problems/count-palindromic-subsequences/,count-palindromic-subsequences,字符串、动态规划,https://algo.itcharge.cn/Solutions/2400-2499/count-palindromic-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2484.%20%E7%BB%9F%E8%AE%A1%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97%E6%95%B0%E7%9B%AE.md,47.1%,困难,48 -2485,2400-2499,2485. 找出中枢整数,找出中枢整数,https://leetcode.cn/problems/find-the-pivot-integer/,find-the-pivot-integer,数学、前缀和,https://algo.itcharge.cn/Solutions/2400-2499/find-the-pivot-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2485.%20%E6%89%BE%E5%87%BA%E4%B8%AD%E6%9E%A2%E6%95%B4%E6%95%B0.md,81.0%,简单,285 -2486,2400-2499,2486. 追加字符以获得子序列,追加字符以获得子序列,https://leetcode.cn/problems/append-characters-to-string-to-make-subsequence/,append-characters-to-string-to-make-subsequence,贪心、双指针、字符串,https://algo.itcharge.cn/Solutions/2400-2499/append-characters-to-string-to-make-subsequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2486.%20%E8%BF%BD%E5%8A%A0%E5%AD%97%E7%AC%A6%E4%BB%A5%E8%8E%B7%E5%BE%97%E5%AD%90%E5%BA%8F%E5%88%97.md,65.2%,中等,85 -2487,2400-2499,2487. 从链表中移除节点,从链表中移除节点,https://leetcode.cn/problems/remove-nodes-from-linked-list/,remove-nodes-from-linked-list,栈、递归、链表、单调栈,https://algo.itcharge.cn/Solutions/2400-2499/remove-nodes-from-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2487.%20%E4%BB%8E%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%A7%BB%E9%99%A4%E8%8A%82%E7%82%B9.md,68.8%,中等,122 -2488,2400-2499,2488. 统计中位数为 K 的子数组,统计中位数为 K 的子数组,https://leetcode.cn/problems/count-subarrays-with-median-k/,count-subarrays-with-median-k,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/2400-2499/count-subarrays-with-median-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2488.%20%E7%BB%9F%E8%AE%A1%E4%B8%AD%E4%BD%8D%E6%95%B0%E4%B8%BA%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,50.8%,困难,201 -2489,2400-2499,2489. 固定比率的子字符串数,固定比率的子字符串数,https://leetcode.cn/problems/number-of-substrings-with-fixed-ratio/,number-of-substrings-with-fixed-ratio,哈希表、数学、字符串、前缀和,https://algo.itcharge.cn/Solutions/2400-2499/number-of-substrings-with-fixed-ratio/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2489.%20%E5%9B%BA%E5%AE%9A%E6%AF%94%E7%8E%87%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0.md,68.8%,中等,3 -2490,2400-2499,2490. 回环句,回环句,https://leetcode.cn/problems/circular-sentence/,circular-sentence,字符串,https://algo.itcharge.cn/Solutions/2400-2499/circular-sentence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2490.%20%E5%9B%9E%E7%8E%AF%E5%8F%A5.md,69.7%,简单,91 -2491,2400-2499,2491. 划分技能点相等的团队,划分技能点相等的团队,https://leetcode.cn/problems/divide-players-into-teams-of-equal-skill/,divide-players-into-teams-of-equal-skill,数组、哈希表、双指针、排序,https://algo.itcharge.cn/Solutions/2400-2499/divide-players-into-teams-of-equal-skill/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2491.%20%E5%88%92%E5%88%86%E6%8A%80%E8%83%BD%E7%82%B9%E7%9B%B8%E7%AD%89%E7%9A%84%E5%9B%A2%E9%98%9F.md,55.4%,中等,110 -2492,2400-2499,2492. 两个城市间路径的最小分数,两个城市间路径的最小分数,https://leetcode.cn/problems/minimum-score-of-a-path-between-two-cities/,minimum-score-of-a-path-between-two-cities,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/2400-2499/minimum-score-of-a-path-between-two-cities/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2492.%20%E4%B8%A4%E4%B8%AA%E5%9F%8E%E5%B8%82%E9%97%B4%E8%B7%AF%E5%BE%84%E7%9A%84%E6%9C%80%E5%B0%8F%E5%88%86%E6%95%B0.md,41.4%,中等,121 -2493,2400-2499,2493. 将节点分成尽可能多的组,将节点分成尽可能多的组,https://leetcode.cn/problems/divide-nodes-into-the-maximum-number-of-groups/,divide-nodes-into-the-maximum-number-of-groups,广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/2400-2499/divide-nodes-into-the-maximum-number-of-groups/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2493.%20%E5%B0%86%E8%8A%82%E7%82%B9%E5%88%86%E6%88%90%E5%B0%BD%E5%8F%AF%E8%83%BD%E5%A4%9A%E7%9A%84%E7%BB%84.md,43.7%,困难,44 -2494,2400-2499,2494. 合并在同一个大厅重叠的活动,合并在同一个大厅重叠的活动,https://leetcode.cn/problems/merge-overlapping-events-in-the-same-hall/,merge-overlapping-events-in-the-same-hall,数据库,https://algo.itcharge.cn/Solutions/2400-2499/merge-overlapping-events-in-the-same-hall/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2494.%20%E5%90%88%E5%B9%B6%E5%9C%A8%E5%90%8C%E4%B8%80%E4%B8%AA%E5%A4%A7%E5%8E%85%E9%87%8D%E5%8F%A0%E7%9A%84%E6%B4%BB%E5%8A%A8.md,39.2%,困难,7 -2495,2400-2499,2495. 乘积为偶数的子数组数,乘积为偶数的子数组数,https://leetcode.cn/problems/number-of-subarrays-having-even-product/,number-of-subarrays-having-even-product,数组、数学、动态规划,https://algo.itcharge.cn/Solutions/2400-2499/number-of-subarrays-having-even-product/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2495.%20%E4%B9%98%E7%A7%AF%E4%B8%BA%E5%81%B6%E6%95%B0%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0.md,68.8%,中等,12 -2496,2400-2499,2496. 数组中字符串的最大值,数组中字符串的最大值,https://leetcode.cn/problems/maximum-value-of-a-string-in-an-array/,maximum-value-of-a-string-in-an-array,数组、字符串,https://algo.itcharge.cn/Solutions/2400-2499/maximum-value-of-a-string-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2496.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,79.6%,简单,191 -2497,2400-2499,2497. 图中最大星和,图中最大星和,https://leetcode.cn/problems/maximum-star-sum-of-a-graph/,maximum-star-sum-of-a-graph,贪心、图、数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2400-2499/maximum-star-sum-of-a-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2497.%20%E5%9B%BE%E4%B8%AD%E6%9C%80%E5%A4%A7%E6%98%9F%E5%92%8C.md,38.3%,中等,50 -2498,2400-2499,2498. 青蛙过河 II,青蛙过河 II,https://leetcode.cn/problems/frog-jump-ii/,frog-jump-ii,贪心、数组、二分查找,https://algo.itcharge.cn/Solutions/2400-2499/frog-jump-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2498.%20%E9%9D%92%E8%9B%99%E8%BF%87%E6%B2%B3%20II.md,64.4%,中等,49 -2499,2400-2499,2499. 让数组不相等的最小总代价,让数组不相等的最小总代价,https://leetcode.cn/problems/minimum-total-cost-to-make-arrays-unequal/,minimum-total-cost-to-make-arrays-unequal,贪心、数组、哈希表、计数,https://algo.itcharge.cn/Solutions/2400-2499/minimum-total-cost-to-make-arrays-unequal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2499.%20%E8%AE%A9%E6%95%B0%E7%BB%84%E4%B8%8D%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%80%E5%B0%8F%E6%80%BB%E4%BB%A3%E4%BB%B7.md,42.0%,困难,28 -2500,2500-2599,2500. 删除每行中的最大值,删除每行中的最大值,https://leetcode.cn/problems/delete-greatest-value-in-each-row/,delete-greatest-value-in-each-row,数组、矩阵、排序,https://algo.itcharge.cn/Solutions/2500-2599/delete-greatest-value-in-each-row/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2500.%20%E5%88%A0%E9%99%A4%E6%AF%8F%E8%A1%8C%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,82.8%,简单,114 -2501,2500-2599,2501. 数组中最长的方波,数组中最长的方波,https://leetcode.cn/problems/longest-square-streak-in-an-array/,longest-square-streak-in-an-array,数组、哈希表、二分查找、动态规划、排序,https://algo.itcharge.cn/Solutions/2500-2599/longest-square-streak-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2501.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9C%80%E9%95%BF%E7%9A%84%E6%96%B9%E6%B3%A2.md,41.3%,中等,85 -2502,2500-2599,2502. 设计内存分配器,设计内存分配器,https://leetcode.cn/problems/design-memory-allocator/,design-memory-allocator,设计、数组、哈希表、模拟,https://algo.itcharge.cn/Solutions/2500-2599/design-memory-allocator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2502.%20%E8%AE%BE%E8%AE%A1%E5%86%85%E5%AD%98%E5%88%86%E9%85%8D%E5%99%A8.md,52.2%,中等,73 -2503,2500-2599,2503. 矩阵查询可获得的最大分数,矩阵查询可获得的最大分数,https://leetcode.cn/problems/maximum-number-of-points-from-grid-queries/,maximum-number-of-points-from-grid-queries,广度优先搜索、并查集、数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2500-2599/maximum-number-of-points-from-grid-queries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2503.%20%E7%9F%A9%E9%98%B5%E6%9F%A5%E8%AF%A2%E5%8F%AF%E8%8E%B7%E5%BE%97%E7%9A%84%E6%9C%80%E5%A4%A7%E5%88%86%E6%95%B0.md,43.4%,困难,65 -2504,2500-2599,2504. 把名字和职业联系起来,把名字和职业联系起来,https://leetcode.cn/problems/concatenate-the-name-and-the-profession/,concatenate-the-name-and-the-profession,数据库,https://algo.itcharge.cn/Solutions/2500-2599/concatenate-the-name-and-the-profession/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2504.%20%E6%8A%8A%E5%90%8D%E5%AD%97%E5%92%8C%E8%81%8C%E4%B8%9A%E8%81%94%E7%B3%BB%E8%B5%B7%E6%9D%A5.md,76.4%,简单,8 -2505,2500-2599,2505. 所有子序列和的按位或,所有子序列和的按位或,https://leetcode.cn/problems/bitwise-or-of-all-subsequence-sums/,bitwise-or-of-all-subsequence-sums,位运算、脑筋急转弯、数组、数学,https://algo.itcharge.cn/Solutions/2500-2599/bitwise-or-of-all-subsequence-sums/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2505.%20%E6%89%80%E6%9C%89%E5%AD%90%E5%BA%8F%E5%88%97%E5%92%8C%E7%9A%84%E6%8C%89%E4%BD%8D%E6%88%96.md,58.8%,中等,4 -2506,2500-2599,2506. 统计相似字符串对的数目,统计相似字符串对的数目,https://leetcode.cn/problems/count-pairs-of-similar-strings/,count-pairs-of-similar-strings,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/2500-2599/count-pairs-of-similar-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2506.%20%E7%BB%9F%E8%AE%A1%E7%9B%B8%E4%BC%BC%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%AF%B9%E7%9A%84%E6%95%B0%E7%9B%AE.md,78.3%,简单,87 -2507,2500-2599,2507. 使用质因数之和替换后可以取到的最小值,使用质因数之和替换后可以取到的最小值,https://leetcode.cn/problems/smallest-value-after-replacing-with-sum-of-prime-factors/,smallest-value-after-replacing-with-sum-of-prime-factors,数学、数论,https://algo.itcharge.cn/Solutions/2500-2599/smallest-value-after-replacing-with-sum-of-prime-factors/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2507.%20%E4%BD%BF%E7%94%A8%E8%B4%A8%E5%9B%A0%E6%95%B0%E4%B9%8B%E5%92%8C%E6%9B%BF%E6%8D%A2%E5%90%8E%E5%8F%AF%E4%BB%A5%E5%8F%96%E5%88%B0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md,49.9%,中等,60 -2508,2500-2599,2508. 添加边使所有节点度数都为偶数,添加边使所有节点度数都为偶数,https://leetcode.cn/problems/add-edges-to-make-degrees-of-all-nodes-even/,add-edges-to-make-degrees-of-all-nodes-even,图、哈希表,https://algo.itcharge.cn/Solutions/2500-2599/add-edges-to-make-degrees-of-all-nodes-even/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2508.%20%E6%B7%BB%E5%8A%A0%E8%BE%B9%E4%BD%BF%E6%89%80%E6%9C%89%E8%8A%82%E7%82%B9%E5%BA%A6%E6%95%B0%E9%83%BD%E4%B8%BA%E5%81%B6%E6%95%B0.md,29.4%,困难,54 -2509,2500-2599,2509. 查询树中环的长度,查询树中环的长度,https://leetcode.cn/problems/cycle-length-queries-in-a-tree/,cycle-length-queries-in-a-tree,树、二叉树,https://algo.itcharge.cn/Solutions/2500-2599/cycle-length-queries-in-a-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2509.%20%E6%9F%A5%E8%AF%A2%E6%A0%91%E4%B8%AD%E7%8E%AF%E7%9A%84%E9%95%BF%E5%BA%A6.md,65.2%,困难,60 -2510,2500-2599,2510. 检查是否有路径经过相同数量的 0 和 1,检查是否有路径经过相同数量的 0 和 1,https://leetcode.cn/problems/check-if-there-is-a-path-with-equal-number-of-0s-and-1s/,check-if-there-is-a-path-with-equal-number-of-0s-and-1s,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/2500-2599/check-if-there-is-a-path-with-equal-number-of-0s-and-1s/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2510.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%9C%89%E8%B7%AF%E5%BE%84%E7%BB%8F%E8%BF%87%E7%9B%B8%E5%90%8C%E6%95%B0%E9%87%8F%E7%9A%84%200%20%E5%92%8C%201.md,69.1%,中等,7 -2511,2500-2599,2511. 最多可以摧毁的敌人城堡数目,最多可以摧毁的敌人城堡数目,https://leetcode.cn/problems/maximum-enemy-forts-that-can-be-captured/,maximum-enemy-forts-that-can-be-captured,数组、双指针,https://algo.itcharge.cn/Solutions/2500-2599/maximum-enemy-forts-that-can-be-captured/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2511.%20%E6%9C%80%E5%A4%9A%E5%8F%AF%E4%BB%A5%E6%91%A7%E6%AF%81%E7%9A%84%E6%95%8C%E4%BA%BA%E5%9F%8E%E5%A0%A1%E6%95%B0%E7%9B%AE.md,49.8%,简单,66 -2512,2500-2599,2512. 奖励最顶尖的 K 名学生,奖励最顶尖的 K 名学生,https://leetcode.cn/problems/reward-top-k-students/,reward-top-k-students,数组、哈希表、字符串、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2500-2599/reward-top-k-students/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2512.%20%E5%A5%96%E5%8A%B1%E6%9C%80%E9%A1%B6%E5%B0%96%E7%9A%84%20K%20%E5%90%8D%E5%AD%A6%E7%94%9F.md,46.1%,中等,51 -2513,2500-2599,2513. 最小化两个数组中的最大值,最小化两个数组中的最大值,https://leetcode.cn/problems/minimize-the-maximum-of-two-arrays/,minimize-the-maximum-of-two-arrays,数学、二分查找、数论,https://algo.itcharge.cn/Solutions/2500-2599/minimize-the-maximum-of-two-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2513.%20%E6%9C%80%E5%B0%8F%E5%8C%96%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,34.6%,中等,34 -2514,2500-2599,2514. 统计同位异构字符串数目,统计同位异构字符串数目,https://leetcode.cn/problems/count-anagrams/,count-anagrams,哈希表、数学、字符串、组合数学、计数,https://algo.itcharge.cn/Solutions/2500-2599/count-anagrams/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2514.%20%E7%BB%9F%E8%AE%A1%E5%90%8C%E4%BD%8D%E5%BC%82%E6%9E%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%9B%AE.md,46.3%,困难,35 -2515,2500-2599,2515. 到目标字符串的最短距离,到目标字符串的最短距离,https://leetcode.cn/problems/shortest-distance-to-target-string-in-a-circular-array/,shortest-distance-to-target-string-in-a-circular-array,数组、字符串,https://algo.itcharge.cn/Solutions/2500-2599/shortest-distance-to-target-string-in-a-circular-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2515.%20%E5%88%B0%E7%9B%AE%E6%A0%87%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%9D%E7%A6%BB.md,55.7%,简单,69 -2516,2500-2599,2516. 每种字符至少取 K 个,每种字符至少取 K 个,https://leetcode.cn/problems/take-k-of-each-character-from-left-and-right/,take-k-of-each-character-from-left-and-right,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/2500-2599/take-k-of-each-character-from-left-and-right/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2516.%20%E6%AF%8F%E7%A7%8D%E5%AD%97%E7%AC%A6%E8%87%B3%E5%B0%91%E5%8F%96%20K%20%E4%B8%AA.md,37.2%,中等,74 -2517,2500-2599,2517. 礼盒的最大甜蜜度,礼盒的最大甜蜜度,https://leetcode.cn/problems/maximum-tastiness-of-candy-basket/,maximum-tastiness-of-candy-basket,数组、二分查找、排序,https://algo.itcharge.cn/Solutions/2500-2599/maximum-tastiness-of-candy-basket/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2517.%20%E7%A4%BC%E7%9B%92%E7%9A%84%E6%9C%80%E5%A4%A7%E7%94%9C%E8%9C%9C%E5%BA%A6.md,72.0%,中等,135 -2518,2500-2599,2518. 好分区的数目,好分区的数目,https://leetcode.cn/problems/number-of-great-partitions/,number-of-great-partitions,数组、动态规划,https://algo.itcharge.cn/Solutions/2500-2599/number-of-great-partitions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2518.%20%E5%A5%BD%E5%88%86%E5%8C%BA%E7%9A%84%E6%95%B0%E7%9B%AE.md,42.6%,困难,31 -2519,2500-2599,2519. 统计 K-Big 索引的数量,统计 K-Big 索引的数量,https://leetcode.cn/problems/count-the-number-of-k-big-indices/,count-the-number-of-k-big-indices,树状数组、线段树、数组、二分查找、分治、有序集合、归并排序,https://algo.itcharge.cn/Solutions/2500-2599/count-the-number-of-k-big-indices/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2519.%20%E7%BB%9F%E8%AE%A1%20K-Big%20%E7%B4%A2%E5%BC%95%E7%9A%84%E6%95%B0%E9%87%8F.md,75.1%,困难,11 -2520,2500-2599,2520. 统计能整除数字的位数,统计能整除数字的位数,https://leetcode.cn/problems/count-the-digits-that-divide-a-number/,count-the-digits-that-divide-a-number,数学,https://algo.itcharge.cn/Solutions/2500-2599/count-the-digits-that-divide-a-number/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2520.%20%E7%BB%9F%E8%AE%A1%E8%83%BD%E6%95%B4%E9%99%A4%E6%95%B0%E5%AD%97%E7%9A%84%E4%BD%8D%E6%95%B0.md,83.2%,简单,81 -2521,2500-2599,2521. 数组乘积中的不同质因数数目,数组乘积中的不同质因数数目,https://leetcode.cn/problems/distinct-prime-factors-of-product-of-array/,distinct-prime-factors-of-product-of-array,数组、哈希表、数学、数论,https://algo.itcharge.cn/Solutions/2500-2599/distinct-prime-factors-of-product-of-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2521.%20%E6%95%B0%E7%BB%84%E4%B9%98%E7%A7%AF%E4%B8%AD%E7%9A%84%E4%B8%8D%E5%90%8C%E8%B4%A8%E5%9B%A0%E6%95%B0%E6%95%B0%E7%9B%AE.md,62.6%,中等,63 -2522,2500-2599,2522. 将字符串分割成值不超过 K 的子字符串,将字符串分割成值不超过 K 的子字符串,https://leetcode.cn/problems/partition-string-into-substrings-with-values-at-most-k/,partition-string-into-substrings-with-values-at-most-k,贪心、字符串、动态规划,https://algo.itcharge.cn/Solutions/2500-2599/partition-string-into-substrings-with-values-at-most-k/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2522.%20%E5%B0%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%86%E5%89%B2%E6%88%90%E5%80%BC%E4%B8%8D%E8%B6%85%E8%BF%87%20K%20%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,49.5%,中等,59 -2523,2500-2599,2523. 范围内最接近的两个质数,范围内最接近的两个质数,https://leetcode.cn/problems/closest-prime-numbers-in-range/,closest-prime-numbers-in-range,数学、数论,https://algo.itcharge.cn/Solutions/2500-2599/closest-prime-numbers-in-range/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2523.%20%E8%8C%83%E5%9B%B4%E5%86%85%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E4%B8%A4%E4%B8%AA%E8%B4%A8%E6%95%B0.md,41.3%,中等,64 -2524,2500-2599,2524. 子数组的最大频率分数,子数组的最大频率分数,https://leetcode.cn/problems/maximum-frequency-score-of-a-subarray/,maximum-frequency-score-of-a-subarray,数组、哈希表、数学、滑动窗口,https://algo.itcharge.cn/Solutions/2500-2599/maximum-frequency-score-of-a-subarray/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2524.%20%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E9%A2%91%E7%8E%87%E5%88%86%E6%95%B0.md,52.2%,困难,3 -2525,2500-2599,2525. 根据规则将箱子分类,根据规则将箱子分类,https://leetcode.cn/problems/categorize-box-according-to-criteria/,categorize-box-according-to-criteria,数学,https://algo.itcharge.cn/Solutions/2500-2599/categorize-box-according-to-criteria/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2525.%20%E6%A0%B9%E6%8D%AE%E8%A7%84%E5%88%99%E5%B0%86%E7%AE%B1%E5%AD%90%E5%88%86%E7%B1%BB.md,47.5%,简单,37 -2526,2500-2599,2526. 找到数据流中的连续整数,找到数据流中的连续整数,https://leetcode.cn/problems/find-consecutive-integers-from-a-data-stream/,find-consecutive-integers-from-a-data-stream,设计、队列、哈希表、计数、数据流,https://algo.itcharge.cn/Solutions/2500-2599/find-consecutive-integers-from-a-data-stream/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2526.%20%E6%89%BE%E5%88%B0%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E8%BF%9E%E7%BB%AD%E6%95%B4%E6%95%B0.md,54.0%,中等,44 -2527,2500-2599,2527. 查询数组 Xor 美丽值,查询数组 Xor 美丽值,https://leetcode.cn/problems/find-xor-beauty-of-array/,find-xor-beauty-of-array,位运算、数组、数学,https://algo.itcharge.cn/Solutions/2500-2599/find-xor-beauty-of-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2527.%20%E6%9F%A5%E8%AF%A2%E6%95%B0%E7%BB%84%20Xor%20%E7%BE%8E%E4%B8%BD%E5%80%BC.md,70.3%,中等,40 -2528,2500-2599,2528. 最大化城市的最小供电站数目,最大化城市的最小供电站数目,https://leetcode.cn/problems/maximize-the-minimum-powered-city/,maximize-the-minimum-powered-city,贪心、队列、数组、二分查找、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/2500-2599/maximize-the-minimum-powered-city/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2528.%20%E6%9C%80%E5%A4%A7%E5%8C%96%E5%9F%8E%E5%B8%82%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BE%9B%E7%94%B5%E7%AB%99%E6%95%B0%E7%9B%AE.md,40.5%,困难,37 -2529,2500-2599,2529. 正整数和负整数的最大计数,正整数和负整数的最大计数,https://leetcode.cn/problems/maximum-count-of-positive-integer-and-negative-integer/,maximum-count-of-positive-integer-and-negative-integer,数组、二分查找、计数,https://algo.itcharge.cn/Solutions/2500-2599/maximum-count-of-positive-integer-and-negative-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2529.%20%E6%AD%A3%E6%95%B4%E6%95%B0%E5%92%8C%E8%B4%9F%E6%95%B4%E6%95%B0%E7%9A%84%E6%9C%80%E5%A4%A7%E8%AE%A1%E6%95%B0.md,76.3%,简单,74 -2530,2500-2599,2530. 执行 K 次操作后的最大分数,执行 K 次操作后的最大分数,https://leetcode.cn/problems/maximal-score-after-applying-k-operations/,maximal-score-after-applying-k-operations,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/2500-2599/maximal-score-after-applying-k-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2530.%20%E6%89%A7%E8%A1%8C%20K%20%E6%AC%A1%E6%93%8D%E4%BD%9C%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E5%88%86%E6%95%B0.md,44.9%,中等,68 -2531,2500-2599,2531. 使字符串总不同字符的数目相等,使字符串总不同字符的数目相等,https://leetcode.cn/problems/make-number-of-distinct-characters-equal/,make-number-of-distinct-characters-equal,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/2500-2599/make-number-of-distinct-characters-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2531.%20%E4%BD%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%80%BB%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E6%95%B0%E7%9B%AE%E7%9B%B8%E7%AD%89.md,29.7%,中等,87 -2532,2500-2599,2532. 过桥的时间,过桥的时间,https://leetcode.cn/problems/time-to-cross-a-bridge/,time-to-cross-a-bridge,数组、模拟、堆(优先队列),https://algo.itcharge.cn/Solutions/2500-2599/time-to-cross-a-bridge/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2532.%20%E8%BF%87%E6%A1%A5%E7%9A%84%E6%97%B6%E9%97%B4.md,51.7%,困难,51 -2533,2500-2599,2533. 好二进制字符串的数量,好二进制字符串的数量,https://leetcode.cn/problems/number-of-good-binary-strings/,number-of-good-binary-strings,动态规划,https://algo.itcharge.cn/Solutions/2500-2599/number-of-good-binary-strings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2533.%20%E5%A5%BD%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E9%87%8F.md,69.7%,中等,3 -2534,2500-2599,2534. 通过门的时间,通过门的时间,https://leetcode.cn/problems/time-taken-to-cross-the-door/,time-taken-to-cross-the-door,队列、数组、模拟,https://algo.itcharge.cn/Solutions/2500-2599/time-taken-to-cross-the-door/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2534.%20%E9%80%9A%E8%BF%87%E9%97%A8%E7%9A%84%E6%97%B6%E9%97%B4.md,63.0%,困难,8 -2535,2500-2599,2535. 数组元素和与数字和的绝对差,数组元素和与数字和的绝对差,https://leetcode.cn/problems/difference-between-element-sum-and-digit-sum-of-an-array/,difference-between-element-sum-and-digit-sum-of-an-array,数组、数学,https://algo.itcharge.cn/Solutions/2500-2599/difference-between-element-sum-and-digit-sum-of-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2535.%20%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E5%92%8C%E4%B8%8E%E6%95%B0%E5%AD%97%E5%92%8C%E7%9A%84%E7%BB%9D%E5%AF%B9%E5%B7%AE.md,84.3%,简单,110 -2536,2500-2599,2536. 子矩阵元素加 1,子矩阵元素加 1,https://leetcode.cn/problems/increment-submatrices-by-one/,increment-submatrices-by-one,数组、矩阵、前缀和,https://algo.itcharge.cn/Solutions/2500-2599/increment-submatrices-by-one/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2536.%20%E5%AD%90%E7%9F%A9%E9%98%B5%E5%85%83%E7%B4%A0%E5%8A%A0%201.md,60.6%,中等,77 -2537,2500-2599,2537. 统计好子数组的数目,统计好子数组的数目,https://leetcode.cn/problems/count-the-number-of-good-subarrays/,count-the-number-of-good-subarrays,数组、哈希表、滑动窗口,https://algo.itcharge.cn/Solutions/2500-2599/count-the-number-of-good-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2537.%20%E7%BB%9F%E8%AE%A1%E5%A5%BD%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,48.6%,中等,80 -2538,2500-2599,2538. 最大价值和与最小价值和的差值,最大价值和与最小价值和的差值,https://leetcode.cn/problems/difference-between-maximum-and-minimum-price-sum/,difference-between-maximum-and-minimum-price-sum,树、深度优先搜索、数组、动态规划,https://algo.itcharge.cn/Solutions/2500-2599/difference-between-maximum-and-minimum-price-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2538.%20%E6%9C%80%E5%A4%A7%E4%BB%B7%E5%80%BC%E5%92%8C%E4%B8%8E%E6%9C%80%E5%B0%8F%E4%BB%B7%E5%80%BC%E5%92%8C%E7%9A%84%E5%B7%AE%E5%80%BC.md,48.5%,困难,43 -2539,2500-2599,2539. 好子序列的个数,好子序列的个数,https://leetcode.cn/problems/count-the-number-of-good-subsequences/,count-the-number-of-good-subsequences,哈希表、数学、字符串、组合数学、计数,https://algo.itcharge.cn/Solutions/2500-2599/count-the-number-of-good-subsequences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2539.%20%E5%A5%BD%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md,62.9%,中等,5 -2540,2500-2599,2540. 最小公共值,最小公共值,https://leetcode.cn/problems/minimum-common-value/,minimum-common-value,数组、哈希表、双指针、二分查找,https://algo.itcharge.cn/Solutions/2500-2599/minimum-common-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2540.%20%E6%9C%80%E5%B0%8F%E5%85%AC%E5%85%B1%E5%80%BC.md,60.5%,简单,60 -2541,2500-2599,2541. 使数组中所有元素相等的最小操作数 II,使数组中所有元素相等的最小操作数 II,https://leetcode.cn/problems/minimum-operations-to-make-array-equal-ii/,minimum-operations-to-make-array-equal-ii,贪心、数组、数学,https://algo.itcharge.cn/Solutions/2500-2599/minimum-operations-to-make-array-equal-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2541.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E4%B8%AD%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0%20II.md,31.2%,中等,32 -2542,2500-2599,2542. 最大子序列的分数,最大子序列的分数,https://leetcode.cn/problems/maximum-subsequence-score/,maximum-subsequence-score,贪心、数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2500-2599/maximum-subsequence-score/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2542.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E5%88%86%E6%95%B0.md,51.2%,中等,35 -2543,2500-2599,2543. 判断一个点是否可以到达,判断一个点是否可以到达,https://leetcode.cn/problems/check-if-point-is-reachable/,check-if-point-is-reachable,数学、数论,https://algo.itcharge.cn/Solutions/2500-2599/check-if-point-is-reachable/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2543.%20%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%AA%E7%82%B9%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%88%B0%E8%BE%BE.md,46.0%,困难,15 -2544,2500-2599,2544. 交替数字和,交替数字和,https://leetcode.cn/problems/alternating-digit-sum/,alternating-digit-sum,数学,https://algo.itcharge.cn/Solutions/2500-2599/alternating-digit-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2544.%20%E4%BA%A4%E6%9B%BF%E6%95%B0%E5%AD%97%E5%92%8C.md,79.8%,简单,76 -2545,2500-2599,2545. 根据第 K 场考试的分数排序,根据第 K 场考试的分数排序,https://leetcode.cn/problems/sort-the-students-by-their-kth-score/,sort-the-students-by-their-kth-score,数组、矩阵、排序,https://algo.itcharge.cn/Solutions/2500-2599/sort-the-students-by-their-kth-score/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2545.%20%E6%A0%B9%E6%8D%AE%E7%AC%AC%20K%20%E5%9C%BA%E8%80%83%E8%AF%95%E7%9A%84%E5%88%86%E6%95%B0%E6%8E%92%E5%BA%8F.md,86.5%,中等,68 -2546,2500-2599,2546. 执行逐位运算使字符串相等,执行逐位运算使字符串相等,https://leetcode.cn/problems/apply-bitwise-operations-to-make-strings-equal/,apply-bitwise-operations-to-make-strings-equal,位运算、字符串,https://algo.itcharge.cn/Solutions/2500-2599/apply-bitwise-operations-to-make-strings-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2546.%20%E6%89%A7%E8%A1%8C%E9%80%90%E4%BD%8D%E8%BF%90%E7%AE%97%E4%BD%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E7%AD%89.md,42.2%,中等,50 -2547,2500-2599,2547. 拆分数组的最小代价,拆分数组的最小代价,https://leetcode.cn/problems/minimum-cost-to-split-an-array/,minimum-cost-to-split-an-array,数组、哈希表、动态规划、计数,https://algo.itcharge.cn/Solutions/2500-2599/minimum-cost-to-split-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2547.%20%E6%8B%86%E5%88%86%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BB%A3%E4%BB%B7.md,56.5%,困难,37 -2548,2500-2599,2548. 填满背包的最大价格,填满背包的最大价格,https://leetcode.cn/problems/maximum-price-to-fill-a-bag/,maximum-price-to-fill-a-bag,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2500-2599/maximum-price-to-fill-a-bag/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2548.%20%E5%A1%AB%E6%BB%A1%E8%83%8C%E5%8C%85%E7%9A%84%E6%9C%80%E5%A4%A7%E4%BB%B7%E6%A0%BC.md,58.3%,中等,3 -2549,2500-2599,2549. 统计桌面上的不同数字,统计桌面上的不同数字,https://leetcode.cn/problems/count-distinct-numbers-on-board/,count-distinct-numbers-on-board,数组、哈希表、数学、模拟,https://algo.itcharge.cn/Solutions/2500-2599/count-distinct-numbers-on-board/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2549.%20%E7%BB%9F%E8%AE%A1%E6%A1%8C%E9%9D%A2%E4%B8%8A%E7%9A%84%E4%B8%8D%E5%90%8C%E6%95%B0%E5%AD%97.md,62.9%,简单,46 -2550,2500-2599,2550. 猴子碰撞的方法数,猴子碰撞的方法数,https://leetcode.cn/problems/count-collisions-of-monkeys-on-a-polygon/,count-collisions-of-monkeys-on-a-polygon,递归、数学,https://algo.itcharge.cn/Solutions/2500-2599/count-collisions-of-monkeys-on-a-polygon/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2550.%20%E7%8C%B4%E5%AD%90%E7%A2%B0%E6%92%9E%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md,28.9%,中等,45 -2551,2500-2599,2551. 将珠子放入背包中,将珠子放入背包中,https://leetcode.cn/problems/put-marbles-in-bags/,put-marbles-in-bags,贪心、数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2500-2599/put-marbles-in-bags/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2551.%20%E5%B0%86%E7%8F%A0%E5%AD%90%E6%94%BE%E5%85%A5%E8%83%8C%E5%8C%85%E4%B8%AD.md,56.5%,困难,38 -2552,2500-2599,2552. 统计上升四元组,统计上升四元组,https://leetcode.cn/problems/count-increasing-quadruplets/,count-increasing-quadruplets,树状数组、数组、动态规划、枚举、前缀和,https://algo.itcharge.cn/Solutions/2500-2599/count-increasing-quadruplets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2552.%20%E7%BB%9F%E8%AE%A1%E4%B8%8A%E5%8D%87%E5%9B%9B%E5%85%83%E7%BB%84.md,44.2%,困难,37 -2553,2500-2599,2553. 分割数组中数字的数位,分割数组中数字的数位,https://leetcode.cn/problems/separate-the-digits-in-an-array/,separate-the-digits-in-an-array,数组、模拟,https://algo.itcharge.cn/Solutions/2500-2599/separate-the-digits-in-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2553.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84%E4%B8%AD%E6%95%B0%E5%AD%97%E7%9A%84%E6%95%B0%E4%BD%8D.md,82.5%,简单,61 -2554,2500-2599,2554. 从一个范围内选择最多整数 I,从一个范围内选择最多整数 I,https://leetcode.cn/problems/maximum-number-of-integers-to-choose-from-a-range-i/,maximum-number-of-integers-to-choose-from-a-range-i,贪心、数组、哈希表、二分查找、排序,https://algo.itcharge.cn/Solutions/2500-2599/maximum-number-of-integers-to-choose-from-a-range-i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2554.%20%E4%BB%8E%E4%B8%80%E4%B8%AA%E8%8C%83%E5%9B%B4%E5%86%85%E9%80%89%E6%8B%A9%E6%9C%80%E5%A4%9A%E6%95%B4%E6%95%B0%20I.md,58.2%,中等,40 -2555,2500-2599,2555. 两个线段获得的最多奖品,两个线段获得的最多奖品,https://leetcode.cn/problems/maximize-win-from-two-segments/,maximize-win-from-two-segments,数组、二分查找、滑动窗口,https://algo.itcharge.cn/Solutions/2500-2599/maximize-win-from-two-segments/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2555.%20%E4%B8%A4%E4%B8%AA%E7%BA%BF%E6%AE%B5%E8%8E%B7%E5%BE%97%E7%9A%84%E6%9C%80%E5%A4%9A%E5%A5%96%E5%93%81.md,39.9%,中等,31 -2556,2500-2599,2556. 二进制矩阵中翻转最多一次使路径不连通,二进制矩阵中翻转最多一次使路径不连通,https://leetcode.cn/problems/disconnect-path-in-a-binary-matrix-by-at-most-one-flip/,disconnect-path-in-a-binary-matrix-by-at-most-one-flip,深度优先搜索、广度优先搜索、数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/2500-2599/disconnect-path-in-a-binary-matrix-by-at-most-one-flip/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2556.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%BF%BB%E8%BD%AC%E6%9C%80%E5%A4%9A%E4%B8%80%E6%AC%A1%E4%BD%BF%E8%B7%AF%E5%BE%84%E4%B8%8D%E8%BF%9E%E9%80%9A.md,30.2%,中等,47 -2557,2500-2599,2557. 从一个范围内选择最多整数 II,从一个范围内选择最多整数 II,https://leetcode.cn/problems/maximum-number-of-integers-to-choose-from-a-range-ii/,maximum-number-of-integers-to-choose-from-a-range-ii,贪心、数组、二分查找、排序,https://algo.itcharge.cn/Solutions/2500-2599/maximum-number-of-integers-to-choose-from-a-range-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2557.%20%E4%BB%8E%E4%B8%80%E4%B8%AA%E8%8C%83%E5%9B%B4%E5%86%85%E9%80%89%E6%8B%A9%E6%9C%80%E5%A4%9A%E6%95%B4%E6%95%B0%20II.md,43.1%,中等,7 -2558,2500-2599,2558. 从数量最多的堆取走礼物,从数量最多的堆取走礼物,https://leetcode.cn/problems/take-gifts-from-the-richest-pile/,take-gifts-from-the-richest-pile,数组、模拟、堆(优先队列),https://algo.itcharge.cn/Solutions/2500-2599/take-gifts-from-the-richest-pile/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2558.%20%E4%BB%8E%E6%95%B0%E9%87%8F%E6%9C%80%E5%A4%9A%E7%9A%84%E5%A0%86%E5%8F%96%E8%B5%B0%E7%A4%BC%E7%89%A9.md,68.1%,简单,71 -2559,2500-2599,2559. 统计范围内的元音字符串数,统计范围内的元音字符串数,https://leetcode.cn/problems/count-vowel-strings-in-ranges/,count-vowel-strings-in-ranges,数组、字符串、前缀和,https://algo.itcharge.cn/Solutions/2500-2599/count-vowel-strings-in-ranges/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2559.%20%E7%BB%9F%E8%AE%A1%E8%8C%83%E5%9B%B4%E5%86%85%E7%9A%84%E5%85%83%E9%9F%B3%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0.md,64.3%,中等,257 -2560,2500-2599,2560. 打家劫舍 IV,打家劫舍 IV,https://leetcode.cn/problems/house-robber-iv/,house-robber-iv,数组、二分查找,https://algo.itcharge.cn/Solutions/2500-2599/house-robber-iv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2560.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D%20IV.md,49.6%,中等,66 -2561,2500-2599,2561. 重排水果,重排水果,https://leetcode.cn/problems/rearranging-fruits/,rearranging-fruits,贪心、数组、哈希表,https://algo.itcharge.cn/Solutions/2500-2599/rearranging-fruits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2561.%20%E9%87%8D%E6%8E%92%E6%B0%B4%E6%9E%9C.md,36.5%,困难,36 -2562,2500-2599,2562. 找出数组的串联值,找出数组的串联值,https://leetcode.cn/problems/find-the-array-concatenation-value/,find-the-array-concatenation-value,数组、双指针、模拟,https://algo.itcharge.cn/Solutions/2500-2599/find-the-array-concatenation-value/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2562.%20%E6%89%BE%E5%87%BA%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%B2%E8%81%94%E5%80%BC.md,73.2%,简单,77 -2563,2500-2599,2563. 统计公平数对的数目,统计公平数对的数目,https://leetcode.cn/problems/count-the-number-of-fair-pairs/,count-the-number-of-fair-pairs,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/2500-2599/count-the-number-of-fair-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2563.%20%E7%BB%9F%E8%AE%A1%E5%85%AC%E5%B9%B3%E6%95%B0%E5%AF%B9%E7%9A%84%E6%95%B0%E7%9B%AE.md,33.5%,中等,77 -2564,2500-2599,2564. 子字符串异或查询,子字符串异或查询,https://leetcode.cn/problems/substring-xor-queries/,substring-xor-queries,位运算、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/2500-2599/substring-xor-queries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2564.%20%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%BC%82%E6%88%96%E6%9F%A5%E8%AF%A2.md,36.4%,中等,61 -2565,2500-2599,2565. 最少得分子序列,最少得分子序列,https://leetcode.cn/problems/subsequence-with-the-minimum-score/,subsequence-with-the-minimum-score,双指针、字符串、二分查找,https://algo.itcharge.cn/Solutions/2500-2599/subsequence-with-the-minimum-score/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2565.%20%E6%9C%80%E5%B0%91%E5%BE%97%E5%88%86%E5%AD%90%E5%BA%8F%E5%88%97.md,35.8%,困难,34 -2566,2500-2599,2566. 替换一个数字后的最大差值,替换一个数字后的最大差值,https://leetcode.cn/problems/maximum-difference-by-remapping-a-digit/,maximum-difference-by-remapping-a-digit,贪心、数学,https://algo.itcharge.cn/Solutions/2500-2599/maximum-difference-by-remapping-a-digit/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2566.%20%E6%9B%BF%E6%8D%A2%E4%B8%80%E4%B8%AA%E6%95%B0%E5%AD%97%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%E5%B7%AE%E5%80%BC.md,63.7%,简单,50 -2567,2500-2599,2567. 修改两个元素的最小分数,修改两个元素的最小分数,https://leetcode.cn/problems/minimum-score-by-changing-two-elements/,minimum-score-by-changing-two-elements,贪心、数组、排序,https://algo.itcharge.cn/Solutions/2500-2599/minimum-score-by-changing-two-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2567.%20%E4%BF%AE%E6%94%B9%E4%B8%A4%E4%B8%AA%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%88%86%E6%95%B0.md,51.8%,中等,36 -2568,2500-2599,2568. 最小无法得到的或值,最小无法得到的或值,https://leetcode.cn/problems/minimum-impossible-or/,minimum-impossible-or,位运算、脑筋急转弯、数组,https://algo.itcharge.cn/Solutions/2500-2599/minimum-impossible-or/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2568.%20%E6%9C%80%E5%B0%8F%E6%97%A0%E6%B3%95%E5%BE%97%E5%88%B0%E7%9A%84%E6%88%96%E5%80%BC.md,59.8%,中等,28 -2569,2500-2599,2569. 更新数组后处理求和查询,更新数组后处理求和查询,https://leetcode.cn/problems/handling-sum-queries-after-update/,handling-sum-queries-after-update,线段树、数组,https://algo.itcharge.cn/Solutions/2500-2599/handling-sum-queries-after-update/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2569.%20%E6%9B%B4%E6%96%B0%E6%95%B0%E7%BB%84%E5%90%8E%E5%A4%84%E7%90%86%E6%B1%82%E5%92%8C%E6%9F%A5%E8%AF%A2.md,39.7%,困难,43 -2570,2500-2599,2570. 合并两个二维数组 - 求和法,合并两个二维数组 - 求和法,https://leetcode.cn/problems/merge-two-2d-arrays-by-summing-values/,merge-two-2d-arrays-by-summing-values,数组、哈希表、双指针,https://algo.itcharge.cn/Solutions/2500-2599/merge-two-2d-arrays-by-summing-values/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2570.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%20-%20%E6%B1%82%E5%92%8C%E6%B3%95.md,69.6%,简单,71 -2571,2500-2599,2571. 将整数减少到零需要的最少操作数,将整数减少到零需要的最少操作数,https://leetcode.cn/problems/minimum-operations-to-reduce-an-integer-to-0/,minimum-operations-to-reduce-an-integer-to-0,贪心、位运算、动态规划,https://algo.itcharge.cn/Solutions/2500-2599/minimum-operations-to-reduce-an-integer-to-0/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2571.%20%E5%B0%86%E6%95%B4%E6%95%B0%E5%87%8F%E5%B0%91%E5%88%B0%E9%9B%B6%E9%9C%80%E8%A6%81%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%95%B0.md,54.0%,中等,116 -2572,2500-2599,2572. 无平方子集计数,无平方子集计数,https://leetcode.cn/problems/count-the-number-of-square-free-subsets/,count-the-number-of-square-free-subsets,位运算、数组、数学、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/2500-2599/count-the-number-of-square-free-subsets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2572.%20%E6%97%A0%E5%B9%B3%E6%96%B9%E5%AD%90%E9%9B%86%E8%AE%A1%E6%95%B0.md,29.8%,中等,43 -2573,2500-2599,2573. 找出对应 LCP 矩阵的字符串,找出对应 LCP 矩阵的字符串,https://leetcode.cn/problems/find-the-string-with-lcp/,find-the-string-with-lcp,贪心、并查集、字符串、动态规划,https://algo.itcharge.cn/Solutions/2500-2599/find-the-string-with-lcp/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2573.%20%E6%89%BE%E5%87%BA%E5%AF%B9%E5%BA%94%20LCP%20%E7%9F%A9%E9%98%B5%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,35.3%,困难,31 -2574,2500-2599,2574. 左右元素和的差值,左右元素和的差值,https://leetcode.cn/problems/left-and-right-sum-differences/,left-and-right-sum-differences,数组、前缀和,https://algo.itcharge.cn/Solutions/2500-2599/left-and-right-sum-differences/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2574.%20%E5%B7%A6%E5%8F%B3%E5%85%83%E7%B4%A0%E5%92%8C%E7%9A%84%E5%B7%AE%E5%80%BC.md,85.0%,简单,104 -2575,2500-2599,2575. 找出字符串的可整除数组,找出字符串的可整除数组,https://leetcode.cn/problems/find-the-divisibility-array-of-a-string/,find-the-divisibility-array-of-a-string,数组、数学、字符串,https://algo.itcharge.cn/Solutions/2500-2599/find-the-divisibility-array-of-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2575.%20%E6%89%BE%E5%87%BA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%8F%AF%E6%95%B4%E9%99%A4%E6%95%B0%E7%BB%84.md,32.8%,中等,75 -2576,2500-2599,2576. 求出最多标记下标,求出最多标记下标,https://leetcode.cn/problems/find-the-maximum-number-of-marked-indices/,find-the-maximum-number-of-marked-indices,贪心、数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/2500-2599/find-the-maximum-number-of-marked-indices/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2576.%20%E6%B1%82%E5%87%BA%E6%9C%80%E5%A4%9A%E6%A0%87%E8%AE%B0%E4%B8%8B%E6%A0%87.md,36.8%,中等,78 -2577,2500-2599,2577. 在网格图中访问一个格子的最少时间,在网格图中访问一个格子的最少时间,https://leetcode.cn/problems/minimum-time-to-visit-a-cell-in-a-grid/,minimum-time-to-visit-a-cell-in-a-grid,广度优先搜索、图、数组、矩阵、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/2500-2599/minimum-time-to-visit-a-cell-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2577.%20%E5%9C%A8%E7%BD%91%E6%A0%BC%E5%9B%BE%E4%B8%AD%E8%AE%BF%E9%97%AE%E4%B8%80%E4%B8%AA%E6%A0%BC%E5%AD%90%E7%9A%84%E6%9C%80%E5%B0%91%E6%97%B6%E9%97%B4.md,39.4%,困难,46 -2578,2500-2599,2578. 最小和分割,最小和分割,https://leetcode.cn/problems/split-with-minimum-sum/,split-with-minimum-sum,贪心、数学、排序,https://algo.itcharge.cn/Solutions/2500-2599/split-with-minimum-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2578.%20%E6%9C%80%E5%B0%8F%E5%92%8C%E5%88%86%E5%89%B2.md,76.7%,简单,67 -2579,2500-2599,2579. 统计染色格子数,统计染色格子数,https://leetcode.cn/problems/count-total-number-of-colored-cells/,count-total-number-of-colored-cells,数学,https://algo.itcharge.cn/Solutions/2500-2599/count-total-number-of-colored-cells/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2579.%20%E7%BB%9F%E8%AE%A1%E6%9F%93%E8%89%B2%E6%A0%BC%E5%AD%90%E6%95%B0.md,66.4%,中等,36 -2580,2500-2599,2580. 统计将重叠区间合并成组的方案数,统计将重叠区间合并成组的方案数,https://leetcode.cn/problems/count-ways-to-group-overlapping-ranges/,count-ways-to-group-overlapping-ranges,数组、排序,https://algo.itcharge.cn/Solutions/2500-2599/count-ways-to-group-overlapping-ranges/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2580.%20%E7%BB%9F%E8%AE%A1%E5%B0%86%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4%E5%90%88%E5%B9%B6%E6%88%90%E7%BB%84%E7%9A%84%E6%96%B9%E6%A1%88%E6%95%B0.md,35.4%,中等,50 -2581,2500-2599,2581. 统计可能的树根数目,统计可能的树根数目,https://leetcode.cn/problems/count-number-of-possible-root-nodes/,count-number-of-possible-root-nodes,树、深度优先搜索、哈希表、动态规划,https://algo.itcharge.cn/Solutions/2500-2599/count-number-of-possible-root-nodes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2581.%20%E7%BB%9F%E8%AE%A1%E5%8F%AF%E8%83%BD%E7%9A%84%E6%A0%91%E6%A0%B9%E6%95%B0%E7%9B%AE.md,57.7%,困难,26 -2582,2500-2599,2582. 递枕头,递枕头,https://leetcode.cn/problems/pass-the-pillow/,pass-the-pillow,数学、模拟,https://algo.itcharge.cn/Solutions/2500-2599/pass-the-pillow/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2582.%20%E9%80%92%E6%9E%95%E5%A4%B4.md,55.9%,简单,88 -2583,2500-2599,2583. 二叉树中的第 K 大层和,二叉树中的第 K 大层和,https://leetcode.cn/problems/kth-largest-sum-in-a-binary-tree/,kth-largest-sum-in-a-binary-tree,树、广度优先搜索、二分查找,https://algo.itcharge.cn/Solutions/2500-2599/kth-largest-sum-in-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2583.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E5%B1%82%E5%92%8C.md,44.0%,中等,68 -2584,2500-2599,2584. 分割数组使乘积互质,分割数组使乘积互质,https://leetcode.cn/problems/split-the-array-to-make-coprime-products/,split-the-array-to-make-coprime-products,数组、哈希表、数学、数论,https://algo.itcharge.cn/Solutions/2500-2599/split-the-array-to-make-coprime-products/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2584.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84%E4%BD%BF%E4%B9%98%E7%A7%AF%E4%BA%92%E8%B4%A8.md,25.4%,困难,72 -2585,2500-2599,2585. 获得分数的方法数,获得分数的方法数,https://leetcode.cn/problems/number-of-ways-to-earn-points/,number-of-ways-to-earn-points,数组、动态规划,https://algo.itcharge.cn/Solutions/2500-2599/number-of-ways-to-earn-points/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2585.%20%E8%8E%B7%E5%BE%97%E5%88%86%E6%95%B0%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md,64.5%,困难,56 -2586,2500-2599,2586. 统计范围内的元音字符串数,统计范围内的元音字符串数,https://leetcode.cn/problems/count-the-number-of-vowel-strings-in-range/,count-the-number-of-vowel-strings-in-range,数组、字符串,https://algo.itcharge.cn/Solutions/2500-2599/count-the-number-of-vowel-strings-in-range/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2586.%20%E7%BB%9F%E8%AE%A1%E8%8C%83%E5%9B%B4%E5%86%85%E7%9A%84%E5%85%83%E9%9F%B3%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0.md,81.6%,简单,55 -2587,2500-2599,2587. 重排数组以得到最大前缀分数,重排数组以得到最大前缀分数,https://leetcode.cn/problems/rearrange-array-to-maximize-prefix-score/,rearrange-array-to-maximize-prefix-score,贪心、数组、前缀和、排序,https://algo.itcharge.cn/Solutions/2500-2599/rearrange-array-to-maximize-prefix-score/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2587.%20%E9%87%8D%E6%8E%92%E6%95%B0%E7%BB%84%E4%BB%A5%E5%BE%97%E5%88%B0%E6%9C%80%E5%A4%A7%E5%89%8D%E7%BC%80%E5%88%86%E6%95%B0.md,40.6%,中等,44 -2588,2500-2599,2588. 统计美丽子数组数目,统计美丽子数组数目,https://leetcode.cn/problems/count-the-number-of-beautiful-subarrays/,count-the-number-of-beautiful-subarrays,位运算、数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/2500-2599/count-the-number-of-beautiful-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2588.%20%E7%BB%9F%E8%AE%A1%E7%BE%8E%E4%B8%BD%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md,41.9%,中等,60 -2589,2500-2599,2589. 完成所有任务的最少时间,完成所有任务的最少时间,https://leetcode.cn/problems/minimum-time-to-complete-all-tasks/,minimum-time-to-complete-all-tasks,栈、贪心、数组、二分查找、排序,https://algo.itcharge.cn/Solutions/2500-2599/minimum-time-to-complete-all-tasks/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2589.%20%E5%AE%8C%E6%88%90%E6%89%80%E6%9C%89%E4%BB%BB%E5%8A%A1%E7%9A%84%E6%9C%80%E5%B0%91%E6%97%B6%E9%97%B4.md,42.7%,困难,34 -2590,2500-2599,2590. 设计一个待办事项清单,设计一个待办事项清单,https://leetcode.cn/problems/design-a-todo-list/,design-a-todo-list,设计、数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/2500-2599/design-a-todo-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2590.%20%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E5%BE%85%E5%8A%9E%E4%BA%8B%E9%A1%B9%E6%B8%85%E5%8D%95.md,55.5%,中等,4 -2591,2500-2599,2591. 将钱分给最多的儿童,将钱分给最多的儿童,https://leetcode.cn/problems/distribute-money-to-maximum-children/,distribute-money-to-maximum-children,贪心、数学,https://algo.itcharge.cn/Solutions/2500-2599/distribute-money-to-maximum-children/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2591.%20%E5%B0%86%E9%92%B1%E5%88%86%E7%BB%99%E6%9C%80%E5%A4%9A%E7%9A%84%E5%84%BF%E7%AB%A5.md,20.8%,简单,59 -2592,2500-2599,2592. 最大化数组的伟大值,最大化数组的伟大值,https://leetcode.cn/problems/maximize-greatness-of-an-array/,maximize-greatness-of-an-array,贪心、数组、双指针、排序,https://algo.itcharge.cn/Solutions/2500-2599/maximize-greatness-of-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2592.%20%E6%9C%80%E5%A4%A7%E5%8C%96%E6%95%B0%E7%BB%84%E7%9A%84%E4%BC%9F%E5%A4%A7%E5%80%BC.md,57.7%,中等,57 -2593,2500-2599,2593. 标记所有元素后数组的分数,标记所有元素后数组的分数,https://leetcode.cn/problems/find-score-of-an-array-after-marking-all-elements/,find-score-of-an-array-after-marking-all-elements,数组、排序、模拟、堆(优先队列),https://algo.itcharge.cn/Solutions/2500-2599/find-score-of-an-array-after-marking-all-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2593.%20%E6%A0%87%E8%AE%B0%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0%E5%90%8E%E6%95%B0%E7%BB%84%E7%9A%84%E5%88%86%E6%95%B0.md,51.9%,中等,51 -2594,2500-2599,2594. 修车的最少时间,修车的最少时间,https://leetcode.cn/problems/minimum-time-to-repair-cars/,minimum-time-to-repair-cars,数组、二分查找,https://algo.itcharge.cn/Solutions/2500-2599/minimum-time-to-repair-cars/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2594.%20%E4%BF%AE%E8%BD%A6%E7%9A%84%E6%9C%80%E5%B0%91%E6%97%B6%E9%97%B4.md,45.6%,中等,33 -2595,2500-2599,2595. 奇偶位数,奇偶位数,https://leetcode.cn/problems/number-of-even-and-odd-bits/,number-of-even-and-odd-bits,位运算,https://algo.itcharge.cn/Solutions/2500-2599/number-of-even-and-odd-bits/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2595.%20%E5%A5%87%E5%81%B6%E4%BD%8D%E6%95%B0.md,72.8%,简单,58 -2596,2500-2599,2596. 检查骑士巡视方案,检查骑士巡视方案,https://leetcode.cn/problems/check-knight-tour-configuration/,check-knight-tour-configuration,深度优先搜索、广度优先搜索、数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/2500-2599/check-knight-tour-configuration/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2596.%20%E6%A3%80%E6%9F%A5%E9%AA%91%E5%A3%AB%E5%B7%A1%E8%A7%86%E6%96%B9%E6%A1%88.md,52.5%,中等,99 -2597,2500-2599,2597. 美丽子集的数目,美丽子集的数目,https://leetcode.cn/problems/the-number-of-beautiful-subsets/,the-number-of-beautiful-subsets,数组、动态规划、回溯,https://algo.itcharge.cn/Solutions/2500-2599/the-number-of-beautiful-subsets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2597.%20%E7%BE%8E%E4%B8%BD%E5%AD%90%E9%9B%86%E7%9A%84%E6%95%B0%E7%9B%AE.md,34.7%,中等,56 -2598,2500-2599,2598. 执行操作后的最大 MEX,执行操作后的最大 MEX,https://leetcode.cn/problems/smallest-missing-non-negative-integer-after-operations/,smallest-missing-non-negative-integer-after-operations,贪心、数组、哈希表、数学,https://algo.itcharge.cn/Solutions/2500-2599/smallest-missing-non-negative-integer-after-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2598.%20%E6%89%A7%E8%A1%8C%E6%93%8D%E4%BD%9C%E5%90%8E%E7%9A%84%E6%9C%80%E5%A4%A7%20MEX.md,39.1%,中等,55 -2599,2500-2599,2599. 使前缀和数组非负,使前缀和数组非负,https://leetcode.cn/problems/make-the-prefix-sum-non-negative/,make-the-prefix-sum-non-negative,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/2500-2599/make-the-prefix-sum-non-negative/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2599.%20%E4%BD%BF%E5%89%8D%E7%BC%80%E5%92%8C%E6%95%B0%E7%BB%84%E9%9D%9E%E8%B4%9F.md,55.4%,中等,5 -2600,2600-2699,2600. K 件物品的最大和,K 件物品的最大和,https://leetcode.cn/problems/k-items-with-the-maximum-sum/,k-items-with-the-maximum-sum,贪心、数学,https://algo.itcharge.cn/Solutions/2600-2699/k-items-with-the-maximum-sum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2600.%20K%20%E4%BB%B6%E7%89%A9%E5%93%81%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md,66.0%,简单,59 -2601,2600-2699,2601. 质数减法运算,质数减法运算,https://leetcode.cn/problems/prime-subtraction-operation/,prime-subtraction-operation,贪心、数组、数学、二分查找、数论,https://algo.itcharge.cn/Solutions/2600-2699/prime-subtraction-operation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2601.%20%E8%B4%A8%E6%95%B0%E5%87%8F%E6%B3%95%E8%BF%90%E7%AE%97.md,38.6%,中等,86 -2602,2600-2699,2602. 使数组元素全部相等的最少操作次数,使数组元素全部相等的最少操作次数,https://leetcode.cn/problems/minimum-operations-to-make-all-array-elements-equal/,minimum-operations-to-make-all-array-elements-equal,数组、二分查找、前缀和、排序,https://algo.itcharge.cn/Solutions/2600-2699/minimum-operations-to-make-all-array-elements-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2602.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E5%85%A8%E9%83%A8%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,33.4%,中等,99 -2603,2600-2699,2603. 收集树中金币,收集树中金币,https://leetcode.cn/problems/collect-coins-in-a-tree/,collect-coins-in-a-tree,树、图、拓扑排序、数组,https://algo.itcharge.cn/Solutions/2600-2699/collect-coins-in-a-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2603.%20%E6%94%B6%E9%9B%86%E6%A0%91%E4%B8%AD%E9%87%91%E5%B8%81.md,43.6%,困难,42 -2604,2600-2699,2604. 吃掉所有谷子的最短时间,吃掉所有谷子的最短时间,https://leetcode.cn/problems/minimum-time-to-eat-all-grains/,minimum-time-to-eat-all-grains,数组、二分查找、排序,https://algo.itcharge.cn/Solutions/2600-2699/minimum-time-to-eat-all-grains/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2604.%20%E5%90%83%E6%8E%89%E6%89%80%E6%9C%89%E8%B0%B7%E5%AD%90%E7%9A%84%E6%9C%80%E7%9F%AD%E6%97%B6%E9%97%B4.md,38.0%,困难,3 -2605,2600-2699,2605. 从两个数字数组里生成最小数字,从两个数字数组里生成最小数字,https://leetcode.cn/problems/form-smallest-number-from-two-digit-arrays/,form-smallest-number-from-two-digit-arrays,数组、哈希表、枚举,https://algo.itcharge.cn/Solutions/2600-2699/form-smallest-number-from-two-digit-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2605.%20%E4%BB%8E%E4%B8%A4%E4%B8%AA%E6%95%B0%E5%AD%97%E6%95%B0%E7%BB%84%E9%87%8C%E7%94%9F%E6%88%90%E6%9C%80%E5%B0%8F%E6%95%B0%E5%AD%97.md,63.3%,简单,48 -2606,2600-2699,2606. 找到最大开销的子字符串,找到最大开销的子字符串,https://leetcode.cn/problems/find-the-substring-with-maximum-cost/,find-the-substring-with-maximum-cost,数组、哈希表、字符串、动态规划,https://algo.itcharge.cn/Solutions/2600-2699/find-the-substring-with-maximum-cost/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2606.%20%E6%89%BE%E5%88%B0%E6%9C%80%E5%A4%A7%E5%BC%80%E9%94%80%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,53.3%,中等,36 -2607,2600-2699,2607. 使子数组元素和相等,使子数组元素和相等,https://leetcode.cn/problems/make-k-subarray-sums-equal/,make-k-subarray-sums-equal,数组、数学、数论、排序,https://algo.itcharge.cn/Solutions/2600-2699/make-k-subarray-sums-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2607.%20%E4%BD%BF%E5%AD%90%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E5%92%8C%E7%9B%B8%E7%AD%89.md,38.6%,中等,23 -2608,2600-2699,2608. 图中的最短环,图中的最短环,https://leetcode.cn/problems/shortest-cycle-in-a-graph/,shortest-cycle-in-a-graph,广度优先搜索、图,https://algo.itcharge.cn/Solutions/2600-2699/shortest-cycle-in-a-graph/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2608.%20%E5%9B%BE%E4%B8%AD%E7%9A%84%E6%9C%80%E7%9F%AD%E7%8E%AF.md,40.8%,困难,31 -2609,2600-2699,2609. 最长平衡子字符串,最长平衡子字符串,https://leetcode.cn/problems/find-the-longest-balanced-substring-of-a-binary-string/,find-the-longest-balanced-substring-of-a-binary-string,字符串,https://algo.itcharge.cn/Solutions/2600-2699/find-the-longest-balanced-substring-of-a-binary-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2609.%20%E6%9C%80%E9%95%BF%E5%B9%B3%E8%A1%A1%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,49.3%,简单,95 -2610,2600-2699,2610. 转换二维数组,转换二维数组,https://leetcode.cn/problems/convert-an-array-into-a-2d-array-with-conditions/,convert-an-array-into-a-2d-array-with-conditions,数组、哈希表,https://algo.itcharge.cn/Solutions/2600-2699/convert-an-array-into-a-2d-array-with-conditions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2610.%20%E8%BD%AC%E6%8D%A2%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84.md,85.1%,中等,82 -2611,2600-2699,2611. 老鼠和奶酪,老鼠和奶酪,https://leetcode.cn/problems/mice-and-cheese/,mice-and-cheese,贪心、数组、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/2600-2699/mice-and-cheese/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2611.%20%E8%80%81%E9%BC%A0%E5%92%8C%E5%A5%B6%E9%85%AA.md,58.7%,中等,291 -2612,2600-2699,2612. 最少翻转操作数,最少翻转操作数,https://leetcode.cn/problems/minimum-reverse-operations/,minimum-reverse-operations,广度优先搜索、数组、有序集合,https://algo.itcharge.cn/Solutions/2600-2699/minimum-reverse-operations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2612.%20%E6%9C%80%E5%B0%91%E7%BF%BB%E8%BD%AC%E6%93%8D%E4%BD%9C%E6%95%B0.md,20.8%,困难,33 -2613,2600-2699,2613. 美数对,美数对,https://leetcode.cn/problems/beautiful-pairs/,beautiful-pairs,几何、数组、数学、分治、有序集合、排序,https://algo.itcharge.cn/Solutions/2600-2699/beautiful-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2613.%20%E7%BE%8E%E6%95%B0%E5%AF%B9.md,48.2%,困难,4 -2614,2600-2699,2614. 对角线上的质数,对角线上的质数,https://leetcode.cn/problems/prime-in-diagonal/,prime-in-diagonal,数组、数学、矩阵、数论,https://algo.itcharge.cn/Solutions/2600-2699/prime-in-diagonal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2614.%20%E5%AF%B9%E8%A7%92%E7%BA%BF%E4%B8%8A%E7%9A%84%E8%B4%A8%E6%95%B0.md,32.9%,简单,49 -2615,2600-2699,2615. 等值距离和,等值距离和,https://leetcode.cn/problems/sum-of-distances/,sum-of-distances,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/2600-2699/sum-of-distances/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2615.%20%E7%AD%89%E5%80%BC%E8%B7%9D%E7%A6%BB%E5%92%8C.md,35.4%,中等,64 -2616,2600-2699,2616. 最小化数对的最大差值,最小化数对的最大差值,https://leetcode.cn/problems/minimize-the-maximum-difference-of-pairs/,minimize-the-maximum-difference-of-pairs,贪心、数组、二分查找,https://algo.itcharge.cn/Solutions/2600-2699/minimize-the-maximum-difference-of-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2616.%20%E6%9C%80%E5%B0%8F%E5%8C%96%E6%95%B0%E5%AF%B9%E7%9A%84%E6%9C%80%E5%A4%A7%E5%B7%AE%E5%80%BC.md,39.0%,中等,34 -2617,2600-2699,2617. 网格图中最少访问的格子数,网格图中最少访问的格子数,https://leetcode.cn/problems/minimum-number-of-visited-cells-in-a-grid/,minimum-number-of-visited-cells-in-a-grid,栈、并查集、树状数组、线段树、数组、二分查找、动态规划,https://algo.itcharge.cn/Solutions/2600-2699/minimum-number-of-visited-cells-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2617.%20%E7%BD%91%E6%A0%BC%E5%9B%BE%E4%B8%AD%E6%9C%80%E5%B0%91%E8%AE%BF%E9%97%AE%E7%9A%84%E6%A0%BC%E5%AD%90%E6%95%B0.md,32.6%,困难,62 -2618,2600-2699,2618. 检查是否是类的对象实例,检查是否是类的对象实例,https://leetcode.cn/problems/check-if-object-instance-of-class/,check-if-object-instance-of-class,,https://algo.itcharge.cn/Solutions/2600-2699/check-if-object-instance-of-class/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2618.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%98%AF%E7%B1%BB%E7%9A%84%E5%AF%B9%E8%B1%A1%E5%AE%9E%E4%BE%8B.md,34.0%,中等,43 -2619,2600-2699,2619. 数组原型对象的最后一个元素,数组原型对象的最后一个元素,https://leetcode.cn/problems/array-prototype-last/,array-prototype-last,,https://algo.itcharge.cn/Solutions/2600-2699/array-prototype-last/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2619.%20%E6%95%B0%E7%BB%84%E5%8E%9F%E5%9E%8B%E5%AF%B9%E8%B1%A1%E7%9A%84%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0.md,72.2%,简单,60 -2620,2600-2699,2620. 计数器,计数器,https://leetcode.cn/problems/counter/,counter,,https://algo.itcharge.cn/Solutions/2600-2699/counter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2620.%20%E8%AE%A1%E6%95%B0%E5%99%A8.md,81.9%,简单,57 -2621,2600-2699,2621. 睡眠函数,睡眠函数,https://leetcode.cn/problems/sleep/,sleep,,https://algo.itcharge.cn/Solutions/2600-2699/sleep/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2621.%20%E7%9D%A1%E7%9C%A0%E5%87%BD%E6%95%B0.md,84.0%,简单,38 -2622,2600-2699,2622. 有时间限制的缓存,有时间限制的缓存,https://leetcode.cn/problems/cache-with-time-limit/,cache-with-time-limit,,https://algo.itcharge.cn/Solutions/2600-2699/cache-with-time-limit/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2622.%20%E6%9C%89%E6%97%B6%E9%97%B4%E9%99%90%E5%88%B6%E7%9A%84%E7%BC%93%E5%AD%98.md,55.8%,中等,48 -2623,2600-2699,2623. 记忆函数,记忆函数,https://leetcode.cn/problems/memoize/,memoize,,https://algo.itcharge.cn/Solutions/2600-2699/memoize/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2623.%20%E8%AE%B0%E5%BF%86%E5%87%BD%E6%95%B0.md,61.2%,中等,37 -2624,2600-2699,2624. 蜗牛排序,蜗牛排序,https://leetcode.cn/problems/snail-traversal/,snail-traversal,,https://algo.itcharge.cn/Solutions/2600-2699/snail-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2624.%20%E8%9C%97%E7%89%9B%E6%8E%92%E5%BA%8F.md,66.0%,中等,47 -2625,2600-2699,2625. 扁平化嵌套数组,扁平化嵌套数组,https://leetcode.cn/problems/flatten-deeply-nested-array/,flatten-deeply-nested-array,,https://algo.itcharge.cn/Solutions/2600-2699/flatten-deeply-nested-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2625.%20%E6%89%81%E5%B9%B3%E5%8C%96%E5%B5%8C%E5%A5%97%E6%95%B0%E7%BB%84.md,51.0%,中等,52 -2626,2600-2699,2626. 数组归约运算,数组归约运算,https://leetcode.cn/problems/array-reduce-transformation/,array-reduce-transformation,,https://algo.itcharge.cn/Solutions/2600-2699/array-reduce-transformation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2626.%20%E6%95%B0%E7%BB%84%E5%BD%92%E7%BA%A6%E8%BF%90%E7%AE%97.md,77.7%,简单,42 -2627,2600-2699,2627. 函数防抖,函数防抖,https://leetcode.cn/problems/debounce/,debounce,,https://algo.itcharge.cn/Solutions/2600-2699/debounce/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2627.%20%E5%87%BD%E6%95%B0%E9%98%B2%E6%8A%96.md,77.0%,中等,27 -2628,2600-2699,2628. 完全相等的 JSON 字符串,完全相等的 JSON 字符串,https://leetcode.cn/problems/json-deep-equal/,json-deep-equal,,https://algo.itcharge.cn/Solutions/2600-2699/json-deep-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2628.%20%E5%AE%8C%E5%85%A8%E7%9B%B8%E7%AD%89%E7%9A%84%20JSON%20%E5%AD%97%E7%AC%A6%E4%B8%B2.md,32.1%,中等,42 -2629,2600-2699,2629. 复合函数,复合函数,https://leetcode.cn/problems/function-composition/,function-composition,,https://algo.itcharge.cn/Solutions/2600-2699/function-composition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2629.%20%E5%A4%8D%E5%90%88%E5%87%BD%E6%95%B0.md,81.8%,简单,55 -2630,2600-2699,2630. 记忆函数 II,记忆函数 II,https://leetcode.cn/problems/memoize-ii/,memoize-ii,,https://algo.itcharge.cn/Solutions/2600-2699/memoize-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2630.%20%E8%AE%B0%E5%BF%86%E5%87%BD%E6%95%B0%20II.md,42.5%,困难,16 -2631,2600-2699,2631. 分组,分组,https://leetcode.cn/problems/group-by/,group-by,,https://algo.itcharge.cn/Solutions/2600-2699/group-by/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2631.%20%E5%88%86%E7%BB%84.md,79.8%,中等,31 -2632,2600-2699,2632. 柯里化,柯里化,https://leetcode.cn/problems/curry/,curry,,https://algo.itcharge.cn/Solutions/2600-2699/curry/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2632.%20%E6%9F%AF%E9%87%8C%E5%8C%96.md,81.6%,中等,35 -2633,2600-2699,2633. 将对象转换为 JSON 字符串,将对象转换为 JSON 字符串,https://leetcode.cn/problems/convert-object-to-json-string/,convert-object-to-json-string,,https://algo.itcharge.cn/Solutions/2600-2699/convert-object-to-json-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2633.%20%E5%B0%86%E5%AF%B9%E8%B1%A1%E8%BD%AC%E6%8D%A2%E4%B8%BA%20JSON%20%E5%AD%97%E7%AC%A6%E4%B8%B2.md,57.3%,中等,39 -2634,2600-2699,2634. 过滤数组中的元素,过滤数组中的元素,https://leetcode.cn/problems/filter-elements-from-array/,filter-elements-from-array,,https://algo.itcharge.cn/Solutions/2600-2699/filter-elements-from-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2634.%20%E8%BF%87%E6%BB%A4%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%85%83%E7%B4%A0.md,69.3%,简单,49 -2635,2600-2699,2635. 转换数组中的每个元素,转换数组中的每个元素,https://leetcode.cn/problems/apply-transform-over-each-element-in-array/,apply-transform-over-each-element-in-array,,https://algo.itcharge.cn/Solutions/2600-2699/apply-transform-over-each-element-in-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2635.%20%E8%BD%AC%E6%8D%A2%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%AF%8F%E4%B8%AA%E5%85%83%E7%B4%A0.md,73.8%,简单,37 -2636,2600-2699,2636. Promise 对象池,Promise 对象池,https://leetcode.cn/problems/promise-pool/,promise-pool,,https://algo.itcharge.cn/Solutions/2600-2699/promise-pool/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2636.%20Promise%20%E5%AF%B9%E8%B1%A1%E6%B1%A0.md,61.8%,中等,26 -2637,2600-2699,2637. 有时间限制的 Promise 对象,有时间限制的 Promise 对象,https://leetcode.cn/problems/promise-time-limit/,promise-time-limit,,https://algo.itcharge.cn/Solutions/2600-2699/promise-time-limit/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2637.%20%E6%9C%89%E6%97%B6%E9%97%B4%E9%99%90%E5%88%B6%E7%9A%84%20Promise%20%E5%AF%B9%E8%B1%A1.md,62.2%,简单,25 -2638,2600-2699,2638. 统计 K-Free 子集的总数,统计 K-Free 子集的总数,https://leetcode.cn/problems/count-the-number-of-k-free-subsets/,count-the-number-of-k-free-subsets,数组、动态规划、排序,https://algo.itcharge.cn/Solutions/2600-2699/count-the-number-of-k-free-subsets/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2638.%20%E7%BB%9F%E8%AE%A1%20K-Free%20%E5%AD%90%E9%9B%86%E7%9A%84%E6%80%BB%E6%95%B0.md,59.3%,中等,4 -2639,2600-2699,2639. 查询网格图中每一列的宽度,查询网格图中每一列的宽度,https://leetcode.cn/problems/find-the-width-of-columns-of-a-grid/,find-the-width-of-columns-of-a-grid,数组、矩阵,https://algo.itcharge.cn/Solutions/2600-2699/find-the-width-of-columns-of-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2639.%20%E6%9F%A5%E8%AF%A2%E7%BD%91%E6%A0%BC%E5%9B%BE%E4%B8%AD%E6%AF%8F%E4%B8%80%E5%88%97%E7%9A%84%E5%AE%BD%E5%BA%A6.md,76.5%,简单,34 -2640,2600-2699,2640. 一个数组所有前缀的分数,一个数组所有前缀的分数,https://leetcode.cn/problems/find-the-score-of-all-prefixes-of-an-array/,find-the-score-of-all-prefixes-of-an-array,数组、前缀和,https://algo.itcharge.cn/Solutions/2600-2699/find-the-score-of-all-prefixes-of-an-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2640.%20%E4%B8%80%E4%B8%AA%E6%95%B0%E7%BB%84%E6%89%80%E6%9C%89%E5%89%8D%E7%BC%80%E7%9A%84%E5%88%86%E6%95%B0.md,79.9%,中等,30 -2641,2600-2699,2641. 二叉树的堂兄弟节点 II,二叉树的堂兄弟节点 II,https://leetcode.cn/problems/cousins-in-binary-tree-ii/,cousins-in-binary-tree-ii,树、深度优先搜索、广度优先搜索、哈希表、二叉树,https://algo.itcharge.cn/Solutions/2600-2699/cousins-in-binary-tree-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2641.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%A0%82%E5%85%84%E5%BC%9F%E8%8A%82%E7%82%B9%20II.md,70.1%,中等,38 -2642,2600-2699,2642. 设计可以求最短路径的图类,设计可以求最短路径的图类,https://leetcode.cn/problems/design-graph-with-shortest-path-calculator/,design-graph-with-shortest-path-calculator,图、设计、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/2600-2699/design-graph-with-shortest-path-calculator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2642.%20%E8%AE%BE%E8%AE%A1%E5%8F%AF%E4%BB%A5%E6%B1%82%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E7%9A%84%E5%9B%BE%E7%B1%BB.md,55.4%,困难,47 -2643,2600-2699,2643. 一最多的行,一最多的行,https://leetcode.cn/problems/row-with-maximum-ones/,row-with-maximum-ones,数组、矩阵,https://algo.itcharge.cn/Solutions/2600-2699/row-with-maximum-ones/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2643.%20%E4%B8%80%E6%9C%80%E5%A4%9A%E7%9A%84%E8%A1%8C.md,80.3%,简单,40 -2644,2600-2699,2644. 找出可整除性得分最大的整数,找出可整除性得分最大的整数,https://leetcode.cn/problems/find-the-maximum-divisibility-score/,find-the-maximum-divisibility-score,数组,https://algo.itcharge.cn/Solutions/2600-2699/find-the-maximum-divisibility-score/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2644.%20%E6%89%BE%E5%87%BA%E5%8F%AF%E6%95%B4%E9%99%A4%E6%80%A7%E5%BE%97%E5%88%86%E6%9C%80%E5%A4%A7%E7%9A%84%E6%95%B4%E6%95%B0.md,50.3%,简单,29 -2645,2600-2699,2645. 构造有效字符串的最少插入数,构造有效字符串的最少插入数,https://leetcode.cn/problems/minimum-additions-to-make-valid-string/,minimum-additions-to-make-valid-string,栈、贪心、字符串、动态规划,https://algo.itcharge.cn/Solutions/2600-2699/minimum-additions-to-make-valid-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2645.%20%E6%9E%84%E9%80%A0%E6%9C%89%E6%95%88%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%B0%91%E6%8F%92%E5%85%A5%E6%95%B0.md,56.5%,中等,101 -2646,2600-2699,2646. 最小化旅行的价格总和,最小化旅行的价格总和,https://leetcode.cn/problems/minimize-the-total-price-of-the-trips/,minimize-the-total-price-of-the-trips,树、深度优先搜索、图、数组、动态规划,https://algo.itcharge.cn/Solutions/2600-2699/minimize-the-total-price-of-the-trips/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2646.%20%E6%9C%80%E5%B0%8F%E5%8C%96%E6%97%85%E8%A1%8C%E7%9A%84%E4%BB%B7%E6%A0%BC%E6%80%BB%E5%92%8C.md,49.8%,困难,50 -2647,2600-2699,2647. 把三角形染成红色,把三角形染成红色,https://leetcode.cn/problems/color-the-triangle-red/,color-the-triangle-red,数组、数学,https://algo.itcharge.cn/Solutions/2600-2699/color-the-triangle-red/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2647.%20%E6%8A%8A%E4%B8%89%E8%A7%92%E5%BD%A2%E6%9F%93%E6%88%90%E7%BA%A2%E8%89%B2.md,68.6%,困难,1 -2648,2600-2699,2648. 生成斐波那契数列,生成斐波那契数列,https://leetcode.cn/problems/generate-fibonacci-sequence/,generate-fibonacci-sequence,,https://algo.itcharge.cn/Solutions/2600-2699/generate-fibonacci-sequence/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2648.%20%E7%94%9F%E6%88%90%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97.md,83.9%,简单,34 -2649,2600-2699,2649. 嵌套数组生成器,嵌套数组生成器,https://leetcode.cn/problems/nested-array-generator/,nested-array-generator,,https://algo.itcharge.cn/Solutions/2600-2699/nested-array-generator/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2649.%20%E5%B5%8C%E5%A5%97%E6%95%B0%E7%BB%84%E7%94%9F%E6%88%90%E5%99%A8.md,78.3%,中等,30 -2650,2600-2699,2650. 设计可取消函数,设计可取消函数,https://leetcode.cn/problems/design-cancellable-function/,design-cancellable-function,,https://algo.itcharge.cn/Solutions/2600-2699/design-cancellable-function/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2650.%20%E8%AE%BE%E8%AE%A1%E5%8F%AF%E5%8F%96%E6%B6%88%E5%87%BD%E6%95%B0.md,50.6%,困难,17 -2651,2600-2699,2651. 计算列车到站时间,计算列车到站时间,https://leetcode.cn/problems/calculate-delayed-arrival-time/,calculate-delayed-arrival-time,数学,https://algo.itcharge.cn/Solutions/2600-2699/calculate-delayed-arrival-time/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2651.%20%E8%AE%A1%E7%AE%97%E5%88%97%E8%BD%A6%E5%88%B0%E7%AB%99%E6%97%B6%E9%97%B4.md,86.8%,简单,33 -2652,2600-2699,2652. 倍数求和,倍数求和,https://leetcode.cn/problems/sum-multiples/,sum-multiples,数组、数学、数论,https://algo.itcharge.cn/Solutions/2600-2699/sum-multiples/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2652.%20%E5%80%8D%E6%95%B0%E6%B1%82%E5%92%8C.md,83.6%,简单,42 -2653,2600-2699,2653. 滑动子数组的美丽值,滑动子数组的美丽值,https://leetcode.cn/problems/sliding-subarray-beauty/,sliding-subarray-beauty,数组、哈希表、滑动窗口,https://algo.itcharge.cn/Solutions/2600-2699/sliding-subarray-beauty/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2653.%20%E6%BB%91%E5%8A%A8%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E7%BE%8E%E4%B8%BD%E5%80%BC.md,35.0%,中等,62 -2654,2600-2699,2654. 使数组所有元素变成 1 的最少操作次数,使数组所有元素变成 1 的最少操作次数,https://leetcode.cn/problems/minimum-number-of-operations-to-make-all-array-elements-equal-to-1/,minimum-number-of-operations-to-make-all-array-elements-equal-to-1,数组、数学、数论,https://algo.itcharge.cn/Solutions/2600-2699/minimum-number-of-operations-to-make-all-array-elements-equal-to-1/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2654.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0%E5%8F%98%E6%88%90%201%20%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,40.1%,中等,28 -2655,2600-2699,2655. 寻找最大长度的未覆盖区间,寻找最大长度的未覆盖区间,https://leetcode.cn/problems/find-maximal-uncovered-ranges/,find-maximal-uncovered-ranges,数组、排序,https://algo.itcharge.cn/Solutions/2600-2699/find-maximal-uncovered-ranges/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2655.%20%E5%AF%BB%E6%89%BE%E6%9C%80%E5%A4%A7%E9%95%BF%E5%BA%A6%E7%9A%84%E6%9C%AA%E8%A6%86%E7%9B%96%E5%8C%BA%E9%97%B4.md,63.2%,中等,4 -2656,2600-2699,2656. K 个元素的最大和,K 个元素的最大和,https://leetcode.cn/problems/maximum-sum-with-exactly-k-elements/,maximum-sum-with-exactly-k-elements,贪心、数组,https://algo.itcharge.cn/Solutions/2600-2699/maximum-sum-with-exactly-k-elements/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2656.%20K%20%E4%B8%AA%E5%85%83%E7%B4%A0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md,84.1%,简单,49 -2657,2600-2699,2657. 找到两个数组的前缀公共数组,找到两个数组的前缀公共数组,https://leetcode.cn/problems/find-the-prefix-common-array-of-two-arrays/,find-the-prefix-common-array-of-two-arrays,数组、哈希表,https://algo.itcharge.cn/Solutions/2600-2699/find-the-prefix-common-array-of-two-arrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2657.%20%E6%89%BE%E5%88%B0%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E5%89%8D%E7%BC%80%E5%85%AC%E5%85%B1%E6%95%B0%E7%BB%84.md,83.4%,中等,35 -2658,2600-2699,2658. 网格图中鱼的最大数目,网格图中鱼的最大数目,https://leetcode.cn/problems/maximum-number-of-fish-in-a-grid/,maximum-number-of-fish-in-a-grid,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/2600-2699/maximum-number-of-fish-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2658.%20%E7%BD%91%E6%A0%BC%E5%9B%BE%E4%B8%AD%E9%B1%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md,60.4%,中等,36 -2659,2600-2699,2659. 将数组清空,将数组清空,https://leetcode.cn/problems/make-array-empty/,make-array-empty,贪心、树状数组、线段树、数组、二分查找、有序集合、排序,https://algo.itcharge.cn/Solutions/2600-2699/make-array-empty/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2659.%20%E5%B0%86%E6%95%B0%E7%BB%84%E6%B8%85%E7%A9%BA.md,38.4%,困难,28 -2660,2600-2699,2660. 保龄球游戏的获胜者,保龄球游戏的获胜者,https://leetcode.cn/problems/determine-the-winner-of-a-bowling-game/,determine-the-winner-of-a-bowling-game,数组、模拟,https://algo.itcharge.cn/Solutions/2600-2699/determine-the-winner-of-a-bowling-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2660.%20%E4%BF%9D%E9%BE%84%E7%90%83%E6%B8%B8%E6%88%8F%E7%9A%84%E8%8E%B7%E8%83%9C%E8%80%85.md,33.5%,简单,39 -2661,2600-2699,2661. 找出叠涂元素,找出叠涂元素,https://leetcode.cn/problems/first-completely-painted-row-or-column/,first-completely-painted-row-or-column,数组、哈希表、矩阵,https://algo.itcharge.cn/Solutions/2600-2699/first-completely-painted-row-or-column/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2661.%20%E6%89%BE%E5%87%BA%E5%8F%A0%E6%B6%82%E5%85%83%E7%B4%A0.md,51.2%,中等,46 -2662,2600-2699,2662. 前往目标的最小代价,前往目标的最小代价,https://leetcode.cn/problems/minimum-cost-of-a-path-with-special-roads/,minimum-cost-of-a-path-with-special-roads,图、数组、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/2600-2699/minimum-cost-of-a-path-with-special-roads/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2662.%20%E5%89%8D%E5%BE%80%E7%9B%AE%E6%A0%87%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BB%A3%E4%BB%B7.md,36.4%,中等,52 -2663,2600-2699,2663. 字典序最小的美丽字符串,字典序最小的美丽字符串,https://leetcode.cn/problems/lexicographically-smallest-beautiful-string/,lexicographically-smallest-beautiful-string,贪心、字符串,https://algo.itcharge.cn/Solutions/2600-2699/lexicographically-smallest-beautiful-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2663.%20%E5%AD%97%E5%85%B8%E5%BA%8F%E6%9C%80%E5%B0%8F%E7%9A%84%E7%BE%8E%E4%B8%BD%E5%AD%97%E7%AC%A6%E4%B8%B2.md,45.7%,困难,34 -2664,2600-2699,2664. 巡逻的骑士,巡逻的骑士,https://leetcode.cn/problems/the-knights-tour/,the-knights-tour,递归、数组、矩阵,https://algo.itcharge.cn/Solutions/2600-2699/the-knights-tour/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2664.%20%E5%B7%A1%E9%80%BB%E7%9A%84%E9%AA%91%E5%A3%AB.md,63.6%,中等,6 -2665,2600-2699,2665. 计数器 II,计数器 II,https://leetcode.cn/problems/counter-ii/,counter-ii,,https://algo.itcharge.cn/Solutions/2600-2699/counter-ii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2665.%20%E8%AE%A1%E6%95%B0%E5%99%A8%20II.md,63.8%,简单,38 -2666,2600-2699,2666. 只允许一次函数调用,只允许一次函数调用,https://leetcode.cn/problems/allow-one-function-call/,allow-one-function-call,,https://algo.itcharge.cn/Solutions/2600-2699/allow-one-function-call/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2666.%20%E5%8F%AA%E5%85%81%E8%AE%B8%E4%B8%80%E6%AC%A1%E5%87%BD%E6%95%B0%E8%B0%83%E7%94%A8.md,82.6%,简单,37 -2667,2600-2699,2667. 创建 Hello World 函数,创建 Hello World 函数,https://leetcode.cn/problems/create-hello-world-function/,create-hello-world-function,,https://algo.itcharge.cn/Solutions/2600-2699/create-hello-world-function/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2667.%20%E5%88%9B%E5%BB%BA%20Hello%20World%20%E5%87%BD%E6%95%B0.md,87.1%,简单,29 -2668,2600-2699,2668. 查询员工当前薪水,查询员工当前薪水,https://leetcode.cn/problems/find-latest-salaries/,find-latest-salaries,数据库,https://algo.itcharge.cn/Solutions/2600-2699/find-latest-salaries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2668.%20%E6%9F%A5%E8%AF%A2%E5%91%98%E5%B7%A5%E5%BD%93%E5%89%8D%E8%96%AA%E6%B0%B4.md,68.0%,简单,4 -2669,2600-2699,2669. 统计 Spotify 排行榜上艺术家出现次数,统计 Spotify 排行榜上艺术家出现次数,https://leetcode.cn/problems/count-artist-occurrences-on-spotify-ranking-list/,count-artist-occurrences-on-spotify-ranking-list,数据库,https://algo.itcharge.cn/Solutions/2600-2699/count-artist-occurrences-on-spotify-ranking-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2669.%20%E7%BB%9F%E8%AE%A1%20Spotify%20%E6%8E%92%E8%A1%8C%E6%A6%9C%E4%B8%8A%E8%89%BA%E6%9C%AF%E5%AE%B6%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0.md,73.9%,简单,2 -2670,2600-2699,2670. 找出不同元素数目差数组,找出不同元素数目差数组,https://leetcode.cn/problems/find-the-distinct-difference-array/,find-the-distinct-difference-array,数组、哈希表,https://algo.itcharge.cn/Solutions/2600-2699/find-the-distinct-difference-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2670.%20%E6%89%BE%E5%87%BA%E4%B8%8D%E5%90%8C%E5%85%83%E7%B4%A0%E6%95%B0%E7%9B%AE%E5%B7%AE%E6%95%B0%E7%BB%84.md,75.7%,简单,50 -2671,2600-2699,2671. 频率跟踪器,频率跟踪器,https://leetcode.cn/problems/frequency-tracker/,frequency-tracker,设计、哈希表,https://algo.itcharge.cn/Solutions/2600-2699/frequency-tracker/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2671.%20%E9%A2%91%E7%8E%87%E8%B7%9F%E8%B8%AA%E5%99%A8.md,32.4%,中等,52 -2672,2600-2699,2672. 有相同颜色的相邻元素数目,有相同颜色的相邻元素数目,https://leetcode.cn/problems/number-of-adjacent-elements-with-the-same-color/,number-of-adjacent-elements-with-the-same-color,数组,https://algo.itcharge.cn/Solutions/2600-2699/number-of-adjacent-elements-with-the-same-color/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2672.%20%E6%9C%89%E7%9B%B8%E5%90%8C%E9%A2%9C%E8%89%B2%E7%9A%84%E7%9B%B8%E9%82%BB%E5%85%83%E7%B4%A0%E6%95%B0%E7%9B%AE.md,58.3%,中等,48 -2673,2600-2699,2673. 使二叉树所有路径值相等的最小代价,使二叉树所有路径值相等的最小代价,https://leetcode.cn/problems/make-costs-of-paths-equal-in-a-binary-tree/,make-costs-of-paths-equal-in-a-binary-tree,贪心、树、数组、动态规划、二叉树,https://algo.itcharge.cn/Solutions/2600-2699/make-costs-of-paths-equal-in-a-binary-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2673.%20%E4%BD%BF%E4%BA%8C%E5%8F%89%E6%A0%91%E6%89%80%E6%9C%89%E8%B7%AF%E5%BE%84%E5%80%BC%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BB%A3%E4%BB%B7.md,66.2%,中等,67 -2674,2600-2699,2674. 拆分循环链表,拆分循环链表,https://leetcode.cn/problems/split-a-circular-linked-list/,split-a-circular-linked-list,,https://algo.itcharge.cn/Solutions/2600-2699/split-a-circular-linked-list/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2674.%20%E6%8B%86%E5%88%86%E5%BE%AA%E7%8E%AF%E9%93%BE%E8%A1%A8.md,82.8%,中等,5 -2675,2600-2699,2675. 将对象数组转换为矩阵,将对象数组转换为矩阵,https://leetcode.cn/problems/array-of-objects-to-matrix/,array-of-objects-to-matrix,,https://algo.itcharge.cn/Solutions/2600-2699/array-of-objects-to-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2675.%20%E5%B0%86%E5%AF%B9%E8%B1%A1%E6%95%B0%E7%BB%84%E8%BD%AC%E6%8D%A2%E4%B8%BA%E7%9F%A9%E9%98%B5.md,60.9%,中等,21 -2676,2600-2699,2676. 节流,节流,https://leetcode.cn/problems/throttle/,throttle,,https://algo.itcharge.cn/Solutions/2600-2699/throttle/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2676.%20%E8%8A%82%E6%B5%81.md,43.6%,中等,24 -2677,2600-2699,2677. 分块数组,分块数组,https://leetcode.cn/problems/chunk-array/,chunk-array,,https://algo.itcharge.cn/Solutions/2600-2699/chunk-array/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2677.%20%E5%88%86%E5%9D%97%E6%95%B0%E7%BB%84.md,72.8%,简单,31 -2678,2600-2699,2678. 老人的数目,老人的数目,https://leetcode.cn/problems/number-of-senior-citizens/,number-of-senior-citizens,数组、字符串,https://algo.itcharge.cn/Solutions/2600-2699/number-of-senior-citizens/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2678.%20%E8%80%81%E4%BA%BA%E7%9A%84%E6%95%B0%E7%9B%AE.md,83.8%,简单,35 -2679,2600-2699,2679. 矩阵中的和,矩阵中的和,https://leetcode.cn/problems/sum-in-a-matrix/,sum-in-a-matrix,数组、矩阵、排序、模拟、堆(优先队列),https://algo.itcharge.cn/Solutions/2600-2699/sum-in-a-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2679.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E5%92%8C.md,76.2%,中等,33 -2680,2600-2699,2680. 最大或值,最大或值,https://leetcode.cn/problems/maximum-or/,maximum-or,贪心、位运算、数组、前缀和,https://algo.itcharge.cn/Solutions/2600-2699/maximum-or/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2680.%20%E6%9C%80%E5%A4%A7%E6%88%96%E5%80%BC.md,42.6%,中等,32 -2681,2600-2699,2681. 英雄的力量,英雄的力量,https://leetcode.cn/problems/power-of-heroes/,power-of-heroes,数组、数学、前缀和、排序,https://algo.itcharge.cn/Solutions/2600-2699/power-of-heroes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2681.%20%E8%8B%B1%E9%9B%84%E7%9A%84%E5%8A%9B%E9%87%8F.md,35.8%,困难,24 -2682,2600-2699,2682. 找出转圈游戏输家,找出转圈游戏输家,https://leetcode.cn/problems/find-the-losers-of-the-circular-game/,find-the-losers-of-the-circular-game,数组、哈希表、模拟,https://algo.itcharge.cn/Solutions/2600-2699/find-the-losers-of-the-circular-game/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2682.%20%E6%89%BE%E5%87%BA%E8%BD%AC%E5%9C%88%E6%B8%B8%E6%88%8F%E8%BE%93%E5%AE%B6.md,54.5%,简单,36 -2683,2600-2699,2683. 相邻值的按位异或,相邻值的按位异或,https://leetcode.cn/problems/neighboring-bitwise-xor/,neighboring-bitwise-xor,位运算、数组,https://algo.itcharge.cn/Solutions/2600-2699/neighboring-bitwise-xor/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2683.%20%E7%9B%B8%E9%82%BB%E5%80%BC%E7%9A%84%E6%8C%89%E4%BD%8D%E5%BC%82%E6%88%96.md,69.0%,中等,44 -2684,2600-2699,2684. 矩阵中移动的最大次数,矩阵中移动的最大次数,https://leetcode.cn/problems/maximum-number-of-moves-in-a-grid/,maximum-number-of-moves-in-a-grid,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/2600-2699/maximum-number-of-moves-in-a-grid/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2684.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%A7%BB%E5%8A%A8%E7%9A%84%E6%9C%80%E5%A4%A7%E6%AC%A1%E6%95%B0.md,40.9%,中等,63 -2685,2600-2699,2685. 统计完全连通分量的数量,统计完全连通分量的数量,https://leetcode.cn/problems/count-the-number-of-complete-components/,count-the-number-of-complete-components,深度优先搜索、广度优先搜索、图,https://algo.itcharge.cn/Solutions/2600-2699/count-the-number-of-complete-components/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2685.%20%E7%BB%9F%E8%AE%A1%E5%AE%8C%E5%85%A8%E8%BF%9E%E9%80%9A%E5%88%86%E9%87%8F%E7%9A%84%E6%95%B0%E9%87%8F.md,67.3%,中等,49 -2686,2600-2699,2686. 即时食物配送 III,即时食物配送 III,https://leetcode.cn/problems/immediate-food-delivery-iii/,immediate-food-delivery-iii,数据库,https://algo.itcharge.cn/Solutions/2600-2699/immediate-food-delivery-iii/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2686.%20%E5%8D%B3%E6%97%B6%E9%A3%9F%E7%89%A9%E9%85%8D%E9%80%81%20III.md,67.2%,中等,5 -2687,2600-2699,2687. 自行车的最后使用时间,自行车的最后使用时间,https://leetcode.cn/problems/bikes-last-time-used/,bikes-last-time-used,数据库,https://algo.itcharge.cn/Solutions/2600-2699/bikes-last-time-used/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2687.%20%E8%87%AA%E8%A1%8C%E8%BD%A6%E7%9A%84%E6%9C%80%E5%90%8E%E4%BD%BF%E7%94%A8%E6%97%B6%E9%97%B4.md,85.8%,简单,2 -2688,2600-2699,2688. 查找活跃用户,查找活跃用户,https://leetcode.cn/problems/find-active-users/,find-active-users,数据库,https://algo.itcharge.cn/Solutions/2600-2699/find-active-users/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2688.%20%E6%9F%A5%E6%89%BE%E6%B4%BB%E8%B7%83%E7%94%A8%E6%88%B7.md,44.6%,中等,7 -2689,2600-2699,2689. 从 Rope 树中提取第 K 个字符,从 Rope 树中提取第 K 个字符,https://leetcode.cn/problems/extract-kth-character-from-the-rope-tree/,extract-kth-character-from-the-rope-tree,树、深度优先搜索,https://algo.itcharge.cn/Solutions/2600-2699/extract-kth-character-from-the-rope-tree/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2689.%20%E4%BB%8E%20Rope%20%E6%A0%91%E4%B8%AD%E6%8F%90%E5%8F%96%E7%AC%AC%20K%20%E4%B8%AA%E5%AD%97%E7%AC%A6.md,78.6%,简单,3 -2690,2600-2699,2690. 无穷方法对象,无穷方法对象,https://leetcode.cn/problems/infinite-method-object/,infinite-method-object,,https://algo.itcharge.cn/Solutions/2600-2699/infinite-method-object/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2690.%20%E6%97%A0%E7%A9%B7%E6%96%B9%E6%B3%95%E5%AF%B9%E8%B1%A1.md,95.0%,简单,2 -2691,2600-2699,2691. 不可变辅助工具,不可变辅助工具,https://leetcode.cn/problems/immutability-helper/,immutability-helper,,https://algo.itcharge.cn/Solutions/2600-2699/immutability-helper/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2691.%20%E4%B8%8D%E5%8F%AF%E5%8F%98%E8%BE%85%E5%8A%A9%E5%B7%A5%E5%85%B7.md,27.0%,困难,2 -2692,2600-2699,2692. 使对象不可变,使对象不可变,https://leetcode.cn/problems/make-object-immutable/,make-object-immutable,,https://algo.itcharge.cn/Solutions/2600-2699/make-object-immutable/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2692.%20%E4%BD%BF%E5%AF%B9%E8%B1%A1%E4%B8%8D%E5%8F%AF%E5%8F%98.md,48.0%,中等,3 -2693,2600-2699,2693. 使用自定义上下文调用函数,使用自定义上下文调用函数,https://leetcode.cn/problems/call-function-with-custom-context/,call-function-with-custom-context,,https://algo.itcharge.cn/Solutions/2600-2699/call-function-with-custom-context/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2693.%20%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E4%B8%8A%E4%B8%8B%E6%96%87%E8%B0%83%E7%94%A8%E5%87%BD%E6%95%B0.md,73.0%,中等,16 -2694,2600-2699,2694. 事件发射器,事件发射器,https://leetcode.cn/problems/event-emitter/,event-emitter,,https://algo.itcharge.cn/Solutions/2600-2699/event-emitter/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2694.%20%E4%BA%8B%E4%BB%B6%E5%8F%91%E5%B0%84%E5%99%A8.md,64.7%,中等,8 -2695,2600-2699,2695. 包装数组,包装数组,https://leetcode.cn/problems/array-wrapper/,array-wrapper,,https://algo.itcharge.cn/Solutions/2600-2699/array-wrapper/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2695.%20%E5%8C%85%E8%A3%85%E6%95%B0%E7%BB%84.md,72.2%,简单,12 -2696,2600-2699,2696. 删除子串后的字符串最小长度,删除子串后的字符串最小长度,https://leetcode.cn/problems/minimum-string-length-after-removing-substrings/,minimum-string-length-after-removing-substrings,栈、字符串、模拟,https://algo.itcharge.cn/Solutions/2600-2699/minimum-string-length-after-removing-substrings/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2696.%20%E5%88%A0%E9%99%A4%E5%AD%90%E4%B8%B2%E5%90%8E%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%9C%80%E5%B0%8F%E9%95%BF%E5%BA%A6.md,72.5%,简单,67 -2697,2600-2699,2697. 字典序最小回文串,字典序最小回文串,https://leetcode.cn/problems/lexicographically-smallest-palindrome/,lexicographically-smallest-palindrome,双指针、字符串,https://algo.itcharge.cn/Solutions/2600-2699/lexicographically-smallest-palindrome/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2697.%20%E5%AD%97%E5%85%B8%E5%BA%8F%E6%9C%80%E5%B0%8F%E5%9B%9E%E6%96%87%E4%B8%B2.md,83.1%,简单,67 -2698,2600-2699,2698. 求一个整数的惩罚数,求一个整数的惩罚数,https://leetcode.cn/problems/find-the-punishment-number-of-an-integer/,find-the-punishment-number-of-an-integer,递归、数学,https://algo.itcharge.cn/Solutions/2600-2699/find-the-punishment-number-of-an-integer/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2698.%20%E6%B1%82%E4%B8%80%E4%B8%AA%E6%95%B4%E6%95%B0%E7%9A%84%E6%83%A9%E7%BD%9A%E6%95%B0.md,66.6%,中等,76 -2699,2600-2699,2699. 修改图中的边权,修改图中的边权,https://leetcode.cn/problems/modify-graph-edge-weights/,modify-graph-edge-weights,图、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/2600-2699/modify-graph-edge-weights/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2699.%20%E4%BF%AE%E6%94%B9%E5%9B%BE%E4%B8%AD%E7%9A%84%E8%BE%B9%E6%9D%83.md,52.5%,困难,58 -2700,2700-2799,2700. 两个对象之间的差异,两个对象之间的差异,https://leetcode.cn/problems/differences-between-two-objects/,differences-between-two-objects,,https://algo.itcharge.cn/Solutions/2700-2799/differences-between-two-objects/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2700.%20%E4%B8%A4%E4%B8%AA%E5%AF%B9%E8%B1%A1%E4%B9%8B%E9%97%B4%E7%9A%84%E5%B7%AE%E5%BC%82.md,59.3%,中等,20 -2701,2700-2799,2701. 连续递增交易,连续递增交易,https://leetcode.cn/problems/consecutive-transactions-with-increasing-amounts/,consecutive-transactions-with-increasing-amounts,数据库,https://algo.itcharge.cn/Solutions/2700-2799/consecutive-transactions-with-increasing-amounts/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2701.%20%E8%BF%9E%E7%BB%AD%E9%80%92%E5%A2%9E%E4%BA%A4%E6%98%93.md,32.2%,困难,6 -2702,2700-2799,2702. 使数字变为非正数的最小操作次数,使数字变为非正数的最小操作次数,https://leetcode.cn/problems/minimum-operations-to-make-numbers-non-positive/,minimum-operations-to-make-numbers-non-positive,数组、二分查找,https://algo.itcharge.cn/Solutions/2700-2799/minimum-operations-to-make-numbers-non-positive/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2702.%20%E4%BD%BF%E6%95%B0%E5%AD%97%E5%8F%98%E4%B8%BA%E9%9D%9E%E6%AD%A3%E6%95%B0%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md,48.8%,困难,3 -2703,2700-2799,2703. 返回传递的参数的长度,返回传递的参数的长度,https://leetcode.cn/problems/return-length-of-arguments-passed/,return-length-of-arguments-passed,,https://algo.itcharge.cn/Solutions/2700-2799/return-length-of-arguments-passed/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2703.%20%E8%BF%94%E5%9B%9E%E4%BC%A0%E9%80%92%E7%9A%84%E5%8F%82%E6%95%B0%E7%9A%84%E9%95%BF%E5%BA%A6.md,93.7%,简单,12 -2704,2700-2799,2704. 相等还是不相等,相等还是不相等,https://leetcode.cn/problems/to-be-or-not-to-be/,to-be-or-not-to-be,,https://algo.itcharge.cn/Solutions/2700-2799/to-be-or-not-to-be/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2704.%20%E7%9B%B8%E7%AD%89%E8%BF%98%E6%98%AF%E4%B8%8D%E7%9B%B8%E7%AD%89.md,52.7%,简单,16 -2705,2700-2799,2705. 精简对象,精简对象,https://leetcode.cn/problems/compact-object/,compact-object,,https://algo.itcharge.cn/Solutions/2700-2799/compact-object/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2705.%20%E7%B2%BE%E7%AE%80%E5%AF%B9%E8%B1%A1.md,63.4%,中等,9 -2706,2700-2799,2706. 购买两块巧克力,购买两块巧克力,https://leetcode.cn/problems/buy-two-chocolates/,buy-two-chocolates,数组、排序,https://algo.itcharge.cn/Solutions/2700-2799/buy-two-chocolates/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2706.%20%E8%B4%AD%E4%B9%B0%E4%B8%A4%E5%9D%97%E5%B7%A7%E5%85%8B%E5%8A%9B.md,80.0%,简单,32 -2707,2700-2799,2707. 字符串中的额外字符,字符串中的额外字符,https://leetcode.cn/problems/extra-characters-in-a-string/,extra-characters-in-a-string,字典树、数组、哈希表、字符串、动态规划,https://algo.itcharge.cn/Solutions/2700-2799/extra-characters-in-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2707.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E9%A2%9D%E5%A4%96%E5%AD%97%E7%AC%A6.md,41.9%,中等,38 -2708,2700-2799,2708. 一个小组的最大实力值,一个小组的最大实力值,https://leetcode.cn/problems/maximum-strength-of-a-group/,maximum-strength-of-a-group,贪心、递归、数组、排序,https://algo.itcharge.cn/Solutions/2700-2799/maximum-strength-of-a-group/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2708.%20%E4%B8%80%E4%B8%AA%E5%B0%8F%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AE%9E%E5%8A%9B%E5%80%BC.md,30.2%,中等,52 -2709,2700-2799,2709. 最大公约数遍历,最大公约数遍历,https://leetcode.cn/problems/greatest-common-divisor-traversal/,greatest-common-divisor-traversal,并查集、数组、数学、数论,https://algo.itcharge.cn/Solutions/2700-2799/greatest-common-divisor-traversal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2709.%20%E6%9C%80%E5%A4%A7%E5%85%AC%E7%BA%A6%E6%95%B0%E9%81%8D%E5%8E%86.md,24.1%,困难,34 -2710,2700-2799,2710. 移除字符串中的尾随零,移除字符串中的尾随零,https://leetcode.cn/problems/remove-trailing-zeros-from-a-string/,remove-trailing-zeros-from-a-string,字符串,https://algo.itcharge.cn/Solutions/2700-2799/remove-trailing-zeros-from-a-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2710.%20%E7%A7%BB%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%B0%BE%E9%9A%8F%E9%9B%B6.md,83.5%,简单,59 -2711,2700-2799,2711. 对角线上不同值的数量差,对角线上不同值的数量差,https://leetcode.cn/problems/difference-of-number-of-distinct-values-on-diagonals/,difference-of-number-of-distinct-values-on-diagonals,数组、哈希表、矩阵,https://algo.itcharge.cn/Solutions/2700-2799/difference-of-number-of-distinct-values-on-diagonals/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2711.%20%E5%AF%B9%E8%A7%92%E7%BA%BF%E4%B8%8A%E4%B8%8D%E5%90%8C%E5%80%BC%E7%9A%84%E6%95%B0%E9%87%8F%E5%B7%AE.md,72.1%,中等,56 -2712,2700-2799,2712. 使所有字符相等的最小成本,使所有字符相等的最小成本,https://leetcode.cn/problems/minimum-cost-to-make-all-characters-equal/,minimum-cost-to-make-all-characters-equal,贪心、字符串、动态规划,https://algo.itcharge.cn/Solutions/2700-2799/minimum-cost-to-make-all-characters-equal/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2712.%20%E4%BD%BF%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md,56.1%,中等,58 -2713,2700-2799,2713. 矩阵中严格递增的单元格数,矩阵中严格递增的单元格数,https://leetcode.cn/problems/maximum-strictly-increasing-cells-in-a-matrix/,maximum-strictly-increasing-cells-in-a-matrix,记忆化搜索、数组、二分查找、动态规划、矩阵、排序,https://algo.itcharge.cn/Solutions/2700-2799/maximum-strictly-increasing-cells-in-a-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2713.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E4%B8%A5%E6%A0%BC%E9%80%92%E5%A2%9E%E7%9A%84%E5%8D%95%E5%85%83%E6%A0%BC%E6%95%B0.md,35.0%,困难,28 -2714,2700-2799,2714. 找到最短路径的 K 次跨越,找到最短路径的 K 次跨越,https://leetcode.cn/problems/find-shortest-path-with-k-hops/,find-shortest-path-with-k-hops,图、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/2700-2799/find-shortest-path-with-k-hops/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2714.%20%E6%89%BE%E5%88%B0%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E7%9A%84%20K%20%E6%AC%A1%E8%B7%A8%E8%B6%8A.md,72.2%,困难,4 -2715,2700-2799,2715. 执行可取消的延迟函数,执行可取消的延迟函数,https://leetcode.cn/problems/execute-cancellable-function-with-delay/,execute-cancellable-function-with-delay,,https://algo.itcharge.cn/Solutions/2700-2799/execute-cancellable-function-with-delay/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2715.%20%E6%89%A7%E8%A1%8C%E5%8F%AF%E5%8F%96%E6%B6%88%E7%9A%84%E5%BB%B6%E8%BF%9F%E5%87%BD%E6%95%B0.md,81.6%,简单,6 -2716,2700-2799,2716. 最小化字符串长度,最小化字符串长度,https://leetcode.cn/problems/minimize-string-length/,minimize-string-length,哈希表、字符串,https://algo.itcharge.cn/Solutions/2700-2799/minimize-string-length/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2716.%20%E6%9C%80%E5%B0%8F%E5%8C%96%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%95%BF%E5%BA%A6.md,72.2%,简单,41 -2717,2700-2799,2717. 半有序排列,半有序排列,https://leetcode.cn/problems/semi-ordered-permutation/,semi-ordered-permutation,数组、模拟,https://algo.itcharge.cn/Solutions/2700-2799/semi-ordered-permutation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2717.%20%E5%8D%8A%E6%9C%89%E5%BA%8F%E6%8E%92%E5%88%97.md,72.8%,简单,35 -2718,2700-2799,2718. 查询后矩阵的和,查询后矩阵的和,https://leetcode.cn/problems/sum-of-matrix-after-queries/,sum-of-matrix-after-queries,数组、哈希表,https://algo.itcharge.cn/Solutions/2700-2799/sum-of-matrix-after-queries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2718.%20%E6%9F%A5%E8%AF%A2%E5%90%8E%E7%9F%A9%E9%98%B5%E7%9A%84%E5%92%8C.md,32.9%,中等,88 -2719,2700-2799,2719. 统计整数数目,统计整数数目,https://leetcode.cn/problems/count-of-integers/,count-of-integers,数学、字符串、动态规划,https://algo.itcharge.cn/Solutions/2700-2799/count-of-integers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2719.%20%E7%BB%9F%E8%AE%A1%E6%95%B4%E6%95%B0%E6%95%B0%E7%9B%AE.md,47.3%,困难,36 -2720,2700-2799,2720. 受欢迎度百分比,受欢迎度百分比,https://leetcode.cn/problems/popularity-percentage/,popularity-percentage,数据库,https://algo.itcharge.cn/Solutions/2700-2799/popularity-percentage/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2720.%20%E5%8F%97%E6%AC%A2%E8%BF%8E%E5%BA%A6%E7%99%BE%E5%88%86%E6%AF%94.md,61.2%,困难,3 -2721,2700-2799,2721. 并行执行异步函数,并行执行异步函数,https://leetcode.cn/problems/execute-asynchronous-functions-in-parallel/,execute-asynchronous-functions-in-parallel,,https://algo.itcharge.cn/Solutions/2700-2799/execute-asynchronous-functions-in-parallel/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2721.%20%E5%B9%B6%E8%A1%8C%E6%89%A7%E8%A1%8C%E5%BC%82%E6%AD%A5%E5%87%BD%E6%95%B0.md,58.6%,中等,8 -2722,2700-2799,2722. 根据 ID 合并两个数组,根据 ID 合并两个数组,https://leetcode.cn/problems/join-two-arrays-by-id/,join-two-arrays-by-id,,https://algo.itcharge.cn/Solutions/2700-2799/join-two-arrays-by-id/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2722.%20%E6%A0%B9%E6%8D%AE%20ID%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84.md,47.4%,中等,6 -2723,2700-2799,2723. 添加两个 Promise 对象,添加两个 Promise 对象,https://leetcode.cn/problems/add-two-promises/,add-two-promises,,https://algo.itcharge.cn/Solutions/2700-2799/add-two-promises/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2723.%20%E6%B7%BB%E5%8A%A0%E4%B8%A4%E4%B8%AA%20Promise%20%E5%AF%B9%E8%B1%A1.md,86.5%,简单,8 -2724,2700-2799,2724. 排序方式,排序方式,https://leetcode.cn/problems/sort-by/,sort-by,,https://algo.itcharge.cn/Solutions/2700-2799/sort-by/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2724.%20%E6%8E%92%E5%BA%8F%E6%96%B9%E5%BC%8F.md,81.2%,简单,5 -2725,2700-2799,2725. 间隔取消,间隔取消,https://leetcode.cn/problems/interval-cancellation/,interval-cancellation,,https://algo.itcharge.cn/Solutions/2700-2799/interval-cancellation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2725.%20%E9%97%B4%E9%9A%94%E5%8F%96%E6%B6%88.md,75.0%,简单,9 -2726,2700-2799,2726. 使用方法链的计算器,使用方法链的计算器,https://leetcode.cn/problems/calculator-with-method-chaining/,calculator-with-method-chaining,,https://algo.itcharge.cn/Solutions/2700-2799/calculator-with-method-chaining/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2726.%20%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E9%93%BE%E7%9A%84%E8%AE%A1%E7%AE%97%E5%99%A8.md,60.9%,简单,8 -2727,2700-2799,2727. 判断对象是否为空,判断对象是否为空,https://leetcode.cn/problems/is-object-empty/,is-object-empty,,https://algo.itcharge.cn/Solutions/2700-2799/is-object-empty/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2727.%20%E5%88%A4%E6%96%AD%E5%AF%B9%E8%B1%A1%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%BA.md,71.1%,简单,12 -2728,2700-2799,2728. 计算一个环形街道上的房屋数量,计算一个环形街道上的房屋数量,https://leetcode.cn/problems/count-houses-in-a-circular-street/,count-houses-in-a-circular-street,数组,https://algo.itcharge.cn/Solutions/2700-2799/count-houses-in-a-circular-street/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2728.%20%E8%AE%A1%E7%AE%97%E4%B8%80%E4%B8%AA%E7%8E%AF%E5%BD%A2%E8%A1%97%E9%81%93%E4%B8%8A%E7%9A%84%E6%88%BF%E5%B1%8B%E6%95%B0%E9%87%8F.md,89.9%,简单,5 -2729,2700-2799,2729. 判断一个数是否迷人,判断一个数是否迷人,https://leetcode.cn/problems/check-if-the-number-is-fascinating/,check-if-the-number-is-fascinating,哈希表、数学,https://algo.itcharge.cn/Solutions/2700-2799/check-if-the-number-is-fascinating/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2729.%20%E5%88%A4%E6%96%AD%E4%B8%80%E4%B8%AA%E6%95%B0%E6%98%AF%E5%90%A6%E8%BF%B7%E4%BA%BA.md,62.5%,简单,37 -2730,2700-2799,2730. 找到最长的半重复子字符串,找到最长的半重复子字符串,https://leetcode.cn/problems/find-the-longest-semi-repetitive-substring/,find-the-longest-semi-repetitive-substring,字符串、滑动窗口,https://algo.itcharge.cn/Solutions/2700-2799/find-the-longest-semi-repetitive-substring/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2730.%20%E6%89%BE%E5%88%B0%E6%9C%80%E9%95%BF%E7%9A%84%E5%8D%8A%E9%87%8D%E5%A4%8D%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,45.6%,中等,29 -2731,2700-2799,2731. 移动机器人,移动机器人,https://leetcode.cn/problems/movement-of-robots/,movement-of-robots,脑筋急转弯、数组、前缀和、排序,https://algo.itcharge.cn/Solutions/2700-2799/movement-of-robots/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2731.%20%E7%A7%BB%E5%8A%A8%E6%9C%BA%E5%99%A8%E4%BA%BA.md,33.7%,中等,29 -2732,2700-2799,2732. 找到矩阵中的好子集,找到矩阵中的好子集,https://leetcode.cn/problems/find-a-good-subset-of-the-matrix/,find-a-good-subset-of-the-matrix,贪心、位运算、数组、矩阵,https://algo.itcharge.cn/Solutions/2700-2799/find-a-good-subset-of-the-matrix/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2732.%20%E6%89%BE%E5%88%B0%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E5%A5%BD%E5%AD%90%E9%9B%86.md,56.1%,困难,15 -2733,2700-2799,2733. 既不是最小值也不是最大值,既不是最小值也不是最大值,https://leetcode.cn/problems/neither-minimum-nor-maximum/,neither-minimum-nor-maximum,数组、排序,https://algo.itcharge.cn/Solutions/2700-2799/neither-minimum-nor-maximum/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2733.%20%E6%97%A2%E4%B8%8D%E6%98%AF%E6%9C%80%E5%B0%8F%E5%80%BC%E4%B9%9F%E4%B8%8D%E6%98%AF%E6%9C%80%E5%A4%A7%E5%80%BC.md,80.2%,简单,40 -2734,2700-2799,2734. 执行子串操作后的字典序最小字符串,执行子串操作后的字典序最小字符串,https://leetcode.cn/problems/lexicographically-smallest-string-after-substring-operation/,lexicographically-smallest-string-after-substring-operation,贪心、字符串,https://algo.itcharge.cn/Solutions/2700-2799/lexicographically-smallest-string-after-substring-operation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2734.%20%E6%89%A7%E8%A1%8C%E5%AD%90%E4%B8%B2%E6%93%8D%E4%BD%9C%E5%90%8E%E7%9A%84%E5%AD%97%E5%85%B8%E5%BA%8F%E6%9C%80%E5%B0%8F%E5%AD%97%E7%AC%A6%E4%B8%B2.md,32.8%,中等,42 -2735,2700-2799,2735. 收集巧克力,收集巧克力,https://leetcode.cn/problems/collecting-chocolates/,collecting-chocolates,数组、枚举,https://algo.itcharge.cn/Solutions/2700-2799/collecting-chocolates/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2735.%20%E6%94%B6%E9%9B%86%E5%B7%A7%E5%85%8B%E5%8A%9B.md,43.1%,中等,45 -2736,2700-2799,2736. 最大和查询,最大和查询,https://leetcode.cn/problems/maximum-sum-queries/,maximum-sum-queries,栈、树状数组、线段树、数组、二分查找、排序、单调栈,https://algo.itcharge.cn/Solutions/2700-2799/maximum-sum-queries/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2736.%20%E6%9C%80%E5%A4%A7%E5%92%8C%E6%9F%A5%E8%AF%A2.md,38.1%,困难,46 -2737,2700-2799,2737. 找到最近的标记节点,找到最近的标记节点,https://leetcode.cn/problems/find-the-closest-marked-node/,find-the-closest-marked-node,图、数组、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/2700-2799/find-the-closest-marked-node/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2737.%20%E6%89%BE%E5%88%B0%E6%9C%80%E8%BF%91%E7%9A%84%E6%A0%87%E8%AE%B0%E8%8A%82%E7%82%B9.md,46.9%,中等,3 -2738,2700-2799,2738. 统计文本中单词的出现次数,统计文本中单词的出现次数,https://leetcode.cn/problems/count-occurrences-in-text/,count-occurrences-in-text,数据库,https://algo.itcharge.cn/Solutions/2700-2799/count-occurrences-in-text/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2738.%20%E7%BB%9F%E8%AE%A1%E6%96%87%E6%9C%AC%E4%B8%AD%E5%8D%95%E8%AF%8D%E7%9A%84%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0.md,29.9%,中等,1 -2739,2700-2799,2739. 总行驶距离,总行驶距离,https://leetcode.cn/problems/total-distance-traveled/,total-distance-traveled,数学、模拟,https://algo.itcharge.cn/Solutions/2700-2799/total-distance-traveled/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2739.%20%E6%80%BB%E8%A1%8C%E9%A9%B6%E8%B7%9D%E7%A6%BB.md,52.8%,简单,43 -2740,2700-2799,2740. 找出分区值,找出分区值,https://leetcode.cn/problems/find-the-value-of-the-partition/,find-the-value-of-the-partition,数组、排序,https://algo.itcharge.cn/Solutions/2700-2799/find-the-value-of-the-partition/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2740.%20%E6%89%BE%E5%87%BA%E5%88%86%E5%8C%BA%E5%80%BC.md,74.3%,中等,39 -2741,2700-2799,2741. 特别的排列,特别的排列,https://leetcode.cn/problems/special-permutations/,special-permutations,位运算、数组、状态压缩,https://algo.itcharge.cn/Solutions/2700-2799/special-permutations/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2741.%20%E7%89%B9%E5%88%AB%E7%9A%84%E6%8E%92%E5%88%97.md,35.1%,中等,47 -2742,2700-2799,2742. 给墙壁刷油漆,给墙壁刷油漆,https://leetcode.cn/problems/painting-the-walls/,painting-the-walls,数组、动态规划,https://algo.itcharge.cn/Solutions/2700-2799/painting-the-walls/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2742.%20%E7%BB%99%E5%A2%99%E5%A3%81%E5%88%B7%E6%B2%B9%E6%BC%86.md,34.2%,困难,24 -2743,2700-2799,2743. ,,https://leetcode.cn/problems/count-substrings-without-repeating-character/,count-substrings-without-repeating-character,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/2700-2799/count-substrings-without-repeating-character/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2743.%20.md,82.1%,中等,1 -2744,2700-2799,2744. 最大字符串配对数目,最大字符串配对数目,https://leetcode.cn/problems/find-maximum-number-of-string-pairs/,find-maximum-number-of-string-pairs,数组、哈希表、字符串、模拟,https://algo.itcharge.cn/Solutions/2700-2799/find-maximum-number-of-string-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2744.%20%E6%9C%80%E5%A4%A7%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%85%8D%E5%AF%B9%E6%95%B0%E7%9B%AE.md,85.5%,简单,26 -2745,2700-2799,2745. 构造最长的新字符串,构造最长的新字符串,https://leetcode.cn/problems/construct-the-longest-new-string/,construct-the-longest-new-string,贪心、脑筋急转弯、数学,https://algo.itcharge.cn/Solutions/2700-2799/construct-the-longest-new-string/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2745.%20%E6%9E%84%E9%80%A0%E6%9C%80%E9%95%BF%E7%9A%84%E6%96%B0%E5%AD%97%E7%AC%A6%E4%B8%B2.md,55.8%,中等,29 -2746,2700-2799,2746. 字符串连接删减字母,字符串连接删减字母,https://leetcode.cn/problems/decremental-string-concatenation/,decremental-string-concatenation,数组、字符串,https://algo.itcharge.cn/Solutions/2700-2799/decremental-string-concatenation/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2746.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BF%9E%E6%8E%A5%E5%88%A0%E5%87%8F%E5%AD%97%E6%AF%8D.md,34.7%,中等,27 -2747,2700-2799,2747. 统计没有收到请求的服务器数目,统计没有收到请求的服务器数目,https://leetcode.cn/problems/count-zero-request-servers/,count-zero-request-servers,数组、哈希表、排序、滑动窗口,https://algo.itcharge.cn/Solutions/2700-2799/count-zero-request-servers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2747.%20%E7%BB%9F%E8%AE%A1%E6%B2%A1%E6%9C%89%E6%94%B6%E5%88%B0%E8%AF%B7%E6%B1%82%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%95%B0%E7%9B%AE.md,37.1%,中等,20 -2748,2700-2799,2748. 美丽下标对的数目,美丽下标对的数目,https://leetcode.cn/problems/number-of-beautiful-pairs/,number-of-beautiful-pairs,数组、数学、数论,https://algo.itcharge.cn/Solutions/2700-2799/number-of-beautiful-pairs/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2748.%20%E7%BE%8E%E4%B8%BD%E4%B8%8B%E6%A0%87%E5%AF%B9%E7%9A%84%E6%95%B0%E7%9B%AE.md,56.2%,简单,28 -2749,2700-2799,2749. 得到整数零需要执行的最少操作数,得到整数零需要执行的最少操作数,https://leetcode.cn/problems/minimum-operations-to-make-the-integer-zero/,minimum-operations-to-make-the-integer-zero,位运算、脑筋急转弯,https://algo.itcharge.cn/Solutions/2700-2799/minimum-operations-to-make-the-integer-zero/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2749.%20%E5%BE%97%E5%88%B0%E6%95%B4%E6%95%B0%E9%9B%B6%E9%9C%80%E8%A6%81%E6%89%A7%E8%A1%8C%E7%9A%84%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E6%95%B0.md,29.5%,中等,23 -2750,2700-2799,2750. 将数组划分成若干好子数组的方式,将数组划分成若干好子数组的方式,https://leetcode.cn/problems/ways-to-split-array-into-good-subarrays/,ways-to-split-array-into-good-subarrays,数组、数学,https://algo.itcharge.cn/Solutions/2700-2799/ways-to-split-array-into-good-subarrays/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2750.%20%E5%B0%86%E6%95%B0%E7%BB%84%E5%88%92%E5%88%86%E6%88%90%E8%8B%A5%E5%B9%B2%E5%A5%BD%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%96%B9%E5%BC%8F.md,37.4%,中等,30 -2751,2700-2799,2751. 机器人碰撞,机器人碰撞,https://leetcode.cn/problems/robot-collisions/,robot-collisions,栈、数组、排序、模拟,https://algo.itcharge.cn/Solutions/2700-2799/robot-collisions/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2751.%20%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%A2%B0%E6%92%9E.md,48.9%,困难,26 -2752,2700-2799,2752. ,,https://leetcode.cn/problems/customers-with-maximum-number-of-transactions-on-consecutive-days/,customers-with-maximum-number-of-transactions-on-consecutive-days,,https://algo.itcharge.cn/Solutions/2700-2799/customers-with-maximum-number-of-transactions-on-consecutive-days/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2752.%20.md,57.1%,困难,0 -LCP 01,LCP,LCP 01. 猜数字,猜数字,https://leetcode.cn/problems/guess-numbers/,guess-numbers,数组,https://algo.itcharge.cn/Solutions/LCP/guess-numbers/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2001.%20%E7%8C%9C%E6%95%B0%E5%AD%97.md,84.7%,简单,806 -LCP 02,LCP,LCP 02. 分式化简,分式化简,https://leetcode.cn/problems/deep-dark-fraction/,deep-dark-fraction,数组、数学、数论、模拟,https://algo.itcharge.cn/Solutions/LCP/deep-dark-fraction/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2002.%20%E5%88%86%E5%BC%8F%E5%8C%96%E7%AE%80.md,70.2%,简单,329 -LCP 03,LCP,LCP 03. 机器人大冒险,机器人大冒险,https://leetcode.cn/problems/programmable-robot/,programmable-robot,数组、哈希表、模拟,https://algo.itcharge.cn/Solutions/LCP/programmable-robot/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2003.%20%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%A4%A7%E5%86%92%E9%99%A9.md,23.2%,中等,243 -LCP 04,LCP,LCP 04. 覆盖,覆盖,https://leetcode.cn/problems/broken-board-dominoes/,broken-board-dominoes,位运算、图、数组、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/LCP/broken-board-dominoes/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2004.%20%E8%A6%86%E7%9B%96.md,41.2%,困难,93 -LCP 05,LCP,LCP 05. 发 LeetCoin,发 LeetCoin,https://leetcode.cn/problems/coin-bonus/,coin-bonus,树状数组、线段树、数组,https://algo.itcharge.cn/Solutions/LCP/coin-bonus/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2005.%20%E5%8F%91%20LeetCoin.md,22.4%,困难,68 -LCP 06,LCP,LCP 06. 拿硬币,拿硬币,https://leetcode.cn/problems/na-ying-bi/,na-ying-bi,数组、数学,https://algo.itcharge.cn/Solutions/LCP/na-ying-bi/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2006.%20%E6%8B%BF%E7%A1%AC%E5%B8%81.md,83.9%,简单,871 -LCP 07,LCP,LCP 07. 传递信息,传递信息,https://leetcode.cn/problems/chuan-di-xin-xi/,chuan-di-xin-xi,深度优先搜索、广度优先搜索、图、动态规划,https://algo.itcharge.cn/Solutions/LCP/chuan-di-xin-xi/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2007.%20%E4%BC%A0%E9%80%92%E4%BF%A1%E6%81%AF.md,75.5%,简单,626 -LCP 08,LCP,LCP 08. 剧情触发时间,剧情触发时间,https://leetcode.cn/problems/ju-qing-hong-fa-shi-jian/,ju-qing-hong-fa-shi-jian,数组、二分查找、排序,https://algo.itcharge.cn/Solutions/LCP/ju-qing-hong-fa-shi-jian/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2008.%20%E5%89%A7%E6%83%85%E8%A7%A6%E5%8F%91%E6%97%B6%E9%97%B4.md,32.9%,中等,131 -LCP 09,LCP,LCP 09. 最小跳跃次数,最小跳跃次数,https://leetcode.cn/problems/zui-xiao-tiao-yue-ci-shu/,zui-xiao-tiao-yue-ci-shu,广度优先搜索、线段树、数组、动态规划,https://algo.itcharge.cn/Solutions/LCP/zui-xiao-tiao-yue-ci-shu/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2009.%20%E6%9C%80%E5%B0%8F%E8%B7%B3%E8%B7%83%E6%AC%A1%E6%95%B0.md,31.9%,困难,134 -LCP 10,LCP,LCP 10. 二叉树任务调度,二叉树任务调度,https://leetcode.cn/problems/er-cha-shu-ren-wu-diao-du/,er-cha-shu-ren-wu-diao-du,树、深度优先搜索、动态规划、二叉树,https://algo.itcharge.cn/Solutions/LCP/er-cha-shu-ren-wu-diao-du/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2010.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6.md,61.6%,困难,53 -LCP 11,LCP,LCP 11. 期望个数统计,期望个数统计,https://leetcode.cn/problems/qi-wang-ge-shu-tong-ji/,qi-wang-ge-shu-tong-ji,数组、哈希表、数学、概率与统计,https://algo.itcharge.cn/Solutions/LCP/qi-wang-ge-shu-tong-ji/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2011.%20%E6%9C%9F%E6%9C%9B%E4%B8%AA%E6%95%B0%E7%BB%9F%E8%AE%A1.md,72.6%,简单,99 -LCP 12,LCP,LCP 12. 小张刷题计划,小张刷题计划,https://leetcode.cn/problems/xiao-zhang-shua-ti-ji-hua/,xiao-zhang-shua-ti-ji-hua,数组、二分查找,https://algo.itcharge.cn/Solutions/LCP/xiao-zhang-shua-ti-ji-hua/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2012.%20%E5%B0%8F%E5%BC%A0%E5%88%B7%E9%A2%98%E8%AE%A1%E5%88%92.md,43.9%,中等,155 -LCP 13,LCP,LCP 13. 寻宝,寻宝,https://leetcode.cn/problems/xun-bao/,xun-bao,位运算、广度优先搜索、数组、动态规划、状态压缩、矩阵,https://algo.itcharge.cn/Solutions/LCP/xun-bao/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2013.%20%E5%AF%BB%E5%AE%9D.md,59.7%,困难,100 -LCP 14,LCP,LCP 14. 切分数组,切分数组,https://leetcode.cn/problems/qie-fen-shu-zu/,qie-fen-shu-zu,数组、数学、动态规划、数论,https://algo.itcharge.cn/Solutions/LCP/qie-fen-shu-zu/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2014.%20%E5%88%87%E5%88%86%E6%95%B0%E7%BB%84.md,24.1%,困难,59 -LCP 15,LCP,LCP 15. 游乐园的迷宫,游乐园的迷宫,https://leetcode.cn/problems/you-le-yuan-de-mi-gong/,you-le-yuan-de-mi-gong,贪心、几何、数组、数学,https://algo.itcharge.cn/Solutions/LCP/you-le-yuan-de-mi-gong/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2015.%20%E6%B8%B8%E4%B9%90%E5%9B%AD%E7%9A%84%E8%BF%B7%E5%AE%AB.md,62.6%,困难,30 -LCP 16,LCP,LCP 16. 游乐园的游览计划,游乐园的游览计划,https://leetcode.cn/problems/you-le-yuan-de-you-lan-ji-hua/,you-le-yuan-de-you-lan-ji-hua,图、几何、数学,https://algo.itcharge.cn/Solutions/LCP/you-le-yuan-de-you-lan-ji-hua/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2016.%20%E6%B8%B8%E4%B9%90%E5%9B%AD%E7%9A%84%E6%B8%B8%E8%A7%88%E8%AE%A1%E5%88%92.md,34.9%,困难,22 -LCP 17,LCP,LCP 17. 速算机器人,速算机器人,https://leetcode.cn/problems/nGK0Fy/,nGK0Fy,数学、字符串、模拟,https://algo.itcharge.cn/Solutions/LCP/nGK0Fy/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2017.%20%E9%80%9F%E7%AE%97%E6%9C%BA%E5%99%A8%E4%BA%BA.md,80.2%,简单,356 -LCP 18,LCP,LCP 18. 早餐组合,早餐组合,https://leetcode.cn/problems/2vYnGI/,2vYnGI,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/LCP/2vYnGI/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2018.%20%E6%97%A9%E9%A4%90%E7%BB%84%E5%90%88.md,30.2%,简单,356 -LCP 19,LCP,LCP 19. 秋叶收藏集,秋叶收藏集,https://leetcode.cn/problems/UlBDOe/,UlBDOe,字符串、动态规划,https://algo.itcharge.cn/Solutions/LCP/UlBDOe/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2019.%20%E7%A7%8B%E5%8F%B6%E6%94%B6%E8%97%8F%E9%9B%86.md,51.8%,中等,234 -LCP 20,LCP,LCP 20. 快速公交,快速公交,https://leetcode.cn/problems/meChtZ/,meChtZ,记忆化搜索、数组、动态规划,https://algo.itcharge.cn/Solutions/LCP/meChtZ/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2020.%20%E5%BF%AB%E9%80%9F%E5%85%AC%E4%BA%A4.md,36.0%,困难,39 -LCP 21,LCP,LCP 21. 追逐游戏,追逐游戏,https://leetcode.cn/problems/Za25hA/,Za25hA,深度优先搜索、广度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/LCP/Za25hA/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2021.%20%E8%BF%BD%E9%80%90%E6%B8%B8%E6%88%8F.md,38.6%,困难,35 -LCP 22,LCP,LCP 22. 黑白方格画,黑白方格画,https://leetcode.cn/problems/ccw6C7/,ccw6C7,数学,https://algo.itcharge.cn/Solutions/LCP/ccw6C7/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2022.%20%E9%BB%91%E7%99%BD%E6%96%B9%E6%A0%BC%E7%94%BB.md,35.0%,简单,221 -LCP 23,LCP,LCP 23. 魔术排列,魔术排列,https://leetcode.cn/problems/er94lq/,er94lq,队列、数组、模拟,https://algo.itcharge.cn/Solutions/LCP/er94lq/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2023.%20%E9%AD%94%E6%9C%AF%E6%8E%92%E5%88%97.md,37.1%,中等,68 -LCP 24,LCP,LCP 24. 数字游戏,数字游戏,https://leetcode.cn/problems/5TxKeK/,5TxKeK,数组、数学、堆(优先队列),https://algo.itcharge.cn/Solutions/LCP/5TxKeK/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2024.%20%E6%95%B0%E5%AD%97%E6%B8%B8%E6%88%8F.md,32.5%,困难,30 -LCP 25,LCP,LCP 25. 古董键盘,古董键盘,https://leetcode.cn/problems/Uh984O/,Uh984O,数学、动态规划、组合数学,https://algo.itcharge.cn/Solutions/LCP/Uh984O/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2025.%20%E5%8F%A4%E8%91%A3%E9%94%AE%E7%9B%98.md,37.5%,困难,36 -LCP 26,LCP,LCP 26. 导航装置,导航装置,https://leetcode.cn/problems/hSRGyL/,hSRGyL,树、动态规划、二叉树,https://algo.itcharge.cn/Solutions/LCP/hSRGyL/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2026.%20%E5%AF%BC%E8%88%AA%E8%A3%85%E7%BD%AE.md,37.6%,困难,23 -LCP 27,LCP,LCP 27. 黑盒光线反射,黑盒光线反射,https://leetcode.cn/problems/IQvJ9i/,IQvJ9i,设计、线段树、数学、有序集合,https://algo.itcharge.cn/Solutions/LCP/IQvJ9i/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2027.%20%E9%BB%91%E7%9B%92%E5%85%89%E7%BA%BF%E5%8F%8D%E5%B0%84.md,34.2%,困难,30 -LCP 28,LCP,LCP 28. 采购方案,采购方案,https://leetcode.cn/problems/4xy4Wx/,4xy4Wx,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/LCP/4xy4Wx/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2028.%20%E9%87%87%E8%B4%AD%E6%96%B9%E6%A1%88.md,31.8%,简单,293 -LCP 29,LCP,LCP 29. 乐团站位,乐团站位,https://leetcode.cn/problems/SNJvJP/,SNJvJP,数学,https://algo.itcharge.cn/Solutions/LCP/SNJvJP/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2029.%20%E4%B9%90%E5%9B%A2%E7%AB%99%E4%BD%8D.md,21.2%,中等,171 -LCP 30,LCP,LCP 30. 魔塔游戏,魔塔游戏,https://leetcode.cn/problems/p0NxJO/,p0NxJO,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/LCP/p0NxJO/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2030.%20%E9%AD%94%E5%A1%94%E6%B8%B8%E6%88%8F.md,37.7%,中等,142 -LCP 31,LCP,LCP 31. 变换的迷宫,变换的迷宫,https://leetcode.cn/problems/Db3wC1/,Db3wC1,深度优先搜索、广度优先搜索、数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/LCP/Db3wC1/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2031.%20%E5%8F%98%E6%8D%A2%E7%9A%84%E8%BF%B7%E5%AE%AB.md,29.4%,困难,42 -LCP 32,LCP,LCP 32. 批量处理任务,批量处理任务,https://leetcode.cn/problems/t3fKg1/,t3fKg1,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/LCP/t3fKg1/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2032.%20%E6%89%B9%E9%87%8F%E5%A4%84%E7%90%86%E4%BB%BB%E5%8A%A1.md,42.6%,困难,32 -LCP 33,LCP,LCP 33. 蓄水,蓄水,https://leetcode.cn/problems/o8SXZn/,o8SXZn,贪心、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/LCP/o8SXZn/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2033.%20%E8%93%84%E6%B0%B4.md,34.9%,简单,198 -LCP 34,LCP,LCP 34. 二叉树染色,二叉树染色,https://leetcode.cn/problems/er-cha-shu-ran-se-UGC/,er-cha-shu-ran-se-UGC,树、动态规划、二叉树,https://algo.itcharge.cn/Solutions/LCP/er-cha-shu-ran-se-UGC/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2034.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9F%93%E8%89%B2.md,56.1%,中等,103 -LCP 35,LCP,LCP 35. 电动车游城市,电动车游城市,https://leetcode.cn/problems/DFPeFJ/,DFPeFJ,图、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/LCP/DFPeFJ/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2035.%20%E7%94%B5%E5%8A%A8%E8%BD%A6%E6%B8%B8%E5%9F%8E%E5%B8%82.md,48.2%,困难,39 -LCP 36,LCP,LCP 36. 最多牌组数,最多牌组数,https://leetcode.cn/problems/Up5XYM/,Up5XYM,数组、动态规划、排序,https://algo.itcharge.cn/Solutions/LCP/Up5XYM/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2036.%20%E6%9C%80%E5%A4%9A%E7%89%8C%E7%BB%84%E6%95%B0.md,34.6%,困难,25 -LCP 37,LCP,LCP 37. 最小矩形面积,最小矩形面积,https://leetcode.cn/problems/zui-xiao-ju-xing-mian-ji/,zui-xiao-ju-xing-mian-ji,贪心、几何、数组、数学、组合数学、排序,https://algo.itcharge.cn/Solutions/LCP/zui-xiao-ju-xing-mian-ji/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2037.%20%E6%9C%80%E5%B0%8F%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF.md,24.8%,困难,27 -LCP 38,LCP,LCP 38. 守卫城堡,守卫城堡,https://leetcode.cn/problems/7rLGCR/,7rLGCR,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/LCP/7rLGCR/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2038.%20%E5%AE%88%E5%8D%AB%E5%9F%8E%E5%A0%A1.md,56.2%,困难,19 -LCP 39,LCP,LCP 39. 无人机方阵,无人机方阵,https://leetcode.cn/problems/0jQkd0/,0jQkd0,数组、哈希表、计数、矩阵,https://algo.itcharge.cn/Solutions/LCP/0jQkd0/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2039.%20%E6%97%A0%E4%BA%BA%E6%9C%BA%E6%96%B9%E9%98%B5.md,55.5%,简单,98 -LCP 40,LCP,LCP 40. 心算挑战,心算挑战,https://leetcode.cn/problems/uOAnQW/,uOAnQW,贪心、数组、排序,https://algo.itcharge.cn/Solutions/LCP/uOAnQW/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2040.%20%E5%BF%83%E7%AE%97%E6%8C%91%E6%88%98.md,31.1%,简单,185 -LCP 41,LCP,LCP 41. 黑白翻转棋,黑白翻转棋,https://leetcode.cn/problems/fHi6rV/,fHi6rV,广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/LCP/fHi6rV/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2041.%20%E9%BB%91%E7%99%BD%E7%BF%BB%E8%BD%AC%E6%A3%8B.md,68.3%,中等,136 -LCP 42,LCP,LCP 42. 玩具套圈,玩具套圈,https://leetcode.cn/problems/vFjcfV/,vFjcfV,几何、数组、哈希表、数学、二分查找、排序,https://algo.itcharge.cn/Solutions/LCP/vFjcfV/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2042.%20%E7%8E%A9%E5%85%B7%E5%A5%97%E5%9C%88.md,28.5%,困难,48 -LCP 43,LCP,LCP 43. 十字路口的交通,十字路口的交通,https://leetcode.cn/problems/Y1VbOX/,Y1VbOX,数组、字符串、动态规划,https://algo.itcharge.cn/Solutions/LCP/Y1VbOX/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2043.%20%E5%8D%81%E5%AD%97%E8%B7%AF%E5%8F%A3%E7%9A%84%E4%BA%A4%E9%80%9A.md,51.6%,困难,30 -LCP 44,LCP,LCP 44. 开幕式焰火,开幕式焰火,https://leetcode.cn/problems/sZ59z6/,sZ59z6,树、深度优先搜索、广度优先搜索、哈希表、二叉树,https://algo.itcharge.cn/Solutions/LCP/sZ59z6/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2044.%20%E5%BC%80%E5%B9%95%E5%BC%8F%E7%84%B0%E7%81%AB.md,78.6%,简单,215 -LCP 45,LCP,LCP 45. 自行车炫技赛场,自行车炫技赛场,https://leetcode.cn/problems/kplEvH/,kplEvH,深度优先搜索、广度优先搜索、记忆化搜索、数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/LCP/kplEvH/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2045.%20%E8%87%AA%E8%A1%8C%E8%BD%A6%E7%82%AB%E6%8A%80%E8%B5%9B%E5%9C%BA.md,29.6%,中等,58 -LCP 46,LCP,LCP 46. 志愿者调配,志愿者调配,https://leetcode.cn/problems/05ZEDJ/,05ZEDJ,图、数组、数学,https://algo.itcharge.cn/Solutions/LCP/05ZEDJ/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2046.%20%E5%BF%97%E6%84%BF%E8%80%85%E8%B0%83%E9%85%8D.md,49.2%,中等,45 -LCP 47,LCP,LCP 47. 入场安检,入场安检,https://leetcode.cn/problems/oPs9Bm/,oPs9Bm,数组、动态规划,https://algo.itcharge.cn/Solutions/LCP/oPs9Bm/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2047.%20%E5%85%A5%E5%9C%BA%E5%AE%89%E6%A3%80.md,45.0%,困难,33 -LCP 48,LCP,LCP 48. 无限棋局,无限棋局,https://leetcode.cn/problems/fsa7oZ/,fsa7oZ,数组、数学、枚举、博弈,https://algo.itcharge.cn/Solutions/LCP/fsa7oZ/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2048.%20%E6%97%A0%E9%99%90%E6%A3%8B%E5%B1%80.md,27.3%,困难,17 -LCP 49,LCP,LCP 49. 环形闯关游戏,环形闯关游戏,https://leetcode.cn/problems/K8GULz/,K8GULz,位运算、并查集、数组、堆(优先队列),https://algo.itcharge.cn/Solutions/LCP/K8GULz/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2049.%20%E7%8E%AF%E5%BD%A2%E9%97%AF%E5%85%B3%E6%B8%B8%E6%88%8F.md,35.5%,困难,20 -LCP 50,LCP,LCP 50. 宝石补给,宝石补给,https://leetcode.cn/problems/WHnhjV/,WHnhjV,数组、模拟,https://algo.itcharge.cn/Solutions/LCP/WHnhjV/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2050.%20%E5%AE%9D%E7%9F%B3%E8%A1%A5%E7%BB%99.md,68.4%,简单,79 -LCP 51,LCP,LCP 51. 烹饪料理,烹饪料理,https://leetcode.cn/problems/UEcfPD/,UEcfPD,位运算、数组、回溯、枚举,https://algo.itcharge.cn/Solutions/LCP/UEcfPD/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2051.%20%E7%83%B9%E9%A5%AA%E6%96%99%E7%90%86.md,48.1%,简单,111 -LCP 52,LCP,LCP 52. 二叉搜索树染色,二叉搜索树染色,https://leetcode.cn/problems/QO5KpG/,QO5KpG,树、线段树、二叉搜索树、数组、二分查找、二叉树、有序集合,https://algo.itcharge.cn/Solutions/LCP/QO5KpG/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2052.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E6%9F%93%E8%89%B2.md,28.6%,中等,95 -LCP 53,LCP,LCP 53. 守护太空城,守护太空城,https://leetcode.cn/problems/EJvmW4/,EJvmW4,位运算、数组、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/LCP/EJvmW4/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2053.%20%E5%AE%88%E6%8A%A4%E5%A4%AA%E7%A9%BA%E5%9F%8E.md,44.6%,困难,17 -LCP 54,LCP,LCP 54. 夺回据点,夺回据点,https://leetcode.cn/problems/s5kipK/,s5kipK,图、数组、双连通分量,https://algo.itcharge.cn/Solutions/LCP/s5kipK/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2054.%20%E5%A4%BA%E5%9B%9E%E6%8D%AE%E7%82%B9.md,40.9%,困难,12 -LCP 55,LCP,LCP 55. 采集果实,采集果实,https://leetcode.cn/problems/PTXy4P/,PTXy4P,数组,https://algo.itcharge.cn/Solutions/LCP/PTXy4P/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2055.%20%E9%87%87%E9%9B%86%E6%9E%9C%E5%AE%9E.md,73.6%,简单,78 -LCP 56,LCP,LCP 56. 信物传送,信物传送,https://leetcode.cn/problems/6UEx57/,6UEx57,广度优先搜索、图、数组、矩阵、最短路、堆(优先队列),https://algo.itcharge.cn/Solutions/LCP/6UEx57/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2056.%20%E4%BF%A1%E7%89%A9%E4%BC%A0%E9%80%81.md,43.7%,中等,75 -LCP 57,LCP,LCP 57. 打地鼠,打地鼠,https://leetcode.cn/problems/ZbAuEH/,ZbAuEH,数组、动态规划、矩阵、排序,https://algo.itcharge.cn/Solutions/LCP/ZbAuEH/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2057.%20%E6%89%93%E5%9C%B0%E9%BC%A0.md,27.2%,困难,44 -LCP 58,LCP,LCP 58. 积木拼接,积木拼接,https://leetcode.cn/problems/De4qBB/,De4qBB,数组、回溯、矩阵,https://algo.itcharge.cn/Solutions/LCP/De4qBB/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2058.%20%E7%A7%AF%E6%9C%A8%E6%8B%BC%E6%8E%A5.md,35.3%,困难,18 -LCP 59,LCP,LCP 59. 搭桥过河,搭桥过河,https://leetcode.cn/problems/NfY1m5/,NfY1m5,数组、动态规划,https://algo.itcharge.cn/Solutions/LCP/NfY1m5/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2059.%20%E6%90%AD%E6%A1%A5%E8%BF%87%E6%B2%B3.md,36.0%,困难,10 -LCP 60,LCP,LCP 60. 力扣泡泡龙,力扣泡泡龙,https://leetcode.cn/problems/WInSav/,WInSav,树、动态规划、二叉树,https://algo.itcharge.cn/Solutions/LCP/WInSav/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2060.%20%E5%8A%9B%E6%89%A3%E6%B3%A1%E6%B3%A1%E9%BE%99.md,20.2%,困难,27 -LCP 61,LCP,LCP 61. 气温变化趋势,气温变化趋势,https://leetcode.cn/problems/6CE719/,6CE719,数组,https://algo.itcharge.cn/Solutions/LCP/6CE719/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2061.%20%E6%B0%94%E6%B8%A9%E5%8F%98%E5%8C%96%E8%B6%8B%E5%8A%BF.md,61.4%,简单,82 -LCP 62,LCP,LCP 62. 交通枢纽,交通枢纽,https://leetcode.cn/problems/D9PW8w/,D9PW8w,图,https://algo.itcharge.cn/Solutions/LCP/D9PW8w/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2062.%20%E4%BA%A4%E9%80%9A%E6%9E%A2%E7%BA%BD.md,62.5%,中等,72 -LCP 63,LCP,LCP 63. 弹珠游戏,弹珠游戏,https://leetcode.cn/problems/EXvqDp/,EXvqDp,深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/LCP/EXvqDp/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2063.%20%E5%BC%B9%E7%8F%A0%E6%B8%B8%E6%88%8F.md,26.5%,中等,114 -LCP 64,LCP,LCP 64. 二叉树灯饰,二叉树灯饰,https://leetcode.cn/problems/U7WvvU/,U7WvvU,树、深度优先搜索、动态规划、二叉树,https://algo.itcharge.cn/Solutions/LCP/U7WvvU/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2064.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%81%AF%E9%A5%B0.md,35.7%,中等,51 -LCP 65,LCP,LCP 65. 舒适的湿度,舒适的湿度,https://leetcode.cn/problems/3aqs1c/,3aqs1c,数组、动态规划,https://algo.itcharge.cn/Solutions/LCP/3aqs1c/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2065.%20%E8%88%92%E9%80%82%E7%9A%84%E6%B9%BF%E5%BA%A6.md,45.7%,困难,16 -LCP 66,LCP,LCP 66. 最小展台数量,最小展台数量,https://leetcode.cn/problems/600YaG/,600YaG,数组、哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/LCP/600YaG/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2066.%20%E6%9C%80%E5%B0%8F%E5%B1%95%E5%8F%B0%E6%95%B0%E9%87%8F.md,77.5%,简单,85 -LCP 67,LCP,LCP 67. 装饰树,装饰树,https://leetcode.cn/problems/KnLfVT/,KnLfVT,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/LCP/KnLfVT/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2067.%20%E8%A3%85%E9%A5%B0%E6%A0%91.md,87.8%,中等,80 -LCP 68,LCP,LCP 68. 美观的花束,美观的花束,https://leetcode.cn/problems/1GxJYY/,1GxJYY,数组、滑动窗口,https://algo.itcharge.cn/Solutions/LCP/1GxJYY/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2068.%20%E7%BE%8E%E8%A7%82%E7%9A%84%E8%8A%B1%E6%9D%9F.md,50.7%,中等,52 -LCP 69,LCP,LCP 69. Hello LeetCode!,Hello LeetCode!,https://leetcode.cn/problems/rMeRt2/,rMeRt2,位运算、数组、字符串、动态规划、状态压缩,https://algo.itcharge.cn/Solutions/LCP/rMeRt2/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2069.%20Hello%20LeetCode%21.md,34.1%,困难,21 -LCP 70,LCP,LCP 70. 沙地治理,沙地治理,https://leetcode.cn/problems/XxZZjK/,XxZZjK,数组、数学,https://algo.itcharge.cn/Solutions/LCP/XxZZjK/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2070.%20%E6%B2%99%E5%9C%B0%E6%B2%BB%E7%90%86.md,27.8%,困难,15 -LCP 71,LCP,LCP 71. 集水器,集水器,https://leetcode.cn/problems/kskhHQ/,kskhHQ,并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/LCP/kskhHQ/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2071.%20%E9%9B%86%E6%B0%B4%E5%99%A8.md,55.4%,困难,13 -LCP 72,LCP,LCP 72. 补给马车,补给马车,https://leetcode.cn/problems/hqCnmP/,hqCnmP,,https://algo.itcharge.cn/Solutions/LCP/hqCnmP/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2072.%20%E8%A1%A5%E7%BB%99%E9%A9%AC%E8%BD%A6.md,69.7%,简单,42 -LCP 73,LCP,LCP 73. 探险营地,探险营地,https://leetcode.cn/problems/0Zeoeg/,0Zeoeg,,https://algo.itcharge.cn/Solutions/LCP/0Zeoeg/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2073.%20%E6%8E%A2%E9%99%A9%E8%90%A5%E5%9C%B0.md,45.7%,中等,25 -LCP 74,LCP,LCP 74. 最强祝福力场,最强祝福力场,https://leetcode.cn/problems/xepqZ5/,xepqZ5,,https://algo.itcharge.cn/Solutions/LCP/xepqZ5/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2074.%20%E6%9C%80%E5%BC%BA%E7%A5%9D%E7%A6%8F%E5%8A%9B%E5%9C%BA.md,29.0%,中等,35 -LCP 75,LCP,LCP 75. 传送卷轴,传送卷轴,https://leetcode.cn/problems/rdmXM7/,rdmXM7,,https://algo.itcharge.cn/Solutions/LCP/rdmXM7/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2075.%20%E4%BC%A0%E9%80%81%E5%8D%B7%E8%BD%B4.md,36.2%,困难,15 -LCP 76,LCP,LCP 76. 魔法棋盘,魔法棋盘,https://leetcode.cn/problems/1ybDKD/,1ybDKD,,https://algo.itcharge.cn/Solutions/LCP/1ybDKD/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2076.%20%E9%AD%94%E6%B3%95%E6%A3%8B%E7%9B%98.md,36.8%,困难,12 -LCP 77,LCP,LCP 77. 符文储备,符文储备,https://leetcode.cn/problems/W2ZX4X/,W2ZX4X,,https://algo.itcharge.cn/Solutions/LCP/W2ZX4X/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2077.%20%E7%AC%A6%E6%96%87%E5%82%A8%E5%A4%87.md,72.3%,简单,22 -LCP 78,LCP,LCP 78. 城墙防线,城墙防线,https://leetcode.cn/problems/Nsibyl/,Nsibyl,,https://algo.itcharge.cn/Solutions/LCP/Nsibyl/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2078.%20%E5%9F%8E%E5%A2%99%E9%98%B2%E7%BA%BF.md,45.5%,中等,21 -LCP 79,LCP,LCP 79. 提取咒文,提取咒文,https://leetcode.cn/problems/kjpLFZ/,kjpLFZ,,https://algo.itcharge.cn/Solutions/LCP/kjpLFZ/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2079.%20%E6%8F%90%E5%8F%96%E5%92%92%E6%96%87.md,27.5%,中等,18 -LCP 80,LCP,LCP 80. 生物进化录,生物进化录,https://leetcode.cn/problems/qoQAMX/,qoQAMX,,https://algo.itcharge.cn/Solutions/LCP/qoQAMX/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2080.%20%E7%94%9F%E7%89%A9%E8%BF%9B%E5%8C%96%E5%BD%95.md,50.1%,困难,14 -LCP 81,LCP,LCP 81. 与非的谜题,与非的谜题,https://leetcode.cn/problems/ryfUiz/,ryfUiz,,https://algo.itcharge.cn/Solutions/LCP/ryfUiz/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2081.%20%E4%B8%8E%E9%9D%9E%E7%9A%84%E8%B0%9C%E9%A2%98.md,48.0%,困难,15 -LCP 82,LCP,LCP 82. 万灵之树,万灵之树,https://leetcode.cn/problems/cnHoX6/,cnHoX6,,https://algo.itcharge.cn/Solutions/LCP/cnHoX6/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCP%2082.%20%E4%B8%87%E7%81%B5%E4%B9%8B%E6%A0%91.md,14.0%,困难,5 -LCS 01,LCS,LCS 01. 下载插件,下载插件,https://leetcode.cn/problems/Ju9Xwi/,Ju9Xwi,贪心、数学、动态规划,https://algo.itcharge.cn/Solutions/LCS/Ju9Xwi/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCS%2001.%20%E4%B8%8B%E8%BD%BD%E6%8F%92%E4%BB%B6.md,53.8%,简单,267 -LCS 02,LCS,LCS 02. 完成一半题目,完成一半题目,https://leetcode.cn/problems/WqXACV/,WqXACV,贪心、数组、哈希表、排序,https://algo.itcharge.cn/Solutions/LCS/WqXACV/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCS%2002.%20%E5%AE%8C%E6%88%90%E4%B8%80%E5%8D%8A%E9%A2%98%E7%9B%AE.md,64.5%,简单,183 -LCS 03,LCS,LCS 03. 主题空间,主题空间,https://leetcode.cn/problems/YesdPw/,YesdPw,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/LCS/YesdPw/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/LCS%2003.%20%E4%B8%BB%E9%A2%98%E7%A9%BA%E9%97%B4.md,41.3%,中等,96 -剑指 Offer 03,Offer,剑指 Offer 03. 数组中重复的数字,数组中重复的数字,https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/,shu-zu-zhong-zhong-fu-de-shu-zi-lcof,数组、哈希表、排序,https://algo.itcharge.cn/Solutions/Offer/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2003.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97.md,67.1%,简单,4369 -剑指 Offer 04,Offer,剑指 Offer 04. 二维数组中的查找,二维数组中的查找,https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/,er-wei-shu-zu-zhong-de-cha-zhao-lcof,数组、二分查找、分治、矩阵,https://algo.itcharge.cn/Solutions/Offer/er-wei-shu-zu-zhong-de-cha-zhao-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2004.%20%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9F%A5%E6%89%BE.md,39.5%,中等,3514 -剑指 Offer 05,Offer,剑指 Offer 05. 替换空格,替换空格,https://leetcode.cn/problems/ti-huan-kong-ge-lcof/,ti-huan-kong-ge-lcof,字符串,https://algo.itcharge.cn/Solutions/Offer/ti-huan-kong-ge-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2005.%20%E6%9B%BF%E6%8D%A2%E7%A9%BA%E6%A0%BC.md,75.2%,简单,3525 -剑指 Offer 06,Offer,剑指 Offer 06. 从尾到头打印链表,从尾到头打印链表,https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/,cong-wei-dao-tou-da-yin-lian-biao-lcof,栈、递归、链表、双指针,https://algo.itcharge.cn/Solutions/Offer/cong-wei-dao-tou-da-yin-lian-biao-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2006.%20%E4%BB%8E%E5%B0%BE%E5%88%B0%E5%A4%B4%E6%89%93%E5%8D%B0%E9%93%BE%E8%A1%A8.md,74.4%,简单,3619 -剑指 Offer 07,Offer,剑指 Offer 07. 重建二叉树,重建二叉树,https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/,zhong-jian-er-cha-shu-lcof,树、数组、哈希表、分治、二叉树,https://algo.itcharge.cn/Solutions/Offer/zhong-jian-er-cha-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2007.%20%E9%87%8D%E5%BB%BA%E4%BA%8C%E5%8F%89%E6%A0%91.md,70.3%,中等,2159 -剑指 Offer 09,Offer,剑指 Offer 09. 用两个栈实现队列,用两个栈实现队列,https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/,yong-liang-ge-zhan-shi-xian-dui-lie-lcof,栈、设计、队列,https://algo.itcharge.cn/Solutions/Offer/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2009.%20%E7%94%A8%E4%B8%A4%E4%B8%AA%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md,70.4%,简单,3003 -剑指 Offer 10- I,Offer,剑指 Offer 10- I. 斐波那契数列,斐波那契数列,https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/,fei-bo-na-qi-shu-lie-lcof,记忆化搜索、数学、动态规划,https://algo.itcharge.cn/Solutions/Offer/fei-bo-na-qi-shu-lie-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2010-%20I.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97.md,35.9%,简单,2830 -剑指 Offer 10- II,Offer,剑指 Offer 10- II. 青蛙跳台阶问题,青蛙跳台阶问题,https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/,qing-wa-tiao-tai-jie-wen-ti-lcof,记忆化搜索、数学、动态规划,https://algo.itcharge.cn/Solutions/Offer/qing-wa-tiao-tai-jie-wen-ti-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2010-%20II.%20%E9%9D%92%E8%9B%99%E8%B7%B3%E5%8F%B0%E9%98%B6%E9%97%AE%E9%A2%98.md,45.7%,简单,2071 -剑指 Offer 11,Offer,剑指 Offer 11. 旋转数组的最小数字,旋转数组的最小数字,https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/,xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof,数组、二分查找,https://algo.itcharge.cn/Solutions/Offer/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2011.%20%E6%97%8B%E8%BD%AC%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%8F%E6%95%B0%E5%AD%97.md,49.5%,简单,2603 -剑指 Offer 12,Offer,剑指 Offer 12. 矩阵中的路径,矩阵中的路径,https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/,ju-zhen-zhong-de-lu-jing-lcof,数组、回溯、矩阵,https://algo.itcharge.cn/Solutions/Offer/ju-zhen-zhong-de-lu-jing-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2012.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E8%B7%AF%E5%BE%84.md,45.7%,中等,1859 -剑指 Offer 13,Offer,剑指 Offer 13. 机器人的运动范围,机器人的运动范围,https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/,ji-qi-ren-de-yun-dong-fan-wei-lcof,深度优先搜索、广度优先搜索、动态规划,https://algo.itcharge.cn/Solutions/Offer/ji-qi-ren-de-yun-dong-fan-wei-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2013.%20%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%9A%84%E8%BF%90%E5%8A%A8%E8%8C%83%E5%9B%B4.md,53.6%,中等,2542 -剑指 Offer 14- I,Offer,剑指 Offer 14- I. 剪绳子,剪绳子,https://leetcode.cn/problems/jian-sheng-zi-lcof/,jian-sheng-zi-lcof,数学、动态规划,https://algo.itcharge.cn/Solutions/Offer/jian-sheng-zi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2014-%20I.%20%E5%89%AA%E7%BB%B3%E5%AD%90.md,57.4%,中等,2032 -剑指 Offer 14- II,Offer,剑指 Offer 14- II. 剪绳子 II,剪绳子 II,https://leetcode.cn/problems/jian-sheng-zi-ii-lcof/,jian-sheng-zi-ii-lcof,数学、动态规划,https://algo.itcharge.cn/Solutions/Offer/jian-sheng-zi-ii-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2014-%20II.%20%E5%89%AA%E7%BB%B3%E5%AD%90%20II.md,31.4%,中等,779 -剑指 Offer 15,Offer,剑指 Offer 15. 二进制中1的个数,二进制中1的个数,https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/,er-jin-zhi-zhong-1de-ge-shu-lcof,位运算,https://algo.itcharge.cn/Solutions/Offer/er-jin-zhi-zhong-1de-ge-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2015.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B8%AD1%E7%9A%84%E4%B8%AA%E6%95%B0.md,75.7%,简单,1828 -剑指 Offer 16,Offer,剑指 Offer 16. 数值的整数次方,数值的整数次方,https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/,shu-zhi-de-zheng-shu-ci-fang-lcof,递归、数学,https://algo.itcharge.cn/Solutions/Offer/shu-zhi-de-zheng-shu-ci-fang-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2016.%20%E6%95%B0%E5%80%BC%E7%9A%84%E6%95%B4%E6%95%B0%E6%AC%A1%E6%96%B9.md,34.8%,中等,1283 -剑指 Offer 17,Offer,剑指 Offer 17. 打印从1到最大的n位数,打印从1到最大的n位数,https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/,da-yin-cong-1dao-zui-da-de-nwei-shu-lcof,数组、数学,https://algo.itcharge.cn/Solutions/Offer/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2017.%20%E6%89%93%E5%8D%B0%E4%BB%8E1%E5%88%B0%E6%9C%80%E5%A4%A7%E7%9A%84n%E4%BD%8D%E6%95%B0.md,77.7%,简单,1594 -剑指 Offer 18,Offer,剑指 Offer 18. 删除链表的节点,删除链表的节点,https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/,shan-chu-lian-biao-de-jie-dian-lcof,链表,https://algo.itcharge.cn/Solutions/Offer/shan-chu-lian-biao-de-jie-dian-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2018.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E8%8A%82%E7%82%B9.md,59.9%,简单,2313 -剑指 Offer 19,Offer,剑指 Offer 19. 正则表达式匹配,正则表达式匹配,https://leetcode.cn/problems/zheng-ze-biao-da-shi-pi-pei-lcof/,zheng-ze-biao-da-shi-pi-pei-lcof,递归、字符串、动态规划,https://algo.itcharge.cn/Solutions/Offer/zheng-ze-biao-da-shi-pi-pei-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2019.%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D.md,38.5%,困难,721 -剑指 Offer 20,Offer,剑指 Offer 20. 表示数值的字符串,表示数值的字符串,https://leetcode.cn/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/,biao-shi-shu-zhi-de-zi-fu-chuan-lcof,字符串,https://algo.itcharge.cn/Solutions/Offer/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2020.%20%E8%A1%A8%E7%A4%BA%E6%95%B0%E5%80%BC%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,25.1%,中等,1545 -剑指 Offer 21,Offer,剑指 Offer 21. 调整数组顺序使奇数位于偶数前面,调整数组顺序使奇数位于偶数前面,https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/,diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof,数组、双指针、排序,https://algo.itcharge.cn/Solutions/Offer/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2021.%20%E8%B0%83%E6%95%B4%E6%95%B0%E7%BB%84%E9%A1%BA%E5%BA%8F%E4%BD%BF%E5%A5%87%E6%95%B0%E4%BD%8D%E4%BA%8E%E5%81%B6%E6%95%B0%E5%89%8D%E9%9D%A2.md,65.0%,简单,2649 -剑指 Offer 22,Offer,剑指 Offer 22. 链表中倒数第k个节点,链表中倒数第k个节点,https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/,lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof,链表、双指针,https://algo.itcharge.cn/Solutions/Offer/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2022.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E5%80%92%E6%95%B0%E7%AC%ACk%E4%B8%AA%E8%8A%82%E7%82%B9.md,80.1%,简单,3606 -剑指 Offer 24,Offer,剑指 Offer 24. 反转链表,反转链表,https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/,fan-zhuan-lian-biao-lcof,递归、链表,https://algo.itcharge.cn/Solutions/Offer/fan-zhuan-lian-biao-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2024.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md,74.2%,简单,2950 -剑指 Offer 25,Offer,剑指 Offer 25. 合并两个排序的链表,合并两个排序的链表,https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/,he-bing-liang-ge-pai-xu-de-lian-biao-lcof,递归、链表,https://algo.itcharge.cn/Solutions/Offer/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2025.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%8E%92%E5%BA%8F%E7%9A%84%E9%93%BE%E8%A1%A8.md,72.2%,简单,1930 -剑指 Offer 26,Offer,剑指 Offer 26. 树的子结构,树的子结构,https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/,shu-de-zi-jie-gou-lcof,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer/shu-de-zi-jie-gou-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2026.%20%E6%A0%91%E7%9A%84%E5%AD%90%E7%BB%93%E6%9E%84.md,46.4%,中等,2091 -剑指 Offer 27,Offer,剑指 Offer 27. 二叉树的镜像,二叉树的镜像,https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/,er-cha-shu-de-jing-xiang-lcof,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer/er-cha-shu-de-jing-xiang-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2027.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%95%9C%E5%83%8F.md,79.6%,简单,2240 -剑指 Offer 28,Offer,剑指 Offer 28. 对称的二叉树,对称的二叉树,https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/,dui-cheng-de-er-cha-shu-lcof,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer/dui-cheng-de-er-cha-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2028.%20%E5%AF%B9%E7%A7%B0%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91.md,57.6%,简单,1874 -剑指 Offer 29,Offer,剑指 Offer 29. 顺时针打印矩阵,顺时针打印矩阵,https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/,shun-shi-zhen-da-yin-ju-zhen-lcof,数组、矩阵、模拟,https://algo.itcharge.cn/Solutions/Offer/shun-shi-zhen-da-yin-ju-zhen-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2029.%20%E9%A1%BA%E6%97%B6%E9%92%88%E6%89%93%E5%8D%B0%E7%9F%A9%E9%98%B5.md,43.0%,简单,2204 -剑指 Offer 30,Offer,剑指 Offer 30. 包含min函数的栈,包含min函数的栈,https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/,bao-han-minhan-shu-de-zhan-lcof,栈、设计,https://algo.itcharge.cn/Solutions/Offer/bao-han-minhan-shu-de-zhan-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2030.%20%E5%8C%85%E5%90%ABmin%E5%87%BD%E6%95%B0%E7%9A%84%E6%A0%88.md,55.3%,简单,2034 -剑指 Offer 31,Offer,剑指 Offer 31. 栈的压入、弹出序列,栈的压入、弹出序列,https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/,zhan-de-ya-ru-dan-chu-xu-lie-lcof,栈、数组、模拟,https://algo.itcharge.cn/Solutions/Offer/zhan-de-ya-ru-dan-chu-xu-lie-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2031.%20%E6%A0%88%E7%9A%84%E5%8E%8B%E5%85%A5%E3%80%81%E5%BC%B9%E5%87%BA%E5%BA%8F%E5%88%97.md,61.0%,中等,1561 -剑指 Offer 32 - I,Offer,剑指 Offer 32 - I. 从上到下打印二叉树,从上到下打印二叉树,https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/,cong-shang-dao-xia-da-yin-er-cha-shu-lcof,树、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2032%20-%20I.%20%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91.md,63.1%,中等,1719 -剑指 Offer 32 - II,Offer,剑指 Offer 32 - II. 从上到下打印二叉树 II,从上到下打印二叉树 II,https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/,cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof,树、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2032%20-%20II.%20%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91%20II.md,68.9%,简单,1907 -剑指 Offer 32 - III,Offer,剑指 Offer 32 - III. 从上到下打印二叉树 III,从上到下打印二叉树 III,https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/,cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof,树、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2032%20-%20III.%20%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91%20III.md,58.2%,中等,2124 -剑指 Offer 33,Offer,剑指 Offer 33. 二叉搜索树的后序遍历序列,二叉搜索树的后序遍历序列,https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/,er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof,栈、树、二叉搜索树、递归、二叉树、单调栈,https://algo.itcharge.cn/Solutions/Offer/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2033.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97.md,56.9%,中等,1653 -剑指 Offer 34,Offer,剑指 Offer 34. 二叉树中和为某一值的路径,二叉树中和为某一值的路径,https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/,er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof,树、深度优先搜索、回溯、二叉树,https://algo.itcharge.cn/Solutions/Offer/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2034.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E5%92%8C%E4%B8%BA%E6%9F%90%E4%B8%80%E5%80%BC%E7%9A%84%E8%B7%AF%E5%BE%84.md,59.0%,中等,1515 -剑指 Offer 35,Offer,剑指 Offer 35. 复杂链表的复制,复杂链表的复制,https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/,fu-za-lian-biao-de-fu-zhi-lcof,哈希表、链表,https://algo.itcharge.cn/Solutions/Offer/fu-za-lian-biao-de-fu-zhi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2035.%20%E5%A4%8D%E6%9D%82%E9%93%BE%E8%A1%A8%E7%9A%84%E5%A4%8D%E5%88%B6.md,71.6%,中等,1794 -剑指 Offer 36,Offer,剑指 Offer 36. 二叉搜索树与双向链表,二叉搜索树与双向链表,https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/,er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof,栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表,https://algo.itcharge.cn/Solutions/Offer/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2036.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%8E%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md,64.9%,中等,1651 -剑指 Offer 37,Offer,剑指 Offer 37. 序列化二叉树,序列化二叉树,https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/,xu-lie-hua-er-cha-shu-lcof,树、深度优先搜索、广度优先搜索、设计、字符串、二叉树,https://algo.itcharge.cn/Solutions/Offer/xu-lie-hua-er-cha-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2037.%20%E5%BA%8F%E5%88%97%E5%8C%96%E4%BA%8C%E5%8F%89%E6%A0%91.md,57.4%,困难,861 -剑指 Offer 38,Offer,剑指 Offer 38. 字符串的排列,字符串的排列,https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/,zi-fu-chuan-de-pai-lie-lcof,字符串、回溯,https://algo.itcharge.cn/Solutions/Offer/zi-fu-chuan-de-pai-lie-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2038.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%8E%92%E5%88%97.md,57.6%,中等,1637 -剑指 Offer 39,Offer,剑指 Offer 39. 数组中出现次数超过一半的数字,数组中出现次数超过一半的数字,https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/,shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof,数组、哈希表、分治、计数、排序,https://algo.itcharge.cn/Solutions/Offer/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2039.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E8%B6%85%E8%BF%87%E4%B8%80%E5%8D%8A%E7%9A%84%E6%95%B0%E5%AD%97.md,70.0%,简单,1595 -剑指 Offer 40,Offer,剑指 Offer 40. 最小的k个数,最小的k个数,https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/,zui-xiao-de-kge-shu-lcof,数组、分治、快速选择、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/Offer/zui-xiao-de-kge-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2040.%20%E6%9C%80%E5%B0%8F%E7%9A%84k%E4%B8%AA%E6%95%B0.md,57.7%,简单,2564 -剑指 Offer 41,Offer,剑指 Offer 41. 数据流中的中位数,数据流中的中位数,https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/,shu-ju-liu-zhong-de-zhong-wei-shu-lcof,设计、双指针、数据流、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/Offer/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2041.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md,58.3%,困难,883 -剑指 Offer 42,Offer,剑指 Offer 42. 连续子数组的最大和,连续子数组的最大和,https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/,lian-xu-zi-shu-zu-de-zui-da-he-lcof,数组、分治、动态规划,https://algo.itcharge.cn/Solutions/Offer/lian-xu-zi-shu-zu-de-zui-da-he-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2042.%20%E8%BF%9E%E7%BB%AD%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md,60.4%,简单,2297 -剑指 Offer 43,Offer,剑指 Offer 43. 1~n 整数中 1 出现的次数,1~n 整数中 1 出现的次数,https://leetcode.cn/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/,1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof,递归、数学、动态规划,https://algo.itcharge.cn/Solutions/Offer/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2043.%201%EF%BD%9En%20%E6%95%B4%E6%95%B0%E4%B8%AD%201%20%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0.md,50.5%,困难,784 -剑指 Offer 44,Offer,剑指 Offer 44. 数字序列中某一位的数字,数字序列中某一位的数字,https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/,shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof,数学、二分查找,https://algo.itcharge.cn/Solutions/Offer/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2044.%20%E6%95%B0%E5%AD%97%E5%BA%8F%E5%88%97%E4%B8%AD%E6%9F%90%E4%B8%80%E4%BD%8D%E7%9A%84%E6%95%B0%E5%AD%97.md,43.1%,中等,799 -剑指 Offer 45,Offer,剑指 Offer 45. 把数组排成最小的数,把数组排成最小的数,https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/,ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof,贪心、字符串、排序,https://algo.itcharge.cn/Solutions/Offer/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2045.%20%E6%8A%8A%E6%95%B0%E7%BB%84%E6%8E%92%E6%88%90%E6%9C%80%E5%B0%8F%E7%9A%84%E6%95%B0.md,55.0%,中等,1472 -剑指 Offer 46,Offer,剑指 Offer 46. 把数字翻译成字符串,把数字翻译成字符串,https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/,ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof,字符串、动态规划,https://algo.itcharge.cn/Solutions/Offer/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2046.%20%E6%8A%8A%E6%95%B0%E5%AD%97%E7%BF%BB%E8%AF%91%E6%88%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,51.3%,中等,2341 -剑指 Offer 47,Offer,剑指 Offer 47. 礼物的最大价值,礼物的最大价值,https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/,li-wu-de-zui-da-jie-zhi-lcof,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/Offer/li-wu-de-zui-da-jie-zhi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2047.%20%E7%A4%BC%E7%89%A9%E7%9A%84%E6%9C%80%E5%A4%A7%E4%BB%B7%E5%80%BC.md,69.4%,中等,1918 -剑指 Offer 48,Offer,剑指 Offer 48. 最长不含重复字符的子字符串,最长不含重复字符的子字符串,https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/,zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/Offer/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2048.%20%E6%9C%80%E9%95%BF%E4%B8%8D%E5%90%AB%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,46.1%,中等,1862 -剑指 Offer 49,Offer,剑指 Offer 49. 丑数,丑数,https://leetcode.cn/problems/chou-shu-lcof/,chou-shu-lcof,哈希表、数学、动态规划、堆(优先队列),https://algo.itcharge.cn/Solutions/Offer/chou-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2049.%20%E4%B8%91%E6%95%B0.md,64.7%,中等,879 -剑指 Offer 50,Offer,剑指 Offer 50. 第一个只出现一次的字符,第一个只出现一次的字符,https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/,di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof,队列、哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/Offer/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2050.%20%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E5%AD%97%E7%AC%A6.md,61.9%,简单,1842 -剑指 Offer 51,Offer,剑指 Offer 51. 数组中的逆序对,数组中的逆序对,https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/,shu-zu-zhong-de-ni-xu-dui-lcof,树状数组、线段树、数组、二分查找、分治、有序集合、归并排序,https://algo.itcharge.cn/Solutions/Offer/shu-zu-zhong-de-ni-xu-dui-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2051.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%80%86%E5%BA%8F%E5%AF%B9.md,49.5%,困难,1476 -剑指 Offer 52,Offer,剑指 Offer 52. 两个链表的第一个公共节点,两个链表的第一个公共节点,https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/,liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof,哈希表、链表、双指针,https://algo.itcharge.cn/Solutions/Offer/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2052.%20%E4%B8%A4%E4%B8%AA%E9%93%BE%E8%A1%A8%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%85%AC%E5%85%B1%E8%8A%82%E7%82%B9.md,65.7%,简单,1589 -剑指 Offer 53 - I,Offer,剑指 Offer 53 - I. 在排序数组中查找数字 I,在排序数组中查找数字 I,https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/,zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof,数组、二分查找,https://algo.itcharge.cn/Solutions/Offer/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2053%20-%20I.%20%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E6%95%B0%E5%AD%97%20I.md,52.8%,简单,2647 -剑指 Offer 53 - II,Offer,剑指 Offer 53 - II. 0~n-1中缺失的数字,0~n-1中缺失的数字,https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/,que-shi-de-shu-zi-lcof,位运算、数组、哈希表、数学、二分查找,https://algo.itcharge.cn/Solutions/Offer/que-shi-de-shu-zi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2053%20-%20II.%200%EF%BD%9En-1%E4%B8%AD%E7%BC%BA%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md,44.8%,简单,2541 -剑指 Offer 54,Offer,剑指 Offer 54. 二叉搜索树的第k大节点,二叉搜索树的第k大节点,https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/,er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/Offer/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2054.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E7%AC%ACk%E5%A4%A7%E8%8A%82%E7%82%B9.md,76.4%,简单,1870 -剑指 Offer 55 - I,Offer,剑指 Offer 55 - I. 二叉树的深度,二叉树的深度,https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/,er-cha-shu-de-shen-du-lcof,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer/er-cha-shu-de-shen-du-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2055%20-%20I.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%B7%B1%E5%BA%A6.md,79.5%,简单,1844 -剑指 Offer 55 - II,Offer,剑指 Offer 55 - II. 平衡二叉树,平衡二叉树,https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/,ping-heng-er-cha-shu-lcof,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer/ping-heng-er-cha-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2055%20-%20II.%20%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.md,59.7%,简单,1478 -剑指 Offer 56 - I,Offer,剑指 Offer 56 - I. 数组中数字出现的次数,数组中数字出现的次数,https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/,shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof,位运算、数组,https://algo.itcharge.cn/Solutions/Offer/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2056%20-%20I.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E6%95%B0%E5%AD%97%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0.md,68.8%,中等,1572 -剑指 Offer 56 - II,Offer,剑指 Offer 56 - II. 数组中数字出现的次数 II,数组中数字出现的次数 II,https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof/,shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof,位运算、数组,https://algo.itcharge.cn/Solutions/Offer/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2056%20-%20II.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E6%95%B0%E5%AD%97%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0%20II.md,80.7%,中等,1105 -剑指 Offer 57,Offer,剑指 Offer 57. 和为s的两个数字,和为s的两个数字,https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/,he-wei-sde-liang-ge-shu-zi-lcof,数组、双指针、二分查找,https://algo.itcharge.cn/Solutions/Offer/he-wei-sde-liang-ge-shu-zi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2057.%20%E5%92%8C%E4%B8%BAs%E7%9A%84%E4%B8%A4%E4%B8%AA%E6%95%B0%E5%AD%97.md,68.0%,简单,1472 -剑指 Offer 57 - II,Offer,剑指 Offer 57 - II. 和为s的连续正数序列,和为s的连续正数序列,https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/,he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof,数学、双指针、枚举,https://algo.itcharge.cn/Solutions/Offer/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2057%20-%20II.%20%E5%92%8C%E4%B8%BAs%E7%9A%84%E8%BF%9E%E7%BB%AD%E6%AD%A3%E6%95%B0%E5%BA%8F%E5%88%97.md,71.3%,简单,2459 -剑指 Offer 58 - I,Offer,剑指 Offer 58 - I. 翻转单词顺序,翻转单词顺序,https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/,fan-zhuan-dan-ci-shun-xu-lcof,双指针、字符串,https://algo.itcharge.cn/Solutions/Offer/fan-zhuan-dan-ci-shun-xu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2058%20-%20I.%20%E7%BF%BB%E8%BD%AC%E5%8D%95%E8%AF%8D%E9%A1%BA%E5%BA%8F.md,44.7%,简单,1661 -剑指 Offer 58 - II,Offer,剑指 Offer 58 - II. 左旋转字符串,左旋转字符串,https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/,zuo-xuan-zhuan-zi-fu-chuan-lcof,数学、双指针、字符串,https://algo.itcharge.cn/Solutions/Offer/zuo-xuan-zhuan-zi-fu-chuan-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2058%20-%20II.%20%E5%B7%A6%E6%97%8B%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md,85.8%,简单,3234 -剑指 Offer 59 - I,Offer,剑指 Offer 59 - I. 滑动窗口的最大值,滑动窗口的最大值,https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/,hua-dong-chuang-kou-de-zui-da-zhi-lcof,队列、滑动窗口、单调队列、堆(优先队列),https://algo.itcharge.cn/Solutions/Offer/hua-dong-chuang-kou-de-zui-da-zhi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2059%20-%20I.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,45.0%,困难,1731 -剑指 Offer 59 - II,Offer,剑指 Offer 59 - II. 队列的最大值,队列的最大值,https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/,dui-lie-de-zui-da-zhi-lcof,设计、队列、单调队列,https://algo.itcharge.cn/Solutions/Offer/dui-lie-de-zui-da-zhi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2059%20-%20II.%20%E9%98%9F%E5%88%97%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,48.0%,中等,1453 -剑指 Offer 60,Offer,剑指 Offer 60. n个骰子的点数,n个骰子的点数,https://leetcode.cn/problems/nge-tou-zi-de-dian-shu-lcof/,nge-tou-zi-de-dian-shu-lcof,数学、动态规划、概率与统计,https://algo.itcharge.cn/Solutions/Offer/nge-tou-zi-de-dian-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2060.%20n%E4%B8%AA%E9%AA%B0%E5%AD%90%E7%9A%84%E7%82%B9%E6%95%B0.md,57.4%,中等,1005 -剑指 Offer 61,Offer,剑指 Offer 61. 扑克牌中的顺子,扑克牌中的顺子,https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/,bu-ke-pai-zhong-de-shun-zi-lcof,数组、排序,https://algo.itcharge.cn/Solutions/Offer/bu-ke-pai-zhong-de-shun-zi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2061.%20%E6%89%91%E5%85%8B%E7%89%8C%E4%B8%AD%E7%9A%84%E9%A1%BA%E5%AD%90.md,45.4%,简单,1749 -剑指 Offer 62,Offer,剑指 Offer 62. 圆圈中最后剩下的数字,圆圈中最后剩下的数字,https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/,yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof,递归、数学,https://algo.itcharge.cn/Solutions/Offer/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2062.%20%E5%9C%86%E5%9C%88%E4%B8%AD%E6%9C%80%E5%90%8E%E5%89%A9%E4%B8%8B%E7%9A%84%E6%95%B0%E5%AD%97.md,65.5%,简单,1105 -剑指 Offer 63,Offer,剑指 Offer 63. 股票的最大利润,股票的最大利润,https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/,gu-piao-de-zui-da-li-run-lcof,数组、动态规划,https://algo.itcharge.cn/Solutions/Offer/gu-piao-de-zui-da-li-run-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2063.%20%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E5%A4%A7%E5%88%A9%E6%B6%A6.md,63.0%,中等,1627 -剑指 Offer 64,Offer,剑指 Offer 64. 求1+2+…+n,求1+2+…+n,https://leetcode.cn/problems/qiu-12n-lcof/,qiu-12n-lcof,位运算、递归、脑筋急转弯,https://algo.itcharge.cn/Solutions/Offer/qiu-12n-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2064.%20%E6%B1%821%2B2%2B%E2%80%A6%2Bn.md,85.9%,中等,1790 -剑指 Offer 65,Offer,剑指 Offer 65. 不用加减乘除做加法,不用加减乘除做加法,https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/,bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof,位运算、数学,https://algo.itcharge.cn/Solutions/Offer/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2065.%20%E4%B8%8D%E7%94%A8%E5%8A%A0%E5%87%8F%E4%B9%98%E9%99%A4%E5%81%9A%E5%8A%A0%E6%B3%95.md,59.6%,简单,847 -剑指 Offer 66,Offer,剑指 Offer 66. 构建乘积数组,构建乘积数组,https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/,gou-jian-cheng-ji-shu-zu-lcof,数组、前缀和,https://algo.itcharge.cn/Solutions/Offer/gou-jian-cheng-ji-shu-zu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2066.%20%E6%9E%84%E5%BB%BA%E4%B9%98%E7%A7%AF%E6%95%B0%E7%BB%84.md,58.6%,中等,957 -剑指 Offer 67,Offer,剑指 Offer 67. 把字符串转换成整数,把字符串转换成整数,https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/,ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof,字符串,https://algo.itcharge.cn/Solutions/Offer/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2067.%20%E6%8A%8A%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E6%8D%A2%E6%88%90%E6%95%B4%E6%95%B0.md,28.5%,中等,1021 -剑指 Offer 68 - I,Offer,剑指 Offer 68 - I. 二叉搜索树的最近公共祖先,二叉搜索树的最近公共祖先,https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/,er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/Offer/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2068%20-%20I.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md,69.3%,简单,1125 -剑指 Offer 68 - II,Offer,剑指 Offer 68 - II. 二叉树的最近公共祖先,二叉树的最近公共祖先,https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/,er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2068%20-%20II.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md,70.3%,简单,1119 -剑指 Offer II 001,Offer-II,剑指 Offer II 001. 整数除法,整数除法,https://leetcode.cn/problems/xoh6Oh/,xoh6Oh,位运算、数学,https://algo.itcharge.cn/Solutions/Offer-II/xoh6Oh/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20001.%20%E6%95%B4%E6%95%B0%E9%99%A4%E6%B3%95.md,21.1%,简单,515 -剑指 Offer II 002,Offer-II,剑指 Offer II 002. 二进制加法,二进制加法,https://leetcode.cn/problems/JFETK5/,JFETK5,位运算、数学、字符串、模拟,https://algo.itcharge.cn/Solutions/Offer-II/JFETK5/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20002.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%8A%A0%E6%B3%95.md,53.8%,简单,575 -剑指 Offer II 003,Offer-II,剑指 Offer II 003. 前 n 个数字二进制中 1 的个数,前 n 个数字二进制中 1 的个数,https://leetcode.cn/problems/w3tCBm/,w3tCBm,位运算、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/w3tCBm/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20003.%20%E5%89%8D%20n%20%E4%B8%AA%E6%95%B0%E5%AD%97%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B8%AD%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md,78.2%,简单,620 -剑指 Offer II 004,Offer-II,剑指 Offer II 004. 只出现一次的数字,只出现一次的数字,https://leetcode.cn/problems/WGki4K/,WGki4K,位运算、数组,https://algo.itcharge.cn/Solutions/Offer-II/WGki4K/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20004.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md,70.8%,中等,483 -剑指 Offer II 005,Offer-II,剑指 Offer II 005. 单词长度的最大乘积,单词长度的最大乘积,https://leetcode.cn/problems/aseY1I/,aseY1I,位运算、数组、字符串,https://algo.itcharge.cn/Solutions/Offer-II/aseY1I/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20005.%20%E5%8D%95%E8%AF%8D%E9%95%BF%E5%BA%A6%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B9%98%E7%A7%AF.md,71.2%,中等,411 -剑指 Offer II 006,Offer-II,剑指 Offer II 006. 排序数组中两个数字之和,排序数组中两个数字之和,https://leetcode.cn/problems/kLl5u1/,kLl5u1,数组、双指针、二分查找,https://algo.itcharge.cn/Solutions/Offer-II/kLl5u1/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20006.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E4%B8%A4%E4%B8%AA%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C.md,67.3%,简单,478 -剑指 Offer II 007,Offer-II,剑指 Offer II 007. 数组中和为 0 的三个数,数组中和为 0 的三个数,https://leetcode.cn/problems/1fGaJU/,1fGaJU,数组、双指针、排序,https://algo.itcharge.cn/Solutions/Offer-II/1fGaJU/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20007.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E5%92%8C%E4%B8%BA%200%20%E7%9A%84%E4%B8%89%E4%B8%AA%E6%95%B0.md,43.6%,中等,361 -剑指 Offer II 008,Offer-II,剑指 Offer II 008. 和大于等于 target 的最短子数组,和大于等于 target 的最短子数组,https://leetcode.cn/problems/2VG8Kg/,2VG8Kg,数组、二分查找、前缀和、滑动窗口,https://algo.itcharge.cn/Solutions/Offer-II/2VG8Kg/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20008.%20%E5%92%8C%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%20target%20%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%90%E6%95%B0%E7%BB%84.md,49.8%,中等,468 -剑指 Offer II 009,Offer-II,剑指 Offer II 009. 乘积小于 K 的子数组,乘积小于 K 的子数组,https://leetcode.cn/problems/ZVAVXX/,ZVAVXX,数组、滑动窗口,https://algo.itcharge.cn/Solutions/Offer-II/ZVAVXX/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20009.%20%E4%B9%98%E7%A7%AF%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,53.2%,中等,391 -剑指 Offer II 010,Offer-II,剑指 Offer II 010. 和为 k 的子数组,和为 k 的子数组,https://leetcode.cn/problems/QTMn0o/,QTMn0o,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/Offer-II/QTMn0o/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20010.%20%E5%92%8C%E4%B8%BA%20k%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,43.0%,中等,375 -剑指 Offer II 011,Offer-II,剑指 Offer II 011. 0 和 1 个数相同的子数组,0 和 1 个数相同的子数组,https://leetcode.cn/problems/A1NYOS/,A1NYOS,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/Offer-II/A1NYOS/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20011.%200%20%E5%92%8C%201%20%E4%B8%AA%E6%95%B0%E7%9B%B8%E5%90%8C%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md,54.9%,中等,345 -剑指 Offer II 012,Offer-II,剑指 Offer II 012. 左右两边子数组的和相等,左右两边子数组的和相等,https://leetcode.cn/problems/tvdfij/,tvdfij,数组、前缀和,https://algo.itcharge.cn/Solutions/Offer-II/tvdfij/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20012.%20%E5%B7%A6%E5%8F%B3%E4%B8%A4%E8%BE%B9%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E5%92%8C%E7%9B%B8%E7%AD%89.md,67.0%,简单,411 -剑指 Offer II 013,Offer-II,剑指 Offer II 013. 二维子矩阵的和,二维子矩阵的和,https://leetcode.cn/problems/O4NDxx/,O4NDxx,设计、数组、矩阵、前缀和,https://algo.itcharge.cn/Solutions/Offer-II/O4NDxx/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20013.%20%E4%BA%8C%E7%BB%B4%E5%AD%90%E7%9F%A9%E9%98%B5%E7%9A%84%E5%92%8C.md,68.9%,中等,303 -剑指 Offer II 014,Offer-II,剑指 Offer II 014. 字符串中的变位词,字符串中的变位词,https://leetcode.cn/problems/MPnaiL/,MPnaiL,哈希表、双指针、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/Offer-II/MPnaiL/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20014.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8F%98%E4%BD%8D%E8%AF%8D.md,51.5%,中等,343 -剑指 Offer II 015,Offer-II,剑指 Offer II 015. 字符串中的所有变位词,字符串中的所有变位词,https://leetcode.cn/problems/VabMRr/,VabMRr,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/Offer-II/VabMRr/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20015.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E5%8F%98%E4%BD%8D%E8%AF%8D.md,61.7%,中等,302 -剑指 Offer II 016,Offer-II,剑指 Offer II 016. 不含重复字符的最长子字符串,不含重复字符的最长子字符串,https://leetcode.cn/problems/wtcaE1/,wtcaE1,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/Offer-II/wtcaE1/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20016.%20%E4%B8%8D%E5%90%AB%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,47.6%,中等,457 -剑指 Offer II 017,Offer-II,剑指 Offer II 017. 含有所有字符的最短字符串,含有所有字符的最短字符串,https://leetcode.cn/problems/M1oyTv/,M1oyTv,哈希表、字符串、滑动窗口,https://algo.itcharge.cn/Solutions/Offer-II/M1oyTv/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20017.%20%E5%90%AB%E6%9C%89%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%97%E7%AC%A6%E4%B8%B2.md,50.9%,困难,316 -剑指 Offer II 018,Offer-II,剑指 Offer II 018. 有效的回文,有效的回文,https://leetcode.cn/problems/XltzEq/,XltzEq,双指针、字符串,https://algo.itcharge.cn/Solutions/Offer-II/XltzEq/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20018.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%9B%9E%E6%96%87.md,51.6%,简单,357 -剑指 Offer II 019,Offer-II,剑指 Offer II 019. 最多删除一个字符得到回文,最多删除一个字符得到回文,https://leetcode.cn/problems/RQku0D/,RQku0D,贪心、双指针、字符串,https://algo.itcharge.cn/Solutions/Offer-II/RQku0D/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20019.%20%E6%9C%80%E5%A4%9A%E5%88%A0%E9%99%A4%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E5%BE%97%E5%88%B0%E5%9B%9E%E6%96%87.md,45.7%,简单,343 -剑指 Offer II 020,Offer-II,剑指 Offer II 020. 回文子字符串的个数,回文子字符串的个数,https://leetcode.cn/problems/a7VOhD/,a7VOhD,字符串、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/a7VOhD/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20020.%20%E5%9B%9E%E6%96%87%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E4%B8%AA%E6%95%B0.md,71.7%,中等,313 -剑指 Offer II 021,Offer-II,剑指 Offer II 021. 删除链表的倒数第 n 个结点,删除链表的倒数第 n 个结点,https://leetcode.cn/problems/SLwz0R/,SLwz0R,链表、双指针,https://algo.itcharge.cn/Solutions/Offer-II/SLwz0R/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20021.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%AC%20n%20%E4%B8%AA%E7%BB%93%E7%82%B9.md,54.1%,中等,478 -剑指 Offer II 022,Offer-II,剑指 Offer II 022. 链表中环的入口节点,链表中环的入口节点,https://leetcode.cn/problems/c32eOV/,c32eOV,哈希表、链表、双指针,https://algo.itcharge.cn/Solutions/Offer-II/c32eOV/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20022.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%8E%AF%E7%9A%84%E5%85%A5%E5%8F%A3%E8%8A%82%E7%82%B9.md,55.8%,中等,373 -剑指 Offer II 023,Offer-II,剑指 Offer II 023. 两个链表的第一个重合节点,两个链表的第一个重合节点,https://leetcode.cn/problems/3u1WK4/,3u1WK4,哈希表、链表、双指针,https://algo.itcharge.cn/Solutions/Offer-II/3u1WK4/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20023.%20%E4%B8%A4%E4%B8%AA%E9%93%BE%E8%A1%A8%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%87%8D%E5%90%88%E8%8A%82%E7%82%B9.md,70.1%,简单,301 -剑指 Offer II 024,Offer-II,剑指 Offer II 024. 反转链表,反转链表,https://leetcode.cn/problems/UHnkqh/,UHnkqh,递归、链表,https://algo.itcharge.cn/Solutions/Offer-II/UHnkqh/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20024.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md,75.4%,简单,584 -剑指 Offer II 025,Offer-II,剑指 Offer II 025. 链表中的两数相加,链表中的两数相加,https://leetcode.cn/problems/lMSNwu/,lMSNwu,栈、链表、数学,https://algo.itcharge.cn/Solutions/Offer-II/lMSNwu/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20025.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0.md,58.3%,中等,414 -剑指 Offer II 026,Offer-II,剑指 Offer II 026. 重排链表,重排链表,https://leetcode.cn/problems/LGjMqU/,LGjMqU,栈、递归、链表、双指针,https://algo.itcharge.cn/Solutions/Offer-II/LGjMqU/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20026.%20%E9%87%8D%E6%8E%92%E9%93%BE%E8%A1%A8.md,66.5%,中等,391 -剑指 Offer II 027,Offer-II,剑指 Offer II 027. 回文链表,回文链表,https://leetcode.cn/problems/aMhZSa/,aMhZSa,栈、递归、链表、双指针,https://algo.itcharge.cn/Solutions/Offer-II/aMhZSa/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20027.%20%E5%9B%9E%E6%96%87%E9%93%BE%E8%A1%A8.md,61.1%,简单,505 -剑指 Offer II 028,Offer-II,剑指 Offer II 028. 展平多级双向链表,展平多级双向链表,https://leetcode.cn/problems/Qv1Da2/,Qv1Da2,深度优先搜索、链表、双向链表,https://algo.itcharge.cn/Solutions/Offer-II/Qv1Da2/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20028.%20%E5%B1%95%E5%B9%B3%E5%A4%9A%E7%BA%A7%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md,60.0%,中等,347 -剑指 Offer II 029,Offer-II,剑指 Offer II 029. 排序的循环链表,排序的循环链表,https://leetcode.cn/problems/4ueAj6/,4ueAj6,链表,https://algo.itcharge.cn/Solutions/Offer-II/4ueAj6/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20029.%20%E6%8E%92%E5%BA%8F%E7%9A%84%E5%BE%AA%E7%8E%AF%E9%93%BE%E8%A1%A8.md,33.3%,中等,630 -剑指 Offer II 030,Offer-II,剑指 Offer II 030. 插入、删除和随机访问都是 O(1) 的容器,插入、删除和随机访问都是 O(1) 的容器,https://leetcode.cn/problems/FortPu/,FortPu,设计、数组、哈希表、数学、随机化,https://algo.itcharge.cn/Solutions/Offer-II/FortPu/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20030.%20%E6%8F%92%E5%85%A5%E3%80%81%E5%88%A0%E9%99%A4%E5%92%8C%E9%9A%8F%E6%9C%BA%E8%AE%BF%E9%97%AE%E9%83%BD%E6%98%AF%20O%281%29%20%E7%9A%84%E5%AE%B9%E5%99%A8.md,53.8%,中等,176 -剑指 Offer II 031,Offer-II,剑指 Offer II 031. 最近最少使用缓存,最近最少使用缓存,https://leetcode.cn/problems/OrIXps/,OrIXps,设计、哈希表、链表、双向链表,https://algo.itcharge.cn/Solutions/Offer-II/OrIXps/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20031.%20%E6%9C%80%E8%BF%91%E6%9C%80%E5%B0%91%E4%BD%BF%E7%94%A8%E7%BC%93%E5%AD%98.md,55.6%,中等,266 -剑指 Offer II 032,Offer-II,剑指 Offer II 032. 有效的变位词,有效的变位词,https://leetcode.cn/problems/dKk3P7/,dKk3P7,哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/Offer-II/dKk3P7/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20032.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%8F%98%E4%BD%8D%E8%AF%8D.md,59.8%,简单,273 -剑指 Offer II 033,Offer-II,剑指 Offer II 033. 变位词组,变位词组,https://leetcode.cn/problems/sfvd7V/,sfvd7V,数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/Offer-II/sfvd7V/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20033.%20%E5%8F%98%E4%BD%8D%E8%AF%8D%E7%BB%84.md,74.7%,中等,234 -剑指 Offer II 034,Offer-II,剑指 Offer II 034. 外星语言是否排序,外星语言是否排序,https://leetcode.cn/problems/lwyVBB/,lwyVBB,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/Offer-II/lwyVBB/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20034.%20%E5%A4%96%E6%98%9F%E8%AF%AD%E8%A8%80%E6%98%AF%E5%90%A6%E6%8E%92%E5%BA%8F.md,55.7%,简单,306 -剑指 Offer II 035,Offer-II,剑指 Offer II 035. 最小时间差,最小时间差,https://leetcode.cn/problems/569nqc/,569nqc,数组、数学、字符串、排序,https://algo.itcharge.cn/Solutions/Offer-II/569nqc/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20035.%20%E6%9C%80%E5%B0%8F%E6%97%B6%E9%97%B4%E5%B7%AE.md,66.0%,中等,220 -剑指 Offer II 036,Offer-II,剑指 Offer II 036. 后缀表达式,后缀表达式,https://leetcode.cn/problems/8Zf90G/,8Zf90G,栈、数组、数学,https://algo.itcharge.cn/Solutions/Offer-II/8Zf90G/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20036.%20%E5%90%8E%E7%BC%80%E8%A1%A8%E8%BE%BE%E5%BC%8F.md,55.5%,中等,283 -剑指 Offer II 037,Offer-II,剑指 Offer II 037. 小行星碰撞,小行星碰撞,https://leetcode.cn/problems/XagZNi/,XagZNi,栈、数组、模拟,https://algo.itcharge.cn/Solutions/Offer-II/XagZNi/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20037.%20%E5%B0%8F%E8%A1%8C%E6%98%9F%E7%A2%B0%E6%92%9E.md,44.8%,中等,336 -剑指 Offer II 038,Offer-II,剑指 Offer II 038. 每日温度,每日温度,https://leetcode.cn/problems/iIQa4I/,iIQa4I,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/Offer-II/iIQa4I/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20038.%20%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.md,76.2%,中等,338 -剑指 Offer II 039,Offer-II,剑指 Offer II 039. 直方图最大矩形面积,直方图最大矩形面积,https://leetcode.cn/problems/0ynMMM/,0ynMMM,栈、数组、单调栈,https://algo.itcharge.cn/Solutions/Offer-II/0ynMMM/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20039.%20%E7%9B%B4%E6%96%B9%E5%9B%BE%E6%9C%80%E5%A4%A7%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF.md,50.7%,困难,206 -剑指 Offer II 040,Offer-II,剑指 Offer II 040. 矩阵中最大的矩形,矩阵中最大的矩形,https://leetcode.cn/problems/PLYXKQ/,PLYXKQ,栈、数组、动态规划、矩阵、单调栈,https://algo.itcharge.cn/Solutions/Offer-II/PLYXKQ/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20040.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E6%9C%80%E5%A4%A7%E7%9A%84%E7%9F%A9%E5%BD%A2.md,58.2%,困难,191 -剑指 Offer II 041,Offer-II,剑指 Offer II 041. 滑动窗口的平均值,滑动窗口的平均值,https://leetcode.cn/problems/qIsx9U/,qIsx9U,设计、队列、数组、数据流,https://algo.itcharge.cn/Solutions/Offer-II/qIsx9U/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20041.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E7%9A%84%E5%B9%B3%E5%9D%87%E5%80%BC.md,77.8%,简单,479 -剑指 Offer II 042,Offer-II,剑指 Offer II 042. 最近请求次数,最近请求次数,https://leetcode.cn/problems/H8086Q/,H8086Q,设计、队列、数据流,https://algo.itcharge.cn/Solutions/Offer-II/H8086Q/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20042.%20%E6%9C%80%E8%BF%91%E8%AF%B7%E6%B1%82%E6%AC%A1%E6%95%B0.md,82.1%,简单,218 -剑指 Offer II 043,Offer-II,剑指 Offer II 043. 往完全二叉树添加节点,往完全二叉树添加节点,https://leetcode.cn/problems/NaqhDT/,NaqhDT,树、广度优先搜索、设计、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/NaqhDT/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20043.%20%E5%BE%80%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E6%B7%BB%E5%8A%A0%E8%8A%82%E7%82%B9.md,62.4%,中等,264 -剑指 Offer II 044,Offer-II,剑指 Offer II 044. 二叉树每层的最大值,二叉树每层的最大值,https://leetcode.cn/problems/hPov7L/,hPov7L,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/hPov7L/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20044.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%AF%8F%E5%B1%82%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md,64.1%,中等,302 -剑指 Offer II 045,Offer-II,剑指 Offer II 045. 二叉树最底层最左边的值,二叉树最底层最左边的值,https://leetcode.cn/problems/LwUNpT/,LwUNpT,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/LwUNpT/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20045.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%BA%95%E5%B1%82%E6%9C%80%E5%B7%A6%E8%BE%B9%E7%9A%84%E5%80%BC.md,79.2%,中等,341 -剑指 Offer II 046,Offer-II,剑指 Offer II 046. 二叉树的右侧视图,二叉树的右侧视图,https://leetcode.cn/problems/WNC0Lk/,WNC0Lk,树、深度优先搜索、广度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/WNC0Lk/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20046.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E4%BE%A7%E8%A7%86%E5%9B%BE.md,70.6%,中等,339 -剑指 Offer II 047,Offer-II,剑指 Offer II 047. 二叉树剪枝,二叉树剪枝,https://leetcode.cn/problems/pOCWxh/,pOCWxh,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/pOCWxh/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20047.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E5%89%AA%E6%9E%9D.md,68.5%,中等,339 -剑指 Offer II 048,Offer-II,剑指 Offer II 048. 序列化与反序列化二叉树,序列化与反序列化二叉树,https://leetcode.cn/problems/h54YBf/,h54YBf,树、深度优先搜索、广度优先搜索、设计、字符串、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/h54YBf/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20048.%20%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E4%BA%8C%E5%8F%89%E6%A0%91.md,67.0%,困难,185 -剑指 Offer II 049,Offer-II,剑指 Offer II 049. 从根节点到叶节点的路径数字之和,从根节点到叶节点的路径数字之和,https://leetcode.cn/problems/3Etpl5/,3Etpl5,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/3Etpl5/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20049.%20%E4%BB%8E%E6%A0%B9%E8%8A%82%E7%82%B9%E5%88%B0%E5%8F%B6%E8%8A%82%E7%82%B9%E7%9A%84%E8%B7%AF%E5%BE%84%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C.md,73.8%,中等,291 -剑指 Offer II 050,Offer-II,剑指 Offer II 050. 向下的路径节点之和,向下的路径节点之和,https://leetcode.cn/problems/6eUYwP/,6eUYwP,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/6eUYwP/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20050.%20%E5%90%91%E4%B8%8B%E7%9A%84%E8%B7%AF%E5%BE%84%E8%8A%82%E7%82%B9%E4%B9%8B%E5%92%8C.md,51.2%,中等,220 -剑指 Offer II 051,Offer-II,剑指 Offer II 051. 节点之和最大的路径,节点之和最大的路径,https://leetcode.cn/problems/jC7MId/,jC7MId,树、深度优先搜索、动态规划、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/jC7MId/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20051.%20%E8%8A%82%E7%82%B9%E4%B9%8B%E5%92%8C%E6%9C%80%E5%A4%A7%E7%9A%84%E8%B7%AF%E5%BE%84.md,49.2%,困难,172 -剑指 Offer II 052,Offer-II,剑指 Offer II 052. 展平二叉搜索树,展平二叉搜索树,https://leetcode.cn/problems/NYBBNL/,NYBBNL,栈、树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/NYBBNL/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20052.%20%E5%B1%95%E5%B9%B3%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,73.6%,简单,275 -剑指 Offer II 053,Offer-II,剑指 Offer II 053. 二叉搜索树中的中序后继,二叉搜索树中的中序后继,https://leetcode.cn/problems/P5rCT8/,P5rCT8,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/P5rCT8/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20053.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E4%B8%AD%E5%BA%8F%E5%90%8E%E7%BB%A7.md,63.3%,中等,278 -剑指 Offer II 054,Offer-II,剑指 Offer II 054. 所有大于等于节点的值之和,所有大于等于节点的值之和,https://leetcode.cn/problems/w6cpku/,w6cpku,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/w6cpku/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20054.%20%E6%89%80%E6%9C%89%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E8%8A%82%E7%82%B9%E7%9A%84%E5%80%BC%E4%B9%8B%E5%92%8C.md,85.6%,中等,277 -剑指 Offer II 055,Offer-II,剑指 Offer II 055. 二叉搜索树迭代器,二叉搜索树迭代器,https://leetcode.cn/problems/kTOapQ/,kTOapQ,栈、树、设计、二叉搜索树、二叉树、迭代器,https://algo.itcharge.cn/Solutions/Offer-II/kTOapQ/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20055.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BF%AD%E4%BB%A3%E5%99%A8.md,85.3%,中等,199 -剑指 Offer II 056,Offer-II,剑指 Offer II 056. 二叉搜索树中两个节点之和,二叉搜索树中两个节点之和,https://leetcode.cn/problems/opLdQZ/,opLdQZ,树、深度优先搜索、广度优先搜索、二叉搜索树、哈希表、双指针、二叉树,https://algo.itcharge.cn/Solutions/Offer-II/opLdQZ/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20056.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E4%B8%A4%E4%B8%AA%E8%8A%82%E7%82%B9%E4%B9%8B%E5%92%8C.md,73.4%,简单,309 -剑指 Offer II 057,Offer-II,剑指 Offer II 057. 值和下标之差都在给定的范围内,值和下标之差都在给定的范围内,https://leetcode.cn/problems/7WqeDu/,7WqeDu,数组、桶排序、有序集合、排序、滑动窗口,https://algo.itcharge.cn/Solutions/Offer-II/7WqeDu/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20057.%20%E5%80%BC%E5%92%8C%E4%B8%8B%E6%A0%87%E4%B9%8B%E5%B7%AE%E9%83%BD%E5%9C%A8%E7%BB%99%E5%AE%9A%E7%9A%84%E8%8C%83%E5%9B%B4%E5%86%85.md,35.0%,中等,144 -剑指 Offer II 058,Offer-II,剑指 Offer II 058. 日程表,日程表,https://leetcode.cn/problems/fi9suh/,fi9suh,设计、线段树、二分查找、有序集合,https://algo.itcharge.cn/Solutions/Offer-II/fi9suh/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20058.%20%E6%97%A5%E7%A8%8B%E8%A1%A8.md,61.3%,中等,174 -剑指 Offer II 059,Offer-II,剑指 Offer II 059. 数据流的第 K 大数值,数据流的第 K 大数值,https://leetcode.cn/problems/jBjn9C/,jBjn9C,树、设计、二叉搜索树、二叉树、数据流、堆(优先队列),https://algo.itcharge.cn/Solutions/Offer-II/jBjn9C/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20059.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E6%95%B0%E5%80%BC.md,62.8%,简单,199 -剑指 Offer II 060,Offer-II,剑指 Offer II 060. 出现频率最高的 k 个数字,出现频率最高的 k 个数字,https://leetcode.cn/problems/g5c51o/,g5c51o,数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/Offer-II/g5c51o/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20060.%20%E5%87%BA%E7%8E%B0%E9%A2%91%E7%8E%87%E6%9C%80%E9%AB%98%E7%9A%84%20k%20%E4%B8%AA%E6%95%B0%E5%AD%97.md,68.8%,中等,273 -剑指 Offer II 061,Offer-II,剑指 Offer II 061. 和最小的 k 个数对,和最小的 k 个数对,https://leetcode.cn/problems/qn8gGX/,qn8gGX,数组、堆(优先队列),https://algo.itcharge.cn/Solutions/Offer-II/qn8gGX/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20061.%20%E5%92%8C%E6%9C%80%E5%B0%8F%E7%9A%84%20k%20%E4%B8%AA%E6%95%B0%E5%AF%B9.md,53.5%,中等,186 -剑指 Offer II 062,Offer-II,剑指 Offer II 062. 实现前缀树,实现前缀树,https://leetcode.cn/problems/QC3q1f/,QC3q1f,设计、字典树、哈希表、字符串,https://algo.itcharge.cn/Solutions/Offer-II/QC3q1f/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20062.%20%E5%AE%9E%E7%8E%B0%E5%89%8D%E7%BC%80%E6%A0%91.md,75.6%,中等,205 -剑指 Offer II 063,Offer-II,剑指 Offer II 063. 替换单词,替换单词,https://leetcode.cn/problems/UhWRSj/,UhWRSj,字典树、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/Offer-II/UhWRSj/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20063.%20%E6%9B%BF%E6%8D%A2%E5%8D%95%E8%AF%8D.md,71.1%,中等,259 -剑指 Offer II 064,Offer-II,剑指 Offer II 064. 神奇的字典,神奇的字典,https://leetcode.cn/problems/US1pGT/,US1pGT,设计、字典树、哈希表、字符串,https://algo.itcharge.cn/Solutions/Offer-II/US1pGT/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20064.%20%E7%A5%9E%E5%A5%87%E7%9A%84%E5%AD%97%E5%85%B8.md,61.0%,中等,174 -剑指 Offer II 065,Offer-II,剑指 Offer II 065. 最短的单词编码,最短的单词编码,https://leetcode.cn/problems/iSwD2y/,iSwD2y,字典树、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/Offer-II/iSwD2y/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20065.%20%E6%9C%80%E7%9F%AD%E7%9A%84%E5%8D%95%E8%AF%8D%E7%BC%96%E7%A0%81.md,63.3%,中等,175 -剑指 Offer II 066,Offer-II,剑指 Offer II 066. 单词之和,单词之和,https://leetcode.cn/problems/z1R5dt/,z1R5dt,设计、字典树、哈希表、字符串,https://algo.itcharge.cn/Solutions/Offer-II/z1R5dt/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20066.%20%E5%8D%95%E8%AF%8D%E4%B9%8B%E5%92%8C.md,64.4%,中等,229 -剑指 Offer II 067,Offer-II,剑指 Offer II 067. 最大的异或,最大的异或,https://leetcode.cn/problems/ms70jA/,ms70jA,位运算、字典树、数组、哈希表,https://algo.itcharge.cn/Solutions/Offer-II/ms70jA/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20067.%20%E6%9C%80%E5%A4%A7%E7%9A%84%E5%BC%82%E6%88%96.md,65.7%,中等,150 -剑指 Offer II 068,Offer-II,剑指 Offer II 068. 查找插入位置,查找插入位置,https://leetcode.cn/problems/N6YdxV/,N6YdxV,数组、二分查找,https://algo.itcharge.cn/Solutions/Offer-II/N6YdxV/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20068.%20%E6%9F%A5%E6%89%BE%E6%8F%92%E5%85%A5%E4%BD%8D%E7%BD%AE.md,49.1%,简单,275 -剑指 Offer II 069,Offer-II,剑指 Offer II 069. 山峰数组的顶部,山峰数组的顶部,https://leetcode.cn/problems/B1IidL/,B1IidL,数组、二分查找,https://algo.itcharge.cn/Solutions/Offer-II/B1IidL/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20069.%20%E5%B1%B1%E5%B3%B0%E6%95%B0%E7%BB%84%E7%9A%84%E9%A1%B6%E9%83%A8.md,70.6%,简单,610 -剑指 Offer II 070,Offer-II,剑指 Offer II 070. 排序数组中只出现一次的数字,排序数组中只出现一次的数字,https://leetcode.cn/problems/skFtm2/,skFtm2,数组、二分查找,https://algo.itcharge.cn/Solutions/Offer-II/skFtm2/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20070.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md,61.4%,中等,262 -剑指 Offer II 071,Offer-II,剑指 Offer II 071. 按权重生成随机数,按权重生成随机数,https://leetcode.cn/problems/cuyjEf/,cuyjEf,数组、数学、二分查找、前缀和、随机化,https://algo.itcharge.cn/Solutions/Offer-II/cuyjEf/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20071.%20%E6%8C%89%E6%9D%83%E9%87%8D%E7%94%9F%E6%88%90%E9%9A%8F%E6%9C%BA%E6%95%B0.md,49.8%,中等,112 -剑指 Offer II 072,Offer-II,剑指 Offer II 072. 求平方根,求平方根,https://leetcode.cn/problems/jJ0w9p/,jJ0w9p,数学、二分查找,https://algo.itcharge.cn/Solutions/Offer-II/jJ0w9p/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20072.%20%E6%B1%82%E5%B9%B3%E6%96%B9%E6%A0%B9.md,43.3%,简单,248 -剑指 Offer II 073,Offer-II,剑指 Offer II 073. 狒狒吃香蕉,狒狒吃香蕉,https://leetcode.cn/problems/nZZqjQ/,nZZqjQ,数组、二分查找,https://algo.itcharge.cn/Solutions/Offer-II/nZZqjQ/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20073.%20%E7%8B%92%E7%8B%92%E5%90%83%E9%A6%99%E8%95%89.md,53.3%,中等,189 -剑指 Offer II 074,Offer-II,剑指 Offer II 074. 合并区间,合并区间,https://leetcode.cn/problems/SsGoHC/,SsGoHC,数组、排序,https://algo.itcharge.cn/Solutions/Offer-II/SsGoHC/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20074.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md,56.6%,中等,246 -剑指 Offer II 075,Offer-II,剑指 Offer II 075. 数组相对排序,数组相对排序,https://leetcode.cn/problems/0H97ZC/,0H97ZC,数组、哈希表、计数排序、排序,https://algo.itcharge.cn/Solutions/Offer-II/0H97ZC/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20075.%20%E6%95%B0%E7%BB%84%E7%9B%B8%E5%AF%B9%E6%8E%92%E5%BA%8F.md,70.2%,简单,334 -剑指 Offer II 076,Offer-II,剑指 Offer II 076. 数组中的第 k 大的数字,数组中的第 k 大的数字,https://leetcode.cn/problems/xx4gT2/,xx4gT2,数组、分治、快速选择、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/Offer-II/xx4gT2/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20076.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%AC%20k%20%E5%A4%A7%E7%9A%84%E6%95%B0%E5%AD%97.md,67.1%,中等,302 -剑指 Offer II 077,Offer-II,剑指 Offer II 077. 链表排序,链表排序,https://leetcode.cn/problems/7WHec2/,7WHec2,链表、双指针、分治、排序、归并排序,https://algo.itcharge.cn/Solutions/Offer-II/7WHec2/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20077.%20%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F.md,62.9%,中等,364 -剑指 Offer II 078,Offer-II,剑指 Offer II 078. 合并排序链表,合并排序链表,https://leetcode.cn/problems/vvXgSW/,vvXgSW,链表、分治、堆(优先队列)、归并排序,https://algo.itcharge.cn/Solutions/Offer-II/vvXgSW/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20078.%20%E5%90%88%E5%B9%B6%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8.md,64.0%,困难,268 -剑指 Offer II 079,Offer-II,剑指 Offer II 079. 所有子集,所有子集,https://leetcode.cn/problems/TVdhkn/,TVdhkn,位运算、数组、回溯,https://algo.itcharge.cn/Solutions/Offer-II/TVdhkn/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20079.%20%E6%89%80%E6%9C%89%E5%AD%90%E9%9B%86.md,85.3%,中等,310 -剑指 Offer II 080,Offer-II,剑指 Offer II 080. 含有 k 个元素的组合,含有 k 个元素的组合,https://leetcode.cn/problems/uUsW3B/,uUsW3B,数组、回溯,https://algo.itcharge.cn/Solutions/Offer-II/uUsW3B/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20080.%20%E5%90%AB%E6%9C%89%20k%20%E4%B8%AA%E5%85%83%E7%B4%A0%E7%9A%84%E7%BB%84%E5%90%88.md,83.3%,中等,204 -剑指 Offer II 081,Offer-II,剑指 Offer II 081. 允许重复选择元素的组合,允许重复选择元素的组合,https://leetcode.cn/problems/Ygoe9J/,Ygoe9J,数组、回溯,https://algo.itcharge.cn/Solutions/Offer-II/Ygoe9J/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20081.%20%E5%85%81%E8%AE%B8%E9%87%8D%E5%A4%8D%E9%80%89%E6%8B%A9%E5%85%83%E7%B4%A0%E7%9A%84%E7%BB%84%E5%90%88.md,80.7%,中等,240 -剑指 Offer II 082,Offer-II,剑指 Offer II 082. 含有重复元素集合的组合,含有重复元素集合的组合,https://leetcode.cn/problems/4sjJUc/,4sjJUc,数组、回溯,https://algo.itcharge.cn/Solutions/Offer-II/4sjJUc/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20082.%20%E5%90%AB%E6%9C%89%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%E9%9B%86%E5%90%88%E7%9A%84%E7%BB%84%E5%90%88.md,65.9%,中等,200 -剑指 Offer II 083,Offer-II,剑指 Offer II 083. 没有重复元素集合的全排列,没有重复元素集合的全排列,https://leetcode.cn/problems/VvJkup/,VvJkup,数组、回溯,https://algo.itcharge.cn/Solutions/Offer-II/VvJkup/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20083.%20%E6%B2%A1%E6%9C%89%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%E9%9B%86%E5%90%88%E7%9A%84%E5%85%A8%E6%8E%92%E5%88%97.md,85.8%,中等,281 -剑指 Offer II 084,Offer-II,剑指 Offer II 084. 含有重复元素集合的全排列,含有重复元素集合的全排列,https://leetcode.cn/problems/7p8L0Z/,7p8L0Z,数组、回溯,https://algo.itcharge.cn/Solutions/Offer-II/7p8L0Z/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20084.%20%E5%90%AB%E6%9C%89%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%E9%9B%86%E5%90%88%E7%9A%84%E5%85%A8%E6%8E%92%E5%88%97.md,69.4%,中等,202 -剑指 Offer II 085,Offer-II,剑指 Offer II 085. 生成匹配的括号,生成匹配的括号,https://leetcode.cn/problems/IDBivT/,IDBivT,字符串、动态规划、回溯,https://algo.itcharge.cn/Solutions/Offer-II/IDBivT/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20085.%20%E7%94%9F%E6%88%90%E5%8C%B9%E9%85%8D%E7%9A%84%E6%8B%AC%E5%8F%B7.md,84.9%,中等,286 -剑指 Offer II 086,Offer-II,剑指 Offer II 086. 分割回文子字符串,分割回文子字符串,https://leetcode.cn/problems/M99OJA/,M99OJA,深度优先搜索、广度优先搜索、图、哈希表,https://algo.itcharge.cn/Solutions/Offer-II/M99OJA/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20086.%20%E5%88%86%E5%89%B2%E5%9B%9E%E6%96%87%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md,75.6%,中等,164 -剑指 Offer II 087,Offer-II,剑指 Offer II 087. 复原 IP,复原 IP,https://leetcode.cn/problems/0on3uN/,0on3uN,字符串、回溯,https://algo.itcharge.cn/Solutions/Offer-II/0on3uN/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20087.%20%E5%A4%8D%E5%8E%9F%20IP.md,63.2%,中等,216 -剑指 Offer II 088,Offer-II,剑指 Offer II 088. 爬楼梯的最少成本,爬楼梯的最少成本,https://leetcode.cn/problems/GzCJIP/,GzCJIP,数组、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/GzCJIP/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20088.%20%E7%88%AC%E6%A5%BC%E6%A2%AF%E7%9A%84%E6%9C%80%E5%B0%91%E6%88%90%E6%9C%AC.md,72.4%,简单,300 -剑指 Offer II 089,Offer-II,剑指 Offer II 089. 房屋偷盗,房屋偷盗,https://leetcode.cn/problems/Gu0c2T/,Gu0c2T,数组、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/Gu0c2T/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20089.%20%E6%88%BF%E5%B1%8B%E5%81%B7%E7%9B%97.md,60.6%,中等,205 -剑指 Offer II 090,Offer-II,剑指 Offer II 090. 环形房屋偷盗,环形房屋偷盗,https://leetcode.cn/problems/PzWKhm/,PzWKhm,数组、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/PzWKhm/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20090.%20%E7%8E%AF%E5%BD%A2%E6%88%BF%E5%B1%8B%E5%81%B7%E7%9B%97.md,48.8%,中等,157 -剑指 Offer II 091,Offer-II,剑指 Offer II 091. 粉刷房子,粉刷房子,https://leetcode.cn/problems/JEj789/,JEj789,数组、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/JEj789/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20091.%20%E7%B2%89%E5%88%B7%E6%88%BF%E5%AD%90.md,77.5%,中等,550 -剑指 Offer II 092,Offer-II,剑指 Offer II 092. 翻转字符,翻转字符,https://leetcode.cn/problems/cyJERH/,cyJERH,字符串、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/cyJERH/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20092.%20%E7%BF%BB%E8%BD%AC%E5%AD%97%E7%AC%A6.md,68.1%,中等,243 -剑指 Offer II 093,Offer-II,剑指 Offer II 093. 最长斐波那契数列,最长斐波那契数列,https://leetcode.cn/problems/Q91FMA/,Q91FMA,数组、哈希表、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/Q91FMA/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20093.%20%E6%9C%80%E9%95%BF%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97.md,58.4%,中等,137 -剑指 Offer II 094,Offer-II,剑指 Offer II 094. 最少回文分割,最少回文分割,https://leetcode.cn/problems/omKAoA/,omKAoA,字符串、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/omKAoA/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20094.%20%E6%9C%80%E5%B0%91%E5%9B%9E%E6%96%87%E5%88%86%E5%89%B2.md,57.7%,困难,108 -剑指 Offer II 095,Offer-II,剑指 Offer II 095. 最长公共子序列,最长公共子序列,https://leetcode.cn/problems/qJnOS7/,qJnOS7,字符串、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/qJnOS7/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20095.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E5%BA%8F%E5%88%97.md,65.6%,中等,272 -剑指 Offer II 096,Offer-II,剑指 Offer II 096. 字符串交织,字符串交织,https://leetcode.cn/problems/IY6buf/,IY6buf,字符串、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/IY6buf/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20096.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BA%A4%E7%BB%87.md,48.1%,中等,123 -剑指 Offer II 097,Offer-II,剑指 Offer II 097. 子序列的数目,子序列的数目,https://leetcode.cn/problems/21dk04/,21dk04,字符串、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/21dk04/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20097.%20%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E6%95%B0%E7%9B%AE.md,55.3%,困难,121 -剑指 Offer II 098,Offer-II,剑指 Offer II 098. 路径的数目,路径的数目,https://leetcode.cn/problems/2AoeFn/,2AoeFn,数学、动态规划、组合数学,https://algo.itcharge.cn/Solutions/Offer-II/2AoeFn/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20098.%20%E8%B7%AF%E5%BE%84%E7%9A%84%E6%95%B0%E7%9B%AE.md,76.2%,中等,209 -剑指 Offer II 099,Offer-II,剑指 Offer II 099. 最小路径之和,最小路径之和,https://leetcode.cn/problems/0i0mDW/,0i0mDW,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/Offer-II/0i0mDW/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20099.%20%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E4%B9%8B%E5%92%8C.md,73.4%,中等,220 -剑指 Offer II 100,Offer-II,剑指 Offer II 100. 三角形中最小路径之和,三角形中最小路径之和,https://leetcode.cn/problems/IlPe0q/,IlPe0q,数组、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/IlPe0q/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20100.%20%E4%B8%89%E8%A7%92%E5%BD%A2%E4%B8%AD%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E4%B9%8B%E5%92%8C.md,74.4%,中等,220 -剑指 Offer II 101,Offer-II,剑指 Offer II 101. 分割等和子集,分割等和子集,https://leetcode.cn/problems/NUPfPr/,NUPfPr,数学、字符串、模拟,https://algo.itcharge.cn/Solutions/Offer-II/NUPfPr/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20101.%20%E5%88%86%E5%89%B2%E7%AD%89%E5%92%8C%E5%AD%90%E9%9B%86.md,49.4%,简单,163 -剑指 Offer II 102,Offer-II,剑指 Offer II 102. 加减的目标值,加减的目标值,https://leetcode.cn/problems/YaVDxD/,YaVDxD,数组、动态规划、回溯,https://algo.itcharge.cn/Solutions/Offer-II/YaVDxD/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20102.%20%E5%8A%A0%E5%87%8F%E7%9A%84%E7%9B%AE%E6%A0%87%E5%80%BC.md,56.7%,中等,139 -剑指 Offer II 103,Offer-II,剑指 Offer II 103. 最少的硬币数目,最少的硬币数目,https://leetcode.cn/problems/gaM7Ch/,gaM7Ch,广度优先搜索、数组、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/gaM7Ch/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20103.%20%E6%9C%80%E5%B0%91%E7%9A%84%E7%A1%AC%E5%B8%81%E6%95%B0%E7%9B%AE.md,50.9%,中等,185 -剑指 Offer II 104,Offer-II,剑指 Offer II 104. 排列的数目,排列的数目,https://leetcode.cn/problems/D0F0SV/,D0F0SV,数组、动态规划,https://algo.itcharge.cn/Solutions/Offer-II/D0F0SV/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20104.%20%E6%8E%92%E5%88%97%E7%9A%84%E6%95%B0%E7%9B%AE.md,57.6%,中等,112 -剑指 Offer II 105,Offer-II,剑指 Offer II 105. 岛屿的最大面积,岛屿的最大面积,https://leetcode.cn/problems/ZL6zAn/,ZL6zAn,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/Offer-II/ZL6zAn/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20105.%20%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%9C%80%E5%A4%A7%E9%9D%A2%E7%A7%AF.md,69.7%,中等,295 -剑指 Offer II 106,Offer-II,剑指 Offer II 106. 二分图,二分图,https://leetcode.cn/problems/vEAB3K/,vEAB3K,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/Offer-II/vEAB3K/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20106.%20%E4%BA%8C%E5%88%86%E5%9B%BE.md,55.3%,中等,149 -剑指 Offer II 107,Offer-II,剑指 Offer II 107. 矩阵中的距离,矩阵中的距离,https://leetcode.cn/problems/2bCMpM/,2bCMpM,广度优先搜索、数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/Offer-II/2bCMpM/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20107.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E8%B7%9D%E7%A6%BB.md,51.1%,中等,118 -剑指 Offer II 108,Offer-II,剑指 Offer II 108. 单词演变,单词演变,https://leetcode.cn/problems/om3reC/,om3reC,广度优先搜索、哈希表、字符串,https://algo.itcharge.cn/Solutions/Offer-II/om3reC/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20108.%20%E5%8D%95%E8%AF%8D%E6%BC%94%E5%8F%98.md,59.5%,困难,87 -剑指 Offer II 109,Offer-II,剑指 Offer II 109. 开密码锁,开密码锁,https://leetcode.cn/problems/zlDJc7/,zlDJc7,广度优先搜索、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/Offer-II/zlDJc7/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20109.%20%E5%BC%80%E5%AF%86%E7%A0%81%E9%94%81.md,57.4%,中等,125 -剑指 Offer II 110,Offer-II,剑指 Offer II 110. 所有路径,所有路径,https://leetcode.cn/problems/bP4bmD/,bP4bmD,深度优先搜索、广度优先搜索、图、回溯,https://algo.itcharge.cn/Solutions/Offer-II/bP4bmD/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20110.%20%E6%89%80%E6%9C%89%E8%B7%AF%E5%BE%84.md,81.0%,中等,210 -剑指 Offer II 111,Offer-II,剑指 Offer II 111. 计算除法,计算除法,https://leetcode.cn/problems/vlzXQL/,vlzXQL,深度优先搜索、广度优先搜索、并查集、图、数组、最短路,https://algo.itcharge.cn/Solutions/Offer-II/vlzXQL/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20111.%20%E8%AE%A1%E7%AE%97%E9%99%A4%E6%B3%95.md,64.9%,中等,115 -剑指 Offer II 112,Offer-II,剑指 Offer II 112. 最长递增路径,最长递增路径,https://leetcode.cn/problems/fpTFWP/,fpTFWP,深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/Offer-II/fpTFWP/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20112.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E8%B7%AF%E5%BE%84.md,57.9%,困难,130 -剑指 Offer II 113,Offer-II,剑指 Offer II 113. 课程顺序,课程顺序,https://leetcode.cn/problems/QA2IGt/,QA2IGt,深度优先搜索、广度优先搜索、图、拓扑排序,https://algo.itcharge.cn/Solutions/Offer-II/QA2IGt/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20113.%20%E8%AF%BE%E7%A8%8B%E9%A1%BA%E5%BA%8F.md,56.7%,中等,150 -剑指 Offer II 114,Offer-II,剑指 Offer II 114. 外星文字典,外星文字典,https://leetcode.cn/problems/Jf1JuT/,Jf1JuT,深度优先搜索、广度优先搜索、图、拓扑排序、数组、字符串,https://algo.itcharge.cn/Solutions/Offer-II/Jf1JuT/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20114.%20%E5%A4%96%E6%98%9F%E6%96%87%E5%AD%97%E5%85%B8.md,51.8%,困难,215 -剑指 Offer II 115,Offer-II,剑指 Offer II 115. 重建序列,重建序列,https://leetcode.cn/problems/ur2n8P/,ur2n8P,图、拓扑排序、数组,https://algo.itcharge.cn/Solutions/Offer-II/ur2n8P/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20115.%20%E9%87%8D%E5%BB%BA%E5%BA%8F%E5%88%97.md,51.1%,中等,280 -剑指 Offer II 116,Offer-II,剑指 Offer II 116. 省份数量,省份数量,https://leetcode.cn/problems/bLyHh0/,bLyHh0,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/Offer-II/bLyHh0/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20116.%20%E7%9C%81%E4%BB%BD%E6%95%B0%E9%87%8F.md,67.4%,中等,213 -剑指 Offer II 117,Offer-II,剑指 Offer II 117. 相似的字符串,相似的字符串,https://leetcode.cn/problems/H6lPxb/,H6lPxb,深度优先搜索、广度优先搜索、并查集、数组、字符串,https://algo.itcharge.cn/Solutions/Offer-II/H6lPxb/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20117.%20%E7%9B%B8%E4%BC%BC%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md,61.9%,困难,96 -剑指 Offer II 118,Offer-II,剑指 Offer II 118. 多余的边,多余的边,https://leetcode.cn/problems/7LpjUW/,7LpjUW,深度优先搜索、广度优先搜索、并查集、图,https://algo.itcharge.cn/Solutions/Offer-II/7LpjUW/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20118.%20%E5%A4%9A%E4%BD%99%E7%9A%84%E8%BE%B9.md,69.4%,中等,126 -剑指 Offer II 119,Offer-II,剑指 Offer II 119. 最长连续序列,最长连续序列,https://leetcode.cn/problems/WhsWhI/,WhsWhI,并查集、数组、哈希表,https://algo.itcharge.cn/Solutions/Offer-II/WhsWhI/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20119.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md,49.2%,中等,228 -面试题 01.01,Interviews,面试题 01.01. 判定字符是否唯一,判定字符是否唯一,https://leetcode.cn/problems/is-unique-lcci/,is-unique-lcci,位运算、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/Interviews/is-unique-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2001.01.%20%E5%88%A4%E5%AE%9A%E5%AD%97%E7%AC%A6%E6%98%AF%E5%90%A6%E5%94%AF%E4%B8%80.md,71.0%,简单,2189 -面试题 01.02,Interviews,面试题 01.02. 判定是否互为字符重排,判定是否互为字符重排,https://leetcode.cn/problems/check-permutation-lcci/,check-permutation-lcci,哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/Interviews/check-permutation-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2001.02.%20%E5%88%A4%E5%AE%9A%E6%98%AF%E5%90%A6%E4%BA%92%E4%B8%BA%E5%AD%97%E7%AC%A6%E9%87%8D%E6%8E%92.md,65.7%,简单,1868 -面试题 01.03,Interviews,面试题 01.03. URL化,URL化,https://leetcode.cn/problems/string-to-url-lcci/,string-to-url-lcci,字符串,https://algo.itcharge.cn/Solutions/Interviews/string-to-url-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2001.03.%20URL%E5%8C%96.md,57.4%,简单,744 -面试题 01.04,Interviews,面试题 01.04. 回文排列,回文排列,https://leetcode.cn/problems/palindrome-permutation-lcci/,palindrome-permutation-lcci,位运算、哈希表、字符串,https://algo.itcharge.cn/Solutions/Interviews/palindrome-permutation-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2001.04.%20%E5%9B%9E%E6%96%87%E6%8E%92%E5%88%97.md,53.7%,简单,1144 -面试题 01.05,Interviews,面试题 01.05. 一次编辑,一次编辑,https://leetcode.cn/problems/one-away-lcci/,one-away-lcci,双指针、字符串,https://algo.itcharge.cn/Solutions/Interviews/one-away-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2001.05.%20%E4%B8%80%E6%AC%A1%E7%BC%96%E8%BE%91.md,35.2%,中等,1339 -面试题 01.06,Interviews,面试题 01.06. 字符串压缩,字符串压缩,https://leetcode.cn/problems/compress-string-lcci/,compress-string-lcci,双指针、字符串,https://algo.itcharge.cn/Solutions/Interviews/compress-string-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2001.06.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8E%8B%E7%BC%A9.md,46.2%,简单,1464 -面试题 01.07,Interviews,面试题 01.07. 旋转矩阵,旋转矩阵,https://leetcode.cn/problems/rotate-matrix-lcci/,rotate-matrix-lcci,数组、数学、矩阵,https://algo.itcharge.cn/Solutions/Interviews/rotate-matrix-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2001.07.%20%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5.md,73.2%,中等,1224 -面试题 01.08,Interviews,面试题 01.08. 零矩阵,零矩阵,https://leetcode.cn/problems/zero-matrix-lcci/,zero-matrix-lcci,数组、哈希表、矩阵,https://algo.itcharge.cn/Solutions/Interviews/zero-matrix-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2001.08.%20%E9%9B%B6%E7%9F%A9%E9%98%B5.md,64.4%,中等,997 -面试题 01.09,Interviews,面试题 01.09. 字符串轮转,字符串轮转,https://leetcode.cn/problems/string-rotation-lcci/,string-rotation-lcci,字符串、字符串匹配,https://algo.itcharge.cn/Solutions/Interviews/string-rotation-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2001.09.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AE%E8%BD%AC.md,54.2%,简单,852 -面试题 02.01,Interviews,面试题 02.01. 移除重复节点,移除重复节点,https://leetcode.cn/problems/remove-duplicate-node-lcci/,remove-duplicate-node-lcci,哈希表、链表、双指针,https://algo.itcharge.cn/Solutions/Interviews/remove-duplicate-node-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.01.%20%E7%A7%BB%E9%99%A4%E9%87%8D%E5%A4%8D%E8%8A%82%E7%82%B9.md,66.8%,简单,880 -面试题 02.02,Interviews,面试题 02.02. 返回倒数第 k 个节点,返回倒数第 k 个节点,https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/,kth-node-from-end-of-list-lcci,链表、双指针,https://algo.itcharge.cn/Solutions/Interviews/kth-node-from-end-of-list-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.02.%20%E8%BF%94%E5%9B%9E%E5%80%92%E6%95%B0%E7%AC%AC%20k%20%E4%B8%AA%E8%8A%82%E7%82%B9.md,78.1%,简单,1223 -面试题 02.03,Interviews,面试题 02.03. 删除中间节点,删除中间节点,https://leetcode.cn/problems/delete-middle-node-lcci/,delete-middle-node-lcci,链表,https://algo.itcharge.cn/Solutions/Interviews/delete-middle-node-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.03.%20%E5%88%A0%E9%99%A4%E4%B8%AD%E9%97%B4%E8%8A%82%E7%82%B9.md,86.0%,简单,861 -面试题 02.04,Interviews,面试题 02.04. 分割链表,分割链表,https://leetcode.cn/problems/partition-list-lcci/,partition-list-lcci,链表、双指针,https://algo.itcharge.cn/Solutions/Interviews/partition-list-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.04.%20%E5%88%86%E5%89%B2%E9%93%BE%E8%A1%A8.md,61.1%,中等,567 -面试题 02.05,Interviews,面试题 02.05. 链表求和,链表求和,https://leetcode.cn/problems/sum-lists-lcci/,sum-lists-lcci,递归、链表、数学,https://algo.itcharge.cn/Solutions/Interviews/sum-lists-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.05.%20%E9%93%BE%E8%A1%A8%E6%B1%82%E5%92%8C.md,47.0%,中等,758 -面试题 02.06,Interviews,面试题 02.06. 回文链表,回文链表,https://leetcode.cn/problems/palindrome-linked-list-lcci/,palindrome-linked-list-lcci,栈、递归、链表、双指针,https://algo.itcharge.cn/Solutions/Interviews/palindrome-linked-list-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.06.%20%E5%9B%9E%E6%96%87%E9%93%BE%E8%A1%A8.md,48.8%,简单,686 -面试题 02.07,Interviews,面试题 02.07. 链表相交,链表相交,https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/,intersection-of-two-linked-lists-lcci,哈希表、链表、双指针,https://algo.itcharge.cn/Solutions/Interviews/intersection-of-two-linked-lists-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.07.%20%E9%93%BE%E8%A1%A8%E7%9B%B8%E4%BA%A4.md,66.3%,简单,1137 -面试题 02.08,Interviews,面试题 02.08. 环路检测,环路检测,https://leetcode.cn/problems/linked-list-cycle-lcci/,linked-list-cycle-lcci,哈希表、链表、双指针,https://algo.itcharge.cn/Solutions/Interviews/linked-list-cycle-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.08.%20%E7%8E%AF%E8%B7%AF%E6%A3%80%E6%B5%8B.md,55.1%,中等,408 -面试题 03.01,Interviews,面试题 03.01. 三合一,三合一,https://leetcode.cn/problems/three-in-one-lcci/,three-in-one-lcci,栈、设计、数组,https://algo.itcharge.cn/Solutions/Interviews/three-in-one-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2003.01.%20%E4%B8%89%E5%90%88%E4%B8%80.md,53.6%,简单,286 -面试题 03.02,Interviews,面试题 03.02. 栈的最小值,栈的最小值,https://leetcode.cn/problems/min-stack-lcci/,min-stack-lcci,栈、设计,https://algo.itcharge.cn/Solutions/Interviews/min-stack-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2003.02.%20%E6%A0%88%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md,62.1%,简单,414 -面试题 03.03,Interviews,面试题 03.03. 堆盘子,堆盘子,https://leetcode.cn/problems/stack-of-plates-lcci/,stack-of-plates-lcci,栈、设计、链表,https://algo.itcharge.cn/Solutions/Interviews/stack-of-plates-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2003.03.%20%E5%A0%86%E7%9B%98%E5%AD%90.md,38.5%,中等,210 -面试题 03.04,Interviews,面试题 03.04. 化栈为队,化栈为队,https://leetcode.cn/problems/implement-queue-using-stacks-lcci/,implement-queue-using-stacks-lcci,栈、设计、队列,https://algo.itcharge.cn/Solutions/Interviews/implement-queue-using-stacks-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2003.04.%20%E5%8C%96%E6%A0%88%E4%B8%BA%E9%98%9F.md,71.8%,简单,441 -面试题 03.05,Interviews,面试题 03.05. 栈排序,栈排序,https://leetcode.cn/problems/sort-of-stacks-lcci/,sort-of-stacks-lcci,栈、设计、单调栈,https://algo.itcharge.cn/Solutions/Interviews/sort-of-stacks-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2003.05.%20%E6%A0%88%E6%8E%92%E5%BA%8F.md,53.6%,中等,346 -面试题 03.06,Interviews,面试题 03.06. 动物收容所,动物收容所,https://leetcode.cn/problems/animal-shelter-lcci/,animal-shelter-lcci,设计、队列,https://algo.itcharge.cn/Solutions/Interviews/animal-shelter-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2003.06.%20%E5%8A%A8%E7%89%A9%E6%94%B6%E5%AE%B9%E6%89%80.md,58.3%,简单,259 -面试题 04.01,Interviews,面试题 04.01. 节点间通路,节点间通路,https://leetcode.cn/problems/route-between-nodes-lcci/,route-between-nodes-lcci,深度优先搜索、广度优先搜索、图,https://algo.itcharge.cn/Solutions/Interviews/route-between-nodes-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.01.%20%E8%8A%82%E7%82%B9%E9%97%B4%E9%80%9A%E8%B7%AF.md,53.4%,中等,385 -面试题 04.02,Interviews,面试题 04.02. 最小高度树,最小高度树,https://leetcode.cn/problems/minimum-height-tree-lcci/,minimum-height-tree-lcci,树、二叉搜索树、数组、分治、二叉树,https://algo.itcharge.cn/Solutions/Interviews/minimum-height-tree-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.02.%20%E6%9C%80%E5%B0%8F%E9%AB%98%E5%BA%A6%E6%A0%91.md,78.9%,简单,562 -面试题 04.03,Interviews,面试题 04.03. 特定深度节点链表,特定深度节点链表,https://leetcode.cn/problems/list-of-depth-lcci/,list-of-depth-lcci,树、广度优先搜索、链表、二叉树,https://algo.itcharge.cn/Solutions/Interviews/list-of-depth-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.03.%20%E7%89%B9%E5%AE%9A%E6%B7%B1%E5%BA%A6%E8%8A%82%E7%82%B9%E9%93%BE%E8%A1%A8.md,80.7%,中等,717 -面试题 04.04,Interviews,面试题 04.04. 检查平衡性,检查平衡性,https://leetcode.cn/problems/check-balance-lcci/,check-balance-lcci,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Interviews/check-balance-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.04.%20%E6%A3%80%E6%9F%A5%E5%B9%B3%E8%A1%A1%E6%80%A7.md,59.8%,简单,470 -面试题 04.05,Interviews,面试题 04.05. 合法二叉搜索树,合法二叉搜索树,https://leetcode.cn/problems/legal-binary-search-tree-lcci/,legal-binary-search-tree-lcci,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/Interviews/legal-binary-search-tree-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.05.%20%E5%90%88%E6%B3%95%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md,35.7%,中等,445 -面试题 04.06,Interviews,面试题 04.06. 后继者,后继者,https://leetcode.cn/problems/successor-lcci/,successor-lcci,树、深度优先搜索、二叉搜索树、二叉树,https://algo.itcharge.cn/Solutions/Interviews/successor-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.06.%20%E5%90%8E%E7%BB%A7%E8%80%85.md,62.6%,中等,668 -面试题 04.08,Interviews,面试题 04.08. 首个共同祖先,首个共同祖先,https://leetcode.cn/problems/first-common-ancestor-lcci/,first-common-ancestor-lcci,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Interviews/first-common-ancestor-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.08.%20%E9%A6%96%E4%B8%AA%E5%85%B1%E5%90%8C%E7%A5%96%E5%85%88.md,71.6%,中等,272 -面试题 04.09,Interviews,面试题 04.09. 二叉搜索树序列,二叉搜索树序列,https://leetcode.cn/problems/bst-sequences-lcci/,bst-sequences-lcci,树、二叉搜索树、回溯、二叉树,https://algo.itcharge.cn/Solutions/Interviews/bst-sequences-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.09.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E5%BA%8F%E5%88%97.md,48.8%,困难,161 -面试题 04.10,Interviews,面试题 04.10. 检查子树,检查子树,https://leetcode.cn/problems/check-subtree-lcci/,check-subtree-lcci,树、深度优先搜索、二叉树、字符串匹配、哈希函数,https://algo.itcharge.cn/Solutions/Interviews/check-subtree-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.10.%20%E6%A3%80%E6%9F%A5%E5%AD%90%E6%A0%91.md,67.5%,中等,384 -面试题 04.12,Interviews,面试题 04.12. 求和路径,求和路径,https://leetcode.cn/problems/paths-with-sum-lcci/,paths-with-sum-lcci,树、深度优先搜索、二叉树,https://algo.itcharge.cn/Solutions/Interviews/paths-with-sum-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.12.%20%E6%B1%82%E5%92%8C%E8%B7%AF%E5%BE%84.md,49.0%,中等,353 -面试题 05.01,Interviews,面试题 05.01. 插入,插入,https://leetcode.cn/problems/insert-into-bits-lcci/,insert-into-bits-lcci,位运算,https://algo.itcharge.cn/Solutions/Interviews/insert-into-bits-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2005.01.%20%E6%8F%92%E5%85%A5.md,51.4%,简单,302 -面试题 05.02,Interviews,面试题 05.02. 二进制数转字符串,二进制数转字符串,https://leetcode.cn/problems/binary-number-to-string-lcci/,binary-number-to-string-lcci,位运算、数学、字符串,https://algo.itcharge.cn/Solutions/Interviews/binary-number-to-string-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2005.02.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%95%B0%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md,76.8%,中等,425 -面试题 05.03,Interviews,面试题 05.03. 翻转数位,翻转数位,https://leetcode.cn/problems/reverse-bits-lcci/,reverse-bits-lcci,位运算、动态规划,https://algo.itcharge.cn/Solutions/Interviews/reverse-bits-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2005.03.%20%E7%BF%BB%E8%BD%AC%E6%95%B0%E4%BD%8D.md,37.6%,简单,358 -面试题 05.04,Interviews,面试题 05.04. 下一个数,下一个数,https://leetcode.cn/problems/closed-number-lcci/,closed-number-lcci,位运算,https://algo.itcharge.cn/Solutions/Interviews/closed-number-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2005.04.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%95%B0.md,35.6%,中等,198 -面试题 05.06,Interviews,面试题 05.06. 整数转换,整数转换,https://leetcode.cn/problems/convert-integer-lcci/,convert-integer-lcci,位运算,https://algo.itcharge.cn/Solutions/Interviews/convert-integer-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2005.06.%20%E6%95%B4%E6%95%B0%E8%BD%AC%E6%8D%A2.md,51.6%,简单,334 -面试题 05.07,Interviews,面试题 05.07. 配对交换,配对交换,https://leetcode.cn/problems/exchange-lcci/,exchange-lcci,位运算,https://algo.itcharge.cn/Solutions/Interviews/exchange-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2005.07.%20%E9%85%8D%E5%AF%B9%E4%BA%A4%E6%8D%A2.md,71.0%,简单,294 -面试题 05.08,Interviews,面试题 05.08. 绘制直线,绘制直线,https://leetcode.cn/problems/draw-line-lcci/,draw-line-lcci,位运算、数组、数学,https://algo.itcharge.cn/Solutions/Interviews/draw-line-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2005.08.%20%E7%BB%98%E5%88%B6%E7%9B%B4%E7%BA%BF.md,53.7%,中等,134 -面试题 08.01,Interviews,面试题 08.01. 三步问题,三步问题,https://leetcode.cn/problems/three-steps-problem-lcci/,three-steps-problem-lcci,记忆化搜索、数学、动态规划,https://algo.itcharge.cn/Solutions/Interviews/three-steps-problem-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.01.%20%E4%B8%89%E6%AD%A5%E9%97%AE%E9%A2%98.md,36.7%,简单,656 -面试题 08.02,Interviews,面试题 08.02. 迷路的机器人,迷路的机器人,https://leetcode.cn/problems/robot-in-a-grid-lcci/,robot-in-a-grid-lcci,数组、动态规划、回溯、矩阵,https://algo.itcharge.cn/Solutions/Interviews/robot-in-a-grid-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.02.%20%E8%BF%B7%E8%B7%AF%E7%9A%84%E6%9C%BA%E5%99%A8%E4%BA%BA.md,36.2%,中等,308 -面试题 08.03,Interviews,面试题 08.03. 魔术索引,魔术索引,https://leetcode.cn/problems/magic-index-lcci/,magic-index-lcci,数组、二分查找,https://algo.itcharge.cn/Solutions/Interviews/magic-index-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.03.%20%E9%AD%94%E6%9C%AF%E7%B4%A2%E5%BC%95.md,67.4%,简单,490 -面试题 08.04,Interviews,面试题 08.04. 幂集,幂集,https://leetcode.cn/problems/power-set-lcci/,power-set-lcci,位运算、数组、回溯,https://algo.itcharge.cn/Solutions/Interviews/power-set-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.04.%20%E5%B9%82%E9%9B%86.md,82.1%,中等,459 -面试题 08.05,Interviews,面试题 08.05. 递归乘法,递归乘法,https://leetcode.cn/problems/recursive-mulitply-lcci/,recursive-mulitply-lcci,位运算、递归、数学,https://algo.itcharge.cn/Solutions/Interviews/recursive-mulitply-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.05.%20%E9%80%92%E5%BD%92%E4%B9%98%E6%B3%95.md,65.6%,中等,752 -面试题 08.06,Interviews,面试题 08.06. 汉诺塔问题,汉诺塔问题,https://leetcode.cn/problems/hanota-lcci/,hanota-lcci,递归、数组,https://algo.itcharge.cn/Solutions/Interviews/hanota-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.06.%20%E6%B1%89%E8%AF%BA%E5%A1%94%E9%97%AE%E9%A2%98.md,64.8%,简单,418 -面试题 08.07,Interviews,面试题 08.07. 无重复字符串的排列组合,无重复字符串的排列组合,https://leetcode.cn/problems/permutation-i-lcci/,permutation-i-lcci,字符串、回溯,https://algo.itcharge.cn/Solutions/Interviews/permutation-i-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.07.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%8E%92%E5%88%97%E7%BB%84%E5%90%88.md,81.0%,中等,464 -面试题 08.08,Interviews,面试题 08.08. 有重复字符串的排列组合,有重复字符串的排列组合,https://leetcode.cn/problems/permutation-ii-lcci/,permutation-ii-lcci,字符串、回溯,https://algo.itcharge.cn/Solutions/Interviews/permutation-ii-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.08.%20%E6%9C%89%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%8E%92%E5%88%97%E7%BB%84%E5%90%88.md,69.8%,中等,370 -面试题 08.09,Interviews,面试题 08.09. 括号,括号,https://leetcode.cn/problems/bracket-lcci/,bracket-lcci,字符串、动态规划、回溯,https://algo.itcharge.cn/Solutions/Interviews/bracket-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.09.%20%E6%8B%AC%E5%8F%B7.md,82.1%,中等,497 -面试题 08.10,Interviews,面试题 08.10. 颜色填充,颜色填充,https://leetcode.cn/problems/color-fill-lcci/,color-fill-lcci,深度优先搜索、广度优先搜索、数组、矩阵,https://algo.itcharge.cn/Solutions/Interviews/color-fill-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.10.%20%E9%A2%9C%E8%89%B2%E5%A1%AB%E5%85%85.md,55.7%,简单,335 -面试题 08.11,Interviews,面试题 08.11. 硬币,硬币,https://leetcode.cn/problems/coin-lcci/,coin-lcci,数组、数学、动态规划,https://algo.itcharge.cn/Solutions/Interviews/coin-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.11.%20%E7%A1%AC%E5%B8%81.md,49.7%,中等,376 -面试题 08.12,Interviews,面试题 08.12. 八皇后,八皇后,https://leetcode.cn/problems/eight-queens-lcci/,eight-queens-lcci,数组、回溯,https://algo.itcharge.cn/Solutions/Interviews/eight-queens-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.12.%20%E5%85%AB%E7%9A%87%E5%90%8E.md,76.4%,困难,419 -面试题 08.13,Interviews,面试题 08.13. 堆箱子,堆箱子,https://leetcode.cn/problems/pile-box-lcci/,pile-box-lcci,数组、动态规划、排序,https://algo.itcharge.cn/Solutions/Interviews/pile-box-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.13.%20%E5%A0%86%E7%AE%B1%E5%AD%90.md,51.3%,困难,133 -面试题 08.14,Interviews,面试题 08.14. 布尔运算,布尔运算,https://leetcode.cn/problems/boolean-evaluation-lcci/,boolean-evaluation-lcci,记忆化搜索、字符串、动态规划,https://algo.itcharge.cn/Solutions/Interviews/boolean-evaluation-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.14.%20%E5%B8%83%E5%B0%94%E8%BF%90%E7%AE%97.md,52.4%,中等,115 -面试题 10.01,Interviews,面试题 10.01. 合并排序的数组,合并排序的数组,https://leetcode.cn/problems/sorted-merge-lcci/,sorted-merge-lcci,数组、双指针、排序,https://algo.itcharge.cn/Solutions/Interviews/sorted-merge-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2010.01.%20%E5%90%88%E5%B9%B6%E6%8E%92%E5%BA%8F%E7%9A%84%E6%95%B0%E7%BB%84.md,56.1%,简单,2537 -面试题 10.02,Interviews,面试题 10.02. 变位词组,变位词组,https://leetcode.cn/problems/group-anagrams-lcci/,group-anagrams-lcci,数组、哈希表、字符串、排序,https://algo.itcharge.cn/Solutions/Interviews/group-anagrams-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2010.02.%20%E5%8F%98%E4%BD%8D%E8%AF%8D%E7%BB%84.md,74.3%,中等,480 -面试题 10.03,Interviews,面试题 10.03. 搜索旋转数组,搜索旋转数组,https://leetcode.cn/problems/search-rotate-array-lcci/,search-rotate-array-lcci,数组、二分查找,https://algo.itcharge.cn/Solutions/Interviews/search-rotate-array-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2010.03.%20%E6%90%9C%E7%B4%A2%E6%97%8B%E8%BD%AC%E6%95%B0%E7%BB%84.md,38.5%,中等,301 -面试题 10.05,Interviews,面试题 10.05. 稀疏数组搜索,稀疏数组搜索,https://leetcode.cn/problems/sparse-array-search-lcci/,sparse-array-search-lcci,数组、字符串、二分查找,https://algo.itcharge.cn/Solutions/Interviews/sparse-array-search-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2010.05.%20%E7%A8%80%E7%96%8F%E6%95%B0%E7%BB%84%E6%90%9C%E7%B4%A2.md,56.9%,简单,365 -面试题 10.09,Interviews,面试题 10.09. 排序矩阵查找,排序矩阵查找,https://leetcode.cn/problems/sorted-matrix-search-lcci/,sorted-matrix-search-lcci,数组、二分查找、分治、矩阵,https://algo.itcharge.cn/Solutions/Interviews/sorted-matrix-search-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2010.09.%20%E6%8E%92%E5%BA%8F%E7%9F%A9%E9%98%B5%E6%9F%A5%E6%89%BE.md,44.6%,中等,229 -面试题 10.10,Interviews,面试题 10.10. 数字流的秩,数字流的秩,https://leetcode.cn/problems/rank-from-stream-lcci/,rank-from-stream-lcci,设计、树状数组、二分查找、数据流,https://algo.itcharge.cn/Solutions/Interviews/rank-from-stream-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2010.10.%20%E6%95%B0%E5%AD%97%E6%B5%81%E7%9A%84%E7%A7%A9.md,62.1%,中等,148 -面试题 10.11,Interviews,面试题 10.11. 峰与谷,峰与谷,https://leetcode.cn/problems/peaks-and-valleys-lcci/,peaks-and-valleys-lcci,贪心、数组、排序,https://algo.itcharge.cn/Solutions/Interviews/peaks-and-valleys-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2010.11.%20%E5%B3%B0%E4%B8%8E%E8%B0%B7.md,65.9%,中等,169 -面试题 16.01,Interviews,面试题 16.01. 交换数字,交换数字,https://leetcode.cn/problems/swap-numbers-lcci/,swap-numbers-lcci,位运算、数学,https://algo.itcharge.cn/Solutions/Interviews/swap-numbers-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.01.%20%E4%BA%A4%E6%8D%A2%E6%95%B0%E5%AD%97.md,81.4%,中等,556 -面试题 16.02,Interviews,面试题 16.02. 单词频率,单词频率,https://leetcode.cn/problems/words-frequency-lcci/,words-frequency-lcci,设计、字典树、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/Interviews/words-frequency-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.02.%20%E5%8D%95%E8%AF%8D%E9%A2%91%E7%8E%87.md,76.9%,中等,273 -面试题 16.03,Interviews,面试题 16.03. 交点,交点,https://leetcode.cn/problems/intersection-lcci/,intersection-lcci,几何、数学,https://algo.itcharge.cn/Solutions/Interviews/intersection-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.03.%20%E4%BA%A4%E7%82%B9.md,43.9%,困难,253 -面试题 16.04,Interviews,面试题 16.04. 井字游戏,井字游戏,https://leetcode.cn/problems/tic-tac-toe-lcci/,tic-tac-toe-lcci,数组、计数、矩阵,https://algo.itcharge.cn/Solutions/Interviews/tic-tac-toe-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.04.%20%E4%BA%95%E5%AD%97%E6%B8%B8%E6%88%8F.md,46.9%,中等,219 -面试题 16.05,Interviews,面试题 16.05. 阶乘尾数,阶乘尾数,https://leetcode.cn/problems/factorial-zeros-lcci/,factorial-zeros-lcci,数学,https://algo.itcharge.cn/Solutions/Interviews/factorial-zeros-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.05.%20%E9%98%B6%E4%B9%98%E5%B0%BE%E6%95%B0.md,43.8%,简单,177 -面试题 16.06,Interviews,面试题 16.06. 最小差,最小差,https://leetcode.cn/problems/smallest-difference-lcci/,smallest-difference-lcci,数组、双指针、二分查找、排序,https://algo.itcharge.cn/Solutions/Interviews/smallest-difference-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.06.%20%E6%9C%80%E5%B0%8F%E5%B7%AE.md,42.7%,中等,286 -面试题 16.07,Interviews,面试题 16.07. 最大数值,最大数值,https://leetcode.cn/problems/maximum-lcci/,maximum-lcci,位运算、脑筋急转弯、数学,https://algo.itcharge.cn/Solutions/Interviews/maximum-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.07.%20%E6%9C%80%E5%A4%A7%E6%95%B0%E5%80%BC.md,74.0%,简单,427 -面试题 16.08,Interviews,面试题 16.08. 整数的英语表示,整数的英语表示,https://leetcode.cn/problems/english-int-lcci/,english-int-lcci,递归、数学、字符串,https://algo.itcharge.cn/Solutions/Interviews/english-int-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.08.%20%E6%95%B4%E6%95%B0%E7%9A%84%E8%8B%B1%E8%AF%AD%E8%A1%A8%E7%A4%BA.md,39.1%,困难,79 -面试题 16.09,Interviews,面试题 16.09. 运算,运算,https://leetcode.cn/problems/operations-lcci/,operations-lcci,设计、数学,https://algo.itcharge.cn/Solutions/Interviews/operations-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.09.%20%E8%BF%90%E7%AE%97.md,56.3%,中等,60 -面试题 16.10,Interviews,面试题 16.10. 生存人数,生存人数,https://leetcode.cn/problems/living-people-lcci/,living-people-lcci,数组、计数,https://algo.itcharge.cn/Solutions/Interviews/living-people-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.10.%20%E7%94%9F%E5%AD%98%E4%BA%BA%E6%95%B0.md,66.9%,中等,269 -面试题 16.11,Interviews,面试题 16.11. 跳水板,跳水板,https://leetcode.cn/problems/diving-board-lcci/,diving-board-lcci,数组、数学,https://algo.itcharge.cn/Solutions/Interviews/diving-board-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.11.%20%E8%B7%B3%E6%B0%B4%E6%9D%BF.md,43.9%,简单,674 -面试题 16.13,Interviews,面试题 16.13. 平分正方形,平分正方形,https://leetcode.cn/problems/bisect-squares-lcci/,bisect-squares-lcci,几何、数学,https://algo.itcharge.cn/Solutions/Interviews/bisect-squares-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.13.%20%E5%B9%B3%E5%88%86%E6%AD%A3%E6%96%B9%E5%BD%A2.md,43.6%,中等,83 -面试题 16.14,Interviews,面试题 16.14. 最佳直线,最佳直线,https://leetcode.cn/problems/best-line-lcci/,best-line-lcci,几何、数组、哈希表、数学,https://algo.itcharge.cn/Solutions/Interviews/best-line-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.14.%20%E6%9C%80%E4%BD%B3%E7%9B%B4%E7%BA%BF.md,55.6%,中等,88 -面试题 16.15,Interviews,面试题 16.15. 珠玑妙算,珠玑妙算,https://leetcode.cn/problems/master-mind-lcci/,master-mind-lcci,哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/Interviews/master-mind-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.15.%20%E7%8F%A0%E7%8E%91%E5%A6%99%E7%AE%97.md,46.4%,简单,340 -面试题 16.16,Interviews,面试题 16.16. 部分排序,部分排序,https://leetcode.cn/problems/sub-sort-lcci/,sub-sort-lcci,栈、贪心、数组、双指针、排序、单调栈,https://algo.itcharge.cn/Solutions/Interviews/sub-sort-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.16.%20%E9%83%A8%E5%88%86%E6%8E%92%E5%BA%8F.md,46.7%,中等,320 -面试题 16.17,Interviews,面试题 16.17. 连续数列,连续数列,https://leetcode.cn/problems/contiguous-sequence-lcci/,contiguous-sequence-lcci,数组、分治、动态规划,https://algo.itcharge.cn/Solutions/Interviews/contiguous-sequence-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.17.%20%E8%BF%9E%E7%BB%AD%E6%95%B0%E5%88%97.md,58.9%,简单,514 -面试题 16.18,Interviews,面试题 16.18. 模式匹配,模式匹配,https://leetcode.cn/problems/pattern-matching-lcci/,pattern-matching-lcci,数学、字符串、回溯、枚举,https://algo.itcharge.cn/Solutions/Interviews/pattern-matching-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.18.%20%E6%A8%A1%E5%BC%8F%E5%8C%B9%E9%85%8D.md,33.9%,中等,347 -面试题 16.19,Interviews,面试题 16.19. 水域大小,水域大小,https://leetcode.cn/problems/pond-sizes-lcci/,pond-sizes-lcci,深度优先搜索、广度优先搜索、并查集、数组、矩阵,https://algo.itcharge.cn/Solutions/Interviews/pond-sizes-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.19.%20%E6%B0%B4%E5%9F%9F%E5%A4%A7%E5%B0%8F.md,66.2%,中等,590 -面试题 16.20,Interviews,面试题 16.20. T9键盘,T9键盘,https://leetcode.cn/problems/t9-lcci/,t9-lcci,数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/Interviews/t9-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.20.%20T9%E9%94%AE%E7%9B%98.md,71.2%,中等,261 -面试题 16.21,Interviews,面试题 16.21. 交换和,交换和,https://leetcode.cn/problems/sum-swap-lcci/,sum-swap-lcci,数组、哈希表、二分查找、排序,https://algo.itcharge.cn/Solutions/Interviews/sum-swap-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.21.%20%E4%BA%A4%E6%8D%A2%E5%92%8C.md,47.6%,中等,271 -面试题 16.22,Interviews,面试题 16.22. 兰顿蚂蚁,兰顿蚂蚁,https://leetcode.cn/problems/langtons-ant-lcci/,langtons-ant-lcci,数组、哈希表、字符串、矩阵、模拟,https://algo.itcharge.cn/Solutions/Interviews/langtons-ant-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.22.%20%E5%85%B0%E9%A1%BF%E8%9A%82%E8%9A%81.md,57.8%,中等,84 -面试题 16.24,Interviews,面试题 16.24. 数对和,数对和,https://leetcode.cn/problems/pairs-with-sum-lcci/,pairs-with-sum-lcci,数组、哈希表、双指针、计数、排序,https://algo.itcharge.cn/Solutions/Interviews/pairs-with-sum-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.24.%20%E6%95%B0%E5%AF%B9%E5%92%8C.md,48.3%,中等,248 -面试题 16.25,Interviews,面试题 16.25. LRU 缓存,LRU 缓存,https://leetcode.cn/problems/lru-cache-lcci/,lru-cache-lcci,设计、哈希表、链表、双向链表,https://algo.itcharge.cn/Solutions/Interviews/lru-cache-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.25.%20LRU%20%E7%BC%93%E5%AD%98.md,55.5%,中等,351 -面试题 16.26,Interviews,面试题 16.26. 计算器,计算器,https://leetcode.cn/problems/calculator-lcci/,calculator-lcci,栈、数学、字符串,https://algo.itcharge.cn/Solutions/Interviews/calculator-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.26.%20%E8%AE%A1%E7%AE%97%E5%99%A8.md,39.8%,中等,292 -面试题 17.01,Interviews,面试题 17.01. 不用加号的加法,不用加号的加法,https://leetcode.cn/problems/add-without-plus-lcci/,add-without-plus-lcci,位运算、数学,https://algo.itcharge.cn/Solutions/Interviews/add-without-plus-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.01.%20%E4%B8%8D%E7%94%A8%E5%8A%A0%E5%8F%B7%E7%9A%84%E5%8A%A0%E6%B3%95.md,61.6%,简单,234 -面试题 17.04,Interviews,面试题 17.04. 消失的数字,消失的数字,https://leetcode.cn/problems/missing-number-lcci/,missing-number-lcci,位运算、数组、哈希表、数学、排序,https://algo.itcharge.cn/Solutions/Interviews/missing-number-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.04.%20%E6%B6%88%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md,59.4%,简单,724 -面试题 17.05,Interviews,面试题 17.05. 字母与数字,字母与数字,https://leetcode.cn/problems/find-longest-subarray-lcci/,find-longest-subarray-lcci,数组、哈希表、前缀和,https://algo.itcharge.cn/Solutions/Interviews/find-longest-subarray-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.05.%20%E5%AD%97%E6%AF%8D%E4%B8%8E%E6%95%B0%E5%AD%97.md,47.5%,中等,283 -面试题 17.06,Interviews,面试题 17.06. 2出现的次数,2出现的次数,https://leetcode.cn/problems/number-of-2s-in-range-lcci/,number-of-2s-in-range-lcci,递归、数学、动态规划,https://algo.itcharge.cn/Solutions/Interviews/number-of-2s-in-range-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.06.%202%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0.md,49.6%,困难,183 -面试题 17.07,Interviews,面试题 17.07. 婴儿名字,婴儿名字,https://leetcode.cn/problems/baby-names-lcci/,baby-names-lcci,深度优先搜索、广度优先搜索、并查集、数组、哈希表、字符串、计数,https://algo.itcharge.cn/Solutions/Interviews/baby-names-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.07.%20%E5%A9%B4%E5%84%BF%E5%90%8D%E5%AD%97.md,41.6%,中等,284 -面试题 17.08,Interviews,面试题 17.08. 马戏团人塔,马戏团人塔,https://leetcode.cn/problems/circus-tower-lcci/,circus-tower-lcci,数组、二分查找、动态规划、排序,https://algo.itcharge.cn/Solutions/Interviews/circus-tower-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.08.%20%E9%A9%AC%E6%88%8F%E5%9B%A2%E4%BA%BA%E5%A1%94.md,28.5%,中等,168 -面试题 17.09,Interviews,面试题 17.09. 第 k 个数,第 k 个数,https://leetcode.cn/problems/get-kth-magic-number-lcci/,get-kth-magic-number-lcci,哈希表、数学、动态规划、堆(优先队列),https://algo.itcharge.cn/Solutions/Interviews/get-kth-magic-number-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.09.%20%E7%AC%AC%20k%20%E4%B8%AA%E6%95%B0.md,56.1%,中等,431 -面试题 17.10,Interviews,面试题 17.10. 主要元素,主要元素,https://leetcode.cn/problems/find-majority-element-lcci/,find-majority-element-lcci,数组、计数,https://algo.itcharge.cn/Solutions/Interviews/find-majority-element-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.10.%20%E4%B8%BB%E8%A6%81%E5%85%83%E7%B4%A0.md,56.2%,简单,1052 -面试题 17.11,Interviews,面试题 17.11. 单词距离,单词距离,https://leetcode.cn/problems/find-closest-lcci/,find-closest-lcci,数组、字符串,https://algo.itcharge.cn/Solutions/Interviews/find-closest-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.11.%20%E5%8D%95%E8%AF%8D%E8%B7%9D%E7%A6%BB.md,73.1%,中等,665 -面试题 17.12,Interviews,面试题 17.12. BiNode,BiNode,https://leetcode.cn/problems/binode-lcci/,binode-lcci,栈、树、深度优先搜索、二叉搜索树、链表、二叉树,https://algo.itcharge.cn/Solutions/Interviews/binode-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.12.%20BiNode.md,63.9%,简单,394 -面试题 17.13,Interviews,面试题 17.13. 恢复空格,恢复空格,https://leetcode.cn/problems/re-space-lcci/,re-space-lcci,字典树、数组、哈希表、字符串、动态规划、哈希函数、滚动哈希,https://algo.itcharge.cn/Solutions/Interviews/re-space-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.13.%20%E6%81%A2%E5%A4%8D%E7%A9%BA%E6%A0%BC.md,55.4%,中等,303 -面试题 17.14,Interviews,面试题 17.14. 最小K个数,最小K个数,https://leetcode.cn/problems/smallest-k-lcci/,smallest-k-lcci,数组、分治、快速选择、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/Interviews/smallest-k-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.14.%20%E6%9C%80%E5%B0%8FK%E4%B8%AA%E6%95%B0.md,58.9%,中等,929 -面试题 17.15,Interviews,面试题 17.15. 最长单词,最长单词,https://leetcode.cn/problems/longest-word-lcci/,longest-word-lcci,字典树、数组、哈希表、字符串,https://algo.itcharge.cn/Solutions/Interviews/longest-word-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.15.%20%E6%9C%80%E9%95%BF%E5%8D%95%E8%AF%8D.md,40.9%,中等,189 -面试题 17.16,Interviews,面试题 17.16. 按摩师,按摩师,https://leetcode.cn/problems/the-masseuse-lcci/,the-masseuse-lcci,数组、动态规划,https://algo.itcharge.cn/Solutions/Interviews/the-masseuse-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.16.%20%E6%8C%89%E6%91%A9%E5%B8%88.md,51.1%,简单,1313 -面试题 17.17,Interviews,面试题 17.17. 多次搜索,多次搜索,https://leetcode.cn/problems/multi-search-lcci/,multi-search-lcci,字典树、数组、哈希表、字符串、字符串匹配、滑动窗口,https://algo.itcharge.cn/Solutions/Interviews/multi-search-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.17.%20%E5%A4%9A%E6%AC%A1%E6%90%9C%E7%B4%A2.md,44.7%,中等,253 -面试题 17.18,Interviews,面试题 17.18. 最短超串,最短超串,https://leetcode.cn/problems/shortest-supersequence-lcci/,shortest-supersequence-lcci,数组、哈希表、滑动窗口,https://algo.itcharge.cn/Solutions/Interviews/shortest-supersequence-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.18.%20%E6%9C%80%E7%9F%AD%E8%B6%85%E4%B8%B2.md,44.4%,中等,177 -面试题 17.19,Interviews,面试题 17.19. 消失的两个数字,消失的两个数字,https://leetcode.cn/problems/missing-two-lcci/,missing-two-lcci,位运算、数组、哈希表,https://algo.itcharge.cn/Solutions/Interviews/missing-two-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.19.%20%E6%B6%88%E5%A4%B1%E7%9A%84%E4%B8%A4%E4%B8%AA%E6%95%B0%E5%AD%97.md,60.6%,困难,576 -面试题 17.20,Interviews,面试题 17.20. 连续中值,连续中值,https://leetcode.cn/problems/continuous-median-lcci/,continuous-median-lcci,设计、双指针、数据流、排序、堆(优先队列),https://algo.itcharge.cn/Solutions/Interviews/continuous-median-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.20.%20%E8%BF%9E%E7%BB%AD%E4%B8%AD%E5%80%BC.md,58.4%,困难,110 -面试题 17.21,Interviews,面试题 17.21. 直方图的水量,直方图的水量,https://leetcode.cn/problems/volume-of-histogram-lcci/,volume-of-histogram-lcci,栈、数组、双指针、动态规划、单调栈,https://algo.itcharge.cn/Solutions/Interviews/volume-of-histogram-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.21.%20%E7%9B%B4%E6%96%B9%E5%9B%BE%E7%9A%84%E6%B0%B4%E9%87%8F.md,63.8%,困难,591 -面试题 17.22,Interviews,面试题 17.22. 单词转换,单词转换,https://leetcode.cn/problems/word-transformer-lcci/,word-transformer-lcci,广度优先搜索、哈希表、字符串、回溯,https://algo.itcharge.cn/Solutions/Interviews/word-transformer-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.22.%20%E5%8D%95%E8%AF%8D%E8%BD%AC%E6%8D%A2.md,40.3%,中等,206 -面试题 17.23,Interviews,面试题 17.23. 最大黑方阵,最大黑方阵,https://leetcode.cn/problems/max-black-square-lcci/,max-black-square-lcci,数组、动态规划、矩阵,https://algo.itcharge.cn/Solutions/Interviews/max-black-square-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.23.%20%E6%9C%80%E5%A4%A7%E9%BB%91%E6%96%B9%E9%98%B5.md,37.8%,中等,155 -面试题 17.24,Interviews,面试题 17.24. 最大子矩阵,最大子矩阵,https://leetcode.cn/problems/max-submatrix-lcci/,max-submatrix-lcci,数组、动态规划、矩阵、前缀和,https://algo.itcharge.cn/Solutions/Interviews/max-submatrix-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.24.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E7%9F%A9%E9%98%B5.md,53.6%,困难,197 -面试题 17.25,Interviews,面试题 17.25. 单词矩阵,单词矩阵,https://leetcode.cn/problems/word-rectangle-lcci/,word-rectangle-lcci,字典树、数组、字符串、回溯,https://algo.itcharge.cn/Solutions/Interviews/word-rectangle-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.25.%20%E5%8D%95%E8%AF%8D%E7%9F%A9%E9%98%B5.md,50.8%,困难,58 -面试题 17.26,Interviews,面试题 17.26. 稀疏相似度,稀疏相似度,https://leetcode.cn/problems/sparse-similarity-lcci/,sparse-similarity-lcci,数组、哈希表、排序,https://algo.itcharge.cn/Solutions/Interviews/sparse-similarity-lcci/,https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.26.%20%E7%A8%80%E7%96%8F%E7%9B%B8%E4%BC%BC%E5%BA%A6.md,35.2%,困难,90 diff --git a/Contents/00.Introduction/04.Solutions-List.md b/Contents/00.Introduction/04.Solutions-List.md deleted file mode 100644 index 658bc1e0..00000000 --- a/Contents/00.Introduction/04.Solutions-List.md +++ /dev/null @@ -1,864 +0,0 @@ -# LeetCode 题解(已完成 860 道) - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0001 | [两数之和](https://leetcode.cn/problems/two-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0001.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、哈希表 | 简单 | -| 0002 | [两数相加](https://leetcode.cn/problems/add-two-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0002.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0.md) | 递归、链表、数学 | 中等 | -| 0003 | [无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0003.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0004 | [寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0004.%20%E5%AF%BB%E6%89%BE%E4%B8%A4%E4%B8%AA%E6%AD%A3%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、二分查找、分治 | 困难 | -| 0005 | [最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0005.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 0007 | [整数反转](https://leetcode.cn/problems/reverse-integer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0007.%20%E6%95%B4%E6%95%B0%E5%8F%8D%E8%BD%AC.md) | 数学 | 中等 | -| 0008 | [字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0008.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E6%8D%A2%E6%95%B4%E6%95%B0%20%28atoi%29.md) | 字符串 | 中等 | -| 0009 | [回文数](https://leetcode.cn/problems/palindrome-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0009.%20%E5%9B%9E%E6%96%87%E6%95%B0.md) | 数学 | 简单 | -| 0010 | [正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0010.%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D.md) | 递归、字符串、动态规划 | 困难 | -| 0011 | [盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0011.%20%E7%9B%9B%E6%9C%80%E5%A4%9A%E6%B0%B4%E7%9A%84%E5%AE%B9%E5%99%A8.md) | 贪心、数组、双指针 | 中等 | -| 0012 | [整数转罗马数字](https://leetcode.cn/problems/integer-to-roman/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0012.%20%E6%95%B4%E6%95%B0%E8%BD%AC%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97.md) | 哈希表、数学、字符串 | 中等 | -| 0013 | [罗马数字转整数](https://leetcode.cn/problems/roman-to-integer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0013.%20%E7%BD%97%E9%A9%AC%E6%95%B0%E5%AD%97%E8%BD%AC%E6%95%B4%E6%95%B0.md) | 哈希表、数学、字符串 | 简单 | -| 0014 | [最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0014.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%89%8D%E7%BC%80.md) | 字典树、字符串 | 简单 | -| 0015 | [三数之和](https://leetcode.cn/problems/3sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0015.%20%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0016 | [最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0016.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0017 | [电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0017.%20%E7%94%B5%E8%AF%9D%E5%8F%B7%E7%A0%81%E7%9A%84%E5%AD%97%E6%AF%8D%E7%BB%84%E5%90%88.md) | 哈希表、字符串、回溯 | 中等 | -| 0018 | [四数之和](https://leetcode.cn/problems/4sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0018.%20%E5%9B%9B%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0019 | [删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0019.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%AC%20N%20%E4%B8%AA%E7%BB%93%E7%82%B9.md) | 链表、双指针 | 中等 | -| 0020 | [有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0020.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.md) | 栈、字符串 | 简单 | -| 0021 | [合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0021.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0022 | [括号生成](https://leetcode.cn/problems/generate-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0022.%20%E6%8B%AC%E5%8F%B7%E7%94%9F%E6%88%90.md) | 字符串、动态规划、回溯 | 中等 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| 0024 | [两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0024.%20%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md) | 递归、链表 | 中等 | -| 0025 | [K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0025.%20K%20%E4%B8%AA%E4%B8%80%E7%BB%84%E7%BF%BB%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 困难 | -| 0026 | [删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0026.%20%E5%88%A0%E9%99%A4%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E9%A1%B9.md) | 数组、双指针 | 简单 | -| 0027 | [移除元素](https://leetcode.cn/problems/remove-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0027.%20%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.md) | 数组、双指针 | 简单 | -| 0028 | [找出字符串中第一个匹配项的下标](https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0028.%20%E6%89%BE%E5%87%BA%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8C%B9%E9%85%8D%E9%A1%B9%E7%9A%84%E4%B8%8B%E6%A0%87.md) | 双指针、字符串、字符串匹配 | 中等 | -| 0029 | [两数相除](https://leetcode.cn/problems/divide-two-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0029.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E9%99%A4.md) | 位运算、数学 | 中等 | -| 0032 | [最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0032.%20%E6%9C%80%E9%95%BF%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7.md) | 栈、字符串、动态规划 | 困难 | -| 0033 | [搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0033.%20%E6%90%9C%E7%B4%A2%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、二分查找 | 中等 | -| 0034 | [在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0034.%20%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%85%83%E7%B4%A0%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%92%8C%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E4%BD%8D%E7%BD%AE.md) | 数组、二分查找 | 中等 | -| 0035 | [搜索插入位置](https://leetcode.cn/problems/search-insert-position/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0035.%20%E6%90%9C%E7%B4%A2%E6%8F%92%E5%85%A5%E4%BD%8D%E7%BD%AE.md) | 数组、二分查找 | 简单 | -| 0036 | [有效的数独](https://leetcode.cn/problems/valid-sudoku/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0036.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%95%B0%E7%8B%AC.md) | 数组、哈希表、矩阵 | 中等 | -| 0037 | [解数独](https://leetcode.cn/problems/sudoku-solver/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0037.%20%E8%A7%A3%E6%95%B0%E7%8B%AC.md) | 数组、哈希表、回溯、矩阵 | 困难 | -| 0038 | [外观数列](https://leetcode.cn/problems/count-and-say/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0038.%20%E5%A4%96%E8%A7%82%E6%95%B0%E5%88%97.md) | 字符串 | 中等 | -| 0039 | [组合总和](https://leetcode.cn/problems/combination-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0039.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.md) | 数组、回溯 | 中等 | -| 0040 | [组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0040.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C%20II.md) | 数组、回溯 | 中等 | -| 0041 | [缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0041.%20%E7%BC%BA%E5%A4%B1%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%AD%A3%E6%95%B0.md) | 数组、哈希表 | 困难 | -| 0042 | [接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0042.%20%E6%8E%A5%E9%9B%A8%E6%B0%B4.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | -| 0043 | [字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0043.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E4%B9%98.md) | 数学、字符串、模拟 | 中等 | -| 0044 | [通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0044.%20%E9%80%9A%E9%85%8D%E7%AC%A6%E5%8C%B9%E9%85%8D.md) | 贪心、递归、字符串、动态规划 | 困难 | -| 0045 | [跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0045.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20II.md) | 贪心、数组、动态规划 | 中等 | -| 0046 | [全排列](https://leetcode.cn/problems/permutations/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0046.%20%E5%85%A8%E6%8E%92%E5%88%97.md) | 数组、回溯 | 中等 | -| 0047 | [全排列 II](https://leetcode.cn/problems/permutations-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0047.%20%E5%85%A8%E6%8E%92%E5%88%97%20II.md) | 数组、回溯 | 中等 | -| 0048 | [旋转图像](https://leetcode.cn/problems/rotate-image/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0048.%20%E6%97%8B%E8%BD%AC%E5%9B%BE%E5%83%8F.md) | 数组、数学、矩阵 | 中等 | -| 0049 | [字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0049.%20%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E5%88%86%E7%BB%84.md) | 数组、哈希表、字符串、排序 | 中等 | -| 0050 | [Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0050.%20Pow%28x%2C%20n%29.md) | 递归、数学 | 中等 | -| 0051 | [N 皇后](https://leetcode.cn/problems/n-queens/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0051.%20N%20%E7%9A%87%E5%90%8E.md) | 数组、回溯 | 困难 | -| 0052 | [N 皇后 II](https://leetcode.cn/problems/n-queens-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0052.%20N%20%E7%9A%87%E5%90%8E%20II.md) | 回溯 | 困难 | -| 0053 | [最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、分治、动态规划 | 中等 | -| 0054 | [螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0054.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5.md) | 数组、矩阵、模拟 | 中等 | -| 0055 | [跳跃游戏](https://leetcode.cn/problems/jump-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0055.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F.md) | 贪心、数组、动态规划 | 中等 | -| 0056 | [合并区间](https://leetcode.cn/problems/merge-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0056.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md) | 数组、排序 | 中等 | -| 0058 | [最后一个单词的长度](https://leetcode.cn/problems/length-of-last-word/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0058.%20%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E5%8D%95%E8%AF%8D%E7%9A%84%E9%95%BF%E5%BA%A6.md) | 字符串 | 简单 | -| 0059 | [螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0059.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5%20II.md) | 数组、矩阵、模拟 | 中等 | -| 0061 | [旋转链表](https://leetcode.cn/problems/rotate-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0061.%20%E6%97%8B%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 链表、双指针 | 中等 | -| 0062 | [不同路径](https://leetcode.cn/problems/unique-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0062.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.md) | 数学、动态规划、组合数学 | 中等 | -| 0063 | [不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0063.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84%20II.md) | 数组、动态规划、矩阵 | 中等 | -| 0064 | [最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0064.%20%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 数组、动态规划、矩阵 | 中等 | -| 0066 | [加一](https://leetcode.cn/problems/plus-one/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0066.%20%E5%8A%A0%E4%B8%80.md) | 数组、数学 | 简单 | -| 0067 | [二进制求和](https://leetcode.cn/problems/add-binary/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0067.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%B1%82%E5%92%8C.md) | 位运算、数学、字符串、模拟 | 简单 | -| 0069 | [x 的平方根](https://leetcode.cn/problems/sqrtx/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0069.%20x%20%E7%9A%84%E5%B9%B3%E6%96%B9%E6%A0%B9.md) | 数学、二分查找 | 简单 | -| 0070 | [爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0072 | [编辑距离](https://leetcode.cn/problems/edit-distance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0072.%20%E7%BC%96%E8%BE%91%E8%B7%9D%E7%A6%BB.md) | 字符串、动态规划 | 困难 | -| 0073 | [矩阵置零](https://leetcode.cn/problems/set-matrix-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0073.%20%E7%9F%A9%E9%98%B5%E7%BD%AE%E9%9B%B6.md) | 数组、哈希表、矩阵 | 中等 | -| 0074 | [搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0074.%20%E6%90%9C%E7%B4%A2%E4%BA%8C%E7%BB%B4%E7%9F%A9%E9%98%B5.md) | 数组、二分查找、矩阵 | 中等 | -| 0075 | [颜色分类](https://leetcode.cn/problems/sort-colors/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0075.%20%E9%A2%9C%E8%89%B2%E5%88%86%E7%B1%BB.md) | 数组、双指针、排序 | 中等 | -| 0076 | [最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0076.%20%E6%9C%80%E5%B0%8F%E8%A6%86%E7%9B%96%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 困难 | -| 0077 | [组合](https://leetcode.cn/problems/combinations/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0077.%20%E7%BB%84%E5%90%88.md) | 回溯 | 中等 | -| 0078 | [子集](https://leetcode.cn/problems/subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0078.%20%E5%AD%90%E9%9B%86.md) | 位运算、数组、回溯 | 中等 | -| 0079 | [单词搜索](https://leetcode.cn/problems/word-search/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0079.%20%E5%8D%95%E8%AF%8D%E6%90%9C%E7%B4%A2.md) | 数组、回溯、矩阵 | 中等 | -| 0080 | [删除有序数组中的重复项 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0080.%20%E5%88%A0%E9%99%A4%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E9%A1%B9%20II.md) | 数组、双指针 | 中等 | -| 0081 | [搜索旋转排序数组 II](https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0081.%20%E6%90%9C%E7%B4%A2%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%20II.md) | 数组、二分查找 | 中等 | -| 0082 | [删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0082.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20II.md) | 链表、双指针 | 中等 | -| 0083 | [删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0083.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md) | 链表 | 简单 | -| 0084 | [柱状图中最大的矩形](https://leetcode.cn/problems/largest-rectangle-in-histogram/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0084.%20%E6%9F%B1%E7%8A%B6%E5%9B%BE%E4%B8%AD%E6%9C%80%E5%A4%A7%E7%9A%84%E7%9F%A9%E5%BD%A2.md) | 栈、数组、单调栈 | 困难 | -| 0088 | [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0088.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、排序 | 简单 | -| 0089 | [格雷编码](https://leetcode.cn/problems/gray-code/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0089.%20%E6%A0%BC%E9%9B%B7%E7%BC%96%E7%A0%81.md) | 位运算、数学、回溯 | 中等 | -| 0090 | [子集 II](https://leetcode.cn/problems/subsets-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0090.%20%E5%AD%90%E9%9B%86%20II.md) | 位运算、数组、回溯 | 中等 | -| 0091 | [解码方法](https://leetcode.cn/problems/decode-ways/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0091.%20%E8%A7%A3%E7%A0%81%E6%96%B9%E6%B3%95.md) | 字符串、动态规划 | 中等 | -| 0092 | [反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0092.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8%20II.md) | 链表 | 中等 | -| 0093 | [复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0093.%20%E5%A4%8D%E5%8E%9F%20IP%20%E5%9C%B0%E5%9D%80.md) | 字符串、回溯 | 中等 | -| 0094 | [二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0094.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0095 | [不同的二叉搜索树 II](https://leetcode.cn/problems/unique-binary-search-trees-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0095.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%20II.md) | 树、二叉搜索树、动态规划、回溯、二叉树 | 中等 | -| 0096 | [不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0096.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | -| 0098 | [验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0098.%20%E9%AA%8C%E8%AF%81%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0100 | [相同的树](https://leetcode.cn/problems/same-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0100.%20%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0101 | [对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0101.%20%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0102 | [二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0102.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0103 | [二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0103.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%94%AF%E9%BD%BF%E5%BD%A2%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0104 | [二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0104.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0105 | [从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0105.%20%E4%BB%8E%E5%89%8D%E5%BA%8F%E4%B8%8E%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | -| 0106 | [从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0106.%20%E4%BB%8E%E4%B8%AD%E5%BA%8F%E4%B8%8E%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | -| 0107 | [二叉树的层序遍历 II](https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0107.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86%20II.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0108 | [将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0108.%20%E5%B0%86%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | -| 0110 | [平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0110.%20%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、二叉树 | 简单 | -| 0111 | [二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0111.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0112 | [路径总和](https://leetcode.cn/problems/path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0112.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0113 | [路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0113.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C%20II.md) | 树、深度优先搜索、回溯、二叉树 | 中等 | -| 0115 | [不同的子序列](https://leetcode.cn/problems/distinct-subsequences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0115.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 困难 | -| 0116 | [填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0116.%20%E5%A1%AB%E5%85%85%E6%AF%8F%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%8F%B3%E4%BE%A7%E8%8A%82%E7%82%B9%E6%8C%87%E9%92%88.md) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | -| 0117 | [填充每个节点的下一个右侧节点指针 II](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0117.%20%E5%A1%AB%E5%85%85%E6%AF%8F%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%8F%B3%E4%BE%A7%E8%8A%82%E7%82%B9%E6%8C%87%E9%92%88%20II.md) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | -| 0118 | [杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0118.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92.md) | 数组、动态规划 | 简单 | -| 0119 | [杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0119.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%20II.md) | 数组、动态规划 | 简单 | -| 0120 | [三角形最小路径和](https://leetcode.cn/problems/triangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0120.%20%E4%B8%89%E8%A7%92%E5%BD%A2%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 数组、动态规划 | 中等 | -| 0121 | [买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0121.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA.md) | 数组、动态规划 | 简单 | -| 0122 | [买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0122.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20II.md) | 贪心、数组 | 中等 | -| 0123 | [买卖股票的最佳时机 III](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0123.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20III.md) | 数组、动态规划 | 困难 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0125 | [验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0125.%20%E9%AA%8C%E8%AF%81%E5%9B%9E%E6%96%87%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0127 | [单词接龙](https://leetcode.cn/problems/word-ladder/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0127.%20%E5%8D%95%E8%AF%8D%E6%8E%A5%E9%BE%99.md) | 广度优先搜索、哈希表、字符串 | 困难 | -| 0128 | [最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0128.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md) | 并查集、数组、哈希表 | 中等 | -| 0129 | [求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0129.%20%E6%B1%82%E6%A0%B9%E8%8A%82%E7%82%B9%E5%88%B0%E5%8F%B6%E8%8A%82%E7%82%B9%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0130 | [被围绕的区域](https://leetcode.cn/problems/surrounded-regions/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0130.%20%E8%A2%AB%E5%9B%B4%E7%BB%95%E7%9A%84%E5%8C%BA%E5%9F%9F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0131 | [分割回文串](https://leetcode.cn/problems/palindrome-partitioning/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0131.%20%E5%88%86%E5%89%B2%E5%9B%9E%E6%96%87%E4%B8%B2.md) | 字符串、动态规划、回溯 | 中等 | -| 0133 | [克隆图](https://leetcode.cn/problems/clone-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0133.%20%E5%85%8B%E9%9A%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | -| 0134 | [加油站](https://leetcode.cn/problems/gas-station/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0134.%20%E5%8A%A0%E6%B2%B9%E7%AB%99.md) | 贪心、数组 | 中等 | -| 0135 | [分发糖果](https://leetcode.cn/problems/candy/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0135.%20%E5%88%86%E5%8F%91%E7%B3%96%E6%9E%9C.md) | 贪心、数组 | 困难 | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | -| 0137 | [只出现一次的数字 II](https://leetcode.cn/problems/single-number-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0137.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97%20II.md) | 位运算、数组 | 中等 | -| 0138 | [复制带随机指针的链表](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0138.%20%E5%A4%8D%E5%88%B6%E5%B8%A6%E9%9A%8F%E6%9C%BA%E6%8C%87%E9%92%88%E7%9A%84%E9%93%BE%E8%A1%A8.md) | 哈希表、链表 | 中等 | -| 0139 | [单词拆分](https://leetcode.cn/problems/word-break/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0139.%20%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.md) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | -| 0140 | [单词拆分 II](https://leetcode.cn/problems/word-break-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0140.%20%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86%20II.md) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划、回溯 | 困难 | -| 0141 | [环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0141.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8.md) | 哈希表、链表、双指针 | 简单 | -| 0142 | [环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0142.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8%20II.md) | 哈希表、链表、双指针 | 中等 | -| 0143 | [重排链表](https://leetcode.cn/problems/reorder-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0143.%20%E9%87%8D%E6%8E%92%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 中等 | -| 0144 | [二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0144.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0145 | [二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0145.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0147 | [对链表进行插入排序](https://leetcode.cn/problems/insertion-sort-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0147.%20%E5%AF%B9%E9%93%BE%E8%A1%A8%E8%BF%9B%E8%A1%8C%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F.md) | 链表、排序 | 中等 | -| 0148 | [排序链表](https://leetcode.cn/problems/sort-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0148.%20%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、双指针、分治、排序、归并排序 | 中等 | -| 0149 | [直线上最多的点数](https://leetcode.cn/problems/max-points-on-a-line/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0149.%20%E7%9B%B4%E7%BA%BF%E4%B8%8A%E6%9C%80%E5%A4%9A%E7%9A%84%E7%82%B9%E6%95%B0.md) | 几何、数组、哈希表、数学 | 困难 | -| 0150 | [逆波兰表达式求值](https://leetcode.cn/problems/evaluate-reverse-polish-notation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0150.%20%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B1%82%E5%80%BC.md) | 栈、数组、数学 | 中等 | -| 0151 | [反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0151.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D.md) | 双指针、字符串 | 中等 | -| 0152 | [乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0152.%20%E4%B9%98%E7%A7%AF%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划 | 中等 | -| 0153 | [寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0153.%20%E5%AF%BB%E6%89%BE%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md) | 数组、二分查找 | 中等 | -| 0154 | [寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0154.%20%E5%AF%BB%E6%89%BE%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC%20II.md) | 数组、二分查找 | 困难 | -| 0155 | [最小栈](https://leetcode.cn/problems/min-stack/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0155.%20%E6%9C%80%E5%B0%8F%E6%A0%88.md) | 栈、设计 | 中等 | -| 0159 | [至多包含两个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0159.%20%E8%87%B3%E5%A4%9A%E5%8C%85%E5%90%AB%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0160 | [相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0160.%20%E7%9B%B8%E4%BA%A4%E9%93%BE%E8%A1%A8.md) | 哈希表、链表、双指针 | 简单 | -| 0162 | [寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0162.%20%E5%AF%BB%E6%89%BE%E5%B3%B0%E5%80%BC.md) | 数组、二分查找 | 中等 | -| 0164 | [最大间距](https://leetcode.cn/problems/maximum-gap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0164.%20%E6%9C%80%E5%A4%A7%E9%97%B4%E8%B7%9D.md) | 数组、桶排序、基数排序、排序 | 困难 | -| 0166 | [分数到小数](https://leetcode.cn/problems/fraction-to-recurring-decimal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0166.%20%E5%88%86%E6%95%B0%E5%88%B0%E5%B0%8F%E6%95%B0.md) | 哈希表、数学、字符串 | 中等 | -| 0167 | [两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0167.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C%20II%20-%20%E8%BE%93%E5%85%A5%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、二分查找 | 中等 | -| 0168 | [Excel表列名称](https://leetcode.cn/problems/excel-sheet-column-title/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0168.%20Excel%E8%A1%A8%E5%88%97%E5%90%8D%E7%A7%B0.md) | 数学、字符串 | 简单 | -| 0169 | [多数元素](https://leetcode.cn/problems/majority-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0169.%20%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、计数、排序 | 简单 | -| 0170 | [两数之和 III - 数据结构设计](https://leetcode.cn/problems/two-sum-iii-data-structure-design/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0170.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C%20III%20-%20%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E8%AE%BE%E8%AE%A1.md) | 设计、数组、哈希表、双指针、数据流 | 简单 | -| 0171 | [Excel 表列序号](https://leetcode.cn/problems/excel-sheet-column-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0171.%20Excel%20%E8%A1%A8%E5%88%97%E5%BA%8F%E5%8F%B7.md) | 数学、字符串 | 简单 | -| 0172 | [阶乘后的零](https://leetcode.cn/problems/factorial-trailing-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0172.%20%E9%98%B6%E4%B9%98%E5%90%8E%E7%9A%84%E9%9B%B6.md) | 数学 | 中等 | -| 0173 | [二叉搜索树迭代器](https://leetcode.cn/problems/binary-search-tree-iterator/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0173.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BF%AD%E4%BB%A3%E5%99%A8.md) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | -| 0179 | [最大数](https://leetcode.cn/problems/largest-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0179.%20%E6%9C%80%E5%A4%A7%E6%95%B0.md) | 贪心、数组、字符串、排序 | 中等 | -| 0188 | [买卖股票的最佳时机 IV](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0188.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20IV.md) | 数组、动态规划 | 困难 | -| 0189 | [轮转数组](https://leetcode.cn/problems/rotate-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0189.%20%E8%BD%AE%E8%BD%AC%E6%95%B0%E7%BB%84.md) | 数组、数学、双指针 | 中等 | -| 0190 | [颠倒二进制位](https://leetcode.cn/problems/reverse-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0190.%20%E9%A2%A0%E5%80%92%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%BD%8D.md) | 位运算、分治 | 简单 | -| 0191 | [位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0191.%20%E4%BD%8D1%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 位运算、分治 | 简单 | -| 0198 | [打家劫舍](https://leetcode.cn/problems/house-robber/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0198.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.md) | 数组、动态规划 | 中等 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0200 | [岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0200.%20%E5%B2%9B%E5%B1%BF%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0201 | [数字范围按位与](https://leetcode.cn/problems/bitwise-and-of-numbers-range/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0201.%20%E6%95%B0%E5%AD%97%E8%8C%83%E5%9B%B4%E6%8C%89%E4%BD%8D%E4%B8%8E.md) | 位运算 | 中等 | -| 0202 | [快乐数](https://leetcode.cn/problems/happy-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0202.%20%E5%BF%AB%E4%B9%90%E6%95%B0.md) | 哈希表、数学、双指针 | 简单 | -| 0203 | [移除链表元素](https://leetcode.cn/problems/remove-linked-list-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0203.%20%E7%A7%BB%E9%99%A4%E9%93%BE%E8%A1%A8%E5%85%83%E7%B4%A0.md) | 递归、链表 | 简单 | -| 0204 | [计数质数](https://leetcode.cn/problems/count-primes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0204.%20%E8%AE%A1%E6%95%B0%E8%B4%A8%E6%95%B0.md) | 数组、数学、枚举、数论 | 中等 | -| 0205 | [同构字符串](https://leetcode.cn/problems/isomorphic-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0205.%20%E5%90%8C%E6%9E%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 哈希表、字符串 | 简单 | -| 0206 | [反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0206.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0207 | [课程表](https://leetcode.cn/problems/course-schedule/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0207.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0208 | [实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0208.%20%E5%AE%9E%E7%8E%B0%20Trie%20%28%E5%89%8D%E7%BC%80%E6%A0%91%29.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 0209 | [长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0209.%20%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 0210 | [课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0210.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8%20II.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0211 | [添加与搜索单词 - 数据结构设计](https://leetcode.cn/problems/design-add-and-search-words-data-structure/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0211.%20%E6%B7%BB%E5%8A%A0%E4%B8%8E%E6%90%9C%E7%B4%A2%E5%8D%95%E8%AF%8D%20-%20%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E8%AE%BE%E8%AE%A1.md) | 深度优先搜索、设计、字典树、字符串 | 中等 | -| 0212 | [单词搜索 II](https://leetcode.cn/problems/word-search-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0212.%20%E5%8D%95%E8%AF%8D%E6%90%9C%E7%B4%A2%20II.md) | 字典树、数组、字符串、回溯、矩阵 | 困难 | -| 0213 | [打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0213.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D%20II.md) | 数组、动态规划 | 中等 | -| 0215 | [数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0215.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%ACK%E4%B8%AA%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| 0217 | [存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0217.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md) | 数组、哈希表、排序 | 简单 | -| 0218 | [天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0218.%20%E5%A4%A9%E9%99%85%E7%BA%BF%E9%97%AE%E9%A2%98.md) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | -| 0219 | [存在重复元素 II](https://leetcode.cn/problems/contains-duplicate-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0219.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20II.md) | 数组、哈希表、滑动窗口 | 简单 | -| 0220 | [存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0220.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20III.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | -| 0221 | [最大正方形](https://leetcode.cn/problems/maximal-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0221.%20%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 数组、动态规划、矩阵 | 中等 | -| 0222 | [完全二叉树的节点个数](https://leetcode.cn/problems/count-complete-tree-nodes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0222.%20%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%8A%82%E7%82%B9%E4%B8%AA%E6%95%B0.md) | 树、深度优先搜索、二分查找、二叉树 | 中等 | -| 0223 | [矩形面积](https://leetcode.cn/problems/rectangle-area/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0223.%20%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF.md) | 几何、数学 | 中等 | -| 0225 | [用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0225.%20%E7%94%A8%E9%98%9F%E5%88%97%E5%AE%9E%E7%8E%B0%E6%A0%88.md) | 栈、设计、队列 | 简单 | -| 0226 | [翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0226.%20%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0227 | [基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0227.%20%E5%9F%BA%E6%9C%AC%E8%AE%A1%E7%AE%97%E5%99%A8%20II.md) | 栈、数学、字符串 | 中等 | -| 0231 | [2 的幂](https://leetcode.cn/problems/power-of-two/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0231.%202%20%E7%9A%84%E5%B9%82.md) | 位运算、递归、数学 | 简单 | -| 0232 | [用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0232.%20%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md) | 栈、设计、队列 | 简单 | -| 0233 | [数字 1 的个数](https://leetcode.cn/problems/number-of-digit-one/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0233.%20%E6%95%B0%E5%AD%97%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 递归、数学、动态规划 | 困难 | -| 0234 | [回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0234.%20%E5%9B%9E%E6%96%87%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 简单 | -| 0235 | [二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0235.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0236 | [二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0236.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0237 | [删除链表中的节点](https://leetcode.cn/problems/delete-node-in-a-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0237.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md) | 链表 | 中等 | -| 0238 | [除自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-except-self/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0238.%20%E9%99%A4%E8%87%AA%E8%BA%AB%E4%BB%A5%E5%A4%96%E6%95%B0%E7%BB%84%E7%9A%84%E4%B9%98%E7%A7%AF.md) | 数组、前缀和 | 中等 | -| 0239 | [滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0239.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | -| 0240 | [搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0240.%20%E6%90%9C%E7%B4%A2%E4%BA%8C%E7%BB%B4%E7%9F%A9%E9%98%B5%20II.md) | 数组、二分查找、分治、矩阵 | 中等 | -| 0241 | [为运算表达式设计优先级](https://leetcode.cn/problems/different-ways-to-add-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0241.%20%E4%B8%BA%E8%BF%90%E7%AE%97%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%AE%BE%E8%AE%A1%E4%BC%98%E5%85%88%E7%BA%A7.md) | 递归、记忆化搜索、数学、字符串、动态规划 | 中等 | -| 0242 | [有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0242.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.md) | 哈希表、字符串、排序 | 简单 | -| 0249 | [移位字符串分组](https://leetcode.cn/problems/group-shifted-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0249.%20%E7%A7%BB%E4%BD%8D%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%86%E7%BB%84.md) | 数组、哈希表、字符串 | 中等 | -| 0257 | [二叉树的所有路径](https://leetcode.cn/problems/binary-tree-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0257.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%89%80%E6%9C%89%E8%B7%AF%E5%BE%84.md) | 树、深度优先搜索、字符串、回溯、二叉树 | 简单 | -| 0258 | [各位相加](https://leetcode.cn/problems/add-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0258.%20%E5%90%84%E4%BD%8D%E7%9B%B8%E5%8A%A0.md) | 数学、数论、模拟 | 简单 | -| 0259 | [较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0259.%20%E8%BE%83%E5%B0%8F%E7%9A%84%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、二分查找、排序 | 中等 | -| 0260 | [只出现一次的数字 III](https://leetcode.cn/problems/single-number-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0260.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97%20III.md) | 位运算、数组 | 中等 | -| 0263 | [丑数](https://leetcode.cn/problems/ugly-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0263.%20%E4%B8%91%E6%95%B0.md) | 数学 | 简单 | -| 0264 | [丑数 II](https://leetcode.cn/problems/ugly-number-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0264.%20%E4%B8%91%E6%95%B0%20II.md) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | -| 0268 | [丢失的数字](https://leetcode.cn/problems/missing-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0268.%20%E4%B8%A2%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | -| 0270 | [最接近的二叉搜索树值](https://leetcode.cn/problems/closest-binary-search-tree-value/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0270.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E5%80%BC.md) | 树、深度优先搜索、二叉搜索树、二分查找、二叉树 | 简单 | -| 0278 | [第一个错误的版本](https://leetcode.cn/problems/first-bad-version/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0278.%20%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%94%99%E8%AF%AF%E7%9A%84%E7%89%88%E6%9C%AC.md) | 二分查找、交互 | 简单 | -| 0279 | [完全平方数](https://leetcode.cn/problems/perfect-squares/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0279.%20%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md) | 广度优先搜索、数学、动态规划 | 中等 | -| 0283 | [移动零](https://leetcode.cn/problems/move-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0283.%20%E7%A7%BB%E5%8A%A8%E9%9B%B6.md) | 数组、双指针 | 简单 | -| 0285 | [二叉搜索树中的中序后继](https://leetcode.cn/problems/inorder-successor-in-bst/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0285.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E4%B8%AD%E5%BA%8F%E5%90%8E%E7%BB%A7.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0286 | [墙与门](https://leetcode.cn/problems/walls-and-gates/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0286.%20%E5%A2%99%E4%B8%8E%E9%97%A8.md) | 广度优先搜索、数组、矩阵 | 中等 | -| 0287 | [寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0287.%20%E5%AF%BB%E6%89%BE%E9%87%8D%E5%A4%8D%E6%95%B0.md) | 位运算、数组、双指针、二分查找 | 中等 | -| 0288 | [单词的唯一缩写](https://leetcode.cn/problems/unique-word-abbreviation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0288.%20%E5%8D%95%E8%AF%8D%E7%9A%84%E5%94%AF%E4%B8%80%E7%BC%A9%E5%86%99.md) | 设计、数组、哈希表、字符串 | 中等 | -| 0289 | [生命游戏](https://leetcode.cn/problems/game-of-life/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0289.%20%E7%94%9F%E5%91%BD%E6%B8%B8%E6%88%8F.md) | 数组、矩阵、模拟 | 中等 | -| 0290 | [单词规律](https://leetcode.cn/problems/word-pattern/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0290.%20%E5%8D%95%E8%AF%8D%E8%A7%84%E5%BE%8B.md) | 哈希表、字符串 | 简单 | -| 0292 | [Nim 游戏](https://leetcode.cn/problems/nim-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0292.%20Nim%20%E6%B8%B8%E6%88%8F.md) | 脑筋急转弯、数学、博弈 | 简单 | -| 0295 | [数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0295.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | -| 0297 | [二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0297.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96.md) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | -| 0300 | [最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0300.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.md) | 数组、二分查找、动态规划 | 中等 | -| 0303 | [区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0303.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E4%B8%8D%E5%8F%AF%E5%8F%98.md) | 设计、数组、前缀和 | 简单 | -| 0304 | [二维区域和检索 - 矩阵不可变](https://leetcode.cn/problems/range-sum-query-2d-immutable/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0304.%20%E4%BA%8C%E7%BB%B4%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E7%9F%A9%E9%98%B5%E4%B8%8D%E5%8F%AF%E5%8F%98.md) | 设计、数组、矩阵、前缀和 | 中等 | -| 0307 | [区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0307.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E5%8F%AF%E4%BF%AE%E6%94%B9.md) | 设计、树状数组、线段树、数组 | 中等 | -| 0309 | [最佳买卖股票时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0309.%20%E6%9C%80%E4%BD%B3%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E6%97%B6%E6%9C%BA%E5%90%AB%E5%86%B7%E5%86%BB%E6%9C%9F.md) | 数组、动态规划 | 中等 | -| 0310 | [最小高度树](https://leetcode.cn/problems/minimum-height-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0310.%20%E6%9C%80%E5%B0%8F%E9%AB%98%E5%BA%A6%E6%A0%91.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0312 | [戳气球](https://leetcode.cn/problems/burst-balloons/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0312.%20%E6%88%B3%E6%B0%94%E7%90%83.md) | 数组、动态规划 | 困难 | -| 0315 | [计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0315.%20%E8%AE%A1%E7%AE%97%E5%8F%B3%E4%BE%A7%E5%B0%8F%E4%BA%8E%E5%BD%93%E5%89%8D%E5%85%83%E7%B4%A0%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | -| 0316 | [去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0316.%20%E5%8E%BB%E9%99%A4%E9%87%8D%E5%A4%8D%E5%AD%97%E6%AF%8D.md) | 栈、贪心、字符串、单调栈 | 中等 | -| 0318 | [最大单词长度乘积](https://leetcode.cn/problems/maximum-product-of-word-lengths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0318.%20%E6%9C%80%E5%A4%A7%E5%8D%95%E8%AF%8D%E9%95%BF%E5%BA%A6%E4%B9%98%E7%A7%AF.md) | 位运算、数组、字符串 | 中等 | -| 0322 | [零钱兑换](https://leetcode.cn/problems/coin-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0322.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.md) | 广度优先搜索、数组、动态规划 | 中等 | -| 0323 | [无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0323.%20%E6%97%A0%E5%90%91%E5%9B%BE%E4%B8%AD%E8%BF%9E%E9%80%9A%E5%88%86%E9%87%8F%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0324 | [摆动排序 II](https://leetcode.cn/problems/wiggle-sort-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0324.%20%E6%91%86%E5%8A%A8%E6%8E%92%E5%BA%8F%20II.md) | 数组、分治、快速选择、排序 | 中等 | -| 0326 | [3 的幂](https://leetcode.cn/problems/power-of-three/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0326.%203%20%E7%9A%84%E5%B9%82.md) | 递归、数学 | 简单 | -| 0328 | [奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0328.%20%E5%A5%87%E5%81%B6%E9%93%BE%E8%A1%A8.md) | 链表 | 中等 | -| 0329 | [矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0329.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | -| 0334 | [递增的三元子序列](https://leetcode.cn/problems/increasing-triplet-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0334.%20%E9%80%92%E5%A2%9E%E7%9A%84%E4%B8%89%E5%85%83%E5%AD%90%E5%BA%8F%E5%88%97.md) | 贪心、数组 | 中等 | -| 0336 | [回文对](https://leetcode.cn/problems/palindrome-pairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0336.%20%E5%9B%9E%E6%96%87%E5%AF%B9.md) | 字典树、数组、哈希表、字符串 | 困难 | -| 0337 | [打家劫舍 III](https://leetcode.cn/problems/house-robber-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0337.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D%20III.md) | 树、深度优先搜索、动态规划、二叉树 | 中等 | -| 0338 | [比特位计数](https://leetcode.cn/problems/counting-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0338.%20%E6%AF%94%E7%89%B9%E4%BD%8D%E8%AE%A1%E6%95%B0.md) | 位运算、动态规划 | 简单 | -| 0340 | [至多包含 K 个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0340.%20%E8%87%B3%E5%A4%9A%E5%8C%85%E5%90%AB%20K%20%E4%B8%AA%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0341 | [扁平化嵌套列表迭代器](https://leetcode.cn/problems/flatten-nested-list-iterator/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0341.%20%E6%89%81%E5%B9%B3%E5%8C%96%E5%B5%8C%E5%A5%97%E5%88%97%E8%A1%A8%E8%BF%AD%E4%BB%A3%E5%99%A8.md) | 栈、树、深度优先搜索、设计、队列、迭代器 | 中等 | -| 0342 | [4的幂](https://leetcode.cn/problems/power-of-four/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0342.%204%E7%9A%84%E5%B9%82.md) | 位运算、递归、数学 | 简单 | -| 0343 | [整数拆分](https://leetcode.cn/problems/integer-break/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0343.%20%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.md) | 数学、动态规划 | 中等 | -| 0344 | [反转字符串](https://leetcode.cn/problems/reverse-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0344.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0345 | [反转字符串中的元音字母](https://leetcode.cn/problems/reverse-vowels-of-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0345.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%85%83%E9%9F%B3%E5%AD%97%E6%AF%8D.md) | 双指针、字符串 | 简单 | -| 0346 | [数据流中的移动平均值](https://leetcode.cn/problems/moving-average-from-data-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0346.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E7%A7%BB%E5%8A%A8%E5%B9%B3%E5%9D%87%E5%80%BC.md) | 设计、队列、数组、数据流 | 简单 | -| 0347 | [前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0347.%20%E5%89%8D%20K%20%E4%B8%AA%E9%AB%98%E9%A2%91%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | -| 0349 | [两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0349.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0350 | [两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0350.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86%20II.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0351 | [安卓系统手势解锁](https://leetcode.cn/problems/android-unlock-patterns/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0351.%20%E5%AE%89%E5%8D%93%E7%B3%BB%E7%BB%9F%E6%89%8B%E5%8A%BF%E8%A7%A3%E9%94%81.md) | 动态规划、回溯 | 中等 | -| 0354 | [俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0354.%20%E4%BF%84%E7%BD%97%E6%96%AF%E5%A5%97%E5%A8%83%E4%BF%A1%E5%B0%81%E9%97%AE%E9%A2%98.md) | 数组、二分查找、动态规划、排序 | 困难 | -| 0357 | [统计各位数字都不同的数字个数](https://leetcode.cn/problems/count-numbers-with-unique-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0357.%20%E7%BB%9F%E8%AE%A1%E5%90%84%E4%BD%8D%E6%95%B0%E5%AD%97%E9%83%BD%E4%B8%8D%E5%90%8C%E7%9A%84%E6%95%B0%E5%AD%97%E4%B8%AA%E6%95%B0.md) | 数学、动态规划、回溯 | 中等 | -| 0359 | [日志速率限制器](https://leetcode.cn/problems/logger-rate-limiter/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0359.%20%E6%97%A5%E5%BF%97%E9%80%9F%E7%8E%87%E9%99%90%E5%88%B6%E5%99%A8.md) | 设计、哈希表 | 简单 | -| 0360 | [有序转化数组](https://leetcode.cn/problems/sort-transformed-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0360.%20%E6%9C%89%E5%BA%8F%E8%BD%AC%E5%8C%96%E6%95%B0%E7%BB%84.md) | 数组、数学、双指针、排序 | 中等 | -| 0367 | [有效的完全平方数](https://leetcode.cn/problems/valid-perfect-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0367.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md) | 数学、二分查找 | 简单 | -| 0370 | [区间加法](https://leetcode.cn/problems/range-addition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0370.%20%E5%8C%BA%E9%97%B4%E5%8A%A0%E6%B3%95.md) | 数组、前缀和 | 中等 | -| 0371 | [两整数之和](https://leetcode.cn/problems/sum-of-two-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0371.%20%E4%B8%A4%E6%95%B4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 位运算、数学 | 中等 | -| 0374 | [猜数字大小](https://leetcode.cn/problems/guess-number-higher-or-lower/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0374.%20%E7%8C%9C%E6%95%B0%E5%AD%97%E5%A4%A7%E5%B0%8F.md) | 二分查找、交互 | 简单 | -| 0375 | [猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0375.%20%E7%8C%9C%E6%95%B0%E5%AD%97%E5%A4%A7%E5%B0%8F%20II.md) | 数学、动态规划、博弈 | 中等 | -| 0376 | [摆动序列](https://leetcode.cn/problems/wiggle-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0376.%20%E6%91%86%E5%8A%A8%E5%BA%8F%E5%88%97.md) | 贪心、数组、动态规划 | 中等 | -| 0377 | [组合总和 Ⅳ](https://leetcode.cn/problems/combination-sum-iv/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0377.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C%20%E2%85%A3.md) | 数组、动态规划 | 中等 | -| 0378 | [有序矩阵中第 K 小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0378.%20%E6%9C%89%E5%BA%8F%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%AC%AC%20K%20%E5%B0%8F%E7%9A%84%E5%85%83%E7%B4%A0.md) | 数组、二分查找、矩阵、排序、堆(优先队列) | 中等 | -| 0380 | [O(1) 时间插入、删除和获取随机元素](https://leetcode.cn/problems/insert-delete-getrandom-o1/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0380.%20O%281%29%20%E6%97%B6%E9%97%B4%E6%8F%92%E5%85%A5%E3%80%81%E5%88%A0%E9%99%A4%E5%92%8C%E8%8E%B7%E5%8F%96%E9%9A%8F%E6%9C%BA%E5%85%83%E7%B4%A0.md) | 设计、数组、哈希表、数学、随机化 | 中等 | -| 0383 | [赎金信](https://leetcode.cn/problems/ransom-note/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0383.%20%E8%B5%8E%E9%87%91%E4%BF%A1.md) | 哈希表、字符串、计数 | 简单 | -| 0384 | [打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0384.%20%E6%89%93%E4%B9%B1%E6%95%B0%E7%BB%84.md) | 数组、数学、随机化 | 中等 | -| 0386 | [字典序排数](https://leetcode.cn/problems/lexicographical-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0386.%20%E5%AD%97%E5%85%B8%E5%BA%8F%E6%8E%92%E6%95%B0.md) | 深度优先搜索、字典树 | 中等 | -| 0387 | [字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0387.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%94%AF%E4%B8%80%E5%AD%97%E7%AC%A6.md) | 队列、哈希表、字符串、计数 | 简单 | -| 0389 | [找不同](https://leetcode.cn/problems/find-the-difference/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0389.%20%E6%89%BE%E4%B8%8D%E5%90%8C.md) | 位运算、哈希表、字符串、排序 | 简单 | -| 0391 | [完美矩形](https://leetcode.cn/problems/perfect-rectangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0391.%20%E5%AE%8C%E7%BE%8E%E7%9F%A9%E5%BD%A2.md) | 数组、扫描线 | 困难 | -| 0392 | [判断子序列](https://leetcode.cn/problems/is-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0392.%20%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.md) | 双指针、字符串、动态规划 | 简单 | -| 0394 | [字符串解码](https://leetcode.cn/problems/decode-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0394.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A7%A3%E7%A0%81.md) | 栈、递归、字符串 | 中等 | -| 0395 | [至少有 K 个重复字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0395.%20%E8%87%B3%E5%B0%91%E6%9C%89%20K%20%E4%B8%AA%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、分治、滑动窗口 | 中等 | -| 0399 | [除法求值](https://leetcode.cn/problems/evaluate-division/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0399.%20%E9%99%A4%E6%B3%95%E6%B1%82%E5%80%BC.md) | 深度优先搜索、广度优先搜索、并查集、图、数组、最短路 | 中等 | -| 0400 | [第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0400.%20%E7%AC%AC%20N%20%E4%BD%8D%E6%95%B0%E5%AD%97.md) | 数学、二分查找 | 中等 | -| 0403 | [青蛙过河](https://leetcode.cn/problems/frog-jump/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0403.%20%E9%9D%92%E8%9B%99%E8%BF%87%E6%B2%B3.md) | 数组、动态规划 | 困难 | -| 0404 | [左叶子之和](https://leetcode.cn/problems/sum-of-left-leaves/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0404.%20%E5%B7%A6%E5%8F%B6%E5%AD%90%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0405 | [数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0405.%20%E6%95%B0%E5%AD%97%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E6%95%B0.md) | 位运算、数学 | 简单 | -| 0406 | [根据身高重建队列](https://leetcode.cn/problems/queue-reconstruction-by-height/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0406.%20%E6%A0%B9%E6%8D%AE%E8%BA%AB%E9%AB%98%E9%87%8D%E5%BB%BA%E9%98%9F%E5%88%97.md) | 贪心、树状数组、线段树、数组、排序 | 中等 | -| 0409 | [最长回文串](https://leetcode.cn/problems/longest-palindrome/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0409.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E4%B8%B2.md) | 贪心、哈希表、字符串 | 简单 | -| 0410 | [分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0410.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | -| 0412 | [Fizz Buzz](https://leetcode.cn/problems/fizz-buzz/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0412.%20Fizz%20Buzz.md) | 数学、字符串、模拟 | 简单 | -| 0415 | [字符串相加](https://leetcode.cn/problems/add-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md) | 数学、字符串、模拟 | 简单 | -| 0416 | [分割等和子集](https://leetcode.cn/problems/partition-equal-subset-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0416.%20%E5%88%86%E5%89%B2%E7%AD%89%E5%92%8C%E5%AD%90%E9%9B%86.md) | 数组、动态规划 | 中等 | -| 0417 | [太平洋大西洋水流问题](https://leetcode.cn/problems/pacific-atlantic-water-flow/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0417.%20%E5%A4%AA%E5%B9%B3%E6%B4%8B%E5%A4%A7%E8%A5%BF%E6%B4%8B%E6%B0%B4%E6%B5%81%E9%97%AE%E9%A2%98.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | -| 0421 | [数组中两个数的最大异或值](https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0421.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BC%82%E6%88%96%E5%80%BC.md) | 位运算、字典树、数组、哈希表 | 中等 | -| 0424 | [替换后的最长重复字符](https://leetcode.cn/problems/longest-repeating-character-replacement/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0424.%20%E6%9B%BF%E6%8D%A2%E5%90%8E%E7%9A%84%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0425 | [单词方块](https://leetcode.cn/problems/word-squares/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0425.%20%E5%8D%95%E8%AF%8D%E6%96%B9%E5%9D%97.md) | 字典树、数组、字符串、回溯 | 困难 | -| 0426 | [将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0426.%20%E5%B0%86%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%8E%92%E5%BA%8F%E7%9A%84%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | -| 0428 | [序列化和反序列化 N 叉树](https://leetcode.cn/problems/serialize-and-deserialize-n-ary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0428.%20%E5%BA%8F%E5%88%97%E5%8C%96%E5%92%8C%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%20N%20%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、字符串 | 困难 | -| 0429 | [N 叉树的层序遍历](https://leetcode.cn/problems/n-ary-tree-level-order-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0429.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 树、广度优先搜索 | 中等 | -| 0430 | [扁平化多级双向链表](https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0430.%20%E6%89%81%E5%B9%B3%E5%8C%96%E5%A4%9A%E7%BA%A7%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md) | 深度优先搜索、链表、双向链表 | 中等 | -| 0435 | [无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0435.%20%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.md) | 贪心、数组、动态规划、排序 | 中等 | -| 0437 | [路径总和 III](https://leetcode.cn/problems/path-sum-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0437.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C%20III.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0438 | [找到字符串中所有字母异位词](https://leetcode.cn/problems/find-all-anagrams-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0438.%20%E6%89%BE%E5%88%B0%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E6%89%80%E6%9C%89%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0443 | [压缩字符串](https://leetcode.cn/problems/string-compression/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0443.%20%E5%8E%8B%E7%BC%A9%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 中等 | -| 0445 | [两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0445.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0%20II.md) | 栈、链表、数学 | 中等 | -| 0447 | [回旋镖的数量](https://leetcode.cn/problems/number-of-boomerangs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0447.%20%E5%9B%9E%E6%97%8B%E9%95%96%E7%9A%84%E6%95%B0%E9%87%8F.md) | 数组、哈希表、数学 | 中等 | -| 0450 | [删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0450.%20%E5%88%A0%E9%99%A4%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md) | 树、二叉搜索树、二叉树 | 中等 | -| 0451 | [根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0451.%20%E6%A0%B9%E6%8D%AE%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E9%A2%91%E7%8E%87%E6%8E%92%E5%BA%8F.md) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | -| 0452 | [用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0452.%20%E7%94%A8%E6%9C%80%E5%B0%91%E6%95%B0%E9%87%8F%E7%9A%84%E7%AE%AD%E5%BC%95%E7%88%86%E6%B0%94%E7%90%83.md) | 贪心、数组、排序 | 中等 | -| 0454 | [四数相加 II](https://leetcode.cn/problems/4sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0454.%20%E5%9B%9B%E6%95%B0%E7%9B%B8%E5%8A%A0%20II.md) | 数组、哈希表 | 中等 | -| 0455 | [分发饼干](https://leetcode.cn/problems/assign-cookies/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0455.%20%E5%88%86%E5%8F%91%E9%A5%BC%E5%B9%B2.md) | 贪心、数组、双指针、排序 | 简单 | -| 0459 | [重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0459.%20%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 字符串、字符串匹配 | 简单 | -| 0461 | [汉明距离](https://leetcode.cn/problems/hamming-distance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0461.%20%E6%B1%89%E6%98%8E%E8%B7%9D%E7%A6%BB.md) | 位运算 | 简单 | -| 0463 | [岛屿的周长](https://leetcode.cn/problems/island-perimeter/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0463.%20%E5%B2%9B%E5%B1%BF%E7%9A%84%E5%91%A8%E9%95%BF.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | -| 0464 | [我能赢吗](https://leetcode.cn/problems/can-i-win/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0464.%20%E6%88%91%E8%83%BD%E8%B5%A2%E5%90%97.md) | 位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 | 中等 | -| 0467 | [环绕字符串中唯一的子字符串](https://leetcode.cn/problems/unique-substrings-in-wraparound-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0467.%20%E7%8E%AF%E7%BB%95%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E5%94%AF%E4%B8%80%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 0468 | [验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0468.%20%E9%AA%8C%E8%AF%81IP%E5%9C%B0%E5%9D%80.md) | 字符串 | 中等 | -| 0473 | [火柴拼正方形](https://leetcode.cn/problems/matchsticks-to-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0473.%20%E7%81%AB%E6%9F%B4%E6%8B%BC%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 0474 | [一和零](https://leetcode.cn/problems/ones-and-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0474.%20%E4%B8%80%E5%92%8C%E9%9B%B6.md) | 数组、字符串、动态规划 | 中等 | -| 0480 | [滑动窗口中位数](https://leetcode.cn/problems/sliding-window-median/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0480.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、哈希表、滑动窗口、堆(优先队列) | 困难 | -| 0485 | [最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0485.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 数组 | 简单 | -| 0486 | [预测赢家](https://leetcode.cn/problems/predict-the-winner/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0486.%20%E9%A2%84%E6%B5%8B%E8%B5%A2%E5%AE%B6.md) | 递归、数组、数学、动态规划、博弈 | 中等 | -| 0487 | [最大连续1的个数 II](https://leetcode.cn/problems/max-consecutive-ones-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0487.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20II.md) | 数组、动态规划、滑动窗口 | 中等 | -| 0491 | [递增子序列](https://leetcode.cn/problems/non-decreasing-subsequences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0491.%20%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.md) | 位运算、数组、哈希表、回溯 | 中等 | -| 0494 | [目标和](https://leetcode.cn/problems/target-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0494.%20%E7%9B%AE%E6%A0%87%E5%92%8C.md) | 数组、动态规划、回溯 | 中等 | -| 0496 | [下一个更大元素 I](https://leetcode.cn/problems/next-greater-element-i/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0496.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0%20I.md) | 栈、数组、哈希表、单调栈 | 简单 | -| 0498 | [对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0498.%20%E5%AF%B9%E8%A7%92%E7%BA%BF%E9%81%8D%E5%8E%86.md) | 数组、矩阵、模拟 | 中等 | -| 0501 | [二叉搜索树中的众数](https://leetcode.cn/problems/find-mode-in-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0501.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E4%BC%97%E6%95%B0.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| 0503 | [下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0503.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0%20II.md) | 栈、数组、单调栈 | 中等 | -| 0504 | [七进制数](https://leetcode.cn/problems/base-7/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0504.%20%E4%B8%83%E8%BF%9B%E5%88%B6%E6%95%B0.md) | 数学 | 简单 | -| 0506 | [相对名次](https://leetcode.cn/problems/relative-ranks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0506.%20%E7%9B%B8%E5%AF%B9%E5%90%8D%E6%AC%A1.md) | 数组、排序、堆(优先队列) | 简单 | -| 0509 | [斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0509.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| 0513 | [找树左下角的值](https://leetcode.cn/problems/find-bottom-left-tree-value/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0513.%20%E6%89%BE%E6%A0%91%E5%B7%A6%E4%B8%8B%E8%A7%92%E7%9A%84%E5%80%BC.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0515 | [在每个树行中找最大值](https://leetcode.cn/problems/find-largest-value-in-each-tree-row/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0515.%20%E5%9C%A8%E6%AF%8F%E4%B8%AA%E6%A0%91%E8%A1%8C%E4%B8%AD%E6%89%BE%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0516 | [最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0516.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 中等 | -| 0518 | [零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0518.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2%20II.md) | 数组、动态规划 | 中等 | -| 0525 | [连续数组](https://leetcode.cn/problems/contiguous-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0525.%20%E8%BF%9E%E7%BB%AD%E6%95%B0%E7%BB%84.md) | 数组、哈希表、前缀和 | 中等 | -| 0526 | [优美的排列](https://leetcode.cn/problems/beautiful-arrangement/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0526.%20%E4%BC%98%E7%BE%8E%E7%9A%84%E6%8E%92%E5%88%97.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 0530 | [二叉搜索树的最小绝对差](https://leetcode.cn/problems/minimum-absolute-difference-in-bst/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0530.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BB%9D%E5%AF%B9%E5%B7%AE.md) | 树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树 | 简单 | -| 0538 | [把二叉搜索树转换为累加树](https://leetcode.cn/problems/convert-bst-to-greater-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0538.%20%E6%8A%8A%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BD%AC%E6%8D%A2%E4%B8%BA%E7%B4%AF%E5%8A%A0%E6%A0%91.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0539 | [最小时间差](https://leetcode.cn/problems/minimum-time-difference/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0539.%20%E6%9C%80%E5%B0%8F%E6%97%B6%E9%97%B4%E5%B7%AE.md) | 数组、数学、字符串、排序 | 中等 | -| 0542 | [01 矩阵](https://leetcode.cn/problems/01-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0542.%2001%20%E7%9F%A9%E9%98%B5.md) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | -| 0543 | [二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0543.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md) | 树、深度优先搜索、二叉树 | 简单 | -| 0546 | [移除盒子](https://leetcode.cn/problems/remove-boxes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0546.%20%E7%A7%BB%E9%99%A4%E7%9B%92%E5%AD%90.md) | 记忆化搜索、数组、动态规划 | 困难 | -| 0547 | [省份数量](https://leetcode.cn/problems/number-of-provinces/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0547.%20%E7%9C%81%E4%BB%BD%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0557 | [反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0557.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D%20III.md) | 双指针、字符串 | 简单 | -| 0560 | [和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0560.%20%E5%92%8C%E4%B8%BA%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、前缀和 | 中等 | -| 0561 | [数组拆分](https://leetcode.cn/problems/array-partition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0561.%20%E6%95%B0%E7%BB%84%E6%8B%86%E5%88%86.md) | 贪心、数组、计数排序、排序 | 简单 | -| 0567 | [字符串的排列](https://leetcode.cn/problems/permutation-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0567.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%8E%92%E5%88%97.md) | 哈希表、双指针、字符串、滑动窗口 | 中等 | -| 0575 | [分糖果](https://leetcode.cn/problems/distribute-candies/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0575.%20%E5%88%86%E7%B3%96%E6%9E%9C.md) | 数组、哈希表 | 简单 | -| 0576 | [出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0576.%20%E5%87%BA%E7%95%8C%E7%9A%84%E8%B7%AF%E5%BE%84%E6%95%B0.md) | 动态规划 | 中等 | -| 0583 | [两个字符串的删除操作](https://leetcode.cn/problems/delete-operation-for-two-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0583.%20%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%88%A0%E9%99%A4%E6%93%8D%E4%BD%9C.md) | 字符串、动态规划 | 中等 | -| 0589 | [N 叉树的前序遍历](https://leetcode.cn/problems/n-ary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0589.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索 | 简单 | -| 0590 | [N 叉树的后序遍历](https://leetcode.cn/problems/n-ary-tree-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0590.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索 | 简单 | -| 0599 | [两个列表的最小索引总和](https://leetcode.cn/problems/minimum-index-sum-of-two-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0599.%20%E4%B8%A4%E4%B8%AA%E5%88%97%E8%A1%A8%E7%9A%84%E6%9C%80%E5%B0%8F%E7%B4%A2%E5%BC%95%E6%80%BB%E5%92%8C.md) | 数组、哈希表、字符串 | 简单 | -| 0600 | [不含连续1的非负整数](https://leetcode.cn/problems/non-negative-integers-without-consecutive-ones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0600.%20%E4%B8%8D%E5%90%AB%E8%BF%9E%E7%BB%AD1%E7%9A%84%E9%9D%9E%E8%B4%9F%E6%95%B4%E6%95%B0.md) | 动态规划 | 困难 | -| 0611 | [有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0611.%20%E6%9C%89%E6%95%88%E4%B8%89%E8%A7%92%E5%BD%A2%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 贪心、数组、双指针、二分查找、排序 | 中等 | -| 0616 | [给字符串添加加粗标签](https://leetcode.cn/problems/add-bold-tag-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0616.%20%E7%BB%99%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%B7%BB%E5%8A%A0%E5%8A%A0%E7%B2%97%E6%A0%87%E7%AD%BE.md) | 字典树、数组、哈希表、字符串、字符串匹配 | 中等 | -| 0617 | [合并二叉树](https://leetcode.cn/problems/merge-two-binary-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0617.%20%E5%90%88%E5%B9%B6%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0621 | [任务调度器](https://leetcode.cn/problems/task-scheduler/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0621.%20%E4%BB%BB%E5%8A%A1%E8%B0%83%E5%BA%A6%E5%99%A8.md) | 贪心、数组、哈希表、计数、排序、堆(优先队列) | 中等 | -| 0622 | [设计循环队列](https://leetcode.cn/problems/design-circular-queue/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0622.%20%E8%AE%BE%E8%AE%A1%E5%BE%AA%E7%8E%AF%E9%98%9F%E5%88%97.md) | 设计、队列、数组、链表 | 中等 | -| 0633 | [平方数之和](https://leetcode.cn/problems/sum-of-square-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0633.%20%E5%B9%B3%E6%96%B9%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数学、双指针、二分查找 | 中等 | -| 0639 | [解码方法 II](https://leetcode.cn/problems/decode-ways-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0639.%20%E8%A7%A3%E7%A0%81%E6%96%B9%E6%B3%95%20II.md) | 字符串、动态规划 | 困难 | -| 0642 | [设计搜索自动补全系统](https://leetcode.cn/problems/design-search-autocomplete-system/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0642.%20%E8%AE%BE%E8%AE%A1%E6%90%9C%E7%B4%A2%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8%E7%B3%BB%E7%BB%9F.md) | 设计、字典树、字符串、数据流 | 困难 | -| 0643 | [子数组最大平均数 I](https://leetcode.cn/problems/maximum-average-subarray-i/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0643.%20%E5%AD%90%E6%95%B0%E7%BB%84%E6%9C%80%E5%A4%A7%E5%B9%B3%E5%9D%87%E6%95%B0%20I.md) | 数组、滑动窗口 | 简单 | -| 0647 | [回文子串](https://leetcode.cn/problems/palindromic-substrings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0647.%20%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 0648 | [单词替换](https://leetcode.cn/problems/replace-words/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0648.%20%E5%8D%95%E8%AF%8D%E6%9B%BF%E6%8D%A2.md) | 字典树、数组、哈希表、字符串 | 中等 | -| 0650 | [只有两个键的键盘](https://leetcode.cn/problems/2-keys-keyboard/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0650.%20%E5%8F%AA%E6%9C%89%E4%B8%A4%E4%B8%AA%E9%94%AE%E7%9A%84%E9%94%AE%E7%9B%98.md) | 数学、动态规划 | 中等 | -| 0652 | [寻找重复的子树](https://leetcode.cn/problems/find-duplicate-subtrees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0652.%20%E5%AF%BB%E6%89%BE%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E6%A0%91.md) | 树、深度优先搜索、哈希表、二叉树 | 中等 | -| 0653 | [两数之和 IV - 输入二叉搜索树](https://leetcode.cn/problems/two-sum-iv-input-is-a-bst/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0653.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C%20IV%20-%20%E8%BE%93%E5%85%A5%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉搜索树、哈希表、双指针、二叉树 | 简单 | -| 0654 | [最大二叉树](https://leetcode.cn/problems/maximum-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0654.%20%E6%9C%80%E5%A4%A7%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 栈、树、数组、分治、二叉树、单调栈 | 中等 | -| 0658 | [找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0658.%20%E6%89%BE%E5%88%B0%20K%20%E4%B8%AA%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E5%85%83%E7%B4%A0.md) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | -| 0662 | [二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0662.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%A4%A7%E5%AE%BD%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0664 | [奇怪的打印机](https://leetcode.cn/problems/strange-printer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0664.%20%E5%A5%87%E6%80%AA%E7%9A%84%E6%89%93%E5%8D%B0%E6%9C%BA.md) | 字符串、动态规划 | 困难 | -| 0665 | [非递减数列](https://leetcode.cn/problems/non-decreasing-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0665.%20%E9%9D%9E%E9%80%92%E5%87%8F%E6%95%B0%E5%88%97.md) | 数组 | 中等 | -| 0669 | [修剪二叉搜索树](https://leetcode.cn/problems/trim-a-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0669.%20%E4%BF%AE%E5%89%AA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0673 | [最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0673.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、动态规划 | 中等 | -| 0674 | [最长连续递增序列](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0674.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E9%80%92%E5%A2%9E%E5%BA%8F%E5%88%97.md) | 数组 | 简单 | -| 0676 | [实现一个魔法字典](https://leetcode.cn/problems/implement-magic-dictionary/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0676.%20%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E9%AD%94%E6%B3%95%E5%AD%97%E5%85%B8.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 0677 | [键值映射](https://leetcode.cn/problems/map-sum-pairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0677.%20%E9%94%AE%E5%80%BC%E6%98%A0%E5%B0%84.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 0678 | [有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0678.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 栈、贪心、字符串、动态规划 | 中等 | -| 0680 | [验证回文串 II](https://leetcode.cn/problems/valid-palindrome-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0680.%20%E9%AA%8C%E8%AF%81%E5%9B%9E%E6%96%87%E4%B8%B2%20II.md) | 贪心、双指针、字符串 | 简单 | -| 0683 | [K 个关闭的灯泡](https://leetcode.cn/problems/k-empty-slots/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0683.%20K%20%E4%B8%AA%E5%85%B3%E9%97%AD%E7%9A%84%E7%81%AF%E6%B3%A1.md) | 树状数组、数组、有序集合、滑动窗口 | 困难 | -| 0684 | [冗余连接](https://leetcode.cn/problems/redundant-connection/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0684.%20%E5%86%97%E4%BD%99%E8%BF%9E%E6%8E%A5.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0686 | [重复叠加字符串匹配](https://leetcode.cn/problems/repeated-string-match/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0686.%20%E9%87%8D%E5%A4%8D%E5%8F%A0%E5%8A%A0%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D.md) | 字符串、字符串匹配 | 中等 | -| 0687 | [最长同值路径](https://leetcode.cn/problems/longest-univalue-path/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0687.%20%E6%9C%80%E9%95%BF%E5%90%8C%E5%80%BC%E8%B7%AF%E5%BE%84.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0688 | [骑士在棋盘上的概率](https://leetcode.cn/problems/knight-probability-in-chessboard/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0688.%20%E9%AA%91%E5%A3%AB%E5%9C%A8%E6%A3%8B%E7%9B%98%E4%B8%8A%E7%9A%84%E6%A6%82%E7%8E%87.md) | 动态规划 | 中等 | -| 0690 | [员工的重要性](https://leetcode.cn/problems/employee-importance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0690.%20%E5%91%98%E5%B7%A5%E7%9A%84%E9%87%8D%E8%A6%81%E6%80%A7.md) | 深度优先搜索、广度优先搜索、哈希表 | 中等 | -| 0691 | [贴纸拼词](https://leetcode.cn/problems/stickers-to-spell-word/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0691.%20%E8%B4%B4%E7%BA%B8%E6%8B%BC%E8%AF%8D.md) | 位运算、数组、字符串、动态规划、回溯、状态压缩 | 困难 | -| 0695 | [岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0695.%20%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%9C%80%E5%A4%A7%E9%9D%A2%E7%A7%AF.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0698 | [划分为k个相等的子集](https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0698.%20%E5%88%92%E5%88%86%E4%B8%BAk%E4%B8%AA%E7%9B%B8%E7%AD%89%E7%9A%84%E5%AD%90%E9%9B%86.md) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | -| 0700 | [二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0700.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E6%90%9C%E7%B4%A2.md) | 树、二叉搜索树、二叉树 | 简单 | -| 0701 | [二叉搜索树中的插入操作](https://leetcode.cn/problems/insert-into-a-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0701.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E6%8F%92%E5%85%A5%E6%93%8D%E4%BD%9C.md) | 树、二叉搜索树、二叉树 | 中等 | -| 0702 | [搜索长度未知的有序数组](https://leetcode.cn/problems/search-in-a-sorted-array-of-unknown-size/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0702.%20%E6%90%9C%E7%B4%A2%E9%95%BF%E5%BA%A6%E6%9C%AA%E7%9F%A5%E7%9A%84%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、二分查找、交互 | 中等 | -| 0703 | [数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0703.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | -| 0704 | [二分查找](https://leetcode.cn/problems/binary-search/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0704.%20%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.md) | 数组、二分查找 | 简单 | -| 0705 | [设计哈希集合](https://leetcode.cn/problems/design-hashset/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0705.%20%E8%AE%BE%E8%AE%A1%E5%93%88%E5%B8%8C%E9%9B%86%E5%90%88.md) | 设计、数组、哈希表、链表、哈希函数 | 简单 | -| 0706 | [设计哈希映射](https://leetcode.cn/problems/design-hashmap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0706.%20%E8%AE%BE%E8%AE%A1%E5%93%88%E5%B8%8C%E6%98%A0%E5%B0%84.md) | 设计、数组、哈希表、链表、哈希函数 | 简单 | -| 0707 | [设计链表](https://leetcode.cn/problems/design-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0707.%20%E8%AE%BE%E8%AE%A1%E9%93%BE%E8%A1%A8.md) | 设计、链表 | 中等 | -| 0708 | [循环有序列表的插入](https://leetcode.cn/problems/insert-into-a-sorted-circular-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0708.%20%E5%BE%AA%E7%8E%AF%E6%9C%89%E5%BA%8F%E5%88%97%E8%A1%A8%E7%9A%84%E6%8F%92%E5%85%A5.md) | 链表 | 中等 | -| 0709 | [转换成小写字母](https://leetcode.cn/problems/to-lower-case/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0709.%20%E8%BD%AC%E6%8D%A2%E6%88%90%E5%B0%8F%E5%86%99%E5%AD%97%E6%AF%8D.md) | 字符串 | 简单 | -| 0713 | [乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0713.%20%E4%B9%98%E7%A7%AF%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、滑动窗口 | 中等 | -| 0714 | [买卖股票的最佳时机含手续费](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0714.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%E5%90%AB%E6%89%8B%E7%BB%AD%E8%B4%B9.md) | 贪心、数组 | 中等 | -| 0715 | [Range 模块](https://leetcode.cn/problems/range-module/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0715.%20Range%20%E6%A8%A1%E5%9D%97.md) | 设计、线段树、有序集合 | 困难 | -| 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| 0719 | [找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0719.%20%E6%89%BE%E5%87%BA%E7%AC%AC%20K%20%E5%B0%8F%E7%9A%84%E6%95%B0%E5%AF%B9%E8%B7%9D%E7%A6%BB.md) | 数组、双指针、二分查找、排序 | 困难 | -| 0720 | [词典中最长的单词](https://leetcode.cn/problems/longest-word-in-dictionary/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0720.%20%E8%AF%8D%E5%85%B8%E4%B8%AD%E6%9C%80%E9%95%BF%E7%9A%84%E5%8D%95%E8%AF%8D.md) | 字典树、数组、哈希表、字符串、排序 | 中等 | -| 0724 | [寻找数组的中心下标](https://leetcode.cn/problems/find-pivot-index/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0724.%20%E5%AF%BB%E6%89%BE%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E5%BF%83%E4%B8%8B%E6%A0%87.md) | 数组、前缀和 | 简单 | -| 0727 | [最小窗口子序列](https://leetcode.cn/problems/minimum-window-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0727.%20%E6%9C%80%E5%B0%8F%E7%AA%97%E5%8F%A3%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划、滑动窗口 | 困难 | -| 0729 | [我的日程安排表 I](https://leetcode.cn/problems/my-calendar-i/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0729.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20I.md) | 设计、线段树、二分查找、有序集合 | 中等 | -| 0731 | [我的日程安排表 II](https://leetcode.cn/problems/my-calendar-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0731.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20II.md) | 设计、线段树、二分查找、有序集合 | 中等 | -| 0732 | [我的日程安排表 III](https://leetcode.cn/problems/my-calendar-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0732.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20III.md) | 设计、线段树、二分查找、有序集合 | 困难 | -| 0733 | [图像渲染](https://leetcode.cn/problems/flood-fill/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0733.%20%E5%9B%BE%E5%83%8F%E6%B8%B2%E6%9F%93.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | -| 0735 | [行星碰撞](https://leetcode.cn/problems/asteroid-collision/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0735.%20%E8%A1%8C%E6%98%9F%E7%A2%B0%E6%92%9E.md) | 栈、数组、模拟 | 中等 | -| 0738 | [单调递增的数字](https://leetcode.cn/problems/monotone-increasing-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0738.%20%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.md) | 贪心、数学 | 中等 | -| 0739 | [每日温度](https://leetcode.cn/problems/daily-temperatures/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0739.%20%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.md) | 栈、数组、单调栈 | 中等 | -| 0744 | [寻找比目标字母大的最小字母](https://leetcode.cn/problems/find-smallest-letter-greater-than-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0744.%20%E5%AF%BB%E6%89%BE%E6%AF%94%E7%9B%AE%E6%A0%87%E5%AD%97%E6%AF%8D%E5%A4%A7%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%97%E6%AF%8D.md) | 数组、二分查找 | 简单 | -| 0746 | [使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0746.%20%E4%BD%BF%E7%94%A8%E6%9C%80%E5%B0%8F%E8%8A%B1%E8%B4%B9%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 数组、动态规划 | 简单 | -| 0752 | [打开转盘锁](https://leetcode.cn/problems/open-the-lock/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0752.%20%E6%89%93%E5%BC%80%E8%BD%AC%E7%9B%98%E9%94%81.md) | 广度优先搜索、数组、哈希表、字符串 | 中等 | -| 0758 | [字符串中的加粗单词](https://leetcode.cn/problems/bold-words-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0758.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8A%A0%E7%B2%97%E5%8D%95%E8%AF%8D.md) | 字典树、数组、哈希表、字符串、字符串匹配 | 中等 | -| 0763 | [划分字母区间](https://leetcode.cn/problems/partition-labels/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0763.%20%E5%88%92%E5%88%86%E5%AD%97%E6%AF%8D%E5%8C%BA%E9%97%B4.md) | 贪心、哈希表、双指针、字符串 | 中等 | -| 0765 | [情侣牵手](https://leetcode.cn/problems/couples-holding-hands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0765.%20%E6%83%85%E4%BE%A3%E7%89%B5%E6%89%8B.md) | 贪心、深度优先搜索、广度优先搜索、并查集、图 | 困难 | -| 0766 | [托普利茨矩阵](https://leetcode.cn/problems/toeplitz-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0766.%20%E6%89%98%E6%99%AE%E5%88%A9%E8%8C%A8%E7%9F%A9%E9%98%B5.md) | 数组、矩阵 | 简单 | -| 0771 | [宝石与石头](https://leetcode.cn/problems/jewels-and-stones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0771.%20%E5%AE%9D%E7%9F%B3%E4%B8%8E%E7%9F%B3%E5%A4%B4.md) | 哈希表、字符串 | 简单 | -| 0778 | [水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0778.%20%E6%B0%B4%E4%BD%8D%E4%B8%8A%E5%8D%87%E7%9A%84%E6%B3%B3%E6%B1%A0%E4%B8%AD%E6%B8%B8%E6%B3%B3.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | -| 0779 | [第K个语法符号](https://leetcode.cn/problems/k-th-symbol-in-grammar/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0779.%20%E7%AC%ACK%E4%B8%AA%E8%AF%AD%E6%B3%95%E7%AC%A6%E5%8F%B7.md) | 位运算、递归、数学 | 中等 | -| 0783 | [二叉搜索树节点最小距离](https://leetcode.cn/problems/minimum-distance-between-bst-nodes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0783.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%8A%82%E7%82%B9%E6%9C%80%E5%B0%8F%E8%B7%9D%E7%A6%BB.md) | 树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树 | 简单 | -| 0784 | [字母大小写全排列](https://leetcode.cn/problems/letter-case-permutation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0784.%20%E5%AD%97%E6%AF%8D%E5%A4%A7%E5%B0%8F%E5%86%99%E5%85%A8%E6%8E%92%E5%88%97.md) | 位运算、字符串、回溯 | 中等 | -| 0785 | [判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0785.%20%E5%88%A4%E6%96%AD%E4%BA%8C%E5%88%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0788 | [旋转数字](https://leetcode.cn/problems/rotated-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0788.%20%E6%97%8B%E8%BD%AC%E6%95%B0%E5%AD%97.md) | 数学、动态规划 | 中等 | -| 0795 | [区间子数组个数](https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0795.%20%E5%8C%BA%E9%97%B4%E5%AD%90%E6%95%B0%E7%BB%84%E4%B8%AA%E6%95%B0.md) | 数组、双指针 | 中等 | -| 0796 | [旋转字符串](https://leetcode.cn/problems/rotate-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0796.%20%E6%97%8B%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 字符串、字符串匹配 | 简单 | -| 0797 | [所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0797.%20%E6%89%80%E6%9C%89%E5%8F%AF%E8%83%BD%E7%9A%84%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | -| 0800 | [相似 RGB 颜色](https://leetcode.cn/problems/similar-rgb-color/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0800.%20%E7%9B%B8%E4%BC%BC%20RGB%20%E9%A2%9C%E8%89%B2.md) | 数学、字符串、枚举 | 简单 | -| 0801 | [使序列递增的最小交换次数](https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0801.%20%E4%BD%BF%E5%BA%8F%E5%88%97%E9%80%92%E5%A2%9E%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0.md) | 数组、动态规划 | 困难 | -| 0802 | [找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0802.%20%E6%89%BE%E5%88%B0%E6%9C%80%E7%BB%88%E7%9A%84%E5%AE%89%E5%85%A8%E7%8A%B6%E6%80%81.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0803 | [打砖块](https://leetcode.cn/problems/bricks-falling-when-hit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0803.%20%E6%89%93%E7%A0%96%E5%9D%97.md) | 并查集、数组、矩阵 | 困难 | -| 0804 | [唯一摩尔斯密码词](https://leetcode.cn/problems/unique-morse-code-words/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0804.%20%E5%94%AF%E4%B8%80%E6%91%A9%E5%B0%94%E6%96%AF%E5%AF%86%E7%A0%81%E8%AF%8D.md) | 数组、哈希表、字符串 | 简单 | -| 0806 | [写字符串需要的行数](https://leetcode.cn/problems/number-of-lines-to-write-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0806.%20%E5%86%99%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%9C%80%E8%A6%81%E7%9A%84%E8%A1%8C%E6%95%B0.md) | 数组、字符串 | 简单 | -| 0811 | [子域名访问计数](https://leetcode.cn/problems/subdomain-visit-count/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0811.%20%E5%AD%90%E5%9F%9F%E5%90%8D%E8%AE%BF%E9%97%AE%E8%AE%A1%E6%95%B0.md) | 数组、哈希表、字符串、计数 | 中等 | -| 0814 | [二叉树剪枝](https://leetcode.cn/problems/binary-tree-pruning/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0814.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E5%89%AA%E6%9E%9D.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0819 | [最常见的单词](https://leetcode.cn/problems/most-common-word/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0819.%20%E6%9C%80%E5%B8%B8%E8%A7%81%E7%9A%84%E5%8D%95%E8%AF%8D.md) | 哈希表、字符串、计数 | 简单 | -| 0820 | [单词的压缩编码](https://leetcode.cn/problems/short-encoding-of-words/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0820.%20%E5%8D%95%E8%AF%8D%E7%9A%84%E5%8E%8B%E7%BC%A9%E7%BC%96%E7%A0%81.md) | 字典树、数组、哈希表、字符串 | 中等 | -| 0821 | [字符的最短距离](https://leetcode.cn/problems/shortest-distance-to-a-character/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0821.%20%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%9D%E7%A6%BB.md) | 数组、双指针、字符串 | 简单 | -| 0824 | [山羊拉丁文](https://leetcode.cn/problems/goat-latin/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0824.%20%E5%B1%B1%E7%BE%8A%E6%8B%89%E4%B8%81%E6%96%87.md) | 字符串 | 简单 | -| 0830 | [较大分组的位置](https://leetcode.cn/problems/positions-of-large-groups/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0830.%20%E8%BE%83%E5%A4%A7%E5%88%86%E7%BB%84%E7%9A%84%E4%BD%8D%E7%BD%AE.md) | 字符串 | 简单 | -| 0832 | [翻转图像](https://leetcode.cn/problems/flipping-an-image/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0832.%20%E7%BF%BB%E8%BD%AC%E5%9B%BE%E5%83%8F.md) | 数组、双指针、矩阵、模拟 | 简单 | -| 0834 | [树中距离之和](https://leetcode.cn/problems/sum-of-distances-in-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0834.%20%E6%A0%91%E4%B8%AD%E8%B7%9D%E7%A6%BB%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、图、动态规划 | 困难 | -| 0836 | [矩形重叠](https://leetcode.cn/problems/rectangle-overlap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0836.%20%E7%9F%A9%E5%BD%A2%E9%87%8D%E5%8F%A0.md) | 几何、数学 | 简单 | -| 0841 | [钥匙和房间](https://leetcode.cn/problems/keys-and-rooms/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0841.%20%E9%92%A5%E5%8C%99%E5%92%8C%E6%88%BF%E9%97%B4.md) | 深度优先搜索、广度优先搜索、图 | 中等 | -| 0844 | [比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0844.%20%E6%AF%94%E8%BE%83%E5%90%AB%E9%80%80%E6%A0%BC%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 栈、双指针、字符串、模拟 | 简单 | -| 0845 | [数组中的最长山脉](https://leetcode.cn/problems/longest-mountain-in-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0845.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E9%95%BF%E5%B1%B1%E8%84%89.md) | 数组、双指针、动态规划、枚举 | 中等 | -| 0846 | [一手顺子](https://leetcode.cn/problems/hand-of-straights/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0846.%20%E4%B8%80%E6%89%8B%E9%A1%BA%E5%AD%90.md) | 贪心、数组、哈希表、排序 | 中等 | -| 0847 | [访问所有节点的最短路径](https://leetcode.cn/problems/shortest-path-visiting-all-nodes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0847.%20%E8%AE%BF%E9%97%AE%E6%89%80%E6%9C%89%E8%8A%82%E7%82%B9%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md) | 位运算、广度优先搜索、图、动态规划、状态压缩 | 困难 | -| 0850 | [矩形面积 II](https://leetcode.cn/problems/rectangle-area-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0850.%20%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF%20II.md) | 线段树、数组、有序集合、扫描线 | 困难 | -| 0851 | [喧闹和富有](https://leetcode.cn/problems/loud-and-rich/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0851.%20%E5%96%A7%E9%97%B9%E5%92%8C%E5%AF%8C%E6%9C%89.md) | 深度优先搜索、图、拓扑排序、数组 | 中等 | -| 0852 | [山脉数组的峰顶索引](https://leetcode.cn/problems/peak-index-in-a-mountain-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0852.%20%E5%B1%B1%E8%84%89%E6%95%B0%E7%BB%84%E7%9A%84%E5%B3%B0%E9%A1%B6%E7%B4%A2%E5%BC%95.md) | 数组、二分查找 | 中等 | -| 0860 | [柠檬水找零](https://leetcode.cn/problems/lemonade-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0860.%20%E6%9F%A0%E6%AA%AC%E6%B0%B4%E6%89%BE%E9%9B%B6.md) | 贪心、数组 | 简单 | -| 0861 | [翻转矩阵后的得分](https://leetcode.cn/problems/score-after-flipping-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0861.%20%E7%BF%BB%E8%BD%AC%E7%9F%A9%E9%98%B5%E5%90%8E%E7%9A%84%E5%BE%97%E5%88%86.md) | 贪心、位运算、数组、矩阵 | 中等 | -| 0862 | [和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0862.%20%E5%92%8C%E8%87%B3%E5%B0%91%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | -| 0867 | [转置矩阵](https://leetcode.cn/problems/transpose-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0867.%20%E8%BD%AC%E7%BD%AE%E7%9F%A9%E9%98%B5.md) | 数组、矩阵、模拟 | 简单 | -| 0868 | [二进制间距](https://leetcode.cn/problems/binary-gap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0868.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E9%97%B4%E8%B7%9D.md) | 位运算 | 简单 | -| 0872 | [叶子相似的树](https://leetcode.cn/problems/leaf-similar-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0872.%20%E5%8F%B6%E5%AD%90%E7%9B%B8%E4%BC%BC%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、二叉树 | 简单 | -| 0873 | [最长的斐波那契子序列的长度](https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0873.%20%E6%9C%80%E9%95%BF%E7%9A%84%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E9%95%BF%E5%BA%A6.md) | 数组、哈希表、动态规划 | 中等 | -| 0875 | [爱吃香蕉的珂珂](https://leetcode.cn/problems/koko-eating-bananas/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0875.%20%E7%88%B1%E5%90%83%E9%A6%99%E8%95%89%E7%9A%84%E7%8F%82%E7%8F%82.md) | 数组、二分查找 | 中等 | -| 0876 | [链表的中间结点](https://leetcode.cn/problems/middle-of-the-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0876.%20%E9%93%BE%E8%A1%A8%E7%9A%84%E4%B8%AD%E9%97%B4%E7%BB%93%E7%82%B9.md) | 链表、双指针 | 简单 | -| 0877 | [石子游戏](https://leetcode.cn/problems/stone-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0877.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F.md) | 数组、数学、动态规划、博弈 | 中等 | -| 0881 | [救生艇](https://leetcode.cn/problems/boats-to-save-people/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0881.%20%E6%95%91%E7%94%9F%E8%89%87.md) | 贪心、数组、双指针、排序 | 中等 | -| 0884 | [两句话中的不常见单词](https://leetcode.cn/problems/uncommon-words-from-two-sentences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0884.%20%E4%B8%A4%E5%8F%A5%E8%AF%9D%E4%B8%AD%E7%9A%84%E4%B8%8D%E5%B8%B8%E8%A7%81%E5%8D%95%E8%AF%8D.md) | 哈希表、字符串 | 简单 | -| 0886 | [可能的二分法](https://leetcode.cn/problems/possible-bipartition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0886.%20%E5%8F%AF%E8%83%BD%E7%9A%84%E4%BA%8C%E5%88%86%E6%B3%95.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0887 | [鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0887.%20%E9%B8%A1%E8%9B%8B%E6%8E%89%E8%90%BD.md) | 数学、二分查找、动态规划 | 困难 | -| 0889 | [根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0889.%20%E6%A0%B9%E6%8D%AE%E5%89%8D%E5%BA%8F%E5%92%8C%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | -| 0892 | [三维形体的表面积](https://leetcode.cn/problems/surface-area-of-3d-shapes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0892.%20%E4%B8%89%E7%BB%B4%E5%BD%A2%E4%BD%93%E7%9A%84%E8%A1%A8%E9%9D%A2%E7%A7%AF.md) | 几何、数组、数学、矩阵 | 简单 | -| 0897 | [递增顺序搜索树](https://leetcode.cn/problems/increasing-order-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0897.%20%E9%80%92%E5%A2%9E%E9%A1%BA%E5%BA%8F%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 栈、树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| 0900 | [RLE 迭代器](https://leetcode.cn/problems/rle-iterator/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0900.%20RLE%20%E8%BF%AD%E4%BB%A3%E5%99%A8.md) | 设计、数组、计数、迭代器 | 中等 | -| 0901 | [股票价格跨度](https://leetcode.cn/problems/online-stock-span/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0901.%20%E8%82%A1%E7%A5%A8%E4%BB%B7%E6%A0%BC%E8%B7%A8%E5%BA%A6.md) | 栈、设计、数据流、单调栈 | 中等 | -| 0902 | [最大为 N 的数字组合](https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0902.%20%E6%9C%80%E5%A4%A7%E4%B8%BA%20N%20%E7%9A%84%E6%95%B0%E5%AD%97%E7%BB%84%E5%90%88.md) | 数组、数学、字符串、二分查找、动态规划 | 困难 | -| 0904 | [水果成篮](https://leetcode.cn/problems/fruit-into-baskets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0904.%20%E6%B0%B4%E6%9E%9C%E6%88%90%E7%AF%AE.md) | 数组、哈希表、滑动窗口 | 中等 | -| 0908 | [最小差值 I](https://leetcode.cn/problems/smallest-range-i/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0908.%20%E6%9C%80%E5%B0%8F%E5%B7%AE%E5%80%BC%20I.md) | 数组、数学 | 简单 | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0918 | [环形子数组的最大和](https://leetcode.cn/problems/maximum-sum-circular-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0918.%20%E7%8E%AF%E5%BD%A2%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md) | 队列、数组、分治、动态规划、单调队列 | 中等 | -| 0919 | [完全二叉树插入器](https://leetcode.cn/problems/complete-binary-tree-inserter/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0919.%20%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E6%8F%92%E5%85%A5%E5%99%A8.md) | 树、广度优先搜索、设计、二叉树 | 中等 | -| 0921 | [使括号有效的最少添加](https://leetcode.cn/problems/minimum-add-to-make-parentheses-valid/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0921.%20%E4%BD%BF%E6%8B%AC%E5%8F%B7%E6%9C%89%E6%95%88%E7%9A%84%E6%9C%80%E5%B0%91%E6%B7%BB%E5%8A%A0.md) | 栈、贪心、字符串 | 中等 | -| 0925 | [长按键入](https://leetcode.cn/problems/long-pressed-name/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0925.%20%E9%95%BF%E6%8C%89%E9%94%AE%E5%85%A5.md) | 双指针、字符串 | 简单 | -| 0932 | [漂亮数组](https://leetcode.cn/problems/beautiful-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0932.%20%E6%BC%82%E4%BA%AE%E6%95%B0%E7%BB%84.md) | 数组、数学、分治 | 中等 | -| 0933 | [最近的请求次数](https://leetcode.cn/problems/number-of-recent-calls/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0933.%20%E6%9C%80%E8%BF%91%E7%9A%84%E8%AF%B7%E6%B1%82%E6%AC%A1%E6%95%B0.md) | 设计、队列、数据流 | 简单 | -| 0935 | [骑士拨号器](https://leetcode.cn/problems/knight-dialer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0935.%20%E9%AA%91%E5%A3%AB%E6%8B%A8%E5%8F%B7%E5%99%A8.md) | 动态规划 | 中等 | -| 0938 | [二叉搜索树的范围和](https://leetcode.cn/problems/range-sum-of-bst/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0938.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E8%8C%83%E5%9B%B4%E5%92%8C.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| 0946 | [验证栈序列](https://leetcode.cn/problems/validate-stack-sequences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0946.%20%E9%AA%8C%E8%AF%81%E6%A0%88%E5%BA%8F%E5%88%97.md) | 栈、数组、模拟 | 中等 | -| 0947 | [移除最多的同行或同列石头](https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0947.%20%E7%A7%BB%E9%99%A4%E6%9C%80%E5%A4%9A%E7%9A%84%E5%90%8C%E8%A1%8C%E6%88%96%E5%90%8C%E5%88%97%E7%9F%B3%E5%A4%B4.md) | 深度优先搜索、并查集、图 | 中等 | -| 0953 | [验证外星语词典](https://leetcode.cn/problems/verifying-an-alien-dictionary/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0953.%20%E9%AA%8C%E8%AF%81%E5%A4%96%E6%98%9F%E8%AF%AD%E8%AF%8D%E5%85%B8.md) | 数组、哈希表、字符串 | 简单 | -| 0958 | [二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0958.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%8C%E5%85%A8%E6%80%A7%E6%A3%80%E9%AA%8C.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0959 | [由斜杠划分区域](https://leetcode.cn/problems/regions-cut-by-slashes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0959.%20%E7%94%B1%E6%96%9C%E6%9D%A0%E5%88%92%E5%88%86%E5%8C%BA%E5%9F%9F.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0968 | [监控二叉树](https://leetcode.cn/problems/binary-tree-cameras/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0968.%20%E7%9B%91%E6%8E%A7%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0973 | [最接近原点的 K 个点](https://leetcode.cn/problems/k-closest-points-to-origin/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0973.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E5%8E%9F%E7%82%B9%E7%9A%84%20K%20%E4%B8%AA%E7%82%B9.md) | 几何、数组、数学、分治、快速选择、排序、堆(优先队列) | 中等 | -| 0974 | [和可被 K 整除的子数组](https://leetcode.cn/problems/subarray-sums-divisible-by-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0974.%20%E5%92%8C%E5%8F%AF%E8%A2%AB%20K%20%E6%95%B4%E9%99%A4%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、前缀和 | 中等 | -| 0976 | [三角形的最大周长](https://leetcode.cn/problems/largest-perimeter-triangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0976.%20%E4%B8%89%E8%A7%92%E5%BD%A2%E7%9A%84%E6%9C%80%E5%A4%A7%E5%91%A8%E9%95%BF.md) | 贪心、数组、数学、排序 | 简单 | -| 0977 | [有序数组的平方](https://leetcode.cn/problems/squares-of-a-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0977.%20%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.md) | 数组、双指针、排序 | 简单 | -| 0978 | [最长湍流子数组](https://leetcode.cn/problems/longest-turbulent-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0978.%20%E6%9C%80%E9%95%BF%E6%B9%8D%E6%B5%81%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划、滑动窗口 | 中等 | -| 0982 | [按位与为零的三元组](https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0982.%20%E6%8C%89%E4%BD%8D%E4%B8%8E%E4%B8%BA%E9%9B%B6%E7%9A%84%E4%B8%89%E5%85%83%E7%BB%84.md) | 位运算、数组、哈希表 | 困难 | -| 0990 | [等式方程的可满足性](https://leetcode.cn/problems/satisfiability-of-equality-equations/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0990.%20%E7%AD%89%E5%BC%8F%E6%96%B9%E7%A8%8B%E7%9A%84%E5%8F%AF%E6%BB%A1%E8%B6%B3%E6%80%A7.md) | 并查集、图、数组、字符串 | 中等 | -| 0992 | [K 个不同整数的子数组](https://leetcode.cn/problems/subarrays-with-k-different-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0992.%20K%20%E4%B8%AA%E4%B8%8D%E5%90%8C%E6%95%B4%E6%95%B0%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、计数、滑动窗口 | 困难 | -| 0993 | [二叉树的堂兄弟节点](https://leetcode.cn/problems/cousins-in-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0993.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%A0%82%E5%85%84%E5%BC%9F%E8%8A%82%E7%82%B9.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0995 | [K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0995.%20K%20%E8%BF%9E%E7%BB%AD%E4%BD%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BF%BB%E8%BD%AC%E6%AC%A1%E6%95%B0.md) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | -| 0999 | [可以被一步捕获的棋子数](https://leetcode.cn/problems/available-captures-for-rook/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0999.%20%E5%8F%AF%E4%BB%A5%E8%A2%AB%E4%B8%80%E6%AD%A5%E6%8D%95%E8%8E%B7%E7%9A%84%E6%A3%8B%E5%AD%90%E6%95%B0.md) | 数组、矩阵、模拟 | 简单 | -| 1000 | [合并石头的最低成本](https://leetcode.cn/problems/minimum-cost-to-merge-stones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1000.%20%E5%90%88%E5%B9%B6%E7%9F%B3%E5%A4%B4%E7%9A%84%E6%9C%80%E4%BD%8E%E6%88%90%E6%9C%AC.md) | 数组、动态规划、前缀和 | 困难 | -| 1002 | [查找共用字符](https://leetcode.cn/problems/find-common-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1002.%20%E6%9F%A5%E6%89%BE%E5%85%B1%E7%94%A8%E5%AD%97%E7%AC%A6.md) | 数组、哈希表、字符串 | 简单 | -| 1004 | [最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1004.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20III.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 1005 | [K 次取反后最大化的数组和](https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1005.%20K%20%E6%AC%A1%E5%8F%96%E5%8F%8D%E5%90%8E%E6%9C%80%E5%A4%A7%E5%8C%96%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.md) | 贪心、数组、排序 | 简单 | -| 1008 | [前序遍历构造二叉搜索树](https://leetcode.cn/problems/construct-binary-search-tree-from-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1008.%20%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 栈、树、二叉搜索树、数组、二叉树、单调栈 | 中等 | -| 1009 | [十进制整数的反码](https://leetcode.cn/problems/complement-of-base-10-integer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1009.%20%E5%8D%81%E8%BF%9B%E5%88%B6%E6%95%B4%E6%95%B0%E7%9A%84%E5%8F%8D%E7%A0%81.md) | 位运算 | 简单 | -| 1011 | [在 D 天内送达包裹的能力](https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1011.%20%E5%9C%A8%20D%20%E5%A4%A9%E5%86%85%E9%80%81%E8%BE%BE%E5%8C%85%E8%A3%B9%E7%9A%84%E8%83%BD%E5%8A%9B.md) | 数组、二分查找 | 中等 | -| 1012 | [至少有 1 位重复的数字](https://leetcode.cn/problems/numbers-with-repeated-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1012.%20%E8%87%B3%E5%B0%91%E6%9C%89%201%20%E4%BD%8D%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97.md) | 数学、动态规划 | 困难 | -| 1014 | [最佳观光组合](https://leetcode.cn/problems/best-sightseeing-pair/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1014.%20%E6%9C%80%E4%BD%B3%E8%A7%82%E5%85%89%E7%BB%84%E5%90%88.md) | 数组、动态规划 | 中等 | -| 1020 | [飞地的数量](https://leetcode.cn/problems/number-of-enclaves/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1020.%20%E9%A3%9E%E5%9C%B0%E7%9A%84%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 1021 | [删除最外层的括号](https://leetcode.cn/problems/remove-outermost-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1021.%20%E5%88%A0%E9%99%A4%E6%9C%80%E5%A4%96%E5%B1%82%E7%9A%84%E6%8B%AC%E5%8F%B7.md) | 栈、字符串 | 简单 | -| 1023 | [驼峰式匹配](https://leetcode.cn/problems/camelcase-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1023.%20%E9%A9%BC%E5%B3%B0%E5%BC%8F%E5%8C%B9%E9%85%8D.md) | 字典树、双指针、字符串、字符串匹配 | 中等 | -| 1025 | [除数博弈](https://leetcode.cn/problems/divisor-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1025.%20%E9%99%A4%E6%95%B0%E5%8D%9A%E5%BC%88.md) | 脑筋急转弯、数学、动态规划、博弈 | 简单 | -| 1028 | [从先序遍历还原二叉树](https://leetcode.cn/problems/recover-a-tree-from-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1028.%20%E4%BB%8E%E5%85%88%E5%BA%8F%E9%81%8D%E5%8E%86%E8%BF%98%E5%8E%9F%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、字符串、二叉树 | 困难 | -| 1029 | [两地调度](https://leetcode.cn/problems/two-city-scheduling/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1029.%20%E4%B8%A4%E5%9C%B0%E8%B0%83%E5%BA%A6.md) | 贪心、数组、排序 | 中等 | -| 1034 | [边界着色](https://leetcode.cn/problems/coloring-a-border/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1034.%20%E8%BE%B9%E7%95%8C%E7%9D%80%E8%89%B2.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | -| 1035 | [不相交的线](https://leetcode.cn/problems/uncrossed-lines/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1035.%20%E4%B8%8D%E7%9B%B8%E4%BA%A4%E7%9A%84%E7%BA%BF.md) | 数组、动态规划 | 中等 | -| 1037 | [有效的回旋镖](https://leetcode.cn/problems/valid-boomerang/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1037.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%9B%9E%E6%97%8B%E9%95%96.md) | 几何、数组、数学 | 简单 | -| 1038 | [从二叉搜索树到更大和树](https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1038.%20%E4%BB%8E%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E5%88%B0%E6%9B%B4%E5%A4%A7%E5%92%8C%E6%A0%91.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 1039 | [多边形三角剖分的最低得分](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1039.%20%E5%A4%9A%E8%BE%B9%E5%BD%A2%E4%B8%89%E8%A7%92%E5%89%96%E5%88%86%E7%9A%84%E6%9C%80%E4%BD%8E%E5%BE%97%E5%88%86.md) | 数组、动态规划 | 中等 | -| 1041 | [困于环中的机器人](https://leetcode.cn/problems/robot-bounded-in-circle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1041.%20%E5%9B%B0%E4%BA%8E%E7%8E%AF%E4%B8%AD%E7%9A%84%E6%9C%BA%E5%99%A8%E4%BA%BA.md) | 数学、字符串、模拟 | 中等 | -| 1047 | [删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1047.%20%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E7%9B%B8%E9%82%BB%E9%87%8D%E5%A4%8D%E9%A1%B9.md) | 栈、字符串 | 简单 | -| 1049 | [最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1049.%20%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7%9A%84%E9%87%8D%E9%87%8F%20II.md) | 数组、动态规划 | 中等 | -| 1051 | [高度检查器](https://leetcode.cn/problems/height-checker/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1051.%20%E9%AB%98%E5%BA%A6%E6%A3%80%E6%9F%A5%E5%99%A8.md) | 数组、计数排序、排序 | 简单 | -| 1052 | [爱生气的书店老板](https://leetcode.cn/problems/grumpy-bookstore-owner/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1052.%20%E7%88%B1%E7%94%9F%E6%B0%94%E7%9A%84%E4%B9%A6%E5%BA%97%E8%80%81%E6%9D%BF.md) | 数组、滑动窗口 | 中等 | -| 1065 | [字符串的索引对](https://leetcode.cn/problems/index-pairs-of-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1065.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E7%B4%A2%E5%BC%95%E5%AF%B9.md) | 字典树、数组、字符串、排序 | 简单 | -| 1079 | [活字印刷](https://leetcode.cn/problems/letter-tile-possibilities/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1079.%20%E6%B4%BB%E5%AD%97%E5%8D%B0%E5%88%B7.md) | 哈希表、字符串、回溯、计数 | 中等 | -| 1081 | [不同字符的最小子序列](https://leetcode.cn/problems/smallest-subsequence-of-distinct-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1081.%20%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%90%E5%BA%8F%E5%88%97.md) | 栈、贪心、字符串、单调栈 | 中等 | -| 1089 | [复写零](https://leetcode.cn/problems/duplicate-zeros/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1089.%20%E5%A4%8D%E5%86%99%E9%9B%B6.md) | 数组、双指针 | 简单 | -| 1091 | [二进制矩阵中的最短路径](https://leetcode.cn/problems/shortest-path-in-binary-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1091.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md) | 广度优先搜索、数组、矩阵 | 中等 | -| 1095 | [山脉数组中查找目标值](https://leetcode.cn/problems/find-in-mountain-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1095.%20%E5%B1%B1%E8%84%89%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E7%9B%AE%E6%A0%87%E5%80%BC.md) | 数组、二分查找、交互 | 困难 | -| 1099 | [小于 K 的两数之和](https://leetcode.cn/problems/two-sum-less-than-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1099.%20%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、二分查找、排序 | 简单 | -| 1100 | [长度为 K 的无重复字符子串](https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1100.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%20K%20%E7%9A%84%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 1103 | [分糖果 II](https://leetcode.cn/problems/distribute-candies-to-people/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1103.%20%E5%88%86%E7%B3%96%E6%9E%9C%20II.md) | 数学、模拟 | 简单 | -| 1108 | [IP 地址无效化](https://leetcode.cn/problems/defanging-an-ip-address/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1108.%20IP%20%E5%9C%B0%E5%9D%80%E6%97%A0%E6%95%88%E5%8C%96.md) | 字符串 | 简单 | -| 1109 | [航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1109.%20%E8%88%AA%E7%8F%AD%E9%A2%84%E8%AE%A2%E7%BB%9F%E8%AE%A1.md) | 数组、前缀和 | 中等 | -| 1110 | [删点成林](https://leetcode.cn/problems/delete-nodes-and-return-forest/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1110.%20%E5%88%A0%E7%82%B9%E6%88%90%E6%9E%97.md) | 树、深度优先搜索、数组、哈希表、二叉树 | 中等 | -| 1122 | [数组的相对排序](https://leetcode.cn/problems/relative-sort-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1122.%20%E6%95%B0%E7%BB%84%E7%9A%84%E7%9B%B8%E5%AF%B9%E6%8E%92%E5%BA%8F.md) | 数组、哈希表、计数排序、排序 | 简单 | -| 1136 | [并行课程](https://leetcode.cn/problems/parallel-courses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1136.%20%E5%B9%B6%E8%A1%8C%E8%AF%BE%E7%A8%8B.md) | 图、拓扑排序 | 中等 | -| 1137 | [第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1137.%20%E7%AC%AC%20N%20%E4%B8%AA%E6%B3%B0%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 1143 | [最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1143.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 中等 | -| 1151 | [最少交换次数来组合所有的 1](https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1151.%20%E6%9C%80%E5%B0%91%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0%E6%9D%A5%E7%BB%84%E5%90%88%E6%89%80%E6%9C%89%E7%9A%84%201.md) | 数组、滑动窗口 | 中等 | -| 1155 | [掷骰子等于目标和的方法数](https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1155.%20%E6%8E%B7%E9%AA%B0%E5%AD%90%E7%AD%89%E4%BA%8E%E7%9B%AE%E6%A0%87%E5%92%8C%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md) | 动态规划 | 中等 | -| 1161 | [最大层内元素和](https://leetcode.cn/problems/maximum-level-sum-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1161.%20%E6%9C%80%E5%A4%A7%E5%B1%82%E5%86%85%E5%85%83%E7%B4%A0%E5%92%8C.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 1176 | [健身计划评估](https://leetcode.cn/problems/diet-plan-performance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1176.%20%E5%81%A5%E8%BA%AB%E8%AE%A1%E5%88%92%E8%AF%84%E4%BC%B0.md) | 数组、滑动窗口 | 简单 | -| 1184 | [公交站间的距离](https://leetcode.cn/problems/distance-between-bus-stops/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1184.%20%E5%85%AC%E4%BA%A4%E7%AB%99%E9%97%B4%E7%9A%84%E8%B7%9D%E7%A6%BB.md) | 数组 | 简单 | -| 1202 | [交换字符串中的元素](https://leetcode.cn/problems/smallest-string-with-swaps/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1202.%20%E4%BA%A4%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%85%83%E7%B4%A0.md) | 深度优先搜索、广度优先搜索、并查集、哈希表、字符串 | 中等 | -| 1208 | [尽可能使字符串相等](https://leetcode.cn/problems/get-equal-substrings-within-budget/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1208.%20%E5%B0%BD%E5%8F%AF%E8%83%BD%E4%BD%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E7%AD%89.md) | 字符串、二分查找、前缀和、滑动窗口 | 中等 | -| 1217 | [玩筹码](https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1217.%20%E7%8E%A9%E7%AD%B9%E7%A0%81.md) | 贪心、数组、数学 | 简单 | -| 1220 | [统计元音字母序列的数目](https://leetcode.cn/problems/count-vowels-permutation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1220.%20%E7%BB%9F%E8%AE%A1%E5%85%83%E9%9F%B3%E5%AD%97%E6%AF%8D%E5%BA%8F%E5%88%97%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 动态规划 | 困难 | -| 1227 | [飞机座位分配概率](https://leetcode.cn/problems/airplane-seat-assignment-probability/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1227.%20%E9%A3%9E%E6%9C%BA%E5%BA%A7%E4%BD%8D%E5%88%86%E9%85%8D%E6%A6%82%E7%8E%87.md) | 脑筋急转弯、数学、动态规划、概率与统计 | 中等 | -| 1229 | [安排会议日程](https://leetcode.cn/problems/meeting-scheduler/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1229.%20%E5%AE%89%E6%8E%92%E4%BC%9A%E8%AE%AE%E6%97%A5%E7%A8%8B.md) | 数组、双指针、排序 | 中等 | -| 1232 | [缀点成线](https://leetcode.cn/problems/check-if-it-is-a-straight-line/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1232.%20%E7%BC%80%E7%82%B9%E6%88%90%E7%BA%BF.md) | 几何、数组、数学 | 简单 | -| 1245 | [树的直径](https://leetcode.cn/problems/tree-diameter/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1245.%20%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md) | 树、深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 1247 | [交换字符使得字符串相同](https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1247.%20%E4%BA%A4%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%BD%BF%E5%BE%97%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%90%8C.md) | 贪心、数学、字符串 | 中等 | -| 1253 | [重构 2 行二进制矩阵](https://leetcode.cn/problems/reconstruct-a-2-row-binary-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1253.%20%E9%87%8D%E6%9E%84%202%20%E8%A1%8C%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9F%A9%E9%98%B5.md) | 贪心、数组、矩阵 | 中等 | -| 1254 | [统计封闭岛屿的数目](https://leetcode.cn/problems/number-of-closed-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1254.%20%E7%BB%9F%E8%AE%A1%E5%B0%81%E9%97%AD%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 1261 | [在受污染的二叉树中查找元素](https://leetcode.cn/problems/find-elements-in-a-contaminated-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1261.%20%E5%9C%A8%E5%8F%97%E6%B1%A1%E6%9F%93%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%85%83%E7%B4%A0.md) | 树、深度优先搜索、广度优先搜索、设计、哈希表、二叉树 | 中等 | -| 1266 | [访问所有点的最小时间](https://leetcode.cn/problems/minimum-time-visiting-all-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1266.%20%E8%AE%BF%E9%97%AE%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%97%B6%E9%97%B4.md) | 几何、数组、数学 | 简单 | -| 1268 | [搜索推荐系统](https://leetcode.cn/problems/search-suggestions-system/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1268.%20%E6%90%9C%E7%B4%A2%E6%8E%A8%E8%8D%90%E7%B3%BB%E7%BB%9F.md) | 字典树、数组、字符串 | 中等 | -| 1281 | [整数的各位积和之差](https://leetcode.cn/problems/subtract-the-product-and-sum-of-digits-of-an-integer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1281.%20%E6%95%B4%E6%95%B0%E7%9A%84%E5%90%84%E4%BD%8D%E7%A7%AF%E5%92%8C%E4%B9%8B%E5%B7%AE.md) | 数学 | 简单 | -| 1296 | [划分数组为连续数字的集合](https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1296.%20%E5%88%92%E5%88%86%E6%95%B0%E7%BB%84%E4%B8%BA%E8%BF%9E%E7%BB%AD%E6%95%B0%E5%AD%97%E7%9A%84%E9%9B%86%E5%90%88.md) | 贪心、数组、哈希表、排序 | 中等 | -| 1300 | [转变数组后最接近目标值的数组和](https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1300.%20%E8%BD%AC%E5%8F%98%E6%95%B0%E7%BB%84%E5%90%8E%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、二分查找、排序 | 中等 | -| 1305 | [两棵二叉搜索树中的所有元素](https://leetcode.cn/problems/all-elements-in-two-binary-search-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1305.%20%E4%B8%A4%E6%A3%B5%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0.md) | 树、深度优先搜索、二叉搜索树、二叉树、排序 | 中等 | -| 1310 | [子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1310.%20%E5%AD%90%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%9F%A5%E8%AF%A2.md) | 位运算、数组、前缀和 | 中等 | -| 1313 | [解压缩编码列表](https://leetcode.cn/problems/decompress-run-length-encoded-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1313.%20%E8%A7%A3%E5%8E%8B%E7%BC%A9%E7%BC%96%E7%A0%81%E5%88%97%E8%A1%A8.md) | 数组 | 简单 | -| 1317 | [将整数转换为两个无零整数的和](https://leetcode.cn/problems/convert-integer-to-the-sum-of-two-no-zero-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1317.%20%E5%B0%86%E6%95%B4%E6%95%B0%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%B8%A4%E4%B8%AA%E6%97%A0%E9%9B%B6%E6%95%B4%E6%95%B0%E7%9A%84%E5%92%8C.md) | 数学 | 简单 | -| 1319 | [连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1319.%20%E8%BF%9E%E9%80%9A%E7%BD%91%E7%BB%9C%E7%9A%84%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 1324 | [竖直打印单词](https://leetcode.cn/problems/print-words-vertically/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1324.%20%E7%AB%96%E7%9B%B4%E6%89%93%E5%8D%B0%E5%8D%95%E8%AF%8D.md) | 数组、字符串、模拟 | 中等 | -| 1338 | [数组大小减半](https://leetcode.cn/problems/reduce-array-size-to-the-half/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1338.%20%E6%95%B0%E7%BB%84%E5%A4%A7%E5%B0%8F%E5%87%8F%E5%8D%8A.md) | 贪心、数组、哈希表、排序、堆(优先队列) | 中等 | -| 1343 | [大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1343.%20%E5%A4%A7%E5%B0%8F%E4%B8%BA%20K%20%E4%B8%94%E5%B9%B3%E5%9D%87%E5%80%BC%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E9%98%88%E5%80%BC%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md) | 数组、滑动窗口 | 中等 | -| 1344 | [时钟指针的夹角](https://leetcode.cn/problems/angle-between-hands-of-a-clock/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1344.%20%E6%97%B6%E9%92%9F%E6%8C%87%E9%92%88%E7%9A%84%E5%A4%B9%E8%A7%92.md) | 数学 | 中等 | -| 1347 | [制造字母异位词的最小步骤数](https://leetcode.cn/problems/minimum-number-of-steps-to-make-two-strings-anagram/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1347.%20%E5%88%B6%E9%80%A0%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E6%AD%A5%E9%AA%A4%E6%95%B0.md) | 哈希表、字符串、计数 | 中等 | -| 1349 | [参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1349.%20%E5%8F%82%E5%8A%A0%E8%80%83%E8%AF%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| 1358 | [包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1358.%20%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E4%B8%89%E7%A7%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%9B%AE.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 1362 | [最接近的因数](https://leetcode.cn/problems/closest-divisors/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1362.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E5%9B%A0%E6%95%B0.md) | 数学 | 中等 | -| 1381 | [设计一个支持增量操作的栈](https://leetcode.cn/problems/design-a-stack-with-increment-operation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1381.%20%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E6%94%AF%E6%8C%81%E5%A2%9E%E9%87%8F%E6%93%8D%E4%BD%9C%E7%9A%84%E6%A0%88.md) | 栈、设计、数组 | 中等 | -| 1400 | [构造 K 个回文字符串](https://leetcode.cn/problems/construct-k-palindrome-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1400.%20%E6%9E%84%E9%80%A0%20K%20%E4%B8%AA%E5%9B%9E%E6%96%87%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 贪心、哈希表、字符串、计数 | 中等 | -| 1408 | [数组中的字符串匹配](https://leetcode.cn/problems/string-matching-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1408.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D.md) | 数组、字符串、字符串匹配 | 简单 | -| 1422 | [分割字符串的最大得分](https://leetcode.cn/problems/maximum-score-after-splitting-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1422.%20%E5%88%86%E5%89%B2%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md) | 字符串 | 简单 | -| 1423 | [可获得的最大点数](https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1423.%20%E5%8F%AF%E8%8E%B7%E5%BE%97%E7%9A%84%E6%9C%80%E5%A4%A7%E7%82%B9%E6%95%B0.md) | 数组、前缀和、滑动窗口 | 中等 | -| 1438 | [绝对差不超过限制的最长连续子数组](https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1438.%20%E7%BB%9D%E5%AF%B9%E5%B7%AE%E4%B8%8D%E8%B6%85%E8%BF%87%E9%99%90%E5%88%B6%E7%9A%84%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 中等 | -| 1446 | [连续字符](https://leetcode.cn/problems/consecutive-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1446.%20%E8%BF%9E%E7%BB%AD%E5%AD%97%E7%AC%A6.md) | 字符串 | 简单 | -| 1447 | [最简分数](https://leetcode.cn/problems/simplified-fractions/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1447.%20%E6%9C%80%E7%AE%80%E5%88%86%E6%95%B0.md) | 数学、字符串、数论 | 中等 | -| 1449 | [数位成本和为目标值的最大数字](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1449.%20%E6%95%B0%E4%BD%8D%E6%88%90%E6%9C%AC%E5%92%8C%E4%B8%BA%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E5%AD%97.md) | 数组、动态规划 | 困难 | -| 1450 | [在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1450.%20%E5%9C%A8%E6%97%A2%E5%AE%9A%E6%97%B6%E9%97%B4%E5%81%9A%E4%BD%9C%E4%B8%9A%E7%9A%84%E5%AD%A6%E7%94%9F%E4%BA%BA%E6%95%B0.md) | 数组 | 简单 | -| 1451 | [重新排列句子中的单词](https://leetcode.cn/problems/rearrange-words-in-a-sentence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1451.%20%E9%87%8D%E6%96%B0%E6%8E%92%E5%88%97%E5%8F%A5%E5%AD%90%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D.md) | 字符串、排序 | 中等 | -| 1456 | [定长子串中元音的最大数目](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1456.%20%E5%AE%9A%E9%95%BF%E5%AD%90%E4%B8%B2%E4%B8%AD%E5%85%83%E9%9F%B3%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md) | 字符串、滑动窗口 | 中等 | -| 1476 | [子矩形查询](https://leetcode.cn/problems/subrectangle-queries/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1476.%20%E5%AD%90%E7%9F%A9%E5%BD%A2%E6%9F%A5%E8%AF%A2.md) | 设计、数组、矩阵 | 中等 | -| 1480 | [一维数组的动态和](https://leetcode.cn/problems/running-sum-of-1d-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1480.%20%E4%B8%80%E7%BB%B4%E6%95%B0%E7%BB%84%E7%9A%84%E5%8A%A8%E6%80%81%E5%92%8C.md) | 数组、前缀和 | 简单 | -| 1482 | [制作 m 束花所需的最少天数](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1482.%20%E5%88%B6%E4%BD%9C%20m%20%E6%9D%9F%E8%8A%B1%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E5%B0%91%E5%A4%A9%E6%95%B0.md) | 数组、二分查找 | 中等 | -| 1486 | [数组异或操作](https://leetcode.cn/problems/xor-operation-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1486.%20%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%93%8D%E4%BD%9C.md) | 位运算、数学 | 简单 | -| 1491 | [去掉最低工资和最高工资后的工资平均值](https://leetcode.cn/problems/average-salary-excluding-the-minimum-and-maximum-salary/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1491.%20%E5%8E%BB%E6%8E%89%E6%9C%80%E4%BD%8E%E5%B7%A5%E8%B5%84%E5%92%8C%E6%9C%80%E9%AB%98%E5%B7%A5%E8%B5%84%E5%90%8E%E7%9A%84%E5%B7%A5%E8%B5%84%E5%B9%B3%E5%9D%87%E5%80%BC.md) | 数组、排序 | 简单 | -| 1493 | [删掉一个元素以后全为 1 的最长子数组](https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1493.%20%E5%88%A0%E6%8E%89%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%E4%BB%A5%E5%90%8E%E5%85%A8%E4%B8%BA%201%20%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划、滑动窗口 | 中等 | -| 1496 | [判断路径是否相交](https://leetcode.cn/problems/path-crossing/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1496.%20%E5%88%A4%E6%96%AD%E8%B7%AF%E5%BE%84%E6%98%AF%E5%90%A6%E7%9B%B8%E4%BA%A4.md) | 哈希表、字符串 | 简单 | -| 1502 | [判断能否形成等差数列](https://leetcode.cn/problems/can-make-arithmetic-progression-from-sequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1502.%20%E5%88%A4%E6%96%AD%E8%83%BD%E5%90%A6%E5%BD%A2%E6%88%90%E7%AD%89%E5%B7%AE%E6%95%B0%E5%88%97.md) | 数组、排序 | 简单 | -| 1507 | [转变日期格式](https://leetcode.cn/problems/reformat-date/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1507.%20%E8%BD%AC%E5%8F%98%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F.md) | 字符串 | 简单 | -| 1523 | [在区间范围内统计奇数数目](https://leetcode.cn/problems/count-odd-numbers-in-an-interval-range/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1523.%20%E5%9C%A8%E5%8C%BA%E9%97%B4%E8%8C%83%E5%9B%B4%E5%86%85%E7%BB%9F%E8%AE%A1%E5%A5%87%E6%95%B0%E6%95%B0%E7%9B%AE.md) | 数学 | 简单 | -| 1534 | [统计好三元组](https://leetcode.cn/problems/count-good-triplets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1534.%20%E7%BB%9F%E8%AE%A1%E5%A5%BD%E4%B8%89%E5%85%83%E7%BB%84.md) | 数组、枚举 | 简单 | -| 1547 | [切棍子的最小成本](https://leetcode.cn/problems/minimum-cost-to-cut-a-stick/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1547.%20%E5%88%87%E6%A3%8D%E5%AD%90%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md) | 数组、动态规划、排序 | 困难 | -| 1551 | [使数组中所有元素相等的最小操作数](https://leetcode.cn/problems/minimum-operations-to-make-array-equal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1551.%20%E4%BD%BF%E6%95%B0%E7%BB%84%E4%B8%AD%E6%89%80%E6%9C%89%E5%85%83%E7%B4%A0%E7%9B%B8%E7%AD%89%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md) | 数学 | 中等 | -| 1556 | [千位分隔数](https://leetcode.cn/problems/thousand-separator/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1556.%20%E5%8D%83%E4%BD%8D%E5%88%86%E9%9A%94%E6%95%B0.md) | 字符串 | 简单 | -| 1561 | [你可以获得的最大硬币数目](https://leetcode.cn/problems/maximum-number-of-coins-you-can-get/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1561.%20%E4%BD%A0%E5%8F%AF%E4%BB%A5%E8%8E%B7%E5%BE%97%E7%9A%84%E6%9C%80%E5%A4%A7%E7%A1%AC%E5%B8%81%E6%95%B0%E7%9B%AE.md) | 贪心、数组、数学、博弈、排序 | 中等 | -| 1567 | [乘积为正数的最长子数组长度](https://leetcode.cn/problems/maximum-length-of-subarray-with-positive-product/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1567.%20%E4%B9%98%E7%A7%AF%E4%B8%BA%E6%AD%A3%E6%95%B0%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E6%95%B0%E7%BB%84%E9%95%BF%E5%BA%A6.md) | 贪心、数组、动态规划 | 中等 | -| 1582 | [二进制矩阵中的特殊位置](https://leetcode.cn/problems/special-positions-in-a-binary-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1582.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E7%89%B9%E6%AE%8A%E4%BD%8D%E7%BD%AE.md) | 数组、矩阵 | 简单 | -| 1584 | [连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1584.%20%E8%BF%9E%E6%8E%A5%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B4%B9%E7%94%A8.md) | 并查集、图、数组、最小生成树 | 中等 | -| 1593 | [拆分字符串使唯一子字符串的数目最大](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1593.%20%E6%8B%86%E5%88%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BD%BF%E5%94%AF%E4%B8%80%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE%E6%9C%80%E5%A4%A7.md) | 哈希表、字符串、回溯 | 中等 | -| 1595 | [连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1595.%20%E8%BF%9E%E9%80%9A%E4%B8%A4%E7%BB%84%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| 1603 | [设计停车系统](https://leetcode.cn/problems/design-parking-system/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1603.%20%E8%AE%BE%E8%AE%A1%E5%81%9C%E8%BD%A6%E7%B3%BB%E7%BB%9F.md) | 设计、计数、模拟 | 简单 | -| 1605 | [给定行和列的和求可行矩阵](https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1605.%20%E7%BB%99%E5%AE%9A%E8%A1%8C%E5%92%8C%E5%88%97%E7%9A%84%E5%92%8C%E6%B1%82%E5%8F%AF%E8%A1%8C%E7%9F%A9%E9%98%B5.md) | 贪心、数组、矩阵 | 中等 | -| 1614 | [括号的最大嵌套深度](https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1614.%20%E6%8B%AC%E5%8F%B7%E7%9A%84%E6%9C%80%E5%A4%A7%E5%B5%8C%E5%A5%97%E6%B7%B1%E5%BA%A6.md) | 栈、字符串 | 简单 | -| 1617 | [统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1617.%20%E7%BB%9F%E8%AE%A1%E5%AD%90%E6%A0%91%E4%B8%AD%E5%9F%8E%E5%B8%82%E4%B9%8B%E9%97%B4%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | -| 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | -| 1641 | [统计字典序元音字符串的数目](https://leetcode.cn/problems/count-sorted-vowel-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1641.%20%E7%BB%9F%E8%AE%A1%E5%AD%97%E5%85%B8%E5%BA%8F%E5%85%83%E9%9F%B3%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、动态规划、组合数学 | 中等 | -| 1646 | [获取生成数组中的最大值](https://leetcode.cn/problems/get-maximum-in-generated-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1646.%20%E8%8E%B7%E5%8F%96%E7%94%9F%E6%88%90%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 数组、动态规划、模拟 | 简单 | -| 1647 | [字符频次唯一的最小删除次数](https://leetcode.cn/problems/minimum-deletions-to-make-character-frequencies-unique/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1647.%20%E5%AD%97%E7%AC%A6%E9%A2%91%E6%AC%A1%E5%94%AF%E4%B8%80%E7%9A%84%E6%9C%80%E5%B0%8F%E5%88%A0%E9%99%A4%E6%AC%A1%E6%95%B0.md) | 贪心、哈希表、字符串、排序 | 中等 | -| 1657 | [确定两个字符串是否接近](https://leetcode.cn/problems/determine-if-two-strings-are-close/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1657.%20%E7%A1%AE%E5%AE%9A%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%98%AF%E5%90%A6%E6%8E%A5%E8%BF%91.md) | 哈希表、字符串、排序 | 中等 | -| 1658 | [将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1658.%20%E5%B0%86%20x%20%E5%87%8F%E5%88%B0%200%20%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | -| 1672 | [最富有客户的资产总量](https://leetcode.cn/problems/richest-customer-wealth/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1672.%20%E6%9C%80%E5%AF%8C%E6%9C%89%E5%AE%A2%E6%88%B7%E7%9A%84%E8%B5%84%E4%BA%A7%E6%80%BB%E9%87%8F.md) | 数组、矩阵 | 简单 | -| 1695 | [删除子数组的最大得分](https://leetcode.cn/problems/maximum-erasure-value/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1695.%20%E5%88%A0%E9%99%A4%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md) | 数组、哈希表、滑动窗口 | 中等 | -| 1698 | [字符串的不同子字符串个数](https://leetcode.cn/problems/number-of-distinct-substrings-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1698.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E4%B8%8D%E5%90%8C%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AA%E6%95%B0.md) | 字典树、字符串、后缀数组、哈希函数、滚动哈希 | 中等 | -| 1710 | [卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1710.%20%E5%8D%A1%E8%BD%A6%E4%B8%8A%E7%9A%84%E6%9C%80%E5%A4%A7%E5%8D%95%E5%85%83%E6%95%B0.md) | 贪心、数组、排序 | 简单 | -| 1716 | [计算力扣银行的钱](https://leetcode.cn/problems/calculate-money-in-leetcode-bank/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1716.%20%E8%AE%A1%E7%AE%97%E5%8A%9B%E6%89%A3%E9%93%B6%E8%A1%8C%E7%9A%84%E9%92%B1.md) | 数学 | 简单 | -| 1720 | [解码异或后的数组](https://leetcode.cn/problems/decode-xored-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1720.%20%E8%A7%A3%E7%A0%81%E5%BC%82%E6%88%96%E5%90%8E%E7%9A%84%E6%95%B0%E7%BB%84.md) | 位运算、数组 | 简单 | -| 1726 | [同积元组](https://leetcode.cn/problems/tuple-with-same-product/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1726.%20%E5%90%8C%E7%A7%AF%E5%85%83%E7%BB%84.md) | 数组、哈希表 | 中等 | -| 1736 | [替换隐藏数字得到的最晚时间](https://leetcode.cn/problems/latest-time-by-replacing-hidden-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1736.%20%E6%9B%BF%E6%8D%A2%E9%9A%90%E8%97%8F%E6%95%B0%E5%AD%97%E5%BE%97%E5%88%B0%E7%9A%84%E6%9C%80%E6%99%9A%E6%97%B6%E9%97%B4.md) | 贪心、字符串 | 简单 | -| 1742 | [盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1742.%20%E7%9B%92%E5%AD%90%E4%B8%AD%E5%B0%8F%E7%90%83%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md) | 哈希表、数学、计数 | 简单 | -| 1749 | [任意子数组和的绝对值的最大值](https://leetcode.cn/problems/maximum-absolute-sum-of-any-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1749.%20%E4%BB%BB%E6%84%8F%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C%E7%9A%84%E7%BB%9D%E5%AF%B9%E5%80%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 数组、动态规划 | 中等 | -| 1763 | [最长的美好子字符串](https://leetcode.cn/problems/longest-nice-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1763.%20%E6%9C%80%E9%95%BF%E7%9A%84%E7%BE%8E%E5%A5%BD%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 位运算、哈希表、字符串、分治、滑动窗口 | 简单 | -| 1779 | [找到最近的有相同 X 或 Y 坐标的点](https://leetcode.cn/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1779.%20%E6%89%BE%E5%88%B0%E6%9C%80%E8%BF%91%E7%9A%84%E6%9C%89%E7%9B%B8%E5%90%8C%20X%20%E6%88%96%20Y%20%E5%9D%90%E6%A0%87%E7%9A%84%E7%82%B9.md) | 数组 | 简单 | -| 1790 | [仅执行一次字符串交换能否使两个字符串相等](https://leetcode.cn/problems/check-if-one-string-swap-can-make-strings-equal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1790.%20%E4%BB%85%E6%89%A7%E8%A1%8C%E4%B8%80%E6%AC%A1%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BA%A4%E6%8D%A2%E8%83%BD%E5%90%A6%E4%BD%BF%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E7%AD%89.md) | 哈希表、字符串、计数 | 简单 | -| 1791 | [找出星型图的中心节点](https://leetcode.cn/problems/find-center-of-star-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1791.%20%E6%89%BE%E5%87%BA%E6%98%9F%E5%9E%8B%E5%9B%BE%E7%9A%84%E4%B8%AD%E5%BF%83%E8%8A%82%E7%82%B9.md) | 图 | 简单 | -| 1822 | [数组元素积的符号](https://leetcode.cn/problems/sign-of-the-product-of-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1822.%20%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E7%A7%AF%E7%9A%84%E7%AC%A6%E5%8F%B7.md) | 数组、数学 | 简单 | -| 1827 | [最少操作使数组递增](https://leetcode.cn/problems/minimum-operations-to-make-the-array-increasing/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1827.%20%E6%9C%80%E5%B0%91%E6%93%8D%E4%BD%9C%E4%BD%BF%E6%95%B0%E7%BB%84%E9%80%92%E5%A2%9E.md) | 贪心、数组 | 简单 | -| 1833 | [雪糕的最大数量](https://leetcode.cn/problems/maximum-ice-cream-bars/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1833.%20%E9%9B%AA%E7%B3%95%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md) | 贪心、数组、排序 | 中等 | -| 1844 | [将所有数字用字符替换](https://leetcode.cn/problems/replace-all-digits-with-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1844.%20%E5%B0%86%E6%89%80%E6%9C%89%E6%95%B0%E5%AD%97%E7%94%A8%E5%AD%97%E7%AC%A6%E6%9B%BF%E6%8D%A2.md) | 字符串 | 简单 | -| 1858 | [包含所有前缀的最长单词](https://leetcode.cn/problems/longest-word-with-all-prefixes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1858.%20%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E5%89%8D%E7%BC%80%E7%9A%84%E6%9C%80%E9%95%BF%E5%8D%95%E8%AF%8D.md) | 深度优先搜索、字典树 | 中等 | -| 1859 | [将句子排序](https://leetcode.cn/problems/sorting-the-sentence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1859.%20%E5%B0%86%E5%8F%A5%E5%AD%90%E6%8E%92%E5%BA%8F.md) | 字符串、排序 | 简单 | -| 1876 | [长度为三且各字符不同的子字符串](https://leetcode.cn/problems/substrings-of-size-three-with-distinct-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1876.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%E4%B8%89%E4%B8%94%E5%90%84%E5%AD%97%E7%AC%A6%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 哈希表、字符串、计数、滑动窗口 | 简单 | -| 1877 | [数组中最大数对和的最小值](https://leetcode.cn/problems/minimize-maximum-pair-sum-in-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1877.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9C%80%E5%A4%A7%E6%95%B0%E5%AF%B9%E5%92%8C%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md) | 贪心、数组、双指针、排序 | 中等 | -| 1879 | [两个数组最小的异或值之和](https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1879.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E6%9C%80%E5%B0%8F%E7%9A%84%E5%BC%82%E6%88%96%E5%80%BC%E4%B9%8B%E5%92%8C.md) | 位运算、数组、动态规划、状态压缩 | 困难 | -| 1893 | [检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1893.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%8C%BA%E5%9F%9F%E5%86%85%E6%89%80%E6%9C%89%E6%95%B4%E6%95%B0%E9%83%BD%E8%A2%AB%E8%A6%86%E7%9B%96.md) | 数组、哈希表、前缀和 | 简单 | -| 1897 | [重新分配字符使所有字符串都相等](https://leetcode.cn/problems/redistribute-characters-to-make-all-strings-equal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1897.%20%E9%87%8D%E6%96%B0%E5%88%86%E9%85%8D%E5%AD%97%E7%AC%A6%E4%BD%BF%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%83%BD%E7%9B%B8%E7%AD%89.md) | 哈希表、字符串、计数 | 简单 | -| 1903 | [字符串中的最大奇数](https://leetcode.cn/problems/largest-odd-number-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1903.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E5%A5%87%E6%95%B0.md) | 贪心、数学、字符串 | 简单 | -| 1921 | [消灭怪物的最大数量](https://leetcode.cn/problems/eliminate-maximum-number-of-monsters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1921.%20%E6%B6%88%E7%81%AD%E6%80%AA%E7%89%A9%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md) | 贪心、数组、排序 | 中等 | -| 1925 | [统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1925.%20%E7%BB%9F%E8%AE%A1%E5%B9%B3%E6%96%B9%E5%92%8C%E4%B8%89%E5%85%83%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、枚举 | 简单 | -| 1929 | [数组串联](https://leetcode.cn/problems/concatenation-of-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1929.%20%E6%95%B0%E7%BB%84%E4%B8%B2%E8%81%94.md) | 数组 | 简单 | -| 1930 | [长度为 3 的不同回文子序列](https://leetcode.cn/problems/unique-length-3-palindromic-subsequences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1930.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%203%20%E7%9A%84%E4%B8%8D%E5%90%8C%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97.md) | 哈希表、字符串、前缀和 | 中等 | -| 1936 | [新增的最少台阶数](https://leetcode.cn/problems/add-minimum-number-of-rungs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1936.%20%E6%96%B0%E5%A2%9E%E7%9A%84%E6%9C%80%E5%B0%91%E5%8F%B0%E9%98%B6%E6%95%B0.md) | 贪心、数组 | 中等 | -| 1941 | [检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1941.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E7%9B%B8%E5%90%8C.md) | 哈希表、字符串、计数 | 简单 | -| 1947 | [最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1947.%20%E6%9C%80%E5%A4%A7%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%84%E5%88%86%E5%92%8C.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 1984 | [学生分数的最小差值](https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1984.%20%E5%AD%A6%E7%94%9F%E5%88%86%E6%95%B0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%B7%AE%E5%80%BC.md) | 数组、排序、滑动窗口 | 简单 | -| 1986 | [完成任务的最少工作时间段](https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1986.%20%E5%AE%8C%E6%88%90%E4%BB%BB%E5%8A%A1%E7%9A%84%E6%9C%80%E5%B0%91%E5%B7%A5%E4%BD%9C%E6%97%B6%E9%97%B4%E6%AE%B5.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 1991 | [找到数组的中间位置](https://leetcode.cn/problems/find-the-middle-index-in-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1991.%20%E6%89%BE%E5%88%B0%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E9%97%B4%E4%BD%8D%E7%BD%AE.md) | 数组、前缀和 | 简单 | -| 1994 | [好子集的数目](https://leetcode.cn/problems/the-number-of-good-subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1994.%20%E5%A5%BD%E5%AD%90%E9%9B%86%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 位运算、数组、数学、动态规划、状态压缩 | 困难 | -| 2011 | [执行操作后的变量值](https://leetcode.cn/problems/final-value-of-variable-after-performing-operations/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2011.%20%E6%89%A7%E8%A1%8C%E6%93%8D%E4%BD%9C%E5%90%8E%E7%9A%84%E5%8F%98%E9%87%8F%E5%80%BC.md) | 数组、字符串、模拟 | 简单 | -| 2023 | [连接后等于目标字符串的字符串对](https://leetcode.cn/problems/number-of-pairs-of-strings-with-concatenation-equal-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2023.%20%E8%BF%9E%E6%8E%A5%E5%90%8E%E7%AD%89%E4%BA%8E%E7%9B%AE%E6%A0%87%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%AF%B9.md) | 数组、字符串 | 中等 | -| 2050 | [并行课程 III](https://leetcode.cn/problems/parallel-courses-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2050.%20%E5%B9%B6%E8%A1%8C%E8%AF%BE%E7%A8%8B%20III.md) | 图、拓扑排序、数组、动态规划 | 困难 | -| 2156 | [查找给定哈希值的子串](https://leetcode.cn/problems/find-substring-with-given-hash-value/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2156.%20%E6%9F%A5%E6%89%BE%E7%BB%99%E5%AE%9A%E5%93%88%E5%B8%8C%E5%80%BC%E7%9A%84%E5%AD%90%E4%B8%B2.md) | 字符串、滑动窗口、哈希函数、滚动哈希 | 困难 | -| 2172 | [数组的最大与和](https://leetcode.cn/problems/maximum-and-sum-of-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2172.%20%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B8%8E%E5%92%8C.md) | 位运算、数组、动态规划、状态压缩 | 困难 | -| 2235 | [两整数相加](https://leetcode.cn/problems/add-two-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2235.%20%E4%B8%A4%E6%95%B4%E6%95%B0%E7%9B%B8%E5%8A%A0.md) | 数学 | 简单 | -| 2246 | [相邻字符不同的最长路径](https://leetcode.cn/problems/longest-path-with-different-adjacent-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2246.%20%E7%9B%B8%E9%82%BB%E5%AD%97%E7%AC%A6%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9C%80%E9%95%BF%E8%B7%AF%E5%BE%84.md) | 树、深度优先搜索、图、拓扑排序、数组、字符串 | 困难 | -| 2249 | [统计圆内格点数目](https://leetcode.cn/problems/count-lattice-points-inside-a-circle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2249.%20%E7%BB%9F%E8%AE%A1%E5%9C%86%E5%86%85%E6%A0%BC%E7%82%B9%E6%95%B0%E7%9B%AE.md) | 几何、数组、哈希表、数学、枚举 | 中等 | -| 2276 | [统计区间中的整数数目](https://leetcode.cn/problems/count-integers-in-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2276.%20%E7%BB%9F%E8%AE%A1%E5%8C%BA%E9%97%B4%E4%B8%AD%E7%9A%84%E6%95%B4%E6%95%B0%E6%95%B0%E7%9B%AE.md) | 设计、线段树、有序集合 | 困难 | -| 2376 | [统计特殊整数](https://leetcode.cn/problems/count-special-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2376.%20%E7%BB%9F%E8%AE%A1%E7%89%B9%E6%AE%8A%E6%95%B4%E6%95%B0.md) | 数学、动态规划 | 困难 | -| 2427 | [公因子的数目](https://leetcode.cn/problems/number-of-common-factors/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2427.%20%E5%85%AC%E5%9B%A0%E5%AD%90%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、枚举、数论 | 简单 | -| 2538 | [最大价值和与最小价值和的差值](https://leetcode.cn/problems/difference-between-maximum-and-minimum-price-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2538.%20%E6%9C%80%E5%A4%A7%E4%BB%B7%E5%80%BC%E5%92%8C%E4%B8%8E%E6%9C%80%E5%B0%8F%E4%BB%B7%E5%80%BC%E5%92%8C%E7%9A%84%E5%B7%AE%E5%80%BC.md) | 树、深度优先搜索、数组、动态规划 | 困难 | -| 2585 | [获得分数的方法数](https://leetcode.cn/problems/number-of-ways-to-earn-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2585.%20%E8%8E%B7%E5%BE%97%E5%88%86%E6%95%B0%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md) | 数组、动态规划 | 困难 | -| 2719 | [统计整数数目](https://leetcode.cn/problems/count-of-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2719.%20%E7%BB%9F%E8%AE%A1%E6%95%B4%E6%95%B0%E6%95%B0%E7%9B%AE.md) | 数学、字符串、动态规划 | 困难 | -| 剑指 Offer 03 | [数组中重复的数字](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2003.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97.md) | 数组、哈希表、排序 | 简单 | -| 剑指 Offer 04 | [二维数组中的查找](https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2004.%20%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9F%A5%E6%89%BE.md) | 数组、二分查找、分治、矩阵 | 中等 | -| 剑指 Offer 05 | [替换空格](https://leetcode.cn/problems/ti-huan-kong-ge-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2005.%20%E6%9B%BF%E6%8D%A2%E7%A9%BA%E6%A0%BC.md) | 字符串 | 简单 | -| 剑指 Offer 06 | [从尾到头打印链表](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2006.%20%E4%BB%8E%E5%B0%BE%E5%88%B0%E5%A4%B4%E6%89%93%E5%8D%B0%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 简单 | -| 剑指 Offer 07 | [重建二叉树](https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2007.%20%E9%87%8D%E5%BB%BA%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | -| 剑指 Offer 09 | [用两个栈实现队列](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2009.%20%E7%94%A8%E4%B8%A4%E4%B8%AA%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md) | 栈、设计、队列 | 简单 | -| 剑指 Offer 10- I | [斐波那契数列](https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2010-%20I.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 剑指 Offer 10- II | [青蛙跳台阶问题](https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2010-%20II.%20%E9%9D%92%E8%9B%99%E8%B7%B3%E5%8F%B0%E9%98%B6%E9%97%AE%E9%A2%98.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 剑指 Offer 11 | [旋转数组的最小数字](https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2011.%20%E6%97%8B%E8%BD%AC%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%B0%8F%E6%95%B0%E5%AD%97.md) | 数组、二分查找 | 简单 | -| 剑指 Offer 12 | [矩阵中的路径](https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2012.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E8%B7%AF%E5%BE%84.md) | 数组、回溯、矩阵 | 中等 | -| 剑指 Offer 13 | [机器人的运动范围](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2013.%20%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%9A%84%E8%BF%90%E5%8A%A8%E8%8C%83%E5%9B%B4.md) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | -| 剑指 Offer 14- I | [剪绳子](https://leetcode.cn/problems/jian-sheng-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2014-%20I.%20%E5%89%AA%E7%BB%B3%E5%AD%90.md) | 数学、动态规划 | 中等 | -| 剑指 Offer 15 | [二进制中1的个数](https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2015.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B8%AD1%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 位运算 | 简单 | -| 剑指 Offer 16 | [数值的整数次方](https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2016.%20%E6%95%B0%E5%80%BC%E7%9A%84%E6%95%B4%E6%95%B0%E6%AC%A1%E6%96%B9.md) | 递归、数学 | 中等 | -| 剑指 Offer 17 | [打印从1到最大的n位数](https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2017.%20%E6%89%93%E5%8D%B0%E4%BB%8E1%E5%88%B0%E6%9C%80%E5%A4%A7%E7%9A%84n%E4%BD%8D%E6%95%B0.md) | 数组、数学 | 简单 | -| 剑指 Offer 18 | [删除链表的节点](https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2018.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E8%8A%82%E7%82%B9.md) | 链表 | 简单 | -| 剑指 Offer 21 | [调整数组顺序使奇数位于偶数前面](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2021.%20%E8%B0%83%E6%95%B4%E6%95%B0%E7%BB%84%E9%A1%BA%E5%BA%8F%E4%BD%BF%E5%A5%87%E6%95%B0%E4%BD%8D%E4%BA%8E%E5%81%B6%E6%95%B0%E5%89%8D%E9%9D%A2.md) | 数组、双指针、排序 | 简单 | -| 剑指 Offer 22 | [链表中倒数第k个节点](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2022.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E5%80%92%E6%95%B0%E7%AC%ACk%E4%B8%AA%E8%8A%82%E7%82%B9.md) | 链表、双指针 | 简单 | -| 剑指 Offer 24 | [反转链表](https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2024.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 剑指 Offer 25 | [合并两个排序的链表](https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2025.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%8E%92%E5%BA%8F%E7%9A%84%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 剑指 Offer 26 | [树的子结构](https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2026.%20%E6%A0%91%E7%9A%84%E5%AD%90%E7%BB%93%E6%9E%84.md) | 树、深度优先搜索、二叉树 | 中等 | -| 剑指 Offer 27 | [二叉树的镜像](https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2027.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%95%9C%E5%83%8F.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 剑指 Offer 28 | [对称的二叉树](https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2028.%20%E5%AF%B9%E7%A7%B0%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 剑指 Offer 29 | [顺时针打印矩阵](https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2029.%20%E9%A1%BA%E6%97%B6%E9%92%88%E6%89%93%E5%8D%B0%E7%9F%A9%E9%98%B5.md) | 数组、矩阵、模拟 | 简单 | -| 剑指 Offer 30 | [包含min函数的栈](https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2030.%20%E5%8C%85%E5%90%ABmin%E5%87%BD%E6%95%B0%E7%9A%84%E6%A0%88.md) | 栈、设计 | 简单 | -| 剑指 Offer 31 | [栈的压入、弹出序列](https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2031.%20%E6%A0%88%E7%9A%84%E5%8E%8B%E5%85%A5%E3%80%81%E5%BC%B9%E5%87%BA%E5%BA%8F%E5%88%97.md) | 栈、数组、模拟 | 中等 | -| 剑指 Offer 32 - I | [从上到下打印二叉树](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2032%20-%20I.%20%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、广度优先搜索、二叉树 | 中等 | -| 剑指 Offer 32 - II | [从上到下打印二叉树 II](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2032%20-%20II.%20%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91%20II.md) | 树、广度优先搜索、二叉树 | 简单 | -| 剑指 Offer 32 - III | [从上到下打印二叉树 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2032%20-%20III.%20%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91%20III.md) | 树、广度优先搜索、二叉树 | 中等 | -| 剑指 Offer 33 | [二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2033.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97.md) | 栈、树、二叉搜索树、递归、二叉树、单调栈 | 中等 | -| 剑指 Offer 34 | [二叉树中和为某一值的路径](https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2034.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E5%92%8C%E4%B8%BA%E6%9F%90%E4%B8%80%E5%80%BC%E7%9A%84%E8%B7%AF%E5%BE%84.md) | 树、深度优先搜索、回溯、二叉树 | 中等 | -| 剑指 Offer 35 | [复杂链表的复制](https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2035.%20%E5%A4%8D%E6%9D%82%E9%93%BE%E8%A1%A8%E7%9A%84%E5%A4%8D%E5%88%B6.md) | 哈希表、链表 | 中等 | -| 剑指 Offer 36 | [二叉搜索树与双向链表](https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2036.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%8E%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | -| 剑指 Offer 37 | [序列化二叉树](https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2037.%20%E5%BA%8F%E5%88%97%E5%8C%96%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | -| 剑指 Offer 38 | [字符串的排列](https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2038.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%8E%92%E5%88%97.md) | 字符串、回溯 | 中等 | -| 剑指 Offer 39 | [数组中出现次数超过一半的数字](https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2039.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E8%B6%85%E8%BF%87%E4%B8%80%E5%8D%8A%E7%9A%84%E6%95%B0%E5%AD%97.md) | 数组、哈希表、分治、计数、排序 | 简单 | -| 剑指 Offer 40 | [最小的k个数](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2040.%20%E6%9C%80%E5%B0%8F%E7%9A%84k%E4%B8%AA%E6%95%B0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | -| 剑指 Offer 41 | [数据流中的中位数](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2041.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | -| 剑指 Offer 42 | [连续子数组的最大和](https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2042.%20%E8%BF%9E%E7%BB%AD%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md) | 数组、分治、动态规划 | 简单 | -| 剑指 Offer 44 | [数字序列中某一位的数字](https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2044.%20%E6%95%B0%E5%AD%97%E5%BA%8F%E5%88%97%E4%B8%AD%E6%9F%90%E4%B8%80%E4%BD%8D%E7%9A%84%E6%95%B0%E5%AD%97.md) | 数学、二分查找 | 中等 | -| 剑指 Offer 45 | [把数组排成最小的数](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2045.%20%E6%8A%8A%E6%95%B0%E7%BB%84%E6%8E%92%E6%88%90%E6%9C%80%E5%B0%8F%E7%9A%84%E6%95%B0.md) | 贪心、字符串、排序 | 中等 | -| 剑指 Offer 46 | [把数字翻译成字符串](https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2046.%20%E6%8A%8A%E6%95%B0%E5%AD%97%E7%BF%BB%E8%AF%91%E6%88%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 剑指 Offer 47 | [礼物的最大价值](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2047.%20%E7%A4%BC%E7%89%A9%E7%9A%84%E6%9C%80%E5%A4%A7%E4%BB%B7%E5%80%BC.md) | 数组、动态规划、矩阵 | 中等 | -| 剑指 Offer 48 | [最长不含重复字符的子字符串](https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2048.%20%E6%9C%80%E9%95%BF%E4%B8%8D%E5%90%AB%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 剑指 Offer 49 | [丑数](https://leetcode.cn/problems/chou-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2049.%20%E4%B8%91%E6%95%B0.md) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | -| 剑指 Offer 50 | [第一个只出现一次的字符](https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2050.%20%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E5%AD%97%E7%AC%A6.md) | 队列、哈希表、字符串、计数 | 简单 | -| 剑指 Offer 51 | [数组中的逆序对](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2051.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%80%86%E5%BA%8F%E5%AF%B9.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | -| 剑指 Offer 52 | [两个链表的第一个公共节点](https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2052.%20%E4%B8%A4%E4%B8%AA%E9%93%BE%E8%A1%A8%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%85%AC%E5%85%B1%E8%8A%82%E7%82%B9.md) | 哈希表、链表、双指针 | 简单 | -| 剑指 Offer 53 - I | [在排序数组中查找数字 I](https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2053%20-%20I.%20%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E6%95%B0%E5%AD%97%20I.md) | 数组、二分查找 | 简单 | -| 剑指 Offer 53 - II | [0~n-1中缺失的数字](https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2053%20-%20II.%200%EF%BD%9En-1%E4%B8%AD%E7%BC%BA%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组、哈希表、数学、二分查找 | 简单 | -| 剑指 Offer 54 | [二叉搜索树的第k大节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2054.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E7%AC%ACk%E5%A4%A7%E8%8A%82%E7%82%B9.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| 剑指 Offer 55 - I | [二叉树的深度](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2055%20-%20I.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 剑指 Offer 55 - II | [平衡二叉树](https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2055%20-%20II.%20%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、二叉树 | 简单 | -| 剑指 Offer 56 - I | [数组中数字出现的次数](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2056%20-%20I.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E6%95%B0%E5%AD%97%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0.md) | 位运算、数组 | 中等 | -| 剑指 Offer 57 | [和为s的两个数字](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2057.%20%E5%92%8C%E4%B8%BAs%E7%9A%84%E4%B8%A4%E4%B8%AA%E6%95%B0%E5%AD%97.md) | 数组、双指针、二分查找 | 简单 | -| 剑指 Offer 57 - II | [和为s的连续正数序列](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2057%20-%20II.%20%E5%92%8C%E4%B8%BAs%E7%9A%84%E8%BF%9E%E7%BB%AD%E6%AD%A3%E6%95%B0%E5%BA%8F%E5%88%97.md) | 数学、双指针、枚举 | 简单 | -| 剑指 Offer 58 - I | [翻转单词顺序](https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2058%20-%20I.%20%E7%BF%BB%E8%BD%AC%E5%8D%95%E8%AF%8D%E9%A1%BA%E5%BA%8F.md) | 双指针、字符串 | 简单 | -| 剑指 Offer 58 - II | [左旋转字符串](https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2058%20-%20II.%20%E5%B7%A6%E6%97%8B%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 数学、双指针、字符串 | 简单 | -| 剑指 Offer 59 - I | [滑动窗口的最大值](https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2059%20-%20I.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 队列、滑动窗口、单调队列、堆(优先队列) | 困难 | -| 剑指 Offer 59 - II | [队列的最大值](https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2059%20-%20II.%20%E9%98%9F%E5%88%97%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 设计、队列、单调队列 | 中等 | -| 剑指 Offer 61 | [扑克牌中的顺子](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2061.%20%E6%89%91%E5%85%8B%E7%89%8C%E4%B8%AD%E7%9A%84%E9%A1%BA%E5%AD%90.md) | 数组、排序 | 简单 | -| 剑指 Offer 62 | [圆圈中最后剩下的数字](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2062.%20%E5%9C%86%E5%9C%88%E4%B8%AD%E6%9C%80%E5%90%8E%E5%89%A9%E4%B8%8B%E7%9A%84%E6%95%B0%E5%AD%97.md) | 递归、数学 | 简单 | -| 剑指 Offer 63 | [股票的最大利润](https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2063.%20%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E5%A4%A7%E5%88%A9%E6%B6%A6.md) | 数组、动态规划 | 中等 | -| 剑指 Offer 64 | [求1+2+…+n](https://leetcode.cn/problems/qiu-12n-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2064.%20%E6%B1%821%2B2%2B%E2%80%A6%2Bn.md) | 位运算、递归、脑筋急转弯 | 中等 | -| 剑指 Offer 65 | [不用加减乘除做加法](https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2065.%20%E4%B8%8D%E7%94%A8%E5%8A%A0%E5%87%8F%E4%B9%98%E9%99%A4%E5%81%9A%E5%8A%A0%E6%B3%95.md) | 位运算、数学 | 简单 | -| 剑指 Offer 66 | [构建乘积数组](https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2066.%20%E6%9E%84%E5%BB%BA%E4%B9%98%E7%A7%AF%E6%95%B0%E7%BB%84.md) | 数组、前缀和 | 中等 | -| 剑指 Offer 67 | [把字符串转换成整数](https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2067.%20%E6%8A%8A%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E6%8D%A2%E6%88%90%E6%95%B4%E6%95%B0.md) | 字符串 | 中等 | -| 剑指 Offer 68 - I | [二叉搜索树的最近公共祖先](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2068%20-%20I.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| 剑指 Offer 68 - II | [二叉树的最近公共祖先](https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2068%20-%20II.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md) | 树、深度优先搜索、二叉树 | 简单 | -| 剑指 Offer II 001 | [整数除法](https://leetcode.cn/problems/xoh6Oh/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20001.%20%E6%95%B4%E6%95%B0%E9%99%A4%E6%B3%95.md) | 位运算、数学 | 简单 | -| 剑指 Offer II 002 | [二进制加法](https://leetcode.cn/problems/JFETK5/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20002.%20%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%8A%A0%E6%B3%95.md) | 位运算、数学、字符串、模拟 | 简单 | -| 剑指 Offer II 003 | [前 n 个数字二进制中 1 的个数](https://leetcode.cn/problems/w3tCBm/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20003.%20%E5%89%8D%20n%20%E4%B8%AA%E6%95%B0%E5%AD%97%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B8%AD%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 位运算、动态规划 | 简单 | -| 剑指 Offer II 004 | [只出现一次的数字](https://leetcode.cn/problems/WGki4K/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20004.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 中等 | -| 剑指 Offer II 005 | [单词长度的最大乘积](https://leetcode.cn/problems/aseY1I/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20005.%20%E5%8D%95%E8%AF%8D%E9%95%BF%E5%BA%A6%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B9%98%E7%A7%AF.md) | 位运算、数组、字符串 | 中等 | -| 剑指 Offer II 006 | [排序数组中两个数字之和](https://leetcode.cn/problems/kLl5u1/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20006.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E4%B8%A4%E4%B8%AA%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C.md) | 数组、双指针、二分查找 | 简单 | -| 剑指 Offer II 007 | [数组中和为 0 的三个数](https://leetcode.cn/problems/1fGaJU/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20007.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E5%92%8C%E4%B8%BA%200%20%E7%9A%84%E4%B8%89%E4%B8%AA%E6%95%B0.md) | 数组、双指针、排序 | 中等 | -| 剑指 Offer II 008 | [和大于等于 target 的最短子数组](https://leetcode.cn/problems/2VG8Kg/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20008.%20%E5%92%8C%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%20target%20%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 剑指 Offer II 009 | [乘积小于 K 的子数组](https://leetcode.cn/problems/ZVAVXX/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20009.%20%E4%B9%98%E7%A7%AF%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、滑动窗口 | 中等 | -| 剑指 Offer II 010 | [和为 k 的子数组](https://leetcode.cn/problems/QTMn0o/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20010.%20%E5%92%8C%E4%B8%BA%20k%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、前缀和 | 中等 | -| 剑指 Offer II 011 | [0 和 1 个数相同的子数组](https://leetcode.cn/problems/A1NYOS/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20011.%200%20%E5%92%8C%201%20%E4%B8%AA%E6%95%B0%E7%9B%B8%E5%90%8C%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、前缀和 | 中等 | -| 剑指 Offer II 012 | [左右两边子数组的和相等](https://leetcode.cn/problems/tvdfij/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20012.%20%E5%B7%A6%E5%8F%B3%E4%B8%A4%E8%BE%B9%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E5%92%8C%E7%9B%B8%E7%AD%89.md) | 数组、前缀和 | 简单 | -| 剑指 Offer II 013 | [二维子矩阵的和](https://leetcode.cn/problems/O4NDxx/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20013.%20%E4%BA%8C%E7%BB%B4%E5%AD%90%E7%9F%A9%E9%98%B5%E7%9A%84%E5%92%8C.md) | 设计、数组、矩阵、前缀和 | 中等 | -| 剑指 Offer II 016 | [不含重复字符的最长子字符串](https://leetcode.cn/problems/wtcaE1/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20016.%20%E4%B8%8D%E5%90%AB%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 剑指 Offer II 017 | [含有所有字符的最短字符串](https://leetcode.cn/problems/M1oyTv/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20017.%20%E5%90%AB%E6%9C%89%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 困难 | -| 剑指 Offer II 018 | [有效的回文](https://leetcode.cn/problems/XltzEq/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20018.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%9B%9E%E6%96%87.md) | 双指针、字符串 | 简单 | -| 剑指 Offer II 019 | [最多删除一个字符得到回文](https://leetcode.cn/problems/RQku0D/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20019.%20%E6%9C%80%E5%A4%9A%E5%88%A0%E9%99%A4%E4%B8%80%E4%B8%AA%E5%AD%97%E7%AC%A6%E5%BE%97%E5%88%B0%E5%9B%9E%E6%96%87.md) | 贪心、双指针、字符串 | 简单 | -| 剑指 Offer II 020 | [回文子字符串的个数](https://leetcode.cn/problems/a7VOhD/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20020.%20%E5%9B%9E%E6%96%87%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 字符串、动态规划 | 中等 | -| 剑指 Offer II 021 | [删除链表的倒数第 n 个结点](https://leetcode.cn/problems/SLwz0R/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20021.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%AC%20n%20%E4%B8%AA%E7%BB%93%E7%82%B9.md) | 链表、双指针 | 中等 | -| 剑指 Offer II 022 | [链表中环的入口节点](https://leetcode.cn/problems/c32eOV/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20022.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%8E%AF%E7%9A%84%E5%85%A5%E5%8F%A3%E8%8A%82%E7%82%B9.md) | 哈希表、链表、双指针 | 中等 | -| 剑指 Offer II 023 | [两个链表的第一个重合节点](https://leetcode.cn/problems/3u1WK4/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20023.%20%E4%B8%A4%E4%B8%AA%E9%93%BE%E8%A1%A8%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%87%8D%E5%90%88%E8%8A%82%E7%82%B9.md) | 哈希表、链表、双指针 | 简单 | -| 剑指 Offer II 024 | [反转链表](https://leetcode.cn/problems/UHnkqh/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20024.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 剑指 Offer II 025 | [链表中的两数相加](https://leetcode.cn/problems/lMSNwu/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20025.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0.md) | 栈、链表、数学 | 中等 | -| 剑指 Offer II 026 | [重排链表](https://leetcode.cn/problems/LGjMqU/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20026.%20%E9%87%8D%E6%8E%92%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 中等 | -| 剑指 Offer II 027 | [回文链表](https://leetcode.cn/problems/aMhZSa/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20027.%20%E5%9B%9E%E6%96%87%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 简单 | -| 剑指 Offer II 028 | [展平多级双向链表](https://leetcode.cn/problems/Qv1Da2/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20028.%20%E5%B1%95%E5%B9%B3%E5%A4%9A%E7%BA%A7%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md) | 深度优先搜索、链表、双向链表 | 中等 | -| 剑指 Offer II 029 | [排序的循环链表](https://leetcode.cn/problems/4ueAj6/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20029.%20%E6%8E%92%E5%BA%8F%E7%9A%84%E5%BE%AA%E7%8E%AF%E9%93%BE%E8%A1%A8.md) | 链表 | 中等 | -| 剑指 Offer II 030 | [插入、删除和随机访问都是 O(1) 的容器](https://leetcode.cn/problems/FortPu/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20030.%20%E6%8F%92%E5%85%A5%E3%80%81%E5%88%A0%E9%99%A4%E5%92%8C%E9%9A%8F%E6%9C%BA%E8%AE%BF%E9%97%AE%E9%83%BD%E6%98%AF%20O%281%29%20%E7%9A%84%E5%AE%B9%E5%99%A8.md) | 设计、数组、哈希表、数学、随机化 | 中等 | -| 剑指 Offer II 031 | [最近最少使用缓存](https://leetcode.cn/problems/OrIXps/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20031.%20%E6%9C%80%E8%BF%91%E6%9C%80%E5%B0%91%E4%BD%BF%E7%94%A8%E7%BC%93%E5%AD%98.md) | 设计、哈希表、链表、双向链表 | 中等 | -| 剑指 Offer II 032 | [有效的变位词](https://leetcode.cn/problems/dKk3P7/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20032.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%8F%98%E4%BD%8D%E8%AF%8D.md) | 哈希表、字符串、排序 | 简单 | -| 剑指 Offer II 033 | [变位词组](https://leetcode.cn/problems/sfvd7V/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20033.%20%E5%8F%98%E4%BD%8D%E8%AF%8D%E7%BB%84.md) | 数组、哈希表、字符串、排序 | 中等 | -| 剑指 Offer II 034 | [外星语言是否排序](https://leetcode.cn/problems/lwyVBB/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20034.%20%E5%A4%96%E6%98%9F%E8%AF%AD%E8%A8%80%E6%98%AF%E5%90%A6%E6%8E%92%E5%BA%8F.md) | 数组、哈希表、字符串 | 简单 | -| 剑指 Offer II 035 | [最小时间差](https://leetcode.cn/problems/569nqc/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20035.%20%E6%9C%80%E5%B0%8F%E6%97%B6%E9%97%B4%E5%B7%AE.md) | 数组、数学、字符串、排序 | 中等 | -| 剑指 Offer II 036 | [后缀表达式](https://leetcode.cn/problems/8Zf90G/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20036.%20%E5%90%8E%E7%BC%80%E8%A1%A8%E8%BE%BE%E5%BC%8F.md) | 栈、数组、数学 | 中等 | -| 剑指 Offer II 037 | [小行星碰撞](https://leetcode.cn/problems/XagZNi/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20037.%20%E5%B0%8F%E8%A1%8C%E6%98%9F%E7%A2%B0%E6%92%9E.md) | 栈、数组、模拟 | 中等 | -| 剑指 Offer II 038 | [每日温度](https://leetcode.cn/problems/iIQa4I/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20038.%20%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.md) | 栈、数组、单调栈 | 中等 | -| 剑指 Offer II 039 | [直方图最大矩形面积](https://leetcode.cn/problems/0ynMMM/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20039.%20%E7%9B%B4%E6%96%B9%E5%9B%BE%E6%9C%80%E5%A4%A7%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF.md) | 栈、数组、单调栈 | 困难 | -| 剑指 Offer II 041 | [滑动窗口的平均值](https://leetcode.cn/problems/qIsx9U/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20041.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E7%9A%84%E5%B9%B3%E5%9D%87%E5%80%BC.md) | 设计、队列、数组、数据流 | 简单 | -| 剑指 Offer II 042 | [最近请求次数](https://leetcode.cn/problems/H8086Q/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20042.%20%E6%9C%80%E8%BF%91%E8%AF%B7%E6%B1%82%E6%AC%A1%E6%95%B0.md) | 设计、队列、数据流 | 简单 | -| 剑指 Offer II 043 | [往完全二叉树添加节点](https://leetcode.cn/problems/NaqhDT/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20043.%20%E5%BE%80%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91%E6%B7%BB%E5%8A%A0%E8%8A%82%E7%82%B9.md) | 树、广度优先搜索、设计、二叉树 | 中等 | -| 剑指 Offer II 044 | [二叉树每层的最大值](https://leetcode.cn/problems/hPov7L/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20044.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%AF%8F%E5%B1%82%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 剑指 Offer II 045 | [二叉树最底层最左边的值](https://leetcode.cn/problems/LwUNpT/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20045.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%BA%95%E5%B1%82%E6%9C%80%E5%B7%A6%E8%BE%B9%E7%9A%84%E5%80%BC.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 剑指 Offer II 046 | [二叉树的右侧视图](https://leetcode.cn/problems/WNC0Lk/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20046.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E4%BE%A7%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 剑指 Offer II 047 | [二叉树剪枝](https://leetcode.cn/problems/pOCWxh/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20047.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E5%89%AA%E6%9E%9D.md) | 树、深度优先搜索、二叉树 | 中等 | -| 剑指 Offer II 048 | [序列化与反序列化二叉树](https://leetcode.cn/problems/h54YBf/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20048.%20%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | -| 剑指 Offer II 049 | [从根节点到叶节点的路径数字之和](https://leetcode.cn/problems/3Etpl5/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20049.%20%E4%BB%8E%E6%A0%B9%E8%8A%82%E7%82%B9%E5%88%B0%E5%8F%B6%E8%8A%82%E7%82%B9%E7%9A%84%E8%B7%AF%E5%BE%84%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、二叉树 | 中等 | -| 剑指 Offer II 050 | [向下的路径节点之和](https://leetcode.cn/problems/6eUYwP/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20050.%20%E5%90%91%E4%B8%8B%E7%9A%84%E8%B7%AF%E5%BE%84%E8%8A%82%E7%82%B9%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、二叉树 | 中等 | -| 剑指 Offer II 051 | [节点之和最大的路径](https://leetcode.cn/problems/jC7MId/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20051.%20%E8%8A%82%E7%82%B9%E4%B9%8B%E5%92%8C%E6%9C%80%E5%A4%A7%E7%9A%84%E8%B7%AF%E5%BE%84.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 剑指 Offer II 052 | [展平二叉搜索树](https://leetcode.cn/problems/NYBBNL/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20052.%20%E5%B1%95%E5%B9%B3%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 栈、树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| 剑指 Offer II 053 | [二叉搜索树中的中序后继](https://leetcode.cn/problems/P5rCT8/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20053.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E4%B8%AD%E5%BA%8F%E5%90%8E%E7%BB%A7.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 剑指 Offer II 054 | [所有大于等于节点的值之和](https://leetcode.cn/problems/w6cpku/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20054.%20%E6%89%80%E6%9C%89%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E8%8A%82%E7%82%B9%E7%9A%84%E5%80%BC%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 剑指 Offer II 055 | [二叉搜索树迭代器](https://leetcode.cn/problems/kTOapQ/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20055.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BF%AD%E4%BB%A3%E5%99%A8.md) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | -| 剑指 Offer II 056 | [二叉搜索树中两个节点之和](https://leetcode.cn/problems/opLdQZ/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20056.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E4%B8%A4%E4%B8%AA%E8%8A%82%E7%82%B9%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、广度优先搜索、二叉搜索树、哈希表、双指针、二叉树 | 简单 | -| 剑指 Offer II 057 | [值和下标之差都在给定的范围内](https://leetcode.cn/problems/7WqeDu/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20057.%20%E5%80%BC%E5%92%8C%E4%B8%8B%E6%A0%87%E4%B9%8B%E5%B7%AE%E9%83%BD%E5%9C%A8%E7%BB%99%E5%AE%9A%E7%9A%84%E8%8C%83%E5%9B%B4%E5%86%85.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 中等 | -| 剑指 Offer II 059 | [数据流的第 K 大数值](https://leetcode.cn/problems/jBjn9C/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20059.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E6%95%B0%E5%80%BC.md) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | -| 剑指 Offer II 060 | [出现频率最高的 k 个数字](https://leetcode.cn/problems/g5c51o/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20060.%20%E5%87%BA%E7%8E%B0%E9%A2%91%E7%8E%87%E6%9C%80%E9%AB%98%E7%9A%84%20k%20%E4%B8%AA%E6%95%B0%E5%AD%97.md) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | -| 剑指 Offer II 062 | [实现前缀树](https://leetcode.cn/problems/QC3q1f/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20062.%20%E5%AE%9E%E7%8E%B0%E5%89%8D%E7%BC%80%E6%A0%91.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 剑指 Offer II 063 | [替换单词](https://leetcode.cn/problems/UhWRSj/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20063.%20%E6%9B%BF%E6%8D%A2%E5%8D%95%E8%AF%8D.md) | 字典树、数组、哈希表、字符串 | 中等 | -| 剑指 Offer II 064 | [神奇的字典](https://leetcode.cn/problems/US1pGT/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20064.%20%E7%A5%9E%E5%A5%87%E7%9A%84%E5%AD%97%E5%85%B8.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 剑指 Offer II 065 | [最短的单词编码](https://leetcode.cn/problems/iSwD2y/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20065.%20%E6%9C%80%E7%9F%AD%E7%9A%84%E5%8D%95%E8%AF%8D%E7%BC%96%E7%A0%81.md) | 字典树、数组、哈希表、字符串 | 中等 | -| 剑指 Offer II 066 | [单词之和](https://leetcode.cn/problems/z1R5dt/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20066.%20%E5%8D%95%E8%AF%8D%E4%B9%8B%E5%92%8C.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 剑指 Offer II 067 | [最大的异或](https://leetcode.cn/problems/ms70jA/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20067.%20%E6%9C%80%E5%A4%A7%E7%9A%84%E5%BC%82%E6%88%96.md) | 位运算、字典树、数组、哈希表 | 中等 | -| 剑指 Offer II 068 | [查找插入位置](https://leetcode.cn/problems/N6YdxV/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20068.%20%E6%9F%A5%E6%89%BE%E6%8F%92%E5%85%A5%E4%BD%8D%E7%BD%AE.md) | 数组、二分查找 | 简单 | -| 剑指 Offer II 072 | [求平方根](https://leetcode.cn/problems/jJ0w9p/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20072.%20%E6%B1%82%E5%B9%B3%E6%96%B9%E6%A0%B9.md) | 数学、二分查找 | 简单 | -| 剑指 Offer II 073 | [狒狒吃香蕉](https://leetcode.cn/problems/nZZqjQ/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20073.%20%E7%8B%92%E7%8B%92%E5%90%83%E9%A6%99%E8%95%89.md) | 数组、二分查找 | 中等 | -| 剑指 Offer II 074 | [合并区间](https://leetcode.cn/problems/SsGoHC/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20074.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md) | 数组、排序 | 中等 | -| 剑指 Offer II 075 | [数组相对排序](https://leetcode.cn/problems/0H97ZC/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20075.%20%E6%95%B0%E7%BB%84%E7%9B%B8%E5%AF%B9%E6%8E%92%E5%BA%8F.md) | 数组、哈希表、计数排序、排序 | 简单 | -| 剑指 Offer II 076 | [数组中的第 k 大的数字](https://leetcode.cn/problems/xx4gT2/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20076.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%AC%20k%20%E5%A4%A7%E7%9A%84%E6%95%B0%E5%AD%97.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| 剑指 Offer II 077 | [链表排序](https://leetcode.cn/problems/7WHec2/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20077.%20%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F.md) | 链表、双指针、分治、排序、归并排序 | 中等 | -| 剑指 Offer II 078 | [合并排序链表](https://leetcode.cn/problems/vvXgSW/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20078.%20%E5%90%88%E5%B9%B6%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| 剑指 Offer II 079 | [所有子集](https://leetcode.cn/problems/TVdhkn/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20079.%20%E6%89%80%E6%9C%89%E5%AD%90%E9%9B%86.md) | 位运算、数组、回溯 | 中等 | -| 剑指 Offer II 080 | [含有 k 个元素的组合](https://leetcode.cn/problems/uUsW3B/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20080.%20%E5%90%AB%E6%9C%89%20k%20%E4%B8%AA%E5%85%83%E7%B4%A0%E7%9A%84%E7%BB%84%E5%90%88.md) | 数组、回溯 | 中等 | -| 剑指 Offer II 081 | [允许重复选择元素的组合](https://leetcode.cn/problems/Ygoe9J/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20081.%20%E5%85%81%E8%AE%B8%E9%87%8D%E5%A4%8D%E9%80%89%E6%8B%A9%E5%85%83%E7%B4%A0%E7%9A%84%E7%BB%84%E5%90%88.md) | 数组、回溯 | 中等 | -| 剑指 Offer II 082 | [含有重复元素集合的组合](https://leetcode.cn/problems/4sjJUc/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20082.%20%E5%90%AB%E6%9C%89%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%E9%9B%86%E5%90%88%E7%9A%84%E7%BB%84%E5%90%88.md) | 数组、回溯 | 中等 | -| 剑指 Offer II 083 | [没有重复元素集合的全排列](https://leetcode.cn/problems/VvJkup/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20083.%20%E6%B2%A1%E6%9C%89%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%E9%9B%86%E5%90%88%E7%9A%84%E5%85%A8%E6%8E%92%E5%88%97.md) | 数组、回溯 | 中等 | -| 剑指 Offer II 084 | [含有重复元素集合的全排列](https://leetcode.cn/problems/7p8L0Z/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20084.%20%E5%90%AB%E6%9C%89%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%E9%9B%86%E5%90%88%E7%9A%84%E5%85%A8%E6%8E%92%E5%88%97.md) | 数组、回溯 | 中等 | -| 剑指 Offer II 085 | [生成匹配的括号](https://leetcode.cn/problems/IDBivT/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20085.%20%E7%94%9F%E6%88%90%E5%8C%B9%E9%85%8D%E7%9A%84%E6%8B%AC%E5%8F%B7.md) | 字符串、动态规划、回溯 | 中等 | -| 剑指 Offer II 086 | [分割回文子字符串](https://leetcode.cn/problems/M99OJA/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20086.%20%E5%88%86%E5%89%B2%E5%9B%9E%E6%96%87%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | -| 剑指 Offer II 087 | [复原 IP](https://leetcode.cn/problems/0on3uN/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20087.%20%E5%A4%8D%E5%8E%9F%20IP.md) | 字符串、回溯 | 中等 | -| 剑指 Offer II 088 | [爬楼梯的最少成本](https://leetcode.cn/problems/GzCJIP/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20088.%20%E7%88%AC%E6%A5%BC%E6%A2%AF%E7%9A%84%E6%9C%80%E5%B0%91%E6%88%90%E6%9C%AC.md) | 数组、动态规划 | 简单 | -| 剑指 Offer II 089 | [房屋偷盗](https://leetcode.cn/problems/Gu0c2T/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20089.%20%E6%88%BF%E5%B1%8B%E5%81%B7%E7%9B%97.md) | 数组、动态规划 | 中等 | -| 剑指 Offer II 090 | [环形房屋偷盗](https://leetcode.cn/problems/PzWKhm/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20090.%20%E7%8E%AF%E5%BD%A2%E6%88%BF%E5%B1%8B%E5%81%B7%E7%9B%97.md) | 数组、动态规划 | 中等 | -| 剑指 Offer II 093 | [最长斐波那契数列](https://leetcode.cn/problems/Q91FMA/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20093.%20%E6%9C%80%E9%95%BF%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97.md) | 数组、哈希表、动态规划 | 中等 | -| 剑指 Offer II 095 | [最长公共子序列](https://leetcode.cn/problems/qJnOS7/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20095.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 中等 | -| 剑指 Offer II 097 | [子序列的数目](https://leetcode.cn/problems/21dk04/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20097.%20%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 字符串、动态规划 | 困难 | -| 剑指 Offer II 098 | [路径的数目](https://leetcode.cn/problems/2AoeFn/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20098.%20%E8%B7%AF%E5%BE%84%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、动态规划、组合数学 | 中等 | -| 剑指 Offer II 101 | [分割等和子集](https://leetcode.cn/problems/NUPfPr/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20101.%20%E5%88%86%E5%89%B2%E7%AD%89%E5%92%8C%E5%AD%90%E9%9B%86.md) | 数学、字符串、模拟 | 简单 | -| 剑指 Offer II 102 | [加减的目标值](https://leetcode.cn/problems/YaVDxD/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20102.%20%E5%8A%A0%E5%87%8F%E7%9A%84%E7%9B%AE%E6%A0%87%E5%80%BC.md) | 数组、动态规划、回溯 | 中等 | -| 剑指 Offer II 103 | [最少的硬币数目](https://leetcode.cn/problems/gaM7Ch/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20103.%20%E6%9C%80%E5%B0%91%E7%9A%84%E7%A1%AC%E5%B8%81%E6%95%B0%E7%9B%AE.md) | 广度优先搜索、数组、动态规划 | 中等 | -| 剑指 Offer II 104 | [排列的数目](https://leetcode.cn/problems/D0F0SV/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20104.%20%E6%8E%92%E5%88%97%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数组、动态规划 | 中等 | -| 剑指 Offer II 105 | [岛屿的最大面积](https://leetcode.cn/problems/ZL6zAn/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20105.%20%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%9C%80%E5%A4%A7%E9%9D%A2%E7%A7%AF.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 剑指 Offer II 106 | [二分图](https://leetcode.cn/problems/vEAB3K/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20106.%20%E4%BA%8C%E5%88%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 剑指 Offer II 107 | [矩阵中的距离](https://leetcode.cn/problems/2bCMpM/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20107.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E8%B7%9D%E7%A6%BB.md) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | -| 剑指 Offer II 108 | [单词演变](https://leetcode.cn/problems/om3reC/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20108.%20%E5%8D%95%E8%AF%8D%E6%BC%94%E5%8F%98.md) | 广度优先搜索、哈希表、字符串 | 困难 | -| 剑指 Offer II 109 | [开密码锁](https://leetcode.cn/problems/zlDJc7/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20109.%20%E5%BC%80%E5%AF%86%E7%A0%81%E9%94%81.md) | 广度优先搜索、数组、哈希表、字符串 | 中等 | -| 剑指 Offer II 111 | [计算除法](https://leetcode.cn/problems/vlzXQL/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20111.%20%E8%AE%A1%E7%AE%97%E9%99%A4%E6%B3%95.md) | 深度优先搜索、广度优先搜索、并查集、图、数组、最短路 | 中等 | -| 剑指 Offer II 112 | [最长递增路径](https://leetcode.cn/problems/fpTFWP/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20112.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | -| 剑指 Offer II 113 | [课程顺序](https://leetcode.cn/problems/QA2IGt/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20113.%20%E8%AF%BE%E7%A8%8B%E9%A1%BA%E5%BA%8F.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 剑指 Offer II 116 | [省份数量](https://leetcode.cn/problems/bLyHh0/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20116.%20%E7%9C%81%E4%BB%BD%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 剑指 Offer II 118 | [多余的边](https://leetcode.cn/problems/7LpjUW/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20118.%20%E5%A4%9A%E4%BD%99%E7%9A%84%E8%BE%B9.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 剑指 Offer II 119 | [最长连续序列](https://leetcode.cn/problems/WhsWhI/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%20II%20119.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md) | 并查集、数组、哈希表 | 中等 | -| 面试题 01.07 | [旋转矩阵](https://leetcode.cn/problems/rotate-matrix-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2001.07.%20%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5.md) | 数组、数学、矩阵 | 中等 | -| 面试题 01.08 | [零矩阵](https://leetcode.cn/problems/zero-matrix-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2001.08.%20%E9%9B%B6%E7%9F%A9%E9%98%B5.md) | 数组、哈希表、矩阵 | 中等 | -| 面试题 02.02 | [返回倒数第 k 个节点](https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.02.%20%E8%BF%94%E5%9B%9E%E5%80%92%E6%95%B0%E7%AC%AC%20k%20%E4%B8%AA%E8%8A%82%E7%82%B9.md) | 链表、双指针 | 简单 | -| 面试题 02.05 | [链表求和](https://leetcode.cn/problems/sum-lists-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.05.%20%E9%93%BE%E8%A1%A8%E6%B1%82%E5%92%8C.md) | 递归、链表、数学 | 中等 | -| 面试题 02.06 | [回文链表](https://leetcode.cn/problems/palindrome-linked-list-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.06.%20%E5%9B%9E%E6%96%87%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 简单 | -| 面试题 02.07 | [链表相交](https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.07.%20%E9%93%BE%E8%A1%A8%E7%9B%B8%E4%BA%A4.md) | 哈希表、链表、双指针 | 简单 | -| 面试题 02.08 | [环路检测](https://leetcode.cn/problems/linked-list-cycle-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2002.08.%20%E7%8E%AF%E8%B7%AF%E6%A3%80%E6%B5%8B.md) | 哈希表、链表、双指针 | 中等 | -| 面试题 03.02 | [栈的最小值](https://leetcode.cn/problems/min-stack-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2003.02.%20%E6%A0%88%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md) | 栈、设计 | 简单 | -| 面试题 03.04 | [化栈为队](https://leetcode.cn/problems/implement-queue-using-stacks-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2003.04.%20%E5%8C%96%E6%A0%88%E4%B8%BA%E9%98%9F.md) | 栈、设计、队列 | 简单 | -| 面试题 04.02 | [最小高度树](https://leetcode.cn/problems/minimum-height-tree-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.02.%20%E6%9C%80%E5%B0%8F%E9%AB%98%E5%BA%A6%E6%A0%91.md) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | -| 面试题 04.05 | [合法二叉搜索树](https://leetcode.cn/problems/legal-binary-search-tree-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.05.%20%E5%90%88%E6%B3%95%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 面试题 04.06 | [后继者](https://leetcode.cn/problems/successor-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.06.%20%E5%90%8E%E7%BB%A7%E8%80%85.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 面试题 04.08 | [首个共同祖先](https://leetcode.cn/problems/first-common-ancestor-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.08.%20%E9%A6%96%E4%B8%AA%E5%85%B1%E5%90%8C%E7%A5%96%E5%85%88.md) | 树、深度优先搜索、二叉树 | 中等 | -| 面试题 04.12 | [求和路径](https://leetcode.cn/problems/paths-with-sum-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2004.12.%20%E6%B1%82%E5%92%8C%E8%B7%AF%E5%BE%84.md) | 树、深度优先搜索、二叉树 | 中等 | -| 面试题 08.04 | [幂集](https://leetcode.cn/problems/power-set-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.04.%20%E5%B9%82%E9%9B%86.md) | 位运算、数组、回溯 | 中等 | -| 面试题 08.07 | [无重复字符串的排列组合](https://leetcode.cn/problems/permutation-i-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.07.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%8E%92%E5%88%97%E7%BB%84%E5%90%88.md) | 字符串、回溯 | 中等 | -| 面试题 08.08 | [有重复字符串的排列组合](https://leetcode.cn/problems/permutation-ii-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.08.%20%E6%9C%89%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%8E%92%E5%88%97%E7%BB%84%E5%90%88.md) | 字符串、回溯 | 中等 | -| 面试题 08.09 | [括号](https://leetcode.cn/problems/bracket-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.09.%20%E6%8B%AC%E5%8F%B7.md) | 字符串、动态规划、回溯 | 中等 | -| 面试题 08.10 | [颜色填充](https://leetcode.cn/problems/color-fill-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.10.%20%E9%A2%9C%E8%89%B2%E5%A1%AB%E5%85%85.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | -| 面试题 08.12 | [八皇后](https://leetcode.cn/problems/eight-queens-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2008.12.%20%E5%85%AB%E7%9A%87%E5%90%8E.md) | 数组、回溯 | 困难 | -| 面试题 10.01 | [合并排序的数组](https://leetcode.cn/problems/sorted-merge-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2010.01.%20%E5%90%88%E5%B9%B6%E6%8E%92%E5%BA%8F%E7%9A%84%E6%95%B0%E7%BB%84.md) | 数组、双指针、排序 | 简单 | -| 面试题 10.02 | [变位词组](https://leetcode.cn/problems/group-anagrams-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2010.02.%20%E5%8F%98%E4%BD%8D%E8%AF%8D%E7%BB%84.md) | 数组、哈希表、字符串、排序 | 中等 | -| 面试题 10.09 | [排序矩阵查找](https://leetcode.cn/problems/sorted-matrix-search-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2010.09.%20%E6%8E%92%E5%BA%8F%E7%9F%A9%E9%98%B5%E6%9F%A5%E6%89%BE.md) | 数组、二分查找、分治、矩阵 | 中等 | -| 面试题 16.02 | [单词频率](https://leetcode.cn/problems/words-frequency-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.02.%20%E5%8D%95%E8%AF%8D%E9%A2%91%E7%8E%87.md) | 设计、字典树、数组、哈希表、字符串 | 中等 | -| 面试题 16.05 | [阶乘尾数](https://leetcode.cn/problems/factorial-zeros-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.05.%20%E9%98%B6%E4%B9%98%E5%B0%BE%E6%95%B0.md) | 数学 | 简单 | -| 面试题 16.26 | [计算器](https://leetcode.cn/problems/calculator-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2016.26.%20%E8%AE%A1%E7%AE%97%E5%99%A8.md) | 栈、数学、字符串 | 中等 | -| 面试题 17.06 | [2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.06.%202%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0.md) | 递归、数学、动态规划 | 困难 | -| 面试题 17.14 | [最小K个数](https://leetcode.cn/problems/smallest-k-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.14.%20%E6%9C%80%E5%B0%8FK%E4%B8%AA%E6%95%B0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| 面试题 17.15 | [最长单词](https://leetcode.cn/problems/longest-word-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.15.%20%E6%9C%80%E9%95%BF%E5%8D%95%E8%AF%8D.md) | 字典树、数组、哈希表、字符串 | 中等 | -| 面试题 17.17 | [多次搜索](https://leetcode.cn/problems/multi-search-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.17.%20%E5%A4%9A%E6%AC%A1%E6%90%9C%E7%B4%A2.md) | 字典树、数组、哈希表、字符串、字符串匹配、滑动窗口 | 中等 | \ No newline at end of file diff --git a/Contents/00.Introduction/05.Categories-List.md b/Contents/00.Introduction/05.Categories-List.md deleted file mode 100644 index e43308a5..00000000 --- a/Contents/00.Introduction/05.Categories-List.md +++ /dev/null @@ -1,1098 +0,0 @@ -# LeetCode 题解(按分类排序,推荐刷题列表 ★★★) - -## 01. 数组 - -### 数组基础题目 - -#### 数组操作题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0189 | [轮转数组](https://leetcode.cn/problems/rotate-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0189.%20%E8%BD%AE%E8%BD%AC%E6%95%B0%E7%BB%84.md) | 数组、数学、双指针 | 中等 | -| 0066 | [加一](https://leetcode.cn/problems/plus-one/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0066.%20%E5%8A%A0%E4%B8%80.md) | 数组、数学 | 简单 | -| 0724 | [寻找数组的中心下标](https://leetcode.cn/problems/find-pivot-index/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0724.%20%E5%AF%BB%E6%89%BE%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E5%BF%83%E4%B8%8B%E6%A0%87.md) | 数组、前缀和 | 简单 | -| 0485 | [最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0485.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 数组 | 简单 | -| 0238 | [除自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-except-self/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0238.%20%E9%99%A4%E8%87%AA%E8%BA%AB%E4%BB%A5%E5%A4%96%E6%95%B0%E7%BB%84%E7%9A%84%E4%B9%98%E7%A7%AF.md) | 数组、前缀和 | 中等 | - -#### 二维数组题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0498 | [对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0498.%20%E5%AF%B9%E8%A7%92%E7%BA%BF%E9%81%8D%E5%8E%86.md) | 数组、矩阵、模拟 | 中等 | -| 0048 | [旋转图像](https://leetcode.cn/problems/rotate-image/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0048.%20%E6%97%8B%E8%BD%AC%E5%9B%BE%E5%83%8F.md) | 数组、数学、矩阵 | 中等 | -| 0073 | [矩阵置零](https://leetcode.cn/problems/set-matrix-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0073.%20%E7%9F%A9%E9%98%B5%E7%BD%AE%E9%9B%B6.md) | 数组、哈希表、矩阵 | 中等 | -| 0054 | [螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0054.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5.md) | 数组、矩阵、模拟 | 中等 | -| 0059 | [螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0059.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5%20II.md) | 数组、矩阵、模拟 | 中等 | -| 0289 | [生命游戏](https://leetcode.cn/problems/game-of-life/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0289.%20%E7%94%9F%E5%91%BD%E6%B8%B8%E6%88%8F.md) | 数组、矩阵、模拟 | 中等 | - -### 排序算法题目 - -#### 冒泡排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 剑指 Offer 45 | [把数组排成最小的数](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2045.%20%E6%8A%8A%E6%95%B0%E7%BB%84%E6%8E%92%E6%88%90%E6%9C%80%E5%B0%8F%E7%9A%84%E6%95%B0.md) | 贪心、字符串、排序 | 中等 | -| 0283 | [移动零](https://leetcode.cn/problems/move-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0283.%20%E7%A7%BB%E5%8A%A8%E9%9B%B6.md) | 数组、双指针 | 简单 | - -#### 选择排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0215 | [数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0215.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%ACK%E4%B8%AA%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | - -#### 插入排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0075 | [颜色分类](https://leetcode.cn/problems/sort-colors/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0075.%20%E9%A2%9C%E8%89%B2%E5%88%86%E7%B1%BB.md) | 数组、双指针、排序 | 中等 | - -#### 希尔排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0506 | [相对名次](https://leetcode.cn/problems/relative-ranks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0506.%20%E7%9B%B8%E5%AF%B9%E5%90%8D%E6%AC%A1.md) | 数组、排序、堆(优先队列) | 简单 | - -#### 归并排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0088 | [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0088.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、排序 | 简单 | -| 剑指 Offer 51 | [数组中的逆序对](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2051.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%80%86%E5%BA%8F%E5%AF%B9.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | -| 0315 | [计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0315.%20%E8%AE%A1%E7%AE%97%E5%8F%B3%E4%BE%A7%E5%B0%8F%E4%BA%8E%E5%BD%93%E5%89%8D%E5%85%83%E7%B4%A0%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | - -#### 快速排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0169 | [多数元素](https://leetcode.cn/problems/majority-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0169.%20%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、计数、排序 | 简单 | - -#### 堆排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0215 | [数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0215.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%ACK%E4%B8%AA%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| 剑指 Offer 40 | [最小的k个数](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2040.%20%E6%9C%80%E5%B0%8F%E7%9A%84k%E4%B8%AA%E6%95%B0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | - -#### 计数排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 1122 | [数组的相对排序](https://leetcode.cn/problems/relative-sort-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1122.%20%E6%95%B0%E7%BB%84%E7%9A%84%E7%9B%B8%E5%AF%B9%E6%8E%92%E5%BA%8F.md) | 数组、哈希表、计数排序、排序 | 简单 | - -#### 桶排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0220 | [存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0220.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20III.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | -| 0164 | [最大间距](https://leetcode.cn/problems/maximum-gap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0164.%20%E6%9C%80%E5%A4%A7%E9%97%B4%E8%B7%9D.md) | 数组、桶排序、基数排序、排序 | 困难 | - -#### 基数排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0164 | [最大间距](https://leetcode.cn/problems/maximum-gap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0164.%20%E6%9C%80%E5%A4%A7%E9%97%B4%E8%B7%9D.md) | 数组、桶排序、基数排序、排序 | 困难 | -| 0561 | [数组拆分](https://leetcode.cn/problems/array-partition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0561.%20%E6%95%B0%E7%BB%84%E6%8B%86%E5%88%86.md) | 贪心、数组、计数排序、排序 | 简单 | - -#### 其他排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0217 | [存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0217.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md) | 数组、哈希表、排序 | 简单 | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | -| 0056 | [合并区间](https://leetcode.cn/problems/merge-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0056.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md) | 数组、排序 | 中等 | -| 0179 | [最大数](https://leetcode.cn/problems/largest-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0179.%20%E6%9C%80%E5%A4%A7%E6%95%B0.md) | 贪心、数组、字符串、排序 | 中等 | -| 0384 | [打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0384.%20%E6%89%93%E4%B9%B1%E6%95%B0%E7%BB%84.md) | 数组、数学、随机化 | 中等 | -| 剑指 Offer 45 | [把数组排成最小的数](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2045.%20%E6%8A%8A%E6%95%B0%E7%BB%84%E6%8E%92%E6%88%90%E6%9C%80%E5%B0%8F%E7%9A%84%E6%95%B0.md) | 贪心、字符串、排序 | 中等 | - -### 二分查找题目 - -#### 二分下标题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0704 | [二分查找](https://leetcode.cn/problems/binary-search/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0704.%20%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.md) | 数组、二分查找 | 简单 | -| 0374 | [猜数字大小](https://leetcode.cn/problems/guess-number-higher-or-lower/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0374.%20%E7%8C%9C%E6%95%B0%E5%AD%97%E5%A4%A7%E5%B0%8F.md) | 二分查找、交互 | 简单 | -| 0035 | [搜索插入位置](https://leetcode.cn/problems/search-insert-position/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0035.%20%E6%90%9C%E7%B4%A2%E6%8F%92%E5%85%A5%E4%BD%8D%E7%BD%AE.md) | 数组、二分查找 | 简单 | -| 0034 | [在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0034.%20%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%85%83%E7%B4%A0%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%92%8C%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E4%BD%8D%E7%BD%AE.md) | 数组、二分查找 | 中等 | -| 0167 | [两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0167.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C%20II%20-%20%E8%BE%93%E5%85%A5%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、二分查找 | 中等 | -| 0153 | [寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0153.%20%E5%AF%BB%E6%89%BE%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md) | 数组、二分查找 | 中等 | -| 0154 | [寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0154.%20%E5%AF%BB%E6%89%BE%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC%20II.md) | 数组、二分查找 | 困难 | -| 0033 | [搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0033.%20%E6%90%9C%E7%B4%A2%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、二分查找 | 中等 | -| 0081 | [搜索旋转排序数组 II](https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0081.%20%E6%90%9C%E7%B4%A2%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%20II.md) | 数组、二分查找 | 中等 | -| 0278 | [第一个错误的版本](https://leetcode.cn/problems/first-bad-version/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0278.%20%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%94%99%E8%AF%AF%E7%9A%84%E7%89%88%E6%9C%AC.md) | 二分查找、交互 | 简单 | -| 0162 | [寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0162.%20%E5%AF%BB%E6%89%BE%E5%B3%B0%E5%80%BC.md) | 数组、二分查找 | 中等 | -| 0852 | [山脉数组的峰顶索引](https://leetcode.cn/problems/peak-index-in-a-mountain-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0852.%20%E5%B1%B1%E8%84%89%E6%95%B0%E7%BB%84%E7%9A%84%E5%B3%B0%E9%A1%B6%E7%B4%A2%E5%BC%95.md) | 数组、二分查找 | 中等 | -| 1095 | [山脉数组中查找目标值](https://leetcode.cn/problems/find-in-mountain-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1095.%20%E5%B1%B1%E8%84%89%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E7%9B%AE%E6%A0%87%E5%80%BC.md) | 数组、二分查找、交互 | 困难 | -| 0744 | [寻找比目标字母大的最小字母](https://leetcode.cn/problems/find-smallest-letter-greater-than-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0744.%20%E5%AF%BB%E6%89%BE%E6%AF%94%E7%9B%AE%E6%A0%87%E5%AD%97%E6%AF%8D%E5%A4%A7%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%97%E6%AF%8D.md) | 数组、二分查找 | 简单 | -| 0004 | [寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0004.%20%E5%AF%BB%E6%89%BE%E4%B8%A4%E4%B8%AA%E6%AD%A3%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、二分查找、分治 | 困难 | -| 0074 | [搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0074.%20%E6%90%9C%E7%B4%A2%E4%BA%8C%E7%BB%B4%E7%9F%A9%E9%98%B5.md) | 数组、二分查找、矩阵 | 中等 | -| 0240 | [搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0240.%20%E6%90%9C%E7%B4%A2%E4%BA%8C%E7%BB%B4%E7%9F%A9%E9%98%B5%20II.md) | 数组、二分查找、分治、矩阵 | 中等 | - -#### 二分答案题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0069 | [x 的平方根](https://leetcode.cn/problems/sqrtx/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0069.%20x%20%E7%9A%84%E5%B9%B3%E6%96%B9%E6%A0%B9.md) | 数学、二分查找 | 简单 | -| 0287 | [寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0287.%20%E5%AF%BB%E6%89%BE%E9%87%8D%E5%A4%8D%E6%95%B0.md) | 位运算、数组、双指针、二分查找 | 中等 | -| 0050 | [Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0050.%20Pow%28x%2C%20n%29.md) | 递归、数学 | 中等 | -| 0367 | [有效的完全平方数](https://leetcode.cn/problems/valid-perfect-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0367.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md) | 数学、二分查找 | 简单 | -| 1300 | [转变数组后最接近目标值的数组和](https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1300.%20%E8%BD%AC%E5%8F%98%E6%95%B0%E7%BB%84%E5%90%8E%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、二分查找、排序 | 中等 | -| 0400 | [第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0400.%20%E7%AC%AC%20N%20%E4%BD%8D%E6%95%B0%E5%AD%97.md) | 数学、二分查找 | 中等 | - -#### 复杂的二分查找问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0875 | [爱吃香蕉的珂珂](https://leetcode.cn/problems/koko-eating-bananas/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0875.%20%E7%88%B1%E5%90%83%E9%A6%99%E8%95%89%E7%9A%84%E7%8F%82%E7%8F%82.md) | 数组、二分查找 | 中等 | -| 0410 | [分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0410.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | -| 0209 | [长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0209.%20%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 0658 | [找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0658.%20%E6%89%BE%E5%88%B0%20K%20%E4%B8%AA%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E5%85%83%E7%B4%A0.md) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | -| 0270 | [最接近的二叉搜索树值](https://leetcode.cn/problems/closest-binary-search-tree-value/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0270.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E5%80%BC.md) | 树、深度优先搜索、二叉搜索树、二分查找、二叉树 | 简单 | -| 0702 | [搜索长度未知的有序数组](https://leetcode.cn/problems/search-in-a-sorted-array-of-unknown-size/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0702.%20%E6%90%9C%E7%B4%A2%E9%95%BF%E5%BA%A6%E6%9C%AA%E7%9F%A5%E7%9A%84%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、二分查找、交互 | 中等 | -| 0349 | [两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0349.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0350 | [两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0350.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86%20II.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0287 | [寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0287.%20%E5%AF%BB%E6%89%BE%E9%87%8D%E5%A4%8D%E6%95%B0.md) | 位运算、数组、双指针、二分查找 | 中等 | -| 0719 | [找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0719.%20%E6%89%BE%E5%87%BA%E7%AC%AC%20K%20%E5%B0%8F%E7%9A%84%E6%95%B0%E5%AF%B9%E8%B7%9D%E7%A6%BB.md) | 数组、双指针、二分查找、排序 | 困难 | -| 0259 | [较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0259.%20%E8%BE%83%E5%B0%8F%E7%9A%84%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、二分查找、排序 | 中等 | -| 1011 | [在 D 天内送达包裹的能力](https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1011.%20%E5%9C%A8%20D%20%E5%A4%A9%E5%86%85%E9%80%81%E8%BE%BE%E5%8C%85%E8%A3%B9%E7%9A%84%E8%83%BD%E5%8A%9B.md) | 数组、二分查找 | 中等 | -| 1482 | [制作 m 束花所需的最少天数](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1482.%20%E5%88%B6%E4%BD%9C%20m%20%E6%9D%9F%E8%8A%B1%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E5%B0%91%E5%A4%A9%E6%95%B0.md) | 数组、二分查找 | 中等 | - -### 双指针题目 - -#### 对撞指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0167 | [两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0167.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C%20II%20-%20%E8%BE%93%E5%85%A5%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、二分查找 | 中等 | -| 0344 | [反转字符串](https://leetcode.cn/problems/reverse-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0344.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0345 | [反转字符串中的元音字母](https://leetcode.cn/problems/reverse-vowels-of-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0345.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%85%83%E9%9F%B3%E5%AD%97%E6%AF%8D.md) | 双指针、字符串 | 简单 | -| 0125 | [验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0125.%20%E9%AA%8C%E8%AF%81%E5%9B%9E%E6%96%87%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0011 | [盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0011.%20%E7%9B%9B%E6%9C%80%E5%A4%9A%E6%B0%B4%E7%9A%84%E5%AE%B9%E5%99%A8.md) | 贪心、数组、双指针 | 中等 | -| 0611 | [有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0611.%20%E6%9C%89%E6%95%88%E4%B8%89%E8%A7%92%E5%BD%A2%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 贪心、数组、双指针、二分查找、排序 | 中等 | -| 0015 | [三数之和](https://leetcode.cn/problems/3sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0015.%20%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0016 | [最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0016.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0018 | [四数之和](https://leetcode.cn/problems/4sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0018.%20%E5%9B%9B%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0259 | [较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0259.%20%E8%BE%83%E5%B0%8F%E7%9A%84%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、二分查找、排序 | 中等 | -| 0658 | [找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0658.%20%E6%89%BE%E5%88%B0%20K%20%E4%B8%AA%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E5%85%83%E7%B4%A0.md) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | -| 1099 | [小于 K 的两数之和](https://leetcode.cn/problems/two-sum-less-than-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1099.%20%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、二分查找、排序 | 简单 | -| 0075 | [颜色分类](https://leetcode.cn/problems/sort-colors/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0075.%20%E9%A2%9C%E8%89%B2%E5%88%86%E7%B1%BB.md) | 数组、双指针、排序 | 中等 | -| 0360 | [有序转化数组](https://leetcode.cn/problems/sort-transformed-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0360.%20%E6%9C%89%E5%BA%8F%E8%BD%AC%E5%8C%96%E6%95%B0%E7%BB%84.md) | 数组、数学、双指针、排序 | 中等 | -| 0977 | [有序数组的平方](https://leetcode.cn/problems/squares-of-a-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0977.%20%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.md) | 数组、双指针、排序 | 简单 | -| 0881 | [救生艇](https://leetcode.cn/problems/boats-to-save-people/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0881.%20%E6%95%91%E7%94%9F%E8%89%87.md) | 贪心、数组、双指针、排序 | 中等 | -| 0042 | [接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0042.%20%E6%8E%A5%E9%9B%A8%E6%B0%B4.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | -| 0443 | [压缩字符串](https://leetcode.cn/problems/string-compression/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0443.%20%E5%8E%8B%E7%BC%A9%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 中等 | - -#### 快慢指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0026 | [删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0026.%20%E5%88%A0%E9%99%A4%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E9%A1%B9.md) | 数组、双指针 | 简单 | -| 0080 | [删除有序数组中的重复项 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0080.%20%E5%88%A0%E9%99%A4%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E9%A1%B9%20II.md) | 数组、双指针 | 中等 | -| 0027 | [移除元素](https://leetcode.cn/problems/remove-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0027.%20%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.md) | 数组、双指针 | 简单 | -| 0283 | [移动零](https://leetcode.cn/problems/move-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0283.%20%E7%A7%BB%E5%8A%A8%E9%9B%B6.md) | 数组、双指针 | 简单 | -| 0845 | [数组中的最长山脉](https://leetcode.cn/problems/longest-mountain-in-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0845.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E9%95%BF%E5%B1%B1%E8%84%89.md) | 数组、双指针、动态规划、枚举 | 中等 | -| 0088 | [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0088.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、排序 | 简单 | -| 0719 | [找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0719.%20%E6%89%BE%E5%87%BA%E7%AC%AC%20K%20%E5%B0%8F%E7%9A%84%E6%95%B0%E5%AF%B9%E8%B7%9D%E7%A6%BB.md) | 数组、双指针、二分查找、排序 | 困难 | -| 0334 | [递增的三元子序列](https://leetcode.cn/problems/increasing-triplet-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0334.%20%E9%80%92%E5%A2%9E%E7%9A%84%E4%B8%89%E5%85%83%E5%AD%90%E5%BA%8F%E5%88%97.md) | 贪心、数组 | 中等 | -| 0978 | [最长湍流子数组](https://leetcode.cn/problems/longest-turbulent-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0978.%20%E6%9C%80%E9%95%BF%E6%B9%8D%E6%B5%81%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划、滑动窗口 | 中等 | -| 剑指 Offer 21 | [调整数组顺序使奇数位于偶数前面](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2021.%20%E8%B0%83%E6%95%B4%E6%95%B0%E7%BB%84%E9%A1%BA%E5%BA%8F%E4%BD%BF%E5%A5%87%E6%95%B0%E4%BD%8D%E4%BA%8E%E5%81%B6%E6%95%B0%E5%89%8D%E9%9D%A2.md) | 数组、双指针、排序 | 简单 | - -#### 分离双指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0350 | [两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0350.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86%20II.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0925 | [长按键入](https://leetcode.cn/problems/long-pressed-name/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0925.%20%E9%95%BF%E6%8C%89%E9%94%AE%E5%85%A5.md) | 双指针、字符串 | 简单 | -| 0844 | [比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0844.%20%E6%AF%94%E8%BE%83%E5%90%AB%E9%80%80%E6%A0%BC%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 栈、双指针、字符串、模拟 | 简单 | -| 1229 | [安排会议日程](https://leetcode.cn/problems/meeting-scheduler/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1229.%20%E5%AE%89%E6%8E%92%E4%BC%9A%E8%AE%AE%E6%97%A5%E7%A8%8B.md) | 数组、双指针、排序 | 中等 | -| 0415 | [字符串相加](https://leetcode.cn/problems/add-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md) | 数学、字符串、模拟 | 简单 | -| 0392 | [判断子序列](https://leetcode.cn/problems/is-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0392.%20%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.md) | 双指针、字符串、动态规划 | 简单 | - -### 滑动窗口题目 - -#### 固定长度窗口题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1343 | [大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1343.%20%E5%A4%A7%E5%B0%8F%E4%B8%BA%20K%20%E4%B8%94%E5%B9%B3%E5%9D%87%E5%80%BC%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E9%98%88%E5%80%BC%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md) | 数组、滑动窗口 | 中等 | -| 0643 | [子数组最大平均数 I](https://leetcode.cn/problems/maximum-average-subarray-i/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0643.%20%E5%AD%90%E6%95%B0%E7%BB%84%E6%9C%80%E5%A4%A7%E5%B9%B3%E5%9D%87%E6%95%B0%20I.md) | 数组、滑动窗口 | 简单 | -| 1052 | [爱生气的书店老板](https://leetcode.cn/problems/grumpy-bookstore-owner/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1052.%20%E7%88%B1%E7%94%9F%E6%B0%94%E7%9A%84%E4%B9%A6%E5%BA%97%E8%80%81%E6%9D%BF.md) | 数组、滑动窗口 | 中等 | -| 1423 | [可获得的最大点数](https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1423.%20%E5%8F%AF%E8%8E%B7%E5%BE%97%E7%9A%84%E6%9C%80%E5%A4%A7%E7%82%B9%E6%95%B0.md) | 数组、前缀和、滑动窗口 | 中等 | -| 1456 | [定长子串中元音的最大数目](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1456.%20%E5%AE%9A%E9%95%BF%E5%AD%90%E4%B8%B2%E4%B8%AD%E5%85%83%E9%9F%B3%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md) | 字符串、滑动窗口 | 中等 | -| 0567 | [字符串的排列](https://leetcode.cn/problems/permutation-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0567.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%8E%92%E5%88%97.md) | 哈希表、双指针、字符串、滑动窗口 | 中等 | -| 1100 | [长度为 K 的无重复字符子串](https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1100.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%20K%20%E7%9A%84%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 1151 | [最少交换次数来组合所有的 1](https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1151.%20%E6%9C%80%E5%B0%91%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0%E6%9D%A5%E7%BB%84%E5%90%88%E6%89%80%E6%9C%89%E7%9A%84%201.md) | 数组、滑动窗口 | 中等 | -| 1176 | [健身计划评估](https://leetcode.cn/problems/diet-plan-performance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1176.%20%E5%81%A5%E8%BA%AB%E8%AE%A1%E5%88%92%E8%AF%84%E4%BC%B0.md) | 数组、滑动窗口 | 简单 | -| 0438 | [找到字符串中所有字母异位词](https://leetcode.cn/problems/find-all-anagrams-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0438.%20%E6%89%BE%E5%88%B0%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E6%89%80%E6%9C%89%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0995 | [K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0995.%20K%20%E8%BF%9E%E7%BB%AD%E4%BD%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BF%BB%E8%BD%AC%E6%AC%A1%E6%95%B0.md) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | -| 0683 | [K 个关闭的灯泡](https://leetcode.cn/problems/k-empty-slots/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0683.%20K%20%E4%B8%AA%E5%85%B3%E9%97%AD%E7%9A%84%E7%81%AF%E6%B3%A1.md) | 树状数组、数组、有序集合、滑动窗口 | 困难 | -| 0220 | [存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0220.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20III.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | -| 0239 | [滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0239.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | -| 0480 | [滑动窗口中位数](https://leetcode.cn/problems/sliding-window-median/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0480.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、哈希表、滑动窗口、堆(优先队列) | 困难 | - -#### 不定长度窗口题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0674 | [最长连续递增序列](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0674.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E9%80%92%E5%A2%9E%E5%BA%8F%E5%88%97.md) | 数组 | 简单 | -| 0485 | [最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0485.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 数组 | 简单 | -| 0487 | [最大连续1的个数 II](https://leetcode.cn/problems/max-consecutive-ones-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0487.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20II.md) | 数组、动态规划、滑动窗口 | 中等 | -| 0076 | [最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0076.%20%E6%9C%80%E5%B0%8F%E8%A6%86%E7%9B%96%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 困难 | -| 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| 0209 | [长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0209.%20%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 1004 | [最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1004.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20III.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 1658 | [将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1658.%20%E5%B0%86%20x%20%E5%87%8F%E5%88%B0%200%20%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | -| 0424 | [替换后的最长重复字符](https://leetcode.cn/problems/longest-repeating-character-replacement/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0424.%20%E6%9B%BF%E6%8D%A2%E5%90%8E%E7%9A%84%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0003 | [无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0003.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 1695 | [删除子数组的最大得分](https://leetcode.cn/problems/maximum-erasure-value/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1695.%20%E5%88%A0%E9%99%A4%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md) | 数组、哈希表、滑动窗口 | 中等 | -| 1208 | [尽可能使字符串相等](https://leetcode.cn/problems/get-equal-substrings-within-budget/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1208.%20%E5%B0%BD%E5%8F%AF%E8%83%BD%E4%BD%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E7%AD%89.md) | 字符串、二分查找、前缀和、滑动窗口 | 中等 | -| 1493 | [删掉一个元素以后全为 1 的最长子数组](https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1493.%20%E5%88%A0%E6%8E%89%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%E4%BB%A5%E5%90%8E%E5%85%A8%E4%B8%BA%201%20%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划、滑动窗口 | 中等 | -| 0727 | [最小窗口子序列](https://leetcode.cn/problems/minimum-window-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0727.%20%E6%9C%80%E5%B0%8F%E7%AA%97%E5%8F%A3%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划、滑动窗口 | 困难 | -| 0159 | [至多包含两个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0159.%20%E8%87%B3%E5%A4%9A%E5%8C%85%E5%90%AB%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0340 | [至多包含 K 个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0340.%20%E8%87%B3%E5%A4%9A%E5%8C%85%E5%90%AB%20K%20%E4%B8%AA%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0795 | [区间子数组个数](https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0795.%20%E5%8C%BA%E9%97%B4%E5%AD%90%E6%95%B0%E7%BB%84%E4%B8%AA%E6%95%B0.md) | 数组、双指针 | 中等 | -| 0992 | [K 个不同整数的子数组](https://leetcode.cn/problems/subarrays-with-k-different-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0992.%20K%20%E4%B8%AA%E4%B8%8D%E5%90%8C%E6%95%B4%E6%95%B0%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、计数、滑动窗口 | 困难 | -| 0713 | [乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0713.%20%E4%B9%98%E7%A7%AF%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、滑动窗口 | 中等 | -| 0904 | [水果成篮](https://leetcode.cn/problems/fruit-into-baskets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0904.%20%E6%B0%B4%E6%9E%9C%E6%88%90%E7%AF%AE.md) | 数组、哈希表、滑动窗口 | 中等 | -| 1358 | [包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1358.%20%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E4%B8%89%E7%A7%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%9B%AE.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0467 | [环绕字符串中唯一的子字符串](https://leetcode.cn/problems/unique-substrings-in-wraparound-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0467.%20%E7%8E%AF%E7%BB%95%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E5%94%AF%E4%B8%80%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 1438 | [绝对差不超过限制的最长连续子数组](https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1438.%20%E7%BB%9D%E5%AF%B9%E5%B7%AE%E4%B8%8D%E8%B6%85%E8%BF%87%E9%99%90%E5%88%B6%E7%9A%84%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 中等 | - -## 02. 链表 - -### 链表经典题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0707 | [设计链表](https://leetcode.cn/problems/design-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0707.%20%E8%AE%BE%E8%AE%A1%E9%93%BE%E8%A1%A8.md) | 设计、链表 | 中等 | -| 0083 | [删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0083.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md) | 链表 | 简单 | -| 0082 | [删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0082.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20II.md) | 链表、双指针 | 中等 | -| 0206 | [反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0206.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0092 | [反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0092.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8%20II.md) | 链表 | 中等 | -| 0025 | [K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0025.%20K%20%E4%B8%AA%E4%B8%80%E7%BB%84%E7%BF%BB%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 困难 | -| 0203 | [移除链表元素](https://leetcode.cn/problems/remove-linked-list-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0203.%20%E7%A7%BB%E9%99%A4%E9%93%BE%E8%A1%A8%E5%85%83%E7%B4%A0.md) | 递归、链表 | 简单 | -| 0328 | [奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0328.%20%E5%A5%87%E5%81%B6%E9%93%BE%E8%A1%A8.md) | 链表 | 中等 | -| 0234 | [回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0234.%20%E5%9B%9E%E6%96%87%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 简单 | -| 0430 | [扁平化多级双向链表](https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0430.%20%E6%89%81%E5%B9%B3%E5%8C%96%E5%A4%9A%E7%BA%A7%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md) | 深度优先搜索、链表、双向链表 | 中等 | -| 0138 | [复制带随机指针的链表](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0138.%20%E5%A4%8D%E5%88%B6%E5%B8%A6%E9%9A%8F%E6%9C%BA%E6%8C%87%E9%92%88%E7%9A%84%E9%93%BE%E8%A1%A8.md) | 哈希表、链表 | 中等 | -| 0061 | [旋转链表](https://leetcode.cn/problems/rotate-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0061.%20%E6%97%8B%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 链表、双指针 | 中等 | - -### 链表排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0148 | [排序链表](https://leetcode.cn/problems/sort-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0148.%20%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、双指针、分治、排序、归并排序 | 中等 | -| 0021 | [合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0021.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| 0147 | [对链表进行插入排序](https://leetcode.cn/problems/insertion-sort-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0147.%20%E5%AF%B9%E9%93%BE%E8%A1%A8%E8%BF%9B%E8%A1%8C%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F.md) | 链表、排序 | 中等 | - -### 链表双指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0141 | [环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0141.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8.md) | 哈希表、链表、双指针 | 简单 | -| 0142 | [环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0142.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8%20II.md) | 哈希表、链表、双指针 | 中等 | -| 0160 | [相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0160.%20%E7%9B%B8%E4%BA%A4%E9%93%BE%E8%A1%A8.md) | 哈希表、链表、双指针 | 简单 | -| 0019 | [删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0019.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%AC%20N%20%E4%B8%AA%E7%BB%93%E7%82%B9.md) | 链表、双指针 | 中等 | -| 0876 | [链表的中间结点](https://leetcode.cn/problems/middle-of-the-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0876.%20%E9%93%BE%E8%A1%A8%E7%9A%84%E4%B8%AD%E9%97%B4%E7%BB%93%E7%82%B9.md) | 链表、双指针 | 简单 | -| 剑指 Offer 22 | [链表中倒数第k个节点](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2022.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E5%80%92%E6%95%B0%E7%AC%ACk%E4%B8%AA%E8%8A%82%E7%82%B9.md) | 链表、双指针 | 简单 | -| 0143 | [重排链表](https://leetcode.cn/problems/reorder-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0143.%20%E9%87%8D%E6%8E%92%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 中等 | -| 0002 | [两数相加](https://leetcode.cn/problems/add-two-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0002.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0.md) | 递归、链表、数学 | 中等 | -| 0445 | [两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0445.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0%20II.md) | 栈、链表、数学 | 中等 | - -## 03. 堆栈 - -### 堆栈基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1047 | [删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1047.%20%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E7%9B%B8%E9%82%BB%E9%87%8D%E5%A4%8D%E9%A1%B9.md) | 栈、字符串 | 简单 | -| 0155 | [最小栈](https://leetcode.cn/problems/min-stack/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0155.%20%E6%9C%80%E5%B0%8F%E6%A0%88.md) | 栈、设计 | 中等 | -| 0020 | [有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0020.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.md) | 栈、字符串 | 简单 | -| 0227 | [基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0227.%20%E5%9F%BA%E6%9C%AC%E8%AE%A1%E7%AE%97%E5%99%A8%20II.md) | 栈、数学、字符串 | 中等 | -| 0739 | [每日温度](https://leetcode.cn/problems/daily-temperatures/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0739.%20%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.md) | 栈、数组、单调栈 | 中等 | -| 0150 | [逆波兰表达式求值](https://leetcode.cn/problems/evaluate-reverse-polish-notation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0150.%20%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B1%82%E5%80%BC.md) | 栈、数组、数学 | 中等 | -| 0232 | [用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0232.%20%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md) | 栈、设计、队列 | 简单 | -| 剑指 Offer 09 | [用两个栈实现队列](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2009.%20%E7%94%A8%E4%B8%A4%E4%B8%AA%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md) | 栈、设计、队列 | 简单 | -| 0394 | [字符串解码](https://leetcode.cn/problems/decode-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0394.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A7%A3%E7%A0%81.md) | 栈、递归、字符串 | 中等 | -| 0032 | [最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0032.%20%E6%9C%80%E9%95%BF%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7.md) | 栈、字符串、动态规划 | 困难 | -| 0946 | [验证栈序列](https://leetcode.cn/problems/validate-stack-sequences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0946.%20%E9%AA%8C%E8%AF%81%E6%A0%88%E5%BA%8F%E5%88%97.md) | 栈、数组、模拟 | 中等 | -| 剑指 Offer 06 | [从尾到头打印链表](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2006.%20%E4%BB%8E%E5%B0%BE%E5%88%B0%E5%A4%B4%E6%89%93%E5%8D%B0%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 简单 | -| 0071 | [简化路径](https://leetcode.cn/problems/simplify-path/) | | 栈、字符串 | 中等 | - -### 单调栈 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0739 | [每日温度](https://leetcode.cn/problems/daily-temperatures/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0739.%20%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.md) | 栈、数组、单调栈 | 中等 | -| 0496 | [下一个更大元素 I](https://leetcode.cn/problems/next-greater-element-i/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0496.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0%20I.md) | 栈、数组、哈希表、单调栈 | 简单 | -| 0503 | [下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0503.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0%20II.md) | 栈、数组、单调栈 | 中等 | -| 0901 | [股票价格跨度](https://leetcode.cn/problems/online-stock-span/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0901.%20%E8%82%A1%E7%A5%A8%E4%BB%B7%E6%A0%BC%E8%B7%A8%E5%BA%A6.md) | 栈、设计、数据流、单调栈 | 中等 | -| 0084 | [柱状图中最大的矩形](https://leetcode.cn/problems/largest-rectangle-in-histogram/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0084.%20%E6%9F%B1%E7%8A%B6%E5%9B%BE%E4%B8%AD%E6%9C%80%E5%A4%A7%E7%9A%84%E7%9F%A9%E5%BD%A2.md) | 栈、数组、单调栈 | 困难 | -| 0316 | [去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0316.%20%E5%8E%BB%E9%99%A4%E9%87%8D%E5%A4%8D%E5%AD%97%E6%AF%8D.md) | 栈、贪心、字符串、单调栈 | 中等 | -| 0042 | [接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0042.%20%E6%8E%A5%E9%9B%A8%E6%B0%B4.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | -| 0085 | [最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | | 栈、数组、动态规划、矩阵、单调栈 | 困难 | -| 0862 | [和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0862.%20%E5%92%8C%E8%87%B3%E5%B0%91%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | - -## 04. 队列 - -### 队列基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0622 | [设计循环队列](https://leetcode.cn/problems/design-circular-queue/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0622.%20%E8%AE%BE%E8%AE%A1%E5%BE%AA%E7%8E%AF%E9%98%9F%E5%88%97.md) | 设计、队列、数组、链表 | 中等 | -| 0346 | [数据流中的移动平均值](https://leetcode.cn/problems/moving-average-from-data-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0346.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E7%A7%BB%E5%8A%A8%E5%B9%B3%E5%9D%87%E5%80%BC.md) | 设计、队列、数组、数据流 | 简单 | -| 0225 | [用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0225.%20%E7%94%A8%E9%98%9F%E5%88%97%E5%AE%9E%E7%8E%B0%E6%A0%88.md) | 栈、设计、队列 | 简单 | - -### 优先队列题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0703 | [数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0703.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | -| 0347 | [前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0347.%20%E5%89%8D%20K%20%E4%B8%AA%E9%AB%98%E9%A2%91%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | -| 0451 | [根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0451.%20%E6%A0%B9%E6%8D%AE%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E9%A2%91%E7%8E%87%E6%8E%92%E5%BA%8F.md) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | -| 0973 | [最接近原点的 K 个点](https://leetcode.cn/problems/k-closest-points-to-origin/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0973.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E5%8E%9F%E7%82%B9%E7%9A%84%20K%20%E4%B8%AA%E7%82%B9.md) | 几何、数组、数学、分治、快速选择、排序、堆(优先队列) | 中等 | -| 1296 | [划分数组为连续数字的集合](https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1296.%20%E5%88%92%E5%88%86%E6%95%B0%E7%BB%84%E4%B8%BA%E8%BF%9E%E7%BB%AD%E6%95%B0%E5%AD%97%E7%9A%84%E9%9B%86%E5%90%88.md) | 贪心、数组、哈希表、排序 | 中等 | -| 0239 | [滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0239.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | -| 0295 | [数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0295.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| 0218 | [天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0218.%20%E5%A4%A9%E9%99%85%E7%BA%BF%E9%97%AE%E9%A2%98.md) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | - -## 05. 哈希表 - -### 哈希表题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0705 | [设计哈希集合](https://leetcode.cn/problems/design-hashset/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0705.%20%E8%AE%BE%E8%AE%A1%E5%93%88%E5%B8%8C%E9%9B%86%E5%90%88.md) | 设计、数组、哈希表、链表、哈希函数 | 简单 | -| 0706 | [设计哈希映射](https://leetcode.cn/problems/design-hashmap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0706.%20%E8%AE%BE%E8%AE%A1%E5%93%88%E5%B8%8C%E6%98%A0%E5%B0%84.md) | 设计、数组、哈希表、链表、哈希函数 | 简单 | -| 0217 | [存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0217.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md) | 数组、哈希表、排序 | 简单 | -| 0219 | [存在重复元素 II](https://leetcode.cn/problems/contains-duplicate-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0219.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20II.md) | 数组、哈希表、滑动窗口 | 简单 | -| 0220 | [存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0220.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20III.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | -| 1941 | [检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1941.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E7%9B%B8%E5%90%8C.md) | 哈希表、字符串、计数 | 简单 | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | -| 0383 | [赎金信](https://leetcode.cn/problems/ransom-note/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0383.%20%E8%B5%8E%E9%87%91%E4%BF%A1.md) | 哈希表、字符串、计数 | 简单 | -| 0349 | [两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0349.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0350 | [两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0350.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86%20II.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0036 | [有效的数独](https://leetcode.cn/problems/valid-sudoku/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0036.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%95%B0%E7%8B%AC.md) | 数组、哈希表、矩阵 | 中等 | -| 0001 | [两数之和](https://leetcode.cn/problems/two-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0001.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、哈希表 | 简单 | -| 0015 | [三数之和](https://leetcode.cn/problems/3sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0015.%20%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0018 | [四数之和](https://leetcode.cn/problems/4sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0018.%20%E5%9B%9B%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0454 | [四数相加 II](https://leetcode.cn/problems/4sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0454.%20%E5%9B%9B%E6%95%B0%E7%9B%B8%E5%8A%A0%20II.md) | 数组、哈希表 | 中等 | -| 0041 | [缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0041.%20%E7%BC%BA%E5%A4%B1%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%AD%A3%E6%95%B0.md) | 数组、哈希表 | 困难 | -| 0128 | [最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0128.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md) | 并查集、数组、哈希表 | 中等 | -| 0202 | [快乐数](https://leetcode.cn/problems/happy-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0202.%20%E5%BF%AB%E4%B9%90%E6%95%B0.md) | 哈希表、数学、双指针 | 简单 | -| 0242 | [有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0242.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.md) | 哈希表、字符串、排序 | 简单 | -| 0205 | [同构字符串](https://leetcode.cn/problems/isomorphic-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0205.%20%E5%90%8C%E6%9E%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 哈希表、字符串 | 简单 | -| 0442 | [数组中重复的数据](https://leetcode.cn/problems/find-all-duplicates-in-an-array/) | | 数组、哈希表 | 中等 | -| 剑指 Offer 61 | [扑克牌中的顺子](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2061.%20%E6%89%91%E5%85%8B%E7%89%8C%E4%B8%AD%E7%9A%84%E9%A1%BA%E5%AD%90.md) | 数组、排序 | 简单 | -| 0268 | [丢失的数字](https://leetcode.cn/problems/missing-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0268.%20%E4%B8%A2%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | -| 剑指 Offer 03 | [数组中重复的数字](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2003.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97.md) | 数组、哈希表、排序 | 简单 | -| 0451 | [根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0451.%20%E6%A0%B9%E6%8D%AE%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E9%A2%91%E7%8E%87%E6%8E%92%E5%BA%8F.md) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | -| 0049 | [字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0049.%20%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E5%88%86%E7%BB%84.md) | 数组、哈希表、字符串、排序 | 中等 | -| 0599 | [两个列表的最小索引总和](https://leetcode.cn/problems/minimum-index-sum-of-two-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0599.%20%E4%B8%A4%E4%B8%AA%E5%88%97%E8%A1%A8%E7%9A%84%E6%9C%80%E5%B0%8F%E7%B4%A2%E5%BC%95%E6%80%BB%E5%92%8C.md) | 数组、哈希表、字符串 | 简单 | -| 0387 | [字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0387.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%94%AF%E4%B8%80%E5%AD%97%E7%AC%A6.md) | 队列、哈希表、字符串、计数 | 简单 | -| 0447 | [回旋镖的数量](https://leetcode.cn/problems/number-of-boomerangs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0447.%20%E5%9B%9E%E6%97%8B%E9%95%96%E7%9A%84%E6%95%B0%E9%87%8F.md) | 数组、哈希表、数学 | 中等 | -| 0149 | [直线上最多的点数](https://leetcode.cn/problems/max-points-on-a-line/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0149.%20%E7%9B%B4%E7%BA%BF%E4%B8%8A%E6%9C%80%E5%A4%9A%E7%9A%84%E7%82%B9%E6%95%B0.md) | 几何、数组、哈希表、数学 | 困难 | -| 0359 | [日志速率限制器](https://leetcode.cn/problems/logger-rate-limiter/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0359.%20%E6%97%A5%E5%BF%97%E9%80%9F%E7%8E%87%E9%99%90%E5%88%B6%E5%99%A8.md) | 设计、哈希表 | 简单 | -| 0811 | [子域名访问计数](https://leetcode.cn/problems/subdomain-visit-count/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0811.%20%E5%AD%90%E5%9F%9F%E5%90%8D%E8%AE%BF%E9%97%AE%E8%AE%A1%E6%95%B0.md) | 数组、哈希表、字符串、计数 | 中等 | - -## 06. 字符串 - -### 字符串基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0125 | [验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0125.%20%E9%AA%8C%E8%AF%81%E5%9B%9E%E6%96%87%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0005 | [最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0005.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 0003 | [无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0003.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0344 | [反转字符串](https://leetcode.cn/problems/reverse-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0344.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0557 | [反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0557.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D%20III.md) | 双指针、字符串 | 简单 | -| 0049 | [字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0049.%20%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E5%88%86%E7%BB%84.md) | 数组、哈希表、字符串、排序 | 中等 | -| 0415 | [字符串相加](https://leetcode.cn/problems/add-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md) | 数学、字符串、模拟 | 简单 | -| 0151 | [反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0151.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D.md) | 双指针、字符串 | 中等 | -| 0043 | [字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0043.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E4%B9%98.md) | 数学、字符串、模拟 | 中等 | -| 0014 | [最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0014.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%89%8D%E7%BC%80.md) | 字典树、字符串 | 简单 | - -### 单模式串匹配题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0028 | [找出字符串中第一个匹配项的下标](https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0028.%20%E6%89%BE%E5%87%BA%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8C%B9%E9%85%8D%E9%A1%B9%E7%9A%84%E4%B8%8B%E6%A0%87.md) | 双指针、字符串、字符串匹配 | 中等 | -| 0459 | [重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0459.%20%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 字符串、字符串匹配 | 简单 | -| 0686 | [重复叠加字符串匹配](https://leetcode.cn/problems/repeated-string-match/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0686.%20%E9%87%8D%E5%A4%8D%E5%8F%A0%E5%8A%A0%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D.md) | 字符串、字符串匹配 | 中等 | -| 1668 | [最大重复子字符串](https://leetcode.cn/problems/maximum-repeating-substring/) | | 字符串、字符串匹配 | 简单 | -| 0796 | [旋转字符串](https://leetcode.cn/problems/rotate-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0796.%20%E6%97%8B%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 字符串、字符串匹配 | 简单 | -| 1408 | [数组中的字符串匹配](https://leetcode.cn/problems/string-matching-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1408.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D.md) | 数组、字符串、字符串匹配 | 简单 | -| 2156 | [查找给定哈希值的子串](https://leetcode.cn/problems/find-substring-with-given-hash-value/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2156.%20%E6%9F%A5%E6%89%BE%E7%BB%99%E5%AE%9A%E5%93%88%E5%B8%8C%E5%80%BC%E7%9A%84%E5%AD%90%E4%B8%B2.md) | 字符串、滑动窗口、哈希函数、滚动哈希 | 困难 | - -### 字典树题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0208 | [实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0208.%20%E5%AE%9E%E7%8E%B0%20Trie%20%28%E5%89%8D%E7%BC%80%E6%A0%91%29.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 0677 | [键值映射](https://leetcode.cn/problems/map-sum-pairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0677.%20%E9%94%AE%E5%80%BC%E6%98%A0%E5%B0%84.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 0648 | [单词替换](https://leetcode.cn/problems/replace-words/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0648.%20%E5%8D%95%E8%AF%8D%E6%9B%BF%E6%8D%A2.md) | 字典树、数组、哈希表、字符串 | 中等 | -| 0642 | [设计搜索自动补全系统](https://leetcode.cn/problems/design-search-autocomplete-system/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0642.%20%E8%AE%BE%E8%AE%A1%E6%90%9C%E7%B4%A2%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8%E7%B3%BB%E7%BB%9F.md) | 设计、字典树、字符串、数据流 | 困难 | -| 0211 | [添加与搜索单词 - 数据结构设计](https://leetcode.cn/problems/design-add-and-search-words-data-structure/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0211.%20%E6%B7%BB%E5%8A%A0%E4%B8%8E%E6%90%9C%E7%B4%A2%E5%8D%95%E8%AF%8D%20-%20%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E8%AE%BE%E8%AE%A1.md) | 深度优先搜索、设计、字典树、字符串 | 中等 | -| 0421 | [数组中两个数的最大异或值](https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0421.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BC%82%E6%88%96%E5%80%BC.md) | 位运算、字典树、数组、哈希表 | 中等 | -| 0212 | [单词搜索 II](https://leetcode.cn/problems/word-search-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0212.%20%E5%8D%95%E8%AF%8D%E6%90%9C%E7%B4%A2%20II.md) | 字典树、数组、字符串、回溯、矩阵 | 困难 | -| 0425 | [单词方块](https://leetcode.cn/problems/word-squares/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0425.%20%E5%8D%95%E8%AF%8D%E6%96%B9%E5%9D%97.md) | 字典树、数组、字符串、回溯 | 困难 | -| 0336 | [回文对](https://leetcode.cn/problems/palindrome-pairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0336.%20%E5%9B%9E%E6%96%87%E5%AF%B9.md) | 字典树、数组、哈希表、字符串 | 困难 | -| 1023 | [驼峰式匹配](https://leetcode.cn/problems/camelcase-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1023.%20%E9%A9%BC%E5%B3%B0%E5%BC%8F%E5%8C%B9%E9%85%8D.md) | 字典树、双指针、字符串、字符串匹配 | 中等 | -| 0676 | [实现一个魔法字典](https://leetcode.cn/problems/implement-magic-dictionary/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0676.%20%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E9%AD%94%E6%B3%95%E5%AD%97%E5%85%B8.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 0440 | [字典序的第K小数字](https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/) | | 字典树 | 困难 | - -## 07. 树 - -### 二叉树的遍历题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0144 | [二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0144.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0094 | [二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0094.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0145 | [二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0145.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0102 | [二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0102.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0103 | [二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0103.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%94%AF%E9%BD%BF%E5%BD%A2%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0107 | [二叉树的层序遍历 II](https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0107.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86%20II.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0104 | [二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0104.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0111 | [二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0111.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0101 | [对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0101.%20%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0112 | [路径总和](https://leetcode.cn/problems/path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0112.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0113 | [路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0113.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C%20II.md) | 树、深度优先搜索、回溯、二叉树 | 中等 | -| 0236 | [二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0236.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0226 | [翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0226.%20%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0958 | [二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0958.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%8C%E5%85%A8%E6%80%A7%E6%A3%80%E9%AA%8C.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0572 | [另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| 0100 | [相同的树](https://leetcode.cn/problems/same-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0100.%20%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0116 | [填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0116.%20%E5%A1%AB%E5%85%85%E6%AF%8F%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%8F%B3%E4%BE%A7%E8%8A%82%E7%82%B9%E6%8C%87%E9%92%88.md) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | -| 0117 | [填充每个节点的下一个右侧节点指针 II](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0117.%20%E5%A1%AB%E5%85%85%E6%AF%8F%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%8F%B3%E4%BE%A7%E8%8A%82%E7%82%B9%E6%8C%87%E9%92%88%20II.md) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | -| 0297 | [二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0297.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96.md) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | -| 0114 | [二叉树展开为链表](https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/) | | 栈、树、深度优先搜索、链表、二叉树 | 中等 | - -### 二叉树的还原题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0105 | [从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0105.%20%E4%BB%8E%E5%89%8D%E5%BA%8F%E4%B8%8E%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | -| 0106 | [从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0106.%20%E4%BB%8E%E4%B8%AD%E5%BA%8F%E4%B8%8E%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | -| 0889 | [根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0889.%20%E6%A0%B9%E6%8D%AE%E5%89%8D%E5%BA%8F%E5%92%8C%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | - -### 二叉搜索树题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0098 | [验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0098.%20%E9%AA%8C%E8%AF%81%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0173 | [二叉搜索树迭代器](https://leetcode.cn/problems/binary-search-tree-iterator/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0173.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BF%AD%E4%BB%A3%E5%99%A8.md) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | -| 0700 | [二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0700.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E6%90%9C%E7%B4%A2.md) | 树、二叉搜索树、二叉树 | 简单 | -| 0701 | [二叉搜索树中的插入操作](https://leetcode.cn/problems/insert-into-a-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0701.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E6%8F%92%E5%85%A5%E6%93%8D%E4%BD%9C.md) | 树、二叉搜索树、二叉树 | 中等 | -| 0450 | [删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0450.%20%E5%88%A0%E9%99%A4%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md) | 树、二叉搜索树、二叉树 | 中等 | -| 0703 | [数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0703.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | -| 剑指 Offer 54 | [二叉搜索树的第k大节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2054.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E7%AC%ACk%E5%A4%A7%E8%8A%82%E7%82%B9.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| 0230 | [二叉搜索树中第K小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-bst/) | | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0235 | [二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0235.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0426 | [将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0426.%20%E5%B0%86%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%8E%92%E5%BA%8F%E7%9A%84%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | -| 0108 | [将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0108.%20%E5%B0%86%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | -| 0110 | [平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0110.%20%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、二叉树 | 简单 | - -### 线段树题目 - -#### 单点更新题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0303 | [区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0303.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E4%B8%8D%E5%8F%AF%E5%8F%98.md) | 设计、数组、前缀和 | 简单 | -| 0307 | [区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0307.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E5%8F%AF%E4%BF%AE%E6%94%B9.md) | 设计、树状数组、线段树、数组 | 中等 | -| 0354 | [俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0354.%20%E4%BF%84%E7%BD%97%E6%96%AF%E5%A5%97%E5%A8%83%E4%BF%A1%E5%B0%81%E9%97%AE%E9%A2%98.md) | 数组、二分查找、动态规划、排序 | 困难 | - -#### 区间更新题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0370 | [区间加法](https://leetcode.cn/problems/range-addition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0370.%20%E5%8C%BA%E9%97%B4%E5%8A%A0%E6%B3%95.md) | 数组、前缀和 | 中等 | -| 1109 | [航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1109.%20%E8%88%AA%E7%8F%AD%E9%A2%84%E8%AE%A2%E7%BB%9F%E8%AE%A1.md) | 数组、前缀和 | 中等 | -| 1450 | [在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1450.%20%E5%9C%A8%E6%97%A2%E5%AE%9A%E6%97%B6%E9%97%B4%E5%81%9A%E4%BD%9C%E4%B8%9A%E7%9A%84%E5%AD%A6%E7%94%9F%E4%BA%BA%E6%95%B0.md) | 数组 | 简单 | -| 0673 | [最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0673.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、动态规划 | 中等 | -| 1310 | [子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1310.%20%E5%AD%90%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%9F%A5%E8%AF%A2.md) | 位运算、数组、前缀和 | 中等 | -| 1851 | [包含每个查询的最小区间](https://leetcode.cn/problems/minimum-interval-to-include-each-query/) | | 数组、二分查找、排序、扫描线、堆(优先队列) | 困难 | - -#### 区间合并题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0729 | [我的日程安排表 I](https://leetcode.cn/problems/my-calendar-i/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0729.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20I.md) | 设计、线段树、二分查找、有序集合 | 中等 | -| 0731 | [我的日程安排表 II](https://leetcode.cn/problems/my-calendar-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0731.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20II.md) | 设计、线段树、二分查找、有序集合 | 中等 | -| 0732 | [我的日程安排表 III](https://leetcode.cn/problems/my-calendar-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0732.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20III.md) | 设计、线段树、二分查找、有序集合 | 困难 | - -#### 扫描线问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0218 | [天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0218.%20%E5%A4%A9%E9%99%85%E7%BA%BF%E9%97%AE%E9%A2%98.md) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | -| 0391 | [完美矩形](https://leetcode.cn/problems/perfect-rectangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0391.%20%E5%AE%8C%E7%BE%8E%E7%9F%A9%E5%BD%A2.md) | 数组、扫描线 | 困难 | -| 0850 | [矩形面积 II](https://leetcode.cn/problems/rectangle-area-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0850.%20%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF%20II.md) | 线段树、数组、有序集合、扫描线 | 困难 | - -### 树状数组题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0303 | [区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0303.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E4%B8%8D%E5%8F%AF%E5%8F%98.md) | 设计、数组、前缀和 | 简单 | -| 0307 | [区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0307.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E5%8F%AF%E4%BF%AE%E6%94%B9.md) | 设计、树状数组、线段树、数组 | 中等 | -| 0315 | [计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0315.%20%E8%AE%A1%E7%AE%97%E5%8F%B3%E4%BE%A7%E5%B0%8F%E4%BA%8E%E5%BD%93%E5%89%8D%E5%85%83%E7%B4%A0%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | -| 1450 | [在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1450.%20%E5%9C%A8%E6%97%A2%E5%AE%9A%E6%97%B6%E9%97%B4%E5%81%9A%E4%BD%9C%E4%B8%9A%E7%9A%84%E5%AD%A6%E7%94%9F%E4%BA%BA%E6%95%B0.md) | 数组 | 简单 | -| 0354 | [俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0354.%20%E4%BF%84%E7%BD%97%E6%96%AF%E5%A5%97%E5%A8%83%E4%BF%A1%E5%B0%81%E9%97%AE%E9%A2%98.md) | 数组、二分查找、动态规划、排序 | 困难 | -| 0673 | [最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0673.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、动态规划 | 中等 | -| 1310 | [子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1310.%20%E5%AD%90%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%9F%A5%E8%AF%A2.md) | 位运算、数组、前缀和 | 中等 | -| 1893 | [检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1893.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%8C%BA%E5%9F%9F%E5%86%85%E6%89%80%E6%9C%89%E6%95%B4%E6%95%B0%E9%83%BD%E8%A2%AB%E8%A6%86%E7%9B%96.md) | 数组、哈希表、前缀和 | 简单 | - -### 并查集题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0990 | [等式方程的可满足性](https://leetcode.cn/problems/satisfiability-of-equality-equations/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0990.%20%E7%AD%89%E5%BC%8F%E6%96%B9%E7%A8%8B%E7%9A%84%E5%8F%AF%E6%BB%A1%E8%B6%B3%E6%80%A7.md) | 并查集、图、数组、字符串 | 中等 | -| 0547 | [省份数量](https://leetcode.cn/problems/number-of-provinces/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0547.%20%E7%9C%81%E4%BB%BD%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0684 | [冗余连接](https://leetcode.cn/problems/redundant-connection/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0684.%20%E5%86%97%E4%BD%99%E8%BF%9E%E6%8E%A5.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 1319 | [连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1319.%20%E8%BF%9E%E9%80%9A%E7%BD%91%E7%BB%9C%E7%9A%84%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0765 | [情侣牵手](https://leetcode.cn/problems/couples-holding-hands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0765.%20%E6%83%85%E4%BE%A3%E7%89%B5%E6%89%8B.md) | 贪心、深度优先搜索、广度优先搜索、并查集、图 | 困难 | -| 0399 | [除法求值](https://leetcode.cn/problems/evaluate-division/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0399.%20%E9%99%A4%E6%B3%95%E6%B1%82%E5%80%BC.md) | 深度优先搜索、广度优先搜索、并查集、图、数组、最短路 | 中等 | -| 0959 | [由斜杠划分区域](https://leetcode.cn/problems/regions-cut-by-slashes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0959.%20%E7%94%B1%E6%96%9C%E6%9D%A0%E5%88%92%E5%88%86%E5%8C%BA%E5%9F%9F.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | -| 0778 | [水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0778.%20%E6%B0%B4%E4%BD%8D%E4%B8%8A%E5%8D%87%E7%9A%84%E6%B3%B3%E6%B1%A0%E4%B8%AD%E6%B8%B8%E6%B3%B3.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | -| 1202 | [交换字符串中的元素](https://leetcode.cn/problems/smallest-string-with-swaps/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1202.%20%E4%BA%A4%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%85%83%E7%B4%A0.md) | 深度优先搜索、广度优先搜索、并查集、哈希表、字符串 | 中等 | -| 0947 | [移除最多的同行或同列石头](https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0947.%20%E7%A7%BB%E9%99%A4%E6%9C%80%E5%A4%9A%E7%9A%84%E5%90%8C%E8%A1%8C%E6%88%96%E5%90%8C%E5%88%97%E7%9F%B3%E5%A4%B4.md) | 深度优先搜索、并查集、图 | 中等 | -| 0803 | [打砖块](https://leetcode.cn/problems/bricks-falling-when-hit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0803.%20%E6%89%93%E7%A0%96%E5%9D%97.md) | 并查集、数组、矩阵 | 困难 | -| 0128 | [最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0128.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md) | 并查集、数组、哈希表 | 中等 | - -## 08. 图论 - -### 图的深度优先搜索题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0797 | [所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0797.%20%E6%89%80%E6%9C%89%E5%8F%AF%E8%83%BD%E7%9A%84%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | -| 0200 | [岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0200.%20%E5%B2%9B%E5%B1%BF%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0695 | [岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0695.%20%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%9C%80%E5%A4%A7%E9%9D%A2%E7%A7%AF.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0133 | [克隆图](https://leetcode.cn/problems/clone-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0133.%20%E5%85%8B%E9%9A%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | -| 0494 | [目标和](https://leetcode.cn/problems/target-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0494.%20%E7%9B%AE%E6%A0%87%E5%92%8C.md) | 数组、动态规划、回溯 | 中等 | -| 0144 | [二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0144.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0094 | [二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0094.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0145 | [二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0145.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0589 | [N 叉树的前序遍历](https://leetcode.cn/problems/n-ary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0589.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索 | 简单 | -| 0590 | [N 叉树的后序遍历](https://leetcode.cn/problems/n-ary-tree-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0590.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0543 | [二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0543.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md) | 树、深度优先搜索、二叉树 | 简单 | -| 0662 | [二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0662.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%A4%A7%E5%AE%BD%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0958 | [二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0958.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%8C%E5%85%A8%E6%80%A7%E6%A3%80%E9%AA%8C.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0572 | [另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| 0100 | [相同的树](https://leetcode.cn/problems/same-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0100.%20%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0111 | [二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0111.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0841 | [钥匙和房间](https://leetcode.cn/problems/keys-and-rooms/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0841.%20%E9%92%A5%E5%8C%99%E5%92%8C%E6%88%BF%E9%97%B4.md) | 深度优先搜索、广度优先搜索、图 | 中等 | -| 0129 | [求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0129.%20%E6%B1%82%E6%A0%B9%E8%8A%82%E7%82%B9%E5%88%B0%E5%8F%B6%E8%8A%82%E7%82%B9%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0323 | [无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0323.%20%E6%97%A0%E5%90%91%E5%9B%BE%E4%B8%AD%E8%BF%9E%E9%80%9A%E5%88%86%E9%87%8F%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0684 | [冗余连接](https://leetcode.cn/problems/redundant-connection/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0684.%20%E5%86%97%E4%BD%99%E8%BF%9E%E6%8E%A5.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0802 | [找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0802.%20%E6%89%BE%E5%88%B0%E6%9C%80%E7%BB%88%E7%9A%84%E5%AE%89%E5%85%A8%E7%8A%B6%E6%80%81.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0785 | [判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0785.%20%E5%88%A4%E6%96%AD%E4%BA%8C%E5%88%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0886 | [可能的二分法](https://leetcode.cn/problems/possible-bipartition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0886.%20%E5%8F%AF%E8%83%BD%E7%9A%84%E4%BA%8C%E5%88%86%E6%B3%95.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0323 | [无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0323.%20%E6%97%A0%E5%90%91%E5%9B%BE%E4%B8%AD%E8%BF%9E%E9%80%9A%E5%88%86%E9%87%8F%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0130 | [被围绕的区域](https://leetcode.cn/problems/surrounded-regions/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0130.%20%E8%A2%AB%E5%9B%B4%E7%BB%95%E7%9A%84%E5%8C%BA%E5%9F%9F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0417 | [太平洋大西洋水流问题](https://leetcode.cn/problems/pacific-atlantic-water-flow/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0417.%20%E5%A4%AA%E5%B9%B3%E6%B4%8B%E5%A4%A7%E8%A5%BF%E6%B4%8B%E6%B0%B4%E6%B5%81%E9%97%AE%E9%A2%98.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | -| 1020 | [飞地的数量](https://leetcode.cn/problems/number-of-enclaves/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1020.%20%E9%A3%9E%E5%9C%B0%E7%9A%84%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 1254 | [统计封闭岛屿的数目](https://leetcode.cn/problems/number-of-closed-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1254.%20%E7%BB%9F%E8%AE%A1%E5%B0%81%E9%97%AD%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 1034 | [边界着色](https://leetcode.cn/problems/coloring-a-border/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1034.%20%E8%BE%B9%E7%95%8C%E7%9D%80%E8%89%B2.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | -| 剑指 Offer 13 | [机器人的运动范围](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2013.%20%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%9A%84%E8%BF%90%E5%8A%A8%E8%8C%83%E5%9B%B4.md) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | -| 0529 | [扫雷游戏](https://leetcode.cn/problems/minesweeper/) | | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | - -### 图的广度优先搜索题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0797 | [所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0797.%20%E6%89%80%E6%9C%89%E5%8F%AF%E8%83%BD%E7%9A%84%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | -| 0286 | [墙与门](https://leetcode.cn/problems/walls-and-gates/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0286.%20%E5%A2%99%E4%B8%8E%E9%97%A8.md) | 广度优先搜索、数组、矩阵 | 中等 | -| 0200 | [岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0200.%20%E5%B2%9B%E5%B1%BF%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0752 | [打开转盘锁](https://leetcode.cn/problems/open-the-lock/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0752.%20%E6%89%93%E5%BC%80%E8%BD%AC%E7%9B%98%E9%94%81.md) | 广度优先搜索、数组、哈希表、字符串 | 中等 | -| 0279 | [完全平方数](https://leetcode.cn/problems/perfect-squares/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0279.%20%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md) | 广度优先搜索、数学、动态规划 | 中等 | -| 0133 | [克隆图](https://leetcode.cn/problems/clone-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0133.%20%E5%85%8B%E9%9A%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | -| 0733 | [图像渲染](https://leetcode.cn/problems/flood-fill/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0733.%20%E5%9B%BE%E5%83%8F%E6%B8%B2%E6%9F%93.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | -| 0542 | [01 矩阵](https://leetcode.cn/problems/01-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0542.%2001%20%E7%9F%A9%E9%98%B5.md) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | -| 0322 | [零钱兑换](https://leetcode.cn/problems/coin-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0322.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.md) | 广度优先搜索、数组、动态规划 | 中等 | -| 0323 | [无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0323.%20%E6%97%A0%E5%90%91%E5%9B%BE%E4%B8%AD%E8%BF%9E%E9%80%9A%E5%88%86%E9%87%8F%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 剑指 Offer 13 | [机器人的运动范围](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2013.%20%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%9A%84%E8%BF%90%E5%8A%A8%E8%8C%83%E5%9B%B4.md) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0662 | [二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0662.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%A4%A7%E5%AE%BD%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0958 | [二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0958.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%8C%E5%85%A8%E6%80%A7%E6%A3%80%E9%AA%8C.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0572 | [另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| 0100 | [相同的树](https://leetcode.cn/problems/same-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0100.%20%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0111 | [二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0111.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 剑指 Offer 32 - III | [从上到下打印二叉树 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2032%20-%20III.%20%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91%20III.md) | 树、广度优先搜索、二叉树 | 中等 | - -### 图的拓扑排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0207 | [课程表](https://leetcode.cn/problems/course-schedule/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0207.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0210 | [课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0210.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8%20II.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 1136 | [并行课程](https://leetcode.cn/problems/parallel-courses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1136.%20%E5%B9%B6%E8%A1%8C%E8%AF%BE%E7%A8%8B.md) | 图、拓扑排序 | 中等 | -| 2050 | [并行课程 III](https://leetcode.cn/problems/parallel-courses-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2050.%20%E5%B9%B6%E8%A1%8C%E8%AF%BE%E7%A8%8B%20III.md) | 图、拓扑排序、数组、动态规划 | 困难 | -| 0802 | [找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0802.%20%E6%89%BE%E5%88%B0%E6%9C%80%E7%BB%88%E7%9A%84%E5%AE%89%E5%85%A8%E7%8A%B6%E6%80%81.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0851 | [喧闹和富有](https://leetcode.cn/problems/loud-and-rich/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0851.%20%E5%96%A7%E9%97%B9%E5%92%8C%E5%AF%8C%E6%9C%89.md) | 深度优先搜索、图、拓扑排序、数组 | 中等 | - -### 图的最小生成树题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1584 | [连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1584.%20%E8%BF%9E%E6%8E%A5%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B4%B9%E7%94%A8.md) | 并查集、图、数组、最小生成树 | 中等 | -| 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | -| 0778 | [水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0778.%20%E6%B0%B4%E4%BD%8D%E4%B8%8A%E5%8D%87%E7%9A%84%E6%B3%B3%E6%B1%A0%E4%B8%AD%E6%B8%B8%E6%B3%B3.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | - -### 单源最短路径题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0407 | [接雨水 II](https://leetcode.cn/problems/trapping-rain-water-ii/) | | 广度优先搜索、数组、矩阵、堆(优先队列) | 困难 | -| 0743 | [网络延迟时间](https://leetcode.cn/problems/network-delay-time/) | | 深度优先搜索、广度优先搜索、图、最短路、堆(优先队列) | 中等 | -| 0787 | [K 站中转内最便宜的航班](https://leetcode.cn/problems/cheapest-flights-within-k-stops/) | | 深度优先搜索、广度优先搜索、图、动态规划、最短路、堆(优先队列) | 中等 | -| 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | -| 1786 | [从第一个节点出发到最后一个节点的受限路径数](https://leetcode.cn/problems/number-of-restricted-paths-from-first-to-last-node/) | | 图、拓扑排序、动态规划、最短路、堆(优先队列) | 中等 | - -### 多源最短路径题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0815 | [公交路线](https://leetcode.cn/problems/bus-routes/) | | 广度优先搜索、数组、哈希表 | 困难 | -| 1162 | [地图分析](https://leetcode.cn/problems/as-far-from-land-as-possible/) | | 广度优先搜索、数组、动态规划、矩阵 | 中等 | - -### 次短路径题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 2045 | [到达目的地的第二短时间](https://leetcode.cn/problems/second-minimum-time-to-reach-destination/) | | 广度优先搜索、图、最短路 | 困难 | - -### 差分约束系统 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0995 | [K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0995.%20K%20%E8%BF%9E%E7%BB%AD%E4%BD%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BF%BB%E8%BD%AC%E6%AC%A1%E6%95%B0.md) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | -| 1109 | [航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1109.%20%E8%88%AA%E7%8F%AD%E9%A2%84%E8%AE%A2%E7%BB%9F%E8%AE%A1.md) | 数组、前缀和 | 中等 | - -### 二分图基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0785 | [判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0785.%20%E5%88%A4%E6%96%AD%E4%BA%8C%E5%88%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | - -### 二分图最大匹配题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| LCP 04 | [覆盖](https://leetcode.cn/problems/broken-board-dominoes/) | | 位运算、图、数组、动态规划、状态压缩 | 困难 | -| 1947 | [最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1947.%20%E6%9C%80%E5%A4%A7%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%84%E5%88%86%E5%92%8C.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 1595 | [连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1595.%20%E8%BF%9E%E9%80%9A%E4%B8%A4%E7%BB%84%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | - -## 09. 基础算法 - -### 枚举算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0001 | [两数之和](https://leetcode.cn/problems/two-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0001.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、哈希表 | 简单 | -| 0204 | [计数质数](https://leetcode.cn/problems/count-primes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0204.%20%E8%AE%A1%E6%95%B0%E8%B4%A8%E6%95%B0.md) | 数组、数学、枚举、数论 | 中等 | -| 1925 | [统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1925.%20%E7%BB%9F%E8%AE%A1%E5%B9%B3%E6%96%B9%E5%92%8C%E4%B8%89%E5%85%83%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、枚举 | 简单 | -| 1450 | [在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1450.%20%E5%9C%A8%E6%97%A2%E5%AE%9A%E6%97%B6%E9%97%B4%E5%81%9A%E4%BD%9C%E4%B8%9A%E7%9A%84%E5%AD%A6%E7%94%9F%E4%BA%BA%E6%95%B0.md) | 数组 | 简单 | -| 1620 | [网络信号最好的坐标](https://leetcode.cn/problems/coordinate-with-maximum-network-quality/) | | 数组、枚举 | 中等 | -| 剑指 Offer 57 - II | [和为s的连续正数序列](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2057%20-%20II.%20%E5%92%8C%E4%B8%BAs%E7%9A%84%E8%BF%9E%E7%BB%AD%E6%AD%A3%E6%95%B0%E5%BA%8F%E5%88%97.md) | 数学、双指针、枚举 | 简单 | -| 0800 | [相似 RGB 颜色](https://leetcode.cn/problems/similar-rgb-color/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0800.%20%E7%9B%B8%E4%BC%BC%20RGB%20%E9%A2%9C%E8%89%B2.md) | 数学、字符串、枚举 | 简单 | -| 0221 | [最大正方形](https://leetcode.cn/problems/maximal-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0221.%20%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 数组、动态规划、矩阵 | 中等 | -| 0560 | [和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0560.%20%E5%92%8C%E4%B8%BA%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、前缀和 | 中等 | - -### 递归算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0344 | [反转字符串](https://leetcode.cn/problems/reverse-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0344.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0024 | [两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0024.%20%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md) | 递归、链表 | 中等 | -| 0118 | [杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0118.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92.md) | 数组、动态规划 | 简单 | -| 0119 | [杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0119.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%20II.md) | 数组、动态规划 | 简单 | -| 0206 | [反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0206.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0092 | [反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0092.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8%20II.md) | 链表 | 中等 | -| 0021 | [合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0021.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0509 | [斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0509.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| 0070 | [爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0104 | [二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0104.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0226 | [翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0226.%20%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0050 | [Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0050.%20Pow%28x%2C%20n%29.md) | 递归、数学 | 中等 | -| 0779 | [第K个语法符号](https://leetcode.cn/problems/k-th-symbol-in-grammar/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0779.%20%E7%AC%ACK%E4%B8%AA%E8%AF%AD%E6%B3%95%E7%AC%A6%E5%8F%B7.md) | 位运算、递归、数学 | 中等 | -| 0095 | [不同的二叉搜索树 II](https://leetcode.cn/problems/unique-binary-search-trees-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0095.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%20II.md) | 树、二叉搜索树、动态规划、回溯、二叉树 | 中等 | -| 剑指 Offer 62 | [圆圈中最后剩下的数字](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2062.%20%E5%9C%86%E5%9C%88%E4%B8%AD%E6%9C%80%E5%90%8E%E5%89%A9%E4%B8%8B%E7%9A%84%E6%95%B0%E5%AD%97.md) | 递归、数学 | 简单 | - -### 分治算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0004 | [寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0004.%20%E5%AF%BB%E6%89%BE%E4%B8%A4%E4%B8%AA%E6%AD%A3%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、二分查找、分治 | 困难 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| 0053 | [最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、分治、动态规划 | 中等 | -| 0241 | [为运算表达式设计优先级](https://leetcode.cn/problems/different-ways-to-add-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0241.%20%E4%B8%BA%E8%BF%90%E7%AE%97%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%AE%BE%E8%AE%A1%E4%BC%98%E5%85%88%E7%BA%A7.md) | 递归、记忆化搜索、数学、字符串、动态规划 | 中等 | -| 0169 | [多数元素](https://leetcode.cn/problems/majority-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0169.%20%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、计数、排序 | 简单 | -| 0050 | [Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0050.%20Pow%28x%2C%20n%29.md) | 递归、数学 | 中等 | -| 0014 | [最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0014.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%89%8D%E7%BC%80.md) | 字典树、字符串 | 简单 | -| 剑指 Offer 33 | [二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2033.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97.md) | 栈、树、二叉搜索树、递归、二叉树、单调栈 | 中等 | - -### 回溯算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0046 | [全排列](https://leetcode.cn/problems/permutations/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0046.%20%E5%85%A8%E6%8E%92%E5%88%97.md) | 数组、回溯 | 中等 | -| 0047 | [全排列 II](https://leetcode.cn/problems/permutations-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0047.%20%E5%85%A8%E6%8E%92%E5%88%97%20II.md) | 数组、回溯 | 中等 | -| 0037 | [解数独](https://leetcode.cn/problems/sudoku-solver/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0037.%20%E8%A7%A3%E6%95%B0%E7%8B%AC.md) | 数组、哈希表、回溯、矩阵 | 困难 | -| 0022 | [括号生成](https://leetcode.cn/problems/generate-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0022.%20%E6%8B%AC%E5%8F%B7%E7%94%9F%E6%88%90.md) | 字符串、动态规划、回溯 | 中等 | -| 0017 | [电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0017.%20%E7%94%B5%E8%AF%9D%E5%8F%B7%E7%A0%81%E7%9A%84%E5%AD%97%E6%AF%8D%E7%BB%84%E5%90%88.md) | 哈希表、字符串、回溯 | 中等 | -| 0784 | [字母大小写全排列](https://leetcode.cn/problems/letter-case-permutation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0784.%20%E5%AD%97%E6%AF%8D%E5%A4%A7%E5%B0%8F%E5%86%99%E5%85%A8%E6%8E%92%E5%88%97.md) | 位运算、字符串、回溯 | 中等 | -| 0039 | [组合总和](https://leetcode.cn/problems/combination-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0039.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.md) | 数组、回溯 | 中等 | -| 0040 | [组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0040.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C%20II.md) | 数组、回溯 | 中等 | -| 0078 | [子集](https://leetcode.cn/problems/subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0078.%20%E5%AD%90%E9%9B%86.md) | 位运算、数组、回溯 | 中等 | -| 0090 | [子集 II](https://leetcode.cn/problems/subsets-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0090.%20%E5%AD%90%E9%9B%86%20II.md) | 位运算、数组、回溯 | 中等 | -| 0473 | [火柴拼正方形](https://leetcode.cn/problems/matchsticks-to-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0473.%20%E7%81%AB%E6%9F%B4%E6%8B%BC%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 1593 | [拆分字符串使唯一子字符串的数目最大](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1593.%20%E6%8B%86%E5%88%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BD%BF%E5%94%AF%E4%B8%80%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE%E6%9C%80%E5%A4%A7.md) | 哈希表、字符串、回溯 | 中等 | -| 1079 | [活字印刷](https://leetcode.cn/problems/letter-tile-possibilities/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1079.%20%E6%B4%BB%E5%AD%97%E5%8D%B0%E5%88%B7.md) | 哈希表、字符串、回溯、计数 | 中等 | -| 0093 | [复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0093.%20%E5%A4%8D%E5%8E%9F%20IP%20%E5%9C%B0%E5%9D%80.md) | 字符串、回溯 | 中等 | -| 0079 | [单词搜索](https://leetcode.cn/problems/word-search/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0079.%20%E5%8D%95%E8%AF%8D%E6%90%9C%E7%B4%A2.md) | 数组、回溯、矩阵 | 中等 | -| 0679 | [24 点游戏](https://leetcode.cn/problems/24-game/) | | 数组、数学、回溯 | 困难 | - -### 贪心算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0455 | [分发饼干](https://leetcode.cn/problems/assign-cookies/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0455.%20%E5%88%86%E5%8F%91%E9%A5%BC%E5%B9%B2.md) | 贪心、数组、双指针、排序 | 简单 | -| 0860 | [柠檬水找零](https://leetcode.cn/problems/lemonade-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0860.%20%E6%9F%A0%E6%AA%AC%E6%B0%B4%E6%89%BE%E9%9B%B6.md) | 贪心、数组 | 简单 | -| 0056 | [合并区间](https://leetcode.cn/problems/merge-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0056.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md) | 数组、排序 | 中等 | -| 0435 | [无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0435.%20%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.md) | 贪心、数组、动态规划、排序 | 中等 | -| 0452 | [用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0452.%20%E7%94%A8%E6%9C%80%E5%B0%91%E6%95%B0%E9%87%8F%E7%9A%84%E7%AE%AD%E5%BC%95%E7%88%86%E6%B0%94%E7%90%83.md) | 贪心、数组、排序 | 中等 | -| 0055 | [跳跃游戏](https://leetcode.cn/problems/jump-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0055.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F.md) | 贪心、数组、动态规划 | 中等 | -| 0045 | [跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0045.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20II.md) | 贪心、数组、动态规划 | 中等 | -| 0122 | [买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0122.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20II.md) | 贪心、数组 | 中等 | -| 0561 | [数组拆分](https://leetcode.cn/problems/array-partition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0561.%20%E6%95%B0%E7%BB%84%E6%8B%86%E5%88%86.md) | 贪心、数组、计数排序、排序 | 简单 | -| 1710 | [卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1710.%20%E5%8D%A1%E8%BD%A6%E4%B8%8A%E7%9A%84%E6%9C%80%E5%A4%A7%E5%8D%95%E5%85%83%E6%95%B0.md) | 贪心、数组、排序 | 简单 | -| 1217 | [玩筹码](https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1217.%20%E7%8E%A9%E7%AD%B9%E7%A0%81.md) | 贪心、数组、数学 | 简单 | -| 1247 | [交换字符使得字符串相同](https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1247.%20%E4%BA%A4%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%BD%BF%E5%BE%97%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%90%8C.md) | 贪心、数学、字符串 | 中等 | -| 1400 | [构造 K 个回文字符串](https://leetcode.cn/problems/construct-k-palindrome-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1400.%20%E6%9E%84%E9%80%A0%20K%20%E4%B8%AA%E5%9B%9E%E6%96%87%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 贪心、哈希表、字符串、计数 | 中等 | -| 0921 | [使括号有效的最少添加](https://leetcode.cn/problems/minimum-add-to-make-parentheses-valid/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0921.%20%E4%BD%BF%E6%8B%AC%E5%8F%B7%E6%9C%89%E6%95%88%E7%9A%84%E6%9C%80%E5%B0%91%E6%B7%BB%E5%8A%A0.md) | 栈、贪心、字符串 | 中等 | -| 1029 | [两地调度](https://leetcode.cn/problems/two-city-scheduling/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1029.%20%E4%B8%A4%E5%9C%B0%E8%B0%83%E5%BA%A6.md) | 贪心、数组、排序 | 中等 | -| 1605 | [给定行和列的和求可行矩阵](https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1605.%20%E7%BB%99%E5%AE%9A%E8%A1%8C%E5%92%8C%E5%88%97%E7%9A%84%E5%92%8C%E6%B1%82%E5%8F%AF%E8%A1%8C%E7%9F%A9%E9%98%B5.md) | 贪心、数组、矩阵 | 中等 | -| 0135 | [分发糖果](https://leetcode.cn/problems/candy/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0135.%20%E5%88%86%E5%8F%91%E7%B3%96%E6%9E%9C.md) | 贪心、数组 | 困难 | -| 0134 | [加油站](https://leetcode.cn/problems/gas-station/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0134.%20%E5%8A%A0%E6%B2%B9%E7%AB%99.md) | 贪心、数组 | 中等 | -| 0053 | [最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、分治、动态规划 | 中等 | -| 0376 | [摆动序列](https://leetcode.cn/problems/wiggle-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0376.%20%E6%91%86%E5%8A%A8%E5%BA%8F%E5%88%97.md) | 贪心、数组、动态规划 | 中等 | -| 0738 | [单调递增的数字](https://leetcode.cn/problems/monotone-increasing-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0738.%20%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.md) | 贪心、数学 | 中等 | -| 0402 | [移掉 K 位数字](https://leetcode.cn/problems/remove-k-digits/) | | 栈、贪心、字符串、单调栈 | 中等 | -| 0861 | [翻转矩阵后的得分](https://leetcode.cn/problems/score-after-flipping-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0861.%20%E7%BF%BB%E8%BD%AC%E7%9F%A9%E9%98%B5%E5%90%8E%E7%9A%84%E5%BE%97%E5%88%86.md) | 贪心、位运算、数组、矩阵 | 中等 | -| 0670 | [最大交换](https://leetcode.cn/problems/maximum-swap/) | | 贪心、数学 | 中等 | - -### 位运算题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0504 | [七进制数](https://leetcode.cn/problems/base-7/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0504.%20%E4%B8%83%E8%BF%9B%E5%88%B6%E6%95%B0.md) | 数学 | 简单 | -| 0405 | [数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0405.%20%E6%95%B0%E5%AD%97%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E6%95%B0.md) | 位运算、数学 | 简单 | -| 0190 | [颠倒二进制位](https://leetcode.cn/problems/reverse-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0190.%20%E9%A2%A0%E5%80%92%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%BD%8D.md) | 位运算、分治 | 简单 | -| 1009 | [十进制整数的反码](https://leetcode.cn/problems/complement-of-base-10-integer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1009.%20%E5%8D%81%E8%BF%9B%E5%88%B6%E6%95%B4%E6%95%B0%E7%9A%84%E5%8F%8D%E7%A0%81.md) | 位运算 | 简单 | -| 0191 | [位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0191.%20%E4%BD%8D1%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 位运算、分治 | 简单 | -| 0371 | [两整数之和](https://leetcode.cn/problems/sum-of-two-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0371.%20%E4%B8%A4%E6%95%B4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 位运算、数学 | 中等 | -| 0089 | [格雷编码](https://leetcode.cn/problems/gray-code/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0089.%20%E6%A0%BC%E9%9B%B7%E7%BC%96%E7%A0%81.md) | 位运算、数学、回溯 | 中等 | -| 0201 | [数字范围按位与](https://leetcode.cn/problems/bitwise-and-of-numbers-range/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0201.%20%E6%95%B0%E5%AD%97%E8%8C%83%E5%9B%B4%E6%8C%89%E4%BD%8D%E4%B8%8E.md) | 位运算 | 中等 | -| 0338 | [比特位计数](https://leetcode.cn/problems/counting-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0338.%20%E6%AF%94%E7%89%B9%E4%BD%8D%E8%AE%A1%E6%95%B0.md) | 位运算、动态规划 | 简单 | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | -| 0137 | [只出现一次的数字 II](https://leetcode.cn/problems/single-number-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0137.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97%20II.md) | 位运算、数组 | 中等 | -| 0260 | [只出现一次的数字 III](https://leetcode.cn/problems/single-number-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0260.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97%20III.md) | 位运算、数组 | 中等 | -| 0268 | [丢失的数字](https://leetcode.cn/problems/missing-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0268.%20%E4%B8%A2%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | -| 1349 | [参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1349.%20%E5%8F%82%E5%8A%A0%E8%80%83%E8%AF%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| 0645 | [错误的集合](https://leetcode.cn/problems/set-mismatch/) | | 位运算、数组、哈希表、排序 | 简单 | -| 0078 | [子集](https://leetcode.cn/problems/subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0078.%20%E5%AD%90%E9%9B%86.md) | 位运算、数组、回溯 | 中等 | -| 0090 | [子集 II](https://leetcode.cn/problems/subsets-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0090.%20%E5%AD%90%E9%9B%86%20II.md) | 位运算、数组、回溯 | 中等 | - -## 10. 动态规划 - -### 动态规划基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0509 | [斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0509.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| 0070 | [爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0062 | [不同路径](https://leetcode.cn/problems/unique-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0062.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.md) | 数学、动态规划、组合数学 | 中等 | - -### 记忆化搜索题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1137 | [第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1137.%20%E7%AC%AC%20N%20%E4%B8%AA%E6%B3%B0%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0375 | [猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0375.%20%E7%8C%9C%E6%95%B0%E5%AD%97%E5%A4%A7%E5%B0%8F%20II.md) | 数学、动态规划、博弈 | 中等 | -| 0494 | [目标和](https://leetcode.cn/problems/target-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0494.%20%E7%9B%AE%E6%A0%87%E5%92%8C.md) | 数组、动态规划、回溯 | 中等 | -| 0576 | [出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0576.%20%E5%87%BA%E7%95%8C%E7%9A%84%E8%B7%AF%E5%BE%84%E6%95%B0.md) | 动态规划 | 中等 | -| 0087 | [扰乱字符串](https://leetcode.cn/problems/scramble-string/) | | 字符串、动态规划 | 困难 | -| 0403 | [青蛙过河](https://leetcode.cn/problems/frog-jump/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0403.%20%E9%9D%92%E8%9B%99%E8%BF%87%E6%B2%B3.md) | 数组、动态规划 | 困难 | -| 0552 | [学生出勤记录 II](https://leetcode.cn/problems/student-attendance-record-ii/) | | 动态规划 | 困难 | -| 0913 | [猫和老鼠](https://leetcode.cn/problems/cat-and-mouse/) | | 图、拓扑排序、记忆化搜索、数学、动态规划、博弈 | 困难 | -| 0329 | [矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0329.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | - -### 线性 DP 题目 - -#### 单串线性 DP 问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0300 | [最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0300.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.md) | 数组、二分查找、动态规划 | 中等 | -| 0673 | [最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0673.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、动态规划 | 中等 | -| 0354 | [俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0354.%20%E4%BF%84%E7%BD%97%E6%96%AF%E5%A5%97%E5%A8%83%E4%BF%A1%E5%B0%81%E9%97%AE%E9%A2%98.md) | 数组、二分查找、动态规划、排序 | 困难 | -| 0053 | [最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、分治、动态规划 | 中等 | -| 0152 | [乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0152.%20%E4%B9%98%E7%A7%AF%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划 | 中等 | -| 0918 | [环形子数组的最大和](https://leetcode.cn/problems/maximum-sum-circular-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0918.%20%E7%8E%AF%E5%BD%A2%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md) | 队列、数组、分治、动态规划、单调队列 | 中等 | -| 0198 | [打家劫舍](https://leetcode.cn/problems/house-robber/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0198.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.md) | 数组、动态规划 | 中等 | -| 0213 | [打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0213.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D%20II.md) | 数组、动态规划 | 中等 | -| 0740 | [删除并获得点数](https://leetcode.cn/problems/delete-and-earn/) | | 数组、哈希表、动态规划 | 中等 | -| 1388 | [3n 块披萨](https://leetcode.cn/problems/pizza-with-3n-slices/) | | 贪心、数组、动态规划、堆(优先队列) | 困难 | -| 0873 | [最长的斐波那契子序列的长度](https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0873.%20%E6%9C%80%E9%95%BF%E7%9A%84%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E9%95%BF%E5%BA%A6.md) | 数组、哈希表、动态规划 | 中等 | -| 1027 | [最长等差数列](https://leetcode.cn/problems/longest-arithmetic-subsequence/) | | 数组、哈希表、二分查找、动态规划 | 中等 | -| 1055 | [形成字符串的最短路径](https://leetcode.cn/problems/shortest-way-to-form-string/) | | 贪心、双指针、字符串 | 中等 | -| 0368 | [最大整除子集](https://leetcode.cn/problems/largest-divisible-subset/) | | 数组、数学、动态规划、排序 | 中等 | -| 0032 | [最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0032.%20%E6%9C%80%E9%95%BF%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7.md) | 栈、字符串、动态规划 | 困难 | -| 0413 | [等差数列划分](https://leetcode.cn/problems/arithmetic-slices/) | | 数组、动态规划 | 中等 | -| 0091 | [解码方法](https://leetcode.cn/problems/decode-ways/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0091.%20%E8%A7%A3%E7%A0%81%E6%96%B9%E6%B3%95.md) | 字符串、动态规划 | 中等 | -| 0639 | [解码方法 II](https://leetcode.cn/problems/decode-ways-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0639.%20%E8%A7%A3%E7%A0%81%E6%96%B9%E6%B3%95%20II.md) | 字符串、动态规划 | 困难 | -| 0132 | [分割回文串 II](https://leetcode.cn/problems/palindrome-partitioning-ii/) | | 字符串、动态规划 | 困难 | -| 1220 | [统计元音字母序列的数目](https://leetcode.cn/problems/count-vowels-permutation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1220.%20%E7%BB%9F%E8%AE%A1%E5%85%83%E9%9F%B3%E5%AD%97%E6%AF%8D%E5%BA%8F%E5%88%97%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 动态规划 | 困难 | -| 0338 | [比特位计数](https://leetcode.cn/problems/counting-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0338.%20%E6%AF%94%E7%89%B9%E4%BD%8D%E8%AE%A1%E6%95%B0.md) | 位运算、动态规划 | 简单 | -| 0801 | [使序列递增的最小交换次数](https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0801.%20%E4%BD%BF%E5%BA%8F%E5%88%97%E9%80%92%E5%A2%9E%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0.md) | 数组、动态规划 | 困难 | -| 0871 | [最低加油次数](https://leetcode.cn/problems/minimum-number-of-refueling-stops/) | | 贪心、数组、动态规划、堆(优先队列) | 困难 | -| 0045 | [跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0045.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20II.md) | 贪心、数组、动态规划 | 中等 | -| 0813 | [最大平均值和的分组](https://leetcode.cn/problems/largest-sum-of-averages/) | | 数组、动态规划、前缀和 | 中等 | -| 0887 | [鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0887.%20%E9%B8%A1%E8%9B%8B%E6%8E%89%E8%90%BD.md) | 数学、二分查找、动态规划 | 困难 | -| 0256 | [粉刷房子](https://leetcode.cn/problems/paint-house/) | | 数组、动态规划 | 中等 | -| 0265 | [粉刷房子 II](https://leetcode.cn/problems/paint-house-ii/) | | 数组、动态规划 | 困难 | -| 1473 | [粉刷房子 III](https://leetcode.cn/problems/paint-house-iii/) | | 数组、动态规划 | 困难 | -| 0975 | [奇偶跳](https://leetcode.cn/problems/odd-even-jump/) | | 栈、数组、动态规划、有序集合、单调栈 | 困难 | -| 0403 | [青蛙过河](https://leetcode.cn/problems/frog-jump/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0403.%20%E9%9D%92%E8%9B%99%E8%BF%87%E6%B2%B3.md) | 数组、动态规划 | 困难 | -| 1478 | [安排邮筒](https://leetcode.cn/problems/allocate-mailboxes/) | | 数组、数学、动态规划、排序 | 困难 | -| 1230 | [抛掷硬币](https://leetcode.cn/problems/toss-strange-coins/) | | 数学、动态规划、概率与统计 | 中等 | -| 0410 | [分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0410.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | -| 1751 | [最多可以参加的会议数目 II](https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended-ii/) | | 数组、二分查找、动态规划、排序 | 困难 | -| 1787 | [使所有区间的异或结果为零](https://leetcode.cn/problems/make-the-xor-of-all-segments-equal-to-zero/) | | 位运算、数组、动态规划 | 困难 | -| 0121 | [买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0121.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA.md) | 数组、动态规划 | 简单 | -| 0122 | [买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0122.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20II.md) | 贪心、数组 | 中等 | -| 0123 | [买卖股票的最佳时机 III](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0123.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20III.md) | 数组、动态规划 | 困难 | -| 0188 | [买卖股票的最佳时机 IV](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0188.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20IV.md) | 数组、动态规划 | 困难 | -| 0309 | [最佳买卖股票时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0309.%20%E6%9C%80%E4%BD%B3%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E6%97%B6%E6%9C%BA%E5%90%AB%E5%86%B7%E5%86%BB%E6%9C%9F.md) | 数组、动态规划 | 中等 | -| 0714 | [买卖股票的最佳时机含手续费](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0714.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%E5%90%AB%E6%89%8B%E7%BB%AD%E8%B4%B9.md) | 贪心、数组 | 中等 | - -#### 双串线性 DP 问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1143 | [最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1143.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 中等 | -| 0712 | [两个字符串的最小ASCII删除和](https://leetcode.cn/problems/minimum-ascii-delete-sum-for-two-strings/) | | 字符串、动态规划 | 中等 | -| 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| 0583 | [两个字符串的删除操作](https://leetcode.cn/problems/delete-operation-for-two-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0583.%20%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%88%A0%E9%99%A4%E6%93%8D%E4%BD%9C.md) | 字符串、动态规划 | 中等 | -| 0072 | [编辑距离](https://leetcode.cn/problems/edit-distance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0072.%20%E7%BC%96%E8%BE%91%E8%B7%9D%E7%A6%BB.md) | 字符串、动态规划 | 困难 | -| 0044 | [通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0044.%20%E9%80%9A%E9%85%8D%E7%AC%A6%E5%8C%B9%E9%85%8D.md) | 贪心、递归、字符串、动态规划 | 困难 | -| 0010 | [正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0010.%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D.md) | 递归、字符串、动态规划 | 困难 | -| 0097 | [交错字符串](https://leetcode.cn/problems/interleaving-string/) | | 字符串、动态规划 | 中等 | -| 0115 | [不同的子序列](https://leetcode.cn/problems/distinct-subsequences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0115.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 困难 | -| 0087 | [扰乱字符串](https://leetcode.cn/problems/scramble-string/) | | 字符串、动态规划 | 困难 | - -#### 矩阵线性 DP 问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0118 | [杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0118.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92.md) | 数组、动态规划 | 简单 | -| 0119 | [杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0119.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%20II.md) | 数组、动态规划 | 简单 | -| 0120 | [三角形最小路径和](https://leetcode.cn/problems/triangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0120.%20%E4%B8%89%E8%A7%92%E5%BD%A2%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 数组、动态规划 | 中等 | -| 0064 | [最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0064.%20%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 数组、动态规划、矩阵 | 中等 | -| 0174 | [地下城游戏](https://leetcode.cn/problems/dungeon-game/) | | 数组、动态规划、矩阵 | 困难 | -| 0221 | [最大正方形](https://leetcode.cn/problems/maximal-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0221.%20%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 数组、动态规划、矩阵 | 中等 | -| 0931 | [下降路径最小和](https://leetcode.cn/problems/minimum-falling-path-sum/) | | 数组、动态规划、矩阵 | 中等 | -| 0576 | [出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0576.%20%E5%87%BA%E7%95%8C%E7%9A%84%E8%B7%AF%E5%BE%84%E6%95%B0.md) | 动态规划 | 中等 | -| 0085 | [最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | | 栈、数组、动态规划、矩阵、单调栈 | 困难 | -| 0363 | [矩形区域不超过 K 的最大数值和](https://leetcode.cn/problems/max-sum-of-rectangle-no-larger-than-k/) | | 数组、二分查找、矩阵、有序集合、前缀和 | 困难 | -| 面试题 17.24 | [最大子矩阵](https://leetcode.cn/problems/max-submatrix-lcci/) | | 数组、动态规划、矩阵、前缀和 | 困难 | -| 1444 | [切披萨的方案数](https://leetcode.cn/problems/number-of-ways-of-cutting-a-pizza/) | | 记忆化搜索、数组、动态规划、矩阵 | 困难 | - -#### 无串线性 DP 问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1137 | [第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1137.%20%E7%AC%AC%20N%20%E4%B8%AA%E6%B3%B0%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0650 | [只有两个键的键盘](https://leetcode.cn/problems/2-keys-keyboard/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0650.%20%E5%8F%AA%E6%9C%89%E4%B8%A4%E4%B8%AA%E9%94%AE%E7%9A%84%E9%94%AE%E7%9B%98.md) | 数学、动态规划 | 中等 | -| 0264 | [丑数 II](https://leetcode.cn/problems/ugly-number-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0264.%20%E4%B8%91%E6%95%B0%20II.md) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | -| 0279 | [完全平方数](https://leetcode.cn/problems/perfect-squares/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0279.%20%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md) | 广度优先搜索、数学、动态规划 | 中等 | -| 0343 | [整数拆分](https://leetcode.cn/problems/integer-break/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0343.%20%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.md) | 数学、动态规划 | 中等 | - -### 背包问题题目 - -#### 0-1 背包问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0416 | [分割等和子集](https://leetcode.cn/problems/partition-equal-subset-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0416.%20%E5%88%86%E5%89%B2%E7%AD%89%E5%92%8C%E5%AD%90%E9%9B%86.md) | 数组、动态规划 | 中等 | -| 0494 | [目标和](https://leetcode.cn/problems/target-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0494.%20%E7%9B%AE%E6%A0%87%E5%92%8C.md) | 数组、动态规划、回溯 | 中等 | -| 1049 | [最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1049.%20%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7%9A%84%E9%87%8D%E9%87%8F%20II.md) | 数组、动态规划 | 中等 | - -#### 完全背包问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0279 | [完全平方数](https://leetcode.cn/problems/perfect-squares/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0279.%20%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md) | 广度优先搜索、数学、动态规划 | 中等 | -| 0322 | [零钱兑换](https://leetcode.cn/problems/coin-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0322.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.md) | 广度优先搜索、数组、动态规划 | 中等 | -| 0518 | [零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0518.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2%20II.md) | 数组、动态规划 | 中等 | -| 0139 | [单词拆分](https://leetcode.cn/problems/word-break/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0139.%20%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.md) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | -| 0377 | [组合总和 Ⅳ](https://leetcode.cn/problems/combination-sum-iv/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0377.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C%20%E2%85%A3.md) | 数组、动态规划 | 中等 | -| 0638 | [大礼包](https://leetcode.cn/problems/shopping-offers/) | | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | -| 1449 | [数位成本和为目标值的最大数字](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1449.%20%E6%95%B0%E4%BD%8D%E6%88%90%E6%9C%AC%E5%92%8C%E4%B8%BA%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E5%AD%97.md) | 数组、动态规划 | 困难 | - -#### 多重背包问题 - -#### 分组背包问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1155 | [掷骰子等于目标和的方法数](https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1155.%20%E6%8E%B7%E9%AA%B0%E5%AD%90%E7%AD%89%E4%BA%8E%E7%9B%AE%E6%A0%87%E5%92%8C%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md) | 动态规划 | 中等 | -| 2585 | [获得分数的方法数](https://leetcode.cn/problems/number-of-ways-to-earn-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2585.%20%E8%8E%B7%E5%BE%97%E5%88%86%E6%95%B0%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md) | 数组、动态规划 | 困难 | - -#### 多维背包问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0474 | [一和零](https://leetcode.cn/problems/ones-and-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0474.%20%E4%B8%80%E5%92%8C%E9%9B%B6.md) | 数组、字符串、动态规划 | 中等 | -| 0879 | [盈利计划](https://leetcode.cn/problems/profitable-schemes/) | | 数组、动态规划 | 困难 | -| 1995 | [统计特殊四元组](https://leetcode.cn/problems/count-special-quadruplets/) | | 数组、枚举 | 简单 | - -### 区间 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0486 | [预测赢家](https://leetcode.cn/problems/predict-the-winner/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0486.%20%E9%A2%84%E6%B5%8B%E8%B5%A2%E5%AE%B6.md) | 递归、数组、数学、动态规划、博弈 | 中等 | -| 0312 | [戳气球](https://leetcode.cn/problems/burst-balloons/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0312.%20%E6%88%B3%E6%B0%94%E7%90%83.md) | 数组、动态规划 | 困难 | -| 0877 | [石子游戏](https://leetcode.cn/problems/stone-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0877.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F.md) | 数组、数学、动态规划、博弈 | 中等 | -| 1000 | [合并石头的最低成本](https://leetcode.cn/problems/minimum-cost-to-merge-stones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1000.%20%E5%90%88%E5%B9%B6%E7%9F%B3%E5%A4%B4%E7%9A%84%E6%9C%80%E4%BD%8E%E6%88%90%E6%9C%AC.md) | 数组、动态规划、前缀和 | 困难 | -| 1547 | [切棍子的最小成本](https://leetcode.cn/problems/minimum-cost-to-cut-a-stick/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1547.%20%E5%88%87%E6%A3%8D%E5%AD%90%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md) | 数组、动态规划、排序 | 困难 | -| 0664 | [奇怪的打印机](https://leetcode.cn/problems/strange-printer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0664.%20%E5%A5%87%E6%80%AA%E7%9A%84%E6%89%93%E5%8D%B0%E6%9C%BA.md) | 字符串、动态规划 | 困难 | -| 1039 | [多边形三角剖分的最低得分](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1039.%20%E5%A4%9A%E8%BE%B9%E5%BD%A2%E4%B8%89%E8%A7%92%E5%89%96%E5%88%86%E7%9A%84%E6%9C%80%E4%BD%8E%E5%BE%97%E5%88%86.md) | 数组、动态规划 | 中等 | -| 0546 | [移除盒子](https://leetcode.cn/problems/remove-boxes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0546.%20%E7%A7%BB%E9%99%A4%E7%9B%92%E5%AD%90.md) | 记忆化搜索、数组、动态规划 | 困难 | -| 0375 | [猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0375.%20%E7%8C%9C%E6%95%B0%E5%AD%97%E5%A4%A7%E5%B0%8F%20II.md) | 数学、动态规划、博弈 | 中等 | -| 0678 | [有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0678.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 栈、贪心、字符串、动态规划 | 中等 | -| 0005 | [最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0005.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 0516 | [最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0516.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 中等 | -| 0730 | [统计不同回文子序列](https://leetcode.cn/problems/count-different-palindromic-subsequences/) | | 字符串、动态规划 | 困难 | -| 2104 | [子数组范围和](https://leetcode.cn/problems/sum-of-subarray-ranges/) | | 栈、数组、单调栈 | 中等 | - -### 树形 DP 题目 - -#### 固定根的树形 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0543 | [二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0543.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md) | 树、深度优先搜索、二叉树 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 1245 | [树的直径](https://leetcode.cn/problems/tree-diameter/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1245.%20%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md) | 树、深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 2246 | [相邻字符不同的最长路径](https://leetcode.cn/problems/longest-path-with-different-adjacent-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2246.%20%E7%9B%B8%E9%82%BB%E5%AD%97%E7%AC%A6%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9C%80%E9%95%BF%E8%B7%AF%E5%BE%84.md) | 树、深度优先搜索、图、拓扑排序、数组、字符串 | 困难 | -| 0687 | [最长同值路径](https://leetcode.cn/problems/longest-univalue-path/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0687.%20%E6%9C%80%E9%95%BF%E5%90%8C%E5%80%BC%E8%B7%AF%E5%BE%84.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0337 | [打家劫舍 III](https://leetcode.cn/problems/house-robber-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0337.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D%20III.md) | 树、深度优先搜索、动态规划、二叉树 | 中等 | -| 0333 | [最大 BST 子树](https://leetcode.cn/problems/largest-bst-subtree/) | | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 中等 | -| 1617 | [统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1617.%20%E7%BB%9F%E8%AE%A1%E5%AD%90%E6%A0%91%E4%B8%AD%E5%9F%8E%E5%B8%82%E4%B9%8B%E9%97%B4%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | -| 2538 | [最大价值和与最小价值和的差值](https://leetcode.cn/problems/difference-between-maximum-and-minimum-price-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2538.%20%E6%9C%80%E5%A4%A7%E4%BB%B7%E5%80%BC%E5%92%8C%E4%B8%8E%E6%9C%80%E5%B0%8F%E4%BB%B7%E5%80%BC%E5%92%8C%E7%9A%84%E5%B7%AE%E5%80%BC.md) | 树、深度优先搜索、数组、动态规划 | 困难 | -| 1569 | [将子数组重新排序得到同一个二叉搜索树的方案数](https://leetcode.cn/problems/number-of-ways-to-reorder-array-to-get-same-bst/) | | 树、并查集、二叉搜索树、记忆化搜索、数组、数学、分治、动态规划、二叉树、组合数学 | 困难 | -| 1372 | [二叉树中的最长交错路径](https://leetcode.cn/problems/longest-zigzag-path-in-a-binary-tree/) | | 树、深度优先搜索、动态规划、二叉树 | 中等 | -| 1373 | [二叉搜索子树的最大键值和](https://leetcode.cn/problems/maximum-sum-bst-in-binary-tree/) | | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 困难 | -| 0968 | [监控二叉树](https://leetcode.cn/problems/binary-tree-cameras/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0968.%20%E7%9B%91%E6%8E%A7%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 1273 | [删除树节点](https://leetcode.cn/problems/delete-tree-nodes/) | | 树、深度优先搜索、广度优先搜索 | 中等 | -| 1519 | [子树中标签相同的节点数](https://leetcode.cn/problems/number-of-nodes-in-the-sub-tree-with-the-same-label/) | | 树、深度优先搜索、广度优先搜索、哈希表、计数 | 中等 | - -#### 不定根的树形 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0310 | [最小高度树](https://leetcode.cn/problems/minimum-height-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0310.%20%E6%9C%80%E5%B0%8F%E9%AB%98%E5%BA%A6%E6%A0%91.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0834 | [树中距离之和](https://leetcode.cn/problems/sum-of-distances-in-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0834.%20%E6%A0%91%E4%B8%AD%E8%B7%9D%E7%A6%BB%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、图、动态规划 | 困难 | -| 2581 | [统计可能的树根数目](https://leetcode.cn/problems/count-number-of-possible-root-nodes/) | | 树、深度优先搜索、哈希表、动态规划 | 困难 | - -### 状态压缩 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1879 | [两个数组最小的异或值之和](https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1879.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E6%9C%80%E5%B0%8F%E7%9A%84%E5%BC%82%E6%88%96%E5%80%BC%E4%B9%8B%E5%92%8C.md) | 位运算、数组、动态规划、状态压缩 | 困难 | -| 2172 | [数组的最大与和](https://leetcode.cn/problems/maximum-and-sum-of-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2172.%20%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B8%8E%E5%92%8C.md) | 位运算、数组、动态规划、状态压缩 | 困难 | -| 1947 | [最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1947.%20%E6%9C%80%E5%A4%A7%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%84%E5%88%86%E5%92%8C.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 1595 | [连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1595.%20%E8%BF%9E%E9%80%9A%E4%B8%A4%E7%BB%84%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| 1494 | [并行课程 II](https://leetcode.cn/problems/parallel-courses-ii/) | | 位运算、图、动态规划、状态压缩 | 困难 | -| 1655 | [分配重复整数](https://leetcode.cn/problems/distribute-repeating-integers/) | | 位运算、数组、动态规划、回溯、状态压缩 | 困难 | -| 1986 | [完成任务的最少工作时间段](https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1986.%20%E5%AE%8C%E6%88%90%E4%BB%BB%E5%8A%A1%E7%9A%84%E6%9C%80%E5%B0%91%E5%B7%A5%E4%BD%9C%E6%97%B6%E9%97%B4%E6%AE%B5.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 1434 | [每个人戴不同帽子的方案数](https://leetcode.cn/problems/number-of-ways-to-wear-different-hats-to-each-other/) | | 位运算、数组、动态规划、状态压缩 | 困难 | -| 1799 | [N 次操作后的最大分数和](https://leetcode.cn/problems/maximize-score-after-n-operations/) | | 位运算、数组、数学、动态规划、回溯、状态压缩、数论 | 困难 | -| 1681 | [最小不兼容性](https://leetcode.cn/problems/minimum-incompatibility/) | | 位运算、数组、动态规划、状态压缩 | 困难 | -| 0526 | [优美的排列](https://leetcode.cn/problems/beautiful-arrangement/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0526.%20%E4%BC%98%E7%BE%8E%E7%9A%84%E6%8E%92%E5%88%97.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 0351 | [安卓系统手势解锁](https://leetcode.cn/problems/android-unlock-patterns/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0351.%20%E5%AE%89%E5%8D%93%E7%B3%BB%E7%BB%9F%E6%89%8B%E5%8A%BF%E8%A7%A3%E9%94%81.md) | 动态规划、回溯 | 中等 | -| 0464 | [我能赢吗](https://leetcode.cn/problems/can-i-win/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0464.%20%E6%88%91%E8%83%BD%E8%B5%A2%E5%90%97.md) | 位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 | 中等 | -| 0847 | [访问所有节点的最短路径](https://leetcode.cn/problems/shortest-path-visiting-all-nodes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0847.%20%E8%AE%BF%E9%97%AE%E6%89%80%E6%9C%89%E8%8A%82%E7%82%B9%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md) | 位运算、广度优先搜索、图、动态规划、状态压缩 | 困难 | -| 0638 | [大礼包](https://leetcode.cn/problems/shopping-offers/) | | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | -| 1994 | [好子集的数目](https://leetcode.cn/problems/the-number-of-good-subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1994.%20%E5%A5%BD%E5%AD%90%E9%9B%86%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 位运算、数组、数学、动态规划、状态压缩 | 困难 | -| 1349 | [参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1349.%20%E5%8F%82%E5%8A%A0%E8%80%83%E8%AF%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| 0698 | [划分为k个相等的子集](https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0698.%20%E5%88%92%E5%88%86%E4%B8%BAk%E4%B8%AA%E7%9B%B8%E7%AD%89%E7%9A%84%E5%AD%90%E9%9B%86.md) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | -| 0943 | [最短超级串](https://leetcode.cn/problems/find-the-shortest-superstring/) | | 位运算、数组、字符串、动态规划、状态压缩 | 困难 | -| 0691 | [贴纸拼词](https://leetcode.cn/problems/stickers-to-spell-word/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0691.%20%E8%B4%B4%E7%BA%B8%E6%8B%BC%E8%AF%8D.md) | 位运算、数组、字符串、动态规划、回溯、状态压缩 | 困难 | -| 0982 | [按位与为零的三元组](https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0982.%20%E6%8C%89%E4%BD%8D%E4%B8%8E%E4%B8%BA%E9%9B%B6%E7%9A%84%E4%B8%89%E5%85%83%E7%BB%84.md) | 位运算、数组、哈希表 | 困难 | - -### 计数 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0062 | [不同路径](https://leetcode.cn/problems/unique-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0062.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.md) | 数学、动态规划、组合数学 | 中等 | -| 0063 | [不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0063.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84%20II.md) | 数组、动态规划、矩阵 | 中等 | -| 0343 | [整数拆分](https://leetcode.cn/problems/integer-break/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0343.%20%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.md) | 数学、动态规划 | 中等 | -| 0096 | [不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0096.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | -| 1259 | [不相交的握手](https://leetcode.cn/problems/handshakes-that-dont-cross/) | | 数学、动态规划 | 困难 | -| 0790 | [多米诺和托米诺平铺](https://leetcode.cn/problems/domino-and-tromino-tiling/) | | 动态规划 | 中等 | -| 0070 | [爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0746 | [使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0746.%20%E4%BD%BF%E7%94%A8%E6%9C%80%E5%B0%8F%E8%8A%B1%E8%B4%B9%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 数组、动态规划 | 简单 | -| 0509 | [斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0509.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| 1137 | [第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1137.%20%E7%AC%AC%20N%20%E4%B8%AA%E6%B3%B0%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 记忆化搜索、数学、动态规划 | 简单 | - -### 数位 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 2376 | [统计特殊整数](https://leetcode.cn/problems/count-special-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2376.%20%E7%BB%9F%E8%AE%A1%E7%89%B9%E6%AE%8A%E6%95%B4%E6%95%B0.md) | 数学、动态规划 | 困难 | -| 0357 | [统计各位数字都不同的数字个数](https://leetcode.cn/problems/count-numbers-with-unique-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0357.%20%E7%BB%9F%E8%AE%A1%E5%90%84%E4%BD%8D%E6%95%B0%E5%AD%97%E9%83%BD%E4%B8%8D%E5%90%8C%E7%9A%84%E6%95%B0%E5%AD%97%E4%B8%AA%E6%95%B0.md) | 数学、动态规划、回溯 | 中等 | -| 1012 | [至少有 1 位重复的数字](https://leetcode.cn/problems/numbers-with-repeated-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1012.%20%E8%87%B3%E5%B0%91%E6%9C%89%201%20%E4%BD%8D%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97.md) | 数学、动态规划 | 困难 | -| 0902 | [最大为 N 的数字组合](https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0902.%20%E6%9C%80%E5%A4%A7%E4%B8%BA%20N%20%E7%9A%84%E6%95%B0%E5%AD%97%E7%BB%84%E5%90%88.md) | 数组、数学、字符串、二分查找、动态规划 | 困难 | -| 0788 | [旋转数字](https://leetcode.cn/problems/rotated-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0788.%20%E6%97%8B%E8%BD%AC%E6%95%B0%E5%AD%97.md) | 数学、动态规划 | 中等 | -| 0600 | [不含连续1的非负整数](https://leetcode.cn/problems/non-negative-integers-without-consecutive-ones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0600.%20%E4%B8%8D%E5%90%AB%E8%BF%9E%E7%BB%AD1%E7%9A%84%E9%9D%9E%E8%B4%9F%E6%95%B4%E6%95%B0.md) | 动态规划 | 困难 | -| 0233 | [数字 1 的个数](https://leetcode.cn/problems/number-of-digit-one/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0233.%20%E6%95%B0%E5%AD%97%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 递归、数学、动态规划 | 困难 | -| 2719 | [统计整数数目](https://leetcode.cn/problems/count-of-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2719.%20%E7%BB%9F%E8%AE%A1%E6%95%B4%E6%95%B0%E6%95%B0%E7%9B%AE.md) | 数学、字符串、动态规划 | 困难 | -| 0248 | [中心对称数 III](https://leetcode.cn/problems/strobogrammatic-number-iii/) | | 递归、数组、字符串 | 困难 | -| 1088 | [易混淆数 II](https://leetcode.cn/problems/confusing-number-ii/) | | 数学、回溯 | 困难 | -| 1067 | [范围内的数字计数](https://leetcode.cn/problems/digit-count-in-range/) | | 数学、动态规划 | 困难 | -| 1742 | [盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1742.%20%E7%9B%92%E5%AD%90%E4%B8%AD%E5%B0%8F%E7%90%83%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md) | 哈希表、数学、计数 | 简单 | -| 面试题 17.06 | [2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.06.%202%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0.md) | 递归、数学、动态规划 | 困难 | - -### 概率 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0688 | [骑士在棋盘上的概率](https://leetcode.cn/problems/knight-probability-in-chessboard/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0688.%20%E9%AA%91%E5%A3%AB%E5%9C%A8%E6%A3%8B%E7%9B%98%E4%B8%8A%E7%9A%84%E6%A6%82%E7%8E%87.md) | 动态规划 | 中等 | -| 0808 | [分汤](https://leetcode.cn/problems/soup-servings/) | | 数学、动态规划、概率与统计 | 中等 | -| 0837 | [新 21 点](https://leetcode.cn/problems/new-21-game/) | | 数学、动态规划、滑动窗口、概率与统计 | 中等 | -| 1230 | [抛掷硬币](https://leetcode.cn/problems/toss-strange-coins/) | | 数学、动态规划、概率与统计 | 中等 | -| 1467 | [两个盒子中球的颜色数相同的概率](https://leetcode.cn/problems/probability-of-a-two-boxes-having-the-same-number-of-distinct-balls/) | | 数组、数学、动态规划、回溯、组合数学、概率与统计 | 困难 | -| 1227 | [飞机座位分配概率](https://leetcode.cn/problems/airplane-seat-assignment-probability/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1227.%20%E9%A3%9E%E6%9C%BA%E5%BA%A7%E4%BD%8D%E5%88%86%E9%85%8D%E6%A6%82%E7%8E%87.md) | 脑筋急转弯、数学、动态规划、概率与统计 | 中等 | -| 1377 | [T 秒后青蛙的位置](https://leetcode.cn/problems/frog-position-after-t-seconds/) | | 树、深度优先搜索、广度优先搜索、图 | 困难 | -| 剑指 Offer 60 | [n个骰子的点数](https://leetcode.cn/problems/nge-tou-zi-de-dian-shu-lcof/) | | 数学、动态规划、概率与统计 | 中等 | - -### 动态规划优化题目 - diff --git a/Contents/00.Introduction/06.Interview-100-List.md b/Contents/00.Introduction/06.Interview-100-List.md deleted file mode 100644 index df1c1d8b..00000000 --- a/Contents/00.Introduction/06.Interview-100-List.md +++ /dev/null @@ -1,382 +0,0 @@ -# LeetCode 面试最常考 100 题(按分类排序) - -## 01. 数组 - -### 数组基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0054 | [螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0054.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5.md) | 数组、矩阵、模拟 | 中等 | -| 0048 | [旋转图像](https://leetcode.cn/problems/rotate-image/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0048.%20%E6%97%8B%E8%BD%AC%E5%9B%BE%E5%83%8F.md) | 数组、数学、矩阵 | 中等 | - -### 排序算法题目 - -#### 选择排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0215 | [数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0215.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%ACK%E4%B8%AA%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | - -#### 希尔排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | - -#### 归并排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0088 | [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0088.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、排序 | 简单 | - -#### 快速排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0169 | [多数元素](https://leetcode.cn/problems/majority-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0169.%20%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、计数、排序 | 简单 | - -#### 堆排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0215 | [数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0215.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%ACK%E4%B8%AA%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | - -#### 计数排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | - -#### 桶排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | - -#### 其他排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | -| 0056 | [合并区间](https://leetcode.cn/problems/merge-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0056.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md) | 数组、排序 | 中等 | -| 0179 | [最大数](https://leetcode.cn/problems/largest-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0179.%20%E6%9C%80%E5%A4%A7%E6%95%B0.md) | 贪心、数组、字符串、排序 | 中等 | - -### 二分查找题目 - -#### 二分下标题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0704 | [二分查找](https://leetcode.cn/problems/binary-search/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0704.%20%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.md) | 数组、二分查找 | 简单 | -| 0034 | [在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0034.%20%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%85%83%E7%B4%A0%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%92%8C%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E4%BD%8D%E7%BD%AE.md) | 数组、二分查找 | 中等 | -| 0153 | [寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0153.%20%E5%AF%BB%E6%89%BE%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md) | 数组、二分查找 | 中等 | -| 0033 | [搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0033.%20%E6%90%9C%E7%B4%A2%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、二分查找 | 中等 | -| 0162 | [寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0162.%20%E5%AF%BB%E6%89%BE%E5%B3%B0%E5%80%BC.md) | 数组、二分查找 | 中等 | -| 0004 | [寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0004.%20%E5%AF%BB%E6%89%BE%E4%B8%A4%E4%B8%AA%E6%AD%A3%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、二分查找、分治 | 困难 | -| 0240 | [搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0240.%20%E6%90%9C%E7%B4%A2%E4%BA%8C%E7%BB%B4%E7%9F%A9%E9%98%B5%20II.md) | 数组、二分查找、分治、矩阵 | 中等 | - -#### 二分答案题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0069 | [x 的平方根](https://leetcode.cn/problems/sqrtx/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0069.%20x%20%E7%9A%84%E5%B9%B3%E6%96%B9%E6%A0%B9.md) | 数学、二分查找 | 简单 | - -### 双指针题目 - -#### 对撞指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0015 | [三数之和](https://leetcode.cn/problems/3sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0015.%20%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | - -#### 快慢指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0283 | [移动零](https://leetcode.cn/problems/move-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0283.%20%E7%A7%BB%E5%8A%A8%E9%9B%B6.md) | 数组、双指针 | 简单 | -| 0088 | [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0088.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、排序 | 简单 | - -#### 分离双指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0415 | [字符串相加](https://leetcode.cn/problems/add-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md) | 数学、字符串、模拟 | 简单 | - -### 滑动窗口题目 - -#### 固定长度窗口题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0239 | [滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0239.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | - -#### 不定长度窗口题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0003 | [无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0003.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0076 | [最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0076.%20%E6%9C%80%E5%B0%8F%E8%A6%86%E7%9B%96%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 困难 | -| 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | - -## 02. 链表 - -### 链表经典题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0083 | [删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0083.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md) | 链表 | 简单 | -| 0082 | [删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0082.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20II.md) | 链表、双指针 | 中等 | -| 0206 | [反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0206.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0092 | [反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0092.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8%20II.md) | 链表 | 中等 | -| 0025 | [K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0025.%20K%20%E4%B8%AA%E4%B8%80%E7%BB%84%E7%BF%BB%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 困难 | -| 0234 | [回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0234.%20%E5%9B%9E%E6%96%87%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 简单 | - -### 链表排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0148 | [排序链表](https://leetcode.cn/problems/sort-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0148.%20%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、双指针、分治、排序、归并排序 | 中等 | -| 0021 | [合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0021.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | - -### 链表双指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0141 | [环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0141.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8.md) | 哈希表、链表、双指针 | 简单 | -| 0142 | [环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0142.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8%20II.md) | 哈希表、链表、双指针 | 中等 | -| 0160 | [相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0160.%20%E7%9B%B8%E4%BA%A4%E9%93%BE%E8%A1%A8.md) | 哈希表、链表、双指针 | 简单 | -| 0019 | [删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0019.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%AC%20N%20%E4%B8%AA%E7%BB%93%E7%82%B9.md) | 链表、双指针 | 中等 | -| 剑指 Offer 22 | [链表中倒数第k个节点](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2022.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E5%80%92%E6%95%B0%E7%AC%ACk%E4%B8%AA%E8%8A%82%E7%82%B9.md) | 链表、双指针 | 简单 | -| 0143 | [重排链表](https://leetcode.cn/problems/reorder-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0143.%20%E9%87%8D%E6%8E%92%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 中等 | -| 0002 | [两数相加](https://leetcode.cn/problems/add-two-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0002.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0.md) | 递归、链表、数学 | 中等 | - -## 03. 堆栈 - -### 堆栈基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0155 | [最小栈](https://leetcode.cn/problems/min-stack/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0155.%20%E6%9C%80%E5%B0%8F%E6%A0%88.md) | 栈、设计 | 中等 | -| 0020 | [有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0020.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.md) | 栈、字符串 | 简单 | -| 0227 | [基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0227.%20%E5%9F%BA%E6%9C%AC%E8%AE%A1%E7%AE%97%E5%99%A8%20II.md) | 栈、数学、字符串 | 中等 | -| 0232 | [用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0232.%20%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md) | 栈、设计、队列 | 简单 | -| 0394 | [字符串解码](https://leetcode.cn/problems/decode-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0394.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A7%A3%E7%A0%81.md) | 栈、递归、字符串 | 中等 | -| 0032 | [最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0032.%20%E6%9C%80%E9%95%BF%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7.md) | 栈、字符串、动态规划 | 困难 | - -### 单调栈 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0042 | [接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0042.%20%E6%8E%A5%E9%9B%A8%E6%B0%B4.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | - -## 04. 队列 - -### 队列基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0225 | [用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0225.%20%E7%94%A8%E9%98%9F%E5%88%97%E5%AE%9E%E7%8E%B0%E6%A0%88.md) | 栈、设计、队列 | 简单 | - -### 优先队列题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| 0239 | [滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0239.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | - -## 05. 哈希表 - -### 哈希表题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0001 | [两数之和](https://leetcode.cn/problems/two-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0001.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、哈希表 | 简单 | -| 0015 | [三数之和](https://leetcode.cn/problems/3sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0015.%20%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0041 | [缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0041.%20%E7%BC%BA%E5%A4%B1%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%AD%A3%E6%95%B0.md) | 数组、哈希表 | 困难 | -| 0128 | [最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0128.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md) | 并查集、数组、哈希表 | 中等 | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | - -## 06. 字符串 - -### 字符串基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0003 | [无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0003.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0005 | [最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0005.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 0415 | [字符串相加](https://leetcode.cn/problems/add-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md) | 数学、字符串、模拟 | 简单 | -| 0151 | [反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0151.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D.md) | 双指针、字符串 | 中等 | -| 0043 | [字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0043.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E4%B9%98.md) | 数学、字符串、模拟 | 中等 | -| 0014 | [最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0014.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%89%8D%E7%BC%80.md) | 字典树、字符串 | 简单 | - -## 07. 树 - -### 二叉树的遍历题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0144 | [二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0144.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0094 | [二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0094.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0102 | [二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0102.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0103 | [二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0103.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%94%AF%E9%BD%BF%E5%BD%A2%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0236 | [二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0236.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0104 | [二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0104.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0112 | [路径总和](https://leetcode.cn/problems/path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0112.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0113 | [路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0113.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C%20II.md) | 树、深度优先搜索、回溯、二叉树 | 中等 | -| 0101 | [对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0101.%20%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0226 | [翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0226.%20%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | - -### 二叉树的还原题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0105 | [从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0105.%20%E4%BB%8E%E5%89%8D%E5%BA%8F%E4%B8%8E%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | - -### 二叉搜索树题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0098 | [验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0098.%20%E9%AA%8C%E8%AF%81%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0110 | [平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0110.%20%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、二叉树 | 简单 | - -### 并查集题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0128 | [最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0128.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md) | 并查集、数组、哈希表 | 中等 | - -## 08. 图论 - -### 图的深度优先搜索题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0200 | [岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0200.%20%E5%B2%9B%E5%B1%BF%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0695 | [岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0695.%20%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%9C%80%E5%A4%A7%E9%9D%A2%E7%A7%AF.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0144 | [二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0144.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0094 | [二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0094.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0129 | [求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0129.%20%E6%B1%82%E6%A0%B9%E8%8A%82%E7%82%B9%E5%88%B0%E5%8F%B6%E8%8A%82%E7%82%B9%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0543 | [二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0543.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md) | 树、深度优先搜索、二叉树 | 简单 | -| 0662 | [二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0662.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%A4%A7%E5%AE%BD%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | - -### 图的广度优先搜索题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0200 | [岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0200.%20%E5%B2%9B%E5%B1%BF%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0322 | [零钱兑换](https://leetcode.cn/problems/coin-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0322.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.md) | 广度优先搜索、数组、动态规划 | 中等 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0662 | [二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0662.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%A4%A7%E5%AE%BD%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | - -## 09. 基础算法 - -### 枚举算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0001 | [两数之和](https://leetcode.cn/problems/two-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0001.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、哈希表 | 简单 | -| 0078 | [子集](https://leetcode.cn/problems/subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0078.%20%E5%AD%90%E9%9B%86.md) | 位运算、数组、回溯 | 中等 | -| 0221 | [最大正方形](https://leetcode.cn/problems/maximal-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0221.%20%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 数组、动态规划、矩阵 | 中等 | - -### 递归算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0024 | [两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0024.%20%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md) | 递归、链表 | 中等 | -| 0206 | [反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0206.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0092 | [反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0092.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8%20II.md) | 链表 | 中等 | -| 0021 | [合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0021.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0070 | [爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0104 | [二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0104.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0226 | [翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0226.%20%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | - -### 分治算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0053 | [最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、分治、动态规划 | 中等 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| 0004 | [寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0004.%20%E5%AF%BB%E6%89%BE%E4%B8%A4%E4%B8%AA%E6%AD%A3%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、二分查找、分治 | 困难 | -| 0169 | [多数元素](https://leetcode.cn/problems/majority-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0169.%20%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、计数、排序 | 简单 | -| 0014 | [最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0014.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%89%8D%E7%BC%80.md) | 字典树、字符串 | 简单 | - -### 回溯算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0046 | [全排列](https://leetcode.cn/problems/permutations/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0046.%20%E5%85%A8%E6%8E%92%E5%88%97.md) | 数组、回溯 | 中等 | -| 0022 | [括号生成](https://leetcode.cn/problems/generate-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0022.%20%E6%8B%AC%E5%8F%B7%E7%94%9F%E6%88%90.md) | 字符串、动态规划、回溯 | 中等 | -| 0078 | [子集](https://leetcode.cn/problems/subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0078.%20%E5%AD%90%E9%9B%86.md) | 位运算、数组、回溯 | 中等 | -| 0039 | [组合总和](https://leetcode.cn/problems/combination-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0039.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.md) | 数组、回溯 | 中等 | -| 0093 | [复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0093.%20%E5%A4%8D%E5%8E%9F%20IP%20%E5%9C%B0%E5%9D%80.md) | 字符串、回溯 | 中等 | - -### 贪心算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0053 | [最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、分治、动态规划 | 中等 | -| 0056 | [合并区间](https://leetcode.cn/problems/merge-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0056.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md) | 数组、排序 | 中等 | -| 0122 | [买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0122.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20II.md) | 贪心、数组 | 中等 | - -### 位运算题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | - -## 10. 动态规划 - -### 动态规划题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0070 | [爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0121 | [买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0121.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA.md) | 数组、动态规划 | 简单 | -| 0322 | [零钱兑换](https://leetcode.cn/problems/coin-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0322.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.md) | 广度优先搜索、数组、动态规划 | 中等 | -| 0300 | [最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0300.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.md) | 数组、二分查找、动态规划 | 中等 | -| 1143 | [最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1143.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 中等 | -| 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| 0064 | [最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0064.%20%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 数组、动态规划、矩阵 | 中等 | -| 0072 | [编辑距离](https://leetcode.cn/problems/edit-distance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0072.%20%E7%BC%96%E8%BE%91%E8%B7%9D%E7%A6%BB.md) | 字符串、动态规划 | 困难 | -| 0032 | [最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0032.%20%E6%9C%80%E9%95%BF%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7.md) | 栈、字符串、动态规划 | 困难 | -| 0221 | [最大正方形](https://leetcode.cn/problems/maximal-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0221.%20%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 数组、动态规划、矩阵 | 中等 | -| 0062 | [不同路径](https://leetcode.cn/problems/unique-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0062.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.md) | 数学、动态规划、组合数学 | 中等 | -| 0152 | [乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0152.%20%E4%B9%98%E7%A7%AF%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划 | 中等 | -| 0198 | [打家劫舍](https://leetcode.cn/problems/house-robber/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0198.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.md) | 数组、动态规划 | 中等 | - -## 11. 补充题目 - -#### 设计数据结构题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0146 | [LRU 缓存](https://leetcode.cn/problems/lru-cache/) | | 设计、哈希表、链表、双向链表 | 中等 | - -#### 模拟题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0008 | [字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0008.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E6%8D%A2%E6%95%B4%E6%95%B0%20%28atoi%29.md) | 字符串 | 中等 | -| 0165 | [比较版本号](https://leetcode.cn/problems/compare-version-numbers/) | | 双指针、字符串 | 中等 | -| 0468 | [验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0468.%20%E9%AA%8C%E8%AF%81IP%E5%9C%B0%E5%9D%80.md) | 字符串 | 中等 | - -#### 思维锻炼题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0031 | [下一个排列](https://leetcode.cn/problems/next-permutation/) | | 数组、双指针 | 中等 | -| 0470 | [用 Rand7() 实现 Rand10()](https://leetcode.cn/problems/implement-rand10-using-rand7/) | | 数学、拒绝采样、概率与统计、随机化 | 中等 | - - -## 参考资料 - -- 【清单】[CodeTop 企业题库](https://codetop.cc/home) diff --git a/Contents/00.Introduction/07.Interview-200-List.md b/Contents/00.Introduction/07.Interview-200-List.md deleted file mode 100644 index 1a597a0b..00000000 --- a/Contents/00.Introduction/07.Interview-200-List.md +++ /dev/null @@ -1,551 +0,0 @@ -# LeetCode 面试最常考 200 题(按分类排序) - -## 01. 数组 - -### 数组基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0189 | [轮转数组](https://leetcode.cn/problems/rotate-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0189.%20%E8%BD%AE%E8%BD%AC%E6%95%B0%E7%BB%84.md) | 数组、数学、双指针 | 中等 | -| 0498 | [对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0498.%20%E5%AF%B9%E8%A7%92%E7%BA%BF%E9%81%8D%E5%8E%86.md) | 数组、矩阵、模拟 | 中等 | -| 0048 | [旋转图像](https://leetcode.cn/problems/rotate-image/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0048.%20%E6%97%8B%E8%BD%AC%E5%9B%BE%E5%83%8F.md) | 数组、数学、矩阵 | 中等 | -| 0054 | [螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0054.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5.md) | 数组、矩阵、模拟 | 中等 | -| 0059 | [螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0059.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5%20II.md) | 数组、矩阵、模拟 | 中等 | - -### 排序算法题目 - -#### 冒泡排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0283 | [移动零](https://leetcode.cn/problems/move-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0283.%20%E7%A7%BB%E5%8A%A8%E9%9B%B6.md) | 数组、双指针 | 简单 | - -#### 选择排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0215 | [数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0215.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%ACK%E4%B8%AA%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | - -#### 插入排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0075 | [颜色分类](https://leetcode.cn/problems/sort-colors/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0075.%20%E9%A2%9C%E8%89%B2%E5%88%86%E7%B1%BB.md) | 数组、双指针、排序 | 中等 | - -#### 希尔排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | - -#### 归并排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0088 | [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0088.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、排序 | 简单 | -| 剑指 Offer 51 | [数组中的逆序对](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2051.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%80%86%E5%BA%8F%E5%AF%B9.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | - -#### 快速排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0169 | [多数元素](https://leetcode.cn/problems/majority-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0169.%20%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、计数、排序 | 简单 | - -#### 堆排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0215 | [数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0215.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%ACK%E4%B8%AA%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| 剑指 Offer 40 | [最小的k个数](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2040.%20%E6%9C%80%E5%B0%8F%E7%9A%84k%E4%B8%AA%E6%95%B0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | - -#### 计数排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | - -#### 桶排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | - -#### 基数排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0164 | [最大间距](https://leetcode.cn/problems/maximum-gap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0164.%20%E6%9C%80%E5%A4%A7%E9%97%B4%E8%B7%9D.md) | 数组、桶排序、基数排序、排序 | 困难 | - -#### 其他排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | -| 0056 | [合并区间](https://leetcode.cn/problems/merge-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0056.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md) | 数组、排序 | 中等 | -| 0179 | [最大数](https://leetcode.cn/problems/largest-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0179.%20%E6%9C%80%E5%A4%A7%E6%95%B0.md) | 贪心、数组、字符串、排序 | 中等 | -| 0384 | [打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0384.%20%E6%89%93%E4%B9%B1%E6%95%B0%E7%BB%84.md) | 数组、数学、随机化 | 中等 | -| 剑指 Offer 45 | [把数组排成最小的数](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2045.%20%E6%8A%8A%E6%95%B0%E7%BB%84%E6%8E%92%E6%88%90%E6%9C%80%E5%B0%8F%E7%9A%84%E6%95%B0.md) | 贪心、字符串、排序 | 中等 | - -### 二分查找题目 - -#### 二分下标题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0704 | [二分查找](https://leetcode.cn/problems/binary-search/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0704.%20%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.md) | 数组、二分查找 | 简单 | -| 0034 | [在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0034.%20%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%85%83%E7%B4%A0%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%92%8C%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E4%BD%8D%E7%BD%AE.md) | 数组、二分查找 | 中等 | -| 0153 | [寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0153.%20%E5%AF%BB%E6%89%BE%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md) | 数组、二分查找 | 中等 | -| 0154 | [寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0154.%20%E5%AF%BB%E6%89%BE%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC%20II.md) | 数组、二分查找 | 困难 | -| 0033 | [搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0033.%20%E6%90%9C%E7%B4%A2%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、二分查找 | 中等 | -| 0162 | [寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0162.%20%E5%AF%BB%E6%89%BE%E5%B3%B0%E5%80%BC.md) | 数组、二分查找 | 中等 | -| 0004 | [寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0004.%20%E5%AF%BB%E6%89%BE%E4%B8%A4%E4%B8%AA%E6%AD%A3%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、二分查找、分治 | 困难 | -| 0074 | [搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0074.%20%E6%90%9C%E7%B4%A2%E4%BA%8C%E7%BB%B4%E7%9F%A9%E9%98%B5.md) | 数组、二分查找、矩阵 | 中等 | -| 0240 | [搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0240.%20%E6%90%9C%E7%B4%A2%E4%BA%8C%E7%BB%B4%E7%9F%A9%E9%98%B5%20II.md) | 数组、二分查找、分治、矩阵 | 中等 | - -#### 二分答案题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0069 | [x 的平方根](https://leetcode.cn/problems/sqrtx/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0069.%20x%20%E7%9A%84%E5%B9%B3%E6%96%B9%E6%A0%B9.md) | 数学、二分查找 | 简单 | -| 0287 | [寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0287.%20%E5%AF%BB%E6%89%BE%E9%87%8D%E5%A4%8D%E6%95%B0.md) | 位运算、数组、双指针、二分查找 | 中等 | -| 0050 | [Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0050.%20Pow%28x%2C%20n%29.md) | 递归、数学 | 中等 | -| 0400 | [第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0400.%20%E7%AC%AC%20N%20%E4%BD%8D%E6%95%B0%E5%AD%97.md) | 数学、二分查找 | 中等 | - -#### 复杂的二分查找问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0209 | [长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0209.%20%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 0349 | [两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0349.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | - -### 双指针题目 - -#### 对撞指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0611 | [有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0611.%20%E6%9C%89%E6%95%88%E4%B8%89%E8%A7%92%E5%BD%A2%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 贪心、数组、双指针、二分查找、排序 | 中等 | -| 0015 | [三数之和](https://leetcode.cn/problems/3sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0015.%20%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0016 | [最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0016.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0125 | [验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0125.%20%E9%AA%8C%E8%AF%81%E5%9B%9E%E6%96%87%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0011 | [盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0011.%20%E7%9B%9B%E6%9C%80%E5%A4%9A%E6%B0%B4%E7%9A%84%E5%AE%B9%E5%99%A8.md) | 贪心、数组、双指针 | 中等 | -| 0075 | [颜色分类](https://leetcode.cn/problems/sort-colors/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0075.%20%E9%A2%9C%E8%89%B2%E5%88%86%E7%B1%BB.md) | 数组、双指针、排序 | 中等 | -| 剑指 Offer 21 | [调整数组顺序使奇数位于偶数前面](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2021.%20%E8%B0%83%E6%95%B4%E6%95%B0%E7%BB%84%E9%A1%BA%E5%BA%8F%E4%BD%BF%E5%A5%87%E6%95%B0%E4%BD%8D%E4%BA%8E%E5%81%B6%E6%95%B0%E5%89%8D%E9%9D%A2.md) | 数组、双指针、排序 | 简单 | -| 0443 | [压缩字符串](https://leetcode.cn/problems/string-compression/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0443.%20%E5%8E%8B%E7%BC%A9%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 中等 | - -#### 快慢指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0026 | [删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0026.%20%E5%88%A0%E9%99%A4%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E9%A1%B9.md) | 数组、双指针 | 简单 | -| 0283 | [移动零](https://leetcode.cn/problems/move-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0283.%20%E7%A7%BB%E5%8A%A8%E9%9B%B6.md) | 数组、双指针 | 简单 | -| 0088 | [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0088.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、排序 | 简单 | - -#### 分离双指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0415 | [字符串相加](https://leetcode.cn/problems/add-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md) | 数学、字符串、模拟 | 简单 | - -### 滑动窗口题目 - -#### 固定长度窗口题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0239 | [滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0239.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | - -#### 不定长度窗口题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0003 | [无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0003.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0076 | [最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0076.%20%E6%9C%80%E5%B0%8F%E8%A6%86%E7%9B%96%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 困难 | -| 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| 0209 | [长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0209.%20%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 0862 | [和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0862.%20%E5%92%8C%E8%87%B3%E5%B0%91%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | -| 1004 | [最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1004.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20III.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | - -## 02. 链表 - -### 链表经典题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0083 | [删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0083.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md) | 链表 | 简单 | -| 0082 | [删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0082.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20II.md) | 链表、双指针 | 中等 | -| 0206 | [反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0206.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0092 | [反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0092.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8%20II.md) | 链表 | 中等 | -| 0025 | [K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0025.%20K%20%E4%B8%AA%E4%B8%80%E7%BB%84%E7%BF%BB%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 困难 | -| 0328 | [奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0328.%20%E5%A5%87%E5%81%B6%E9%93%BE%E8%A1%A8.md) | 链表 | 中等 | -| 0234 | [回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0234.%20%E5%9B%9E%E6%96%87%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 简单 | -| 0138 | [复制带随机指针的链表](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0138.%20%E5%A4%8D%E5%88%B6%E5%B8%A6%E9%9A%8F%E6%9C%BA%E6%8C%87%E9%92%88%E7%9A%84%E9%93%BE%E8%A1%A8.md) | 哈希表、链表 | 中等 | -| 0061 | [旋转链表](https://leetcode.cn/problems/rotate-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0061.%20%E6%97%8B%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 链表、双指针 | 中等 | - -### 链表排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0148 | [排序链表](https://leetcode.cn/problems/sort-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0148.%20%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、双指针、分治、排序、归并排序 | 中等 | -| 0021 | [合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0021.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | - -### 链表双指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0141 | [环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0141.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8.md) | 哈希表、链表、双指针 | 简单 | -| 0142 | [环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0142.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8%20II.md) | 哈希表、链表、双指针 | 中等 | -| 0160 | [相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0160.%20%E7%9B%B8%E4%BA%A4%E9%93%BE%E8%A1%A8.md) | 哈希表、链表、双指针 | 简单 | -| 0019 | [删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0019.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%AC%20N%20%E4%B8%AA%E7%BB%93%E7%82%B9.md) | 链表、双指针 | 中等 | -| 剑指 Offer 22 | [链表中倒数第k个节点](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2022.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E5%80%92%E6%95%B0%E7%AC%ACk%E4%B8%AA%E8%8A%82%E7%82%B9.md) | 链表、双指针 | 简单 | -| 0143 | [重排链表](https://leetcode.cn/problems/reorder-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0143.%20%E9%87%8D%E6%8E%92%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 中等 | -| 0002 | [两数相加](https://leetcode.cn/problems/add-two-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0002.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0.md) | 递归、链表、数学 | 中等 | -| 0445 | [两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0445.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0%20II.md) | 栈、链表、数学 | 中等 | - -## 03. 堆栈 - -### 堆栈基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1047 | [删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1047.%20%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E7%9B%B8%E9%82%BB%E9%87%8D%E5%A4%8D%E9%A1%B9.md) | 栈、字符串 | 简单 | -| 0155 | [最小栈](https://leetcode.cn/problems/min-stack/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0155.%20%E6%9C%80%E5%B0%8F%E6%A0%88.md) | 栈、设计 | 中等 | -| 0020 | [有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0020.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.md) | 栈、字符串 | 简单 | -| 0224 | [基本计算器](https://leetcode.cn/problems/basic-calculator/) | | 栈、递归、数学、字符串 | 困难 | -| 0227 | [基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0227.%20%E5%9F%BA%E6%9C%AC%E8%AE%A1%E7%AE%97%E5%99%A8%20II.md) | 栈、数学、字符串 | 中等 | -| 0232 | [用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0232.%20%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md) | 栈、设计、队列 | 简单 | -| 剑指 Offer 09 | [用两个栈实现队列](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2009.%20%E7%94%A8%E4%B8%A4%E4%B8%AA%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md) | 栈、设计、队列 | 简单 | -| 0394 | [字符串解码](https://leetcode.cn/problems/decode-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0394.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A7%A3%E7%A0%81.md) | 栈、递归、字符串 | 中等 | -| 0032 | [最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0032.%20%E6%9C%80%E9%95%BF%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7.md) | 栈、字符串、动态规划 | 困难 | -| 0739 | [每日温度](https://leetcode.cn/problems/daily-temperatures/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0739.%20%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.md) | 栈、数组、单调栈 | 中等 | -| 0071 | [简化路径](https://leetcode.cn/problems/simplify-path/) | | 栈、字符串 | 中等 | - -### 单调栈 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0739 | [每日温度](https://leetcode.cn/problems/daily-temperatures/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0739.%20%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.md) | 栈、数组、单调栈 | 中等 | -| 0503 | [下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0503.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0%20II.md) | 栈、数组、单调栈 | 中等 | -| 0042 | [接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0042.%20%E6%8E%A5%E9%9B%A8%E6%B0%B4.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | -| 0085 | [最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | | 栈、数组、动态规划、矩阵、单调栈 | 困难 | - -## 04. 队列 - -### 队列基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0225 | [用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0225.%20%E7%94%A8%E9%98%9F%E5%88%97%E5%AE%9E%E7%8E%B0%E6%A0%88.md) | 栈、设计、队列 | 简单 | - -### 优先队列题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0347 | [前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0347.%20%E5%89%8D%20K%20%E4%B8%AA%E9%AB%98%E9%A2%91%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | -| 0239 | [滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0239.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | -| 0295 | [数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0295.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | - -## 05. 哈希表 - -### 哈希表题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0001 | [两数之和](https://leetcode.cn/problems/two-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0001.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、哈希表 | 简单 | -| 0015 | [三数之和](https://leetcode.cn/problems/3sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0015.%20%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0041 | [缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0041.%20%E7%BC%BA%E5%A4%B1%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%AD%A3%E6%95%B0.md) | 数组、哈希表 | 困难 | -| 0128 | [最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0128.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md) | 并查集、数组、哈希表 | 中等 | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | -| 0242 | [有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0242.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.md) | 哈希表、字符串、排序 | 简单 | -| 0442 | [数组中重复的数据](https://leetcode.cn/problems/find-all-duplicates-in-an-array/) | | 数组、哈希表 | 中等 | -| 剑指 Offer 61 | [扑克牌中的顺子](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2061.%20%E6%89%91%E5%85%8B%E7%89%8C%E4%B8%AD%E7%9A%84%E9%A1%BA%E5%AD%90.md) | 数组、排序 | 简单 | -| 0268 | [丢失的数字](https://leetcode.cn/problems/missing-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0268.%20%E4%B8%A2%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | -| 剑指 Offer 03 | [数组中重复的数字](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2003.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97.md) | 数组、哈希表、排序 | 简单 | - -## 06. 字符串 - -### 字符串基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0125 | [验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0125.%20%E9%AA%8C%E8%AF%81%E5%9B%9E%E6%96%87%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0005 | [最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0005.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 0003 | [无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0003.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0344 | [反转字符串](https://leetcode.cn/problems/reverse-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0344.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0557 | [反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0557.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D%20III.md) | 双指针、字符串 | 简单 | -| 0415 | [字符串相加](https://leetcode.cn/problems/add-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md) | 数学、字符串、模拟 | 简单 | -| 0151 | [反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0151.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D.md) | 双指针、字符串 | 中等 | -| 0043 | [字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0043.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E4%B9%98.md) | 数学、字符串、模拟 | 中等 | -| 0014 | [最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0014.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%89%8D%E7%BC%80.md) | 字典树、字符串 | 简单 | - -### 单模式串匹配题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0459 | [重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0459.%20%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 字符串、字符串匹配 | 简单 | - -### 字典树题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0208 | [实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0208.%20%E5%AE%9E%E7%8E%B0%20Trie%20%28%E5%89%8D%E7%BC%80%E6%A0%91%29.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 0440 | [字典序的第K小数字](https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/) | | 字典树 | 困难 | - -## 07. 树 - -### 二叉树的遍历题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0144 | [二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0144.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0094 | [二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0094.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0145 | [二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0145.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0102 | [二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0102.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0103 | [二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0103.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%94%AF%E9%BD%BF%E5%BD%A2%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0104 | [二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0104.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0111 | [二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0111.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0101 | [对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0101.%20%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0112 | [路径总和](https://leetcode.cn/problems/path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0112.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0113 | [路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0113.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C%20II.md) | 树、深度优先搜索、回溯、二叉树 | 中等 | -| 0236 | [二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0236.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0226 | [翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0226.%20%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0958 | [二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0958.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%8C%E5%85%A8%E6%80%A7%E6%A3%80%E9%AA%8C.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0572 | [另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| 0100 | [相同的树](https://leetcode.cn/problems/same-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0100.%20%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0297 | [二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0297.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96.md) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | -| 0114 | [二叉树展开为链表](https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/) | | 栈、树、深度优先搜索、链表、二叉树 | 中等 | - -### 二叉树的还原题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0105 | [从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0105.%20%E4%BB%8E%E5%89%8D%E5%BA%8F%E4%B8%8E%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | -| 0106 | [从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0106.%20%E4%BB%8E%E4%B8%AD%E5%BA%8F%E4%B8%8E%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | - -### 二叉搜索树题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0098 | [验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0098.%20%E9%AA%8C%E8%AF%81%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0450 | [删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0450.%20%E5%88%A0%E9%99%A4%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md) | 树、二叉搜索树、二叉树 | 中等 | -| 剑指 Offer 54 | [二叉搜索树的第k大节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2054.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E7%AC%ACk%E5%A4%A7%E8%8A%82%E7%82%B9.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| 0230 | [二叉搜索树中第K小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-bst/) | | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0426 | [将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0426.%20%E5%B0%86%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%8E%92%E5%BA%8F%E7%9A%84%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | -| 0110 | [平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0110.%20%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、二叉树 | 简单 | - -### 并查集题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0128 | [最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0128.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md) | 并查集、数组、哈希表 | 中等 | - -## 08. 图论 - -### 图的深度优先搜索题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0200 | [岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0200.%20%E5%B2%9B%E5%B1%BF%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0695 | [岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0695.%20%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%9C%80%E5%A4%A7%E9%9D%A2%E7%A7%AF.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0144 | [二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0144.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0094 | [二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0094.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0145 | [二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0145.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0129 | [求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0129.%20%E6%B1%82%E6%A0%B9%E8%8A%82%E7%82%B9%E5%88%B0%E5%8F%B6%E8%8A%82%E7%82%B9%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0543 | [二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0543.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md) | 树、深度优先搜索、二叉树 | 简单 | -| 0662 | [二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0662.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%A4%A7%E5%AE%BD%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0958 | [二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0958.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%8C%E5%85%A8%E6%80%A7%E6%A3%80%E9%AA%8C.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0572 | [另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| 0100 | [相同的树](https://leetcode.cn/problems/same-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0100.%20%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0111 | [二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0111.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | - -### 图的广度优先搜索题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0200 | [岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0200.%20%E5%B2%9B%E5%B1%BF%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0322 | [零钱兑换](https://leetcode.cn/problems/coin-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0322.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.md) | 广度优先搜索、数组、动态规划 | 中等 | -| 0207 | [课程表](https://leetcode.cn/problems/course-schedule/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0207.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0662 | [二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0662.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%A4%A7%E5%AE%BD%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0958 | [二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0958.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%8C%E5%85%A8%E6%80%A7%E6%A3%80%E9%AA%8C.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0572 | [另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| 0100 | [相同的树](https://leetcode.cn/problems/same-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0100.%20%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0111 | [二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0111.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 剑指 Offer 32 - III | [从上到下打印二叉树 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2032%20-%20III.%20%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91%20III.md) | 树、广度优先搜索、二叉树 | 中等 | - -### 图的拓扑排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0210 | [课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0210.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8%20II.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | - -## 09. 基础算法 - -### 枚举算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0001 | [两数之和](https://leetcode.cn/problems/two-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0001.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、哈希表 | 简单 | -| 0078 | [子集](https://leetcode.cn/problems/subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0078.%20%E5%AD%90%E9%9B%86.md) | 位运算、数组、回溯 | 中等 | -| 0221 | [最大正方形](https://leetcode.cn/problems/maximal-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0221.%20%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 数组、动态规划、矩阵 | 中等 | -| 0560 | [和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0560.%20%E5%92%8C%E4%B8%BA%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、前缀和 | 中等 | - -### 递归算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0024 | [两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0024.%20%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md) | 递归、链表 | 中等 | -| 0206 | [反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0206.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0092 | [反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0092.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8%20II.md) | 链表 | 中等 | -| 0021 | [合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0021.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0509 | [斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0509.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| 0070 | [爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0104 | [二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0104.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0226 | [翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0226.%20%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 剑指 Offer 62 | [圆圈中最后剩下的数字](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2062.%20%E5%9C%86%E5%9C%88%E4%B8%AD%E6%9C%80%E5%90%8E%E5%89%A9%E4%B8%8B%E7%9A%84%E6%95%B0%E5%AD%97.md) | 递归、数学 | 简单 | - -### 分治算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0004 | [寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0004.%20%E5%AF%BB%E6%89%BE%E4%B8%A4%E4%B8%AA%E6%AD%A3%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、二分查找、分治 | 困难 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| 0053 | [最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、分治、动态规划 | 中等 | -| 0169 | [多数元素](https://leetcode.cn/problems/majority-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0169.%20%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、计数、排序 | 简单 | -| 0014 | [最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0014.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%89%8D%E7%BC%80.md) | 字典树、字符串 | 简单 | -| 剑指 Offer 33 | [二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2033.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97.md) | 栈、树、二叉搜索树、递归、二叉树、单调栈 | 中等 | - -### 回溯算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0046 | [全排列](https://leetcode.cn/problems/permutations/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0046.%20%E5%85%A8%E6%8E%92%E5%88%97.md) | 数组、回溯 | 中等 | -| 0047 | [全排列 II](https://leetcode.cn/problems/permutations-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0047.%20%E5%85%A8%E6%8E%92%E5%88%97%20II.md) | 数组、回溯 | 中等 | -| 0037 | [解数独](https://leetcode.cn/problems/sudoku-solver/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0037.%20%E8%A7%A3%E6%95%B0%E7%8B%AC.md) | 数组、哈希表、回溯、矩阵 | 困难 | -| 0022 | [括号生成](https://leetcode.cn/problems/generate-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0022.%20%E6%8B%AC%E5%8F%B7%E7%94%9F%E6%88%90.md) | 字符串、动态规划、回溯 | 中等 | -| 0078 | [子集](https://leetcode.cn/problems/subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0078.%20%E5%AD%90%E9%9B%86.md) | 位运算、数组、回溯 | 中等 | -| 0039 | [组合总和](https://leetcode.cn/problems/combination-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0039.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.md) | 数组、回溯 | 中等 | -| 0040 | [组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0040.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C%20II.md) | 数组、回溯 | 中等 | -| 0093 | [复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0093.%20%E5%A4%8D%E5%8E%9F%20IP%20%E5%9C%B0%E5%9D%80.md) | 字符串、回溯 | 中等 | -| 0079 | [单词搜索](https://leetcode.cn/problems/word-search/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0079.%20%E5%8D%95%E8%AF%8D%E6%90%9C%E7%B4%A2.md) | 数组、回溯、矩阵 | 中等 | -| 0679 | [24 点游戏](https://leetcode.cn/problems/24-game/) | | 数组、数学、回溯 | 困难 | - -### 贪心算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0053 | [最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、分治、动态规划 | 中等 | -| 0056 | [合并区间](https://leetcode.cn/problems/merge-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0056.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md) | 数组、排序 | 中等 | -| 0122 | [买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0122.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20II.md) | 贪心、数组 | 中等 | -| 0055 | [跳跃游戏](https://leetcode.cn/problems/jump-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0055.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F.md) | 贪心、数组、动态规划 | 中等 | -| 0402 | [移掉 K 位数字](https://leetcode.cn/problems/remove-k-digits/) | | 栈、贪心、字符串、单调栈 | 中等 | -| 0135 | [分发糖果](https://leetcode.cn/problems/candy/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0135.%20%E5%88%86%E5%8F%91%E7%B3%96%E6%9E%9C.md) | 贪心、数组 | 困难 | -| 0134 | [加油站](https://leetcode.cn/problems/gas-station/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0134.%20%E5%8A%A0%E6%B2%B9%E7%AB%99.md) | 贪心、数组 | 中等 | -| 0670 | [最大交换](https://leetcode.cn/problems/maximum-swap/) | | 贪心、数学 | 中等 | - -### 位运算题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | -| 0191 | [位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0191.%20%E4%BD%8D1%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 位运算、分治 | 简单 | -| 0268 | [丢失的数字](https://leetcode.cn/problems/missing-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0268.%20%E4%B8%A2%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | - -## 10. 动态规划 - -### 动态规划题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0070 | [爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0509 | [斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0509.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| 0121 | [买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0121.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA.md) | 数组、动态规划 | 简单 | -| 0322 | [零钱兑换](https://leetcode.cn/problems/coin-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0322.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.md) | 广度优先搜索、数组、动态规划 | 中等 | -| 0518 | [零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0518.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2%20II.md) | 数组、动态规划 | 中等 | -| 0300 | [最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0300.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.md) | 数组、二分查找、动态规划 | 中等 | -| 1143 | [最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1143.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 中等 | -| 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| 0064 | [最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0064.%20%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 数组、动态规划、矩阵 | 中等 | -| 0072 | [编辑距离](https://leetcode.cn/problems/edit-distance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0072.%20%E7%BC%96%E8%BE%91%E8%B7%9D%E7%A6%BB.md) | 字符串、动态规划 | 困难 | -| 0032 | [最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0032.%20%E6%9C%80%E9%95%BF%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7.md) | 栈、字符串、动态规划 | 困难 | -| 0221 | [最大正方形](https://leetcode.cn/problems/maximal-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0221.%20%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 数组、动态规划、矩阵 | 中等 | -| 0062 | [不同路径](https://leetcode.cn/problems/unique-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0062.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.md) | 数学、动态规划、组合数学 | 中等 | -| 0063 | [不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0063.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84%20II.md) | 数组、动态规划、矩阵 | 中等 | -| 0152 | [乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0152.%20%E4%B9%98%E7%A7%AF%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划 | 中等 | -| 0198 | [打家劫舍](https://leetcode.cn/problems/house-robber/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0198.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.md) | 数组、动态规划 | 中等 | -| 0213 | [打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0213.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D%20II.md) | 数组、动态规划 | 中等 | -| 0091 | [解码方法](https://leetcode.cn/problems/decode-ways/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0091.%20%E8%A7%A3%E7%A0%81%E6%96%B9%E6%B3%95.md) | 字符串、动态规划 | 中等 | -| 0010 | [正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0010.%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D.md) | 递归、字符串、动态规划 | 困难 | -| 0678 | [有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0678.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 栈、贪心、字符串、动态规划 | 中等 | -| 0045 | [跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0045.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20II.md) | 贪心、数组、动态规划 | 中等 | -| 0673 | [最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0673.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、动态规划 | 中等 | -| 0139 | [单词拆分](https://leetcode.cn/problems/word-break/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0139.%20%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.md) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | -| 0044 | [通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0044.%20%E9%80%9A%E9%85%8D%E7%AC%A6%E5%8C%B9%E9%85%8D.md) | 贪心、递归、字符串、动态规划 | 困难 | -| 0120 | [三角形最小路径和](https://leetcode.cn/problems/triangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0120.%20%E4%B8%89%E8%A7%92%E5%BD%A2%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 数组、动态规划 | 中等 | -| 0096 | [不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0096.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | -| 0887 | [鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0887.%20%E9%B8%A1%E8%9B%8B%E6%8E%89%E8%90%BD.md) | 数学、二分查找、动态规划 | 困难 | -| 0097 | [交错字符串](https://leetcode.cn/problems/interleaving-string/) | | 字符串、动态规划 | 中等 | -| 0516 | [最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0516.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 中等 | - -### 记忆化搜索题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0329 | [矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0329.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | - -## 11. 补充题目 - -#### 设计数据结构题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0146 | [LRU 缓存](https://leetcode.cn/problems/lru-cache/) | | 设计、哈希表、链表、双向链表 | 中等 | -| 0460 | [LFU 缓存](https://leetcode.cn/problems/lfu-cache/) | | 设计、哈希表、链表、双向链表 | 困难 | - -#### 数学题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0007 | [整数反转](https://leetcode.cn/problems/reverse-integer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0007.%20%E6%95%B4%E6%95%B0%E5%8F%8D%E8%BD%AC.md) | 数学 | 中等 | -| 0009 | [回文数](https://leetcode.cn/problems/palindrome-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0009.%20%E5%9B%9E%E6%96%87%E6%95%B0.md) | 数学 | 简单 | -| 剑指 Offer 62 | [圆圈中最后剩下的数字](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2062.%20%E5%9C%86%E5%9C%88%E4%B8%AD%E6%9C%80%E5%90%8E%E5%89%A9%E4%B8%8B%E7%9A%84%E6%95%B0%E5%AD%97.md) | 递归、数学 | 简单 | -| 0168 | [Excel表列名称](https://leetcode.cn/problems/excel-sheet-column-title/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0168.%20Excel%E8%A1%A8%E5%88%97%E5%90%8D%E7%A7%B0.md) | 数学、字符串 | 简单 | -| 0400 | [第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0400.%20%E7%AC%AC%20N%20%E4%BD%8D%E6%95%B0%E5%AD%97.md) | 数学、二分查找 | 中等 | - -#### 模拟题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0008 | [字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0008.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%BD%AC%E6%8D%A2%E6%95%B4%E6%95%B0%20%28atoi%29.md) | 字符串 | 中等 | -| 0165 | [比较版本号](https://leetcode.cn/problems/compare-version-numbers/) | | 双指针、字符串 | 中等 | -| 0468 | [验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0468.%20%E9%AA%8C%E8%AF%81IP%E5%9C%B0%E5%9D%80.md) | 字符串 | 中等 | -| 0086 | [分隔链表](https://leetcode.cn/problems/partition-list/) | | 链表、双指针 | 中等 | - -#### 前缀和 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0560 | [和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0560.%20%E5%92%8C%E4%B8%BA%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、前缀和 | 中等 | - -#### 思维锻炼题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0031 | [下一个排列](https://leetcode.cn/problems/next-permutation/) | | 数组、双指针 | 中等 | -| 0556 | [下一个更大元素 III](https://leetcode.cn/problems/next-greater-element-iii/) | | 数学、双指针、字符串 | 中等 | -| 0470 | [用 Rand7() 实现 Rand10()](https://leetcode.cn/problems/implement-rand10-using-rand7/) | | 数学、拒绝采样、概率与统计、随机化 | 中等 | - - -## 参考资料 - -- 【清单】[CodeTop 企业题库](https://codetop.cc/home) diff --git a/Contents/00.Introduction/08.Algorithms-Overview.md b/Contents/00.Introduction/08.Algorithms-Overview.md deleted file mode 100644 index 3bb31bac..00000000 --- a/Contents/00.Introduction/08.Algorithms-Overview.md +++ /dev/null @@ -1,3 +0,0 @@ -## 1. 数据结构和算法分类 - -## 2. 时间复杂度与数据规模 \ No newline at end of file diff --git a/Contents/00.Introduction/index.md b/Contents/00.Introduction/index.md deleted file mode 100644 index 2cc124f7..00000000 --- a/Contents/00.Introduction/index.md +++ /dev/null @@ -1,9 +0,0 @@ -## 本章内容 - -- [算法与数据结构](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/01.Data-Structures-Algorithms.md) -- [算法复杂度](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/02.Algorithm-Complexity.md) -- [LeetCode 入门与攻略](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/03.LeetCode-Guide.md) -- [LeetCode 题解(字典序排序,850+ 道题解)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/04.Solutions-List.md) -- [LeetCode 题解(按分类排序,推荐刷题列表 ★★★)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/05.Categories-List.md) -- [LeetCode 面试最常考 100 题(按分类排序)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/06.Interview-100-List.md) -- [LeetCode 面试最常考 200 题(按分类排序)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/07.Interview-200-List.md) \ No newline at end of file diff --git a/Contents/01.Array/01.Array-Basic/02.Array-Basic-List.md b/Contents/01.Array/01.Array-Basic/02.Array-Basic-List.md deleted file mode 100644 index eb1b656c..00000000 --- a/Contents/01.Array/01.Array-Basic/02.Array-Basic-List.md +++ /dev/null @@ -1,23 +0,0 @@ -### 数组基础题目 - -#### 数组操作题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0189 | [轮转数组](https://leetcode.cn/problems/rotate-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0189.%20%E8%BD%AE%E8%BD%AC%E6%95%B0%E7%BB%84.md) | 数组、数学、双指针 | 中等 | -| 0066 | [加一](https://leetcode.cn/problems/plus-one/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0066.%20%E5%8A%A0%E4%B8%80.md) | 数组、数学 | 简单 | -| 0724 | [寻找数组的中心下标](https://leetcode.cn/problems/find-pivot-index/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0724.%20%E5%AF%BB%E6%89%BE%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E5%BF%83%E4%B8%8B%E6%A0%87.md) | 数组、前缀和 | 简单 | -| 0485 | [最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0485.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 数组 | 简单 | -| 0238 | [除自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-except-self/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0238.%20%E9%99%A4%E8%87%AA%E8%BA%AB%E4%BB%A5%E5%A4%96%E6%95%B0%E7%BB%84%E7%9A%84%E4%B9%98%E7%A7%AF.md) | 数组、前缀和 | 中等 | - -#### 二维数组题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0498 | [对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0498.%20%E5%AF%B9%E8%A7%92%E7%BA%BF%E9%81%8D%E5%8E%86.md) | 数组、矩阵、模拟 | 中等 | -| 0048 | [旋转图像](https://leetcode.cn/problems/rotate-image/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0048.%20%E6%97%8B%E8%BD%AC%E5%9B%BE%E5%83%8F.md) | 数组、数学、矩阵 | 中等 | -| 0073 | [矩阵置零](https://leetcode.cn/problems/set-matrix-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0073.%20%E7%9F%A9%E9%98%B5%E7%BD%AE%E9%9B%B6.md) | 数组、哈希表、矩阵 | 中等 | -| 0054 | [螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0054.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5.md) | 数组、矩阵、模拟 | 中等 | -| 0059 | [螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0059.%20%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5%20II.md) | 数组、矩阵、模拟 | 中等 | -| 0289 | [生命游戏](https://leetcode.cn/problems/game-of-life/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0289.%20%E7%94%9F%E5%91%BD%E6%B8%B8%E6%88%8F.md) | 数组、矩阵、模拟 | 中等 | - diff --git a/Contents/01.Array/01.Array-Basic/index.md b/Contents/01.Array/01.Array-Basic/index.md deleted file mode 100644 index 6dad3efd..00000000 --- a/Contents/01.Array/01.Array-Basic/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [数组基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/01.Array-Basic/01.Array-Basic.md) -- [数组基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/01.Array-Basic/02.Array-Basic-List.md) \ No newline at end of file diff --git a/Contents/01.Array/02.Array-Sort/11.Array-Sort-List.md b/Contents/01.Array/02.Array-Sort/11.Array-Sort-List.md deleted file mode 100644 index c8b4dbcd..00000000 --- a/Contents/01.Array/02.Array-Sort/11.Array-Sort-List.md +++ /dev/null @@ -1,85 +0,0 @@ -### 排序算法题目 - -#### 冒泡排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 剑指 Offer 45 | [把数组排成最小的数](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2045.%20%E6%8A%8A%E6%95%B0%E7%BB%84%E6%8E%92%E6%88%90%E6%9C%80%E5%B0%8F%E7%9A%84%E6%95%B0.md) | 贪心、字符串、排序 | 中等 | -| 0283 | [移动零](https://leetcode.cn/problems/move-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0283.%20%E7%A7%BB%E5%8A%A8%E9%9B%B6.md) | 数组、双指针 | 简单 | - -#### 选择排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0215 | [数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0215.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%ACK%E4%B8%AA%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | - -#### 插入排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0075 | [颜色分类](https://leetcode.cn/problems/sort-colors/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0075.%20%E9%A2%9C%E8%89%B2%E5%88%86%E7%B1%BB.md) | 数组、双指针、排序 | 中等 | - -#### 希尔排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0506 | [相对名次](https://leetcode.cn/problems/relative-ranks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0506.%20%E7%9B%B8%E5%AF%B9%E5%90%8D%E6%AC%A1.md) | 数组、排序、堆(优先队列) | 简单 | - -#### 归并排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0088 | [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0088.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、排序 | 简单 | -| 剑指 Offer 51 | [数组中的逆序对](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2051.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%80%86%E5%BA%8F%E5%AF%B9.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | -| 0315 | [计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0315.%20%E8%AE%A1%E7%AE%97%E5%8F%B3%E4%BE%A7%E5%B0%8F%E4%BA%8E%E5%BD%93%E5%89%8D%E5%85%83%E7%B4%A0%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | - -#### 快速排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0169 | [多数元素](https://leetcode.cn/problems/majority-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0169.%20%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、计数、排序 | 简单 | - -#### 堆排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0215 | [数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0215.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E7%AC%ACK%E4%B8%AA%E6%9C%80%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| 剑指 Offer 40 | [最小的k个数](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2040.%20%E6%9C%80%E5%B0%8F%E7%9A%84k%E4%B8%AA%E6%95%B0.md) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | - -#### 计数排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 1122 | [数组的相对排序](https://leetcode.cn/problems/relative-sort-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1122.%20%E6%95%B0%E7%BB%84%E7%9A%84%E7%9B%B8%E5%AF%B9%E6%8E%92%E5%BA%8F.md) | 数组、哈希表、计数排序、排序 | 简单 | - -#### 桶排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0912 | [排序数组](https://leetcode.cn/problems/sort-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0912.%20%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| 0220 | [存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0220.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20III.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | -| 0164 | [最大间距](https://leetcode.cn/problems/maximum-gap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0164.%20%E6%9C%80%E5%A4%A7%E9%97%B4%E8%B7%9D.md) | 数组、桶排序、基数排序、排序 | 困难 | - -#### 基数排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0164 | [最大间距](https://leetcode.cn/problems/maximum-gap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0164.%20%E6%9C%80%E5%A4%A7%E9%97%B4%E8%B7%9D.md) | 数组、桶排序、基数排序、排序 | 困难 | -| 0561 | [数组拆分](https://leetcode.cn/problems/array-partition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0561.%20%E6%95%B0%E7%BB%84%E6%8B%86%E5%88%86.md) | 贪心、数组、计数排序、排序 | 简单 | - -#### 其他排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0217 | [存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0217.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md) | 数组、哈希表、排序 | 简单 | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | -| 0056 | [合并区间](https://leetcode.cn/problems/merge-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0056.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md) | 数组、排序 | 中等 | -| 0179 | [最大数](https://leetcode.cn/problems/largest-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0179.%20%E6%9C%80%E5%A4%A7%E6%95%B0.md) | 贪心、数组、字符串、排序 | 中等 | -| 0384 | [打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0384.%20%E6%89%93%E4%B9%B1%E6%95%B0%E7%BB%84.md) | 数组、数学、随机化 | 中等 | -| 剑指 Offer 45 | [把数组排成最小的数](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2045.%20%E6%8A%8A%E6%95%B0%E7%BB%84%E6%8E%92%E6%88%90%E6%9C%80%E5%B0%8F%E7%9A%84%E6%95%B0.md) | 贪心、字符串、排序 | 中等 | - diff --git a/Contents/01.Array/02.Array-Sort/index.md b/Contents/01.Array/02.Array-Sort/index.md deleted file mode 100644 index 5042bb9a..00000000 --- a/Contents/01.Array/02.Array-Sort/index.md +++ /dev/null @@ -1,13 +0,0 @@ -## 本章内容 - -- [冒泡排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md) -- [选择排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md) -- [插入排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md) -- [希尔排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md) -- [归并排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md) -- [快速排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md) -- [堆排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md) -- [计数排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md) -- [桶排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md) -- [基数排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md) -- [数组排序题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/11.Array-Sort-List.md) \ No newline at end of file diff --git a/Contents/01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md b/Contents/01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md deleted file mode 100644 index 451e6ee3..00000000 --- a/Contents/01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md +++ /dev/null @@ -1,53 +0,0 @@ -### 二分查找题目 - -#### 二分下标题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0704 | [二分查找](https://leetcode.cn/problems/binary-search/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0704.%20%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.md) | 数组、二分查找 | 简单 | -| 0374 | [猜数字大小](https://leetcode.cn/problems/guess-number-higher-or-lower/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0374.%20%E7%8C%9C%E6%95%B0%E5%AD%97%E5%A4%A7%E5%B0%8F.md) | 二分查找、交互 | 简单 | -| 0035 | [搜索插入位置](https://leetcode.cn/problems/search-insert-position/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0035.%20%E6%90%9C%E7%B4%A2%E6%8F%92%E5%85%A5%E4%BD%8D%E7%BD%AE.md) | 数组、二分查找 | 简单 | -| 0034 | [在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0034.%20%E5%9C%A8%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%85%83%E7%B4%A0%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%92%8C%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E4%BD%8D%E7%BD%AE.md) | 数组、二分查找 | 中等 | -| 0167 | [两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0167.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C%20II%20-%20%E8%BE%93%E5%85%A5%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、二分查找 | 中等 | -| 0153 | [寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0153.%20%E5%AF%BB%E6%89%BE%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC.md) | 数组、二分查找 | 中等 | -| 0154 | [寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0154.%20%E5%AF%BB%E6%89%BE%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E5%B0%8F%E5%80%BC%20II.md) | 数组、二分查找 | 困难 | -| 0033 | [搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0033.%20%E6%90%9C%E7%B4%A2%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、二分查找 | 中等 | -| 0081 | [搜索旋转排序数组 II](https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0081.%20%E6%90%9C%E7%B4%A2%E6%97%8B%E8%BD%AC%E6%8E%92%E5%BA%8F%E6%95%B0%E7%BB%84%20II.md) | 数组、二分查找 | 中等 | -| 0278 | [第一个错误的版本](https://leetcode.cn/problems/first-bad-version/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0278.%20%E7%AC%AC%E4%B8%80%E4%B8%AA%E9%94%99%E8%AF%AF%E7%9A%84%E7%89%88%E6%9C%AC.md) | 二分查找、交互 | 简单 | -| 0162 | [寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0162.%20%E5%AF%BB%E6%89%BE%E5%B3%B0%E5%80%BC.md) | 数组、二分查找 | 中等 | -| 0852 | [山脉数组的峰顶索引](https://leetcode.cn/problems/peak-index-in-a-mountain-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0852.%20%E5%B1%B1%E8%84%89%E6%95%B0%E7%BB%84%E7%9A%84%E5%B3%B0%E9%A1%B6%E7%B4%A2%E5%BC%95.md) | 数组、二分查找 | 中等 | -| 1095 | [山脉数组中查找目标值](https://leetcode.cn/problems/find-in-mountain-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1095.%20%E5%B1%B1%E8%84%89%E6%95%B0%E7%BB%84%E4%B8%AD%E6%9F%A5%E6%89%BE%E7%9B%AE%E6%A0%87%E5%80%BC.md) | 数组、二分查找、交互 | 困难 | -| 0744 | [寻找比目标字母大的最小字母](https://leetcode.cn/problems/find-smallest-letter-greater-than-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0744.%20%E5%AF%BB%E6%89%BE%E6%AF%94%E7%9B%AE%E6%A0%87%E5%AD%97%E6%AF%8D%E5%A4%A7%E7%9A%84%E6%9C%80%E5%B0%8F%E5%AD%97%E6%AF%8D.md) | 数组、二分查找 | 简单 | -| 0004 | [寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0004.%20%E5%AF%BB%E6%89%BE%E4%B8%A4%E4%B8%AA%E6%AD%A3%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、二分查找、分治 | 困难 | -| 0074 | [搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0074.%20%E6%90%9C%E7%B4%A2%E4%BA%8C%E7%BB%B4%E7%9F%A9%E9%98%B5.md) | 数组、二分查找、矩阵 | 中等 | -| 0240 | [搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0240.%20%E6%90%9C%E7%B4%A2%E4%BA%8C%E7%BB%B4%E7%9F%A9%E9%98%B5%20II.md) | 数组、二分查找、分治、矩阵 | 中等 | - -#### 二分答案题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0069 | [x 的平方根](https://leetcode.cn/problems/sqrtx/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0069.%20x%20%E7%9A%84%E5%B9%B3%E6%96%B9%E6%A0%B9.md) | 数学、二分查找 | 简单 | -| 0287 | [寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0287.%20%E5%AF%BB%E6%89%BE%E9%87%8D%E5%A4%8D%E6%95%B0.md) | 位运算、数组、双指针、二分查找 | 中等 | -| 0050 | [Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0050.%20Pow%28x%2C%20n%29.md) | 递归、数学 | 中等 | -| 0367 | [有效的完全平方数](https://leetcode.cn/problems/valid-perfect-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0367.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md) | 数学、二分查找 | 简单 | -| 1300 | [转变数组后最接近目标值的数组和](https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1300.%20%E8%BD%AC%E5%8F%98%E6%95%B0%E7%BB%84%E5%90%8E%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、二分查找、排序 | 中等 | -| 0400 | [第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0400.%20%E7%AC%AC%20N%20%E4%BD%8D%E6%95%B0%E5%AD%97.md) | 数学、二分查找 | 中等 | - -#### 复杂的二分查找问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0875 | [爱吃香蕉的珂珂](https://leetcode.cn/problems/koko-eating-bananas/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0875.%20%E7%88%B1%E5%90%83%E9%A6%99%E8%95%89%E7%9A%84%E7%8F%82%E7%8F%82.md) | 数组、二分查找 | 中等 | -| 0410 | [分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0410.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | -| 0209 | [长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0209.%20%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 0658 | [找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0658.%20%E6%89%BE%E5%88%B0%20K%20%E4%B8%AA%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E5%85%83%E7%B4%A0.md) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | -| 0270 | [最接近的二叉搜索树值](https://leetcode.cn/problems/closest-binary-search-tree-value/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0270.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E5%80%BC.md) | 树、深度优先搜索、二叉搜索树、二分查找、二叉树 | 简单 | -| 0702 | [搜索长度未知的有序数组](https://leetcode.cn/problems/search-in-a-sorted-array-of-unknown-size/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0702.%20%E6%90%9C%E7%B4%A2%E9%95%BF%E5%BA%A6%E6%9C%AA%E7%9F%A5%E7%9A%84%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、二分查找、交互 | 中等 | -| 0349 | [两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0349.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0350 | [两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0350.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86%20II.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0287 | [寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0287.%20%E5%AF%BB%E6%89%BE%E9%87%8D%E5%A4%8D%E6%95%B0.md) | 位运算、数组、双指针、二分查找 | 中等 | -| 0719 | [找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0719.%20%E6%89%BE%E5%87%BA%E7%AC%AC%20K%20%E5%B0%8F%E7%9A%84%E6%95%B0%E5%AF%B9%E8%B7%9D%E7%A6%BB.md) | 数组、双指针、二分查找、排序 | 困难 | -| 0259 | [较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0259.%20%E8%BE%83%E5%B0%8F%E7%9A%84%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、二分查找、排序 | 中等 | -| 1011 | [在 D 天内送达包裹的能力](https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1011.%20%E5%9C%A8%20D%20%E5%A4%A9%E5%86%85%E9%80%81%E8%BE%BE%E5%8C%85%E8%A3%B9%E7%9A%84%E8%83%BD%E5%8A%9B.md) | 数组、二分查找 | 中等 | -| 1482 | [制作 m 束花所需的最少天数](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1482.%20%E5%88%B6%E4%BD%9C%20m%20%E6%9D%9F%E8%8A%B1%E6%89%80%E9%9C%80%E7%9A%84%E6%9C%80%E5%B0%91%E5%A4%A9%E6%95%B0.md) | 数组、二分查找 | 中等 | - diff --git a/Contents/01.Array/03.Array-Binary-Search/index.md b/Contents/01.Array/03.Array-Binary-Search/index.md deleted file mode 100644 index 5b261ffb..00000000 --- a/Contents/01.Array/03.Array-Binary-Search/index.md +++ /dev/null @@ -1,5 +0,0 @@ -## 本章内容 - -- [二分查找知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md) -- [二分查找知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/03.Array-Binary-Search/02.Array-Binary-Search-02.md) -- [二分查找题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md) \ No newline at end of file diff --git a/Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md b/Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md deleted file mode 100644 index d7aa78fe..00000000 --- a/Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md +++ /dev/null @@ -1,51 +0,0 @@ -### 双指针题目 - -#### 对撞指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0167 | [两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0167.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C%20II%20-%20%E8%BE%93%E5%85%A5%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、二分查找 | 中等 | -| 0344 | [反转字符串](https://leetcode.cn/problems/reverse-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0344.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0345 | [反转字符串中的元音字母](https://leetcode.cn/problems/reverse-vowels-of-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0345.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%85%83%E9%9F%B3%E5%AD%97%E6%AF%8D.md) | 双指针、字符串 | 简单 | -| 0125 | [验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0125.%20%E9%AA%8C%E8%AF%81%E5%9B%9E%E6%96%87%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0011 | [盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0011.%20%E7%9B%9B%E6%9C%80%E5%A4%9A%E6%B0%B4%E7%9A%84%E5%AE%B9%E5%99%A8.md) | 贪心、数组、双指针 | 中等 | -| 0611 | [有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0611.%20%E6%9C%89%E6%95%88%E4%B8%89%E8%A7%92%E5%BD%A2%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 贪心、数组、双指针、二分查找、排序 | 中等 | -| 0015 | [三数之和](https://leetcode.cn/problems/3sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0015.%20%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0016 | [最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0016.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0018 | [四数之和](https://leetcode.cn/problems/4sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0018.%20%E5%9B%9B%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0259 | [较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0259.%20%E8%BE%83%E5%B0%8F%E7%9A%84%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、二分查找、排序 | 中等 | -| 0658 | [找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0658.%20%E6%89%BE%E5%88%B0%20K%20%E4%B8%AA%E6%9C%80%E6%8E%A5%E8%BF%91%E7%9A%84%E5%85%83%E7%B4%A0.md) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | -| 1099 | [小于 K 的两数之和](https://leetcode.cn/problems/two-sum-less-than-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1099.%20%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、二分查找、排序 | 简单 | -| 0075 | [颜色分类](https://leetcode.cn/problems/sort-colors/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0075.%20%E9%A2%9C%E8%89%B2%E5%88%86%E7%B1%BB.md) | 数组、双指针、排序 | 中等 | -| 0360 | [有序转化数组](https://leetcode.cn/problems/sort-transformed-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0360.%20%E6%9C%89%E5%BA%8F%E8%BD%AC%E5%8C%96%E6%95%B0%E7%BB%84.md) | 数组、数学、双指针、排序 | 中等 | -| 0977 | [有序数组的平方](https://leetcode.cn/problems/squares-of-a-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0977.%20%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.md) | 数组、双指针、排序 | 简单 | -| 0881 | [救生艇](https://leetcode.cn/problems/boats-to-save-people/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0881.%20%E6%95%91%E7%94%9F%E8%89%87.md) | 贪心、数组、双指针、排序 | 中等 | -| 0042 | [接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0042.%20%E6%8E%A5%E9%9B%A8%E6%B0%B4.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | -| 0443 | [压缩字符串](https://leetcode.cn/problems/string-compression/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0443.%20%E5%8E%8B%E7%BC%A9%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 中等 | - -#### 快慢指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0026 | [删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0026.%20%E5%88%A0%E9%99%A4%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E9%A1%B9.md) | 数组、双指针 | 简单 | -| 0080 | [删除有序数组中的重复项 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0080.%20%E5%88%A0%E9%99%A4%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E9%A1%B9%20II.md) | 数组、双指针 | 中等 | -| 0027 | [移除元素](https://leetcode.cn/problems/remove-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0027.%20%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.md) | 数组、双指针 | 简单 | -| 0283 | [移动零](https://leetcode.cn/problems/move-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0283.%20%E7%A7%BB%E5%8A%A8%E9%9B%B6.md) | 数组、双指针 | 简单 | -| 0845 | [数组中的最长山脉](https://leetcode.cn/problems/longest-mountain-in-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0845.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E6%9C%80%E9%95%BF%E5%B1%B1%E8%84%89.md) | 数组、双指针、动态规划、枚举 | 中等 | -| 0088 | [合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0088.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84.md) | 数组、双指针、排序 | 简单 | -| 0719 | [找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0719.%20%E6%89%BE%E5%87%BA%E7%AC%AC%20K%20%E5%B0%8F%E7%9A%84%E6%95%B0%E5%AF%B9%E8%B7%9D%E7%A6%BB.md) | 数组、双指针、二分查找、排序 | 困难 | -| 0334 | [递增的三元子序列](https://leetcode.cn/problems/increasing-triplet-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0334.%20%E9%80%92%E5%A2%9E%E7%9A%84%E4%B8%89%E5%85%83%E5%AD%90%E5%BA%8F%E5%88%97.md) | 贪心、数组 | 中等 | -| 0978 | [最长湍流子数组](https://leetcode.cn/problems/longest-turbulent-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0978.%20%E6%9C%80%E9%95%BF%E6%B9%8D%E6%B5%81%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划、滑动窗口 | 中等 | -| 剑指 Offer 21 | [调整数组顺序使奇数位于偶数前面](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2021.%20%E8%B0%83%E6%95%B4%E6%95%B0%E7%BB%84%E9%A1%BA%E5%BA%8F%E4%BD%BF%E5%A5%87%E6%95%B0%E4%BD%8D%E4%BA%8E%E5%81%B6%E6%95%B0%E5%89%8D%E9%9D%A2.md) | 数组、双指针、排序 | 简单 | - -#### 分离双指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0350 | [两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0350.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86%20II.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0925 | [长按键入](https://leetcode.cn/problems/long-pressed-name/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0925.%20%E9%95%BF%E6%8C%89%E9%94%AE%E5%85%A5.md) | 双指针、字符串 | 简单 | -| 0844 | [比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0844.%20%E6%AF%94%E8%BE%83%E5%90%AB%E9%80%80%E6%A0%BC%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 栈、双指针、字符串、模拟 | 简单 | -| 1229 | [安排会议日程](https://leetcode.cn/problems/meeting-scheduler/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1229.%20%E5%AE%89%E6%8E%92%E4%BC%9A%E8%AE%AE%E6%97%A5%E7%A8%8B.md) | 数组、双指针、排序 | 中等 | -| 0415 | [字符串相加](https://leetcode.cn/problems/add-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md) | 数学、字符串、模拟 | 简单 | -| 0392 | [判断子序列](https://leetcode.cn/problems/is-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0392.%20%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.md) | 双指针、字符串、动态规划 | 简单 | - diff --git a/Contents/01.Array/04.Array-Two-Pointers/index.md b/Contents/01.Array/04.Array-Two-Pointers/index.md deleted file mode 100644 index a0f281c8..00000000 --- a/Contents/01.Array/04.Array-Two-Pointers/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [数组双指针知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md) -- [数组双指针题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md) \ No newline at end of file diff --git a/Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md b/Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md deleted file mode 100644 index 9d613a70..00000000 --- a/Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md +++ /dev/null @@ -1,50 +0,0 @@ -### 滑动窗口题目 - -#### 固定长度窗口题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1343 | [大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1343.%20%E5%A4%A7%E5%B0%8F%E4%B8%BA%20K%20%E4%B8%94%E5%B9%B3%E5%9D%87%E5%80%BC%E5%A4%A7%E4%BA%8E%E7%AD%89%E4%BA%8E%E9%98%88%E5%80%BC%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84%E6%95%B0%E7%9B%AE.md) | 数组、滑动窗口 | 中等 | -| 0643 | [子数组最大平均数 I](https://leetcode.cn/problems/maximum-average-subarray-i/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0643.%20%E5%AD%90%E6%95%B0%E7%BB%84%E6%9C%80%E5%A4%A7%E5%B9%B3%E5%9D%87%E6%95%B0%20I.md) | 数组、滑动窗口 | 简单 | -| 1052 | [爱生气的书店老板](https://leetcode.cn/problems/grumpy-bookstore-owner/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1052.%20%E7%88%B1%E7%94%9F%E6%B0%94%E7%9A%84%E4%B9%A6%E5%BA%97%E8%80%81%E6%9D%BF.md) | 数组、滑动窗口 | 中等 | -| 1423 | [可获得的最大点数](https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1423.%20%E5%8F%AF%E8%8E%B7%E5%BE%97%E7%9A%84%E6%9C%80%E5%A4%A7%E7%82%B9%E6%95%B0.md) | 数组、前缀和、滑动窗口 | 中等 | -| 1456 | [定长子串中元音的最大数目](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1456.%20%E5%AE%9A%E9%95%BF%E5%AD%90%E4%B8%B2%E4%B8%AD%E5%85%83%E9%9F%B3%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E7%9B%AE.md) | 字符串、滑动窗口 | 中等 | -| 0567 | [字符串的排列](https://leetcode.cn/problems/permutation-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0567.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%8E%92%E5%88%97.md) | 哈希表、双指针、字符串、滑动窗口 | 中等 | -| 1100 | [长度为 K 的无重复字符子串](https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1100.%20%E9%95%BF%E5%BA%A6%E4%B8%BA%20K%20%E7%9A%84%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 1151 | [最少交换次数来组合所有的 1](https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1151.%20%E6%9C%80%E5%B0%91%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0%E6%9D%A5%E7%BB%84%E5%90%88%E6%89%80%E6%9C%89%E7%9A%84%201.md) | 数组、滑动窗口 | 中等 | -| 1176 | [健身计划评估](https://leetcode.cn/problems/diet-plan-performance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1176.%20%E5%81%A5%E8%BA%AB%E8%AE%A1%E5%88%92%E8%AF%84%E4%BC%B0.md) | 数组、滑动窗口 | 简单 | -| 0438 | [找到字符串中所有字母异位词](https://leetcode.cn/problems/find-all-anagrams-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0438.%20%E6%89%BE%E5%88%B0%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E6%89%80%E6%9C%89%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0995 | [K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0995.%20K%20%E8%BF%9E%E7%BB%AD%E4%BD%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BF%BB%E8%BD%AC%E6%AC%A1%E6%95%B0.md) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | -| 0683 | [K 个关闭的灯泡](https://leetcode.cn/problems/k-empty-slots/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0683.%20K%20%E4%B8%AA%E5%85%B3%E9%97%AD%E7%9A%84%E7%81%AF%E6%B3%A1.md) | 树状数组、数组、有序集合、滑动窗口 | 困难 | -| 0220 | [存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0220.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20III.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | -| 0239 | [滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0239.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | -| 0480 | [滑动窗口中位数](https://leetcode.cn/problems/sliding-window-median/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0480.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、哈希表、滑动窗口、堆(优先队列) | 困难 | - -#### 不定长度窗口题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0674 | [最长连续递增序列](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0674.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E9%80%92%E5%A2%9E%E5%BA%8F%E5%88%97.md) | 数组 | 简单 | -| 0485 | [最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0485.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 数组 | 简单 | -| 0487 | [最大连续1的个数 II](https://leetcode.cn/problems/max-consecutive-ones-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0487.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20II.md) | 数组、动态规划、滑动窗口 | 中等 | -| 0076 | [最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0076.%20%E6%9C%80%E5%B0%8F%E8%A6%86%E7%9B%96%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 困难 | -| 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| 0209 | [长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0209.%20%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 1004 | [最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1004.%20%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD1%E7%9A%84%E4%B8%AA%E6%95%B0%20III.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| 1658 | [将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1658.%20%E5%B0%86%20x%20%E5%87%8F%E5%88%B0%200%20%E7%9A%84%E6%9C%80%E5%B0%8F%E6%93%8D%E4%BD%9C%E6%95%B0.md) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | -| 0424 | [替换后的最长重复字符](https://leetcode.cn/problems/longest-repeating-character-replacement/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0424.%20%E6%9B%BF%E6%8D%A2%E5%90%8E%E7%9A%84%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0003 | [无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0003.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 1695 | [删除子数组的最大得分](https://leetcode.cn/problems/maximum-erasure-value/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1695.%20%E5%88%A0%E9%99%A4%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BE%97%E5%88%86.md) | 数组、哈希表、滑动窗口 | 中等 | -| 1208 | [尽可能使字符串相等](https://leetcode.cn/problems/get-equal-substrings-within-budget/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1208.%20%E5%B0%BD%E5%8F%AF%E8%83%BD%E4%BD%BF%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E7%AD%89.md) | 字符串、二分查找、前缀和、滑动窗口 | 中等 | -| 1493 | [删掉一个元素以后全为 1 的最长子数组](https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1493.%20%E5%88%A0%E6%8E%89%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0%E4%BB%A5%E5%90%8E%E5%85%A8%E4%B8%BA%201%20%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划、滑动窗口 | 中等 | -| 0727 | [最小窗口子序列](https://leetcode.cn/problems/minimum-window-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0727.%20%E6%9C%80%E5%B0%8F%E7%AA%97%E5%8F%A3%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划、滑动窗口 | 困难 | -| 0159 | [至多包含两个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0159.%20%E8%87%B3%E5%A4%9A%E5%8C%85%E5%90%AB%E4%B8%A4%E4%B8%AA%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0340 | [至多包含 K 个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0340.%20%E8%87%B3%E5%A4%9A%E5%8C%85%E5%90%AB%20K%20%E4%B8%AA%E4%B8%8D%E5%90%8C%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0795 | [区间子数组个数](https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0795.%20%E5%8C%BA%E9%97%B4%E5%AD%90%E6%95%B0%E7%BB%84%E4%B8%AA%E6%95%B0.md) | 数组、双指针 | 中等 | -| 0992 | [K 个不同整数的子数组](https://leetcode.cn/problems/subarrays-with-k-different-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0992.%20K%20%E4%B8%AA%E4%B8%8D%E5%90%8C%E6%95%B4%E6%95%B0%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、计数、滑动窗口 | 困难 | -| 0713 | [乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0713.%20%E4%B9%98%E7%A7%AF%E5%B0%8F%E4%BA%8E%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、滑动窗口 | 中等 | -| 0904 | [水果成篮](https://leetcode.cn/problems/fruit-into-baskets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0904.%20%E6%B0%B4%E6%9E%9C%E6%88%90%E7%AF%AE.md) | 数组、哈希表、滑动窗口 | 中等 | -| 1358 | [包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1358.%20%E5%8C%85%E5%90%AB%E6%89%80%E6%9C%89%E4%B8%89%E7%A7%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%95%B0%E7%9B%AE.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0467 | [环绕字符串中唯一的子字符串](https://leetcode.cn/problems/unique-substrings-in-wraparound-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0467.%20%E7%8E%AF%E7%BB%95%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E5%94%AF%E4%B8%80%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 1438 | [绝对差不超过限制的最长连续子数组](https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1438.%20%E7%BB%9D%E5%AF%B9%E5%B7%AE%E4%B8%8D%E8%B6%85%E8%BF%87%E9%99%90%E5%88%B6%E7%9A%84%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 中等 | - diff --git a/Contents/01.Array/05.Array-Sliding-Window/index.md b/Contents/01.Array/05.Array-Sliding-Window/index.md deleted file mode 100644 index 2d29fdfb..00000000 --- a/Contents/01.Array/05.Array-Sliding-Window/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [数组滑动窗口知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md) -- [数组滑动窗口题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) \ No newline at end of file diff --git a/Contents/01.Array/index.md b/Contents/01.Array/index.md deleted file mode 100644 index 35f35190..00000000 --- a/Contents/01.Array/index.md +++ /dev/null @@ -1,36 +0,0 @@ -## 本章内容 - -### 数组基础知识 - -- [数组基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/01.Array-Basic/01.Array-Basic.md) -- [数组基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/01.Array-Basic/02.Array-Basic-List.md) - -### 数组排序算法 - -- [冒泡排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md) -- [选择排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md) -- [插入排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md) -- [希尔排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md) -- [归并排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md) -- [快速排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md) -- [堆排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md) -- [计数排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md) -- [桶排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md) -- [基数排序](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md) -- [数组排序题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/02.Array-Sort/11.Array-Sort-List.md) - -### 二分查找 - -- [二分查找知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md) -- [二分查找知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/03.Array-Binary-Search/02.Array-Binary-Search-02.md) -- [二分查找题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md) - -### 数组双指针 - -- [数组双指针知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md) -- [数组双指针题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md) - -### 数组滑动窗口 - -- [数组滑动窗口知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md) -- [数组滑动窗口题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) \ No newline at end of file diff --git a/Contents/02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md b/Contents/02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md deleted file mode 100644 index b7018994..00000000 --- a/Contents/02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md +++ /dev/null @@ -1,17 +0,0 @@ -### 链表经典题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0707 | [设计链表](https://leetcode.cn/problems/design-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0707.%20%E8%AE%BE%E8%AE%A1%E9%93%BE%E8%A1%A8.md) | 设计、链表 | 中等 | -| 0083 | [删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0083.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md) | 链表 | 简单 | -| 0082 | [删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0082.%20%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20II.md) | 链表、双指针 | 中等 | -| 0206 | [反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0206.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0092 | [反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0092.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8%20II.md) | 链表 | 中等 | -| 0025 | [K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0025.%20K%20%E4%B8%AA%E4%B8%80%E7%BB%84%E7%BF%BB%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 困难 | -| 0203 | [移除链表元素](https://leetcode.cn/problems/remove-linked-list-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0203.%20%E7%A7%BB%E9%99%A4%E9%93%BE%E8%A1%A8%E5%85%83%E7%B4%A0.md) | 递归、链表 | 简单 | -| 0328 | [奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0328.%20%E5%A5%87%E5%81%B6%E9%93%BE%E8%A1%A8.md) | 链表 | 中等 | -| 0234 | [回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0234.%20%E5%9B%9E%E6%96%87%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 简单 | -| 0430 | [扁平化多级双向链表](https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0430.%20%E6%89%81%E5%B9%B3%E5%8C%96%E5%A4%9A%E7%BA%A7%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md) | 深度优先搜索、链表、双向链表 | 中等 | -| 0138 | [复制带随机指针的链表](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0138.%20%E5%A4%8D%E5%88%B6%E5%B8%A6%E9%9A%8F%E6%9C%BA%E6%8C%87%E9%92%88%E7%9A%84%E9%93%BE%E8%A1%A8.md) | 哈希表、链表 | 中等 | -| 0061 | [旋转链表](https://leetcode.cn/problems/rotate-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0061.%20%E6%97%8B%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 链表、双指针 | 中等 | - diff --git a/Contents/02.Linked-List/01.Linked-List-Basic/index.md b/Contents/02.Linked-List/01.Linked-List-Basic/index.md deleted file mode 100644 index c8f1269c..00000000 --- a/Contents/02.Linked-List/01.Linked-List-Basic/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [链表基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md) -- [链表经典题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md) \ No newline at end of file diff --git a/Contents/02.Linked-List/02.Linked-List-Sort/01.Linked-List-Sort.md b/Contents/02.Linked-List/02.Linked-List-Sort/01.Linked-List-Sort.md deleted file mode 100644 index 169dcfd9..00000000 --- a/Contents/02.Linked-List/02.Linked-List-Sort/01.Linked-List-Sort.md +++ /dev/null @@ -1,523 +0,0 @@ -## 1. 链表排序简介 - -在数组排序中,常见的排序算法有:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序等。 - -而对于链表排序而言,因为链表不支持随机访问,访问链表后面的节点只能依靠 `next` 指针从头部顺序遍历,所以相对于数组排序问题来说,链表排序问题会更加复杂一点。 - -下面先来总结一下适合链表排序与不适合链表排序的算法: - -- 适合链表的排序算法:**冒泡排序**、**选择排序**、**插入排序**、**归并排序**、**快速排序**、**计数排序**、**桶排序**、**基数排序**。 -- 不适合链表的排序算法:**希尔排序**。 -- 可以用于链表排序但不建议使用的排序算法:**堆排序**。 - -> 希尔排序为什么不适合链表排序? - -**希尔排序**:希尔排序中经常涉及到对序列中第 `i + gap` 的元素进行操作,其中 `gap` 是希尔排序中当前的步长。而链表不支持随机访问的特性,导致这种操作不适合链表,因而希尔排序算法不适合进行链表排序。 - -> 为什么不建议使用堆排序? - -**堆排序**:堆排序所使用的最大堆 / 最小堆结构本质上是一棵完全二叉树。而完全二叉树适合采用顺序存储结构(数组)。因为数组存储的完全二叉树可以很方便的通过下标序号来确定父亲节点和孩子节点,并且可以极大限度的节省存储空间。 - -而链表用在存储完全二叉树的时候,因为不支持随机访问的特性,导致其寻找子节点和父亲节点会比较耗时,如果增加指向父亲节点的变量,又会浪费大量存储空间。所以堆排序算法不适合进行链表排序。 - -如果一定要对链表进行堆排序,则可以使用额外的数组空间表示堆结构。然后将链表中各个节点的值依次添加入堆结构中,对数组进行堆排序。排序后,再按照堆中元素顺序,依次建立链表节点,构建新的链表并返回新链表头节点。 - -> 需要用到额外的辅助空间进行排序的算法 - -刚才我们说到如果一定要对链表进行堆排序,则需要使用额外的数组空间。除此之外,计数排序、桶排序、基数排序都需要用到额外的数组空间。 - -接下来,我们将对适合链表排序的 8 种算法进行一一讲解。当然,这些排序算法不用完全掌握,重点是掌握 **「链表插入排序」**、**「链表归并排序」** 这两种排序算法。 - -## 2. 链表冒泡排序 - -### 2.1 链表冒泡排序算法描述 - -1. 使用三个指针 `node_i`、`node_j` 和 `tail`。其中 `node_i` 用于控制外循环次数,循环次数为链节点个数(链表长度)。`node_j` 和 `tail` 用于控制内循环次数和循环结束位置。 - -2. 排序开始前,将 `node_i` 、`node_j` 置于头节点位置。`tail` 指向链表末尾,即 `None`。 - -3. 比较链表中相邻两个元素 `node_j.val` 与 `node_j.next.val` 的值大小,如果 `node_j.val > node_j.next.val`,则值相互交换。否则不发生交换。然后向右移动 `node_j` 指针,直到 `node_j.next == tail` 时停止。 - -4. 一次循环之后,将 `tail` 移动到 `node_j` 所在位置。相当于 `tail` 向左移动了一位。此时 `tail` 节点右侧为链表中最大的链节点。 - -5. 然后移动 `node_i` 节点,并将 `node_j` 置于头节点位置。然后重复第 3、4 步操作。 -6. 直到 `node_i` 节点移动到链表末尾停止,排序结束。 -7. 返回链表的头节点 `head`。 - -### 2.2 链表冒泡排序算法实现代码 - -```python -class Solution: - def bubbleSort(self, head: ListNode): - node_i = head - tail = None - # 外层循环次数为 链表节点个数 - while node_i: - node_j = head - while node_j and node_j.next != tail: - if node_j.val > node_j.next.val: - # 交换两个节点的值 - node_j.val, node_j.next.val = node_j.next.val, node_j.val - node_j = node_j.next - # 尾指针向前移动 1 位,此时尾指针右侧为排好序的链表 - tail = node_j - node_i = node_i.next - - return head - - def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: - return self.bubbleSort(head) -``` - -### 2.3 链表冒泡排序算法复杂度分析 - -- **时间复杂度**:$O(n^2)$。 -- **空间复杂度**:$O(1)$。 - -## 3. 链表选择排序 - -### 3.1 链表选择排序算法描述 - -1. 使用两个指针 `node_i`、`node_j`。`node_i` 既可以用于控制外循环次数,又可以作为当前未排序链表的第一个链节点位置。 -2. 使用 `min_node` 记录当前未排序链表中值最小的链节点。 -3. 每一趟排序开始时,先令 `min_node = node_i`(即暂时假设链表中 `node_i` 节点为值最小的节点,经过比较后再确定最小值节点位置)。 -4. 然后依次比较未排序链表中 `node_j.val` 与 `min_node.val` 的值大小。如果 `node_j.val < min_node.val`,则更新 `min_node` 为 `node_j`。 -5. 这一趟排序结束时,未排序链表中最小值节点为 `min_node`,如果 `node_i != min_node`,则将 `node_i` 与 `min_node` 值进行交换。如果 `node_i == min_node`,则不用交换。 -6. 排序结束后,继续向右移动 `node_i`,重复上述步骤,在剩余未排序链表中寻找最小的链节点,并与 `node_i` 进行比较和交换,直到 `node_i == None` 或者 `node_i.next == None` 时,停止排序。 -7. 返回链表的头节点 `head`。 - -### 3.2 链表选择排序实现代码 - -```python -class Solution: - def sectionSort(self, head: ListNode): - node_i = head - # node_i 为当前未排序链表的第一个链节点 - while node_i and node_i.next: - # min_node 为未排序链表中的值最小节点 - min_node = node_i - node_j = node_i.next - while node_j: - if node_j.val < min_node.val: - min_node = node_j - node_j = node_j.next - # 交换值最小节点与未排序链表中第一个节点的值 - if node_i != min_node: - node_i.val, min_node.val = min_node.val, node_i.val - node_i = node_i.next - - return head - - def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: - return self.sectionSort(head) -``` - -### 3.3 链表选择排序算法复杂度分析 - -- **时间复杂度**:$O(n^2)$。 -- **空间复杂度**:$O(1)$。 - -## 4. 链表插入排序 - -### 4.1 链表插入排序算法描述 - -1. 先使用哑节点 `dummy_head` 构造一个指向 `head` 的指针,使得可以从 `head` 开始遍历。 -2. 维护 `sorted_list` 为链表的已排序部分的最后一个节点,初始时,`sorted_list = head`。 -3. 维护 `prev` 为插入元素位置的前一个节点,维护 `cur` 为待插入元素。初始时,`prev = head`,`cur = head.next`。 -4. 比较 `sorted_list` 和 `cur` 的节点值。 - - - 如果 `sorted_list.val <= cur.val`,说明 `cur` 应该插入到 `sorted_list` 之后,则将 `sorted_list` 后移一位。 - - 如果 `sorted_list.val > cur.val`,说明 `cur` 应该插入到 `head` 与 `sorted_list` 之间。则使用 `prev` 从 `head` 开始遍历,直到找到插入 `cur` 的位置的前一个节点位置。然后将 `cur` 插入。 - -5. 令 `cur = sorted_list.next`,此时 `cur` 为下一个待插入元素。 -6. 重复 4、5 步骤,直到 `cur` 遍历结束为空。返回 `dummy_head` 的下一个节点。 - -### 4.2 链表插入排序实现代码 - -```python -class Solution: - def insertionSort(self, head: ListNode): - if not head or not head.next: - return head - - dummy_head = ListNode(-1) - dummy_head.next = head - sorted_list = head - cur = head.next - - while cur: - if sorted_list.val <= cur.val: - # 将 cur 插入到 sorted_list 之后 - sorted_list = sorted_list.next - else: - prev = dummy_head - while prev.next.val <= cur.val: - prev = prev.next - # 将 cur 到链表中间 - sorted_list.next = cur.next - cur.next = prev.next - prev.next = cur - cur = sorted_list.next - - return dummy_head.next - - def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: - return self.insertionSort(head) -``` - -### 4.3 链表插入排序算法复杂度分析 - -- **时间复杂度**:$O(n^2)$。 -- **空间复杂度**:$O(1)$。 - -## 5. 链表归并排序 - -### 5.1 链表归并排序算法描述 - -1. **分割环节**:找到链表中心链节点,从中心节点将链表断开,并递归进行分割。 - 1. 使用快慢指针 `fast = head.next`、`slow = head`,让 `fast` 每次移动 `2` 步,`slow` 移动 `1` 步,移动到链表末尾,从而找到链表中心链节点,即 `slow`。 - 2. 从中心位置将链表从中心位置分为左右两个链表 `left_head` 和 `right_head`,并从中心位置将其断开,即 `slow.next = None`。 - 3. 对左右两个链表分别进行递归分割,直到每个链表中只包含一个链节点。 -2. **归并环节**:将递归后的链表进行两两归并,完成一遍后每个子链表长度加倍。重复进行归并操作,直到得到完整的链表。 - 1. 使用哑节点 `dummy_head` 构造一个头节点,并使用 `cur` 指向 `dummy_head` 用于遍历。 - 2. 比较两个链表头节点 `left` 和 `right` 的值大小。将较小的头节点加入到合并后的链表中,并向后移动该链表的头节点指针。 - 3. 然后重复上一步操作,直到两个链表中出现链表为空的情况。 - 4. 将剩余链表插入到合并后的链表中。 - 5. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为合并后的头节点返回。 - -### 5.2 链表归并排序实现代码 - -```python -class Solution: - def merge(self, left, right): - # 归并环节 - dummy_head = ListNode(-1) - cur = dummy_head - while left and right: - if left.val <= right.val: - cur.next = left - left = left.next - else: - cur.next = right - right = right.next - cur = cur.next - - if left: - cur.next = left - elif right: - cur.next = right - - return dummy_head.next - - def mergeSort(self, head: ListNode): - # 分割环节 - if not head or not head.next: - return head - - # 快慢指针找到中心链节点 - slow, fast = head, head.next - while fast and fast.next: - slow = slow.next - fast = fast.next.next - - # 断开左右链节点 - left_head, right_head = head, slow.next - slow.next = None - - # 归并操作 - return self.merge(self.mergeSort(left_head), self.mergeSort(right_head)) - - def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: - return self.mergeSort(head) -``` - -### 5.3 链表归并排序算法复杂度分析 - -- **时间复杂度**:$O(n \times \log_2n)$。 -- **空间复杂度**:$O(1)$。 - -## 6. 链表快速排序 - -### 6.1 链表快速排序算法描述 - -1. 从链表中找到一个基准值 `pivot`,这里以头节点为基准值。 -2. 然后通过快慢指针 `node_i`、`node_j` 在链表中移动,使得 `node_i` 之前的节点值都小于基准值,`node_i` 之后的节点值都大于基准值。从而把数组拆分为左右两个部分。 -3. 再对左右两个部分分别重复第二步,直到各个部分只有一个节点,则排序结束。 - -### 6.2 链表快速排序实现代码 - -```python -class Solution: - def partition(self, left: ListNode, right: ListNode): - # 左闭右开,区间没有元素或者只有一个元素,直接返回第一个节点 - if left == right or left.next == right: - return left - # 选择头节点为基准节点 - pivot = left.val - # 使用 node_i, node_j 双指针,保证 node_i 之前的节点值都小于基准节点值,node_i 与 node_j 之间的节点值都大于等于基准节点值 - node_i, node_j = left, left.next - - while node_j != right: - # 发现一个小与基准值的元素 - if node_j.val < pivot: - # 因为 node_i 之前节点都小于基准值,所以先将 node_i 向右移动一位(此时 node_i 节点值大于等于基准节点值) - node_i = node_i.next - # 将小于基准值的元素 node_j 与当前 node_i 换位,换位后可以保证 node_i 之前的节点都小于基准节点值 - node_i.val, node_j.val = node_j.val, node_i.val - node_j = node_j.next - # 将基准节点放到正确位置上 - node_i.val, left.val = left.val, node_i.val - return node_i - - def quickSort(self, left: ListNode, right: ListNode): - if left == right or left.next == right: - return left - pi = self.partition(left, right) - self.quickSort(left, pi) - self.quickSort(pi.next, right) - return left - - def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: - if not head or not head.next: - return head - return self.quickSort(head, None) -``` - -### 6.3 链表快速排序算法复杂度分析 - -- **时间复杂度**:$O(n \times \log_2n)$。 -- **空间复杂度**:$O(1)$。 - -## 7. 链表计数排序 - -### 7.1 链表计数排序算法描述 - -1. 使用 `cur` 指针遍历一遍链表。找出链表中最大值 `list_max` 和最小值 `list_min`。 -2. 使用数组 `counts` 存储节点出现次数。 -3. 再次使用 `cur` 指针遍历一遍链表。将链表中每个值为 `cur.val` 的节点出现次数,存入数组对应第 `cur.val - list_min` 项中。 -4. 反向填充目标链表: - 1. 建立一个哑节点 `dummy_head`,作为链表的头节点。使用 `cur` 指针指向 `dummy_head`。 - 2. 从小到大遍历一遍数组 `counts`。对于每个 `counts[i] != 0` 的元素建立一个链节点,值为 `i + list_min`,将其插入到 `cur.next` 上。并向右移动 `cur`。同时 `counts[i] -= 1`。直到 `counts[i] == 0` 后继续向后遍历数组 `counts`。 -5. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为新链表的头节点返回。 - -### 7.2 链表计数排序代码实现 - -```python -class Solution: - def countingSort(self, head: ListNode): - if not head: - return head - - # 找出链表中最大值 list_max 和最小值 list_min - list_min, list_max = float('inf'), float('-inf') - cur = head - while cur: - if cur.val < list_min: - list_min = cur.val - if cur.val > list_max: - list_max = cur.val - cur = cur.next - - size = list_max - list_min + 1 - counts = [0 for _ in range(size)] - - cur = head - while cur: - counts[cur.val - list_min] += 1 - cur = cur.next - - dummy_head = ListNode(-1) - cur = dummy_head - for i in range(size): - while counts[i]: - cur.next = ListNode(i + list_min) - counts[i] -= 1 - cur = cur.next - return dummy_head.next - - def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: - return self.countingSort(head) -``` - -### 7.3 链表计数排序算法复杂度分析 - -- **时间复杂度**:$O(n + k)$,其中 $k$ 代表待排序链表中所有元素的值域。 -- **空间复杂度**:$O(k)$。 - -## 8. 链表桶排序 - -### 8.1 链表桶排序算法描述 - -1. 使用 `cur` 指针遍历一遍链表。找出链表中最大值 `list_max` 和最小值 `list_min`。 -2. 通过 `(最大值 - 最小值) / 每个桶的大小` 计算出桶的个数,即 `bucket_count = (list_max - list_min) // bucket_size + 1` 个桶。 -3. 定义数组 `buckets` 为桶,桶的个数为 `bucket_count` 个。 -4. 使用 `cur` 指针再次遍历一遍链表,将每个元素装入对应的桶中。 -5. 对每个桶内的元素单独排序,可以使用链表插入排序、链表归并排序、链表快速排序等算法。 -6. 最后按照顺序将桶内的元素拼成新的链表,并返回。 - -### 8.2 链表桶排序代码实现 - -```python -class ListNode: - def __init__(self, val=0, next=None): - self.val = val - self.next = next - -class Solution: - # 将链表节点值 val 添加到对应桶 buckets[index] 中 - def insertion(self, buckets, index, val): - if not buckets[index]: - buckets[index] = ListNode(val) - return - - node = ListNode(val) - node.next = buckets[index] - buckets[index] = node - - # 归并环节 - def merge(self, left, right): - dummy_head = ListNode(-1) - cur = dummy_head - while left and right: - if left.val <= right.val: - cur.next = left - left = left.next - else: - cur.next = right - right = right.next - cur = cur.next - - if left: - cur.next = left - elif right: - cur.next = right - - return dummy_head.next - - def mergeSort(self, head: ListNode): - # 分割环节 - if not head or not head.next: - return head - - # 快慢指针找到中心链节点 - slow, fast = head, head.next - while fast and fast.next: - slow = slow.next - fast = fast.next.next - - # 断开左右链节点 - left_head, right_head = head, slow.next - slow.next = None - - # 归并操作 - return self.merge(self.mergeSort(left_head), self.mergeSort(right_head)) - - def bucketSort(self, head: ListNode, bucket_size=5): - if not head: - return head - - # 找出链表中最大值 list_max 和最小值 list_min - list_min, list_max = float('inf'), float('-inf') - cur = head - while cur: - if cur.val < list_min: - list_min = cur.val - if cur.val > list_max: - list_max = cur.val - cur = cur.next - - # 计算桶的个数,并定义桶 - bucket_count = (list_max - list_min) // bucket_size + 1 - buckets = [None for _ in range(bucket_count)] - - # 将链表节点值依次添加到对应桶中 - cur = head - while cur: - index = (cur.val - list_min) // bucket_size - self.insertion(buckets, index, cur.val) - cur = cur.next - - dummy_head = ListNode(-1) - cur = dummy_head - # 将元素依次出桶,并拼接成有序链表 - for bucket_head in buckets: - bucket_cur = self.mergeSort(bucket_head) - while bucket_cur: - cur.next = bucket_cur - cur = cur.next - bucket_cur = bucket_cur.next - - return dummy_head.next - - def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: - return self.bucketSort(head) -``` - -### 8.3 链表桶排序算法复杂度分析 - -- **时间复杂度**:$O(n)$。 -- **空间复杂度**:$O(n + m)$。$m$ 为桶的个数。 - -## 9. 链表基数排序 - -### 9.1 链表基数排序算法描述 - -1. 使用 `cur` 指针遍历链表,获取节点值位数最长的位数 `size`。 -2. 从个位到高位遍历位数。因为 `0` ~ `9` 共有 `10` 位数字,所以建立 `10` 个桶。 -3. 以每个节点对应位数上的数字为索引,将节点值放入到对应桶中。 -4. 建立一个哑节点 `dummy_head`,作为链表的头节点。使用 `cur` 指针指向 `dummy_head`。 -5. 将桶中元素依次取出,并根据元素值建立链表节点,并插入到新的链表后面。从而生成新的链表。 -6. 之后依次以十位,百位,…,直到最大值元素的最高位处值为索引,放入到对应桶中,并生成新的链表,最终完成排序。 -7. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为新链表的头节点返回。 - -### 9.2 链表基数排序代码实现 - -```python -class Solution: - def radixSort(self, head: ListNode): - # 计算位数最长的位数 - size = 0 - cur = head - while cur: - val_len = len(str(cur.val)) - if val_len > size: - size = val_len - cur = cur.next - - # 从个位到高位遍历位数 - for i in range(size): - buckets = [[] for _ in range(10)] - cur = head - while cur: - # 以每个节点对应位数上的数字为索引,将节点值放入到对应桶中 - buckets[cur.val // (10 ** i) % 10].append(cur.val) - cur = cur.next - - # 生成新的链表 - dummy_head = ListNode(-1) - cur = dummy_head - for bucket in buckets: - for num in bucket: - cur.next = ListNode(num) - cur = cur.next - head = dummy_head.next - - return head - - def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: - return self.radixSort(head) -``` - -### 9.3 链表基数排序算法复杂度分析 - -- **时间复杂度**:$O(n \times k)$。其中 $n$ 是待排序元素的个数,$k$ 是数字位数。$k$ 的大小取决于数字位的选择(十进制位、二进制位)和待排序元素所属数据类型全集的大小。 -- **空间复杂度**:$O(n + k)$。 - -## 参考资料 - -- 【文章】[单链表的冒泡排序_zhao_miao的博客 - CSDN博客](https://blog.csdn.net/zhao_miao/article/details/81708454) -- 【文章】[链表排序总结(全)(C++)- 阿祭儿 - CSDN博客](https://blog.csdn.net/qq_32523711/article/details/107402873) -- 【题解】[快排、冒泡、选择排序实现列表排序 - 排序链表 - 力扣](https://leetcode.cn/problems/sort-list/solution/kuai-pai-mou-pao-xuan-ze-pai-xu-shi-xian-ula7/) -- 【题解】[归并排序+快速排序 - 排序链表 - 力扣](https://leetcode.cn/problems/sort-list/solution/gui-bing-pai-xu-kuai-su-pai-xu-by-datacruiser/) -- 【题解】[排序链表(递归+迭代)详解 - 排序链表 - 力扣](https://leetcode.cn/problems/sort-list/solution/pai-xu-lian-biao-di-gui-die-dai-xiang-jie-by-cherr/) -- 【题解】[Sort List (归并排序链表) - 排序链表 - 力扣](https://leetcode.cn/problems/sort-list/solution/sort-list-gui-bing-pai-xu-lian-biao-by-jyd/) \ No newline at end of file diff --git a/Contents/02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md b/Contents/02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md deleted file mode 100644 index bde4212f..00000000 --- a/Contents/02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md +++ /dev/null @@ -1,9 +0,0 @@ -### 链表排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0148 | [排序链表](https://leetcode.cn/problems/sort-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0148.%20%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、双指针、分治、排序、归并排序 | 中等 | -| 0021 | [合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0021.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| 0147 | [对链表进行插入排序](https://leetcode.cn/problems/insertion-sort-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0147.%20%E5%AF%B9%E9%93%BE%E8%A1%A8%E8%BF%9B%E8%A1%8C%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F.md) | 链表、排序 | 中等 | - diff --git a/Contents/02.Linked-List/02.Linked-List-Sort/index.md b/Contents/02.Linked-List/02.Linked-List-Sort/index.md deleted file mode 100644 index 772df309..00000000 --- a/Contents/02.Linked-List/02.Linked-List-Sort/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [链表排序知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/02.Linked-List-Sort/01.Linked-List-Sort.md) -- [链表排序题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md) \ No newline at end of file diff --git a/Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md b/Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md deleted file mode 100644 index f35368d5..00000000 --- a/Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md +++ /dev/null @@ -1,14 +0,0 @@ -### 链表双指针题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0141 | [环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0141.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8.md) | 哈希表、链表、双指针 | 简单 | -| 0142 | [环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0142.%20%E7%8E%AF%E5%BD%A2%E9%93%BE%E8%A1%A8%20II.md) | 哈希表、链表、双指针 | 中等 | -| 0160 | [相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0160.%20%E7%9B%B8%E4%BA%A4%E9%93%BE%E8%A1%A8.md) | 哈希表、链表、双指针 | 简单 | -| 0019 | [删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0019.%20%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E7%9A%84%E5%80%92%E6%95%B0%E7%AC%AC%20N%20%E4%B8%AA%E7%BB%93%E7%82%B9.md) | 链表、双指针 | 中等 | -| 0876 | [链表的中间结点](https://leetcode.cn/problems/middle-of-the-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0876.%20%E9%93%BE%E8%A1%A8%E7%9A%84%E4%B8%AD%E9%97%B4%E7%BB%93%E7%82%B9.md) | 链表、双指针 | 简单 | -| 剑指 Offer 22 | [链表中倒数第k个节点](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2022.%20%E9%93%BE%E8%A1%A8%E4%B8%AD%E5%80%92%E6%95%B0%E7%AC%ACk%E4%B8%AA%E8%8A%82%E7%82%B9.md) | 链表、双指针 | 简单 | -| 0143 | [重排链表](https://leetcode.cn/problems/reorder-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0143.%20%E9%87%8D%E6%8E%92%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 中等 | -| 0002 | [两数相加](https://leetcode.cn/problems/add-two-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0002.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0.md) | 递归、链表、数学 | 中等 | -| 0445 | [两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0445.%20%E4%B8%A4%E6%95%B0%E7%9B%B8%E5%8A%A0%20II.md) | 栈、链表、数学 | 中等 | - diff --git a/Contents/02.Linked-List/03.Linked-List-Two-Pointers/index.md b/Contents/02.Linked-List/03.Linked-List-Two-Pointers/index.md deleted file mode 100644 index df50efdc..00000000 --- a/Contents/02.Linked-List/03.Linked-List-Two-Pointers/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [链表双指针知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/03.Linked-List-Two-Pointers/01.Linked-List-Two-Pointers.md) -- [链表双指针题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md) \ No newline at end of file diff --git a/Contents/02.Linked-List/index.md b/Contents/02.Linked-List/index.md deleted file mode 100644 index 880bf9a0..00000000 --- a/Contents/02.Linked-List/index.md +++ /dev/null @@ -1,17 +0,0 @@ -## 本章内容 - -### 链表基础知识 - -- [链表基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md) -- [链表经典题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md) - -### 链表排序 - -- [链表排序知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/02.Linked-List-Sort/01.Linked-List-Sort.md) -- [链表排序题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md) - -### 链表双指针 - -- [链表双指针知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/03.Linked-List-Two-Pointers/01.Linked-List-Two-Pointers.md) -- [链表双指针题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md) - diff --git a/Contents/03.Stack/01.Stack-Basic/02.Stack-Basic-List.md b/Contents/03.Stack/01.Stack-Basic/02.Stack-Basic-List.md deleted file mode 100644 index 369efe75..00000000 --- a/Contents/03.Stack/01.Stack-Basic/02.Stack-Basic-List.md +++ /dev/null @@ -1,18 +0,0 @@ -### 堆栈基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1047 | [删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1047.%20%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E7%9B%B8%E9%82%BB%E9%87%8D%E5%A4%8D%E9%A1%B9.md) | 栈、字符串 | 简单 | -| 0155 | [最小栈](https://leetcode.cn/problems/min-stack/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0155.%20%E6%9C%80%E5%B0%8F%E6%A0%88.md) | 栈、设计 | 中等 | -| 0020 | [有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0020.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.md) | 栈、字符串 | 简单 | -| 0227 | [基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0227.%20%E5%9F%BA%E6%9C%AC%E8%AE%A1%E7%AE%97%E5%99%A8%20II.md) | 栈、数学、字符串 | 中等 | -| 0739 | [每日温度](https://leetcode.cn/problems/daily-temperatures/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0739.%20%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.md) | 栈、数组、单调栈 | 中等 | -| 0150 | [逆波兰表达式求值](https://leetcode.cn/problems/evaluate-reverse-polish-notation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0150.%20%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B1%82%E5%80%BC.md) | 栈、数组、数学 | 中等 | -| 0232 | [用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0232.%20%E7%94%A8%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md) | 栈、设计、队列 | 简单 | -| 剑指 Offer 09 | [用两个栈实现队列](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2009.%20%E7%94%A8%E4%B8%A4%E4%B8%AA%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md) | 栈、设计、队列 | 简单 | -| 0394 | [字符串解码](https://leetcode.cn/problems/decode-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0394.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E8%A7%A3%E7%A0%81.md) | 栈、递归、字符串 | 中等 | -| 0032 | [最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0032.%20%E6%9C%80%E9%95%BF%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7.md) | 栈、字符串、动态规划 | 困难 | -| 0946 | [验证栈序列](https://leetcode.cn/problems/validate-stack-sequences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0946.%20%E9%AA%8C%E8%AF%81%E6%A0%88%E5%BA%8F%E5%88%97.md) | 栈、数组、模拟 | 中等 | -| 剑指 Offer 06 | [从尾到头打印链表](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2006.%20%E4%BB%8E%E5%B0%BE%E5%88%B0%E5%A4%B4%E6%89%93%E5%8D%B0%E9%93%BE%E8%A1%A8.md) | 栈、递归、链表、双指针 | 简单 | -| 0071 | [简化路径](https://leetcode.cn/problems/simplify-path/) | | 栈、字符串 | 中等 | - diff --git a/Contents/03.Stack/01.Stack-Basic/index.md b/Contents/03.Stack/01.Stack-Basic/index.md deleted file mode 100644 index e5e04e07..00000000 --- a/Contents/03.Stack/01.Stack-Basic/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [堆栈基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md) -- [堆栈基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/01.Stack-Basic/02.Stack-Basic-List.md) \ No newline at end of file diff --git a/Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md b/Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md deleted file mode 100644 index acab1306..00000000 --- a/Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md +++ /dev/null @@ -1,14 +0,0 @@ -### 单调栈 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0739 | [每日温度](https://leetcode.cn/problems/daily-temperatures/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0739.%20%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.md) | 栈、数组、单调栈 | 中等 | -| 0496 | [下一个更大元素 I](https://leetcode.cn/problems/next-greater-element-i/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0496.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0%20I.md) | 栈、数组、哈希表、单调栈 | 简单 | -| 0503 | [下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0503.%20%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%A4%A7%E5%85%83%E7%B4%A0%20II.md) | 栈、数组、单调栈 | 中等 | -| 0901 | [股票价格跨度](https://leetcode.cn/problems/online-stock-span/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0901.%20%E8%82%A1%E7%A5%A8%E4%BB%B7%E6%A0%BC%E8%B7%A8%E5%BA%A6.md) | 栈、设计、数据流、单调栈 | 中等 | -| 0084 | [柱状图中最大的矩形](https://leetcode.cn/problems/largest-rectangle-in-histogram/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0084.%20%E6%9F%B1%E7%8A%B6%E5%9B%BE%E4%B8%AD%E6%9C%80%E5%A4%A7%E7%9A%84%E7%9F%A9%E5%BD%A2.md) | 栈、数组、单调栈 | 困难 | -| 0316 | [去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0316.%20%E5%8E%BB%E9%99%A4%E9%87%8D%E5%A4%8D%E5%AD%97%E6%AF%8D.md) | 栈、贪心、字符串、单调栈 | 中等 | -| 0042 | [接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0042.%20%E6%8E%A5%E9%9B%A8%E6%B0%B4.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | -| 0085 | [最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | | 栈、数组、动态规划、矩阵、单调栈 | 困难 | -| 0862 | [和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0862.%20%E5%92%8C%E8%87%B3%E5%B0%91%E4%B8%BA%20K%20%E7%9A%84%E6%9C%80%E7%9F%AD%E5%AD%90%E6%95%B0%E7%BB%84.md) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | - diff --git a/Contents/03.Stack/02.Monotone-Stack/index.md b/Contents/03.Stack/02.Monotone-Stack/index.md deleted file mode 100644 index 58d7f5f6..00000000 --- a/Contents/03.Stack/02.Monotone-Stack/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [单调栈知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md) -- [单调栈题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) \ No newline at end of file diff --git a/Contents/03.Stack/index.md b/Contents/03.Stack/index.md deleted file mode 100644 index f5426b4d..00000000 --- a/Contents/03.Stack/index.md +++ /dev/null @@ -1,11 +0,0 @@ -## 本章内容 - -### 堆栈基础知识 - -- [堆栈基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md) -- [堆栈基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/01.Stack-Basic/02.Stack-Basic-List.md) - -### 单调栈 - -- [单调栈知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md) -- [单调栈题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) \ No newline at end of file diff --git a/Contents/04.Queue/01.Queue-Basic/02.Queue-Basic-List.md b/Contents/04.Queue/01.Queue-Basic/02.Queue-Basic-List.md deleted file mode 100644 index 72b53f41..00000000 --- a/Contents/04.Queue/01.Queue-Basic/02.Queue-Basic-List.md +++ /dev/null @@ -1,8 +0,0 @@ -### 队列基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0622 | [设计循环队列](https://leetcode.cn/problems/design-circular-queue/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0622.%20%E8%AE%BE%E8%AE%A1%E5%BE%AA%E7%8E%AF%E9%98%9F%E5%88%97.md) | 设计、队列、数组、链表 | 中等 | -| 0346 | [数据流中的移动平均值](https://leetcode.cn/problems/moving-average-from-data-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0346.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E7%A7%BB%E5%8A%A8%E5%B9%B3%E5%9D%87%E5%80%BC.md) | 设计、队列、数组、数据流 | 简单 | -| 0225 | [用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0225.%20%E7%94%A8%E9%98%9F%E5%88%97%E5%AE%9E%E7%8E%B0%E6%A0%88.md) | 栈、设计、队列 | 简单 | - diff --git a/Contents/04.Queue/01.Queue-Basic/index.md b/Contents/04.Queue/01.Queue-Basic/index.md deleted file mode 100644 index c6c1d365..00000000 --- a/Contents/04.Queue/01.Queue-Basic/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [队列基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md) -- [队列基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/01.Queue-Basic/02.Queue-Basic-List.md) \ No newline at end of file diff --git a/Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md b/Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md deleted file mode 100644 index 5a7753f2..00000000 --- a/Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md +++ /dev/null @@ -1,14 +0,0 @@ -### 优先队列题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0703 | [数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0703.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | -| 0347 | [前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0347.%20%E5%89%8D%20K%20%E4%B8%AA%E9%AB%98%E9%A2%91%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | -| 0451 | [根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0451.%20%E6%A0%B9%E6%8D%AE%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E9%A2%91%E7%8E%87%E6%8E%92%E5%BA%8F.md) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | -| 0973 | [最接近原点的 K 个点](https://leetcode.cn/problems/k-closest-points-to-origin/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0973.%20%E6%9C%80%E6%8E%A5%E8%BF%91%E5%8E%9F%E7%82%B9%E7%9A%84%20K%20%E4%B8%AA%E7%82%B9.md) | 几何、数组、数学、分治、快速选择、排序、堆(优先队列) | 中等 | -| 1296 | [划分数组为连续数字的集合](https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1296.%20%E5%88%92%E5%88%86%E6%95%B0%E7%BB%84%E4%B8%BA%E8%BF%9E%E7%BB%AD%E6%95%B0%E5%AD%97%E7%9A%84%E9%9B%86%E5%90%88.md) | 贪心、数组、哈希表、排序 | 中等 | -| 0239 | [滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0239.%20%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | -| 0295 | [数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0295.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| 0218 | [天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0218.%20%E5%A4%A9%E9%99%85%E7%BA%BF%E9%97%AE%E9%A2%98.md) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | - diff --git a/Contents/04.Queue/02.Priority-Queue/index.md b/Contents/04.Queue/02.Priority-Queue/index.md deleted file mode 100644 index 9563cfb4..00000000 --- a/Contents/04.Queue/02.Priority-Queue/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [优先队列知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md) -- [优先队列题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md) \ No newline at end of file diff --git a/Contents/04.Queue/index.md b/Contents/04.Queue/index.md deleted file mode 100644 index 1f37c2e9..00000000 --- a/Contents/04.Queue/index.md +++ /dev/null @@ -1,11 +0,0 @@ -## 本章内容 - -### 队列基础知识 - -- [队列基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md) -- [队列基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/01.Queue-Basic/02.Queue-Basic-List.md) - -### 优先队列 - -- [优先队列知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md) -- [优先队列题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md) \ No newline at end of file diff --git a/Contents/05.Hash-Table/02.Hash-Table-List.md b/Contents/05.Hash-Table/02.Hash-Table-List.md deleted file mode 100644 index a035c3e7..00000000 --- a/Contents/05.Hash-Table/02.Hash-Table-List.md +++ /dev/null @@ -1,37 +0,0 @@ -### 哈希表题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0705 | [设计哈希集合](https://leetcode.cn/problems/design-hashset/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0705.%20%E8%AE%BE%E8%AE%A1%E5%93%88%E5%B8%8C%E9%9B%86%E5%90%88.md) | 设计、数组、哈希表、链表、哈希函数 | 简单 | -| 0706 | [设计哈希映射](https://leetcode.cn/problems/design-hashmap/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0706.%20%E8%AE%BE%E8%AE%A1%E5%93%88%E5%B8%8C%E6%98%A0%E5%B0%84.md) | 设计、数组、哈希表、链表、哈希函数 | 简单 | -| 0217 | [存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0217.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md) | 数组、哈希表、排序 | 简单 | -| 0219 | [存在重复元素 II](https://leetcode.cn/problems/contains-duplicate-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0219.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20II.md) | 数组、哈希表、滑动窗口 | 简单 | -| 0220 | [存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0220.%20%E5%AD%98%E5%9C%A8%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0%20III.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | -| 1941 | [检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1941.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E6%89%80%E6%9C%89%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E6%AC%A1%E6%95%B0%E7%9B%B8%E5%90%8C.md) | 哈希表、字符串、计数 | 简单 | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | -| 0383 | [赎金信](https://leetcode.cn/problems/ransom-note/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0383.%20%E8%B5%8E%E9%87%91%E4%BF%A1.md) | 哈希表、字符串、计数 | 简单 | -| 0349 | [两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0349.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0350 | [两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0350.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E7%9A%84%E4%BA%A4%E9%9B%86%20II.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| 0036 | [有效的数独](https://leetcode.cn/problems/valid-sudoku/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0036.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%95%B0%E7%8B%AC.md) | 数组、哈希表、矩阵 | 中等 | -| 0001 | [两数之和](https://leetcode.cn/problems/two-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0001.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、哈希表 | 简单 | -| 0015 | [三数之和](https://leetcode.cn/problems/3sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0015.%20%E4%B8%89%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0018 | [四数之和](https://leetcode.cn/problems/4sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0018.%20%E5%9B%9B%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、双指针、排序 | 中等 | -| 0454 | [四数相加 II](https://leetcode.cn/problems/4sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0454.%20%E5%9B%9B%E6%95%B0%E7%9B%B8%E5%8A%A0%20II.md) | 数组、哈希表 | 中等 | -| 0041 | [缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0041.%20%E7%BC%BA%E5%A4%B1%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E6%AD%A3%E6%95%B0.md) | 数组、哈希表 | 困难 | -| 0128 | [最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0128.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md) | 并查集、数组、哈希表 | 中等 | -| 0202 | [快乐数](https://leetcode.cn/problems/happy-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0202.%20%E5%BF%AB%E4%B9%90%E6%95%B0.md) | 哈希表、数学、双指针 | 简单 | -| 0242 | [有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0242.%20%E6%9C%89%E6%95%88%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.md) | 哈希表、字符串、排序 | 简单 | -| 0205 | [同构字符串](https://leetcode.cn/problems/isomorphic-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0205.%20%E5%90%8C%E6%9E%84%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 哈希表、字符串 | 简单 | -| 0442 | [数组中重复的数据](https://leetcode.cn/problems/find-all-duplicates-in-an-array/) | | 数组、哈希表 | 中等 | -| 剑指 Offer 61 | [扑克牌中的顺子](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2061.%20%E6%89%91%E5%85%8B%E7%89%8C%E4%B8%AD%E7%9A%84%E9%A1%BA%E5%AD%90.md) | 数组、排序 | 简单 | -| 0268 | [丢失的数字](https://leetcode.cn/problems/missing-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0268.%20%E4%B8%A2%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | -| 剑指 Offer 03 | [数组中重复的数字](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2003.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97.md) | 数组、哈希表、排序 | 简单 | -| 0451 | [根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0451.%20%E6%A0%B9%E6%8D%AE%E5%AD%97%E7%AC%A6%E5%87%BA%E7%8E%B0%E9%A2%91%E7%8E%87%E6%8E%92%E5%BA%8F.md) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | -| 0049 | [字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0049.%20%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E5%88%86%E7%BB%84.md) | 数组、哈希表、字符串、排序 | 中等 | -| 0599 | [两个列表的最小索引总和](https://leetcode.cn/problems/minimum-index-sum-of-two-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0599.%20%E4%B8%A4%E4%B8%AA%E5%88%97%E8%A1%A8%E7%9A%84%E6%9C%80%E5%B0%8F%E7%B4%A2%E5%BC%95%E6%80%BB%E5%92%8C.md) | 数组、哈希表、字符串 | 简单 | -| 0387 | [字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0387.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%94%AF%E4%B8%80%E5%AD%97%E7%AC%A6.md) | 队列、哈希表、字符串、计数 | 简单 | -| 0447 | [回旋镖的数量](https://leetcode.cn/problems/number-of-boomerangs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0447.%20%E5%9B%9E%E6%97%8B%E9%95%96%E7%9A%84%E6%95%B0%E9%87%8F.md) | 数组、哈希表、数学 | 中等 | -| 0149 | [直线上最多的点数](https://leetcode.cn/problems/max-points-on-a-line/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0149.%20%E7%9B%B4%E7%BA%BF%E4%B8%8A%E6%9C%80%E5%A4%9A%E7%9A%84%E7%82%B9%E6%95%B0.md) | 几何、数组、哈希表、数学 | 困难 | -| 0359 | [日志速率限制器](https://leetcode.cn/problems/logger-rate-limiter/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0359.%20%E6%97%A5%E5%BF%97%E9%80%9F%E7%8E%87%E9%99%90%E5%88%B6%E5%99%A8.md) | 设计、哈希表 | 简单 | -| 0811 | [子域名访问计数](https://leetcode.cn/problems/subdomain-visit-count/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0811.%20%E5%AD%90%E5%9F%9F%E5%90%8D%E8%AE%BF%E9%97%AE%E8%AE%A1%E6%95%B0.md) | 数组、哈希表、字符串、计数 | 中等 | - diff --git a/Contents/05.Hash-Table/index.md b/Contents/05.Hash-Table/index.md deleted file mode 100644 index 16278edc..00000000 --- a/Contents/05.Hash-Table/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [哈希表知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/05.Hash-Table/01.Hash-Table.md) -- [哈希表题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/05.Hash-Table/02.Hash-Table-List.md) \ No newline at end of file diff --git a/Contents/06.String/01.String-Basic/02.String-Basic-List.md b/Contents/06.String/01.String-Basic/02.String-Basic-List.md deleted file mode 100644 index 44679425..00000000 --- a/Contents/06.String/01.String-Basic/02.String-Basic-List.md +++ /dev/null @@ -1,15 +0,0 @@ -### 字符串基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0125 | [验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0125.%20%E9%AA%8C%E8%AF%81%E5%9B%9E%E6%96%87%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0005 | [最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0005.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 0003 | [无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0003.%20%E6%97%A0%E9%87%8D%E5%A4%8D%E5%AD%97%E7%AC%A6%E7%9A%84%E6%9C%80%E9%95%BF%E5%AD%90%E4%B8%B2.md) | 哈希表、字符串、滑动窗口 | 中等 | -| 0344 | [反转字符串](https://leetcode.cn/problems/reverse-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0344.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0557 | [反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0557.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D%20III.md) | 双指针、字符串 | 简单 | -| 0049 | [字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0049.%20%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D%E5%88%86%E7%BB%84.md) | 数组、哈希表、字符串、排序 | 中等 | -| 0415 | [字符串相加](https://leetcode.cn/problems/add-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0415.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%8A%A0.md) | 数学、字符串、模拟 | 简单 | -| 0151 | [反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0151.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D.md) | 双指针、字符串 | 中等 | -| 0043 | [字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0043.%20%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E4%B9%98.md) | 数学、字符串、模拟 | 中等 | -| 0014 | [最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0014.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%89%8D%E7%BC%80.md) | 字典树、字符串 | 简单 | - diff --git a/Contents/06.String/01.String-Basic/index.md b/Contents/06.String/01.String-Basic/index.md deleted file mode 100644 index 784ecfdf..00000000 --- a/Contents/06.String/01.String-Basic/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [字符串基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/01.String-Basic/01.String-Basic.md) -- [字符串经典题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/01.String-Basic/02.String-Basic-List.md) \ No newline at end of file diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/07.String-Single-Pattern-Matching-List.md b/Contents/06.String/02.String-Single-Pattern-Matching/07.String-Single-Pattern-Matching-List.md deleted file mode 100644 index 966cb4b5..00000000 --- a/Contents/06.String/02.String-Single-Pattern-Matching/07.String-Single-Pattern-Matching-List.md +++ /dev/null @@ -1,12 +0,0 @@ -### 单模式串匹配题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0028 | [找出字符串中第一个匹配项的下标](https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0028.%20%E6%89%BE%E5%87%BA%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%8C%B9%E9%85%8D%E9%A1%B9%E7%9A%84%E4%B8%8B%E6%A0%87.md) | 双指针、字符串、字符串匹配 | 中等 | -| 0459 | [重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0459.%20%E9%87%8D%E5%A4%8D%E7%9A%84%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 字符串、字符串匹配 | 简单 | -| 0686 | [重复叠加字符串匹配](https://leetcode.cn/problems/repeated-string-match/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0686.%20%E9%87%8D%E5%A4%8D%E5%8F%A0%E5%8A%A0%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D.md) | 字符串、字符串匹配 | 中等 | -| 1668 | [最大重复子字符串](https://leetcode.cn/problems/maximum-repeating-substring/) | | 字符串、字符串匹配 | 简单 | -| 0796 | [旋转字符串](https://leetcode.cn/problems/rotate-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0796.%20%E6%97%8B%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 字符串、字符串匹配 | 简单 | -| 1408 | [数组中的字符串匹配](https://leetcode.cn/problems/string-matching-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1408.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D.md) | 数组、字符串、字符串匹配 | 简单 | -| 2156 | [查找给定哈希值的子串](https://leetcode.cn/problems/find-substring-with-given-hash-value/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2156.%20%E6%9F%A5%E6%89%BE%E7%BB%99%E5%AE%9A%E5%93%88%E5%B8%8C%E5%80%BC%E7%9A%84%E5%AD%90%E4%B8%B2.md) | 字符串、滑动窗口、哈希函数、滚动哈希 | 困难 | - diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/index.md b/Contents/06.String/02.String-Single-Pattern-Matching/index.md deleted file mode 100644 index bc823dec..00000000 --- a/Contents/06.String/02.String-Single-Pattern-Matching/index.md +++ /dev/null @@ -1,9 +0,0 @@ -## 本章内容 - -- [Brute Force 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md) -- [Rabin Karp 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md) -- [KMP 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md) -- [Boyer Moore 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md) -- [Horspool 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md) -- [Sunday 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md) -- [单模式串匹配题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/07.String-Single-Pattern-Matching-List.md) \ No newline at end of file diff --git a/Contents/06.String/03.String-Multi-Pattern-Matching/02.Trie-List.md b/Contents/06.String/03.String-Multi-Pattern-Matching/02.Trie-List.md deleted file mode 100644 index 9cecd882..00000000 --- a/Contents/06.String/03.String-Multi-Pattern-Matching/02.Trie-List.md +++ /dev/null @@ -1,17 +0,0 @@ -### 字典树题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0208 | [实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0208.%20%E5%AE%9E%E7%8E%B0%20Trie%20%28%E5%89%8D%E7%BC%80%E6%A0%91%29.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 0677 | [键值映射](https://leetcode.cn/problems/map-sum-pairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0677.%20%E9%94%AE%E5%80%BC%E6%98%A0%E5%B0%84.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 0648 | [单词替换](https://leetcode.cn/problems/replace-words/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0648.%20%E5%8D%95%E8%AF%8D%E6%9B%BF%E6%8D%A2.md) | 字典树、数组、哈希表、字符串 | 中等 | -| 0642 | [设计搜索自动补全系统](https://leetcode.cn/problems/design-search-autocomplete-system/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0642.%20%E8%AE%BE%E8%AE%A1%E6%90%9C%E7%B4%A2%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8%E7%B3%BB%E7%BB%9F.md) | 设计、字典树、字符串、数据流 | 困难 | -| 0211 | [添加与搜索单词 - 数据结构设计](https://leetcode.cn/problems/design-add-and-search-words-data-structure/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0211.%20%E6%B7%BB%E5%8A%A0%E4%B8%8E%E6%90%9C%E7%B4%A2%E5%8D%95%E8%AF%8D%20-%20%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E8%AE%BE%E8%AE%A1.md) | 深度优先搜索、设计、字典树、字符串 | 中等 | -| 0421 | [数组中两个数的最大异或值](https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0421.%20%E6%95%B0%E7%BB%84%E4%B8%AD%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%9A%84%E6%9C%80%E5%A4%A7%E5%BC%82%E6%88%96%E5%80%BC.md) | 位运算、字典树、数组、哈希表 | 中等 | -| 0212 | [单词搜索 II](https://leetcode.cn/problems/word-search-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0212.%20%E5%8D%95%E8%AF%8D%E6%90%9C%E7%B4%A2%20II.md) | 字典树、数组、字符串、回溯、矩阵 | 困难 | -| 0425 | [单词方块](https://leetcode.cn/problems/word-squares/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0425.%20%E5%8D%95%E8%AF%8D%E6%96%B9%E5%9D%97.md) | 字典树、数组、字符串、回溯 | 困难 | -| 0336 | [回文对](https://leetcode.cn/problems/palindrome-pairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0336.%20%E5%9B%9E%E6%96%87%E5%AF%B9.md) | 字典树、数组、哈希表、字符串 | 困难 | -| 1023 | [驼峰式匹配](https://leetcode.cn/problems/camelcase-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1023.%20%E9%A9%BC%E5%B3%B0%E5%BC%8F%E5%8C%B9%E9%85%8D.md) | 字典树、双指针、字符串、字符串匹配 | 中等 | -| 0676 | [实现一个魔法字典](https://leetcode.cn/problems/implement-magic-dictionary/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0676.%20%E5%AE%9E%E7%8E%B0%E4%B8%80%E4%B8%AA%E9%AD%94%E6%B3%95%E5%AD%97%E5%85%B8.md) | 设计、字典树、哈希表、字符串 | 中等 | -| 0440 | [字典序的第K小数字](https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/) | | 字典树 | 困难 | - diff --git a/Contents/06.String/03.String-Multi-Pattern-Matching/index.md b/Contents/06.String/03.String-Multi-Pattern-Matching/index.md deleted file mode 100644 index 60064500..00000000 --- a/Contents/06.String/03.String-Multi-Pattern-Matching/index.md +++ /dev/null @@ -1,8 +0,0 @@ -## 本章内容 - -- [字典树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md) -- [字典树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/02.Trie-List.md) -- [AC 自动机知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/03.AC-Automaton.md) -- [AC 自动机题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/04.AC-Automaton-List.md) -- [后缀数组知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/05.Suffix-Array.md) -- [后缀数组题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md) \ No newline at end of file diff --git a/Contents/06.String/index.md b/Contents/06.String/index.md deleted file mode 100644 index d931547d..00000000 --- a/Contents/06.String/index.md +++ /dev/null @@ -1,25 +0,0 @@ -## 本章内容 - -### 字符串基础知识 - -- [字符串基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/01.String-Basic/01.String-Basic.md) -- [字符串经典题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/01.String-Basic/02.String-Basic-List.md) - -### 单模式串匹配 - -- [Brute Force 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md) -- [Rabin Karp 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md) -- [KMP 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md) -- [Boyer Moore 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md) -- [Horspool 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md) -- [Sunday 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md) -- [单模式串匹配题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/02.String-Single-Pattern-Matching/07.String-Single-Pattern-Matching-List.md) - -### 多模式串匹配 - -- [字典树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md) -- [字典树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/02.Trie-List.md) -- [AC 自动机知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/03.AC-Automaton.md) -- [AC 自动机题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/04.AC-Automaton-List.md) -- [后缀数组知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/05.Suffix-Array.md) -- [后缀数组题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md) \ No newline at end of file diff --git a/Contents/07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md b/Contents/07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md deleted file mode 100644 index a1bbc360..00000000 --- a/Contents/07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md +++ /dev/null @@ -1,27 +0,0 @@ -### 二叉树的遍历题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0144 | [二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0144.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0094 | [二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0094.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0145 | [二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0145.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0102 | [二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0102.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0103 | [二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0103.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%94%AF%E9%BD%BF%E5%BD%A2%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0107 | [二叉树的层序遍历 II](https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0107.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86%20II.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0104 | [二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0104.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0111 | [二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0111.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0101 | [对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0101.%20%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0112 | [路径总和](https://leetcode.cn/problems/path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0112.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0113 | [路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0113.%20%E8%B7%AF%E5%BE%84%E6%80%BB%E5%92%8C%20II.md) | 树、深度优先搜索、回溯、二叉树 | 中等 | -| 0236 | [二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0236.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0226 | [翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0226.%20%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0958 | [二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0958.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%8C%E5%85%A8%E6%80%A7%E6%A3%80%E9%AA%8C.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0572 | [另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| 0100 | [相同的树](https://leetcode.cn/problems/same-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0100.%20%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0116 | [填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0116.%20%E5%A1%AB%E5%85%85%E6%AF%8F%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%8F%B3%E4%BE%A7%E8%8A%82%E7%82%B9%E6%8C%87%E9%92%88.md) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | -| 0117 | [填充每个节点的下一个右侧节点指针 II](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0117.%20%E5%A1%AB%E5%85%85%E6%AF%8F%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%8F%B3%E4%BE%A7%E8%8A%82%E7%82%B9%E6%8C%87%E9%92%88%20II.md) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | -| 0297 | [二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0297.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96%E4%B8%8E%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96.md) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | -| 0114 | [二叉树展开为链表](https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/) | | 栈、树、深度优先搜索、链表、二叉树 | 中等 | - diff --git a/Contents/07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md b/Contents/07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md deleted file mode 100644 index fff819ec..00000000 --- a/Contents/07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md +++ /dev/null @@ -1,8 +0,0 @@ -### 二叉树的还原题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0105 | [从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0105.%20%E4%BB%8E%E5%89%8D%E5%BA%8F%E4%B8%8E%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | -| 0106 | [从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0106.%20%E4%BB%8E%E4%B8%AD%E5%BA%8F%E4%B8%8E%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | -| 0889 | [根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0889.%20%E6%A0%B9%E6%8D%AE%E5%89%8D%E5%BA%8F%E5%92%8C%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E6%9E%84%E9%80%A0%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、数组、哈希表、分治、二叉树 | 中等 | - diff --git a/Contents/07.Tree/01.Binary-Tree/index.md b/Contents/07.Tree/01.Binary-Tree/index.md deleted file mode 100644 index d962991b..00000000 --- a/Contents/07.Tree/01.Binary-Tree/index.md +++ /dev/null @@ -1,7 +0,0 @@ -## 本章内容 - -- [树与二叉树基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md) -- [二叉树的遍历知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md) -- [二叉树的遍历题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md) -- [二叉树的还原知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md) -- [二叉树的还原题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md) \ No newline at end of file diff --git a/Contents/07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md b/Contents/07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md deleted file mode 100644 index 6d06541d..00000000 --- a/Contents/07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md +++ /dev/null @@ -1,17 +0,0 @@ -### 二叉搜索树题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0098 | [验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0098.%20%E9%AA%8C%E8%AF%81%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0173 | [二叉搜索树迭代器](https://leetcode.cn/problems/binary-search-tree-iterator/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0173.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BF%AD%E4%BB%A3%E5%99%A8.md) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | -| 0700 | [二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0700.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E6%90%9C%E7%B4%A2.md) | 树、二叉搜索树、二叉树 | 简单 | -| 0701 | [二叉搜索树中的插入操作](https://leetcode.cn/problems/insert-into-a-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0701.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E6%8F%92%E5%85%A5%E6%93%8D%E4%BD%9C.md) | 树、二叉搜索树、二叉树 | 中等 | -| 0450 | [删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0450.%20%E5%88%A0%E9%99%A4%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md) | 树、二叉搜索树、二叉树 | 中等 | -| 0703 | [数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0703.%20%E6%95%B0%E6%8D%AE%E6%B5%81%E4%B8%AD%E7%9A%84%E7%AC%AC%20K%20%E5%A4%A7%E5%85%83%E7%B4%A0.md) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | -| 剑指 Offer 54 | [二叉搜索树的第k大节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2054.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E7%AC%ACk%E5%A4%A7%E8%8A%82%E7%82%B9.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| 0230 | [二叉搜索树中第K小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-bst/) | | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0235 | [二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0235.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91%E5%85%AC%E5%85%B1%E7%A5%96%E5%85%88.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| 0426 | [将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0426.%20%E5%B0%86%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E8%BD%AC%E5%8C%96%E4%B8%BA%E6%8E%92%E5%BA%8F%E7%9A%84%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | -| 0108 | [将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0108.%20%E5%B0%86%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E8%BD%AC%E6%8D%A2%E4%B8%BA%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | -| 0110 | [平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0110.%20%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、二叉树 | 简单 | - diff --git a/Contents/07.Tree/02.Binary-Search-Tree/index.md b/Contents/07.Tree/02.Binary-Search-Tree/index.md deleted file mode 100644 index 2f1c88f7..00000000 --- a/Contents/07.Tree/02.Binary-Search-Tree/index.md +++ /dev/null @@ -1,5 +0,0 @@ -## 本章内容 - -- [二叉搜索树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md) -- [二叉搜索树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md) - diff --git a/Contents/07.Tree/03.Segment-Tree/02.Segment-Tree-List.md b/Contents/07.Tree/03.Segment-Tree/02.Segment-Tree-List.md deleted file mode 100644 index a9a1dc92..00000000 --- a/Contents/07.Tree/03.Segment-Tree/02.Segment-Tree-List.md +++ /dev/null @@ -1,37 +0,0 @@ -### 线段树题目 - -#### 单点更新题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0303 | [区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0303.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E4%B8%8D%E5%8F%AF%E5%8F%98.md) | 设计、数组、前缀和 | 简单 | -| 0307 | [区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0307.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E5%8F%AF%E4%BF%AE%E6%94%B9.md) | 设计、树状数组、线段树、数组 | 中等 | -| 0354 | [俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0354.%20%E4%BF%84%E7%BD%97%E6%96%AF%E5%A5%97%E5%A8%83%E4%BF%A1%E5%B0%81%E9%97%AE%E9%A2%98.md) | 数组、二分查找、动态规划、排序 | 困难 | - -#### 区间更新题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0370 | [区间加法](https://leetcode.cn/problems/range-addition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0370.%20%E5%8C%BA%E9%97%B4%E5%8A%A0%E6%B3%95.md) | 数组、前缀和 | 中等 | -| 1109 | [航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1109.%20%E8%88%AA%E7%8F%AD%E9%A2%84%E8%AE%A2%E7%BB%9F%E8%AE%A1.md) | 数组、前缀和 | 中等 | -| 1450 | [在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1450.%20%E5%9C%A8%E6%97%A2%E5%AE%9A%E6%97%B6%E9%97%B4%E5%81%9A%E4%BD%9C%E4%B8%9A%E7%9A%84%E5%AD%A6%E7%94%9F%E4%BA%BA%E6%95%B0.md) | 数组 | 简单 | -| 0673 | [最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0673.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、动态规划 | 中等 | -| 1310 | [子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1310.%20%E5%AD%90%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%9F%A5%E8%AF%A2.md) | 位运算、数组、前缀和 | 中等 | -| 1851 | [包含每个查询的最小区间](https://leetcode.cn/problems/minimum-interval-to-include-each-query/) | | 数组、二分查找、排序、扫描线、堆(优先队列) | 困难 | - -#### 区间合并题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0729 | [我的日程安排表 I](https://leetcode.cn/problems/my-calendar-i/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0729.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20I.md) | 设计、线段树、二分查找、有序集合 | 中等 | -| 0731 | [我的日程安排表 II](https://leetcode.cn/problems/my-calendar-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0731.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20II.md) | 设计、线段树、二分查找、有序集合 | 中等 | -| 0732 | [我的日程安排表 III](https://leetcode.cn/problems/my-calendar-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0732.%20%E6%88%91%E7%9A%84%E6%97%A5%E7%A8%8B%E5%AE%89%E6%8E%92%E8%A1%A8%20III.md) | 设计、线段树、二分查找、有序集合 | 困难 | - -#### 扫描线问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0218 | [天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0218.%20%E5%A4%A9%E9%99%85%E7%BA%BF%E9%97%AE%E9%A2%98.md) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | -| 0391 | [完美矩形](https://leetcode.cn/problems/perfect-rectangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0391.%20%E5%AE%8C%E7%BE%8E%E7%9F%A9%E5%BD%A2.md) | 数组、扫描线 | 困难 | -| 0850 | [矩形面积 II](https://leetcode.cn/problems/rectangle-area-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0850.%20%E7%9F%A9%E5%BD%A2%E9%9D%A2%E7%A7%AF%20II.md) | 线段树、数组、有序集合、扫描线 | 困难 | - diff --git a/Contents/07.Tree/03.Segment-Tree/index.md b/Contents/07.Tree/03.Segment-Tree/index.md deleted file mode 100644 index c0fe57d3..00000000 --- a/Contents/07.Tree/03.Segment-Tree/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [线段树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md) -- [线段树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/03.Segment-Tree/02.Segment-Tree-List.md) \ No newline at end of file diff --git a/Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md b/Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md deleted file mode 100644 index 9e5d5a02..00000000 --- a/Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md +++ /dev/null @@ -1,13 +0,0 @@ -### 树状数组题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0303 | [区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0303.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E4%B8%8D%E5%8F%AF%E5%8F%98.md) | 设计、数组、前缀和 | 简单 | -| 0307 | [区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0307.%20%E5%8C%BA%E5%9F%9F%E5%92%8C%E6%A3%80%E7%B4%A2%20-%20%E6%95%B0%E7%BB%84%E5%8F%AF%E4%BF%AE%E6%94%B9.md) | 设计、树状数组、线段树、数组 | 中等 | -| 0315 | [计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0315.%20%E8%AE%A1%E7%AE%97%E5%8F%B3%E4%BE%A7%E5%B0%8F%E4%BA%8E%E5%BD%93%E5%89%8D%E5%85%83%E7%B4%A0%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | -| 1450 | [在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1450.%20%E5%9C%A8%E6%97%A2%E5%AE%9A%E6%97%B6%E9%97%B4%E5%81%9A%E4%BD%9C%E4%B8%9A%E7%9A%84%E5%AD%A6%E7%94%9F%E4%BA%BA%E6%95%B0.md) | 数组 | 简单 | -| 0354 | [俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0354.%20%E4%BF%84%E7%BD%97%E6%96%AF%E5%A5%97%E5%A8%83%E4%BF%A1%E5%B0%81%E9%97%AE%E9%A2%98.md) | 数组、二分查找、动态规划、排序 | 困难 | -| 0673 | [最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0673.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、动态规划 | 中等 | -| 1310 | [子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1310.%20%E5%AD%90%E6%95%B0%E7%BB%84%E5%BC%82%E6%88%96%E6%9F%A5%E8%AF%A2.md) | 位运算、数组、前缀和 | 中等 | -| 1893 | [检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1893.%20%E6%A3%80%E6%9F%A5%E6%98%AF%E5%90%A6%E5%8C%BA%E5%9F%9F%E5%86%85%E6%89%80%E6%9C%89%E6%95%B4%E6%95%B0%E9%83%BD%E8%A2%AB%E8%A6%86%E7%9B%96.md) | 数组、哈希表、前缀和 | 简单 | - diff --git a/Contents/07.Tree/04.Binary-Indexed-Tree/index.md b/Contents/07.Tree/04.Binary-Indexed-Tree/index.md deleted file mode 100644 index f80203d7..00000000 --- a/Contents/07.Tree/04.Binary-Indexed-Tree/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [树状数组知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/04.Binary-Indexed-Tree/01.Binary-Indexed-Tree.md) -- [树状数组题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md) \ No newline at end of file diff --git a/Contents/07.Tree/05.Union-Find/02.Union-Find-List.md b/Contents/07.Tree/05.Union-Find/02.Union-Find-List.md deleted file mode 100644 index 0d2d1b75..00000000 --- a/Contents/07.Tree/05.Union-Find/02.Union-Find-List.md +++ /dev/null @@ -1,18 +0,0 @@ -### 并查集题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0990 | [等式方程的可满足性](https://leetcode.cn/problems/satisfiability-of-equality-equations/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0990.%20%E7%AD%89%E5%BC%8F%E6%96%B9%E7%A8%8B%E7%9A%84%E5%8F%AF%E6%BB%A1%E8%B6%B3%E6%80%A7.md) | 并查集、图、数组、字符串 | 中等 | -| 0547 | [省份数量](https://leetcode.cn/problems/number-of-provinces/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0547.%20%E7%9C%81%E4%BB%BD%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0684 | [冗余连接](https://leetcode.cn/problems/redundant-connection/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0684.%20%E5%86%97%E4%BD%99%E8%BF%9E%E6%8E%A5.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 1319 | [连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1319.%20%E8%BF%9E%E9%80%9A%E7%BD%91%E7%BB%9C%E7%9A%84%E6%93%8D%E4%BD%9C%E6%AC%A1%E6%95%B0.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0765 | [情侣牵手](https://leetcode.cn/problems/couples-holding-hands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0765.%20%E6%83%85%E4%BE%A3%E7%89%B5%E6%89%8B.md) | 贪心、深度优先搜索、广度优先搜索、并查集、图 | 困难 | -| 0399 | [除法求值](https://leetcode.cn/problems/evaluate-division/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0399.%20%E9%99%A4%E6%B3%95%E6%B1%82%E5%80%BC.md) | 深度优先搜索、广度优先搜索、并查集、图、数组、最短路 | 中等 | -| 0959 | [由斜杠划分区域](https://leetcode.cn/problems/regions-cut-by-slashes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0959.%20%E7%94%B1%E6%96%9C%E6%9D%A0%E5%88%92%E5%88%86%E5%8C%BA%E5%9F%9F.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | -| 0778 | [水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0778.%20%E6%B0%B4%E4%BD%8D%E4%B8%8A%E5%8D%87%E7%9A%84%E6%B3%B3%E6%B1%A0%E4%B8%AD%E6%B8%B8%E6%B3%B3.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | -| 1202 | [交换字符串中的元素](https://leetcode.cn/problems/smallest-string-with-swaps/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1202.%20%E4%BA%A4%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E5%85%83%E7%B4%A0.md) | 深度优先搜索、广度优先搜索、并查集、哈希表、字符串 | 中等 | -| 0947 | [移除最多的同行或同列石头](https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0947.%20%E7%A7%BB%E9%99%A4%E6%9C%80%E5%A4%9A%E7%9A%84%E5%90%8C%E8%A1%8C%E6%88%96%E5%90%8C%E5%88%97%E7%9F%B3%E5%A4%B4.md) | 深度优先搜索、并查集、图 | 中等 | -| 0803 | [打砖块](https://leetcode.cn/problems/bricks-falling-when-hit/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0803.%20%E6%89%93%E7%A0%96%E5%9D%97.md) | 并查集、数组、矩阵 | 困难 | -| 0128 | [最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0128.%20%E6%9C%80%E9%95%BF%E8%BF%9E%E7%BB%AD%E5%BA%8F%E5%88%97.md) | 并查集、数组、哈希表 | 中等 | - diff --git a/Contents/07.Tree/05.Union-Find/index.md b/Contents/07.Tree/05.Union-Find/index.md deleted file mode 100644 index 9eba76ed..00000000 --- a/Contents/07.Tree/05.Union-Find/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [并查集知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/05.Union-Find/01.Union-Find.md) -- [并查集题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/05.Union-Find/02.Union-Find-List.md) \ No newline at end of file diff --git a/Contents/07.Tree/index.md b/Contents/07.Tree/index.md deleted file mode 100644 index ae371747..00000000 --- a/Contents/07.Tree/index.md +++ /dev/null @@ -1,29 +0,0 @@ -## 本章内容 - -### 二叉树 - -- [树与二叉树基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md) -- [二叉树的遍历知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md) -- [二叉树的遍历题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md) -- [二叉树的还原知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md) -- [二叉树的还原题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md) - -### 二叉搜索树 - -- [二叉搜索树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md) -- [二叉搜索树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md) - -### 线段树 - -- [线段树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md) -- [线段树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/03.Segment-Tree/02.Segment-Tree-List.md) - -### 树状数组 - -- [树状数组知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/04.Binary-Indexed-Tree/01.Binary-Indexed-Tree.md) -- [树状数组题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md) - -### 并查集 - -- [并查集知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/05.Union-Find/01.Union-Find.md) -- [并查集题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/07.Tree/05.Union-Find/02.Union-Find-List.md) \ No newline at end of file diff --git a/Contents/08.Graph/01.Graph-Basic/index.md b/Contents/08.Graph/01.Graph-Basic/index.md deleted file mode 100644 index 03b14c94..00000000 --- a/Contents/08.Graph/01.Graph-Basic/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [图的定义和分类](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md) -- [图的存储结构和问题应用](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md) \ No newline at end of file diff --git a/Contents/08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md b/Contents/08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md deleted file mode 100644 index 32734567..00000000 --- a/Contents/08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md +++ /dev/null @@ -1,38 +0,0 @@ -### 图的深度优先搜索题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0797 | [所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0797.%20%E6%89%80%E6%9C%89%E5%8F%AF%E8%83%BD%E7%9A%84%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | -| 0200 | [岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0200.%20%E5%B2%9B%E5%B1%BF%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0695 | [岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0695.%20%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%9C%80%E5%A4%A7%E9%9D%A2%E7%A7%AF.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0133 | [克隆图](https://leetcode.cn/problems/clone-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0133.%20%E5%85%8B%E9%9A%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | -| 0494 | [目标和](https://leetcode.cn/problems/target-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0494.%20%E7%9B%AE%E6%A0%87%E5%92%8C.md) | 数组、动态规划、回溯 | 中等 | -| 0144 | [二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0144.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0094 | [二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0094.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0145 | [二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0145.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索、二叉树 | 简单 | -| 0589 | [N 叉树的前序遍历](https://leetcode.cn/problems/n-ary-tree-preorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0589.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索 | 简单 | -| 0590 | [N 叉树的后序遍历](https://leetcode.cn/problems/n-ary-tree-postorder-traversal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0590.%20N%20%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md) | 栈、树、深度优先搜索 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0543 | [二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0543.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md) | 树、深度优先搜索、二叉树 | 简单 | -| 0662 | [二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0662.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%A4%A7%E5%AE%BD%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0958 | [二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0958.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%8C%E5%85%A8%E6%80%A7%E6%A3%80%E9%AA%8C.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0572 | [另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| 0100 | [相同的树](https://leetcode.cn/problems/same-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0100.%20%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0111 | [二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0111.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0841 | [钥匙和房间](https://leetcode.cn/problems/keys-and-rooms/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0841.%20%E9%92%A5%E5%8C%99%E5%92%8C%E6%88%BF%E9%97%B4.md) | 深度优先搜索、广度优先搜索、图 | 中等 | -| 0129 | [求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0129.%20%E6%B1%82%E6%A0%B9%E8%8A%82%E7%82%B9%E5%88%B0%E5%8F%B6%E8%8A%82%E7%82%B9%E6%95%B0%E5%AD%97%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0323 | [无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0323.%20%E6%97%A0%E5%90%91%E5%9B%BE%E4%B8%AD%E8%BF%9E%E9%80%9A%E5%88%86%E9%87%8F%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0684 | [冗余连接](https://leetcode.cn/problems/redundant-connection/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0684.%20%E5%86%97%E4%BD%99%E8%BF%9E%E6%8E%A5.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0802 | [找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0802.%20%E6%89%BE%E5%88%B0%E6%9C%80%E7%BB%88%E7%9A%84%E5%AE%89%E5%85%A8%E7%8A%B6%E6%80%81.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0785 | [判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0785.%20%E5%88%A4%E6%96%AD%E4%BA%8C%E5%88%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0886 | [可能的二分法](https://leetcode.cn/problems/possible-bipartition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0886.%20%E5%8F%AF%E8%83%BD%E7%9A%84%E4%BA%8C%E5%88%86%E6%B3%95.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0323 | [无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0323.%20%E6%97%A0%E5%90%91%E5%9B%BE%E4%B8%AD%E8%BF%9E%E9%80%9A%E5%88%86%E9%87%8F%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 0130 | [被围绕的区域](https://leetcode.cn/problems/surrounded-regions/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0130.%20%E8%A2%AB%E5%9B%B4%E7%BB%95%E7%9A%84%E5%8C%BA%E5%9F%9F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0417 | [太平洋大西洋水流问题](https://leetcode.cn/problems/pacific-atlantic-water-flow/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0417.%20%E5%A4%AA%E5%B9%B3%E6%B4%8B%E5%A4%A7%E8%A5%BF%E6%B4%8B%E6%B0%B4%E6%B5%81%E9%97%AE%E9%A2%98.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | -| 1020 | [飞地的数量](https://leetcode.cn/problems/number-of-enclaves/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1020.%20%E9%A3%9E%E5%9C%B0%E7%9A%84%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 1254 | [统计封闭岛屿的数目](https://leetcode.cn/problems/number-of-closed-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1254.%20%E7%BB%9F%E8%AE%A1%E5%B0%81%E9%97%AD%E5%B2%9B%E5%B1%BF%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 1034 | [边界着色](https://leetcode.cn/problems/coloring-a-border/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1034.%20%E8%BE%B9%E7%95%8C%E7%9D%80%E8%89%B2.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | -| 剑指 Offer 13 | [机器人的运动范围](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2013.%20%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%9A%84%E8%BF%90%E5%8A%A8%E8%8C%83%E5%9B%B4.md) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | -| 0529 | [扫雷游戏](https://leetcode.cn/problems/minesweeper/) | | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | - diff --git a/Contents/08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md b/Contents/08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md deleted file mode 100644 index 388f15cd..00000000 --- a/Contents/08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md +++ /dev/null @@ -1,23 +0,0 @@ -### 图的广度优先搜索题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0797 | [所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0797.%20%E6%89%80%E6%9C%89%E5%8F%AF%E8%83%BD%E7%9A%84%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | -| 0286 | [墙与门](https://leetcode.cn/problems/walls-and-gates/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0286.%20%E5%A2%99%E4%B8%8E%E9%97%A8.md) | 广度优先搜索、数组、矩阵 | 中等 | -| 0200 | [岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0200.%20%E5%B2%9B%E5%B1%BF%E6%95%B0%E9%87%8F.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| 0752 | [打开转盘锁](https://leetcode.cn/problems/open-the-lock/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0752.%20%E6%89%93%E5%BC%80%E8%BD%AC%E7%9B%98%E9%94%81.md) | 广度优先搜索、数组、哈希表、字符串 | 中等 | -| 0279 | [完全平方数](https://leetcode.cn/problems/perfect-squares/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0279.%20%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md) | 广度优先搜索、数学、动态规划 | 中等 | -| 0133 | [克隆图](https://leetcode.cn/problems/clone-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0133.%20%E5%85%8B%E9%9A%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | -| 0733 | [图像渲染](https://leetcode.cn/problems/flood-fill/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0733.%20%E5%9B%BE%E5%83%8F%E6%B8%B2%E6%9F%93.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | -| 0542 | [01 矩阵](https://leetcode.cn/problems/01-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0542.%2001%20%E7%9F%A9%E9%98%B5.md) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | -| 0322 | [零钱兑换](https://leetcode.cn/problems/coin-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0322.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.md) | 广度优先搜索、数组、动态规划 | 中等 | -| 0323 | [无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0323.%20%E6%97%A0%E5%90%91%E5%9B%BE%E4%B8%AD%E8%BF%9E%E9%80%9A%E5%88%86%E9%87%8F%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| 剑指 Offer 13 | [机器人的运动范围](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2013.%20%E6%9C%BA%E5%99%A8%E4%BA%BA%E7%9A%84%E8%BF%90%E5%8A%A8%E8%8C%83%E5%9B%B4.md) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | -| 0199 | [二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0199.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%8F%B3%E8%A7%86%E5%9B%BE.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0662 | [二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0662.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E6%9C%80%E5%A4%A7%E5%AE%BD%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| 0958 | [二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0958.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%AE%8C%E5%85%A8%E6%80%A7%E6%A3%80%E9%AA%8C.md) | 树、广度优先搜索、二叉树 | 中等 | -| 0572 | [另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| 0100 | [相同的树](https://leetcode.cn/problems/same-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0100.%20%E7%9B%B8%E5%90%8C%E7%9A%84%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0111 | [二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0111.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 剑指 Offer 32 - III | [从上到下打印二叉树 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2032%20-%20III.%20%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91%20III.md) | 树、广度优先搜索、二叉树 | 中等 | - diff --git a/Contents/08.Graph/02.Graph-Traversal/06.Graph-Topological-Sorting-List.md b/Contents/08.Graph/02.Graph-Traversal/06.Graph-Topological-Sorting-List.md deleted file mode 100644 index ff061023..00000000 --- a/Contents/08.Graph/02.Graph-Traversal/06.Graph-Topological-Sorting-List.md +++ /dev/null @@ -1,11 +0,0 @@ -### 图的拓扑排序题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0207 | [课程表](https://leetcode.cn/problems/course-schedule/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0207.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0210 | [课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0210.%20%E8%AF%BE%E7%A8%8B%E8%A1%A8%20II.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 1136 | [并行课程](https://leetcode.cn/problems/parallel-courses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1136.%20%E5%B9%B6%E8%A1%8C%E8%AF%BE%E7%A8%8B.md) | 图、拓扑排序 | 中等 | -| 2050 | [并行课程 III](https://leetcode.cn/problems/parallel-courses-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2050.%20%E5%B9%B6%E8%A1%8C%E8%AF%BE%E7%A8%8B%20III.md) | 图、拓扑排序、数组、动态规划 | 困难 | -| 0802 | [找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0802.%20%E6%89%BE%E5%88%B0%E6%9C%80%E7%BB%88%E7%9A%84%E5%AE%89%E5%85%A8%E7%8A%B6%E6%80%81.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0851 | [喧闹和富有](https://leetcode.cn/problems/loud-and-rich/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0851.%20%E5%96%A7%E9%97%B9%E5%92%8C%E5%AF%8C%E6%9C%89.md) | 深度优先搜索、图、拓扑排序、数组 | 中等 | - diff --git a/Contents/08.Graph/02.Graph-Traversal/index.md b/Contents/08.Graph/02.Graph-Traversal/index.md deleted file mode 100644 index c404d4b6..00000000 --- a/Contents/08.Graph/02.Graph-Traversal/index.md +++ /dev/null @@ -1,8 +0,0 @@ -## 本章内容 - -- [图的深度优先搜索知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/01.Graph-DFS.md) -- [图的深度优先搜索题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md) -- [图的广度优先搜索知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/03.Graph-BFS.md) -- [图的广度优先搜索题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md) -- [图的拓扑排序知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md) -- [图的拓扑排序题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/06.Graph-Topological-Sorting-List.md) \ No newline at end of file diff --git a/Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md b/Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md deleted file mode 100644 index 0631b0aa..00000000 --- a/Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md +++ /dev/null @@ -1,8 +0,0 @@ -### 图的最小生成树题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1584 | [连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1584.%20%E8%BF%9E%E6%8E%A5%E6%89%80%E6%9C%89%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E8%B4%B9%E7%94%A8.md) | 并查集、图、数组、最小生成树 | 中等 | -| 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | -| 0778 | [水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0778.%20%E6%B0%B4%E4%BD%8D%E4%B8%8A%E5%8D%87%E7%9A%84%E6%B3%B3%E6%B1%A0%E4%B8%AD%E6%B8%B8%E6%B3%B3.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | - diff --git a/Contents/08.Graph/03.Graph-Spanning-Tree/index.md b/Contents/08.Graph/03.Graph-Spanning-Tree/index.md deleted file mode 100644 index 7de35b34..00000000 --- a/Contents/08.Graph/03.Graph-Spanning-Tree/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [图的最小生成树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md) -- [图的最小生成树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md) \ No newline at end of file diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/03.Graph-Single-Source-Shortest-Path-List.md b/Contents/08.Graph/04.Graph-Shortest-Path/03.Graph-Single-Source-Shortest-Path-List.md deleted file mode 100644 index 686c2ea2..00000000 --- a/Contents/08.Graph/04.Graph-Shortest-Path/03.Graph-Single-Source-Shortest-Path-List.md +++ /dev/null @@ -1,10 +0,0 @@ -### 单源最短路径题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0407 | [接雨水 II](https://leetcode.cn/problems/trapping-rain-water-ii/) | | 广度优先搜索、数组、矩阵、堆(优先队列) | 困难 | -| 0743 | [网络延迟时间](https://leetcode.cn/problems/network-delay-time/) | | 深度优先搜索、广度优先搜索、图、最短路、堆(优先队列) | 中等 | -| 0787 | [K 站中转内最便宜的航班](https://leetcode.cn/problems/cheapest-flights-within-k-stops/) | | 深度优先搜索、广度优先搜索、图、动态规划、最短路、堆(优先队列) | 中等 | -| 1631 | [最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1631.%20%E6%9C%80%E5%B0%8F%E4%BD%93%E5%8A%9B%E6%B6%88%E8%80%97%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | -| 1786 | [从第一个节点出发到最后一个节点的受限路径数](https://leetcode.cn/problems/number-of-restricted-paths-from-first-to-last-node/) | | 图、拓扑排序、动态规划、最短路、堆(优先队列) | 中等 | - diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/05.Graph-Multi-Source-Shortest-Path-List.md b/Contents/08.Graph/04.Graph-Shortest-Path/05.Graph-Multi-Source-Shortest-Path-List.md deleted file mode 100644 index 7a66c8e1..00000000 --- a/Contents/08.Graph/04.Graph-Shortest-Path/05.Graph-Multi-Source-Shortest-Path-List.md +++ /dev/null @@ -1,7 +0,0 @@ -### 多源最短路径题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0815 | [公交路线](https://leetcode.cn/problems/bus-routes/) | | 广度优先搜索、数组、哈希表 | 困难 | -| 1162 | [地图分析](https://leetcode.cn/problems/as-far-from-land-as-possible/) | | 广度优先搜索、数组、动态规划、矩阵 | 中等 | - diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/07.Graph-The-Second-Shortest-Path-List.md b/Contents/08.Graph/04.Graph-Shortest-Path/07.Graph-The-Second-Shortest-Path-List.md deleted file mode 100644 index b174a222..00000000 --- a/Contents/08.Graph/04.Graph-Shortest-Path/07.Graph-The-Second-Shortest-Path-List.md +++ /dev/null @@ -1,6 +0,0 @@ -### 次短路径题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 2045 | [到达目的地的第二短时间](https://leetcode.cn/problems/second-minimum-time-to-reach-destination/) | | 广度优先搜索、图、最短路 | 困难 | - diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/09.Graph-System-Of-Difference-Constraints-List.md b/Contents/08.Graph/04.Graph-Shortest-Path/09.Graph-System-Of-Difference-Constraints-List.md deleted file mode 100644 index a0ad57fa..00000000 --- a/Contents/08.Graph/04.Graph-Shortest-Path/09.Graph-System-Of-Difference-Constraints-List.md +++ /dev/null @@ -1,7 +0,0 @@ -### 差分约束系统 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0995 | [K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0995.%20K%20%E8%BF%9E%E7%BB%AD%E4%BD%8D%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BF%BB%E8%BD%AC%E6%AC%A1%E6%95%B0.md) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | -| 1109 | [航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1109.%20%E8%88%AA%E7%8F%AD%E9%A2%84%E8%AE%A2%E7%BB%9F%E8%AE%A1.md) | 数组、前缀和 | 中等 | - diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/index.md b/Contents/08.Graph/04.Graph-Shortest-Path/index.md deleted file mode 100644 index ed11ed6b..00000000 --- a/Contents/08.Graph/04.Graph-Shortest-Path/index.md +++ /dev/null @@ -1,11 +0,0 @@ -## 本章内容 - -- [单源最短路径知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md) -- [单源最短路径知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md) -- [单源最短路径题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/03.Graph-Single-Source-Shortest-Path-List.md) -- [多源最短路径知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md) -- [多源最短路径题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/05.Graph-Multi-Source-Shortest-Path-List.md) -- [次短路径知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md) -- [次短路径题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/07.Graph-The-Second-Shortest-Path-List.md) -- [差分约束系统知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md) -- [差分约束系统题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/09.Graph-System-Of-Difference-Constraints-List.md) \ No newline at end of file diff --git a/Contents/08.Graph/05.Graph-Bipartite/02.Graph-Bipartite-Basic-List.md b/Contents/08.Graph/05.Graph-Bipartite/02.Graph-Bipartite-Basic-List.md deleted file mode 100644 index 2dae199f..00000000 --- a/Contents/08.Graph/05.Graph-Bipartite/02.Graph-Bipartite-Basic-List.md +++ /dev/null @@ -1,6 +0,0 @@ -### 二分图基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0785 | [判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0785.%20%E5%88%A4%E6%96%AD%E4%BA%8C%E5%88%86%E5%9B%BE.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | - diff --git a/Contents/08.Graph/05.Graph-Bipartite/04.Graph-Hungarian-Algorithm.md b/Contents/08.Graph/05.Graph-Bipartite/04.Graph-Hungarian-Algorithm.md deleted file mode 100644 index e69de29b..00000000 diff --git a/Contents/08.Graph/05.Graph-Bipartite/05.Graph-Hopcroft-Karp.md b/Contents/08.Graph/05.Graph-Bipartite/05.Graph-Hopcroft-Karp.md deleted file mode 100644 index e69de29b..00000000 diff --git a/Contents/08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md b/Contents/08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md deleted file mode 100644 index 2b0a9816..00000000 --- a/Contents/08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md +++ /dev/null @@ -1,8 +0,0 @@ -### 二分图最大匹配题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| LCP 04 | [覆盖](https://leetcode.cn/problems/broken-board-dominoes/) | | 位运算、图、数组、动态规划、状态压缩 | 困难 | -| 1947 | [最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1947.%20%E6%9C%80%E5%A4%A7%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%84%E5%88%86%E5%92%8C.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 1595 | [连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1595.%20%E8%BF%9E%E9%80%9A%E4%B8%A4%E7%BB%84%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | - diff --git a/Contents/08.Graph/05.Graph-Bipartite/index.md b/Contents/08.Graph/05.Graph-Bipartite/index.md deleted file mode 100644 index 0cebef1e..00000000 --- a/Contents/08.Graph/05.Graph-Bipartite/index.md +++ /dev/null @@ -1,8 +0,0 @@ -## 本章内容 - -- [二分图基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md) -- [二分图基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/02.Graph-Bipartite-Basic-List.md) -- [二分图最大匹配知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md) -- [匈牙利算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/04.Graph-Hungarian-Algorithm.md) -- [Hopcroft-Karp 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/05.Graph-Hopcroft-Karp.md) -- [二分图最大匹配题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md) \ No newline at end of file diff --git a/Contents/08.Graph/index.md b/Contents/08.Graph/index.md deleted file mode 100644 index 96dff5e7..00000000 --- a/Contents/08.Graph/index.md +++ /dev/null @@ -1,41 +0,0 @@ -## 本章内容 - -### 图的基础知识 - -- [图的定义和分类](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md) -- [图的存储结构和问题应用](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md) - -### 图的遍历 - -- [图的深度优先搜索知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/01.Graph-DFS.md) -- [图的深度优先搜索题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md) -- [图的广度优先搜索知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/03.Graph-BFS.md) -- [图的广度优先搜索题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md) -- [图的拓扑排序知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md) -- [图的拓扑排序题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/02.Graph-Traversal/06.Graph-Topological-Sorting-List.md) - -### 图的生成树 - -- [图的最小生成树知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md) -- [图的最小生成树题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md) - -### 最短路径 - -- [单源最短路径知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md) -- [单源最短路径知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md) -- [单源最短路径题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/03.Graph-Single-Source-Shortest-Path-List.md) -- [多源最短路径知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md) -- [多源最短路径题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/05.Graph-Multi-Source-Shortest-Path-List.md) -- [次短路径知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md) -- [次短路径题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/07.Graph-The-Second-Shortest-Path-List.md) -- [差分约束系统知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md) -- [差分约束系统题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/04.Graph-Shortest-Path/09.Graph-System-Of-Difference-Constraints-List.md) - -### 二分图 - -- [二分图基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md) -- [二分图基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/02.Graph-Bipartite-Basic-List.md) -- [二分图最大匹配知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md) -- [匈牙利算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/04.Graph-Hungarian-Algorithm.md) -- [Hopcroft-Karp 算法](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/05.Graph-Hopcroft-Karp.md) -- [二分图最大匹配题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md) \ No newline at end of file diff --git a/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md b/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md deleted file mode 100644 index ab965a29..00000000 --- a/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md +++ /dev/null @@ -1,14 +0,0 @@ -### 枚举算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0001 | [两数之和](https://leetcode.cn/problems/two-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0001.%20%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 数组、哈希表 | 简单 | -| 0204 | [计数质数](https://leetcode.cn/problems/count-primes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0204.%20%E8%AE%A1%E6%95%B0%E8%B4%A8%E6%95%B0.md) | 数组、数学、枚举、数论 | 中等 | -| 1925 | [统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1925.%20%E7%BB%9F%E8%AE%A1%E5%B9%B3%E6%96%B9%E5%92%8C%E4%B8%89%E5%85%83%E7%BB%84%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 数学、枚举 | 简单 | -| 1450 | [在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1450.%20%E5%9C%A8%E6%97%A2%E5%AE%9A%E6%97%B6%E9%97%B4%E5%81%9A%E4%BD%9C%E4%B8%9A%E7%9A%84%E5%AD%A6%E7%94%9F%E4%BA%BA%E6%95%B0.md) | 数组 | 简单 | -| 1620 | [网络信号最好的坐标](https://leetcode.cn/problems/coordinate-with-maximum-network-quality/) | | 数组、枚举 | 中等 | -| 剑指 Offer 57 - II | [和为s的连续正数序列](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2057%20-%20II.%20%E5%92%8C%E4%B8%BAs%E7%9A%84%E8%BF%9E%E7%BB%AD%E6%AD%A3%E6%95%B0%E5%BA%8F%E5%88%97.md) | 数学、双指针、枚举 | 简单 | -| 0800 | [相似 RGB 颜色](https://leetcode.cn/problems/similar-rgb-color/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0800.%20%E7%9B%B8%E4%BC%BC%20RGB%20%E9%A2%9C%E8%89%B2.md) | 数学、字符串、枚举 | 简单 | -| 0221 | [最大正方形](https://leetcode.cn/problems/maximal-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0221.%20%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 数组、动态规划、矩阵 | 中等 | -| 0560 | [和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0560.%20%E5%92%8C%E4%B8%BA%20K%20%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、哈希表、前缀和 | 中等 | - diff --git a/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/index.md b/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/index.md deleted file mode 100644 index a6650a96..00000000 --- a/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [枚举算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md) -- [枚举算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md) \ No newline at end of file diff --git a/Contents/09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md b/Contents/09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md deleted file mode 100644 index 6aa36c26..00000000 --- a/Contents/09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md +++ /dev/null @@ -1,21 +0,0 @@ -### 递归算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0344 | [反转字符串](https://leetcode.cn/problems/reverse-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0344.%20%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 双指针、字符串 | 简单 | -| 0024 | [两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0024.%20%E4%B8%A4%E4%B8%A4%E4%BA%A4%E6%8D%A2%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9.md) | 递归、链表 | 中等 | -| 0118 | [杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0118.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92.md) | 数组、动态规划 | 简单 | -| 0119 | [杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0119.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%20II.md) | 数组、动态规划 | 简单 | -| 0206 | [反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0206.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0092 | [反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0092.%20%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8%20II.md) | 链表 | 中等 | -| 0021 | [合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0021.%20%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%9C%89%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 递归、链表 | 简单 | -| 0509 | [斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0509.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| 0070 | [爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0104 | [二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0104.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 0226 | [翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0226.%20%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| 0050 | [Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0050.%20Pow%28x%2C%20n%29.md) | 递归、数学 | 中等 | -| 0779 | [第K个语法符号](https://leetcode.cn/problems/k-th-symbol-in-grammar/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0779.%20%E7%AC%ACK%E4%B8%AA%E8%AF%AD%E6%B3%95%E7%AC%A6%E5%8F%B7.md) | 位运算、递归、数学 | 中等 | -| 0095 | [不同的二叉搜索树 II](https://leetcode.cn/problems/unique-binary-search-trees-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0095.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%20II.md) | 树、二叉搜索树、动态规划、回溯、二叉树 | 中等 | -| 剑指 Offer 62 | [圆圈中最后剩下的数字](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2062.%20%E5%9C%86%E5%9C%88%E4%B8%AD%E6%9C%80%E5%90%8E%E5%89%A9%E4%B8%8B%E7%9A%84%E6%95%B0%E5%AD%97.md) | 递归、数学 | 简单 | - diff --git a/Contents/09.Algorithm-Base/02.Recursive-Algorithm/index.md b/Contents/09.Algorithm-Base/02.Recursive-Algorithm/index.md deleted file mode 100644 index 3500d867..00000000 --- a/Contents/09.Algorithm-Base/02.Recursive-Algorithm/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [递归算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md) -- [递归算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md) \ No newline at end of file diff --git a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md b/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md deleted file mode 100644 index 2c383b83..00000000 --- a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md +++ /dev/null @@ -1,13 +0,0 @@ -### 分治算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0004 | [寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0004.%20%E5%AF%BB%E6%89%BE%E4%B8%A4%E4%B8%AA%E6%AD%A3%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E4%B8%AD%E4%BD%8D%E6%95%B0.md) | 数组、二分查找、分治 | 困难 | -| 0023 | [合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0023.%20%E5%90%88%E5%B9%B6%20K%20%E4%B8%AA%E5%8D%87%E5%BA%8F%E9%93%BE%E8%A1%A8.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| 0053 | [最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、分治、动态规划 | 中等 | -| 0241 | [为运算表达式设计优先级](https://leetcode.cn/problems/different-ways-to-add-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0241.%20%E4%B8%BA%E8%BF%90%E7%AE%97%E8%A1%A8%E8%BE%BE%E5%BC%8F%E8%AE%BE%E8%AE%A1%E4%BC%98%E5%85%88%E7%BA%A7.md) | 递归、记忆化搜索、数学、字符串、动态规划 | 中等 | -| 0169 | [多数元素](https://leetcode.cn/problems/majority-element/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0169.%20%E5%A4%9A%E6%95%B0%E5%85%83%E7%B4%A0.md) | 数组、哈希表、分治、计数、排序 | 简单 | -| 0050 | [Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0050.%20Pow%28x%2C%20n%29.md) | 递归、数学 | 中等 | -| 0014 | [最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0014.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%89%8D%E7%BC%80.md) | 字典树、字符串 | 简单 | -| 剑指 Offer 33 | [二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E5%89%91%E6%8C%87%20Offer%2033.%20%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%E5%BA%8F%E5%88%97.md) | 栈、树、二叉搜索树、递归、二叉树、单调栈 | 中等 | - diff --git a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/index.md b/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/index.md deleted file mode 100644 index 0cb593e7..00000000 --- a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [分治算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md) -- [分治算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md) \ No newline at end of file diff --git a/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md b/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md deleted file mode 100644 index 3446cfa9..00000000 --- a/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md +++ /dev/null @@ -1,21 +0,0 @@ -### 回溯算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0046 | [全排列](https://leetcode.cn/problems/permutations/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0046.%20%E5%85%A8%E6%8E%92%E5%88%97.md) | 数组、回溯 | 中等 | -| 0047 | [全排列 II](https://leetcode.cn/problems/permutations-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0047.%20%E5%85%A8%E6%8E%92%E5%88%97%20II.md) | 数组、回溯 | 中等 | -| 0037 | [解数独](https://leetcode.cn/problems/sudoku-solver/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0037.%20%E8%A7%A3%E6%95%B0%E7%8B%AC.md) | 数组、哈希表、回溯、矩阵 | 困难 | -| 0022 | [括号生成](https://leetcode.cn/problems/generate-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0022.%20%E6%8B%AC%E5%8F%B7%E7%94%9F%E6%88%90.md) | 字符串、动态规划、回溯 | 中等 | -| 0017 | [电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0017.%20%E7%94%B5%E8%AF%9D%E5%8F%B7%E7%A0%81%E7%9A%84%E5%AD%97%E6%AF%8D%E7%BB%84%E5%90%88.md) | 哈希表、字符串、回溯 | 中等 | -| 0784 | [字母大小写全排列](https://leetcode.cn/problems/letter-case-permutation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0784.%20%E5%AD%97%E6%AF%8D%E5%A4%A7%E5%B0%8F%E5%86%99%E5%85%A8%E6%8E%92%E5%88%97.md) | 位运算、字符串、回溯 | 中等 | -| 0039 | [组合总和](https://leetcode.cn/problems/combination-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0039.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.md) | 数组、回溯 | 中等 | -| 0040 | [组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0040.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C%20II.md) | 数组、回溯 | 中等 | -| 0078 | [子集](https://leetcode.cn/problems/subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0078.%20%E5%AD%90%E9%9B%86.md) | 位运算、数组、回溯 | 中等 | -| 0090 | [子集 II](https://leetcode.cn/problems/subsets-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0090.%20%E5%AD%90%E9%9B%86%20II.md) | 位运算、数组、回溯 | 中等 | -| 0473 | [火柴拼正方形](https://leetcode.cn/problems/matchsticks-to-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0473.%20%E7%81%AB%E6%9F%B4%E6%8B%BC%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 1593 | [拆分字符串使唯一子字符串的数目最大](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1593.%20%E6%8B%86%E5%88%86%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BD%BF%E5%94%AF%E4%B8%80%E5%AD%90%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E6%95%B0%E7%9B%AE%E6%9C%80%E5%A4%A7.md) | 哈希表、字符串、回溯 | 中等 | -| 1079 | [活字印刷](https://leetcode.cn/problems/letter-tile-possibilities/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1079.%20%E6%B4%BB%E5%AD%97%E5%8D%B0%E5%88%B7.md) | 哈希表、字符串、回溯、计数 | 中等 | -| 0093 | [复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0093.%20%E5%A4%8D%E5%8E%9F%20IP%20%E5%9C%B0%E5%9D%80.md) | 字符串、回溯 | 中等 | -| 0079 | [单词搜索](https://leetcode.cn/problems/word-search/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0079.%20%E5%8D%95%E8%AF%8D%E6%90%9C%E7%B4%A2.md) | 数组、回溯、矩阵 | 中等 | -| 0679 | [24 点游戏](https://leetcode.cn/problems/24-game/) | | 数组、数学、回溯 | 困难 | - diff --git a/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/index.md b/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/index.md deleted file mode 100644 index 6044c40a..00000000 --- a/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [回溯算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md) -- [回溯算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md) \ No newline at end of file diff --git a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md b/Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md deleted file mode 100644 index 82df440c..00000000 --- a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md +++ /dev/null @@ -1,29 +0,0 @@ -### 贪心算法题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0455 | [分发饼干](https://leetcode.cn/problems/assign-cookies/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0455.%20%E5%88%86%E5%8F%91%E9%A5%BC%E5%B9%B2.md) | 贪心、数组、双指针、排序 | 简单 | -| 0860 | [柠檬水找零](https://leetcode.cn/problems/lemonade-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0860.%20%E6%9F%A0%E6%AA%AC%E6%B0%B4%E6%89%BE%E9%9B%B6.md) | 贪心、数组 | 简单 | -| 0056 | [合并区间](https://leetcode.cn/problems/merge-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0056.%20%E5%90%88%E5%B9%B6%E5%8C%BA%E9%97%B4.md) | 数组、排序 | 中等 | -| 0435 | [无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0435.%20%E6%97%A0%E9%87%8D%E5%8F%A0%E5%8C%BA%E9%97%B4.md) | 贪心、数组、动态规划、排序 | 中等 | -| 0452 | [用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0452.%20%E7%94%A8%E6%9C%80%E5%B0%91%E6%95%B0%E9%87%8F%E7%9A%84%E7%AE%AD%E5%BC%95%E7%88%86%E6%B0%94%E7%90%83.md) | 贪心、数组、排序 | 中等 | -| 0055 | [跳跃游戏](https://leetcode.cn/problems/jump-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0055.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F.md) | 贪心、数组、动态规划 | 中等 | -| 0045 | [跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0045.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20II.md) | 贪心、数组、动态规划 | 中等 | -| 0122 | [买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0122.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20II.md) | 贪心、数组 | 中等 | -| 0561 | [数组拆分](https://leetcode.cn/problems/array-partition/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0561.%20%E6%95%B0%E7%BB%84%E6%8B%86%E5%88%86.md) | 贪心、数组、计数排序、排序 | 简单 | -| 1710 | [卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1710.%20%E5%8D%A1%E8%BD%A6%E4%B8%8A%E7%9A%84%E6%9C%80%E5%A4%A7%E5%8D%95%E5%85%83%E6%95%B0.md) | 贪心、数组、排序 | 简单 | -| 1217 | [玩筹码](https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1217.%20%E7%8E%A9%E7%AD%B9%E7%A0%81.md) | 贪心、数组、数学 | 简单 | -| 1247 | [交换字符使得字符串相同](https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1247.%20%E4%BA%A4%E6%8D%A2%E5%AD%97%E7%AC%A6%E4%BD%BF%E5%BE%97%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9B%B8%E5%90%8C.md) | 贪心、数学、字符串 | 中等 | -| 1400 | [构造 K 个回文字符串](https://leetcode.cn/problems/construct-k-palindrome-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1400.%20%E6%9E%84%E9%80%A0%20K%20%E4%B8%AA%E5%9B%9E%E6%96%87%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 贪心、哈希表、字符串、计数 | 中等 | -| 0921 | [使括号有效的最少添加](https://leetcode.cn/problems/minimum-add-to-make-parentheses-valid/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0921.%20%E4%BD%BF%E6%8B%AC%E5%8F%B7%E6%9C%89%E6%95%88%E7%9A%84%E6%9C%80%E5%B0%91%E6%B7%BB%E5%8A%A0.md) | 栈、贪心、字符串 | 中等 | -| 1029 | [两地调度](https://leetcode.cn/problems/two-city-scheduling/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1029.%20%E4%B8%A4%E5%9C%B0%E8%B0%83%E5%BA%A6.md) | 贪心、数组、排序 | 中等 | -| 1605 | [给定行和列的和求可行矩阵](https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1605.%20%E7%BB%99%E5%AE%9A%E8%A1%8C%E5%92%8C%E5%88%97%E7%9A%84%E5%92%8C%E6%B1%82%E5%8F%AF%E8%A1%8C%E7%9F%A9%E9%98%B5.md) | 贪心、数组、矩阵 | 中等 | -| 0135 | [分发糖果](https://leetcode.cn/problems/candy/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0135.%20%E5%88%86%E5%8F%91%E7%B3%96%E6%9E%9C.md) | 贪心、数组 | 困难 | -| 0134 | [加油站](https://leetcode.cn/problems/gas-station/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0134.%20%E5%8A%A0%E6%B2%B9%E7%AB%99.md) | 贪心、数组 | 中等 | -| 0053 | [最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、分治、动态规划 | 中等 | -| 0376 | [摆动序列](https://leetcode.cn/problems/wiggle-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0376.%20%E6%91%86%E5%8A%A8%E5%BA%8F%E5%88%97.md) | 贪心、数组、动态规划 | 中等 | -| 0738 | [单调递增的数字](https://leetcode.cn/problems/monotone-increasing-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0738.%20%E5%8D%95%E8%B0%83%E9%80%92%E5%A2%9E%E7%9A%84%E6%95%B0%E5%AD%97.md) | 贪心、数学 | 中等 | -| 0402 | [移掉 K 位数字](https://leetcode.cn/problems/remove-k-digits/) | | 栈、贪心、字符串、单调栈 | 中等 | -| 0861 | [翻转矩阵后的得分](https://leetcode.cn/problems/score-after-flipping-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0861.%20%E7%BF%BB%E8%BD%AC%E7%9F%A9%E9%98%B5%E5%90%8E%E7%9A%84%E5%BE%97%E5%88%86.md) | 贪心、位运算、数组、矩阵 | 中等 | -| 0670 | [最大交换](https://leetcode.cn/problems/maximum-swap/) | | 贪心、数学 | 中等 | - diff --git a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/index.md b/Contents/09.Algorithm-Base/05.Greedy-Algorithm/index.md deleted file mode 100644 index c32ee657..00000000 --- a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [贪心算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md) -- [贪心算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md) \ No newline at end of file diff --git a/Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md b/Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md deleted file mode 100644 index 1177335e..00000000 --- a/Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md +++ /dev/null @@ -1,22 +0,0 @@ -### 位运算题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0504 | [七进制数](https://leetcode.cn/problems/base-7/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0504.%20%E4%B8%83%E8%BF%9B%E5%88%B6%E6%95%B0.md) | 数学 | 简单 | -| 0405 | [数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0405.%20%E6%95%B0%E5%AD%97%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E6%95%B0.md) | 位运算、数学 | 简单 | -| 0190 | [颠倒二进制位](https://leetcode.cn/problems/reverse-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0190.%20%E9%A2%A0%E5%80%92%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%BD%8D.md) | 位运算、分治 | 简单 | -| 1009 | [十进制整数的反码](https://leetcode.cn/problems/complement-of-base-10-integer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1009.%20%E5%8D%81%E8%BF%9B%E5%88%B6%E6%95%B4%E6%95%B0%E7%9A%84%E5%8F%8D%E7%A0%81.md) | 位运算 | 简单 | -| 0191 | [位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0191.%20%E4%BD%8D1%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 位运算、分治 | 简单 | -| 0371 | [两整数之和](https://leetcode.cn/problems/sum-of-two-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0371.%20%E4%B8%A4%E6%95%B4%E6%95%B0%E4%B9%8B%E5%92%8C.md) | 位运算、数学 | 中等 | -| 0089 | [格雷编码](https://leetcode.cn/problems/gray-code/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0089.%20%E6%A0%BC%E9%9B%B7%E7%BC%96%E7%A0%81.md) | 位运算、数学、回溯 | 中等 | -| 0201 | [数字范围按位与](https://leetcode.cn/problems/bitwise-and-of-numbers-range/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0201.%20%E6%95%B0%E5%AD%97%E8%8C%83%E5%9B%B4%E6%8C%89%E4%BD%8D%E4%B8%8E.md) | 位运算 | 中等 | -| 0338 | [比特位计数](https://leetcode.cn/problems/counting-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0338.%20%E6%AF%94%E7%89%B9%E4%BD%8D%E8%AE%A1%E6%95%B0.md) | 位运算、动态规划 | 简单 | -| 0136 | [只出现一次的数字](https://leetcode.cn/problems/single-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0136.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组 | 简单 | -| 0137 | [只出现一次的数字 II](https://leetcode.cn/problems/single-number-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0137.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97%20II.md) | 位运算、数组 | 中等 | -| 0260 | [只出现一次的数字 III](https://leetcode.cn/problems/single-number-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0260.%20%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E6%95%B0%E5%AD%97%20III.md) | 位运算、数组 | 中等 | -| 0268 | [丢失的数字](https://leetcode.cn/problems/missing-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0268.%20%E4%B8%A2%E5%A4%B1%E7%9A%84%E6%95%B0%E5%AD%97.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | -| 1349 | [参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1349.%20%E5%8F%82%E5%8A%A0%E8%80%83%E8%AF%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| 0645 | [错误的集合](https://leetcode.cn/problems/set-mismatch/) | | 位运算、数组、哈希表、排序 | 简单 | -| 0078 | [子集](https://leetcode.cn/problems/subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0078.%20%E5%AD%90%E9%9B%86.md) | 位运算、数组、回溯 | 中等 | -| 0090 | [子集 II](https://leetcode.cn/problems/subsets-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0090.%20%E5%AD%90%E9%9B%86%20II.md) | 位运算、数组、回溯 | 中等 | - diff --git a/Contents/09.Algorithm-Base/06.Bit-Operation/index.md b/Contents/09.Algorithm-Base/06.Bit-Operation/index.md deleted file mode 100644 index d28c1d38..00000000 --- a/Contents/09.Algorithm-Base/06.Bit-Operation/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [位运算知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md) -- [位运算题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) \ No newline at end of file diff --git a/Contents/09.Algorithm-Base/index.md b/Contents/09.Algorithm-Base/index.md deleted file mode 100644 index 46473ac8..00000000 --- a/Contents/09.Algorithm-Base/index.md +++ /dev/null @@ -1,31 +0,0 @@ -## 本章内容 - -### 枚举算法 - -- [枚举算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md) -- [枚举算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md) - -### 递归算法 - -- [递归算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md) -- [递归算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md) - -### 分治算法 - -- [分治算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md) -- [分治算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md) - -### 回溯算法 - -- [回溯算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md) -- [回溯算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md) - -### 贪心算法 - -- [贪心算法知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md) -- [贪心算法题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md) - -### 位运算 - -- [位运算知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md) -- [位运算题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md b/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md deleted file mode 100644 index 5a134bfc..00000000 --- a/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md +++ /dev/null @@ -1,8 +0,0 @@ -### 动态规划基础题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0509 | [斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0509.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| 0070 | [爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0062 | [不同路径](https://leetcode.cn/problems/unique-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0062.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.md) | 数学、动态规划、组合数学 | 中等 | - diff --git a/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/index.md b/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/index.md deleted file mode 100644 index c1d518cb..00000000 --- a/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [动态规划基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md) -- [动态规划基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/02.Memoization/02.Memoization-List.md b/Contents/10.Dynamic-Programming/02.Memoization/02.Memoization-List.md deleted file mode 100644 index 616b85d6..00000000 --- a/Contents/10.Dynamic-Programming/02.Memoization/02.Memoization-List.md +++ /dev/null @@ -1,14 +0,0 @@ -### 记忆化搜索题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1137 | [第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1137.%20%E7%AC%AC%20N%20%E4%B8%AA%E6%B3%B0%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0375 | [猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0375.%20%E7%8C%9C%E6%95%B0%E5%AD%97%E5%A4%A7%E5%B0%8F%20II.md) | 数学、动态规划、博弈 | 中等 | -| 0494 | [目标和](https://leetcode.cn/problems/target-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0494.%20%E7%9B%AE%E6%A0%87%E5%92%8C.md) | 数组、动态规划、回溯 | 中等 | -| 0576 | [出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0576.%20%E5%87%BA%E7%95%8C%E7%9A%84%E8%B7%AF%E5%BE%84%E6%95%B0.md) | 动态规划 | 中等 | -| 0087 | [扰乱字符串](https://leetcode.cn/problems/scramble-string/) | | 字符串、动态规划 | 困难 | -| 0403 | [青蛙过河](https://leetcode.cn/problems/frog-jump/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0403.%20%E9%9D%92%E8%9B%99%E8%BF%87%E6%B2%B3.md) | 数组、动态规划 | 困难 | -| 0552 | [学生出勤记录 II](https://leetcode.cn/problems/student-attendance-record-ii/) | | 动态规划 | 困难 | -| 0913 | [猫和老鼠](https://leetcode.cn/problems/cat-and-mouse/) | | 图、拓扑排序、记忆化搜索、数学、动态规划、博弈 | 困难 | -| 0329 | [矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0329.%20%E7%9F%A9%E9%98%B5%E4%B8%AD%E7%9A%84%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E8%B7%AF%E5%BE%84.md) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | - diff --git a/Contents/10.Dynamic-Programming/02.Memoization/index.md b/Contents/10.Dynamic-Programming/02.Memoization/index.md deleted file mode 100644 index 8d8ac48e..00000000 --- a/Contents/10.Dynamic-Programming/02.Memoization/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [记忆化搜索知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md) -- [记忆化搜索题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/02.Memoization/02.Memoization-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/03.Linear-DP/03.Linear-DP-List.md b/Contents/10.Dynamic-Programming/03.Linear-DP/03.Linear-DP-List.md deleted file mode 100644 index 47b000b8..00000000 --- a/Contents/10.Dynamic-Programming/03.Linear-DP/03.Linear-DP-List.md +++ /dev/null @@ -1,91 +0,0 @@ -### 线性 DP 题目 - -#### 单串线性 DP 问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0300 | [最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0300.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.md) | 数组、二分查找、动态规划 | 中等 | -| 0673 | [最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0673.%20%E6%9C%80%E9%95%BF%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 树状数组、线段树、数组、动态规划 | 中等 | -| 0354 | [俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0354.%20%E4%BF%84%E7%BD%97%E6%96%AF%E5%A5%97%E5%A8%83%E4%BF%A1%E5%B0%81%E9%97%AE%E9%A2%98.md) | 数组、二分查找、动态规划、排序 | 困难 | -| 0053 | [最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0053.%20%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84%E5%92%8C.md) | 数组、分治、动态规划 | 中等 | -| 0152 | [乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0152.%20%E4%B9%98%E7%A7%AF%E6%9C%80%E5%A4%A7%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、动态规划 | 中等 | -| 0918 | [环形子数组的最大和](https://leetcode.cn/problems/maximum-sum-circular-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0918.%20%E7%8E%AF%E5%BD%A2%E5%AD%90%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%92%8C.md) | 队列、数组、分治、动态规划、单调队列 | 中等 | -| 0198 | [打家劫舍](https://leetcode.cn/problems/house-robber/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0198.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.md) | 数组、动态规划 | 中等 | -| 0213 | [打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0213.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D%20II.md) | 数组、动态规划 | 中等 | -| 0740 | [删除并获得点数](https://leetcode.cn/problems/delete-and-earn/) | | 数组、哈希表、动态规划 | 中等 | -| 1388 | [3n 块披萨](https://leetcode.cn/problems/pizza-with-3n-slices/) | | 贪心、数组、动态规划、堆(优先队列) | 困难 | -| 0873 | [最长的斐波那契子序列的长度](https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0873.%20%E6%9C%80%E9%95%BF%E7%9A%84%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E5%AD%90%E5%BA%8F%E5%88%97%E7%9A%84%E9%95%BF%E5%BA%A6.md) | 数组、哈希表、动态规划 | 中等 | -| 1027 | [最长等差数列](https://leetcode.cn/problems/longest-arithmetic-subsequence/) | | 数组、哈希表、二分查找、动态规划 | 中等 | -| 1055 | [形成字符串的最短路径](https://leetcode.cn/problems/shortest-way-to-form-string/) | | 贪心、双指针、字符串 | 中等 | -| 0368 | [最大整除子集](https://leetcode.cn/problems/largest-divisible-subset/) | | 数组、数学、动态规划、排序 | 中等 | -| 0032 | [最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0032.%20%E6%9C%80%E9%95%BF%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7.md) | 栈、字符串、动态规划 | 困难 | -| 0413 | [等差数列划分](https://leetcode.cn/problems/arithmetic-slices/) | | 数组、动态规划 | 中等 | -| 0091 | [解码方法](https://leetcode.cn/problems/decode-ways/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0091.%20%E8%A7%A3%E7%A0%81%E6%96%B9%E6%B3%95.md) | 字符串、动态规划 | 中等 | -| 0639 | [解码方法 II](https://leetcode.cn/problems/decode-ways-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0639.%20%E8%A7%A3%E7%A0%81%E6%96%B9%E6%B3%95%20II.md) | 字符串、动态规划 | 困难 | -| 0132 | [分割回文串 II](https://leetcode.cn/problems/palindrome-partitioning-ii/) | | 字符串、动态规划 | 困难 | -| 1220 | [统计元音字母序列的数目](https://leetcode.cn/problems/count-vowels-permutation/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1220.%20%E7%BB%9F%E8%AE%A1%E5%85%83%E9%9F%B3%E5%AD%97%E6%AF%8D%E5%BA%8F%E5%88%97%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 动态规划 | 困难 | -| 0338 | [比特位计数](https://leetcode.cn/problems/counting-bits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0338.%20%E6%AF%94%E7%89%B9%E4%BD%8D%E8%AE%A1%E6%95%B0.md) | 位运算、动态规划 | 简单 | -| 0801 | [使序列递增的最小交换次数](https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0801.%20%E4%BD%BF%E5%BA%8F%E5%88%97%E9%80%92%E5%A2%9E%E7%9A%84%E6%9C%80%E5%B0%8F%E4%BA%A4%E6%8D%A2%E6%AC%A1%E6%95%B0.md) | 数组、动态规划 | 困难 | -| 0871 | [最低加油次数](https://leetcode.cn/problems/minimum-number-of-refueling-stops/) | | 贪心、数组、动态规划、堆(优先队列) | 困难 | -| 0045 | [跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0045.%20%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F%20II.md) | 贪心、数组、动态规划 | 中等 | -| 0813 | [最大平均值和的分组](https://leetcode.cn/problems/largest-sum-of-averages/) | | 数组、动态规划、前缀和 | 中等 | -| 0887 | [鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0887.%20%E9%B8%A1%E8%9B%8B%E6%8E%89%E8%90%BD.md) | 数学、二分查找、动态规划 | 困难 | -| 0256 | [粉刷房子](https://leetcode.cn/problems/paint-house/) | | 数组、动态规划 | 中等 | -| 0265 | [粉刷房子 II](https://leetcode.cn/problems/paint-house-ii/) | | 数组、动态规划 | 困难 | -| 1473 | [粉刷房子 III](https://leetcode.cn/problems/paint-house-iii/) | | 数组、动态规划 | 困难 | -| 0975 | [奇偶跳](https://leetcode.cn/problems/odd-even-jump/) | | 栈、数组、动态规划、有序集合、单调栈 | 困难 | -| 0403 | [青蛙过河](https://leetcode.cn/problems/frog-jump/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0403.%20%E9%9D%92%E8%9B%99%E8%BF%87%E6%B2%B3.md) | 数组、动态规划 | 困难 | -| 1478 | [安排邮筒](https://leetcode.cn/problems/allocate-mailboxes/) | | 数组、数学、动态规划、排序 | 困难 | -| 1230 | [抛掷硬币](https://leetcode.cn/problems/toss-strange-coins/) | | 数学、动态规划、概率与统计 | 中等 | -| 0410 | [分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0410.%20%E5%88%86%E5%89%B2%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E5%80%BC.md) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | -| 1751 | [最多可以参加的会议数目 II](https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended-ii/) | | 数组、二分查找、动态规划、排序 | 困难 | -| 1787 | [使所有区间的异或结果为零](https://leetcode.cn/problems/make-the-xor-of-all-segments-equal-to-zero/) | | 位运算、数组、动态规划 | 困难 | -| 0121 | [买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0121.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA.md) | 数组、动态规划 | 简单 | -| 0122 | [买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0122.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20II.md) | 贪心、数组 | 中等 | -| 0123 | [买卖股票的最佳时机 III](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0123.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20III.md) | 数组、动态规划 | 困难 | -| 0188 | [买卖股票的最佳时机 IV](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0188.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%20IV.md) | 数组、动态规划 | 困难 | -| 0309 | [最佳买卖股票时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0309.%20%E6%9C%80%E4%BD%B3%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E6%97%B6%E6%9C%BA%E5%90%AB%E5%86%B7%E5%86%BB%E6%9C%9F.md) | 数组、动态规划 | 中等 | -| 0714 | [买卖股票的最佳时机含手续费](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0714.%20%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA%E5%90%AB%E6%89%8B%E7%BB%AD%E8%B4%B9.md) | 贪心、数组 | 中等 | - -#### 双串线性 DP 问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1143 | [最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1143.%20%E6%9C%80%E9%95%BF%E5%85%AC%E5%85%B1%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 中等 | -| 0712 | [两个字符串的最小ASCII删除和](https://leetcode.cn/problems/minimum-ascii-delete-sum-for-two-strings/) | | 字符串、动态规划 | 中等 | -| 0718 | [最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0718.%20%E6%9C%80%E9%95%BF%E9%87%8D%E5%A4%8D%E5%AD%90%E6%95%B0%E7%BB%84.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| 0583 | [两个字符串的删除操作](https://leetcode.cn/problems/delete-operation-for-two-strings/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0583.%20%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%88%A0%E9%99%A4%E6%93%8D%E4%BD%9C.md) | 字符串、动态规划 | 中等 | -| 0072 | [编辑距离](https://leetcode.cn/problems/edit-distance/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0072.%20%E7%BC%96%E8%BE%91%E8%B7%9D%E7%A6%BB.md) | 字符串、动态规划 | 困难 | -| 0044 | [通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0044.%20%E9%80%9A%E9%85%8D%E7%AC%A6%E5%8C%B9%E9%85%8D.md) | 贪心、递归、字符串、动态规划 | 困难 | -| 0010 | [正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0010.%20%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D.md) | 递归、字符串、动态规划 | 困难 | -| 0097 | [交错字符串](https://leetcode.cn/problems/interleaving-string/) | | 字符串、动态规划 | 中等 | -| 0115 | [不同的子序列](https://leetcode.cn/problems/distinct-subsequences/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0115.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 困难 | -| 0087 | [扰乱字符串](https://leetcode.cn/problems/scramble-string/) | | 字符串、动态规划 | 困难 | - -#### 矩阵线性 DP 问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0118 | [杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0118.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92.md) | 数组、动态规划 | 简单 | -| 0119 | [杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0119.%20%E6%9D%A8%E8%BE%89%E4%B8%89%E8%A7%92%20II.md) | 数组、动态规划 | 简单 | -| 0120 | [三角形最小路径和](https://leetcode.cn/problems/triangle/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0120.%20%E4%B8%89%E8%A7%92%E5%BD%A2%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 数组、动态规划 | 中等 | -| 0064 | [最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0064.%20%E6%9C%80%E5%B0%8F%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 数组、动态规划、矩阵 | 中等 | -| 0174 | [地下城游戏](https://leetcode.cn/problems/dungeon-game/) | | 数组、动态规划、矩阵 | 困难 | -| 0221 | [最大正方形](https://leetcode.cn/problems/maximal-square/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0221.%20%E6%9C%80%E5%A4%A7%E6%AD%A3%E6%96%B9%E5%BD%A2.md) | 数组、动态规划、矩阵 | 中等 | -| 0931 | [下降路径最小和](https://leetcode.cn/problems/minimum-falling-path-sum/) | | 数组、动态规划、矩阵 | 中等 | -| 0576 | [出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0576.%20%E5%87%BA%E7%95%8C%E7%9A%84%E8%B7%AF%E5%BE%84%E6%95%B0.md) | 动态规划 | 中等 | -| 0085 | [最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | | 栈、数组、动态规划、矩阵、单调栈 | 困难 | -| 0363 | [矩形区域不超过 K 的最大数值和](https://leetcode.cn/problems/max-sum-of-rectangle-no-larger-than-k/) | | 数组、二分查找、矩阵、有序集合、前缀和 | 困难 | -| 面试题 17.24 | [最大子矩阵](https://leetcode.cn/problems/max-submatrix-lcci/) | | 数组、动态规划、矩阵、前缀和 | 困难 | -| 1444 | [切披萨的方案数](https://leetcode.cn/problems/number-of-ways-of-cutting-a-pizza/) | | 记忆化搜索、数组、动态规划、矩阵 | 困难 | - -#### 无串线性 DP 问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1137 | [第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1137.%20%E7%AC%AC%20N%20%E4%B8%AA%E6%B3%B0%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0650 | [只有两个键的键盘](https://leetcode.cn/problems/2-keys-keyboard/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0650.%20%E5%8F%AA%E6%9C%89%E4%B8%A4%E4%B8%AA%E9%94%AE%E7%9A%84%E9%94%AE%E7%9B%98.md) | 数学、动态规划 | 中等 | -| 0264 | [丑数 II](https://leetcode.cn/problems/ugly-number-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0264.%20%E4%B8%91%E6%95%B0%20II.md) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | -| 0279 | [完全平方数](https://leetcode.cn/problems/perfect-squares/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0279.%20%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md) | 广度优先搜索、数学、动态规划 | 中等 | -| 0343 | [整数拆分](https://leetcode.cn/problems/integer-break/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0343.%20%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.md) | 数学、动态规划 | 中等 | - diff --git a/Contents/10.Dynamic-Programming/03.Linear-DP/index.md b/Contents/10.Dynamic-Programming/03.Linear-DP/index.md deleted file mode 100644 index d5a94e0a..00000000 --- a/Contents/10.Dynamic-Programming/03.Linear-DP/index.md +++ /dev/null @@ -1,5 +0,0 @@ -## 本章内容 - -- [线性 DP 知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md) -- [线性 DP 知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md) -- [线性 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/03.Linear-DP-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/06.Knapsack-Problem-List.md b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/06.Knapsack-Problem-List.md deleted file mode 100644 index e2225bdc..00000000 --- a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/06.Knapsack-Problem-List.md +++ /dev/null @@ -1,39 +0,0 @@ -### 背包问题题目 - -#### 0-1 背包问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0416 | [分割等和子集](https://leetcode.cn/problems/partition-equal-subset-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0416.%20%E5%88%86%E5%89%B2%E7%AD%89%E5%92%8C%E5%AD%90%E9%9B%86.md) | 数组、动态规划 | 中等 | -| 0494 | [目标和](https://leetcode.cn/problems/target-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0494.%20%E7%9B%AE%E6%A0%87%E5%92%8C.md) | 数组、动态规划、回溯 | 中等 | -| 1049 | [最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1049.%20%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7%9A%84%E9%87%8D%E9%87%8F%20II.md) | 数组、动态规划 | 中等 | - -#### 完全背包问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0279 | [完全平方数](https://leetcode.cn/problems/perfect-squares/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0279.%20%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0.md) | 广度优先搜索、数学、动态规划 | 中等 | -| 0322 | [零钱兑换](https://leetcode.cn/problems/coin-change/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0322.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2.md) | 广度优先搜索、数组、动态规划 | 中等 | -| 0518 | [零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0518.%20%E9%9B%B6%E9%92%B1%E5%85%91%E6%8D%A2%20II.md) | 数组、动态规划 | 中等 | -| 0139 | [单词拆分](https://leetcode.cn/problems/word-break/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0139.%20%E5%8D%95%E8%AF%8D%E6%8B%86%E5%88%86.md) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | -| 0377 | [组合总和 Ⅳ](https://leetcode.cn/problems/combination-sum-iv/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0377.%20%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C%20%E2%85%A3.md) | 数组、动态规划 | 中等 | -| 0638 | [大礼包](https://leetcode.cn/problems/shopping-offers/) | | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | -| 1449 | [数位成本和为目标值的最大数字](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1449.%20%E6%95%B0%E4%BD%8D%E6%88%90%E6%9C%AC%E5%92%8C%E4%B8%BA%E7%9B%AE%E6%A0%87%E5%80%BC%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E5%AD%97.md) | 数组、动态规划 | 困难 | - -#### 多重背包问题 - -#### 分组背包问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1155 | [掷骰子等于目标和的方法数](https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1155.%20%E6%8E%B7%E9%AA%B0%E5%AD%90%E7%AD%89%E4%BA%8E%E7%9B%AE%E6%A0%87%E5%92%8C%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md) | 动态规划 | 中等 | -| 2585 | [获得分数的方法数](https://leetcode.cn/problems/number-of-ways-to-earn-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2585.%20%E8%8E%B7%E5%BE%97%E5%88%86%E6%95%B0%E7%9A%84%E6%96%B9%E6%B3%95%E6%95%B0.md) | 数组、动态规划 | 困难 | - -#### 多维背包问题 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0474 | [一和零](https://leetcode.cn/problems/ones-and-zeroes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0474.%20%E4%B8%80%E5%92%8C%E9%9B%B6.md) | 数组、字符串、动态规划 | 中等 | -| 0879 | [盈利计划](https://leetcode.cn/problems/profitable-schemes/) | | 数组、动态规划 | 困难 | -| 1995 | [统计特殊四元组](https://leetcode.cn/problems/count-special-quadruplets/) | | 数组、枚举 | 简单 | - diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/index.md b/Contents/10.Dynamic-Programming/04.Knapsack-Problem/index.md deleted file mode 100644 index f9e0e6ae..00000000 --- a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/index.md +++ /dev/null @@ -1,8 +0,0 @@ -## 本章内容 - -- [背包问题知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md) -- [背包问题知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md) -- [背包问题知识(三)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md) -- [背包问题知识(四)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md) -- [背包问题知识(五)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md) -- [背包问题题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/06.Knapsack-Problem-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/05.Interval-DP/02.Interval-DP-List.md b/Contents/10.Dynamic-Programming/05.Interval-DP/02.Interval-DP-List.md deleted file mode 100644 index 45050e4a..00000000 --- a/Contents/10.Dynamic-Programming/05.Interval-DP/02.Interval-DP-List.md +++ /dev/null @@ -1,19 +0,0 @@ -### 区间 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0486 | [预测赢家](https://leetcode.cn/problems/predict-the-winner/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0486.%20%E9%A2%84%E6%B5%8B%E8%B5%A2%E5%AE%B6.md) | 递归、数组、数学、动态规划、博弈 | 中等 | -| 0312 | [戳气球](https://leetcode.cn/problems/burst-balloons/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0312.%20%E6%88%B3%E6%B0%94%E7%90%83.md) | 数组、动态规划 | 困难 | -| 0877 | [石子游戏](https://leetcode.cn/problems/stone-game/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0877.%20%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F.md) | 数组、数学、动态规划、博弈 | 中等 | -| 1000 | [合并石头的最低成本](https://leetcode.cn/problems/minimum-cost-to-merge-stones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1000.%20%E5%90%88%E5%B9%B6%E7%9F%B3%E5%A4%B4%E7%9A%84%E6%9C%80%E4%BD%8E%E6%88%90%E6%9C%AC.md) | 数组、动态规划、前缀和 | 困难 | -| 1547 | [切棍子的最小成本](https://leetcode.cn/problems/minimum-cost-to-cut-a-stick/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1547.%20%E5%88%87%E6%A3%8D%E5%AD%90%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md) | 数组、动态规划、排序 | 困难 | -| 0664 | [奇怪的打印机](https://leetcode.cn/problems/strange-printer/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0664.%20%E5%A5%87%E6%80%AA%E7%9A%84%E6%89%93%E5%8D%B0%E6%9C%BA.md) | 字符串、动态规划 | 困难 | -| 1039 | [多边形三角剖分的最低得分](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1039.%20%E5%A4%9A%E8%BE%B9%E5%BD%A2%E4%B8%89%E8%A7%92%E5%89%96%E5%88%86%E7%9A%84%E6%9C%80%E4%BD%8E%E5%BE%97%E5%88%86.md) | 数组、动态规划 | 中等 | -| 0546 | [移除盒子](https://leetcode.cn/problems/remove-boxes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0546.%20%E7%A7%BB%E9%99%A4%E7%9B%92%E5%AD%90.md) | 记忆化搜索、数组、动态规划 | 困难 | -| 0375 | [猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0375.%20%E7%8C%9C%E6%95%B0%E5%AD%97%E5%A4%A7%E5%B0%8F%20II.md) | 数学、动态规划、博弈 | 中等 | -| 0678 | [有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0678.%20%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7%E5%AD%97%E7%AC%A6%E4%B8%B2.md) | 栈、贪心、字符串、动态规划 | 中等 | -| 0005 | [最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0005.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.md) | 字符串、动态规划 | 中等 | -| 0516 | [最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0516.%20%E6%9C%80%E9%95%BF%E5%9B%9E%E6%96%87%E5%AD%90%E5%BA%8F%E5%88%97.md) | 字符串、动态规划 | 中等 | -| 0730 | [统计不同回文子序列](https://leetcode.cn/problems/count-different-palindromic-subsequences/) | | 字符串、动态规划 | 困难 | -| 2104 | [子数组范围和](https://leetcode.cn/problems/sum-of-subarray-ranges/) | | 栈、数组、单调栈 | 中等 | - diff --git a/Contents/10.Dynamic-Programming/05.Interval-DP/index.md b/Contents/10.Dynamic-Programming/05.Interval-DP/index.md deleted file mode 100644 index 0b639e35..00000000 --- a/Contents/10.Dynamic-Programming/05.Interval-DP/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [区间 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/05.Interval-DP/01.Interval-DP.md) -- [区间 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/05.Interval-DP/02.Interval-DP-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/06.Tree-DP/02.Tree-DP-List.md b/Contents/10.Dynamic-Programming/06.Tree-DP/02.Tree-DP-List.md deleted file mode 100644 index 41bd0006..00000000 --- a/Contents/10.Dynamic-Programming/06.Tree-DP/02.Tree-DP-List.md +++ /dev/null @@ -1,30 +0,0 @@ -### 树形 DP 题目 - -#### 固定根的树形 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0543 | [二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0543.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md) | 树、深度优先搜索、二叉树 | 简单 | -| 0124 | [二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0124.%20%E4%BA%8C%E5%8F%89%E6%A0%91%E4%B8%AD%E7%9A%84%E6%9C%80%E5%A4%A7%E8%B7%AF%E5%BE%84%E5%92%8C.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 1245 | [树的直径](https://leetcode.cn/problems/tree-diameter/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1245.%20%E6%A0%91%E7%9A%84%E7%9B%B4%E5%BE%84.md) | 树、深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 2246 | [相邻字符不同的最长路径](https://leetcode.cn/problems/longest-path-with-different-adjacent-characters/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2246.%20%E7%9B%B8%E9%82%BB%E5%AD%97%E7%AC%A6%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9C%80%E9%95%BF%E8%B7%AF%E5%BE%84.md) | 树、深度优先搜索、图、拓扑排序、数组、字符串 | 困难 | -| 0687 | [最长同值路径](https://leetcode.cn/problems/longest-univalue-path/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0687.%20%E6%9C%80%E9%95%BF%E5%90%8C%E5%80%BC%E8%B7%AF%E5%BE%84.md) | 树、深度优先搜索、二叉树 | 中等 | -| 0337 | [打家劫舍 III](https://leetcode.cn/problems/house-robber-iii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0337.%20%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D%20III.md) | 树、深度优先搜索、动态规划、二叉树 | 中等 | -| 0333 | [最大 BST 子树](https://leetcode.cn/problems/largest-bst-subtree/) | | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 中等 | -| 1617 | [统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1617.%20%E7%BB%9F%E8%AE%A1%E5%AD%90%E6%A0%91%E4%B8%AD%E5%9F%8E%E5%B8%82%E4%B9%8B%E9%97%B4%E6%9C%80%E5%A4%A7%E8%B7%9D%E7%A6%BB.md) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | -| 2538 | [最大价值和与最小价值和的差值](https://leetcode.cn/problems/difference-between-maximum-and-minimum-price-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2538.%20%E6%9C%80%E5%A4%A7%E4%BB%B7%E5%80%BC%E5%92%8C%E4%B8%8E%E6%9C%80%E5%B0%8F%E4%BB%B7%E5%80%BC%E5%92%8C%E7%9A%84%E5%B7%AE%E5%80%BC.md) | 树、深度优先搜索、数组、动态规划 | 困难 | -| 1569 | [将子数组重新排序得到同一个二叉搜索树的方案数](https://leetcode.cn/problems/number-of-ways-to-reorder-array-to-get-same-bst/) | | 树、并查集、二叉搜索树、记忆化搜索、数组、数学、分治、动态规划、二叉树、组合数学 | 困难 | -| 1372 | [二叉树中的最长交错路径](https://leetcode.cn/problems/longest-zigzag-path-in-a-binary-tree/) | | 树、深度优先搜索、动态规划、二叉树 | 中等 | -| 1373 | [二叉搜索子树的最大键值和](https://leetcode.cn/problems/maximum-sum-bst-in-binary-tree/) | | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 困难 | -| 0968 | [监控二叉树](https://leetcode.cn/problems/binary-tree-cameras/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0968.%20%E7%9B%91%E6%8E%A7%E4%BA%8C%E5%8F%89%E6%A0%91.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| 1273 | [删除树节点](https://leetcode.cn/problems/delete-tree-nodes/) | | 树、深度优先搜索、广度优先搜索 | 中等 | -| 1519 | [子树中标签相同的节点数](https://leetcode.cn/problems/number-of-nodes-in-the-sub-tree-with-the-same-label/) | | 树、深度优先搜索、广度优先搜索、哈希表、计数 | 中等 | - -#### 不定根的树形 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0310 | [最小高度树](https://leetcode.cn/problems/minimum-height-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0310.%20%E6%9C%80%E5%B0%8F%E9%AB%98%E5%BA%A6%E6%A0%91.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| 0834 | [树中距离之和](https://leetcode.cn/problems/sum-of-distances-in-tree/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0834.%20%E6%A0%91%E4%B8%AD%E8%B7%9D%E7%A6%BB%E4%B9%8B%E5%92%8C.md) | 树、深度优先搜索、图、动态规划 | 困难 | -| 2581 | [统计可能的树根数目](https://leetcode.cn/problems/count-number-of-possible-root-nodes/) | | 树、深度优先搜索、哈希表、动态规划 | 困难 | - diff --git a/Contents/10.Dynamic-Programming/06.Tree-DP/index.md b/Contents/10.Dynamic-Programming/06.Tree-DP/index.md deleted file mode 100644 index 1b72c8a4..00000000 --- a/Contents/10.Dynamic-Programming/06.Tree-DP/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [树形 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md) -- [树形 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/06.Tree-DP/02.Tree-DP-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/07.State-DP/02.State-DP-List.md b/Contents/10.Dynamic-Programming/07.State-DP/02.State-DP-List.md deleted file mode 100644 index e361328c..00000000 --- a/Contents/10.Dynamic-Programming/07.State-DP/02.State-DP-List.md +++ /dev/null @@ -1,26 +0,0 @@ -### 状态压缩 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 1879 | [两个数组最小的异或值之和](https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1879.%20%E4%B8%A4%E4%B8%AA%E6%95%B0%E7%BB%84%E6%9C%80%E5%B0%8F%E7%9A%84%E5%BC%82%E6%88%96%E5%80%BC%E4%B9%8B%E5%92%8C.md) | 位运算、数组、动态规划、状态压缩 | 困难 | -| 2172 | [数组的最大与和](https://leetcode.cn/problems/maximum-and-sum-of-array/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2172.%20%E6%95%B0%E7%BB%84%E7%9A%84%E6%9C%80%E5%A4%A7%E4%B8%8E%E5%92%8C.md) | 位运算、数组、动态规划、状态压缩 | 困难 | -| 1947 | [最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1947.%20%E6%9C%80%E5%A4%A7%E5%85%BC%E5%AE%B9%E6%80%A7%E8%AF%84%E5%88%86%E5%92%8C.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 1595 | [连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1595.%20%E8%BF%9E%E9%80%9A%E4%B8%A4%E7%BB%84%E7%82%B9%E7%9A%84%E6%9C%80%E5%B0%8F%E6%88%90%E6%9C%AC.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| 1494 | [并行课程 II](https://leetcode.cn/problems/parallel-courses-ii/) | | 位运算、图、动态规划、状态压缩 | 困难 | -| 1655 | [分配重复整数](https://leetcode.cn/problems/distribute-repeating-integers/) | | 位运算、数组、动态规划、回溯、状态压缩 | 困难 | -| 1986 | [完成任务的最少工作时间段](https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1986.%20%E5%AE%8C%E6%88%90%E4%BB%BB%E5%8A%A1%E7%9A%84%E6%9C%80%E5%B0%91%E5%B7%A5%E4%BD%9C%E6%97%B6%E9%97%B4%E6%AE%B5.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 1434 | [每个人戴不同帽子的方案数](https://leetcode.cn/problems/number-of-ways-to-wear-different-hats-to-each-other/) | | 位运算、数组、动态规划、状态压缩 | 困难 | -| 1799 | [N 次操作后的最大分数和](https://leetcode.cn/problems/maximize-score-after-n-operations/) | | 位运算、数组、数学、动态规划、回溯、状态压缩、数论 | 困难 | -| 1681 | [最小不兼容性](https://leetcode.cn/problems/minimum-incompatibility/) | | 位运算、数组、动态规划、状态压缩 | 困难 | -| 0526 | [优美的排列](https://leetcode.cn/problems/beautiful-arrangement/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0526.%20%E4%BC%98%E7%BE%8E%E7%9A%84%E6%8E%92%E5%88%97.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| 0351 | [安卓系统手势解锁](https://leetcode.cn/problems/android-unlock-patterns/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0351.%20%E5%AE%89%E5%8D%93%E7%B3%BB%E7%BB%9F%E6%89%8B%E5%8A%BF%E8%A7%A3%E9%94%81.md) | 动态规划、回溯 | 中等 | -| 0464 | [我能赢吗](https://leetcode.cn/problems/can-i-win/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0464.%20%E6%88%91%E8%83%BD%E8%B5%A2%E5%90%97.md) | 位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 | 中等 | -| 0847 | [访问所有节点的最短路径](https://leetcode.cn/problems/shortest-path-visiting-all-nodes/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0847.%20%E8%AE%BF%E9%97%AE%E6%89%80%E6%9C%89%E8%8A%82%E7%82%B9%E7%9A%84%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84.md) | 位运算、广度优先搜索、图、动态规划、状态压缩 | 困难 | -| 0638 | [大礼包](https://leetcode.cn/problems/shopping-offers/) | | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | -| 1994 | [好子集的数目](https://leetcode.cn/problems/the-number-of-good-subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1994.%20%E5%A5%BD%E5%AD%90%E9%9B%86%E7%9A%84%E6%95%B0%E7%9B%AE.md) | 位运算、数组、数学、动态规划、状态压缩 | 困难 | -| 1349 | [参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1349.%20%E5%8F%82%E5%8A%A0%E8%80%83%E8%AF%95%E7%9A%84%E6%9C%80%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%95%B0.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| 0698 | [划分为k个相等的子集](https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0698.%20%E5%88%92%E5%88%86%E4%B8%BAk%E4%B8%AA%E7%9B%B8%E7%AD%89%E7%9A%84%E5%AD%90%E9%9B%86.md) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | -| 0943 | [最短超级串](https://leetcode.cn/problems/find-the-shortest-superstring/) | | 位运算、数组、字符串、动态规划、状态压缩 | 困难 | -| 0691 | [贴纸拼词](https://leetcode.cn/problems/stickers-to-spell-word/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0691.%20%E8%B4%B4%E7%BA%B8%E6%8B%BC%E8%AF%8D.md) | 位运算、数组、字符串、动态规划、回溯、状态压缩 | 困难 | -| 0982 | [按位与为零的三元组](https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0982.%20%E6%8C%89%E4%BD%8D%E4%B8%8E%E4%B8%BA%E9%9B%B6%E7%9A%84%E4%B8%89%E5%85%83%E7%BB%84.md) | 位运算、数组、哈希表 | 困难 | - diff --git a/Contents/10.Dynamic-Programming/07.State-DP/index.md b/Contents/10.Dynamic-Programming/07.State-DP/index.md deleted file mode 100644 index d0d1ea87..00000000 --- a/Contents/10.Dynamic-Programming/07.State-DP/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [状态压缩 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md) -- [状态压缩 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/07.State-DP/02.State-DP-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/08.Counting-DP/02.Counting-DP-List.md b/Contents/10.Dynamic-Programming/08.Counting-DP/02.Counting-DP-List.md deleted file mode 100644 index b3154c55..00000000 --- a/Contents/10.Dynamic-Programming/08.Counting-DP/02.Counting-DP-List.md +++ /dev/null @@ -1,15 +0,0 @@ -### 计数 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0062 | [不同路径](https://leetcode.cn/problems/unique-paths/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0062.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.md) | 数学、动态规划、组合数学 | 中等 | -| 0063 | [不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0063.%20%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84%20II.md) | 数组、动态规划、矩阵 | 中等 | -| 0343 | [整数拆分](https://leetcode.cn/problems/integer-break/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0343.%20%E6%95%B4%E6%95%B0%E6%8B%86%E5%88%86.md) | 数学、动态规划 | 中等 | -| 0096 | [不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0096.%20%E4%B8%8D%E5%90%8C%E7%9A%84%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91.md) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | -| 1259 | [不相交的握手](https://leetcode.cn/problems/handshakes-that-dont-cross/) | | 数学、动态规划 | 困难 | -| 0790 | [多米诺和托米诺平铺](https://leetcode.cn/problems/domino-and-tromino-tiling/) | | 动态规划 | 中等 | -| 0070 | [爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0070.%20%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 记忆化搜索、数学、动态规划 | 简单 | -| 0746 | [使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing-stairs/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0746.%20%E4%BD%BF%E7%94%A8%E6%9C%80%E5%B0%8F%E8%8A%B1%E8%B4%B9%E7%88%AC%E6%A5%BC%E6%A2%AF.md) | 数组、动态规划 | 简单 | -| 0509 | [斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0509.%20%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| 1137 | [第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1137.%20%E7%AC%AC%20N%20%E4%B8%AA%E6%B3%B0%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0.md) | 记忆化搜索、数学、动态规划 | 简单 | - diff --git a/Contents/10.Dynamic-Programming/08.Counting-DP/index.md b/Contents/10.Dynamic-Programming/08.Counting-DP/index.md deleted file mode 100644 index d17520dc..00000000 --- a/Contents/10.Dynamic-Programming/08.Counting-DP/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [计数 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md) -- [计数 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/08.Counting-DP/02.Counting-DP-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/09.Digit-DP/02.Digit-DP-List.md b/Contents/10.Dynamic-Programming/09.Digit-DP/02.Digit-DP-List.md deleted file mode 100644 index f0a0386f..00000000 --- a/Contents/10.Dynamic-Programming/09.Digit-DP/02.Digit-DP-List.md +++ /dev/null @@ -1,18 +0,0 @@ -### 数位 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 2376 | [统计特殊整数](https://leetcode.cn/problems/count-special-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2376.%20%E7%BB%9F%E8%AE%A1%E7%89%B9%E6%AE%8A%E6%95%B4%E6%95%B0.md) | 数学、动态规划 | 困难 | -| 0357 | [统计各位数字都不同的数字个数](https://leetcode.cn/problems/count-numbers-with-unique-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0357.%20%E7%BB%9F%E8%AE%A1%E5%90%84%E4%BD%8D%E6%95%B0%E5%AD%97%E9%83%BD%E4%B8%8D%E5%90%8C%E7%9A%84%E6%95%B0%E5%AD%97%E4%B8%AA%E6%95%B0.md) | 数学、动态规划、回溯 | 中等 | -| 1012 | [至少有 1 位重复的数字](https://leetcode.cn/problems/numbers-with-repeated-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1012.%20%E8%87%B3%E5%B0%91%E6%9C%89%201%20%E4%BD%8D%E9%87%8D%E5%A4%8D%E7%9A%84%E6%95%B0%E5%AD%97.md) | 数学、动态规划 | 困难 | -| 0902 | [最大为 N 的数字组合](https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0902.%20%E6%9C%80%E5%A4%A7%E4%B8%BA%20N%20%E7%9A%84%E6%95%B0%E5%AD%97%E7%BB%84%E5%90%88.md) | 数组、数学、字符串、二分查找、动态规划 | 困难 | -| 0788 | [旋转数字](https://leetcode.cn/problems/rotated-digits/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0788.%20%E6%97%8B%E8%BD%AC%E6%95%B0%E5%AD%97.md) | 数学、动态规划 | 中等 | -| 0600 | [不含连续1的非负整数](https://leetcode.cn/problems/non-negative-integers-without-consecutive-ones/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0600.%20%E4%B8%8D%E5%90%AB%E8%BF%9E%E7%BB%AD1%E7%9A%84%E9%9D%9E%E8%B4%9F%E6%95%B4%E6%95%B0.md) | 动态规划 | 困难 | -| 0233 | [数字 1 的个数](https://leetcode.cn/problems/number-of-digit-one/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0233.%20%E6%95%B0%E5%AD%97%201%20%E7%9A%84%E4%B8%AA%E6%95%B0.md) | 递归、数学、动态规划 | 困难 | -| 2719 | [统计整数数目](https://leetcode.cn/problems/count-of-integers/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/2719.%20%E7%BB%9F%E8%AE%A1%E6%95%B4%E6%95%B0%E6%95%B0%E7%9B%AE.md) | 数学、字符串、动态规划 | 困难 | -| 0248 | [中心对称数 III](https://leetcode.cn/problems/strobogrammatic-number-iii/) | | 递归、数组、字符串 | 困难 | -| 1088 | [易混淆数 II](https://leetcode.cn/problems/confusing-number-ii/) | | 数学、回溯 | 困难 | -| 1067 | [范围内的数字计数](https://leetcode.cn/problems/digit-count-in-range/) | | 数学、动态规划 | 困难 | -| 1742 | [盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1742.%20%E7%9B%92%E5%AD%90%E4%B8%AD%E5%B0%8F%E7%90%83%E7%9A%84%E6%9C%80%E5%A4%A7%E6%95%B0%E9%87%8F.md) | 哈希表、数学、计数 | 简单 | -| 面试题 17.06 | [2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/%E9%9D%A2%E8%AF%95%E9%A2%98%2017.06.%202%E5%87%BA%E7%8E%B0%E7%9A%84%E6%AC%A1%E6%95%B0.md) | 递归、数学、动态规划 | 困难 | - diff --git a/Contents/10.Dynamic-Programming/09.Digit-DP/index.md b/Contents/10.Dynamic-Programming/09.Digit-DP/index.md deleted file mode 100644 index 0b745e85..00000000 --- a/Contents/10.Dynamic-Programming/09.Digit-DP/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [数位 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md) -- [数位 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/09.Digit-DP/02.Digit-DP-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/10.Probability-DP/02.Probability-DP-List.md b/Contents/10.Dynamic-Programming/10.Probability-DP/02.Probability-DP-List.md deleted file mode 100644 index 9e1e26ce..00000000 --- a/Contents/10.Dynamic-Programming/10.Probability-DP/02.Probability-DP-List.md +++ /dev/null @@ -1,13 +0,0 @@ -### 概率 DP 题目 - -| 题号 | 标题 | 题解 | 标签 | 难度 | -| :------ | :------ | :------ | :------ | :------ | -| 0688 | [骑士在棋盘上的概率](https://leetcode.cn/problems/knight-probability-in-chessboard/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/0688.%20%E9%AA%91%E5%A3%AB%E5%9C%A8%E6%A3%8B%E7%9B%98%E4%B8%8A%E7%9A%84%E6%A6%82%E7%8E%87.md) | 动态规划 | 中等 | -| 0808 | [分汤](https://leetcode.cn/problems/soup-servings/) | | 数学、动态规划、概率与统计 | 中等 | -| 0837 | [新 21 点](https://leetcode.cn/problems/new-21-game/) | | 数学、动态规划、滑动窗口、概率与统计 | 中等 | -| 1230 | [抛掷硬币](https://leetcode.cn/problems/toss-strange-coins/) | | 数学、动态规划、概率与统计 | 中等 | -| 1467 | [两个盒子中球的颜色数相同的概率](https://leetcode.cn/problems/probability-of-a-two-boxes-having-the-same-number-of-distinct-balls/) | | 数组、数学、动态规划、回溯、组合数学、概率与统计 | 困难 | -| 1227 | [飞机座位分配概率](https://leetcode.cn/problems/airplane-seat-assignment-probability/) | [Python](https://github.com/itcharge/LeetCode-Py/blob/main/Solutions/1227.%20%E9%A3%9E%E6%9C%BA%E5%BA%A7%E4%BD%8D%E5%88%86%E9%85%8D%E6%A6%82%E7%8E%87.md) | 脑筋急转弯、数学、动态规划、概率与统计 | 中等 | -| 1377 | [T 秒后青蛙的位置](https://leetcode.cn/problems/frog-position-after-t-seconds/) | | 树、深度优先搜索、广度优先搜索、图 | 困难 | -| 剑指 Offer 60 | [n个骰子的点数](https://leetcode.cn/problems/nge-tou-zi-de-dian-shu-lcof/) | | 数学、动态规划、概率与统计 | 中等 | - diff --git a/Contents/10.Dynamic-Programming/10.Probability-DP/index.md b/Contents/10.Dynamic-Programming/10.Probability-DP/index.md deleted file mode 100644 index c719197e..00000000 --- a/Contents/10.Dynamic-Programming/10.Probability-DP/index.md +++ /dev/null @@ -1,4 +0,0 @@ -## 本章内容 - -- [概率 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/10.Probability-DP/01.Probability-DP.md) -- [概率 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/10.Probability-DP/02.Probability-DP-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/11.DP-Optimization/01.Monotone-Stack-Queue-Optimization.md b/Contents/10.Dynamic-Programming/11.DP-Optimization/01.Monotone-Stack-Queue-Optimization.md deleted file mode 100644 index e69de29b..00000000 diff --git a/Contents/10.Dynamic-Programming/11.DP-Optimization/02.Slope-Optimization.md b/Contents/10.Dynamic-Programming/11.DP-Optimization/02.Slope-Optimization.md deleted file mode 100644 index e69de29b..00000000 diff --git a/Contents/10.Dynamic-Programming/11.DP-Optimization/03.Quadrangle-Optimization.md b/Contents/10.Dynamic-Programming/11.DP-Optimization/03.Quadrangle-Optimization.md deleted file mode 100644 index e69de29b..00000000 diff --git a/Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md b/Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md deleted file mode 100644 index a3b5f199..00000000 --- a/Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md +++ /dev/null @@ -1,2 +0,0 @@ -### 动态规划优化题目 - diff --git a/Contents/10.Dynamic-Programming/11.DP-Optimization/index.md b/Contents/10.Dynamic-Programming/11.DP-Optimization/index.md deleted file mode 100644 index 3292fa8a..00000000 --- a/Contents/10.Dynamic-Programming/11.DP-Optimization/index.md +++ /dev/null @@ -1,6 +0,0 @@ -## 本章内容 - -- [单调栈 / 优先队列优化](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/01.Monotone-Stack-Queue-Optimization.md) -- [斜率优化](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/02.Slope-Optimization.md) -- [四边形不等式优化](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/03.Quadrangle-Optimization.md) -- [动态规划优化题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) \ No newline at end of file diff --git a/Contents/10.Dynamic-Programming/index.md b/Contents/10.Dynamic-Programming/index.md deleted file mode 100644 index 86a96ac0..00000000 --- a/Contents/10.Dynamic-Programming/index.md +++ /dev/null @@ -1,63 +0,0 @@ -## 本章内容 - -### 动态规划基础 - -- [动态规划基础知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md) -- [动态规划基础题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md) - -### 记忆化搜索 - -- [记忆化搜索知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md) -- [记忆化搜索题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/02.Memoization/02.Memoization-List.md) - -### 线性 DP - -- [线性 DP 知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md) -- [线性 DP 知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md) -- [线性 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/03.Linear-DP-List.md) - -### 背包问题 - -- [背包问题知识(一)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md) -- [背包问题知识(二)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md) -- [背包问题知识(三)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md) -- [背包问题知识(四)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md) -- [背包问题知识(五)](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md) -- [背包问题题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/06.Knapsack-Problem-List.md) - -### 区间 DP - -- [区间 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/05.Interval-DP/01.Interval-DP.md) -- [区间 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/05.Interval-DP/02.Interval-DP-List.md) - -### 树形 DP - -- [树形 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md) -- [树形 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/06.Tree-DP/02.Tree-DP-List.md) - -### 状态压缩 DP - -- [状态压缩 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md) -- [状态压缩 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/07.State-DP/02.State-DP-List.md) - -### 计数 DP - -- [计数 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md) -- [计数 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/08.Counting-DP/02.Counting-DP-List.md) - -### 数位 DP - -- [数位 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md) -- [数位 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/09.Digit-DP/02.Digit-DP-List.md) - -### 概率 DP - -- [概率 DP 知识](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/10.Probability-DP/01.Probability-DP.md) -- [概率 DP 题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/10.Probability-DP/02.Probability-DP-List.md) - -### 动态规划优化 - -- [单调栈 / 优先队列优化](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/01.Monotone-Stack-Queue-Optimization.md) -- [斜率优化](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/02.Slope-Optimization.md) -- [四边形不等式优化](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/03.Quadrangle-Optimization.md) -- [动态规划优化题目](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) \ No newline at end of file diff --git a/Contents/index.md b/Contents/index.md deleted file mode 100644 index 98b07992..00000000 --- a/Contents/index.md +++ /dev/null @@ -1,219 +0,0 @@ -# 算法通关手册(LeetCode) - -## 章节目录 - -### 00. 绪论 - -- [算法与数据结构](./00.Introduction/01.Data-Structures-Algorithms.md) -- [算法复杂度](./00.Introduction/02.Algorithm-Complexity.md) -- [LeetCode 入门与攻略](./00.Introduction/03.LeetCode-Guide.md) -- [LeetCode 题解(字典序排序,850+ 道题解)](./00.Introduction/04.Solutions-List.md) -- [LeetCode 题解(按分类排序,推荐刷题列表 ★★★)](./00.Introduction/05.Categories-List.md) -- [LeetCode 面试最常考 100 题(按分类排序)](./00.Introduction/06.Interview-100-List.md) -- [LeetCode 面试最常考 200 题(按分类排序)](./00.Introduction/07.Interview-200-List.md) - -### 01. 数组 - -- 数组基础知识 - - [数组基础知识](./01.Array/01.Array-Basic/01.Array-Basic.md) - - [数组基础题目](./01.Array/01.Array-Basic/02.Array-Basic-List.md) -- 数组排序算法 - - [冒泡排序](./01.Array/02.Array-Sort/01.Array-Bubble-Sort.md) - - [选择排序](./01.Array/02.Array-Sort/02.Array-Selection-Sort.md) - - [插入排序](./01.Array/02.Array-Sort/03.Array-Insertion-Sort.md) - - [希尔排序](./01.Array/02.Array-Sort/04.Array-Shell-Sort.md) - - [归并排序](./01.Array/02.Array-Sort/05.Array-Merge-Sort.md) - - [快速排序](./01.Array/02.Array-Sort/06.Array-Quick-Sort.md) - - [堆排序](./01.Array/02.Array-Sort/07.Array-Heap-Sort.md) - - [计数排序](./01.Array/02.Array-Sort/08.Array-Counting-Sort.md) - - [桶排序](./01.Array/02.Array-Sort/09.Array-Bucket-Sort.md) - - [基数排序](./01.Array/02.Array-Sort/10.Array-Radix-Sort.md) - - [数组排序题目](./01.Array/02.Array-Sort/11.Array-Sort-List.md) -- 二分查找 - - [二分查找知识(一)](./01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md) - - [二分查找知识(二)](./01.Array/03.Array-Binary-Search/02.Array-Binary-Search-02.md) - - [二分查找题目](./01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md) -- 数组双指针 - - [数组双指针知识](./01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md) - - [数组双指针题目](./01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md) -- 数组滑动窗口 - - [数组滑动窗口知识](./01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md) - - [数组滑动窗口题目](./01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) - -### 02. 链表 - -- 链表基础知识 - - [链表基础知识](./02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md) - - [链表经典题目](./02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md) -- 链表排序 - - [链表排序知识](./02.Linked-List/02.Linked-List-Sort/01.Linked-List-Sort.md) - - [链表排序题目](./02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md) -- 链表双指针 - - [链表双指针知识](./02.Linked-List/03.Linked-List-Two-Pointers/01.Linked-List-Two-Pointers.md) - - [链表双指针题目](./02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md) - -### 03. 堆栈 - -- 堆栈基础知识 - - [堆栈基础知识](./03.Stack/01.Stack-Basic/01.Stack-Basic.md) - - [堆栈基础题目](./03.Stack/01.Stack-Basic/02.Stack-Basic-List.md) -- 单调栈 - - [单调栈知识](./03.Stack/02.Monotone-Stack/01.Monotone-Stack.md) - - [单调栈题目](./03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) - -### 04. 队列 - -- 队列基础知识 - - [队列基础知识](./04.Queue/01.Queue-Basic/01.Queue-Basic.md) - - [队列基础题目](./04.Queue/01.Queue-Basic/02.Queue-Basic-List.md) -- 优先队列 - - [优先队列知识](./04.Queue/02.Priority-Queue/01.Priority-Queue.md) - - [优先队列题目](./04.Queue/02.Priority-Queue/02.Priority-Queue-List.md) - -### 05. 哈希表 - -- [哈希表知识](./05.Hash-Table/01.Hash-Table.md) -- [哈希表题目](./05.Hash-Table/02.Hash-Table-List.md) - -### 06. 字符串 - -- 字符串基础知识 - - [字符串基础知识](./06.String/01.String-Basic/01.String-Basic.md) - - [字符串经典题目](./06.String/01.String-Basic/02.String-Basic-List.md) -- 单模式串匹配 - - [Brute Force 算法](./06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md) - - [Rabin Karp 算法](./06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md) - - [KMP 算法](./06.String/02.String-Single-Pattern-Matching/03.String-KMP.md) - - [Boyer Moore 算法](./06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md) - - [Horspool 算法](./06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md) - - [Sunday 算法](./06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md) - - [单模式串匹配题目](./06.String/02.String-Single-Pattern-Matching/07.String-Single-Pattern-Matching-List.md) -- 多模式串匹配 - - [字典树知识](./06.String/03.String-Multi-Pattern-Matching/01.Trie.md) - - [字典树题目](./06.String/03.String-Multi-Pattern-Matching/02.Trie-List.md) - - [AC 自动机知识](./06.String/03.String-Multi-Pattern-Matching/03.AC-Automaton.md) - - [AC 自动机题目](./06.String/03.String-Multi-Pattern-Matching/04.AC-Automaton-List.md) - - [后缀数组知识](./06.String/03.String-Multi-Pattern-Matching/05.Suffix-Array.md) - - [后缀数组题目](./06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md) - -### 07. 树 - -- 二叉树 - - [树与二叉树基础知识](./07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md) - - [二叉树的遍历知识](./07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md) - - [二叉树的遍历题目](./07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md) - - [二叉树的还原知识](./07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md) - - [二叉树的还原题目](./07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md) -- 二叉搜索树 - - [二叉搜索树知识](./07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md) - - [二叉搜索树题目](./07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md) -- 线段树 - - [线段树知识](./07.Tree/03.Segment-Tree/01.Segment-Tree.md) - - [线段树题目](./07.Tree/03.Segment-Tree/02.Segment-Tree-List.md) -- 树状数组 - - [树状数组知识](./07.Tree/04.Binary-Indexed-Tree/01.Binary-Indexed-Tree.md) - - [树状数组题目](./07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md) -- 并查集 - - [并查集知识](./07.Tree/05.Union-Find/01.Union-Find.md) - - [并查集题目](./07.Tree/05.Union-Find/02.Union-Find-List.md) - -### 08. 图论 - -- 图的基础知识 - - [图的定义和分类](./08.Graph/01.Graph-Basic/01.Graph-Basic.md) - - [图的存储结构和问题应用](./08.Graph/01.Graph-Basic/02.Graph-Structure.md) -- 图的遍历 - - [图的深度优先搜索知识](./08.Graph/02.Graph-Traversal/01.Graph-DFS.md) - - [图的深度优先搜索题目](./08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md) - - [图的广度优先搜索知识](./08.Graph/02.Graph-Traversal/03.Graph-BFS.md) - - [图的广度优先搜索题目](./08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md) - - [图的拓扑排序知识](./08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md) - - [图的拓扑排序题目](./08.Graph/02.Graph-Traversal/06.Graph-Topological-Sorting-List.md) -- 图的生成树 - - [图的最小生成树知识](./08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md) - - [图的最小生成树题目](./08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md) -- 最短路径 - - [单源最短路径知识(一)](./08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md) - - [单源最短路径知识(二)](./08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md) - - [单源最短路径题目](./08.Graph/04.Graph-Shortest-Path/03.Graph-Single-Source-Shortest-Path-List.md) - - [多源最短路径知识](./08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md) - - [多源最短路径题目](./08.Graph/04.Graph-Shortest-Path/05.Graph-Multi-Source-Shortest-Path-List.md) - - [次短路径知识](./08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md) - - [次短路径题目](./08.Graph/04.Graph-Shortest-Path/07.Graph-The-Second-Shortest-Path-List.md) - - [差分约束系统知识](./08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md) - - [差分约束系统题目](./08.Graph/04.Graph-Shortest-Path/09.Graph-System-Of-Difference-Constraints-List.md) -- 二分图 - - [二分图基础知识](./08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md) - - [二分图基础题目](./08.Graph/05.Graph-Bipartite/02.Graph-Bipartite-Basic-List.md) - - [二分图最大匹配知识](./08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md) - - [匈牙利算法](./08.Graph/05.Graph-Bipartite/04.Graph-Hungarian-Algorithm.md) - - [Hopcroft-Karp 算法](./08.Graph/05.Graph-Bipartite/05.Graph-Hopcroft-Karp.md) - - [二分图最大匹配题目](./08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md) - -### 09. 基础算法 - -- 枚举算法 - - [枚举算法知识](./09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md) - - [枚举算法题目](./09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md) -- 递归算法 - - [递归算法知识](./09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md) - - [递归算法题目](./09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md) -- 分治算法 - - [分治算法知识](./09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md) - - [分治算法题目](./09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md) -- 回溯算法 - - [回溯算法知识](./09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md) - - [回溯算法题目](./09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md) -- 贪心算法 - - [贪心算法知识](./09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md) - - [贪心算法题目](./09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md) -- 位运算 - - [位运算知识](./09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md) - - [位运算题目](./09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) - -### 10. 动态规划 - -- 动态规划基础 - - [动态规划基础知识](./10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md) - - [动态规划基础题目](./10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md) -- 记忆化搜索 - - [记忆化搜索知识](./10.Dynamic-Programming/02.Memoization/01.Memoization.md) - - [记忆化搜索题目](./10.Dynamic-Programming/02.Memoization/02.Memoization-List.md) -- 线性 DP - - [线性 DP 知识(一)](./10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md) - - [线性 DP 知识(二)](./10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md) - - [线性 DP 题目](./10.Dynamic-Programming/03.Linear-DP/03.Linear-DP-List.md) -- 背包问题 - - [背包问题知识(一)](./10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md) - - [背包问题知识(二)](./10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md) - - [背包问题知识(三)](./10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md) - - [背包问题知识(四)](./10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md) - - [背包问题知识(五)](./10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md) - - [背包问题题目](./10.Dynamic-Programming/04.Knapsack-Problem/06.Knapsack-Problem-List.md) -- 区间 DP - - [区间 DP 知识](./10.Dynamic-Programming/05.Interval-DP/01.Interval-DP.md) - - [区间 DP 题目](./10.Dynamic-Programming/05.Interval-DP/02.Interval-DP-List.md) -- 树形 DP - - [树形 DP 知识](./10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md) - - [树形 DP 题目](./10.Dynamic-Programming/06.Tree-DP/02.Tree-DP-List.md) -- 状态压缩 DP - - [状态压缩 DP 知识](./10.Dynamic-Programming/07.State-DP/01.State-DP.md) - - [状态压缩 DP 题目](./10.Dynamic-Programming/07.State-DP/02.State-DP-List.md) -- 计数 DP - - [计数 DP 知识](./10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md) - - [计数 DP 题目](./10.Dynamic-Programming/08.Counting-DP/02.Counting-DP-List.md) -- 数位 DP - - [数位 DP 知识](./10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md) - - [数位 DP 题目](./10.Dynamic-Programming/09.Digit-DP/02.Digit-DP-List.md) -- 概率 DP - - [概率 DP 知识](./10.Dynamic-Programming/10.Probability-DP/01.Probability-DP.md) - - [概率 DP 题目](./10.Dynamic-Programming/10.Probability-DP/02.Probability-DP-List.md) -- 动态规划优化 - - [单调栈 / 优先队列优化](./10.Dynamic-Programming/11.DP-Optimization/01.Monotone-Stack-Queue-Optimization.md) - - [斜率优化](./10.Dynamic-Programming/11.DP-Optimization/02.Slope-Optimization.md) - - [四边形不等式优化](./10.Dynamic-Programming/11.DP-Optimization/03.Quadrangle-Optimization.md) - - [动态规划优化题目](./10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) - -### 11. 附加内容 - -- [内容完成时间线](./Contents/Others/Update-Time.md) diff --git a/README.md b/README.md index 9b5c6cff..004d2fd1 100644 --- a/README.md +++ b/README.md @@ -1,262 +1,29 @@ # 算法通关手册(LeetCode) -## 01. 项目简介 +## 01. 关于本书 -- **「算法与数据结构」** 基础知识的讲解教程,「LeetCode」800+ 道题目的详细解析。本项目易于理解,没有大跨度的思维跳跃,项目中使用部分图示、例子来帮助理解。 +- 超详细的 **「算法与数据结构」** 基础讲解教程,**「LeetCode 800+ 道」** 经典题目详细解析。 +- 本项目易于理解,没有大跨度的思维跳跃,项目中使用大量图示、例子来帮助理解。 +- 本项目先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。 +- 本项目从各大知名互联网公司面试算法题中整理汇总了 **「LeetCode 200 道高频面试题」**,帮助面试者更有针对性的准备面试。 -- 本教程先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。 +| 在线阅读 | https://algo.itcharge.cn | +| -------- | ------------------------------------ | +| 开源地址 | https://github.com/itcharge/AlgoNote | -- 本教程采用 Python 作为编程语言,要求学习者已有基本 Python 程序设计的知识与经验。 +

      + + +

      +## 02. -## 02. 项目地址 - -欢迎右上角 **「Star ⭐️ 」** 和 **「Fork」**,这是对我最大的鼓励和支持。 - -- GitHub 地址:[https://github.com/itcharge/LeetCode-Py](https://github.com/itcharge/LeetCode-Py) - -支持黑暗模式的在线电子书《算法通关手册》。 - -- 电子书地址:[https://algo.itcharge.cn](https://algo.itcharge.cn) - -![电子书浅色模式](./Assets/Images/algo-book-light.png) - -![电子书深色模式](./Assets/Images/algo-book-dark.png) - -## 03. 关于作者 - -我是一名 iOS / macOS 的开发程序员,另外也是北航软院的一名非全硕士(在读)。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。 +我是一名 iOS / macOS 的开发程序员,另外也是北航软院的硕士。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。 我从 2021 年 03 月 30 日开始每日在 LeetCode 刷题,到 2022 年 06 月 08 日已经刷了 1000+ 道题目,并且完成了 800+ 道题解。努力向着 1000+、1500+、2000+ 道题解前进。 -在公众号 **「程序员充电站」** 里回复 "**算法打卡**",拉你进 LeetCode 算法打卡计划群一起组队打卡。 - -- 进群暗号:**算法打卡** -- 进群要求:少闲聊、多分享、改备注。 - ![](./Assets/Images/itcharge-qr-code.png) ## 04. 版权说明 - 本教程采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 -- 本教程题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 - -## 05. 章节目录 - -![章节目录](./Assets/Images/algo-book-contents.png) - -### 00. 绪论 - -- [算法与数据结构](./Contents/00.Introduction/01.Data-Structures-Algorithms.md) -- [算法复杂度](./Contents/00.Introduction/02.Algorithm-Complexity.md) -- [LeetCode 入门与攻略](./Contents/00.Introduction/03.LeetCode-Guide.md) -- [LeetCode 题解(字典序排序,850+ 道题解)](./Contents/00.Introduction/04.Solutions-List.md) -- [LeetCode 题解(按分类排序,推荐刷题列表 ★★★)](./Contents/00.Introduction/05.Categories-List.md) -- [LeetCode 面试最常考 100 题(按分类排序)](./Contents/00.Introduction/06.Interview-100-List.md) -- [LeetCode 面试最常考 200 题(按分类排序)](./Contents/00.Introduction/07.Interview-200-List.md) - -### 01. 数组 - -- 数组基础知识 - - [数组基础知识](./Contents/01.Array/01.Array-Basic/01.Array-Basic.md) - - [数组基础题目](./Contents/01.Array/01.Array-Basic/02.Array-Basic-List.md) -- 数组排序算法 - - [冒泡排序](./Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md) - - [选择排序](./Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md) - - [插入排序](./Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md) - - [希尔排序](./Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md) - - [归并排序](./Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md) - - [快速排序](./Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md) - - [堆排序](./Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md) - - [计数排序](./Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md) - - [桶排序](./Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md) - - [基数排序](./Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md) - - [数组排序题目](./Contents/01.Array/02.Array-Sort/11.Array-Sort-List.md) -- 二分查找 - - [二分查找知识(一)](./Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md) - - [二分查找知识(二)](./Contents/01.Array/03.Array-Binary-Search/02.Array-Binary-Search-02.md) - - [二分查找题目](./Contents/01.Array/03.Array-Binary-Search/03.Array-Binary-Search-List.md) -- 数组双指针 - - [数组双指针知识](./Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md) - - [数组双指针题目](./Contents/01.Array/04.Array-Two-Pointers/02.Array-Two-Pointers-List.md) -- 数组滑动窗口 - - [数组滑动窗口知识](./Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md) - - [数组滑动窗口题目](./Contents/01.Array/05.Array-Sliding-Window/02.Array-Sliding-Window-List.md) - -### 02. 链表 - -- 链表基础知识 - - [链表基础知识](./Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md) - - [链表经典题目](./Contents/02.Linked-List/01.Linked-List-Basic/02.Linked-List-Basic-List.md) -- 链表排序 - - [链表排序知识](./Contents/02.Linked-List/02.Linked-List-Sort/01.Linked-List-Sort.md) - - [链表排序题目](./Contents/02.Linked-List/02.Linked-List-Sort/02.Linked-List-Sort-List.md) -- 链表双指针 - - [链表双指针知识](./Contents/02.Linked-List/03.Linked-List-Two-Pointers/01.Linked-List-Two-Pointers.md) - - [链表双指针题目](./Contents/02.Linked-List/03.Linked-List-Two-Pointers/02.Linked-List-Two-Pointers-List.md) - -### 03. 堆栈 - -- 堆栈基础知识 - - [堆栈基础知识](./Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md) - - [堆栈基础题目](./Contents/03.Stack/01.Stack-Basic/02.Stack-Basic-List.md) -- 单调栈 - - [单调栈知识](./Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md) - - [单调栈题目](./Contents/03.Stack/02.Monotone-Stack/02.Monotone-Stack-List.md) - -### 04. 队列 - -- 队列基础知识 - - [队列基础知识](./Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md) - - [队列基础题目](./Contents/04.Queue/01.Queue-Basic/02.Queue-Basic-List.md) -- 优先队列 - - [优先队列知识](./Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md) - - [优先队列题目](./Contents/04.Queue/02.Priority-Queue/02.Priority-Queue-List.md) - -### 05. 哈希表 - -- [哈希表知识](./Contents/05.Hash-Table/01.Hash-Table.md) -- [哈希表题目](./Contents/05.Hash-Table/02.Hash-Table-List.md) - -### 06. 字符串 - -- 字符串基础知识 - - [字符串基础知识](./Contents/06.String/01.String-Basic/01.String-Basic.md) - - [字符串经典题目](./Contents/06.String/01.String-Basic/02.String-Basic-List.md) -- 单模式串匹配 - - [Brute Force 算法](./Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md) - - [Rabin Karp 算法](./Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md) - - [KMP 算法](./Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md) - - [Boyer Moore 算法](./Contents/06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md) - - [Horspool 算法](./Contents/06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md) - - [Sunday 算法](./Contents/06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md) - - [单模式串匹配题目](./Contents/06.String/02.String-Single-Pattern-Matching/07.String-Single-Pattern-Matching-List.md) -- 多模式串匹配 - - [字典树知识](./Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md) - - [字典树题目](./Contents/06.String/03.String-Multi-Pattern-Matching/02.Trie-List.md) - - [AC 自动机知识](./Contents/06.String/03.String-Multi-Pattern-Matching/03.AC-Automaton.md) - - [AC 自动机题目](./Contents/06.String/03.String-Multi-Pattern-Matching/04.AC-Automaton-List.md) - - [后缀数组知识](./Contents/06.String/03.String-Multi-Pattern-Matching/05.Suffix-Array.md) - - [后缀数组题目](./Contents/06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md) - -### 07. 树 - -- 二叉树 - - [树与二叉树基础知识](./Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md) - - [二叉树的遍历知识](./Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md) - - [二叉树的遍历题目](./Contents/07.Tree/01.Binary-Tree/03.Binary-Tree-Traverse-List.md) - - [二叉树的还原知识](./Contents/07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md) - - [二叉树的还原题目](./Contents/07.Tree/01.Binary-Tree/05.Binary-Tree-Reduction-List.md) -- 二叉搜索树 - - [二叉搜索树知识](./Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md) - - [二叉搜索树题目](./Contents/07.Tree/02.Binary-Search-Tree/02.Binary-Search-Tree-List.md) -- 线段树 - - [线段树知识](./Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md) - - [线段树题目](./Contents/07.Tree/03.Segment-Tree/02.Segment-Tree-List.md) -- 树状数组 - - [树状数组知识](./Contents/07.Tree/04.Binary-Indexed-Tree/01.Binary-Indexed-Tree.md) - - [树状数组题目](./Contents/07.Tree/04.Binary-Indexed-Tree/02.Binary-Indexed-Tree-List.md) -- 并查集 - - [并查集知识](./Contents/07.Tree/05.Union-Find/01.Union-Find.md) - - [并查集题目](./Contents/07.Tree/05.Union-Find/02.Union-Find-List.md) - -### 08. 图论 - -- 图的基础知识 - - [图的定义和分类](./Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md) - - [图的存储结构和问题应用](./Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md) -- 图的遍历 - - [图的深度优先搜索知识](./Contents/08.Graph/02.Graph-Traversal/01.Graph-DFS.md) - - [图的深度优先搜索题目](./Contents/08.Graph/02.Graph-Traversal/02.Graph-DFS-List.md) - - [图的广度优先搜索知识](./Contents/08.Graph/02.Graph-Traversal/03.Graph-BFS.md) - - [图的广度优先搜索题目](./Contents/08.Graph/02.Graph-Traversal/04.Graph-BFS-List.md) - - [图的拓扑排序知识](./Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md) - - [图的拓扑排序题目](./Contents/08.Graph/02.Graph-Traversal/06.Graph-Topological-Sorting-List.md) -- 图的生成树 - - [图的最小生成树知识](./Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md) - - [图的最小生成树题目](./Contents/08.Graph/03.Graph-Spanning-Tree/02.Graph-Minimum-Spanning-Tree-List.md) -- 最短路径 - - [单源最短路径知识(一)](./Contents/08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md) - - [单源最短路径知识(二)](./Contents/08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md) - - [单源最短路径题目](./Contents/08.Graph/04.Graph-Shortest-Path/03.Graph-Single-Source-Shortest-Path-List.md) - - [多源最短路径知识](./Contents/08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md) - - [多源最短路径题目](./Contents/08.Graph/04.Graph-Shortest-Path/05.Graph-Multi-Source-Shortest-Path-List.md) - - [次短路径知识](./Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md) - - [次短路径题目](./Contents/08.Graph/04.Graph-Shortest-Path/07.Graph-The-Second-Shortest-Path-List.md) - - [差分约束系统知识](./Contents/08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md) - - [差分约束系统题目](./Contents/08.Graph/04.Graph-Shortest-Path/09.Graph-System-Of-Difference-Constraints-List.md) -- 二分图 - - [二分图基础知识](./Contents/08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md) - - [二分图基础题目](./Contents/08.Graph/05.Graph-Bipartite/02.Graph-Bipartite-Basic-List.md) - - [二分图最大匹配知识](./Contents/08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md) - - [匈牙利算法](./Contents/08.Graph/05.Graph-Bipartite/04.Graph-Hungarian-Algorithm.md) - - [Hopcroft-Karp 算法](./Contents/08.Graph/05.Graph-Bipartite/05.Graph-Hopcroft-Karp.md) - - [二分图最大匹配题目](./Contents/08.Graph/05.Graph-Bipartite/06.Graph-Bipartite-Matching-List.md) - -### 09. 基础算法 - -- 枚举算法 - - [枚举算法知识](./Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md) - - [枚举算法题目](./Contents/09.Algorithm-Base/01.Enumeration-Algorithm/02.Enumeration-Algorithm-List.md) -- 递归算法 - - [递归算法知识](./Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md) - - [递归算法题目](./Contents/09.Algorithm-Base/02.Recursive-Algorithm/02.Recursive-Algorithm-List.md) -- 分治算法 - - [分治算法知识](./Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md) - - [分治算法题目](./Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/02.Divide-And-Conquer-Algorithm-List.md) -- 回溯算法 - - [回溯算法知识](./Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md) - - [回溯算法题目](./Contents/09.Algorithm-Base/04.Backtracking-Algorithm/02.Backtracking-Algorithm-List.md) -- 贪心算法 - - [贪心算法知识](./Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md) - - [贪心算法题目](./Contents/09.Algorithm-Base/05.Greedy-Algorithm/02.Greedy-Algorithm-List.md) -- 位运算 - - [位运算知识](./Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md) - - [位运算题目](./Contents/09.Algorithm-Base/06.Bit-Operation/02.Bit-Operation-List.md) - -### 10. 动态规划 - -- 动态规划基础 - - [动态规划基础知识](./Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md) - - [动态规划基础题目](./Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/02.Dynamic-Programming-Basic-List.md) -- 记忆化搜索 - - [记忆化搜索知识](./Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md) - - [记忆化搜索题目](./Contents/10.Dynamic-Programming/02.Memoization/02.Memoization-List.md) -- 线性 DP - - [线性 DP 知识(一)](./Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md) - - [线性 DP 知识(二)](./Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md) - - [线性 DP 题目](./Contents/10.Dynamic-Programming/03.Linear-DP/03.Linear-DP-List.md) -- 背包问题 - - [背包问题知识(一)](./Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md) - - [背包问题知识(二)](./Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md) - - [背包问题知识(三)](./Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md) - - [背包问题知识(四)](./Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md) - - [背包问题知识(五)](./Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md) - - [背包问题题目](./Contents/10.Dynamic-Programming/04.Knapsack-Problem/06.Knapsack-Problem-List.md) -- 区间 DP - - [区间 DP 知识](./Contents/10.Dynamic-Programming/05.Interval-DP/01.Interval-DP.md) - - [区间 DP 题目](./Contents/10.Dynamic-Programming/05.Interval-DP/02.Interval-DP-List.md) -- 树形 DP - - [树形 DP 知识](./Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md) - - [树形 DP 题目](./Contents/10.Dynamic-Programming/06.Tree-DP/02.Tree-DP-List.md) -- 状态压缩 DP - - [状态压缩 DP 知识](./Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md) - - [状态压缩 DP 题目](./Contents/10.Dynamic-Programming/07.State-DP/02.State-DP-List.md) -- 计数 DP - - [计数 DP 知识](./Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md) - - [计数 DP 题目](./Contents/10.Dynamic-Programming/08.Counting-DP/02.Counting-DP-List.md) -- 数位 DP - - [数位 DP 知识](./Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md) - - [数位 DP 题目](./Contents/10.Dynamic-Programming/09.Digit-DP/02.Digit-DP-List.md) -- 概率 DP - - [概率 DP 知识](./Contents/10.Dynamic-Programming/10.Probability-DP/01.Probability-DP.md) - - [概率 DP 题目](./Contents/10.Dynamic-Programming/10.Probability-DP/02.Probability-DP-List.md) -- 动态规划优化 - - [单调栈 / 优先队列优化](./Contents/10.Dynamic-Programming/11.DP-Optimization/01.Monotone-Stack-Queue-Optimization.md) - - [斜率优化](./Contents/10.Dynamic-Programming/11.DP-Optimization/02.Slope-Optimization.md) - - [四边形不等式优化](./Contents/10.Dynamic-Programming/11.DP-Optimization/03.Quadrangle-Optimization.md) - - [动态规划优化题目](./Contents/10.Dynamic-Programming/11.DP-Optimization/04.DP-Optimization-List.md) - -### 11. 附加内容 - -- [内容完成时间线](./Contents/Others/Update-Time.md) -### [12. LeetCode 题解(已完成 860 道)](./Contents/00.Introduction/04.Solutions-List.md) \ No newline at end of file +- 本教程中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 diff --git "a/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275 (\345\212\250\346\200\201\350\247\204\345\210\222).md" "b/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275 (\345\212\250\346\200\201\350\247\204\345\210\222).md" deleted file mode 100644 index 63c82cfe..00000000 --- "a/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275 (\345\212\250\346\200\201\350\247\204\345\210\222).md" +++ /dev/null @@ -1,65 +0,0 @@ -# 题目相关 - -- 标签: -- 难度: - -## 题目链接 - -- 题目相关 - -## 题目大意 - -**描述**: - -**要求**: - -**说明**: - -- - -**示例**: - -- 示例 1: - -```python -``` - -- 示例 2: - -```python -``` - -## 解题思路 - -### 思路 1:动态规划 - -###### 1. 划分阶段 - -按照 进行阶段划分。 - -###### 2. 定义状态 - -定义状态 $dp[i]$ 表示为:。 - -###### 3. 状态转移方程 - - - -###### 4. 初始条件 - - - -###### 5. 最终结果 - -根据我们之前定义的状态,$dp[i]$ 表示为:。 所以最终结果为 $dp[size]$。 - -### 思路 1:代码 - -```python - -``` - -### 思路 1:复杂度分析 - -- **时间复杂度**: -- **空间复杂度**: diff --git "a/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275.md" "b/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275.md" deleted file mode 100644 index e3bc0608..00000000 --- "a/Solutions/LeetCode \350\247\243\351\242\230\346\212\245\345\221\212\347\251\272\347\231\275.md" +++ /dev/null @@ -1,62 +0,0 @@ -# 题目相关 - -- 标签: -- 难度: - -## 题目链接 - -- 题目相关 - -## 题目大意 - -**描述**: - -**要求**: - -**说明**: - -- - -**示例**: - -- 示例 1: - -```python -``` - -- 示例 2: - -```python -``` - -## 解题思路 - -### 思路 1: - - - -### 思路 1:代码 - -```python - -``` - -### 思路 1:复杂度分析 - -- **时间复杂度**: -- **空间复杂度**: - -### 思路 2: - - - -### 思路 2:代码 - -```python - -``` - -### 思路 2:复杂度分析 - -- **时间复杂度**: -- **空间复杂度**: \ No newline at end of file diff --git a/Templates/01.Array/Array-MaxHeap.py b/codes/python/01_array/array_maxheap.py similarity index 100% rename from Templates/01.Array/Array-MaxHeap.py rename to codes/python/01_array/array_maxheap.py diff --git a/Templates/01.Array/Array-BubbleSort.py b/codes/python/01_array/array_sort_bubble_sort.py similarity index 100% rename from Templates/01.Array/Array-BubbleSort.py rename to codes/python/01_array/array_sort_bubble_sort.py diff --git a/Templates/01.Array/Array-BucketSort.py b/codes/python/01_array/array_sort_bucket_sort.py similarity index 100% rename from Templates/01.Array/Array-BucketSort.py rename to codes/python/01_array/array_sort_bucket_sort.py diff --git a/Templates/01.Array/Array-CountingSort.py b/codes/python/01_array/array_sort_counting_sort.py similarity index 100% rename from Templates/01.Array/Array-CountingSort.py rename to codes/python/01_array/array_sort_counting_sort.py diff --git a/Templates/01.Array/Array-InsertionSort.py b/codes/python/01_array/array_sort_insertion_sort.py similarity index 100% rename from Templates/01.Array/Array-InsertionSort.py rename to codes/python/01_array/array_sort_insertion_sort.py diff --git a/Templates/01.Array/Array-MaxHeapSort.py b/codes/python/01_array/array_sort_maxheap_sort.py similarity index 100% rename from Templates/01.Array/Array-MaxHeapSort.py rename to codes/python/01_array/array_sort_maxheap_sort.py diff --git a/Templates/01.Array/Array-MergeSort.py b/codes/python/01_array/array_sort_merge_sort.py similarity index 100% rename from Templates/01.Array/Array-MergeSort.py rename to codes/python/01_array/array_sort_merge_sort.py diff --git a/Templates/01.Array/Array-MinHeapSort.py b/codes/python/01_array/array_sort_minheap_sort.py similarity index 100% rename from Templates/01.Array/Array-MinHeapSort.py rename to codes/python/01_array/array_sort_minheap_sort.py diff --git a/Templates/01.Array/Array-QuickSort.py b/codes/python/01_array/array_sort_quick_sort.py similarity index 100% rename from Templates/01.Array/Array-QuickSort.py rename to codes/python/01_array/array_sort_quick_sort.py diff --git a/Templates/01.Array/Array-RadixSort.py b/codes/python/01_array/array_sort_radix_sort.py similarity index 100% rename from Templates/01.Array/Array-RadixSort.py rename to codes/python/01_array/array_sort_radix_sort.py diff --git a/Templates/01.Array/Array-SelectionSort.py b/codes/python/01_array/array_sort_selection_sort.py similarity index 100% rename from Templates/01.Array/Array-SelectionSort.py rename to codes/python/01_array/array_sort_selection_sort.py diff --git a/Templates/01.Array/Array-ShellSort.py b/codes/python/01_array/array_sort_shell_sort.py similarity index 100% rename from Templates/01.Array/Array-ShellSort.py rename to codes/python/01_array/array_sort_shell_sort.py diff --git a/Templates/02.LinkedList/LinkedList.py b/codes/python/02_linked_list/linked_list.py similarity index 100% rename from Templates/02.LinkedList/LinkedList.py rename to codes/python/02_linked_list/linked_list.py diff --git a/Templates/02.LinkedList/LinkedList-BubbleSort.py b/codes/python/02_linked_list/linked_list_bubble_sort.py similarity index 100% rename from Templates/02.LinkedList/LinkedList-BubbleSort.py rename to codes/python/02_linked_list/linked_list_bubble_sort.py diff --git a/Templates/02.LinkedList/LinkedList-BucketSort.py b/codes/python/02_linked_list/linked_list_bucket_sort.py similarity index 100% rename from Templates/02.LinkedList/LinkedList-BucketSort.py rename to codes/python/02_linked_list/linked_list_bucket_sort.py diff --git a/Templates/02.LinkedList/LinkedList-CountingSort.py b/codes/python/02_linked_list/linked_list_counting_sort.py similarity index 100% rename from Templates/02.LinkedList/LinkedList-CountingSort.py rename to codes/python/02_linked_list/linked_list_counting_sort.py diff --git a/Templates/02.LinkedList/LinkedList-InsertionSort.py b/codes/python/02_linked_list/linked_list_insertion_sort.py similarity index 100% rename from Templates/02.LinkedList/LinkedList-InsertionSort.py rename to codes/python/02_linked_list/linked_list_insertion_sort.py diff --git a/Templates/02.LinkedList/LinkedList-MergeSort.py b/codes/python/02_linked_list/linked_list_merge_sort.py similarity index 100% rename from Templates/02.LinkedList/LinkedList-MergeSort.py rename to codes/python/02_linked_list/linked_list_merge_sort.py diff --git a/Templates/02.LinkedList/LinkedList-QuickSort.py b/codes/python/02_linked_list/linked_list_quick_sort.py similarity index 100% rename from Templates/02.LinkedList/LinkedList-QuickSort.py rename to codes/python/02_linked_list/linked_list_quick_sort.py diff --git a/Templates/02.LinkedList/LinkedList-RadixSort.py b/codes/python/02_linked_list/linked_list_radix_sort.py similarity index 100% rename from Templates/02.LinkedList/LinkedList-RadixSort.py rename to codes/python/02_linked_list/linked_list_radix_sort.py diff --git a/Templates/02.LinkedList/LinkedList-SectionSort.py b/codes/python/02_linked_list/linked_list_section_sort.py similarity index 100% rename from Templates/02.LinkedList/LinkedList-SectionSort.py rename to codes/python/02_linked_list/linked_list_section_sort.py diff --git a/Templates/04.Queue/Queue-CircularSequentialQueue.py b/codes/python/03_stack_queue_hash_table/queue_circularSequential_queue.py similarity index 100% rename from Templates/04.Queue/Queue-CircularSequentialQueue.py rename to codes/python/03_stack_queue_hash_table/queue_circularSequential_queue.py diff --git a/Templates/04.Queue/Queue-LinkQueue.py b/codes/python/03_stack_queue_hash_table/queue_link_queue.py similarity index 100% rename from Templates/04.Queue/Queue-LinkQueue.py rename to codes/python/03_stack_queue_hash_table/queue_link_queue.py diff --git a/Templates/04.Queue/Queue-PriorityQueue.py b/codes/python/03_stack_queue_hash_table/queue_priority_queue.py similarity index 100% rename from Templates/04.Queue/Queue-PriorityQueue.py rename to codes/python/03_stack_queue_hash_table/queue_priority_queue.py diff --git a/Templates/04.Queue/Queue-SequentialQueue.py b/codes/python/03_stack_queue_hash_table/queue_sequential_queue.py similarity index 100% rename from Templates/04.Queue/Queue-SequentialQueue.py rename to codes/python/03_stack_queue_hash_table/queue_sequential_queue.py diff --git a/Templates/03.Stack/Stack-LinkStack.py b/codes/python/03_stack_queue_hash_table/stack_link_stack.py similarity index 100% rename from Templates/03.Stack/Stack-LinkStack.py rename to codes/python/03_stack_queue_hash_table/stack_link_stack.py diff --git a/Templates/03.Stack/Stack-MonotoneStack.py b/codes/python/03_stack_queue_hash_table/stack_monotone_stack.py similarity index 100% rename from Templates/03.Stack/Stack-MonotoneStack.py rename to codes/python/03_stack_queue_hash_table/stack_monotone_stack.py diff --git a/Templates/03.Stack/Stack-SequentialStack.py b/codes/python/03_stack_queue_hash_table/stack_sequential_stack.py similarity index 100% rename from Templates/03.Stack/Stack-SequentialStack.py rename to codes/python/03_stack_queue_hash_table/stack_sequential_stack.py diff --git a/Templates/06.String/String-Strcmp.py b/codes/python/04_string/string_Strcmp.py similarity index 100% rename from Templates/06.String/String-Strcmp.py rename to codes/python/04_string/string_Strcmp.py diff --git a/Templates/06.String/String-BM.py b/codes/python/04_string/string_boyer_moore.py similarity index 100% rename from Templates/06.String/String-BM.py rename to codes/python/04_string/string_boyer_moore.py diff --git a/Templates/06.String/String-BF.py b/codes/python/04_string/string_brute_force.py similarity index 100% rename from Templates/06.String/String-BF.py rename to codes/python/04_string/string_brute_force.py diff --git a/Templates/06.String/String-Horspool.py b/codes/python/04_string/string_horspool.py similarity index 100% rename from Templates/06.String/String-Horspool.py rename to codes/python/04_string/string_horspool.py diff --git a/Templates/06.String/String-KMP.py b/codes/python/04_string/string_kmp.py similarity index 100% rename from Templates/06.String/String-KMP.py rename to codes/python/04_string/string_kmp.py diff --git a/Templates/06.String/String-RK.py b/codes/python/04_string/string_rabin_karp.py similarity index 100% rename from Templates/06.String/String-RK.py rename to codes/python/04_string/string_rabin_karp.py diff --git a/Templates/06.String/String-Sunday.py b/codes/python/04_string/string_sunday.py similarity index 100% rename from Templates/06.String/String-Sunday.py rename to codes/python/04_string/string_sunday.py diff --git a/Templates/06.String/String-Trie.py b/codes/python/04_string/string_trie.py similarity index 100% rename from Templates/06.String/String-Trie.py rename to codes/python/04_string/string_trie.py diff --git a/Templates/07.Tree/Tree-BinaryIndexedTree.py b/codes/python/05_tree/tree_binaryindexed_tree.py similarity index 100% rename from Templates/07.Tree/Tree-BinaryIndexedTree.py rename to codes/python/05_tree/tree_binaryindexed_tree.py diff --git a/Templates/07.Tree/Tree-DynamicSegmentTree-Update-Interval-1.py b/codes/python/05_tree/tree_dynamicSegmentTree_update_interval_1.py similarity index 100% rename from Templates/07.Tree/Tree-DynamicSegmentTree-Update-Interval-1.py rename to codes/python/05_tree/tree_dynamicSegmentTree_update_interval_1.py diff --git a/Templates/07.Tree/Tree-DynamicSegmentTree-Update-Interval-2.py b/codes/python/05_tree/tree_dynamicSegmentTree_update_interval_2.py similarity index 100% rename from Templates/07.Tree/Tree-DynamicSegmentTree-Update-Interval-2.py rename to codes/python/05_tree/tree_dynamicSegmentTree_update_interval_2.py diff --git a/Templates/07.Tree/Tree-SegmentTree-Update-Interval-1.py b/codes/python/05_tree/tree_segmentTree_update_interval_1.py similarity index 100% rename from Templates/07.Tree/Tree-SegmentTree-Update-Interval-1.py rename to codes/python/05_tree/tree_segmentTree_update_interval_1.py diff --git a/Templates/07.Tree/Tree-SegmentTree-Update-Interval-2.py b/codes/python/05_tree/tree_segmentTree_update_interval_2.py similarity index 100% rename from Templates/07.Tree/Tree-SegmentTree-Update-Interval-2.py rename to codes/python/05_tree/tree_segmentTree_update_interval_2.py diff --git a/Templates/07.Tree/Tree-SegmentTree-Update-Point.py b/codes/python/05_tree/tree_segmentTree_update_point.py similarity index 100% rename from Templates/07.Tree/Tree-SegmentTree-Update-Point.py rename to codes/python/05_tree/tree_segmentTree_update_point.py diff --git a/Templates/07.Tree/Tree-UnionFind.py b/codes/python/05_tree/tree_unionFind.py similarity index 100% rename from Templates/07.Tree/Tree-UnionFind.py rename to codes/python/05_tree/tree_unionFind.py diff --git a/Templates/07.Tree/Tree-UnionFind-QuickFind.py b/codes/python/05_tree/tree_unionFind_QuickFind.py similarity index 100% rename from Templates/07.Tree/Tree-UnionFind-QuickFind.py rename to codes/python/05_tree/tree_unionFind_QuickFind.py diff --git a/Templates/07.Tree/Tree-UnionFind-QuickUnion.py b/codes/python/05_tree/tree_unionFind_QuickUnion.py similarity index 100% rename from Templates/07.Tree/Tree-UnionFind-QuickUnion.py rename to codes/python/05_tree/tree_unionFind_QuickUnion.py diff --git a/Templates/07.Tree/Tree-UnionFind-UnoinByRank.py b/codes/python/05_tree/tree_unionFind_UnoinByRank.py similarity index 100% rename from Templates/07.Tree/Tree-UnionFind-UnoinByRank.py rename to codes/python/05_tree/tree_unionFind_UnoinByRank.py diff --git a/Templates/07.Tree/Tree-UnionFind-UnoinBySize.py b/codes/python/05_tree/tree_unionFind_UnoinBySize.py similarity index 100% rename from Templates/07.Tree/Tree-UnionFind-UnoinBySize.py rename to codes/python/05_tree/tree_unionFind_UnoinBySize.py diff --git a/Templates/08.Graph/Graph-Adjacency-List.py b/codes/python/06_graph/Graph-Adjacency-List.py similarity index 100% rename from Templates/08.Graph/Graph-Adjacency-List.py rename to codes/python/06_graph/Graph-Adjacency-List.py diff --git a/Templates/08.Graph/Graph-Adjacency-Matrix.py b/codes/python/06_graph/Graph-Adjacency-Matrix.py similarity index 100% rename from Templates/08.Graph/Graph-Adjacency-Matrix.py rename to codes/python/06_graph/Graph-Adjacency-Matrix.py diff --git a/Templates/08.Graph/Graph-BFS.py b/codes/python/06_graph/Graph-BFS.py similarity index 100% rename from Templates/08.Graph/Graph-BFS.py rename to codes/python/06_graph/Graph-BFS.py diff --git a/Templates/08.Graph/Graph-Bellman-Ford.py b/codes/python/06_graph/Graph-Bellman-Ford.py similarity index 100% rename from Templates/08.Graph/Graph-Bellman-Ford.py rename to codes/python/06_graph/Graph-Bellman-Ford.py diff --git a/Templates/08.Graph/Graph-DFS.py b/codes/python/06_graph/Graph-DFS.py similarity index 100% rename from Templates/08.Graph/Graph-DFS.py rename to codes/python/06_graph/Graph-DFS.py diff --git a/Templates/08.Graph/Graph-Edgeset-Array.py b/codes/python/06_graph/Graph-Edgeset-Array.py similarity index 100% rename from Templates/08.Graph/Graph-Edgeset-Array.py rename to codes/python/06_graph/Graph-Edgeset-Array.py diff --git a/Templates/08.Graph/Graph-Hash-Table.py b/codes/python/06_graph/Graph-Hash-Table.py similarity index 100% rename from Templates/08.Graph/Graph-Hash-Table.py rename to codes/python/06_graph/Graph-Hash-Table.py diff --git a/Templates/08.Graph/Graph-Kruskal.py b/codes/python/06_graph/Graph-Kruskal.py similarity index 100% rename from Templates/08.Graph/Graph-Kruskal.py rename to codes/python/06_graph/Graph-Kruskal.py diff --git a/Templates/08.Graph/Graph-Linked-Forward-Star.py b/codes/python/06_graph/Graph-Linked-Forward-Star.py similarity index 100% rename from Templates/08.Graph/Graph-Linked-Forward-Star.py rename to codes/python/06_graph/Graph-Linked-Forward-Star.py diff --git a/Templates/08.Graph/Graph-Prim.py b/codes/python/06_graph/Graph-Prim.py similarity index 100% rename from Templates/08.Graph/Graph-Prim.py rename to codes/python/06_graph/Graph-Prim.py diff --git a/Templates/08.Graph/Graph-Topological-Sorting-DFS.py b/codes/python/06_graph/Graph-Topological-Sorting-DFS.py similarity index 100% rename from Templates/08.Graph/Graph-Topological-Sorting-DFS.py rename to codes/python/06_graph/Graph-Topological-Sorting-DFS.py diff --git a/Templates/08.Graph/Graph-Topological-Sorting-Kahn.py b/codes/python/06_graph/Graph-Topological-Sorting-Kahn.py similarity index 100% rename from Templates/08.Graph/Graph-Topological-Sorting-Kahn.py rename to codes/python/06_graph/Graph-Topological-Sorting-Kahn.py diff --git a/Templates/10.Dynamic-Programming/Digit-DP.py b/codes/python/08_dynamic_programming/Digit-DP.py similarity index 100% rename from Templates/10.Dynamic-Programming/Digit-DP.py rename to codes/python/08_dynamic_programming/Digit-DP.py diff --git a/Templates/10.Dynamic-Programming/Pack-2DCostPack.py b/codes/python/08_dynamic_programming/Pack-2DCostPack.py similarity index 100% rename from Templates/10.Dynamic-Programming/Pack-2DCostPack.py rename to codes/python/08_dynamic_programming/Pack-2DCostPack.py diff --git a/Templates/10.Dynamic-Programming/Pack-CompletePack.py b/codes/python/08_dynamic_programming/Pack-CompletePack.py similarity index 100% rename from Templates/10.Dynamic-Programming/Pack-CompletePack.py rename to codes/python/08_dynamic_programming/Pack-CompletePack.py diff --git a/Templates/10.Dynamic-Programming/Pack-GroupPack.py b/codes/python/08_dynamic_programming/Pack-GroupPack.py similarity index 100% rename from Templates/10.Dynamic-Programming/Pack-GroupPack.py rename to codes/python/08_dynamic_programming/Pack-GroupPack.py diff --git a/Templates/10.Dynamic-Programming/Pack-MixedPack.py b/codes/python/08_dynamic_programming/Pack-MixedPack.py similarity index 100% rename from Templates/10.Dynamic-Programming/Pack-MixedPack.py rename to codes/python/08_dynamic_programming/Pack-MixedPack.py diff --git a/Templates/10.Dynamic-Programming/Pack-MultiplePack.py b/codes/python/08_dynamic_programming/Pack-MultiplePack.py similarity index 100% rename from Templates/10.Dynamic-Programming/Pack-MultiplePack.py rename to codes/python/08_dynamic_programming/Pack-MultiplePack.py diff --git a/Templates/10.Dynamic-Programming/Pack-ProblemVariants.py b/codes/python/08_dynamic_programming/Pack-ProblemVariants.py similarity index 100% rename from Templates/10.Dynamic-Programming/Pack-ProblemVariants.py rename to codes/python/08_dynamic_programming/Pack-ProblemVariants.py diff --git a/Templates/10.Dynamic-Programming/Pack-ZeroOnePack.py b/codes/python/08_dynamic_programming/Pack-ZeroOnePack.py similarity index 100% rename from Templates/10.Dynamic-Programming/Pack-ZeroOnePack.py rename to codes/python/08_dynamic_programming/Pack-ZeroOnePack.py diff --git a/docs/00_preface/00_01_about_the_book.md b/docs/00_preface/00_01_about_the_book.md new file mode 100644 index 00000000..7b2f251b --- /dev/null +++ b/docs/00_preface/00_01_about_the_book.md @@ -0,0 +1,73 @@ +## 1. 本书简介 + +本书不仅仅只是一本算法题解书,更是一本算法与数据结构基础知识的讲解书。 + +- 超详细的 **「算法与数据结构」** 基础讲解教程,**「LeetCode 800+ 道」** 经典题目详细解析。 +- 本项目易于理解,没有大跨度的思维跳跃,项目中使用大量图示、例子来帮助理解。 +- 本项目先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。 +- 本项目从各大知名互联网公司面试算法题中整理汇总了 **「LeetCode 200 道高频面试题」**,帮助面试者更有针对性的准备面试。 + +### 1.1 目标读者 + +- 拥有 Python 编程基础或其他编程语言基础的编程爱好者 +- 对 LeetCode 刷题感兴趣或准备算法面试的面试人员 +- 对算法感兴趣的计算机专业学生或程序员 +- 想要提升编程思维和问题解决能力的开发者 + +### 1.2 内容结构 + +本书采用算法与数据结构相结合的方法,把内容分为如下几个主要部分: + +- **序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 +- **第 1 章 数组**:讲解数组的基本概念、数组的基本操作。 +- **第 2 章 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。 +- **第 3 章 堆栈、队列、哈希表**:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 +- **第 4 章 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。 +- **第 5 章 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。 +- **第 6 章 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。 +- **第 7 章 基础算法**:介绍基本的算法思想。包括枚举、递归、分治、回溯、贪心以及位运算。 +- **第 8 章 动态规划**:介绍动态规划的基础知识、各种动态规划题型的解法。 +- **题目解析**:讲解 LeetCode 上刷过的所有题目,可按照对应题号进行检索和学习。 + +### 1.3 使用说明 + +- 本电子书的左侧为所有章节目录导航,可直接点击对应章节跳转阅读。 +- 本电子书左上角有搜索栏,可以帮你迅速找到想看的章节和题解文章。 +- 本电子书每页都接入了 giscus 评论系统,可在每页下方的评论框进行评论(需使用 GitHub 账号登录)。 +- 建议按照章节顺序学习,循序渐进地掌握各个知识点。 +- 每章末尾都配有练习题,建议及时完成以巩固所学知识。 + +## 2. 写作初衷与算法价值 + +### 2.1 本书起因 + +我想写一本通俗易懂的算法书已经很久了,久到大概有 6 年那么久。至今我还记着上大学时立下的 flag,我要把我所学的算法知识总结起来,整理成册,编辑成书。然后大大方方的在封面书上自己的昵称,再把它分享给想要学习算法的朋友们看。 + +结果是万万没想到,这一晃过去,毕业后参加工作都已经 5 年了,每天忙于开发需求、业务逻辑,写书这件事也跟其他大多数的待办事项和计划清单一样,被无限期地闲置一旁,再也不管不顾了。 + +不过,好在是今年我又重新拾起了算法,开始和朋友一起愉快的在 LeetCode 上刷题。于是往日的目标又浮现在了眼前,所以这次痛下决心,立志写一本浅显易懂、图文并茂的算法书,能够让没有算法基础的新手能够通过这本书学到一些「算法和数据结构」相关知识,并通过在 LeetCode 刷题的方式,锻炼自己的解决问题的能力和思维方式。 + +### 2.2 算法的重要性 + +**「算法和数据结构」** 是计算机程序设计的重要理论技术基础,但很多程序员忽略了它的重要性。在日常开发工作中,最多的情况是使用成熟的开发框架,利用已经封装好的接口,进行 CRUD(增删改查)操作,似乎很少会需要自己实现相应的数据结构和算法。 + +况且工作中用到的编程语言、开发框架、开发平台,更新速度堪比摩尔定律。以前端为例,React 还没学明白呢,Vue 就火起来了。Vue 2.0 的文档还在研究呢,Vue 3.0 就发布了。很多时候,连新的技术还学不过来呢,哪还有时间去专门研究算法和数据结构呢。 + +诚然,语言、技术、框架固然重要,但背后的计算机算法和理论更为重要。因为语言、技术、框架的更新日新月异,但万变不离其宗的是背后的算法和理论,例如:**数据结构**、**算法**、**编译原理**、**计算机网络**、**计算机体系结构** 等等。任凭新技术如何变化,只要掌握了这些计算机科学的核心理论,就可以见招拆招,让自己立于不败之地。从此无论是看懂底层系统的设计原理、框架背后的设计思想,还是学习新技术、提升工作实战的效率,都可以做到得心应手。 + +**学习数据结构与算法的关键,在于掌握其中的思想和精髓,学会解决实际问题的方法。** + +## 3. 相关说明 + +### 3.1 互助与勘误 + +限于本人的水平和经验,书中一定不乏纰漏和谬误之处。恳切希望读者给予批评指正。这将有利于我改进和提高,以帮助更多的读者。如果您对本书有任何评论和建议,或者遇到问题需要帮助,可在每页评论区留言,或者致信作者邮箱 [i@itcharge.cn](mailto:i@itcharge.cn),我将不胜感激。 + +### 3.2 版权说明 + +- 本书采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 +- 本书题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 + +### 3.3 致谢 + +在本书构思与写作阶段,很多朋友给我提出了有益的意见和建议。这些意见和建议令我受益匪浅。感谢在本书著作准备过程中,帮助过我的朋友,以及一起陪我刷题打卡的朋友,还有提供宝贵意见的读者。谢谢诸位。 \ No newline at end of file diff --git a/Contents/00.Introduction/01.Data-Structures-Algorithms.md b/docs/00_preface/00_02_data_structures_algorithms.md similarity index 97% rename from Contents/00.Introduction/01.Data-Structures-Algorithms.md rename to docs/00_preface/00_02_data_structures_algorithms.md index 82da3984..3805867f 100644 --- a/Contents/00.Introduction/01.Data-Structures-Algorithms.md +++ b/docs/00_preface/00_02_data_structures_algorithms.md @@ -28,7 +28,7 @@ 数据结构的作用,就是为了提高计算机硬件的利用率。比如说:操作系统想要查找应用程序 「Microsoft Word」 在硬盘中的哪一个位置存储。如果对硬盘全部扫描一遍的话肯定效率很低,但如果使用「B+ 树」作为索引,就能很容易的搜索到 `Microsoft Word` 这个单词,然后很快的定位到 「Microsoft Word」这个应用程序的文件信息,从而从文件信息中找到对应的磁盘位置。 -而学习数据结构,就是为了帮助我们了解和掌握计算机中的数据是以何种方式进行组织、存储的。 +学习数据结构,就是为了帮助我们了解和掌握计算机中的数据是以何种方式进行组织、存储的。 --- @@ -163,7 +163,7 @@ 1. **所需运行时间更少(时间复杂度更低)**; 2. **占用内存空间更小(空间复杂度更低)**。 -假设计算机执行一条命令的时间为 $1$ 纳秒(并不科学),第一种算法需要执行 $100$ 纳秒,第二种算法则需要执行 $3$ 纳秒。如果不考虑占用内存空间的话,很明显第二种算法比第一种算法要好很多。 +假设计算机执行一条命令的时间为 $1$ 纳秒(假定值),第一种算法需要执行 $100$ 纳秒,第二种算法则需要执行 $3$ 纳秒。如果不考虑占用内存空间的话,很明显第二种算法比第一种算法要好很多。 假设计算机一个内存单元的大小为一个字节,第一种算法需要占用 $3$ 个字节大小的内存空间,第二种算法则需要占用 $100$ 个字节大小的内存空间,如果不考虑运行时间的话,很明显第一种算法比第二种算法要好很多。 @@ -180,7 +180,7 @@ ## 3. 总结 -### 3.1 数据结构总结 +### 3.1 数据结构 数据结构可以分为 **「逻辑结构」** 和 **「物理结构」**。 @@ -192,7 +192,7 @@ 例如:线性表中的「栈」,其数据元素之间的关系是一对一的,除头和尾结点之外的每个结点都有唯一的前驱和唯一的后继,这体现的是逻辑结构。而对于栈中的结点来说,可以使用顺序存储(也就是 **顺序栈**)的方式存储在计算机中,其结构在计算机中的表现形式就是一段连续的存储空间,栈中每个结点和它的前驱结点、后继结点在物理上都是相邻的。当然,栈中的结点也可以使用链式存储(也即是 **链式栈**),每个结点和它的前驱结点、后继结点在物理上不一定相邻,每个结点是靠前驱结点的指针域来进行访问的。 -### 3.2 算法总结 +### 3.2 算法 **「算法」** 指的就是解决问题的方法。算法是一系列的运算步骤,这些运算步骤可以解决特定的问题。 diff --git a/Contents/00.Introduction/02.Algorithm-Complexity.md b/docs/00_preface/00_03_algorithm_complexity.md similarity index 93% rename from Contents/00.Introduction/02.Algorithm-Complexity.md rename to docs/00_preface/00_03_algorithm_complexity.md index 8d001d38..2e1e4e94 100644 --- a/Contents/00.Introduction/02.Algorithm-Complexity.md +++ b/docs/00_preface/00_03_algorithm_complexity.md @@ -43,15 +43,24 @@ ```python def algorithm(n): - fact = 1 - for i in range(1, n + 1): - fact *= i - return fact + fact = 1 # 执行 1 次 + for i in range(1, n + 1): # 执行 n 次 + fact *= i # 执行 n 次 + return fact # 执行 1 次 ``` -把上述算法中所有语句的执行次数加起来 $1 + n + n + 1 = 2 \times n + 2$,可以用一个函数 $f(n)$ 来表达语句的执行次数:$f(n) = 2 \times n + 2$。 +在这个例子中: -则时间复杂度的函数可以表示为:$T(n) = O(f(n))$。它表示的是随着问题规模 n 的增大,算法执行时间的增长趋势跟 $f(n)$ 相同。$O$ 是一种渐进符号,$T(n)$ 称作算法的 **渐进时间复杂度(Asymptotic Time Complexity)**,简称为 **时间复杂度**。 +1. `fact = 1` 执行了 1 次。 +2. `for i in range(1, n + 1)` 执行了 n 次。 +3. `fact *= i` 执行了 n 次。 +4. `return fact` 执行了 1 次。 + +总执行次数为:$1 + n + n + 1 = 2 \times n + 2$,可以用一个函数 $f(n)$ 来表达语句的执行次数:$f(n) = 2 \times n + 2$。忽略掉 $f(n)$ 中的常数系数、低阶项、常数项,因此时间复杂度为 $O(n)$。 + +这个例子展示了如何从具体的执行次数推导出算法的时间复杂度。虽然实际执行次数是 $2 \times n + 2$,但在复杂度分析中,我们只关注增长最快的项,因此最终的时间复杂度是 $O(n)$。 + +时间复杂度的函数可以表示为:$T(n) = O(f(n))$。它表示的是随着问题规模 $n$ 的增大,算法执行时间的增长趋势跟 $f(n)$ 相同。$O$ 是一种渐进符号,与 $f(n)$ 成正比例关系,$T(n)$ 称作算法的 **渐进时间复杂度(Asymptotic Time Complexity)**,简称为 **时间复杂度**。 所谓「算法执行时间的增长趋势」是一个模糊的概念,通常我们要借助像上边公式中 $O$ 这样的「渐进符号」来表示时间复杂度。 @@ -283,7 +292,7 @@ def algorithm(n): 根据从小到大排序,常见的算法复杂度主要有:$O(1)$ < $O(\log n)$ < $O(n)$ < $O(n^2)$ < $O(2^n)$ 等。 -## 算法复杂度总结 +## 4. 总结 **「算法复杂度」** 包括 **「时间复杂度」** 和 **「空间复杂度」**,用来分析算法执行效率与输入问题规模 $n$ 的增长关系。通常采用 **「渐进符号」** 的形式来表示「算法复杂度」。 diff --git a/Contents/00.Introduction/03.LeetCode-Guide.md b/docs/00_preface/00_04_leetcode_guide.md similarity index 84% rename from Contents/00.Introduction/03.LeetCode-Guide.md rename to docs/00_preface/00_04_leetcode_guide.md index 01361a11..f33cb1d5 100644 --- a/Contents/00.Introduction/03.LeetCode-Guide.md +++ b/docs/00_preface/00_04_leetcode_guide.md @@ -64,7 +64,7 @@ LeetCode 提供了题目的搜索过滤功能。可以筛选相关题单、不 ![LeetCode 题目详情](https://qcdn.itcharge.cn/images/20210901155529.png) -可以看到左侧区域为题目内容描述区域,在这里可以看到题目的内容描述和一些示例数据。而右侧是代码编辑区域,代码编辑区域里边默认显示了待实现的方法。 +可以看到左侧区域为题目内容描述区域,还可以看到题目的内容描述和一些示例数据。而右侧是代码编辑区域,代码编辑区域里边默认显示了待实现的方法。 我们需要在代码编辑器中根据方法给定的参数实现对应的算法,并返回题目要求的结果。然后还要经过「执行代码」测试结果,点击「提交」后,显示执行结果为「**通过**」时,才算完成一道题目。 @@ -82,96 +82,64 @@ LeetCode 提供了题目的搜索过滤功能。可以筛选相关题单、不 - 如果执行结果显示「编译出错」、「解答错误」、「执行出错」、「超出时间限制」、「超出内存限制」等情况,则需要回到第 3 步重新思考解决思路,或者思考特殊数据,并改写代码。 7. 如果执行结果显示「通过」,恭喜你通过了这道题目。 -接下来我们将通过「[1. 两数之和 - 力扣(LeetCode)](https://leetcode.cn/problems/two-sum/)」这道题目来讲解如何在 LeetCode 上刷题。 +接下来我们将通过「[2235. 两整数相加 - 力扣(LeetCode)](https://leetcode.cn/problems/add-two-integers/)」这道题目来讲解如何在 LeetCode 上刷题。 ### 2.5 LeetCode 第一题 #### 2.5.1 题目链接 -- [1. 两数之和 - 力扣(LeetCode)](https://leetcode.cn/problems/two-sum/) +- [2235. 两整数相加 - 力扣(LeetCode)](https://leetcode.cn/problems/add-two-integers/) #### 2.5.2 题目大意 -**描述**:给定一个整数数组 $nums$ 和一个整数目标值 $target$。 +**描述**:给定两个整数 $num1$ 和 $num2$。 -**要求**:在该数组中找出和为 $target$ 的两个整数,并输出这两个整数的下标。可以按任意顺序返回答案。 +**要求**:返回这两个整数的和。 **说明**: -- $2 \le nums.length \le 10^4$。 -- $-10^9 \le nums[i] \le 10^9$。 -- $-10^9 \le target \le 10^9$。 -- 只会存在一个有效答案。 +- $-100 \le num1, num2 \le 100$。 **示例**: - 示例 1: ```python -输入:nums = [2,7,11,15], target = 9 -输出:[0,1] -解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 +示例 1: +输入:num1 = 12, num2 = 5 +输出:17 +解释:num1 是 12,num2 是 5,它们的和是 12 + 5 = 17,因此返回 17。 ``` - 示例 2: ```python -输入:nums = [3,2,4], target = 6 -输出:[1,2] +输入:num1 = -10, num2 = 4 +输出:-6 +解释:num1 + num2 = -6,因此返回 -6。 ``` #### 2.5.3 解题思路 -##### 思路 1:枚举算法 +##### 思路 1:直接计算 -1. 使用两重循环枚举数组中每一个数 $nums[i]$、$nums[j]$,判断所有的 $nums[i] + nums[j]$ 是否等于 $target$。 -2. 如果出现 $nums[i] + nums[j] == target$,则说明数组中存在和为 $target$ 的两个整数,将两个整数的下标 $i$、$j$ 输出即可。 +1. 直接计算整数 $num1$ 与 $num2$ 的和,返回 $num1 + num2$ 即可。 ##### 思路 1:代码 ```python class Solution: - def twoSum(self, nums: List[int], target: int) -> List[int]: - for i in range(len(nums)): - for j in range(i + 1, len(nums)): - if i != j and nums[i] + nums[j] == target: - return [i, j] - return [] + def sum(self, num1: int, num2: int) -> int: + return num1 + num2 ``` ##### 思路 1:复杂度分析 -- **时间复杂度**:$O(n^2)$,其中 $n$ 是数组 $nums$ 的元素数量。 +- **时间复杂度**:$O(1)$。 - **空间复杂度**:$O(1)$。 -##### 思路 2:哈希表 -哈希表中键值对信息为 $target - nums[i]: i$,其中 $i$ 为下标。 - -1. 遍历数组,对于每一个数 $nums[i]$: - 1. 先查找字典中是否存在 $target - nums[i]$,存在则输出 $target - nums[i]$ 对应的下标和当前数组的下标 $i$。 - 2. 不存在则在字典中存入 $target - nums[i]$ 的下标 $i$。 - -##### 思路 2:代码 - -```python -def twoSum(self, nums: List[int], target: int) -> List[int]: - numDict = dict() - for i in range(len(nums)): - if target-nums[i] in numDict: - return numDict[target-nums[i]], i - numDict[nums[i]] = i - return [0] -``` - -##### 思路 2:复杂度分析 - -- **时间复杂度**:$O(n)$,其中 $n$ 是数组 $nums$ 的元素数量。 -- **空间复杂度**:$O(n)$。 - -理解了上面这道题的题意,就可以试着自己编写代码,并尝试提交通过。也可以通过我的解题思路和解题代码,理解之后进行编写代码,并尝试提交通过。 - -如果提交结果显示「通过」,那么恭喜你完成了 LeetCode 上的第一题。虽然只是一道题,但这意味着刷题计划的开始!希望你能坚持下去,得到应有的收获。 +理解了上面这道题的题意,就可以试着自己编写代码,并尝试提交通过。如果提交结果显示「通过」,那么恭喜你完成了 LeetCode 上的第一题。虽然只是一道题,但这意味着刷题计划的开始!希望你能坚持下去,得到应有的收获。 ## 3. LeetCode 刷题攻略 @@ -196,7 +164,7 @@ def twoSum(self, nums: List[int], target: int) -> List[int]: 当然,也可以直接看我写的「算法通关手册」,欢迎指正和提出建议,万分感谢。 -- 「算法通关手册」GitHub 地址:[https://github.com/itcharge/LeetCode-Py](https://github.com/itcharge/LeetCode-Py) +- 「算法通关手册」GitHub 地址:[https://github.com/itcharge/AlgoNote](https://github.com/itcharge/AlgoNote) - 「算法通关手册」电子书网站地址:[https://algo.itcharge.cn](https://algo.itcharge.cn) ### 3.2 LeetCode 刷题顺序 @@ -215,15 +183,15 @@ LeetCode 的题目序号并不是按照难易程度进行排序的,所以除 或者直接按照我整理的分类刷题列表进行刷题: -- 刷题列表(GitHub 版)链接:[点击打开「GitHub 版分类刷题列表」](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/05.Categories-List.md) +- 刷题列表(GitHub 版)链接:[点击打开「GitHub 版分类刷题列表」](https://github.com/itcharge/AlgoNote/blob/main/Contents/00.Introduction/05.Categories-List.md) - 刷题列表(网页版)链接:[点击打开「网页版分类刷题列表」](https://algo.itcharge.cn/00.Introduction/05.Categories-List/) 正在准备面试、没有太多时间刷题的小伙伴,可以按照我总结的「LeetCode 面试最常考 100 题」、「LeetCode 面试最常考 200 题」进行刷题。 > **说明**:「LeetCode 面试最常考 100 题」、「LeetCode 面试最常考 200 题」是笔者根据「[CodeTop 企业题库](https://codetop.cc/home)」按频度从高到低进行筛选,并且去除了一部分 LeetCode 上没有的题目和重复题目后得到的题目清单。 -- 「LeetCode 面试最常考 100 题(GitHub 版)」链接:[点击打开「LeetCode 面试最常考 100 题(GitHub 版)」](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/06.Interview-100-List.md) -- 「LeetCode 面试最常考 200 题(GitHub 版)」链接:[点击打开「LeetCode 面试最常考 200 题(GitHub 版)」](https://github.com/itcharge/LeetCode-Py/blob/main/Contents/00.Introduction/07.Interview-200-List.md) +- 「LeetCode 面试最常考 100 题(GitHub 版)」链接:[点击打开「LeetCode 面试最常考 100 题(GitHub 版)」](https://github.com/itcharge/AlgoNote/blob/main/Contents/00.Introduction/06.Interview-100-List.md) +- 「LeetCode 面试最常考 200 题(GitHub 版)」链接:[点击打开「LeetCode 面试最常考 200 题(GitHub 版)」](https://github.com/itcharge/AlgoNote/blob/main/Contents/00.Introduction/07.Interview-200-List.md) --- @@ -300,6 +268,18 @@ LeetCode 的题目序号并不是按照难易程度进行排序的,所以除 这些话有些鸡汤了,但都是我的心里话。希望大家能够一起坚持刷题,争取早日实现自己的目标。 +## 4. 总结 + +### 4.1 LeetCode + +LeetCode 是一个在线编程练习平台,主要用于提升算法和编程能力。它包含大量题目,涵盖多种编程语言,适合准备技术面试。 + +新手可以从简单题目开始,逐步学习数据结构和算法。注册后,用户可以通过题库选择题目,按标签或难度分类练习。刷题时,建议使用熟悉的编程语言,如 Python,以提高效率。 + +### 4.2 刷题技巧 + +刷题需要坚持和重复练习。按专题分类刷题效果更好,可以巩固知识点。写解题报告有助于加深理解。 + ## 参考资料 - 【文章】[What is LeetCode? - Quora](https://www.quora.com/What-is-Leetcode) diff --git a/docs/00_preface/00_05_solutions_list.md b/docs/00_preface/00_05_solutions_list.md new file mode 100644 index 00000000..8f5b0623 --- /dev/null +++ b/docs/00_preface/00_05_solutions_list.md @@ -0,0 +1,1036 @@ +# LeetCode 题解(已完成 860 道) + +### 第 1 ~ 99 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | +| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers/) | 递归、链表、数学 | 中等 | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | +| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) | 双指针、字符串、动态规划 | 中等 | +| [0007. 整数反转](https://leetcode.cn/problems/reverse-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-integer/) | 数学 | 中等 | +| [0008. 字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi/) | 字符串 | 中等 | +| [0009. 回文数](https://leetcode.cn/problems/palindrome-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/palindrome-number/) | 数学 | 简单 | +| [0010. 正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching/) | 递归、字符串、动态规划 | 困难 | +| [0011. 盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water/) | 贪心、数组、双指针 | 中等 | +| [0012. 整数转罗马数字](https://leetcode.cn/problems/integer-to-roman/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/integer-to-roman/) | 哈希表、数学、字符串 | 中等 | +| [0013. 罗马数字转整数](https://leetcode.cn/problems/roman-to-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/roman-to-integer/) | 哈希表、数学、字符串 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | +| [0016. 最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest/) | 数组、双指针、排序 | 中等 | +| [0017. 电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/letter-combinations-of-a-phone-number/) | 哈希表、字符串、回溯 | 中等 | +| [0018. 四数之和](https://leetcode.cn/problems/4sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum/) | 数组、双指针、排序 | 中等 | +| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list/) | 链表、双指针 | 中等 | +| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses/) | 栈、字符串 | 简单 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | +| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses/) | 字符串、动态规划、回溯 | 中等 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs/) | 递归、链表 | 中等 | +| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group/) | 递归、链表 | 困难 | +| [0026. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array/) | 数组、双指针 | 简单 | +| [0027. 移除元素](https://leetcode.cn/problems/remove-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-element/) | 数组、双指针 | 简单 | +| [0028. 找出字符串中第一个匹配项的下标](https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string/) | 双指针、字符串、字符串匹配 | 简单 | +| [0029. 两数相除](https://leetcode.cn/problems/divide-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/divide-two-integers/) | 位运算、数学 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | +| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | +| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array/) | 数组、二分查找 | 中等 | +| [0035. 搜索插入位置](https://leetcode.cn/problems/search-insert-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-insert-position/) | 数组、二分查找 | 简单 | +| [0036. 有效的数独](https://leetcode.cn/problems/valid-sudoku/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-sudoku/) | 数组、哈希表、矩阵 | 中等 | +| [0037. 解数独](https://leetcode.cn/problems/sudoku-solver/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver/) | 数组、哈希表、回溯、矩阵 | 困难 | +| [0038. 外观数列](https://leetcode.cn/problems/count-and-say/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/count-and-say/) | 字符串 | 中等 | +| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum/) | 数组、回溯 | 中等 | +| [0040. 组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii/) | 数组、回溯 | 中等 | +| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive/) | 数组、哈希表 | 困难 | +| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) | 栈、数组、双指针、动态规划、单调栈 | 困难 | +| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings/) | 数学、字符串、模拟 | 中等 | +| [0044. 通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching/) | 贪心、递归、字符串、动态规划 | 困难 | +| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii/) | 贪心、数组、动态规划 | 中等 | +| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations/) | 数组、回溯 | 中等 | +| [0047. 全排列 II](https://leetcode.cn/problems/permutations-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii/) | 数组、回溯、排序 | 中等 | +| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image/) | 数组、数学、矩阵 | 中等 | +| [0049. 字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams/) | 数组、哈希表、字符串、排序 | 中等 | +| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) | 递归、数学 | 中等 | +| [0051. N 皇后](https://leetcode.cn/problems/n-queens/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens/) | 数组、回溯 | 困难 | +| [0052. N 皇后 II](https://leetcode.cn/problems/n-queens-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens-ii/) | 回溯 | 困难 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | +| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix/) | 数组、矩阵、模拟 | 中等 | +| [0055. 跳跃游戏](https://leetcode.cn/problems/jump-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game/) | 贪心、数组、动态规划 | 中等 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | +| [0058. 最后一个单词的长度](https://leetcode.cn/problems/length-of-last-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/length-of-last-word/) | 字符串 | 简单 | +| [0059. 螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii/) | 数组、矩阵、模拟 | 中等 | +| [0061. 旋转链表](https://leetcode.cn/problems/rotate-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list/) | 链表、双指针 | 中等 | +| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) | 数学、动态规划、组合数学 | 中等 | +| [0063. 不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii/) | 数组、动态规划、矩阵 | 中等 | +| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum/) | 数组、动态规划、矩阵 | 中等 | +| [0066. 加一](https://leetcode.cn/problems/plus-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/plus-one/) | 数组、数学 | 简单 | +| [0067. 二进制求和](https://leetcode.cn/problems/add-binary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-binary/) | 位运算、数学、字符串、模拟 | 简单 | +| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx/) | 数学、二分查找 | 简单 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | +| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance/) | 字符串、动态规划 | 中等 | +| [0073. 矩阵置零](https://leetcode.cn/problems/set-matrix-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/set-matrix-zeroes/) | 数组、哈希表、矩阵 | 中等 | +| [0074. 搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix/) | 数组、二分查找、矩阵 | 中等 | +| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) | 数组、双指针、排序 | 中等 | +| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring/) | 哈希表、字符串、滑动窗口 | 困难 | +| [0077. 组合](https://leetcode.cn/problems/combinations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combinations/) | 回溯 | 中等 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | +| [0079. 单词搜索](https://leetcode.cn/problems/word-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search/) | 深度优先搜索、数组、字符串、回溯、矩阵 | 中等 | +| [0080. 删除有序数组中的重复项 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii/) | 数组、双指针 | 中等 | +| [0081. 搜索旋转排序数组 II](https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array-ii/) | 数组、二分查找 | 中等 | +| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii/) | 链表、双指针 | 中等 | +| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list/) | 链表 | 简单 | +| [0084. 柱状图中最大的矩形](https://leetcode.cn/problems/largest-rectangle-in-histogram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/largest-rectangle-in-histogram/) | 栈、数组、单调栈 | 困难 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | +| [0089. 格雷编码](https://leetcode.cn/problems/gray-code/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/gray-code/) | 位运算、数学、回溯 | 中等 | +| [0090. 子集 II](https://leetcode.cn/problems/subsets-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii/) | 位运算、数组、回溯 | 中等 | +| [0091. 解码方法](https://leetcode.cn/problems/decode-ways/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways/) | 字符串、动态规划 | 中等 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | +| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses/) | 字符串、回溯 | 中等 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0095. 不同的二叉搜索树 II](https://leetcode.cn/problems/unique-binary-search-trees-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees-ii/) | 树、二叉搜索树、动态规划、回溯、二叉树 | 中等 | +| [0096. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees/) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | +| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | + + +### 第 100 ~ 199 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | +| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0106. 从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0107. 二叉树的层序遍历 II](https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal-ii/) | 树、广度优先搜索、二叉树 | 中等 | +| [0108. 将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree/) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | +| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii/) | 树、深度优先搜索、回溯、二叉树 | 中等 | +| [0115. 不同的子序列](https://leetcode.cn/problems/distinct-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/distinct-subsequences/) | 字符串、动态规划 | 困难 | +| [0116. 填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node/) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | +| [0117. 填充每个节点的下一个右侧节点指针 II](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii/) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | +| [0118. 杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle/) | 数组、动态规划 | 简单 | +| [0119. 杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii/) | 数组、动态规划 | 简单 | +| [0120. 三角形最小路径和](https://leetcode.cn/problems/triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle/) | 数组、动态规划 | 中等 | +| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock/) | 数组、动态规划 | 简单 | +| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) | 贪心、数组、动态规划 | 中等 | +| [0123. 买卖股票的最佳时机 III](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii/) | 数组、动态规划 | 困难 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) | 双指针、字符串 | 简单 | +| [0127. 单词接龙](https://leetcode.cn/problems/word-ladder/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-ladder/) | 广度优先搜索、哈希表、字符串 | 困难 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | +| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers/) | 树、深度优先搜索、二叉树 | 中等 | +| [0130. 被围绕的区域](https://leetcode.cn/problems/surrounded-regions/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/surrounded-regions/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0131. 分割回文串](https://leetcode.cn/problems/palindrome-partitioning/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/palindrome-partitioning/) | 字符串、动态规划、回溯 | 中等 | +| [0133. 克隆图](https://leetcode.cn/problems/clone-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph/) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | +| [0134. 加油站](https://leetcode.cn/problems/gas-station/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station/) | 贪心、数组 | 中等 | +| [0135. 分发糖果](https://leetcode.cn/problems/candy/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy/) | 贪心、数组 | 困难 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | +| [0137. 只出现一次的数字 II](https://leetcode.cn/problems/single-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number-ii/) | 位运算、数组 | 中等 | +| [0138. 随机链表的复制](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer/) | 哈希表、链表 | 中等 | +| [0139. 单词拆分](https://leetcode.cn/problems/word-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break/) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | +| [0140. 单词拆分 II](https://leetcode.cn/problems/word-break-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break-ii/) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划、回溯 | 困难 | +| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle/) | 哈希表、链表、双指针 | 简单 | +| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii/) | 哈希表、链表、双指针 | 中等 | +| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list/) | 栈、递归、链表、双指针 | 中等 | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0147. 对链表进行插入排序](https://leetcode.cn/problems/insertion-sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/insertion-sort-list/) | 链表、排序 | 中等 | +| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list/) | 链表、双指针、分治、排序、归并排序 | 中等 | +| [0149. 直线上最多的点数](https://leetcode.cn/problems/max-points-on-a-line/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/max-points-on-a-line/) | 几何、数组、哈希表、数学 | 困难 | +| [0150. 逆波兰表达式求值](https://leetcode.cn/problems/evaluate-reverse-polish-notation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/evaluate-reverse-polish-notation/) | 栈、数组、数学 | 中等 | +| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string/) | 双指针、字符串 | 中等 | +| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray/) | 数组、动态规划 | 中等 | +| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | +| [0154. 寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii/) | 数组、二分查找 | 困难 | +| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack/) | 栈、设计 | 中等 | +| [0159. 至多包含两个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists/) | 哈希表、链表、双指针 | 简单 | +| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element/) | 数组、二分查找 | 中等 | +| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap/) | 数组、桶排序、基数排序、排序 | 中等 | +| [0166. 分数到小数](https://leetcode.cn/problems/fraction-to-recurring-decimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/fraction-to-recurring-decimal/) | 哈希表、数学、字符串 | 中等 | +| [0167. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted/) | 数组、双指针、二分查找 | 中等 | +| [0168. Excel 表列名称](https://leetcode.cn/problems/excel-sheet-column-title/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-title/) | 数学、字符串 | 简单 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | +| [0170. 两数之和 III - 数据结构设计](https://leetcode.cn/problems/two-sum-iii-data-structure-design/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-iii-data-structure-design/) | 设计、数组、哈希表、双指针、数据流 | 简单 | +| [0171. Excel 表列序号](https://leetcode.cn/problems/excel-sheet-column-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-number/) | 数学、字符串 | 简单 | +| [0172. 阶乘后的零](https://leetcode.cn/problems/factorial-trailing-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/factorial-trailing-zeroes/) | 数学 | 中等 | +| [0173. 二叉搜索树迭代器](https://leetcode.cn/problems/binary-search-tree-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-search-tree-iterator/) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | +| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number/) | 贪心、数组、字符串、排序 | 中等 | +| [0188. 买卖股票的最佳时机 IV](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv/) | 数组、动态规划 | 困难 | +| [0189. 轮转数组](https://leetcode.cn/problems/rotate-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array/) | 数组、数学、双指针 | 中等 | +| [0190. 颠倒二进制位](https://leetcode.cn/problems/reverse-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-bits/) | 位运算、分治 | 简单 | +| [0191. 位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits/) | 位运算、分治 | 简单 | +| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber/) | 数组、动态规划 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | + + +### 第 200 ~ 299 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0201. 数字范围按位与](https://leetcode.cn/problems/bitwise-and-of-numbers-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/bitwise-and-of-numbers-range/) | 位运算 | 中等 | +| [0202. 快乐数](https://leetcode.cn/problems/happy-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/happy-number/) | 哈希表、数学、双指针 | 简单 | +| [0203. 移除链表元素](https://leetcode.cn/problems/remove-linked-list-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/remove-linked-list-elements/) | 递归、链表 | 简单 | +| [0204. 计数质数](https://leetcode.cn/problems/count-primes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-primes/) | 数组、数学、枚举、数论 | 中等 | +| [0205. 同构字符串](https://leetcode.cn/problems/isomorphic-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/isomorphic-strings/) | 哈希表、字符串 | 简单 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | +| [0207. 课程表](https://leetcode.cn/problems/course-schedule/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0208. 实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree/) | 设计、字典树、哈希表、字符串 | 中等 | +| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0210. 课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0211. 添加与搜索单词 - 数据结构设计](https://leetcode.cn/problems/design-add-and-search-words-data-structure/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/design-add-and-search-words-data-structure/) | 深度优先搜索、设计、字典树、字符串 | 中等 | +| [0212. 单词搜索 II](https://leetcode.cn/problems/word-search-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-search-ii/) | 字典树、数组、字符串、回溯、矩阵 | 困难 | +| [0213. 打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii/) | 数组、动态规划 | 中等 | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [0217. 存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate/) | 数组、哈希表、排序 | 简单 | +| [0218. 天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem/) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | +| [0219. 存在重复元素 II](https://leetcode.cn/problems/contains-duplicate-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-ii/) | 数组、哈希表、滑动窗口 | 简单 | +| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii/) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | +| [0222. 完全二叉树的节点个数](https://leetcode.cn/problems/count-complete-tree-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-complete-tree-nodes/) | 位运算、树、二分查找、二叉树 | 简单 | +| [0223. 矩形面积](https://leetcode.cn/problems/rectangle-area/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/rectangle-area/) | 几何、数学 | 中等 | +| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues/) | 栈、设计、队列 | 简单 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii/) | 栈、数学、字符串 | 中等 | +| [0231. 2 的幂](https://leetcode.cn/problems/power-of-two/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/power-of-two/) | 位运算、递归、数学 | 简单 | +| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks/) | 栈、设计、队列 | 简单 | +| [0233. 数字 1 的个数](https://leetcode.cn/problems/number-of-digit-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-digit-one/) | 递归、数学、动态规划 | 困难 | +| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list/) | 栈、递归、链表、双指针 | 简单 | +| [0235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree/) | 树、深度优先搜索、二叉树 | 中等 | +| [0237. 删除链表中的节点](https://leetcode.cn/problems/delete-node-in-a-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/delete-node-in-a-linked-list/) | 链表 | 中等 | +| [0238. 除自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-except-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/product-of-array-except-self/) | 数组、前缀和 | 中等 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii/) | 数组、二分查找、分治、矩阵 | 中等 | +| [0241. 为运算表达式设计优先级](https://leetcode.cn/problems/different-ways-to-add-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/different-ways-to-add-parentheses/) | 递归、记忆化搜索、数学、字符串、动态规划 | 中等 | +| [0242. 有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram/) | 哈希表、字符串、排序 | 简单 | +| [0249. 移位字符串分组](https://leetcode.cn/problems/group-shifted-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/group-shifted-strings/) | 数组、哈希表、字符串 | 中等 | +| [0257. 二叉树的所有路径](https://leetcode.cn/problems/binary-tree-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/binary-tree-paths/) | 树、深度优先搜索、字符串、回溯、二叉树 | 简单 | +| [0258. 各位相加](https://leetcode.cn/problems/add-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/add-digits/) | 数学、数论、模拟 | 简单 | +| [0259. 较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller/) | 数组、双指针、二分查找、排序 | 中等 | +| [0260. 只出现一次的数字 III](https://leetcode.cn/problems/single-number-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/single-number-iii/) | 位运算、数组 | 中等 | +| [0263. 丑数](https://leetcode.cn/problems/ugly-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number/) | 数学 | 简单 | +| [0264. 丑数 II](https://leetcode.cn/problems/ugly-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number-ii/) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | +| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | +| [0270. 最接近的二叉搜索树值](https://leetcode.cn/problems/closest-binary-search-tree-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/closest-binary-search-tree-value/) | 树、深度优先搜索、二叉搜索树、二分查找、二叉树 | 简单 | +| [0278. 第一个错误的版本](https://leetcode.cn/problems/first-bad-version/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/first-bad-version/) | 二分查找、交互 | 简单 | +| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares/) | 广度优先搜索、数学、动态规划 | 中等 | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | +| [0285. 二叉搜索树中的中序后继](https://leetcode.cn/problems/inorder-successor-in-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/inorder-successor-in-bst/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0286. 墙与门](https://leetcode.cn/problems/walls-and-gates/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/walls-and-gates/) | 广度优先搜索、数组、矩阵 | 中等 | +| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number/) | 位运算、数组、双指针、二分查找 | 中等 | +| [0288. 单词的唯一缩写](https://leetcode.cn/problems/unique-word-abbreviation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/unique-word-abbreviation/) | 设计、数组、哈希表、字符串 | 中等 | +| [0289. 生命游戏](https://leetcode.cn/problems/game-of-life/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/game-of-life/) | 数组、矩阵、模拟 | 中等 | +| [0290. 单词规律](https://leetcode.cn/problems/word-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-pattern/) | 哈希表、字符串 | 简单 | +| [0292. Nim 游戏](https://leetcode.cn/problems/nim-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/nim-game/) | 脑筋急转弯、数学、博弈 | 简单 | +| [0295. 数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream/) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | +| [0297. 二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree/) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | + + +### 第 300 ~ 399 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence/) | 数组、二分查找、动态规划 | 中等 | +| [0303. 区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable/) | 设计、数组、前缀和 | 简单 | +| [0304. 二维区域和检索 - 矩阵不可变](https://leetcode.cn/problems/range-sum-query-2d-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-2d-immutable/) | 设计、数组、矩阵、前缀和 | 中等 | +| [0307. 区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable/) | 设计、树状数组、线段树、数组 | 中等 | +| [0309. 买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown/) | 数组、动态规划 | 中等 | +| [0310. 最小高度树](https://leetcode.cn/problems/minimum-height-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/minimum-height-trees/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0312. 戳气球](https://leetcode.cn/problems/burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/burst-balloons/) | 数组、动态规划 | 困难 | +| [0315. 计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | +| [0316. 去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/remove-duplicate-letters/) | 栈、贪心、字符串、单调栈 | 中等 | +| [0318. 最大单词长度乘积](https://leetcode.cn/problems/maximum-product-of-word-lengths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/maximum-product-of-word-lengths/) | 位运算、数组、字符串 | 中等 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | +| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0324. 摆动排序 II](https://leetcode.cn/problems/wiggle-sort-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-sort-ii/) | 贪心、数组、分治、快速选择、排序 | 中等 | +| [0326. 3 的幂](https://leetcode.cn/problems/power-of-three/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-three/) | 递归、数学 | 简单 | +| [0328. 奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list/) | 链表 | 中等 | +| [0329. 矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix/) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | +| [0334. 递增的三元子序列](https://leetcode.cn/problems/increasing-triplet-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/increasing-triplet-subsequence/) | 贪心、数组 | 中等 | +| [0336. 回文对](https://leetcode.cn/problems/palindrome-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/palindrome-pairs/) | 字典树、数组、哈希表、字符串 | 困难 | +| [0337. 打家劫舍 III](https://leetcode.cn/problems/house-robber-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/house-robber-iii/) | 树、深度优先搜索、动态规划、二叉树 | 中等 | +| [0338. 比特位计数](https://leetcode.cn/problems/counting-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits/) | 位运算、动态规划 | 简单 | +| [0340. 至多包含 K 个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0341. 扁平化嵌套列表迭代器](https://leetcode.cn/problems/flatten-nested-list-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/flatten-nested-list-iterator/) | 栈、树、深度优先搜索、设计、队列、迭代器 | 中等 | +| [0342. 4的幂](https://leetcode.cn/problems/power-of-four/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-four/) | 位运算、递归、数学 | 简单 | +| [0343. 整数拆分](https://leetcode.cn/problems/integer-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break/) | 数学、动态规划 | 中等 | +| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) | 双指针、字符串 | 简单 | +| [0345. 反转字符串中的元音字母](https://leetcode.cn/problems/reverse-vowels-of-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-vowels-of-a-string/) | 双指针、字符串 | 简单 | +| [0346. 数据流中的移动平均值](https://leetcode.cn/problems/moving-average-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/moving-average-from-data-stream/) | 设计、队列、数组、数据流 | 简单 | +| [0347. 前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements/) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | +| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0351. 安卓系统手势解锁](https://leetcode.cn/problems/android-unlock-patterns/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/android-unlock-patterns/) | 位运算、动态规划、回溯、状态压缩 | 中等 | +| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes/) | 数组、二分查找、动态规划、排序 | 困难 | +| [0357. 统计各位数字都不同的数字个数](https://leetcode.cn/problems/count-numbers-with-unique-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-numbers-with-unique-digits/) | 数学、动态规划、回溯 | 中等 | +| [0359. 日志速率限制器](https://leetcode.cn/problems/logger-rate-limiter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/logger-rate-limiter/) | 设计、哈希表、数据流 | 简单 | +| [0360. 有序转化数组](https://leetcode.cn/problems/sort-transformed-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sort-transformed-array/) | 数组、数学、双指针、排序 | 中等 | +| [0367. 有效的完全平方数](https://leetcode.cn/problems/valid-perfect-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/valid-perfect-square/) | 数学、二分查找 | 简单 | +| [0370. 区间加法](https://leetcode.cn/problems/range-addition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-addition/) | 数组、前缀和 | 中等 | +| [0371. 两整数之和](https://leetcode.cn/problems/sum-of-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sum-of-two-integers/) | 位运算、数学 | 中等 | +| [0374. 猜数字大小](https://leetcode.cn/problems/guess-number-higher-or-lower/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower/) | 二分查找、交互 | 简单 | +| [0375. 猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii/) | 数学、动态规划、博弈 | 中等 | +| [0376. 摆动序列](https://leetcode.cn/problems/wiggle-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-subsequence/) | 贪心、数组、动态规划 | 中等 | +| [0377. 组合总和 Ⅳ](https://leetcode.cn/problems/combination-sum-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/combination-sum-iv/) | 数组、动态规划 | 中等 | +| [0378. 有序矩阵中第 K 小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/kth-smallest-element-in-a-sorted-matrix/) | 数组、二分查找、矩阵、排序、堆(优先队列) | 中等 | +| [0380. O(1) 时间插入、删除和获取随机元素](https://leetcode.cn/problems/insert-delete-getrandom-o1/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/insert-delete-getrandom-o1/) | 设计、数组、哈希表、数学、随机化 | 中等 | +| [0383. 赎金信](https://leetcode.cn/problems/ransom-note/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/ransom-note/) | 哈希表、字符串、计数 | 简单 | +| [0384. 打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array/) | 设计、数组、数学、随机化 | 中等 | +| [0386. 字典序排数](https://leetcode.cn/problems/lexicographical-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/lexicographical-numbers/) | 深度优先搜索、字典树 | 中等 | +| [0387. 字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/first-unique-character-in-a-string/) | 队列、哈希表、字符串、计数 | 简单 | +| [0389. 找不同](https://leetcode.cn/problems/find-the-difference/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/find-the-difference/) | 位运算、哈希表、字符串、排序 | 简单 | +| [0391. 完美矩形](https://leetcode.cn/problems/perfect-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/perfect-rectangle/) | 数组、扫描线 | 困难 | +| [0392. 判断子序列](https://leetcode.cn/problems/is-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/is-subsequence/) | 双指针、字符串、动态规划 | 简单 | +| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string/) | 栈、递归、字符串 | 中等 | +| [0395. 至少有 K 个重复字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-least-k-repeating-characters/) | 哈希表、字符串、分治、滑动窗口 | 中等 | +| [0399. 除法求值](https://leetcode.cn/problems/evaluate-division/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/evaluate-division/) | 深度优先搜索、广度优先搜索、并查集、图、数组、字符串、最短路 | 中等 | + + +### 第 400 ~ 499 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit/) | 数学、二分查找 | 中等 | +| [0403. 青蛙过河](https://leetcode.cn/problems/frog-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump/) | 数组、动态规划 | 困难 | +| [0404. 左叶子之和](https://leetcode.cn/problems/sum-of-left-leaves/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sum-of-left-leaves/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0405. 数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal/) | 位运算、数学 | 简单 | +| [0406. 根据身高重建队列](https://leetcode.cn/problems/queue-reconstruction-by-height/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/queue-reconstruction-by-height/) | 树状数组、线段树、数组、排序 | 中等 | +| [0409. 最长回文串](https://leetcode.cn/problems/longest-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-palindrome/) | 贪心、哈希表、字符串 | 简单 | +| [0410. 分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum/) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | +| [0412. Fizz Buzz](https://leetcode.cn/problems/fizz-buzz/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/fizz-buzz/) | 数学、字符串、模拟 | 简单 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | +| [0416. 分割等和子集](https://leetcode.cn/problems/partition-equal-subset-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/partition-equal-subset-sum/) | 数组、动态规划 | 中等 | +| [0417. 太平洋大西洋水流问题](https://leetcode.cn/problems/pacific-atlantic-water-flow/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/pacific-atlantic-water-flow/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | +| [0421. 数组中两个数的最大异或值](https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array/) | 位运算、字典树、数组、哈希表 | 中等 | +| [0424. 替换后的最长重复字符](https://leetcode.cn/problems/longest-repeating-character-replacement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-repeating-character-replacement/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0425. 单词方块](https://leetcode.cn/problems/word-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/word-squares/) | 字典树、数组、字符串、回溯 | 困难 | +| [0426. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list/) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | +| [0428. 序列化和反序列化 N 叉树](https://leetcode.cn/problems/serialize-and-deserialize-n-ary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/serialize-and-deserialize-n-ary-tree/) | 树、深度优先搜索、广度优先搜索、字符串 | 困难 | +| [0429. N 叉树的层序遍历](https://leetcode.cn/problems/n-ary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/n-ary-tree-level-order-traversal/) | 树、广度优先搜索 | 中等 | +| [0430. 扁平化多级双向链表](https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list/) | 深度优先搜索、链表、双向链表 | 中等 | +| [0435. 无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-overlapping-intervals/) | 贪心、数组、动态规划、排序 | 中等 | +| [0437. 路径总和 III](https://leetcode.cn/problems/path-sum-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/path-sum-iii/) | 树、深度优先搜索、二叉树 | 中等 | +| [0438. 找到字符串中所有字母异位词](https://leetcode.cn/problems/find-all-anagrams-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-anagrams-in-a-string/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0443. 压缩字符串](https://leetcode.cn/problems/string-compression/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression/) | 双指针、字符串 | 中等 | +| [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii/) | 栈、链表、数学 | 中等 | +| [0447. 回旋镖的数量](https://leetcode.cn/problems/number-of-boomerangs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/number-of-boomerangs/) | 数组、哈希表、数学 | 中等 | +| [0450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst/) | 树、二叉搜索树、二叉树 | 中等 | +| [0451. 根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency/) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | +| [0452. 用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons/) | 贪心、数组、排序 | 中等 | +| [0454. 四数相加 II](https://leetcode.cn/problems/4sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/4sum-ii/) | 数组、哈希表 | 中等 | +| [0455. 分发饼干](https://leetcode.cn/problems/assign-cookies/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/assign-cookies/) | 贪心、数组、双指针、排序 | 简单 | +| [0459. 重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern/) | 字符串、字符串匹配 | 简单 | +| [0461. 汉明距离](https://leetcode.cn/problems/hamming-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/hamming-distance/) | 位运算 | 简单 | +| [0463. 岛屿的周长](https://leetcode.cn/problems/island-perimeter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/island-perimeter/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | +| [0464. 我能赢吗](https://leetcode.cn/problems/can-i-win/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/can-i-win/) | 位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 | 中等 | +| [0467. 环绕字符串中唯一的子字符串](https://leetcode.cn/problems/unique-substrings-in-wraparound-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/unique-substrings-in-wraparound-string/) | 字符串、动态规划 | 中等 | +| [0468. 验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address/) | 字符串 | 中等 | +| [0473. 火柴拼正方形](https://leetcode.cn/problems/matchsticks-to-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/matchsticks-to-square/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [0474. 一和零](https://leetcode.cn/problems/ones-and-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/ones-and-zeroes/) | 数组、字符串、动态规划 | 中等 | +| [0480. 滑动窗口中位数](https://leetcode.cn/problems/sliding-window-median/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sliding-window-median/) | 数组、哈希表、滑动窗口、堆(优先队列) | 困难 | +| [0485. 最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones/) | 数组 | 简单 | +| [0486. 预测赢家](https://leetcode.cn/problems/predict-the-winner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/predict-the-winner/) | 递归、数组、数学、动态规划、博弈 | 中等 | +| [0487. 最大连续1的个数 II](https://leetcode.cn/problems/max-consecutive-ones-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones-ii/) | 数组、动态规划、滑动窗口 | 中等 | +| [0491. 非递减子序列](https://leetcode.cn/problems/non-decreasing-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-decreasing-subsequences/) | 位运算、数组、哈希表、回溯 | 中等 | +| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum/) | 数组、动态规划、回溯 | 中等 | +| [0496. 下一个更大元素 I](https://leetcode.cn/problems/next-greater-element-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/next-greater-element-i/) | 栈、数组、哈希表、单调栈 | 简单 | +| [0498. 对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse/) | 数组、矩阵、模拟 | 中等 | + + +### 第 500 ~ 599 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0501. 二叉搜索树中的众数](https://leetcode.cn/problems/find-mode-in-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-mode-in-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0503. 下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii/) | 栈、数组、单调栈 | 中等 | +| [0504. 七进制数](https://leetcode.cn/problems/base-7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7/) | 数学 | 简单 | +| [0506. 相对名次](https://leetcode.cn/problems/relative-ranks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/relative-ranks/) | 数组、排序、堆(优先队列) | 简单 | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [0513. 找树左下角的值](https://leetcode.cn/problems/find-bottom-left-tree-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-bottom-left-tree-value/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0515. 在每个树行中找最大值](https://leetcode.cn/problems/find-largest-value-in-each-tree-row/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-largest-value-in-each-tree-row/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0516. 最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence/) | 字符串、动态规划 | 中等 | +| [0518. 零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii/) | 数组、动态规划 | 中等 | +| [0525. 连续数组](https://leetcode.cn/problems/contiguous-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/contiguous-array/) | 数组、哈希表、前缀和 | 中等 | +| [0526. 优美的排列](https://leetcode.cn/problems/beautiful-arrangement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/beautiful-arrangement/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [0530. 二叉搜索树的最小绝对差](https://leetcode.cn/problems/minimum-absolute-difference-in-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-absolute-difference-in-bst/) | 树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0538. 把二叉搜索树转换为累加树](https://leetcode.cn/problems/convert-bst-to-greater-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/convert-bst-to-greater-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0539. 最小时间差](https://leetcode.cn/problems/minimum-time-difference/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-time-difference/) | 数组、数学、字符串、排序 | 中等 | +| [0542. 01 矩阵](https://leetcode.cn/problems/01-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/01-matrix/) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | +| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | +| [0546. 移除盒子](https://leetcode.cn/problems/remove-boxes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/remove-boxes/) | 记忆化搜索、数组、动态规划 | 困难 | +| [0547. 省份数量](https://leetcode.cn/problems/number-of-provinces/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/number-of-provinces/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0557. 反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii/) | 双指针、字符串 | 简单 | +| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k/) | 数组、哈希表、前缀和 | 中等 | +| [0561. 数组拆分](https://leetcode.cn/problems/array-partition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition/) | 贪心、数组、计数排序、排序 | 简单 | +| [0567. 字符串的排列](https://leetcode.cn/problems/permutation-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/permutation-in-string/) | 哈希表、双指针、字符串、滑动窗口 | 中等 | +| [0575. 分糖果](https://leetcode.cn/problems/distribute-candies/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/distribute-candies/) | 数组、哈希表 | 简单 | +| [0576. 出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths/) | 动态规划 | 中等 | +| [0583. 两个字符串的删除操作](https://leetcode.cn/problems/delete-operation-for-two-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/delete-operation-for-two-strings/) | 字符串、动态规划 | 中等 | +| [0589. N 叉树的前序遍历](https://leetcode.cn/problems/n-ary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-preorder-traversal/) | 栈、树、深度优先搜索 | 简单 | +| [0590. N 叉树的后序遍历](https://leetcode.cn/problems/n-ary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-postorder-traversal/) | 栈、树、深度优先搜索 | 简单 | +| [0599. 两个列表的最小索引总和](https://leetcode.cn/problems/minimum-index-sum-of-two-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-index-sum-of-two-lists/) | 数组、哈希表、字符串 | 简单 | + + +### 第 600 ~ 699 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0600. 不含连续1的非负整数](https://leetcode.cn/problems/non-negative-integers-without-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones/) | 动态规划 | 困难 | +| [0611. 有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number/) | 贪心、数组、双指针、二分查找、排序 | 中等 | +| [0616. 给字符串添加加粗标签](https://leetcode.cn/problems/add-bold-tag-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/add-bold-tag-in-string/) | 字典树、数组、哈希表、字符串、字符串匹配 | 中等 | +| [0617. 合并二叉树](https://leetcode.cn/problems/merge-two-binary-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/merge-two-binary-trees/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0621. 任务调度器](https://leetcode.cn/problems/task-scheduler/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/task-scheduler/) | 贪心、数组、哈希表、计数、排序、堆(优先队列) | 中等 | +| [0622. 设计循环队列](https://leetcode.cn/problems/design-circular-queue/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-circular-queue/) | 设计、队列、数组、链表 | 中等 | +| [0633. 平方数之和](https://leetcode.cn/problems/sum-of-square-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/sum-of-square-numbers/) | 数学、双指针、二分查找 | 中等 | +| [0639. 解码方法 II](https://leetcode.cn/problems/decode-ways-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/decode-ways-ii/) | 字符串、动态规划 | 困难 | +| [0642. 设计搜索自动补全系统](https://leetcode.cn/problems/design-search-autocomplete-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-search-autocomplete-system/) | 深度优先搜索、设计、字典树、字符串、数据流、排序、堆(优先队列) | 困难 | +| [0643. 子数组最大平均数 I](https://leetcode.cn/problems/maximum-average-subarray-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-average-subarray-i/) | 数组、滑动窗口 | 简单 | +| [0647. 回文子串](https://leetcode.cn/problems/palindromic-substrings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/palindromic-substrings/) | 双指针、字符串、动态规划 | 中等 | +| [0648. 单词替换](https://leetcode.cn/problems/replace-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/replace-words/) | 字典树、数组、哈希表、字符串 | 中等 | +| [0650. 两个键的键盘](https://leetcode.cn/problems/2-keys-keyboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/2-keys-keyboard/) | 数学、动态规划 | 中等 | +| [0652. 寻找重复的子树](https://leetcode.cn/problems/find-duplicate-subtrees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-duplicate-subtrees/) | 树、深度优先搜索、哈希表、二叉树 | 中等 | +| [0653. 两数之和 IV - 输入二叉搜索树](https://leetcode.cn/problems/two-sum-iv-input-is-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/two-sum-iv-input-is-a-bst/) | 树、深度优先搜索、广度优先搜索、二叉搜索树、哈希表、双指针、二叉树 | 简单 | +| [0654. 最大二叉树](https://leetcode.cn/problems/maximum-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-binary-tree/) | 栈、树、数组、分治、二叉树、单调栈 | 中等 | +| [0658. 找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements/) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0664. 奇怪的打印机](https://leetcode.cn/problems/strange-printer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/strange-printer/) | 字符串、动态规划 | 困难 | +| [0665. 非递减数列](https://leetcode.cn/problems/non-decreasing-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-decreasing-array/) | 数组 | 中等 | +| [0669. 修剪二叉搜索树](https://leetcode.cn/problems/trim-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/trim-a-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) | 树状数组、线段树、数组、动态规划 | 中等 | +| [0674. 最长连续递增序列](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-continuous-increasing-subsequence/) | 数组 | 简单 | +| [0676. 实现一个魔法字典](https://leetcode.cn/problems/implement-magic-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/implement-magic-dictionary/) | 深度优先搜索、设计、字典树、哈希表、字符串 | 中等 | +| [0677. 键值映射](https://leetcode.cn/problems/map-sum-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/map-sum-pairs/) | 设计、字典树、哈希表、字符串 | 中等 | +| [0678. 有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string/) | 栈、贪心、字符串、动态规划 | 中等 | +| [0680. 验证回文串 II](https://leetcode.cn/problems/valid-palindrome-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-palindrome-ii/) | 贪心、双指针、字符串 | 简单 | +| [0683. K 个关闭的灯泡](https://leetcode.cn/problems/k-empty-slots/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/k-empty-slots/) | 树状数组、线段树、队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0684. 冗余连接](https://leetcode.cn/problems/redundant-connection/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0686. 重复叠加字符串匹配](https://leetcode.cn/problems/repeated-string-match/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match/) | 字符串、字符串匹配 | 中等 | +| [0687. 最长同值路径](https://leetcode.cn/problems/longest-univalue-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-univalue-path/) | 树、深度优先搜索、二叉树 | 中等 | +| [0688. 骑士在棋盘上的概率](https://leetcode.cn/problems/knight-probability-in-chessboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/knight-probability-in-chessboard/) | 动态规划 | 中等 | +| [0690. 员工的重要性](https://leetcode.cn/problems/employee-importance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/employee-importance/) | 树、深度优先搜索、广度优先搜索、数组、哈希表 | 中等 | +| [0691. 贴纸拼词](https://leetcode.cn/problems/stickers-to-spell-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/stickers-to-spell-word/) | 位运算、记忆化搜索、数组、哈希表、字符串、动态规划、回溯、状态压缩 | 困难 | +| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0698. 划分为k个相等的子集](https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/partition-to-k-equal-sum-subsets/) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | + + +### 第 700 ~ 799 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0700. 二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-binary-search-tree/) | 树、二叉搜索树、二叉树 | 简单 | +| [0701. 二叉搜索树中的插入操作](https://leetcode.cn/problems/insert-into-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-binary-search-tree/) | 树、二叉搜索树、二叉树 | 中等 | +| [0702. 搜索长度未知的有序数组](https://leetcode.cn/problems/search-in-a-sorted-array-of-unknown-size/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size/) | 数组、二分查找、交互 | 中等 | +| [0703. 数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream/) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | +| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search/) | 数组、二分查找 | 简单 | +| [0705. 设计哈希集合](https://leetcode.cn/problems/design-hashset/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashset/) | 设计、数组、哈希表、链表、哈希函数 | 简单 | +| [0706. 设计哈希映射](https://leetcode.cn/problems/design-hashmap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashmap/) | 设计、数组、哈希表、链表、哈希函数 | 简单 | +| [0707. 设计链表](https://leetcode.cn/problems/design-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-linked-list/) | 设计、链表 | 中等 | +| [0708. 循环有序列表的插入](https://leetcode.cn/problems/insert-into-a-sorted-circular-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-sorted-circular-linked-list/) | 链表 | 中等 | +| [0709. 转换成小写字母](https://leetcode.cn/problems/to-lower-case/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/to-lower-case/) | 字符串 | 简单 | +| [0713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/subarray-product-less-than-k/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0714. 买卖股票的最佳时机含手续费](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee/) | 贪心、数组、动态规划 | 中等 | +| [0715. Range 模块](https://leetcode.cn/problems/range-module/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/range-module/) | 设计、线段树、有序集合 | 困难 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0719. 找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance/) | 数组、双指针、二分查找、排序 | 困难 | +| [0720. 词典中最长的单词](https://leetcode.cn/problems/longest-word-in-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/longest-word-in-dictionary/) | 字典树、数组、哈希表、字符串、排序 | 中等 | +| [0724. 寻找数组的中心下标](https://leetcode.cn/problems/find-pivot-index/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-pivot-index/) | 数组、前缀和 | 简单 | +| [0727. 最小窗口子序列](https://leetcode.cn/problems/minimum-window-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-window-subsequence/) | 字符串、动态规划、滑动窗口 | 困难 | +| [0729. 我的日程安排表 I](https://leetcode.cn/problems/my-calendar-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-i/) | 设计、线段树、数组、二分查找、有序集合 | 中等 | +| [0731. 我的日程安排表 II](https://leetcode.cn/problems/my-calendar-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-ii/) | 设计、线段树、数组、二分查找、有序集合、前缀和 | 中等 | +| [0732. 我的日程安排表 III](https://leetcode.cn/problems/my-calendar-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-iii/) | 设计、线段树、二分查找、有序集合、前缀和 | 困难 | +| [0733. 图像渲染](https://leetcode.cn/problems/flood-fill/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/flood-fill/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | +| [0735. 小行星碰撞](https://leetcode.cn/problems/asteroid-collision/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/asteroid-collision/) | 栈、数组、模拟 | 中等 | +| [0738. 单调递增的数字](https://leetcode.cn/problems/monotone-increasing-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/monotone-increasing-digits/) | 贪心、数学 | 中等 | +| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) | 栈、数组、单调栈 | 中等 | +| [0744. 寻找比目标字母大的最小字母](https://leetcode.cn/problems/find-smallest-letter-greater-than-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-smallest-letter-greater-than-target/) | 数组、二分查找 | 简单 | +| [0746. 使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/min-cost-climbing-stairs/) | 数组、动态规划 | 简单 | +| [0752. 打开转盘锁](https://leetcode.cn/problems/open-the-lock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/open-the-lock/) | 广度优先搜索、数组、哈希表、字符串 | 中等 | +| [0758. 字符串中的加粗单词](https://leetcode.cn/problems/bold-words-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/bold-words-in-string/) | 字典树、数组、哈希表、字符串、字符串匹配 | 中等 | +| [0763. 划分字母区间](https://leetcode.cn/problems/partition-labels/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/partition-labels/) | 贪心、哈希表、双指针、字符串 | 中等 | +| [0765. 情侣牵手](https://leetcode.cn/problems/couples-holding-hands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/couples-holding-hands/) | 贪心、深度优先搜索、广度优先搜索、并查集、图 | 困难 | +| [0766. 托普利茨矩阵](https://leetcode.cn/problems/toeplitz-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/toeplitz-matrix/) | 数组、矩阵 | 简单 | +| [0771. 宝石与石头](https://leetcode.cn/problems/jewels-and-stones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/jewels-and-stones/) | 哈希表、字符串 | 简单 | +| [0778. 水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | +| [0779. 第K个语法符号](https://leetcode.cn/problems/k-th-symbol-in-grammar/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/k-th-symbol-in-grammar/) | 位运算、递归、数学 | 中等 | +| [0783. 二叉搜索树节点最小距离](https://leetcode.cn/problems/minimum-distance-between-bst-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-distance-between-bst-nodes/) | 树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0784. 字母大小写全排列](https://leetcode.cn/problems/letter-case-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/letter-case-permutation/) | 位运算、字符串、回溯 | 中等 | +| [0785. 判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0788. 旋转数字](https://leetcode.cn/problems/rotated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotated-digits/) | 数学、动态规划 | 中等 | +| [0795. 区间子数组个数](https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum/) | 数组、双指针 | 中等 | +| [0796. 旋转字符串](https://leetcode.cn/problems/rotate-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string/) | 字符串、字符串匹配 | 简单 | +| [0797. 所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target/) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | + + +### 第 800 ~ 899 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0800. 相似 RGB 颜色](https://leetcode.cn/problems/similar-rgb-color/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/similar-rgb-color/) | 数学、字符串、枚举 | 简单 | +| [0801. 使序列递增的最小交换次数](https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing/) | 数组、动态规划 | 困难 | +| [0802. 找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0803. 打砖块](https://leetcode.cn/problems/bricks-falling-when-hit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bricks-falling-when-hit/) | 并查集、数组、矩阵 | 困难 | +| [0804. 唯一摩尔斯密码词](https://leetcode.cn/problems/unique-morse-code-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/unique-morse-code-words/) | 数组、哈希表、字符串 | 简单 | +| [0806. 写字符串需要的行数](https://leetcode.cn/problems/number-of-lines-to-write-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/number-of-lines-to-write-string/) | 数组、字符串 | 简单 | +| [0811. 子域名访问计数](https://leetcode.cn/problems/subdomain-visit-count/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/subdomain-visit-count/) | 数组、哈希表、字符串、计数 | 中等 | +| [0814. 二叉树剪枝](https://leetcode.cn/problems/binary-tree-pruning/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-tree-pruning/) | 树、深度优先搜索、二叉树 | 中等 | +| [0819. 最常见的单词](https://leetcode.cn/problems/most-common-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/most-common-word/) | 数组、哈希表、字符串、计数 | 简单 | +| [0820. 单词的压缩编码](https://leetcode.cn/problems/short-encoding-of-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/short-encoding-of-words/) | 字典树、数组、哈希表、字符串 | 中等 | +| [0821. 字符的最短距离](https://leetcode.cn/problems/shortest-distance-to-a-character/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-distance-to-a-character/) | 数组、双指针、字符串 | 简单 | +| [0824. 山羊拉丁文](https://leetcode.cn/problems/goat-latin/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/goat-latin/) | 字符串 | 简单 | +| [0830. 较大分组的位置](https://leetcode.cn/problems/positions-of-large-groups/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/positions-of-large-groups/) | 字符串 | 简单 | +| [0832. 翻转图像](https://leetcode.cn/problems/flipping-an-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/flipping-an-image/) | 位运算、数组、双指针、矩阵、模拟 | 简单 | +| [0834. 树中距离之和](https://leetcode.cn/problems/sum-of-distances-in-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/sum-of-distances-in-tree/) | 树、深度优先搜索、图、动态规划 | 困难 | +| [0836. 矩形重叠](https://leetcode.cn/problems/rectangle-overlap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-overlap/) | 几何、数学 | 简单 | +| [0841. 钥匙和房间](https://leetcode.cn/problems/keys-and-rooms/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/keys-and-rooms/) | 深度优先搜索、广度优先搜索、图 | 中等 | +| [0844. 比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/backspace-string-compare/) | 栈、双指针、字符串、模拟 | 简单 | +| [0845. 数组中的最长山脉](https://leetcode.cn/problems/longest-mountain-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/longest-mountain-in-array/) | 数组、双指针、动态规划、枚举 | 中等 | +| [0846. 一手顺子](https://leetcode.cn/problems/hand-of-straights/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/hand-of-straights/) | 贪心、数组、哈希表、排序 | 中等 | +| [0847. 访问所有节点的最短路径](https://leetcode.cn/problems/shortest-path-visiting-all-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-path-visiting-all-nodes/) | 位运算、广度优先搜索、图、动态规划、状态压缩 | 困难 | +| [0850. 矩形面积 II](https://leetcode.cn/problems/rectangle-area-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-area-ii/) | 线段树、数组、有序集合、扫描线 | 困难 | +| [0851. 喧闹和富有](https://leetcode.cn/problems/loud-and-rich/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/loud-and-rich/) | 深度优先搜索、图、拓扑排序、数组 | 中等 | +| [0852. 山脉数组的峰顶索引](https://leetcode.cn/problems/peak-index-in-a-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/peak-index-in-a-mountain-array/) | 数组、二分查找 | 中等 | +| [0860. 柠檬水找零](https://leetcode.cn/problems/lemonade-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/lemonade-change/) | 贪心、数组 | 简单 | +| [0861. 翻转矩阵后的得分](https://leetcode.cn/problems/score-after-flipping-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/score-after-flipping-matrix/) | 贪心、位运算、数组、矩阵 | 中等 | +| [0862. 和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k/) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0867. 转置矩阵](https://leetcode.cn/problems/transpose-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/transpose-matrix/) | 数组、矩阵、模拟 | 简单 | +| [0868. 二进制间距](https://leetcode.cn/problems/binary-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-gap/) | 位运算 | 简单 | +| [0872. 叶子相似的树](https://leetcode.cn/problems/leaf-similar-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/leaf-similar-trees/) | 树、深度优先搜索、二叉树 | 简单 | +| [0873. 最长的斐波那契子序列的长度](https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence/) | 数组、哈希表、动态规划 | 中等 | +| [0875. 爱吃香蕉的珂珂](https://leetcode.cn/problems/koko-eating-bananas/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/koko-eating-bananas/) | 数组、二分查找 | 中等 | +| [0876. 链表的中间结点](https://leetcode.cn/problems/middle-of-the-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/middle-of-the-linked-list/) | 链表、双指针 | 简单 | +| [0877. 石子游戏](https://leetcode.cn/problems/stone-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/stone-game/) | 数组、数学、动态规划、博弈 | 中等 | +| [0881. 救生艇](https://leetcode.cn/problems/boats-to-save-people/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/boats-to-save-people/) | 贪心、数组、双指针、排序 | 中等 | +| [0884. 两句话中的不常见单词](https://leetcode.cn/problems/uncommon-words-from-two-sentences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/uncommon-words-from-two-sentences/) | 哈希表、字符串、计数 | 简单 | +| [0886. 可能的二分法](https://leetcode.cn/problems/possible-bipartition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/possible-bipartition/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0887. 鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop/) | 数学、二分查找、动态规划 | 困难 | +| [0889. 根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0892. 三维形体的表面积](https://leetcode.cn/problems/surface-area-of-3d-shapes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/surface-area-of-3d-shapes/) | 几何、数组、数学、矩阵 | 简单 | +| [0897. 递增顺序搜索树](https://leetcode.cn/problems/increasing-order-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/increasing-order-search-tree/) | 栈、树、深度优先搜索、二叉搜索树、二叉树 | 简单 | + + +### 第 900 ~ 999 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0900. RLE 迭代器](https://leetcode.cn/problems/rle-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/rle-iterator/) | 设计、数组、计数、迭代器 | 中等 | +| [0901. 股票价格跨度](https://leetcode.cn/problems/online-stock-span/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/online-stock-span/) | 栈、设计、数据流、单调栈 | 中等 | +| [0902. 最大为 N 的数字组合](https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/numbers-at-most-n-given-digit-set/) | 数组、数学、字符串、二分查找、动态规划 | 困难 | +| [0904. 水果成篮](https://leetcode.cn/problems/fruit-into-baskets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/fruit-into-baskets/) | 数组、哈希表、滑动窗口 | 中等 | +| [0908. 最小差值 I](https://leetcode.cn/problems/smallest-range-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/smallest-range-i/) | 数组、数学 | 简单 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0918. 环形子数组的最大和](https://leetcode.cn/problems/maximum-sum-circular-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/maximum-sum-circular-subarray/) | 队列、数组、分治、动态规划、单调队列 | 中等 | +| [0919. 完全二叉树插入器](https://leetcode.cn/problems/complete-binary-tree-inserter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/complete-binary-tree-inserter/) | 树、广度优先搜索、设计、二叉树 | 中等 | +| [0921. 使括号有效的最少添加](https://leetcode.cn/problems/minimum-add-to-make-parentheses-valid/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid/) | 栈、贪心、字符串 | 中等 | +| [0925. 长按键入](https://leetcode.cn/problems/long-pressed-name/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/long-pressed-name/) | 双指针、字符串 | 简单 | +| [0932. 漂亮数组](https://leetcode.cn/problems/beautiful-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/beautiful-array/) | 数组、数学、分治 | 中等 | +| [0933. 最近的请求次数](https://leetcode.cn/problems/number-of-recent-calls/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/number-of-recent-calls/) | 设计、队列、数据流 | 简单 | +| [0935. 骑士拨号器](https://leetcode.cn/problems/knight-dialer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/knight-dialer/) | 动态规划 | 中等 | +| [0938. 二叉搜索树的范围和](https://leetcode.cn/problems/range-sum-of-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/range-sum-of-bst/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0946. 验证栈序列](https://leetcode.cn/problems/validate-stack-sequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/validate-stack-sequences/) | 栈、数组、模拟 | 中等 | +| [0947. 移除最多的同行或同列石头](https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column/) | 深度优先搜索、并查集、图、哈希表 | 中等 | +| [0953. 验证外星语词典](https://leetcode.cn/problems/verifying-an-alien-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/verifying-an-alien-dictionary/) | 数组、哈希表、字符串 | 简单 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | +| [0959. 由斜杠划分区域](https://leetcode.cn/problems/regions-cut-by-slashes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/regions-cut-by-slashes/) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、矩阵 | 中等 | +| [0968. 监控二叉树](https://leetcode.cn/problems/binary-tree-cameras/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/binary-tree-cameras/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0973. 最接近原点的 K 个点](https://leetcode.cn/problems/k-closest-points-to-origin/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/k-closest-points-to-origin/) | 几何、数组、数学、分治、快速选择、排序、堆(优先队列) | 中等 | +| [0974. 和可被 K 整除的子数组](https://leetcode.cn/problems/subarray-sums-divisible-by-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarray-sums-divisible-by-k/) | 数组、哈希表、前缀和 | 中等 | +| [0976. 三角形的最大周长](https://leetcode.cn/problems/largest-perimeter-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/largest-perimeter-triangle/) | 贪心、数组、数学、排序 | 简单 | +| [0977. 有序数组的平方](https://leetcode.cn/problems/squares-of-a-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/squares-of-a-sorted-array/) | 数组、双指针、排序 | 简单 | +| [0978. 最长湍流子数组](https://leetcode.cn/problems/longest-turbulent-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/longest-turbulent-subarray/) | 数组、动态规划、滑动窗口 | 中等 | +| [0982. 按位与为零的三元组](https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero/) | 位运算、数组、哈希表 | 困难 | +| [0990. 等式方程的可满足性](https://leetcode.cn/problems/satisfiability-of-equality-equations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/satisfiability-of-equality-equations/) | 并查集、图、数组、字符串 | 中等 | +| [0992. K 个不同整数的子数组](https://leetcode.cn/problems/subarrays-with-k-different-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarrays-with-k-different-integers/) | 数组、哈希表、计数、滑动窗口 | 困难 | +| [0993. 二叉树的堂兄弟节点](https://leetcode.cn/problems/cousins-in-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/cousins-in-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0995. K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips/) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | +| [0999. 可以被一步捕获的棋子数](https://leetcode.cn/problems/available-captures-for-rook/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/available-captures-for-rook/) | 数组、矩阵、模拟 | 简单 | + + +### 第 1000 ~ 1099 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1000. 合并石头的最低成本](https://leetcode.cn/problems/minimum-cost-to-merge-stones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-cost-to-merge-stones/) | 数组、动态规划、前缀和 | 困难 | +| [1002. 查找共用字符](https://leetcode.cn/problems/find-common-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-common-characters/) | 数组、哈希表、字符串 | 简单 | +| [1004. 最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [1005. K 次取反后最大化的数组和](https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/maximize-sum-of-array-after-k-negations/) | 贪心、数组、排序 | 简单 | +| [1008. 前序遍历构造二叉搜索树](https://leetcode.cn/problems/construct-binary-search-tree-from-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/construct-binary-search-tree-from-preorder-traversal/) | 栈、树、二叉搜索树、数组、二叉树、单调栈 | 中等 | +| [1009. 十进制整数的反码](https://leetcode.cn/problems/complement-of-base-10-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/complement-of-base-10-integer/) | 位运算 | 简单 | +| [1011. 在 D 天内送达包裹的能力](https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days/) | 数组、二分查找 | 中等 | +| [1012. 至少有 1 位重复的数字](https://leetcode.cn/problems/numbers-with-repeated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/numbers-with-repeated-digits/) | 数学、动态规划 | 困难 | +| [1014. 最佳观光组合](https://leetcode.cn/problems/best-sightseeing-pair/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/best-sightseeing-pair/) | 数组、动态规划 | 中等 | +| [1020. 飞地的数量](https://leetcode.cn/problems/number-of-enclaves/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/number-of-enclaves/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [1021. 删除最外层的括号](https://leetcode.cn/problems/remove-outermost-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-outermost-parentheses/) | 栈、字符串 | 简单 | +| [1023. 驼峰式匹配](https://leetcode.cn/problems/camelcase-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/camelcase-matching/) | 字典树、数组、双指针、字符串、字符串匹配 | 中等 | +| [1025. 除数博弈](https://leetcode.cn/problems/divisor-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/divisor-game/) | 脑筋急转弯、数学、动态规划、博弈 | 简单 | +| [1028. 从先序遍历还原二叉树](https://leetcode.cn/problems/recover-a-tree-from-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/recover-a-tree-from-preorder-traversal/) | 树、深度优先搜索、字符串、二叉树 | 困难 | +| [1029. 两地调度](https://leetcode.cn/problems/two-city-scheduling/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-city-scheduling/) | 贪心、数组、排序 | 中等 | +| [1034. 边界着色](https://leetcode.cn/problems/coloring-a-border/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/coloring-a-border/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | +| [1035. 不相交的线](https://leetcode.cn/problems/uncrossed-lines/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/uncrossed-lines/) | 数组、动态规划 | 中等 | +| [1037. 有效的回旋镖](https://leetcode.cn/problems/valid-boomerang/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/valid-boomerang/) | 几何、数组、数学 | 简单 | +| [1038. 从二叉搜索树到更大和树](https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/binary-search-tree-to-greater-sum-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [1039. 多边形三角剖分的最低得分](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-score-triangulation-of-polygon/) | 数组、动态规划 | 中等 | +| [1041. 困于环中的机器人](https://leetcode.cn/problems/robot-bounded-in-circle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/robot-bounded-in-circle/) | 数学、字符串、模拟 | 中等 | +| [1047. 删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string/) | 栈、字符串 | 简单 | +| [1049. 最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/last-stone-weight-ii/) | 数组、动态规划 | 中等 | +| [1051. 高度检查器](https://leetcode.cn/problems/height-checker/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/height-checker/) | 数组、计数排序、排序 | 简单 | +| [1052. 爱生气的书店老板](https://leetcode.cn/problems/grumpy-bookstore-owner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/grumpy-bookstore-owner/) | 数组、滑动窗口 | 中等 | +| [1065. 字符串的索引对](https://leetcode.cn/problems/index-pairs-of-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/index-pairs-of-a-string/) | 字典树、数组、字符串、排序 | 简单 | +| [1079. 活字印刷](https://leetcode.cn/problems/letter-tile-possibilities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/letter-tile-possibilities/) | 哈希表、字符串、回溯、计数 | 中等 | +| [1081. 不同字符的最小子序列](https://leetcode.cn/problems/smallest-subsequence-of-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/smallest-subsequence-of-distinct-characters/) | 栈、贪心、字符串、单调栈 | 中等 | +| [1089. 复写零](https://leetcode.cn/problems/duplicate-zeros/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/duplicate-zeros/) | 数组、双指针 | 简单 | +| [1091. 二进制矩阵中的最短路径](https://leetcode.cn/problems/shortest-path-in-binary-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/shortest-path-in-binary-matrix/) | 广度优先搜索、数组、矩阵 | 中等 | +| [1095. 山脉数组中查找目标值](https://leetcode.cn/problems/find-in-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-in-mountain-array/) | 数组、二分查找、交互 | 困难 | +| [1099. 小于 K 的两数之和](https://leetcode.cn/problems/two-sum-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-sum-less-than-k/) | 数组、双指针、二分查找、排序 | 简单 | + + +### 第 1100 ~ 1199 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1100. 长度为 K 的无重复字符子串](https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [1103. 分糖果 II](https://leetcode.cn/problems/distribute-candies-to-people/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distribute-candies-to-people/) | 数学、模拟 | 简单 | +| [1108. IP 地址无效化](https://leetcode.cn/problems/defanging-an-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/defanging-an-ip-address/) | 字符串 | 简单 | +| [1109. 航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings/) | 数组、前缀和 | 中等 | +| [1110. 删点成林](https://leetcode.cn/problems/delete-nodes-and-return-forest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/delete-nodes-and-return-forest/) | 树、深度优先搜索、数组、哈希表、二叉树 | 中等 | +| [1122. 数组的相对排序](https://leetcode.cn/problems/relative-sort-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/relative-sort-array/) | 数组、哈希表、计数排序、排序 | 简单 | +| [1136. 并行课程](https://leetcode.cn/problems/parallel-courses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/parallel-courses/) | 图、拓扑排序 | 中等 | +| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number/) | 记忆化搜索、数学、动态规划 | 简单 | +| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence/) | 字符串、动态规划 | 中等 | +| [1151. 最少交换次数来组合所有的 1](https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together/) | 数组、滑动窗口 | 中等 | +| [1155. 掷骰子等于目标和的方法数](https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum/) | 动态规划 | 中等 | +| [1161. 最大层内元素和](https://leetcode.cn/problems/maximum-level-sum-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/maximum-level-sum-of-a-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [1176. 健身计划评估](https://leetcode.cn/problems/diet-plan-performance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/diet-plan-performance/) | 数组、滑动窗口 | 简单 | +| [1184. 公交站间的距离](https://leetcode.cn/problems/distance-between-bus-stops/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distance-between-bus-stops/) | 数组 | 简单 | + + +### 第 1200 ~ 1299 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1202. 交换字符串中的元素](https://leetcode.cn/problems/smallest-string-with-swaps/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/smallest-string-with-swaps/) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、字符串、排序 | 中等 | +| [1208. 尽可能使字符串相等](https://leetcode.cn/problems/get-equal-substrings-within-budget/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/get-equal-substrings-within-budget/) | 字符串、二分查找、前缀和、滑动窗口 | 中等 | +| [1217. 玩筹码](https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position/) | 贪心、数组、数学 | 简单 | +| [1220. 统计元音字母序列的数目](https://leetcode.cn/problems/count-vowels-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/count-vowels-permutation/) | 动态规划 | 困难 | +| [1227. 飞机座位分配概率](https://leetcode.cn/problems/airplane-seat-assignment-probability/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/airplane-seat-assignment-probability/) | 脑筋急转弯、数学、动态规划、概率与统计 | 中等 | +| [1229. 安排会议日程](https://leetcode.cn/problems/meeting-scheduler/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/meeting-scheduler/) | 数组、双指针、排序 | 中等 | +| [1232. 缀点成线](https://leetcode.cn/problems/check-if-it-is-a-straight-line/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/check-if-it-is-a-straight-line/) | 几何、数组、数学 | 简单 | +| [1245. 树的直径](https://leetcode.cn/problems/tree-diameter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/tree-diameter/) | 树、深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [1247. 交换字符使得字符串相同](https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal/) | 贪心、数学、字符串 | 中等 | +| [1253. 重构 2 行二进制矩阵](https://leetcode.cn/problems/reconstruct-a-2-row-binary-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/reconstruct-a-2-row-binary-matrix/) | 贪心、数组、矩阵 | 中等 | +| [1254. 统计封闭岛屿的数目](https://leetcode.cn/problems/number-of-closed-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/number-of-closed-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [1261. 在受污染的二叉树中查找元素](https://leetcode.cn/problems/find-elements-in-a-contaminated-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/find-elements-in-a-contaminated-binary-tree/) | 树、深度优先搜索、广度优先搜索、设计、哈希表、二叉树 | 中等 | +| [1266. 访问所有点的最小时间](https://leetcode.cn/problems/minimum-time-visiting-all-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-time-visiting-all-points/) | 几何、数组、数学 | 简单 | +| [1268. 搜索推荐系统](https://leetcode.cn/problems/search-suggestions-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/search-suggestions-system/) | 字典树、数组、字符串、二分查找、排序、堆(优先队列) | 中等 | +| [1281. 整数的各位积和之差](https://leetcode.cn/problems/subtract-the-product-and-sum-of-digits-of-an-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/subtract-the-product-and-sum-of-digits-of-an-integer/) | 数学 | 简单 | +| [1296. 划分数组为连续数字的集合](https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers/) | 贪心、数组、哈希表、排序 | 中等 | + + +### 第 1300 ~ 1399 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1300. 转变数组后最接近目标值的数组和](https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target/) | 数组、二分查找、排序 | 中等 | +| [1305. 两棵二叉搜索树中的所有元素](https://leetcode.cn/problems/all-elements-in-two-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/all-elements-in-two-binary-search-trees/) | 树、深度优先搜索、二叉搜索树、二叉树、排序 | 中等 | +| [1310. 子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray/) | 位运算、数组、前缀和 | 中等 | +| [1313. 解压缩编码列表](https://leetcode.cn/problems/decompress-run-length-encoded-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/decompress-run-length-encoded-list/) | 数组 | 简单 | +| [1317. 将整数转换为两个无零整数的和](https://leetcode.cn/problems/convert-integer-to-the-sum-of-two-no-zero-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/convert-integer-to-the-sum-of-two-no-zero-integers/) | 数学 | 简单 | +| [1319. 连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-operations-to-make-network-connected/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [1324. 竖直打印单词](https://leetcode.cn/problems/print-words-vertically/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/print-words-vertically/) | 数组、字符串、模拟 | 中等 | +| [1338. 数组大小减半](https://leetcode.cn/problems/reduce-array-size-to-the-half/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/reduce-array-size-to-the-half/) | 贪心、数组、哈希表、排序、堆(优先队列) | 中等 | +| [1343. 大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | 数组、滑动窗口 | 中等 | +| [1344. 时钟指针的夹角](https://leetcode.cn/problems/angle-between-hands-of-a-clock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/angle-between-hands-of-a-clock/) | 数学 | 中等 | +| [1347. 制造字母异位词的最小步骤数](https://leetcode.cn/problems/minimum-number-of-steps-to-make-two-strings-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/minimum-number-of-steps-to-make-two-strings-anagram/) | 哈希表、字符串、计数 | 中等 | +| [1349. 参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | +| [1358. 包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [1362. 最接近的因数](https://leetcode.cn/problems/closest-divisors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/closest-divisors/) | 数学 | 中等 | +| [1381. 设计一个支持增量操作的栈](https://leetcode.cn/problems/design-a-stack-with-increment-operation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/design-a-stack-with-increment-operation/) | 栈、设计、数组 | 中等 | + + +### 第 1400 ~ 1499 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1400. 构造 K 个回文字符串](https://leetcode.cn/problems/construct-k-palindrome-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/construct-k-palindrome-strings/) | 贪心、哈希表、字符串、计数 | 中等 | +| [1408. 数组中的字符串匹配](https://leetcode.cn/problems/string-matching-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array/) | 数组、字符串、字符串匹配 | 简单 | +| [1422. 分割字符串的最大得分](https://leetcode.cn/problems/maximum-score-after-splitting-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-score-after-splitting-a-string/) | 字符串、前缀和 | 简单 | +| [1423. 可获得的最大点数](https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards/) | 数组、前缀和、滑动窗口 | 中等 | +| [1438. 绝对差不超过限制的最长连续子数组](https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | 队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 中等 | +| [1446. 连续字符](https://leetcode.cn/problems/consecutive-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/consecutive-characters/) | 字符串 | 简单 | +| [1447. 最简分数](https://leetcode.cn/problems/simplified-fractions/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/simplified-fractions/) | 数学、字符串、数论 | 中等 | +| [1449. 数位成本和为目标值的最大数字](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target/) | 数组、动态规划 | 困难 | +| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time/) | 数组 | 简单 | +| [1451. 重新排列句子中的单词](https://leetcode.cn/problems/rearrange-words-in-a-sentence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/rearrange-words-in-a-sentence/) | 字符串、排序 | 中等 | +| [1456. 定长子串中元音的最大数目](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length/) | 字符串、滑动窗口 | 中等 | +| [1476. 子矩形查询](https://leetcode.cn/problems/subrectangle-queries/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/subrectangle-queries/) | 设计、数组、矩阵 | 中等 | +| [1480. 一维数组的动态和](https://leetcode.cn/problems/running-sum-of-1d-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/running-sum-of-1d-array/) | 数组、前缀和 | 简单 | +| [1482. 制作 m 束花所需的最少天数](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets/) | 数组、二分查找 | 中等 | +| [1486. 数组异或操作](https://leetcode.cn/problems/xor-operation-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/xor-operation-in-an-array/) | 位运算、数学 | 简单 | +| [1491. 去掉最低工资和最高工资后的工资平均值](https://leetcode.cn/problems/average-salary-excluding-the-minimum-and-maximum-salary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/average-salary-excluding-the-minimum-and-maximum-salary/) | 数组、排序 | 简单 | +| [1493. 删掉一个元素以后全为 1 的最长子数组](https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element/) | 数组、动态规划、滑动窗口 | 中等 | +| [1496. 判断路径是否相交](https://leetcode.cn/problems/path-crossing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/path-crossing/) | 哈希表、字符串 | 简单 | + + +### 第 1500 ~ 1599 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1502. 判断能否形成等差数列](https://leetcode.cn/problems/can-make-arithmetic-progression-from-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/can-make-arithmetic-progression-from-sequence/) | 数组、排序 | 简单 | +| [1507. 转变日期格式](https://leetcode.cn/problems/reformat-date/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/reformat-date/) | 字符串 | 简单 | +| [1523. 在区间范围内统计奇数数目](https://leetcode.cn/problems/count-odd-numbers-in-an-interval-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-odd-numbers-in-an-interval-range/) | 数学 | 简单 | +| [1534. 统计好三元组](https://leetcode.cn/problems/count-good-triplets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-good-triplets/) | 数组、枚举 | 简单 | +| [1547. 切棍子的最小成本](https://leetcode.cn/problems/minimum-cost-to-cut-a-stick/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick/) | 数组、动态规划、排序 | 困难 | +| [1551. 使数组中所有元素相等的最小操作数](https://leetcode.cn/problems/minimum-operations-to-make-array-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-operations-to-make-array-equal/) | 数学 | 中等 | +| [1556. 千位分隔数](https://leetcode.cn/problems/thousand-separator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/thousand-separator/) | 字符串 | 简单 | +| [1561. 你可以获得的最大硬币数目](https://leetcode.cn/problems/maximum-number-of-coins-you-can-get/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-number-of-coins-you-can-get/) | 贪心、数组、数学、博弈、排序 | 中等 | +| [1567. 乘积为正数的最长子数组长度](https://leetcode.cn/problems/maximum-length-of-subarray-with-positive-product/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-length-of-subarray-with-positive-product/) | 贪心、数组、动态规划 | 中等 | +| [1582. 二进制矩阵中的特殊位置](https://leetcode.cn/problems/special-positions-in-a-binary-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/special-positions-in-a-binary-matrix/) | 数组、矩阵 | 简单 | +| [1584. 连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/min-cost-to-connect-all-points/) | 并查集、图、数组、最小生成树 | 中等 | +| [1593. 拆分字符串使唯一子字符串的数目最大](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings/) | 哈希表、字符串、回溯 | 中等 | +| [1595. 连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | + + +### 第 1600 ~ 1699 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1603. 设计停车系统](https://leetcode.cn/problems/design-parking-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/design-parking-system/) | 设计、计数、模拟 | 简单 | +| [1605. 给定行和列的和求可行矩阵](https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums/) | 贪心、数组、矩阵 | 中等 | +| [1614. 括号的最大嵌套深度](https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-nesting-depth-of-the-parentheses/) | 栈、字符串 | 简单 | +| [1617. 统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities/) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | +| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | +| [1641. 统计字典序元音字符串的数目](https://leetcode.cn/problems/count-sorted-vowel-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-sorted-vowel-strings/) | 数学、动态规划、组合数学 | 中等 | +| [1646. 获取生成数组中的最大值](https://leetcode.cn/problems/get-maximum-in-generated-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/get-maximum-in-generated-array/) | 数组、模拟 | 简单 | +| [1647. 字符频次唯一的最小删除次数](https://leetcode.cn/problems/minimum-deletions-to-make-character-frequencies-unique/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-deletions-to-make-character-frequencies-unique/) | 贪心、哈希表、字符串、排序 | 中等 | +| [1657. 确定两个字符串是否接近](https://leetcode.cn/problems/determine-if-two-strings-are-close/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/determine-if-two-strings-are-close/) | 哈希表、字符串、计数、排序 | 中等 | +| [1658. 将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero/) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | +| [1672. 最富有客户的资产总量](https://leetcode.cn/problems/richest-customer-wealth/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/richest-customer-wealth/) | 数组、矩阵 | 简单 | +| [1695. 删除子数组的最大得分](https://leetcode.cn/problems/maximum-erasure-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-erasure-value/) | 数组、哈希表、滑动窗口 | 中等 | +| [1698. 字符串的不同子字符串个数](https://leetcode.cn/problems/number-of-distinct-substrings-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/number-of-distinct-substrings-in-a-string/) | 字典树、字符串、后缀数组、哈希函数、滚动哈希 | 中等 | + + +### 第 1700 ~ 1799 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1710. 卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-units-on-a-truck/) | 贪心、数组、排序 | 简单 | +| [1716. 计算力扣银行的钱](https://leetcode.cn/problems/calculate-money-in-leetcode-bank/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/calculate-money-in-leetcode-bank/) | 数学 | 简单 | +| [1720. 解码异或后的数组](https://leetcode.cn/problems/decode-xored-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/decode-xored-array/) | 位运算、数组 | 简单 | +| [1726. 同积元组](https://leetcode.cn/problems/tuple-with-same-product/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/tuple-with-same-product/) | 数组、哈希表、计数 | 中等 | +| [1736. 替换隐藏数字得到的最晚时间](https://leetcode.cn/problems/latest-time-by-replacing-hidden-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/latest-time-by-replacing-hidden-digits/) | 贪心、字符串 | 简单 | +| [1742. 盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-balls-in-a-box/) | 哈希表、数学、计数 | 简单 | +| [1749. 任意子数组和的绝对值的最大值](https://leetcode.cn/problems/maximum-absolute-sum-of-any-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-absolute-sum-of-any-subarray/) | 数组、动态规划 | 中等 | +| [1763. 最长的美好子字符串](https://leetcode.cn/problems/longest-nice-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/longest-nice-substring/) | 位运算、哈希表、字符串、分治、滑动窗口 | 简单 | +| [1779. 找到最近的有相同 X 或 Y 坐标的点](https://leetcode.cn/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-nearest-point-that-has-the-same-x-or-y-coordinate/) | 数组 | 简单 | +| [1790. 仅执行一次字符串交换能否使两个字符串相等](https://leetcode.cn/problems/check-if-one-string-swap-can-make-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/check-if-one-string-swap-can-make-strings-equal/) | 哈希表、字符串、计数 | 简单 | +| [1791. 找出星型图的中心节点](https://leetcode.cn/problems/find-center-of-star-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-center-of-star-graph/) | 图 | 简单 | + + +### 第 1800 ~ 1899 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1822. 数组元素积的符号](https://leetcode.cn/problems/sign-of-the-product-of-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sign-of-the-product-of-an-array/) | 数组、数学 | 简单 | +| [1827. 最少操作使数组递增](https://leetcode.cn/problems/minimum-operations-to-make-the-array-increasing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-operations-to-make-the-array-increasing/) | 贪心、数组 | 简单 | +| [1833. 雪糕的最大数量](https://leetcode.cn/problems/maximum-ice-cream-bars/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/maximum-ice-cream-bars/) | 贪心、数组、计数排序、排序 | 中等 | +| [1844. 将所有数字用字符替换](https://leetcode.cn/problems/replace-all-digits-with-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/replace-all-digits-with-characters/) | 字符串 | 简单 | +| [1858. 包含所有前缀的最长单词](https://leetcode.cn/problems/longest-word-with-all-prefixes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/longest-word-with-all-prefixes/) | 深度优先搜索、字典树 | 中等 | +| [1859. 将句子排序](https://leetcode.cn/problems/sorting-the-sentence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sorting-the-sentence/) | 字符串、排序 | 简单 | +| [1876. 长度为三且各字符不同的子字符串](https://leetcode.cn/problems/substrings-of-size-three-with-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/substrings-of-size-three-with-distinct-characters/) | 哈希表、字符串、计数、滑动窗口 | 简单 | +| [1877. 数组中最大数对和的最小值](https://leetcode.cn/problems/minimize-maximum-pair-sum-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimize-maximum-pair-sum-in-array/) | 贪心、数组、双指针、排序 | 中等 | +| [1879. 两个数组最小的异或值之和](https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays/) | 位运算、数组、动态规划、状态压缩 | 困难 | +| [1893. 检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered/) | 数组、哈希表、前缀和 | 简单 | +| [1897. 重新分配字符使所有字符串都相等](https://leetcode.cn/problems/redistribute-characters-to-make-all-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/redistribute-characters-to-make-all-strings-equal/) | 哈希表、字符串、计数 | 简单 | + + +### 第 1900 ~ 1999 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1903. 字符串中的最大奇数](https://leetcode.cn/problems/largest-odd-number-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/largest-odd-number-in-string/) | 贪心、数学、字符串 | 简单 | +| [1921. 消灭怪物的最大数量](https://leetcode.cn/problems/eliminate-maximum-number-of-monsters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/eliminate-maximum-number-of-monsters/) | 贪心、数组、排序 | 中等 | +| [1925. 统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-square-sum-triples/) | 数学、枚举 | 简单 | +| [1929. 数组串联](https://leetcode.cn/problems/concatenation-of-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/concatenation-of-array/) | 数组、模拟 | 简单 | +| [1930. 长度为 3 的不同回文子序列](https://leetcode.cn/problems/unique-length-3-palindromic-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/unique-length-3-palindromic-subsequences/) | 位运算、哈希表、字符串、前缀和 | 中等 | +| [1936. 新增的最少台阶数](https://leetcode.cn/problems/add-minimum-number-of-rungs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/add-minimum-number-of-rungs/) | 贪心、数组 | 中等 | +| [1941. 检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences/) | 哈希表、字符串、计数 | 简单 | +| [1947. 最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1984. 学生分数的最小差值](https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-difference-between-highest-and-lowest-of-k-scores/) | 数组、排序、滑动窗口 | 简单 | +| [1986. 完成任务的最少工作时间段](https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1991. 找到数组的中间位置](https://leetcode.cn/problems/find-the-middle-index-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/find-the-middle-index-in-array/) | 数组、前缀和 | 简单 | +| [1994. 好子集的数目](https://leetcode.cn/problems/the-number-of-good-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/the-number-of-good-subsets/) | 位运算、数组、数学、动态规划、状态压缩 | 困难 | + + +### 第 2000 ~ 2099 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [2011. 执行操作后的变量值](https://leetcode.cn/problems/final-value-of-variable-after-performing-operations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/final-value-of-variable-after-performing-operations/) | 数组、字符串、模拟 | 简单 | +| [2023. 连接后等于目标字符串的字符串对](https://leetcode.cn/problems/number-of-pairs-of-strings-with-concatenation-equal-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/number-of-pairs-of-strings-with-concatenation-equal-to-target/) | 数组、哈希表、字符串、计数 | 中等 | +| [2050. 并行课程 III](https://leetcode.cn/problems/parallel-courses-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/parallel-courses-iii/) | 图、拓扑排序、数组、动态规划 | 困难 | + + +### 第 2100 ~ 2199 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [2156. 查找给定哈希值的子串](https://leetcode.cn/problems/find-substring-with-given-hash-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value/) | 字符串、滑动窗口、哈希函数、滚动哈希 | 困难 | +| [2172. 数组的最大与和](https://leetcode.cn/problems/maximum-and-sum-of-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/maximum-and-sum-of-array/) | 位运算、数组、动态规划、状态压缩 | 困难 | + + +### 第 2200 ~ 2299 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [2235. 两整数相加](https://leetcode.cn/problems/add-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/add-two-integers/) | 数学 | 简单 | +| [2246. 相邻字符不同的最长路径](https://leetcode.cn/problems/longest-path-with-different-adjacent-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/longest-path-with-different-adjacent-characters/) | 树、深度优先搜索、图、拓扑排序、数组、字符串 | 困难 | +| [2249. 统计圆内格点数目](https://leetcode.cn/problems/count-lattice-points-inside-a-circle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-lattice-points-inside-a-circle/) | 几何、数组、哈希表、数学、枚举 | 中等 | +| [2276. 统计区间中的整数数目](https://leetcode.cn/problems/count-integers-in-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-integers-in-intervals/) | 设计、线段树、有序集合 | 困难 | + + +### 第 2300 ~ 2399 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [2376. 统计特殊整数](https://leetcode.cn/problems/count-special-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2300-2399/count-special-integers/) | 数学、动态规划 | 困难 | + + +### 第 2400 ~ 2499 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [2427. 公因子的数目](https://leetcode.cn/problems/number-of-common-factors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2400-2499/number-of-common-factors/) | 数学、枚举、数论 | 简单 | + + +### 第 2500 ~ 2599 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [2538. 最大价值和与最小价值和的差值](https://leetcode.cn/problems/difference-between-maximum-and-minimum-price-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum/) | 树、深度优先搜索、数组、动态规划 | 困难 | +| [2585. 获得分数的方法数](https://leetcode.cn/problems/number-of-ways-to-earn-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/number-of-ways-to-earn-points/) | 数组、动态规划 | 困难 | + + +### 第 2700 ~ 2799 题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [2719. 统计整数数目](https://leetcode.cn/problems/count-of-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/count-of-integers/) | 数学、字符串、动态规划 | 困难 | + + +### 面试题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [面试题 01.07. 旋转矩阵](https://leetcode.cn/problems/rotate-matrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/rotate-matrix-lcci/) | 数组、数学、矩阵 | 中等 | +| [面试题 01.08. 零矩阵](https://leetcode.cn/problems/zero-matrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/zero-matrix-lcci/) | 数组、哈希表、矩阵 | 中等 | +| [面试题 02.02. 返回倒数第 k 个节点](https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/kth-node-from-end-of-list-lcci/) | 链表、双指针 | 简单 | +| [面试题 02.05. 链表求和](https://leetcode.cn/problems/sum-lists-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sum-lists-lcci/) | 递归、链表、数学 | 中等 | +| [面试题 02.06. 回文链表](https://leetcode.cn/problems/palindrome-linked-list-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/palindrome-linked-list-lcci/) | 栈、递归、链表、双指针 | 简单 | +| [面试题 02.07. 链表相交](https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci/) | 哈希表、链表、双指针 | 简单 | +| [面试题 02.08. 环路检测](https://leetcode.cn/problems/linked-list-cycle-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/linked-list-cycle-lcci/) | 哈希表、链表、双指针 | 中等 | +| [面试题 03.02. 栈的最小值](https://leetcode.cn/problems/min-stack-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/min-stack-lcci/) | 栈、设计 | 简单 | +| [面试题 03.04. 化栈为队](https://leetcode.cn/problems/implement-queue-using-stacks-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/implement-queue-using-stacks-lcci/) | 栈、设计、队列 | 简单 | +| [面试题 04.02. 最小高度树](https://leetcode.cn/problems/minimum-height-tree-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/minimum-height-tree-lcci/) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | +| [面试题 04.05. 合法二叉搜索树](https://leetcode.cn/problems/legal-binary-search-tree-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/legal-binary-search-tree-lcci/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [面试题 04.06. 后继者](https://leetcode.cn/problems/successor-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/successor-lcci/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [面试题 04.08. 首个共同祖先](https://leetcode.cn/problems/first-common-ancestor-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/first-common-ancestor-lcci/) | 树、深度优先搜索、二叉树 | 中等 | +| [面试题 04.12. 求和路径](https://leetcode.cn/problems/paths-with-sum-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/paths-with-sum-lcci/) | 树、深度优先搜索、二叉树 | 中等 | +| [面试题 08.04. 幂集](https://leetcode.cn/problems/power-set-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/power-set-lcci/) | 位运算、数组、回溯 | 中等 | +| [面试题 08.07. 无重复字符串的排列组合](https://leetcode.cn/problems/permutation-i-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-i-lcci/) | 字符串、回溯 | 中等 | +| [面试题 08.08. 有重复字符串的排列组合](https://leetcode.cn/problems/permutation-ii-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-ii-lcci/) | 字符串、回溯 | 中等 | +| [面试题 08.09. 括号](https://leetcode.cn/problems/bracket-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/bracket-lcci/) | 字符串、动态规划、回溯 | 中等 | +| [面试题 08.10. 颜色填充](https://leetcode.cn/problems/color-fill-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/color-fill-lcci/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | +| [面试题 08.12. 八皇后](https://leetcode.cn/problems/eight-queens-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/eight-queens-lcci/) | 数组、回溯 | 困难 | +| [面试题 10.01. 合并排序的数组](https://leetcode.cn/problems/sorted-merge-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-merge-lcci/) | 数组、双指针、排序 | 简单 | +| [面试题 10.02. 变位词组](https://leetcode.cn/problems/group-anagrams-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/group-anagrams-lcci/) | 数组、哈希表、字符串、排序 | 中等 | +| [面试题 10.09. 排序矩阵查找](https://leetcode.cn/problems/sorted-matrix-search-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-matrix-search-lcci/) | 数组、二分查找、分治、矩阵 | 中等 | +| [面试题 16.02. 单词频率](https://leetcode.cn/problems/words-frequency-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/words-frequency-lcci/) | 设计、字典树、数组、哈希表、字符串 | 中等 | +| [面试题 16.05. 阶乘尾数](https://leetcode.cn/problems/factorial-zeros-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/factorial-zeros-lcci/) | 数学 | 简单 | +| [面试题 16.26. 计算器](https://leetcode.cn/problems/calculator-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/calculator-lcci/) | 栈、数学、字符串 | 中等 | +| [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci/) | 递归、数学、动态规划 | 困难 | +| [面试题 17.14. 最小K个数](https://leetcode.cn/problems/smallest-k-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/smallest-k-lcci/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [面试题 17.15. 最长单词](https://leetcode.cn/problems/longest-word-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/longest-word-lcci/) | 字典树、数组、哈希表、字符串 | 中等 | +| [面试题 17.17. 多次搜索](https://leetcode.cn/problems/multi-search-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/multi-search-lcci/) | 字典树、数组、哈希表、字符串、字符串匹配、滑动窗口 | 中等 | + + +### LCR 系列 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [LCR 001. 两数相除](https://leetcode.cn/problems/xoh6Oh/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xoh6Oh/) | 数学 | 简单 | +| [LCR 002. 二进制求和](https://leetcode.cn/problems/JFETK5/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/JFETK5/) | 位运算、数学、字符串、模拟 | 简单 | +| [LCR 003. 比特位计数](https://leetcode.cn/problems/w3tCBm/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w3tCBm/) | 位运算、动态规划 | 简单 | +| [LCR 004. 只出现一次的数字 II](https://leetcode.cn/problems/WGki4K/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WGki4K/) | 位运算、数组 | 中等 | +| [LCR 005. 最大单词长度乘积](https://leetcode.cn/problems/aseY1I/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aseY1I/) | 位运算、数组、字符串 | 中等 | +| [LCR 006. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/kLl5u1/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kLl5u1/) | 数组、双指针、二分查找 | 简单 | +| [LCR 007. 三数之和](https://leetcode.cn/problems/1fGaJU/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/1fGaJU/) | 数组、双指针、排序 | 中等 | +| [LCR 008. 长度最小的子数组](https://leetcode.cn/problems/2VG8Kg/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2VG8Kg/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [LCR 009. 乘积小于 K 的子数组](https://leetcode.cn/problems/ZVAVXX/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZVAVXX/) | 数组、滑动窗口 | 中等 | +| [LCR 010. 和为 K 的子数组](https://leetcode.cn/problems/QTMn0o/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QTMn0o/) | 数组、哈希表、前缀和 | 中等 | +| [LCR 011. 连续数组](https://leetcode.cn/problems/A1NYOS/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/A1NYOS/) | 数组、哈希表、前缀和 | 中等 | +| [LCR 012. 寻找数组的中心下标](https://leetcode.cn/problems/tvdfij/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/tvdfij/) | 数组、前缀和 | 简单 | +| [LCR 013. 二维区域和检索 - 矩阵不可变](https://leetcode.cn/problems/O4NDxx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/O4NDxx/) | 设计、数组、矩阵、前缀和 | 中等 | +| [LCR 016. 无重复字符的最长子串](https://leetcode.cn/problems/wtcaE1/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/wtcaE1/) | 哈希表、字符串、滑动窗口 | 中等 | +| [LCR 017. 最小覆盖子串](https://leetcode.cn/problems/M1oyTv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M1oyTv/) | 哈希表、字符串、滑动窗口 | 困难 | +| [LCR 018. 验证回文串](https://leetcode.cn/problems/XltzEq/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XltzEq/) | 双指针、字符串 | 简单 | +| [LCR 019. 验证回文串 II](https://leetcode.cn/problems/RQku0D/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/RQku0D/) | 贪心、双指针、字符串 | 简单 | +| [LCR 020. 回文子串](https://leetcode.cn/problems/a7VOhD/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/a7VOhD/) | 字符串、动态规划 | 中等 | +| [LCR 021. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/SLwz0R/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SLwz0R/) | 链表、双指针 | 中等 | +| [LCR 022. 环形链表 II](https://leetcode.cn/problems/c32eOV/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/c32eOV/) | 哈希表、链表、双指针 | 中等 | +| [LCR 023. 相交链表](https://leetcode.cn/problems/3u1WK4/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3u1WK4/) | 哈希表、链表、双指针 | 简单 | +| [LCR 024. 反转链表](https://leetcode.cn/problems/UHnkqh/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UHnkqh/) | 递归、链表 | 简单 | +| [LCR 025. 两数相加 II](https://leetcode.cn/problems/lMSNwu/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lMSNwu/) | 栈、链表、数学 | 中等 | +| [LCR 026. 重排链表](https://leetcode.cn/problems/LGjMqU/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LGjMqU/) | 栈、递归、链表、双指针 | 中等 | +| [LCR 027. 回文链表](https://leetcode.cn/problems/aMhZSa/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aMhZSa/) | 栈、递归、链表、双指针 | 简单 | +| [LCR 028. 扁平化多级双向链表](https://leetcode.cn/problems/Qv1Da2/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Qv1Da2/) | 深度优先搜索、链表、双向链表 | 中等 | +| [LCR 029. 循环有序列表的插入](https://leetcode.cn/problems/4ueAj6/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4ueAj6/) | 链表 | 中等 | +| [LCR 030. O(1) 时间插入、删除和获取随机元素](https://leetcode.cn/problems/FortPu/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/FortPu/) | 设计、数组、哈希表、数学、随机化 | 中等 | +| [LCR 031. LRU 缓存](https://leetcode.cn/problems/OrIXps/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/OrIXps/) | 设计、哈希表、链表、双向链表 | 中等 | +| [LCR 032. 有效的字母异位词](https://leetcode.cn/problems/dKk3P7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dKk3P7/) | 哈希表、字符串、排序 | 简单 | +| [LCR 033. 字母异位词分组](https://leetcode.cn/problems/sfvd7V/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/sfvd7V/) | 数组、哈希表、字符串、排序 | 中等 | +| [LCR 034. 验证外星语词典](https://leetcode.cn/problems/lwyVBB/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lwyVBB/) | 数组、哈希表、字符串 | 简单 | +| [LCR 035. 最小时间差](https://leetcode.cn/problems/569nqc/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/569nqc/) | 数组、数学、字符串、排序 | 中等 | +| [LCR 036. 逆波兰表达式求值](https://leetcode.cn/problems/8Zf90G/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/8Zf90G/) | 栈、数组、数学 | 中等 | +| [LCR 037. 行星碰撞](https://leetcode.cn/problems/XagZNi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XagZNi/) | 栈、数组、模拟 | 中等 | +| [LCR 038. 每日温度](https://leetcode.cn/problems/iIQa4I/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iIQa4I/) | 栈、数组、单调栈 | 中等 | +| [LCR 039. 柱状图中最大的矩形](https://leetcode.cn/problems/0ynMMM/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0ynMMM/) | 栈、数组、单调栈 | 困难 | +| [LCR 041. 数据流中的移动平均值](https://leetcode.cn/problems/qIsx9U/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qIsx9U/) | 设计、队列、数组、数据流 | 简单 | +| [LCR 042. 最近的请求次数](https://leetcode.cn/problems/H8086Q/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/H8086Q/) | 设计、队列、数据流 | 简单 | +| [LCR 043. 完全二叉树插入器](https://leetcode.cn/problems/NaqhDT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NaqhDT/) | 树、广度优先搜索、设计、二叉树 | 中等 | +| [LCR 044. 在每个树行中找最大值](https://leetcode.cn/problems/hPov7L/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hPov7L/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [LCR 045. 找树左下角的值](https://leetcode.cn/problems/LwUNpT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LwUNpT/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [LCR 046. 二叉树的右视图](https://leetcode.cn/problems/WNC0Lk/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WNC0Lk/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [LCR 047. 二叉树剪枝](https://leetcode.cn/problems/pOCWxh/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/pOCWxh/) | 树、深度优先搜索、二叉树 | 中等 | +| [LCR 048. 二叉树的序列化与反序列化](https://leetcode.cn/problems/h54YBf/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/h54YBf/) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | +| [LCR 049. 求根节点到叶节点数字之和](https://leetcode.cn/problems/3Etpl5/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3Etpl5/) | 树、深度优先搜索、二叉树 | 中等 | +| [LCR 050. 路径总和 III](https://leetcode.cn/problems/6eUYwP/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/6eUYwP/) | 树、深度优先搜索、二叉树 | 中等 | +| [LCR 051. 二叉树中的最大路径和](https://leetcode.cn/problems/jC7MId/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jC7MId/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [LCR 052. 递增顺序搜索树](https://leetcode.cn/problems/NYBBNL/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NYBBNL/) | 栈、树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [LCR 053. 二叉搜索树中的中序后继](https://leetcode.cn/problems/P5rCT8/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/P5rCT8/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [LCR 054. 把二叉搜索树转换为累加树](https://leetcode.cn/problems/w6cpku/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w6cpku/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [LCR 055. 二叉搜索树迭代器](https://leetcode.cn/problems/kTOapQ/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kTOapQ/) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | +| [LCR 056. 两数之和 IV - 输入二叉搜索树](https://leetcode.cn/problems/opLdQZ/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/opLdQZ/) | 数组、滑动窗口 | 简单 | +| [LCR 057. 存在重复元素 III](https://leetcode.cn/problems/7WqeDu/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WqeDu/) | 数组、桶排序、有序集合、排序、滑动窗口 | 中等 | +| [LCR 059. 数据流中的第 K 大元素](https://leetcode.cn/problems/jBjn9C/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jBjn9C/) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | +| [LCR 060. 前 K 个高频元素](https://leetcode.cn/problems/g5c51o/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/g5c51o/) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | +| [LCR 062. 实现 Trie (前缀树)](https://leetcode.cn/problems/QC3q1f/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QC3q1f/) | 设计、字典树、哈希表、字符串 | 中等 | +| [LCR 063. 单词替换](https://leetcode.cn/problems/UhWRSj/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UhWRSj/) | 字典树、数组、哈希表、字符串 | 中等 | +| [LCR 064. 实现一个魔法字典](https://leetcode.cn/problems/US1pGT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/US1pGT/) | 深度优先搜索、设计、字典树、哈希表、字符串 | 中等 | +| [LCR 065. 单词的压缩编码](https://leetcode.cn/problems/iSwD2y/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iSwD2y/) | 字典树、数组、哈希表、字符串 | 中等 | +| [LCR 066. 键值映射](https://leetcode.cn/problems/z1R5dt/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/z1R5dt/) | 设计、字典树、哈希表、字符串 | 中等 | +| [LCR 067. 数组中两个数的最大异或值](https://leetcode.cn/problems/ms70jA/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ms70jA/) | 位运算、字典树、数组、哈希表 | 中等 | +| [LCR 068. 搜索插入位置](https://leetcode.cn/problems/N6YdxV/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/N6YdxV/) | 数组、二分查找 | 简单 | +| [LCR 072. x 的平方根](https://leetcode.cn/problems/jJ0w9p/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jJ0w9p/) | 数学、二分查找 | 简单 | +| [LCR 073. 爱吃香蕉的狒狒](https://leetcode.cn/problems/nZZqjQ/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/nZZqjQ/) | 数组、二分查找 | 中等 | +| [LCR 074. 合并区间](https://leetcode.cn/problems/SsGoHC/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SsGoHC/) | 数组、排序 | 中等 | +| [LCR 075. 数组的相对排序](https://leetcode.cn/problems/0H97ZC/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0H97ZC/) | 数组、哈希表、计数排序、排序 | 简单 | +| [LCR 076. 数组中的第 K 个最大元素](https://leetcode.cn/problems/xx4gT2/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xx4gT2/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [LCR 077. 排序链表](https://leetcode.cn/problems/7WHec2/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WHec2/) | 链表、双指针、分治、排序、归并排序 | 中等 | +| [LCR 078. 合并 K 个升序链表](https://leetcode.cn/problems/vvXgSW/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vvXgSW/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [LCR 079. 子集](https://leetcode.cn/problems/TVdhkn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/TVdhkn/) | 位运算、数组、回溯 | 中等 | +| [LCR 080. 组合](https://leetcode.cn/problems/uUsW3B/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/uUsW3B/) | 数组、回溯 | 中等 | +| [LCR 081. 组合总和](https://leetcode.cn/problems/Ygoe9J/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Ygoe9J/) | 数组、回溯 | 中等 | +| [LCR 082. 组合总和 II](https://leetcode.cn/problems/4sjJUc/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4sjJUc/) | 数组、回溯 | 中等 | +| [LCR 083. 全排列](https://leetcode.cn/problems/VvJkup/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/VvJkup/) | 数组、回溯 | 中等 | +| [LCR 084. 全排列 II](https://leetcode.cn/problems/7p8L0Z/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7p8L0Z/) | 数组、回溯 | 中等 | +| [LCR 085. 括号生成](https://leetcode.cn/problems/IDBivT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/IDBivT/) | 字符串、动态规划、回溯 | 中等 | +| [LCR 086. 分割回文串](https://leetcode.cn/problems/M99OJA/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M99OJA/) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | +| [LCR 087. 复原 IP 地址](https://leetcode.cn/problems/0on3uN/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0on3uN/) | 字符串、回溯 | 中等 | +| [LCR 088. 使用最小花费爬楼梯](https://leetcode.cn/problems/GzCJIP/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/GzCJIP/) | 数组、动态规划 | 简单 | +| [LCR 089. 打家劫舍](https://leetcode.cn/problems/Gu0c2T/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Gu0c2T/) | 数组、动态规划 | 中等 | +| [LCR 090. 打家劫舍 II](https://leetcode.cn/problems/PzWKhm/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/PzWKhm/) | 数组、动态规划 | 中等 | +| [LCR 093. 最长的斐波那契子序列的长度](https://leetcode.cn/problems/Q91FMA/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Q91FMA/) | 数组、哈希表、动态规划 | 中等 | +| [LCR 095. 最长公共子序列](https://leetcode.cn/problems/qJnOS7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qJnOS7/) | 字符串、动态规划 | 中等 | +| [LCR 097. 不同的子序列](https://leetcode.cn/problems/21dk04/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/21dk04/) | 字符串、动态规划 | 困难 | +| [LCR 098. 不同路径](https://leetcode.cn/problems/2AoeFn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2AoeFn/) | 数学、动态规划、组合数学 | 中等 | +| [LCR 101. 分割等和子集](https://leetcode.cn/problems/NUPfPr/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NUPfPr/) | 数学、字符串、模拟 | 简单 | +| [LCR 102. 目标和](https://leetcode.cn/problems/YaVDxD/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/YaVDxD/) | 数组、动态规划、回溯 | 中等 | +| [LCR 103. 零钱兑换](https://leetcode.cn/problems/gaM7Ch/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gaM7Ch/) | 广度优先搜索、数组、动态规划 | 中等 | +| [LCR 104. 组合总和 Ⅳ](https://leetcode.cn/problems/D0F0SV/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/D0F0SV/) | 数组、动态规划 | 中等 | +| [LCR 105. 岛屿的最大面积](https://leetcode.cn/problems/ZL6zAn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZL6zAn/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [LCR 106. 判断二分图](https://leetcode.cn/problems/vEAB3K/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vEAB3K/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [LCR 107. 01 矩阵](https://leetcode.cn/problems/2bCMpM/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2bCMpM/) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | +| [LCR 108. 单词接龙](https://leetcode.cn/problems/om3reC/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/om3reC/) | 广度优先搜索、哈希表、字符串 | 困难 | +| [LCR 109. 打开转盘锁](https://leetcode.cn/problems/zlDJc7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zlDJc7/) | 广度优先搜索、数组、哈希表、字符串 | 中等 | +| [LCR 111. 除法求值](https://leetcode.cn/problems/vlzXQL/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vlzXQL/) | 深度优先搜索、广度优先搜索、并查集、图、数组、最短路 | 中等 | +| [LCR 112. 矩阵中的最长递增路径](https://leetcode.cn/problems/fpTFWP/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fpTFWP/) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | +| [LCR 113. 课程表 II](https://leetcode.cn/problems/QA2IGt/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QA2IGt/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [LCR 116. 省份数量](https://leetcode.cn/problems/bLyHh0/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bLyHh0/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [LCR 118. 冗余连接](https://leetcode.cn/problems/7LpjUW/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7LpjUW/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [LCR 119. 最长连续序列](https://leetcode.cn/problems/WhsWhI/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WhsWhI/) | 并查集、数组、哈希表 | 中等 | +| [LCR 120. 寻找文件副本](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | 数组、哈希表、排序 | 简单 | +| [LCR 121. 寻找目标值 - 二维数组](https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) | 数组、二分查找、分治、矩阵 | 中等 | +| [LCR 122. 路径加密](https://leetcode.cn/problems/ti-huan-kong-ge-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ti-huan-kong-ge-lcof/) | 字符串 | 简单 | +| [LCR 123. 图书整理 I](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | 栈、递归、链表、双指针 | 简单 | +| [LCR 124. 推理二叉树](https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhong-jian-er-cha-shu-lcof/) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [LCR 125. 图书整理 II](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | 栈、设计、队列 | 简单 | +| [LCR 126. 斐波那契数](https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fei-bo-na-qi-shu-lie-lcof/) | 记忆化搜索、数学、动态规划 | 简单 | +| [LCR 127. 跳跃训练](https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qing-wa-tiao-tai-jie-wen-ti-lcof/) | 记忆化搜索、数学、动态规划 | 简单 | +| [LCR 128. 库存管理 I](https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) | 数组、二分查找 | 简单 | +| [LCR 129. 字母迷宫](https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ju-zhen-zhong-de-lu-jing-lcof/) | 数组、字符串、回溯、矩阵 | 中等 | +| [LCR 130. 衣橱整理](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | +| [LCR 131. 砍竹子 I](https://leetcode.cn/problems/jian-sheng-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jian-sheng-zi-lcof/) | 数学、动态规划 | 中等 | +| [LCR 133. 位 1 的个数](https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-jin-zhi-zhong-1de-ge-shu-lcof/) | 位运算 | 简单 | +| [LCR 134. Pow(x, n)](https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zhi-de-zheng-shu-ci-fang-lcof/) | 递归、数学 | 中等 | +| [LCR 135. 报数](https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) | 数组、数学 | 简单 | +| [LCR 136. 删除链表的节点](https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shan-chu-lian-biao-de-jie-dian-lcof/) | 链表 | 简单 | +| [LCR 139. 训练计划 I](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | 数组、双指针、排序 | 简单 | +| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | 链表、双指针 | 简单 | +| [LCR 141. 训练计划 III](https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-lian-biao-lcof/) | 递归、链表 | 简单 | +| [LCR 142. 训练计划 IV](https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) | 递归、链表 | 简单 | +| [LCR 143. 子结构判断](https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-de-zi-jie-gou-lcof/) | 树、深度优先搜索、二叉树 | 中等 | +| [LCR 144. 翻转二叉树](https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-jing-xiang-lcof/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 145. 判断对称二叉树](https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-cheng-de-er-cha-shu-lcof/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 146. 螺旋遍历二维数组](https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shun-shi-zhen-da-yin-ju-zhen-lcof/) | 数组、矩阵、模拟 | 简单 | +| [LCR 147. 最小栈](https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bao-han-minhan-shu-de-zhan-lcof/) | 栈、设计 | 简单 | +| [LCR 148. 验证图书取出顺序](https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) | 栈、数组、模拟 | 中等 | +| [LCR 149. 彩灯装饰记录 I](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) | 树、广度优先搜索、二叉树 | 中等 | +| [LCR 150. 彩灯装饰记录 II](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) | 树、广度优先搜索、二叉树 | 简单 | +| [LCR 151. 彩灯装饰记录 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | 树、广度优先搜索、二叉树 | 中等 | +| [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 | +| [LCR 153. 二叉树中和为目标值的路径](https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) | 树、深度优先搜索、回溯、二叉树 | 中等 | +| [LCR 154. 复杂链表的复制](https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fu-za-lian-biao-de-fu-zhi-lcof/) | 哈希表、链表 | 中等 | +| [LCR 155. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | +| [LCR 156. 序列化与反序列化二叉树](https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xu-lie-hua-er-cha-shu-lcof/) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | +| [LCR 157. 套餐内商品的排列顺序](https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zi-fu-chuan-de-pai-lie-lcof/) | 字符串、回溯 | 中等 | +| [LCR 158. 库存管理 II](https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) | 数组、哈希表、分治、计数、排序 | 简单 | +| [LCR 159. 库存管理 III](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof/) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | +| [LCR 160. 数据流中的中位数](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | +| [LCR 161. 连续天数的最高销售额](https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) | 数组、分治、动态规划 | 简单 | +| [LCR 163. 找到第 k 位数字](https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) | 数学、二分查找 | 中等 | +| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | 贪心、字符串、排序 | 中等 | +| [LCR 165. 解密数字](https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) | 字符串、动态规划 | 中等 | +| [LCR 166. 珠宝的最高价值](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/li-wu-de-zui-da-jie-zhi-lcof/) | 数组、动态规划、矩阵 | 中等 | +| [LCR 167. 招式拆解 I](https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) | 哈希表、字符串、滑动窗口 | 中等 | +| [LCR 168. 丑数](https://leetcode.cn/problems/chou-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/chou-shu-lcof/) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | +| [LCR 169. 招式拆解 II](https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) | 队列、哈希表、字符串、计数 | 简单 | +| [LCR 170. 交易逆序对的总数](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | +| [LCR 171. 训练计划 V](https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) | 哈希表、链表、双指针 | 简单 | +| [LCR 172. 统计目标成绩的出现次数](https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) | 数组、二分查找 | 简单 | +| [LCR 173. 点名](https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/que-shi-de-shu-zi-lcof/) | 位运算、数组、哈希表、数学、二分查找 | 简单 | +| [LCR 174. 寻找二叉搜索树中的目标节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [LCR 175. 计算二叉树的深度](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-shen-du-lcof/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 176. 判断是否为平衡二叉树](https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ping-heng-er-cha-shu-lcof/) | 树、深度优先搜索、二叉树 | 简单 | +| [LCR 177. 撞色搭配](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) | 位运算、数组 | 中等 | +| [LCR 179. 查找总价格为目标值的两个商品](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-liang-ge-shu-zi-lcof/) | 数组、双指针、二分查找 | 简单 | +| [LCR 180. 文件组合](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | 数学、双指针、枚举 | 简单 | +| [LCR 181. 字符串中的单词反转](https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-dan-ci-shun-xu-lcof/) | 双指针、字符串 | 简单 | +| [LCR 182. 动态口令](https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zuo-xuan-zhuan-zi-fu-chuan-lcof/) | 数学、双指针、字符串 | 简单 | +| [LCR 183. 望远镜中最高的海拔](https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [LCR 184. 设计自助结算系统](https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-lie-de-zui-da-zhi-lcof/) | 设计、队列、单调队列 | 中等 | +| [LCR 186. 文物朝代判断](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof/) | 数组、排序 | 简单 | +| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | 递归、数学 | 简单 | +| [LCR 188. 买卖芯片的最佳时机](https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gu-piao-de-zui-da-li-run-lcof/) | 数组、动态规划 | 中等 | +| [LCR 189. 设计机械累加器](https://leetcode.cn/problems/qiu-12n-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qiu-12n-lcof/) | 位运算、递归、脑筋急转弯 | 中等 | +| [LCR 190. 加密运算](https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) | 位运算、数学 | 简单 | +| [LCR 191. 按规则计算统计结果](https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gou-jian-cheng-ji-shu-zu-lcof/) | 数组、前缀和 | 中等 | +| [LCR 192. 把字符串转换成整数 (atoi)](https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) | 字符串 | 中等 | +| [LCR 193. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [LCR 194. 二叉树的最近公共祖先](https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | 树、深度优先搜索、二叉树 | 简单 | + + diff --git a/docs/00_preface/00_06_categories_list.md b/docs/00_preface/00_06_categories_list.md new file mode 100644 index 00000000..8231a0c8 --- /dev/null +++ b/docs/00_preface/00_06_categories_list.md @@ -0,0 +1,1166 @@ +# LeetCode 题解(按分类排序,推荐刷题列表 ★★★) + +## 第 1 章 数组 + +### 数组基础题目 + +#### 数组操作题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0189. 轮转数组](https://leetcode.cn/problems/rotate-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array/) | 数组、数学、双指针 | 中等 | +| [0066. 加一](https://leetcode.cn/problems/plus-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/plus-one/) | 数组、数学 | 简单 | +| [0724. 寻找数组的中心下标](https://leetcode.cn/problems/find-pivot-index/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-pivot-index/) | 数组、前缀和 | 简单 | +| [0485. 最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones/) | 数组 | 简单 | +| [0238. 除自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-except-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/product-of-array-except-self/) | 数组、前缀和 | 中等 | + + +#### 二维数组题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0498. 对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse/) | 数组、矩阵、模拟 | 中等 | +| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image/) | 数组、数学、矩阵 | 中等 | +| [0073. 矩阵置零](https://leetcode.cn/problems/set-matrix-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/set-matrix-zeroes/) | 数组、哈希表、矩阵 | 中等 | +| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix/) | 数组、矩阵、模拟 | 中等 | +| [0059. 螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii/) | 数组、矩阵、模拟 | 中等 | +| [0289. 生命游戏](https://leetcode.cn/problems/game-of-life/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/game-of-life/) | 数组、矩阵、模拟 | 中等 | + + +### 排序算法题目 + +#### 冒泡排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | 贪心、字符串、排序 | 中等 | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | + + +#### 选择排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | + + +#### 插入排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) | 数组、双指针、排序 | 中等 | + + +#### 希尔排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0506. 相对名次](https://leetcode.cn/problems/relative-ranks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/relative-ranks/) | 数组、排序、堆(优先队列) | 简单 | + + +#### 归并排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | +| [LCR 170. 交易逆序对的总数](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | +| [0315. 计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | + + +#### 快速排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | + + +#### 堆排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [LCR 159. 库存管理 III](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof/) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | + + +#### 计数排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [1122. 数组的相对排序](https://leetcode.cn/problems/relative-sort-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/relative-sort-array/) | 数组、哈希表、计数排序、排序 | 简单 | + + +#### 桶排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii/) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | +| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap/) | 数组、桶排序、基数排序、排序 | 中等 | + + +#### 基数排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap/) | 数组、桶排序、基数排序、排序 | 中等 | +| [0561. 数组拆分](https://leetcode.cn/problems/array-partition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition/) | 贪心、数组、计数排序、排序 | 简单 | + + +#### 其他排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0217. 存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate/) | 数组、哈希表、排序 | 简单 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | +| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number/) | 贪心、数组、字符串、排序 | 中等 | +| [0384. 打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array/) | 设计、数组、数学、随机化 | 中等 | +| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | 贪心、字符串、排序 | 中等 | + + +### 二分查找题目 + +#### 二分下标题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search/) | 数组、二分查找 | 简单 | +| [0374. 猜数字大小](https://leetcode.cn/problems/guess-number-higher-or-lower/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower/) | 二分查找、交互 | 简单 | +| [0035. 搜索插入位置](https://leetcode.cn/problems/search-insert-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-insert-position/) | 数组、二分查找 | 简单 | +| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array/) | 数组、二分查找 | 中等 | +| [0167. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted/) | 数组、双指针、二分查找 | 中等 | +| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | +| [0154. 寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii/) | 数组、二分查找 | 困难 | +| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | +| [0081. 搜索旋转排序数组 II](https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array-ii/) | 数组、二分查找 | 中等 | +| [0278. 第一个错误的版本](https://leetcode.cn/problems/first-bad-version/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/first-bad-version/) | 二分查找、交互 | 简单 | +| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element/) | 数组、二分查找 | 中等 | +| [0852. 山脉数组的峰顶索引](https://leetcode.cn/problems/peak-index-in-a-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/peak-index-in-a-mountain-array/) | 数组、二分查找 | 中等 | +| [1095. 山脉数组中查找目标值](https://leetcode.cn/problems/find-in-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-in-mountain-array/) | 数组、二分查找、交互 | 困难 | +| [0744. 寻找比目标字母大的最小字母](https://leetcode.cn/problems/find-smallest-letter-greater-than-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-smallest-letter-greater-than-target/) | 数组、二分查找 | 简单 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | +| [0074. 搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix/) | 数组、二分查找、矩阵 | 中等 | +| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii/) | 数组、二分查找、分治、矩阵 | 中等 | + + +#### 二分答案题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx/) | 数学、二分查找 | 简单 | +| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number/) | 位运算、数组、双指针、二分查找 | 中等 | +| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) | 递归、数学 | 中等 | +| [0367. 有效的完全平方数](https://leetcode.cn/problems/valid-perfect-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/valid-perfect-square/) | 数学、二分查找 | 简单 | +| [1300. 转变数组后最接近目标值的数组和](https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target/) | 数组、二分查找、排序 | 中等 | +| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit/) | 数学、二分查找 | 中等 | + + +#### 复杂的二分查找问题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0875. 爱吃香蕉的珂珂](https://leetcode.cn/problems/koko-eating-bananas/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/koko-eating-bananas/) | 数组、二分查找 | 中等 | +| [0410. 分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum/) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | +| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0658. 找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements/) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | +| [0270. 最接近的二叉搜索树值](https://leetcode.cn/problems/closest-binary-search-tree-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/closest-binary-search-tree-value/) | 树、深度优先搜索、二叉搜索树、二分查找、二叉树 | 简单 | +| [0702. 搜索长度未知的有序数组](https://leetcode.cn/problems/search-in-a-sorted-array-of-unknown-size/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size/) | 数组、二分查找、交互 | 中等 | +| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number/) | 位运算、数组、双指针、二分查找 | 中等 | +| [0719. 找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance/) | 数组、双指针、二分查找、排序 | 困难 | +| [0259. 较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller/) | 数组、双指针、二分查找、排序 | 中等 | +| [1011. 在 D 天内送达包裹的能力](https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days/) | 数组、二分查找 | 中等 | +| [1482. 制作 m 束花所需的最少天数](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets/) | 数组、二分查找 | 中等 | + + +### 双指针题目 + +#### 对撞指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0167. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted/) | 数组、双指针、二分查找 | 中等 | +| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) | 双指针、字符串 | 简单 | +| [0345. 反转字符串中的元音字母](https://leetcode.cn/problems/reverse-vowels-of-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-vowels-of-a-string/) | 双指针、字符串 | 简单 | +| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) | 双指针、字符串 | 简单 | +| [0011. 盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water/) | 贪心、数组、双指针 | 中等 | +| [0611. 有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number/) | 贪心、数组、双指针、二分查找、排序 | 中等 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | +| [0016. 最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest/) | 数组、双指针、排序 | 中等 | +| [0018. 四数之和](https://leetcode.cn/problems/4sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum/) | 数组、双指针、排序 | 中等 | +| [0259. 较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller/) | 数组、双指针、二分查找、排序 | 中等 | +| [0658. 找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements/) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | +| [1099. 小于 K 的两数之和](https://leetcode.cn/problems/two-sum-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-sum-less-than-k/) | 数组、双指针、二分查找、排序 | 简单 | +| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) | 数组、双指针、排序 | 中等 | +| [0360. 有序转化数组](https://leetcode.cn/problems/sort-transformed-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sort-transformed-array/) | 数组、数学、双指针、排序 | 中等 | +| [0977. 有序数组的平方](https://leetcode.cn/problems/squares-of-a-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/squares-of-a-sorted-array/) | 数组、双指针、排序 | 简单 | +| [0881. 救生艇](https://leetcode.cn/problems/boats-to-save-people/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/boats-to-save-people/) | 贪心、数组、双指针、排序 | 中等 | +| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) | 栈、数组、双指针、动态规划、单调栈 | 困难 | +| [0443. 压缩字符串](https://leetcode.cn/problems/string-compression/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression/) | 双指针、字符串 | 中等 | + + +#### 快慢指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0026. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array/) | 数组、双指针 | 简单 | +| [0080. 删除有序数组中的重复项 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii/) | 数组、双指针 | 中等 | +| [0027. 移除元素](https://leetcode.cn/problems/remove-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-element/) | 数组、双指针 | 简单 | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | +| [0845. 数组中的最长山脉](https://leetcode.cn/problems/longest-mountain-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/longest-mountain-in-array/) | 数组、双指针、动态规划、枚举 | 中等 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | +| [0719. 找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance/) | 数组、双指针、二分查找、排序 | 困难 | +| [0334. 递增的三元子序列](https://leetcode.cn/problems/increasing-triplet-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/increasing-triplet-subsequence/) | 贪心、数组 | 中等 | +| [0978. 最长湍流子数组](https://leetcode.cn/problems/longest-turbulent-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/longest-turbulent-subarray/) | 数组、动态规划、滑动窗口 | 中等 | +| [LCR 139. 训练计划 I](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | 数组、双指针、排序 | 简单 | + + +#### 分离双指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0925. 长按键入](https://leetcode.cn/problems/long-pressed-name/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/long-pressed-name/) | 双指针、字符串 | 简单 | +| [0844. 比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/backspace-string-compare/) | 栈、双指针、字符串、模拟 | 简单 | +| [1229. 安排会议日程](https://leetcode.cn/problems/meeting-scheduler/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/meeting-scheduler/) | 数组、双指针、排序 | 中等 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | +| [0392. 判断子序列](https://leetcode.cn/problems/is-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/is-subsequence/) | 双指针、字符串、动态规划 | 简单 | + + +### 滑动窗口题目 + +#### 固定长度窗口题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1343. 大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | 数组、滑动窗口 | 中等 | +| [0643. 子数组最大平均数 I](https://leetcode.cn/problems/maximum-average-subarray-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-average-subarray-i/) | 数组、滑动窗口 | 简单 | +| [1052. 爱生气的书店老板](https://leetcode.cn/problems/grumpy-bookstore-owner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/grumpy-bookstore-owner/) | 数组、滑动窗口 | 中等 | +| [1423. 可获得的最大点数](https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards/) | 数组、前缀和、滑动窗口 | 中等 | +| [1456. 定长子串中元音的最大数目](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length/) | 字符串、滑动窗口 | 中等 | +| [0567. 字符串的排列](https://leetcode.cn/problems/permutation-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/permutation-in-string/) | 哈希表、双指针、字符串、滑动窗口 | 中等 | +| [1100. 长度为 K 的无重复字符子串](https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [1151. 最少交换次数来组合所有的 1](https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together/) | 数组、滑动窗口 | 中等 | +| [1176. 健身计划评估](https://leetcode.cn/problems/diet-plan-performance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/diet-plan-performance/) | 数组、滑动窗口 | 简单 | +| [0438. 找到字符串中所有字母异位词](https://leetcode.cn/problems/find-all-anagrams-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-anagrams-in-a-string/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0995. K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips/) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | +| [0683. K 个关闭的灯泡](https://leetcode.cn/problems/k-empty-slots/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/k-empty-slots/) | 树状数组、线段树、队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii/) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0480. 滑动窗口中位数](https://leetcode.cn/problems/sliding-window-median/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sliding-window-median/) | 数组、哈希表、滑动窗口、堆(优先队列) | 困难 | + + +#### 不定长度窗口题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0674. 最长连续递增序列](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-continuous-increasing-subsequence/) | 数组 | 简单 | +| [0485. 最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones/) | 数组 | 简单 | +| [0487. 最大连续1的个数 II](https://leetcode.cn/problems/max-consecutive-ones-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones-ii/) | 数组、动态规划、滑动窗口 | 中等 | +| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring/) | 哈希表、字符串、滑动窗口 | 困难 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [1004. 最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [1658. 将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero/) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | +| [0424. 替换后的最长重复字符](https://leetcode.cn/problems/longest-repeating-character-replacement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-repeating-character-replacement/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [1695. 删除子数组的最大得分](https://leetcode.cn/problems/maximum-erasure-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-erasure-value/) | 数组、哈希表、滑动窗口 | 中等 | +| [1208. 尽可能使字符串相等](https://leetcode.cn/problems/get-equal-substrings-within-budget/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/get-equal-substrings-within-budget/) | 字符串、二分查找、前缀和、滑动窗口 | 中等 | +| [1493. 删掉一个元素以后全为 1 的最长子数组](https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element/) | 数组、动态规划、滑动窗口 | 中等 | +| [0727. 最小窗口子序列](https://leetcode.cn/problems/minimum-window-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-window-subsequence/) | 字符串、动态规划、滑动窗口 | 困难 | +| [0159. 至多包含两个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0340. 至多包含 K 个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0795. 区间子数组个数](https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum/) | 数组、双指针 | 中等 | +| [0992. K 个不同整数的子数组](https://leetcode.cn/problems/subarrays-with-k-different-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarrays-with-k-different-integers/) | 数组、哈希表、计数、滑动窗口 | 困难 | +| [0713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/subarray-product-less-than-k/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0904. 水果成篮](https://leetcode.cn/problems/fruit-into-baskets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/fruit-into-baskets/) | 数组、哈希表、滑动窗口 | 中等 | +| [1358. 包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0467. 环绕字符串中唯一的子字符串](https://leetcode.cn/problems/unique-substrings-in-wraparound-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/unique-substrings-in-wraparound-string/) | 字符串、动态规划 | 中等 | +| [1438. 绝对差不超过限制的最长连续子数组](https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | 队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 中等 | + + +## 第 2 章 链表 + +### 链表经典题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0707. 设计链表](https://leetcode.cn/problems/design-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-linked-list/) | 设计、链表 | 中等 | +| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list/) | 链表 | 简单 | +| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii/) | 链表、双指针 | 中等 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | +| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group/) | 递归、链表 | 困难 | +| [0203. 移除链表元素](https://leetcode.cn/problems/remove-linked-list-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/remove-linked-list-elements/) | 递归、链表 | 简单 | +| [0328. 奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list/) | 链表 | 中等 | +| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list/) | 栈、递归、链表、双指针 | 简单 | +| [0430. 扁平化多级双向链表](https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list/) | 深度优先搜索、链表、双向链表 | 中等 | +| [0138. 随机链表的复制](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer/) | 哈希表、链表 | 中等 | +| [0061. 旋转链表](https://leetcode.cn/problems/rotate-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list/) | 链表、双指针 | 中等 | + + +### 链表排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list/) | 链表、双指针、分治、排序、归并排序 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0147. 对链表进行插入排序](https://leetcode.cn/problems/insertion-sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/insertion-sort-list/) | 链表、排序 | 中等 | + + +### 链表双指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle/) | 哈希表、链表、双指针 | 简单 | +| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii/) | 哈希表、链表、双指针 | 中等 | +| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists/) | 哈希表、链表、双指针 | 简单 | +| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list/) | 链表、双指针 | 中等 | +| [0876. 链表的中间结点](https://leetcode.cn/problems/middle-of-the-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/middle-of-the-linked-list/) | 链表、双指针 | 简单 | +| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | 链表、双指针 | 简单 | +| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list/) | 栈、递归、链表、双指针 | 中等 | +| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers/) | 递归、链表、数学 | 中等 | +| [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii/) | 栈、链表、数学 | 中等 | + + +## 第 3 章 堆栈、队列、哈希表 + +### 堆栈基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1047. 删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string/) | 栈、字符串 | 简单 | +| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack/) | 栈、设计 | 中等 | +| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses/) | 栈、字符串 | 简单 | +| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii/) | 栈、数学、字符串 | 中等 | +| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) | 栈、数组、单调栈 | 中等 | +| [0150. 逆波兰表达式求值](https://leetcode.cn/problems/evaluate-reverse-polish-notation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/evaluate-reverse-polish-notation/) | 栈、数组、数学 | 中等 | +| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks/) | 栈、设计、队列 | 简单 | +| [LCR 125. 图书整理 II](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | 栈、设计、队列 | 简单 | +| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string/) | 栈、递归、字符串 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | +| [0946. 验证栈序列](https://leetcode.cn/problems/validate-stack-sequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/validate-stack-sequences/) | 栈、数组、模拟 | 中等 | +| [LCR 123. 图书整理 I](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | 栈、递归、链表、双指针 | 简单 | +| [0071. 简化路径](https://leetcode.cn/problems/simplify-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/simplify-path/) | 栈、字符串 | 中等 | + + +### 单调栈 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) | 栈、数组、单调栈 | 中等 | +| [0496. 下一个更大元素 I](https://leetcode.cn/problems/next-greater-element-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/next-greater-element-i/) | 栈、数组、哈希表、单调栈 | 简单 | +| [0503. 下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii/) | 栈、数组、单调栈 | 中等 | +| [0901. 股票价格跨度](https://leetcode.cn/problems/online-stock-span/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/online-stock-span/) | 栈、设计、数据流、单调栈 | 中等 | +| [0084. 柱状图中最大的矩形](https://leetcode.cn/problems/largest-rectangle-in-histogram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/largest-rectangle-in-histogram/) | 栈、数组、单调栈 | 困难 | +| [0316. 去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/remove-duplicate-letters/) | 栈、贪心、字符串、单调栈 | 中等 | +| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) | 栈、数组、双指针、动态规划、单调栈 | 困难 | +| [0085. 最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximal-rectangle/) | 栈、数组、动态规划、矩阵、单调栈 | 困难 | +| [0862. 和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k/) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | + + +### 队列基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0622. 设计循环队列](https://leetcode.cn/problems/design-circular-queue/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-circular-queue/) | 设计、队列、数组、链表 | 中等 | +| [0346. 数据流中的移动平均值](https://leetcode.cn/problems/moving-average-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/moving-average-from-data-stream/) | 设计、队列、数组、数据流 | 简单 | +| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues/) | 栈、设计、队列 | 简单 | + + +### 优先队列题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0703. 数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream/) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | +| [0347. 前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements/) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | +| [0451. 根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency/) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | +| [0973. 最接近原点的 K 个点](https://leetcode.cn/problems/k-closest-points-to-origin/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/k-closest-points-to-origin/) | 几何、数组、数学、分治、快速选择、排序、堆(优先队列) | 中等 | +| [1296. 划分数组为连续数字的集合](https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers/) | 贪心、数组、哈希表、排序 | 中等 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0295. 数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream/) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0218. 天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem/) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | + + +### 哈希表题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0705. 设计哈希集合](https://leetcode.cn/problems/design-hashset/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashset/) | 设计、数组、哈希表、链表、哈希函数 | 简单 | +| [0706. 设计哈希映射](https://leetcode.cn/problems/design-hashmap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashmap/) | 设计、数组、哈希表、链表、哈希函数 | 简单 | +| [0217. 存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate/) | 数组、哈希表、排序 | 简单 | +| [0219. 存在重复元素 II](https://leetcode.cn/problems/contains-duplicate-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-ii/) | 数组、哈希表、滑动窗口 | 简单 | +| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii/) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | +| [1941. 检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences/) | 哈希表、字符串、计数 | 简单 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | +| [0383. 赎金信](https://leetcode.cn/problems/ransom-note/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/ransom-note/) | 哈希表、字符串、计数 | 简单 | +| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0036. 有效的数独](https://leetcode.cn/problems/valid-sudoku/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-sudoku/) | 数组、哈希表、矩阵 | 中等 | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | +| [0018. 四数之和](https://leetcode.cn/problems/4sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum/) | 数组、双指针、排序 | 中等 | +| [0454. 四数相加 II](https://leetcode.cn/problems/4sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/4sum-ii/) | 数组、哈希表 | 中等 | +| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive/) | 数组、哈希表 | 困难 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | +| [0202. 快乐数](https://leetcode.cn/problems/happy-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/happy-number/) | 哈希表、数学、双指针 | 简单 | +| [0242. 有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram/) | 哈希表、字符串、排序 | 简单 | +| [0205. 同构字符串](https://leetcode.cn/problems/isomorphic-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/isomorphic-strings/) | 哈希表、字符串 | 简单 | +| [0442. 数组中重复的数据](https://leetcode.cn/problems/find-all-duplicates-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-duplicates-in-an-array/) | 数组、哈希表 | 中等 | +| [LCR 186. 文物朝代判断](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof/) | 数组、排序 | 简单 | +| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | +| [LCR 120. 寻找文件副本](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | 数组、哈希表、排序 | 简单 | +| [0451. 根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency/) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | +| [0049. 字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams/) | 数组、哈希表、字符串、排序 | 中等 | +| [0599. 两个列表的最小索引总和](https://leetcode.cn/problems/minimum-index-sum-of-two-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-index-sum-of-two-lists/) | 数组、哈希表、字符串 | 简单 | +| [0387. 字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/first-unique-character-in-a-string/) | 队列、哈希表、字符串、计数 | 简单 | +| [0447. 回旋镖的数量](https://leetcode.cn/problems/number-of-boomerangs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/number-of-boomerangs/) | 数组、哈希表、数学 | 中等 | +| [0149. 直线上最多的点数](https://leetcode.cn/problems/max-points-on-a-line/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/max-points-on-a-line/) | 几何、数组、哈希表、数学 | 困难 | +| [0359. 日志速率限制器](https://leetcode.cn/problems/logger-rate-limiter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/logger-rate-limiter/) | 设计、哈希表、数据流 | 简单 | +| [0811. 子域名访问计数](https://leetcode.cn/problems/subdomain-visit-count/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/subdomain-visit-count/) | 数组、哈希表、字符串、计数 | 中等 | + + +## 第 4 章 字符串 + +### 字符串基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) | 双指针、字符串 | 简单 | +| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) | 双指针、字符串、动态规划 | 中等 | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) | 双指针、字符串 | 简单 | +| [0557. 反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii/) | 双指针、字符串 | 简单 | +| [0049. 字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams/) | 数组、哈希表、字符串、排序 | 中等 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | +| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string/) | 双指针、字符串 | 中等 | +| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings/) | 数学、字符串、模拟 | 中等 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | + + +### 单模式串匹配题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0028. 找出字符串中第一个匹配项的下标](https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string/) | 双指针、字符串、字符串匹配 | 简单 | +| [0459. 重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern/) | 字符串、字符串匹配 | 简单 | +| [0686. 重复叠加字符串匹配](https://leetcode.cn/problems/repeated-string-match/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match/) | 字符串、字符串匹配 | 中等 | +| [1668. 最大重复子字符串](https://leetcode.cn/problems/maximum-repeating-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-repeating-substring/) | 字符串、动态规划、字符串匹配 | 简单 | +| [0796. 旋转字符串](https://leetcode.cn/problems/rotate-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string/) | 字符串、字符串匹配 | 简单 | +| [1408. 数组中的字符串匹配](https://leetcode.cn/problems/string-matching-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array/) | 数组、字符串、字符串匹配 | 简单 | +| [2156. 查找给定哈希值的子串](https://leetcode.cn/problems/find-substring-with-given-hash-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value/) | 字符串、滑动窗口、哈希函数、滚动哈希 | 困难 | + + +### 字典树题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0208. 实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree/) | 设计、字典树、哈希表、字符串 | 中等 | +| [0677. 键值映射](https://leetcode.cn/problems/map-sum-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/map-sum-pairs/) | 设计、字典树、哈希表、字符串 | 中等 | +| [0648. 单词替换](https://leetcode.cn/problems/replace-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/replace-words/) | 字典树、数组、哈希表、字符串 | 中等 | +| [0642. 设计搜索自动补全系统](https://leetcode.cn/problems/design-search-autocomplete-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-search-autocomplete-system/) | 深度优先搜索、设计、字典树、字符串、数据流、排序、堆(优先队列) | 困难 | +| [0211. 添加与搜索单词 - 数据结构设计](https://leetcode.cn/problems/design-add-and-search-words-data-structure/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/design-add-and-search-words-data-structure/) | 深度优先搜索、设计、字典树、字符串 | 中等 | +| [0421. 数组中两个数的最大异或值](https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array/) | 位运算、字典树、数组、哈希表 | 中等 | +| [0212. 单词搜索 II](https://leetcode.cn/problems/word-search-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-search-ii/) | 字典树、数组、字符串、回溯、矩阵 | 困难 | +| [0425. 单词方块](https://leetcode.cn/problems/word-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/word-squares/) | 字典树、数组、字符串、回溯 | 困难 | +| [0336. 回文对](https://leetcode.cn/problems/palindrome-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/palindrome-pairs/) | 字典树、数组、哈希表、字符串 | 困难 | +| [1023. 驼峰式匹配](https://leetcode.cn/problems/camelcase-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/camelcase-matching/) | 字典树、数组、双指针、字符串、字符串匹配 | 中等 | +| [0676. 实现一个魔法字典](https://leetcode.cn/problems/implement-magic-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/implement-magic-dictionary/) | 深度优先搜索、设计、字典树、哈希表、字符串 | 中等 | +| [0440. 字典序的第K小数字](https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/k-th-smallest-in-lexicographical-order/) | 字典树 | 困难 | + + +## 第 5 章 树 + +### 二叉树的遍历题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | +| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | +| [0107. 二叉树的层序遍历 II](https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal-ii/) | 树、广度优先搜索、二叉树 | 中等 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii/) | 树、深度优先搜索、回溯、二叉树 | 中等 | +| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree/) | 树、深度优先搜索、二叉树 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0116. 填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node/) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | +| [0117. 填充每个节点的下一个右侧节点指针 II](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii/) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | +| [0297. 二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree/) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | +| [0114. 二叉树展开为链表](https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/flatten-binary-tree-to-linked-list/) | 栈、树、深度优先搜索、链表、二叉树 | 中等 | + + +### 二叉树的还原题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0106. 从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0889. 根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | + + +### 二叉搜索树题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0173. 二叉搜索树迭代器](https://leetcode.cn/problems/binary-search-tree-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-search-tree-iterator/) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | +| [0700. 二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-binary-search-tree/) | 树、二叉搜索树、二叉树 | 简单 | +| [0701. 二叉搜索树中的插入操作](https://leetcode.cn/problems/insert-into-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-binary-search-tree/) | 树、二叉搜索树、二叉树 | 中等 | +| [0450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst/) | 树、二叉搜索树、二叉树 | 中等 | +| [0703. 数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream/) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | +| [LCR 174. 寻找二叉搜索树中的目标节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0230. 二叉搜索树中第 K 小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-smallest-element-in-a-bst/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0426. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list/) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | +| [0108. 将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree/) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | +| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | + + +### 线段树题目 + +#### 单点更新题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0303. 区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable/) | 设计、数组、前缀和 | 简单 | +| [0307. 区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable/) | 设计、树状数组、线段树、数组 | 中等 | +| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes/) | 数组、二分查找、动态规划、排序 | 困难 | + + +#### 区间更新题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0370. 区间加法](https://leetcode.cn/problems/range-addition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-addition/) | 数组、前缀和 | 中等 | +| [1109. 航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings/) | 数组、前缀和 | 中等 | +| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time/) | 数组 | 简单 | +| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) | 树状数组、线段树、数组、动态规划 | 中等 | +| [1310. 子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray/) | 位运算、数组、前缀和 | 中等 | +| [1851. 包含每个查询的最小区间](https://leetcode.cn/problems/minimum-interval-to-include-each-query/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-interval-to-include-each-query/) | 数组、二分查找、排序、扫描线、堆(优先队列) | 困难 | + + +#### 区间合并题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0729. 我的日程安排表 I](https://leetcode.cn/problems/my-calendar-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-i/) | 设计、线段树、数组、二分查找、有序集合 | 中等 | +| [0731. 我的日程安排表 II](https://leetcode.cn/problems/my-calendar-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-ii/) | 设计、线段树、数组、二分查找、有序集合、前缀和 | 中等 | +| [0732. 我的日程安排表 III](https://leetcode.cn/problems/my-calendar-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-iii/) | 设计、线段树、二分查找、有序集合、前缀和 | 困难 | + + +#### 扫描线问题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0218. 天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem/) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | +| [0391. 完美矩形](https://leetcode.cn/problems/perfect-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/perfect-rectangle/) | 数组、扫描线 | 困难 | +| [0850. 矩形面积 II](https://leetcode.cn/problems/rectangle-area-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-area-ii/) | 线段树、数组、有序集合、扫描线 | 困难 | + + +### 树状数组题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0303. 区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable/) | 设计、数组、前缀和 | 简单 | +| [0307. 区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable/) | 设计、树状数组、线段树、数组 | 中等 | +| [0315. 计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | +| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time/) | 数组 | 简单 | +| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes/) | 数组、二分查找、动态规划、排序 | 困难 | +| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) | 树状数组、线段树、数组、动态规划 | 中等 | +| [1310. 子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray/) | 位运算、数组、前缀和 | 中等 | +| [1893. 检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered/) | 数组、哈希表、前缀和 | 简单 | + + +### 并查集题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0990. 等式方程的可满足性](https://leetcode.cn/problems/satisfiability-of-equality-equations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/satisfiability-of-equality-equations/) | 并查集、图、数组、字符串 | 中等 | +| [0547. 省份数量](https://leetcode.cn/problems/number-of-provinces/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/number-of-provinces/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0684. 冗余连接](https://leetcode.cn/problems/redundant-connection/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [1319. 连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-operations-to-make-network-connected/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0765. 情侣牵手](https://leetcode.cn/problems/couples-holding-hands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/couples-holding-hands/) | 贪心、深度优先搜索、广度优先搜索、并查集、图 | 困难 | +| [0399. 除法求值](https://leetcode.cn/problems/evaluate-division/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/evaluate-division/) | 深度优先搜索、广度优先搜索、并查集、图、数组、字符串、最短路 | 中等 | +| [0959. 由斜杠划分区域](https://leetcode.cn/problems/regions-cut-by-slashes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/regions-cut-by-slashes/) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、矩阵 | 中等 | +| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | +| [0778. 水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | +| [1202. 交换字符串中的元素](https://leetcode.cn/problems/smallest-string-with-swaps/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/smallest-string-with-swaps/) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、字符串、排序 | 中等 | +| [0947. 移除最多的同行或同列石头](https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column/) | 深度优先搜索、并查集、图、哈希表 | 中等 | +| [0803. 打砖块](https://leetcode.cn/problems/bricks-falling-when-hit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bricks-falling-when-hit/) | 并查集、数组、矩阵 | 困难 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | + + +## 第 6 章 图论 + +### 图的深度优先搜索题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0797. 所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target/) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0133. 克隆图](https://leetcode.cn/problems/clone-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph/) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | +| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum/) | 数组、动态规划、回溯 | 中等 | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0589. N 叉树的前序遍历](https://leetcode.cn/problems/n-ary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-preorder-traversal/) | 栈、树、深度优先搜索 | 简单 | +| [0590. N 叉树的后序遍历](https://leetcode.cn/problems/n-ary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-postorder-traversal/) | 栈、树、深度优先搜索 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0841. 钥匙和房间](https://leetcode.cn/problems/keys-and-rooms/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/keys-and-rooms/) | 深度优先搜索、广度优先搜索、图 | 中等 | +| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers/) | 树、深度优先搜索、二叉树 | 中等 | +| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0684. 冗余连接](https://leetcode.cn/problems/redundant-connection/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0802. 找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0785. 判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0886. 可能的二分法](https://leetcode.cn/problems/possible-bipartition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/possible-bipartition/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0130. 被围绕的区域](https://leetcode.cn/problems/surrounded-regions/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/surrounded-regions/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0417. 太平洋大西洋水流问题](https://leetcode.cn/problems/pacific-atlantic-water-flow/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/pacific-atlantic-water-flow/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | +| [1020. 飞地的数量](https://leetcode.cn/problems/number-of-enclaves/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/number-of-enclaves/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [1254. 统计封闭岛屿的数目](https://leetcode.cn/problems/number-of-closed-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/number-of-closed-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [1034. 边界着色](https://leetcode.cn/problems/coloring-a-border/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/coloring-a-border/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | +| [LCR 130. 衣橱整理](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | +| [0529. 扫雷游戏](https://leetcode.cn/problems/minesweeper/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minesweeper/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | + + +### 图的广度优先搜索题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0797. 所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target/) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | +| [0286. 墙与门](https://leetcode.cn/problems/walls-and-gates/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/walls-and-gates/) | 广度优先搜索、数组、矩阵 | 中等 | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0752. 打开转盘锁](https://leetcode.cn/problems/open-the-lock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/open-the-lock/) | 广度优先搜索、数组、哈希表、字符串 | 中等 | +| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares/) | 广度优先搜索、数学、动态规划 | 中等 | +| [0133. 克隆图](https://leetcode.cn/problems/clone-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph/) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | +| [0733. 图像渲染](https://leetcode.cn/problems/flood-fill/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/flood-fill/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | +| [0542. 01 矩阵](https://leetcode.cn/problems/01-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/01-matrix/) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | +| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [LCR 130. 衣橱整理](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 151. 彩灯装饰记录 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | 树、广度优先搜索、二叉树 | 中等 | + + +### 图的拓扑排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0207. 课程表](https://leetcode.cn/problems/course-schedule/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0210. 课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [1136. 并行课程](https://leetcode.cn/problems/parallel-courses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/parallel-courses/) | 图、拓扑排序 | 中等 | +| [2050. 并行课程 III](https://leetcode.cn/problems/parallel-courses-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/parallel-courses-iii/) | 图、拓扑排序、数组、动态规划 | 困难 | +| [0802. 找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0851. 喧闹和富有](https://leetcode.cn/problems/loud-and-rich/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/loud-and-rich/) | 深度优先搜索、图、拓扑排序、数组 | 中等 | + + +### 图的最小生成树题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1584. 连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/min-cost-to-connect-all-points/) | 并查集、图、数组、最小生成树 | 中等 | +| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | +| [0778. 水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | + + +### 单源最短路径题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0407. 接雨水 II](https://leetcode.cn/problems/trapping-rain-water-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/trapping-rain-water-ii/) | 广度优先搜索、数组、矩阵、堆(优先队列) | 困难 | +| [0743. 网络延迟时间](https://leetcode.cn/problems/network-delay-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/network-delay-time/) | 深度优先搜索、广度优先搜索、图、最短路、堆(优先队列) | 中等 | +| [0787. K 站中转内最便宜的航班](https://leetcode.cn/problems/cheapest-flights-within-k-stops/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/cheapest-flights-within-k-stops/) | 深度优先搜索、广度优先搜索、图、动态规划、最短路、堆(优先队列) | 中等 | +| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | +| [1786. 从第一个节点出发到最后一个节点的受限路径数](https://leetcode.cn/problems/number-of-restricted-paths-from-first-to-last-node/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/number-of-restricted-paths-from-first-to-last-node/) | 图、拓扑排序、动态规划、最短路、堆(优先队列) | 中等 | + + +### 多源最短路径题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0815. 公交路线](https://leetcode.cn/problems/bus-routes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bus-routes/) | 广度优先搜索、数组、哈希表 | 困难 | +| [1162. 地图分析](https://leetcode.cn/problems/as-far-from-land-as-possible/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/as-far-from-land-as-possible/) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | + + +### 次短路径题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [2045. 到达目的地的第二短时间](https://leetcode.cn/problems/second-minimum-time-to-reach-destination/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/second-minimum-time-to-reach-destination/) | 广度优先搜索、图、最短路 | 困难 | + + +### 差分约束系统 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0995. K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips/) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | +| [1109. 航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings/) | 数组、前缀和 | 中等 | + + +### 二分图基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0785. 判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | + + +### 二分图最大匹配题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [LCP 04. 覆盖](https://leetcode.cn/problems/broken-board-dominoes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCP/broken-board-dominoes/) | 位运算、图、数组、动态规划、状态压缩 | 困难 | +| [1947. 最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1595. 连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | + + +## 第 7 章 基础算法 + +### 枚举算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | +| [0204. 计数质数](https://leetcode.cn/problems/count-primes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-primes/) | 数组、数学、枚举、数论 | 中等 | +| [1925. 统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-square-sum-triples/) | 数学、枚举 | 简单 | +| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time/) | 数组 | 简单 | +| [1620. 网络信号最好的坐标](https://leetcode.cn/problems/coordinate-with-maximum-network-quality/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/coordinate-with-maximum-network-quality/) | 数组、枚举 | 中等 | +| [LCR 180. 文件组合](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | 数学、双指针、枚举 | 简单 | +| [0800. 相似 RGB 颜色](https://leetcode.cn/problems/similar-rgb-color/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/similar-rgb-color/) | 数学、字符串、枚举 | 简单 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | +| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k/) | 数组、哈希表、前缀和 | 中等 | + + +### 递归算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) | 双指针、字符串 | 简单 | +| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs/) | 递归、链表 | 中等 | +| [0118. 杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle/) | 数组、动态规划 | 简单 | +| [0119. 杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii/) | 数组、动态规划 | 简单 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) | 递归、数学 | 中等 | +| [0779. 第K个语法符号](https://leetcode.cn/problems/k-th-symbol-in-grammar/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/k-th-symbol-in-grammar/) | 位运算、递归、数学 | 中等 | +| [0095. 不同的二叉搜索树 II](https://leetcode.cn/problems/unique-binary-search-trees-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees-ii/) | 树、二叉搜索树、动态规划、回溯、二叉树 | 中等 | +| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | 递归、数学 | 简单 | + + +### 分治算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | +| [0241. 为运算表达式设计优先级](https://leetcode.cn/problems/different-ways-to-add-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/different-ways-to-add-parentheses/) | 递归、记忆化搜索、数学、字符串、动态规划 | 中等 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | +| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) | 递归、数学 | 中等 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | +| [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 | + + +### 回溯算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations/) | 数组、回溯 | 中等 | +| [0047. 全排列 II](https://leetcode.cn/problems/permutations-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii/) | 数组、回溯、排序 | 中等 | +| [0037. 解数独](https://leetcode.cn/problems/sudoku-solver/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver/) | 数组、哈希表、回溯、矩阵 | 困难 | +| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses/) | 字符串、动态规划、回溯 | 中等 | +| [0017. 电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/letter-combinations-of-a-phone-number/) | 哈希表、字符串、回溯 | 中等 | +| [0784. 字母大小写全排列](https://leetcode.cn/problems/letter-case-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/letter-case-permutation/) | 位运算、字符串、回溯 | 中等 | +| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum/) | 数组、回溯 | 中等 | +| [0040. 组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii/) | 数组、回溯 | 中等 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | +| [0090. 子集 II](https://leetcode.cn/problems/subsets-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii/) | 位运算、数组、回溯 | 中等 | +| [0473. 火柴拼正方形](https://leetcode.cn/problems/matchsticks-to-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/matchsticks-to-square/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1593. 拆分字符串使唯一子字符串的数目最大](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings/) | 哈希表、字符串、回溯 | 中等 | +| [1079. 活字印刷](https://leetcode.cn/problems/letter-tile-possibilities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/letter-tile-possibilities/) | 哈希表、字符串、回溯、计数 | 中等 | +| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses/) | 字符串、回溯 | 中等 | +| [0079. 单词搜索](https://leetcode.cn/problems/word-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search/) | 深度优先搜索、数组、字符串、回溯、矩阵 | 中等 | +| [0679. 24 点游戏](https://leetcode.cn/problems/24-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/24-game/) | 数组、数学、回溯 | 困难 | + + +### 贪心算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0455. 分发饼干](https://leetcode.cn/problems/assign-cookies/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/assign-cookies/) | 贪心、数组、双指针、排序 | 简单 | +| [0860. 柠檬水找零](https://leetcode.cn/problems/lemonade-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/lemonade-change/) | 贪心、数组 | 简单 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | +| [0435. 无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-overlapping-intervals/) | 贪心、数组、动态规划、排序 | 中等 | +| [0452. 用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons/) | 贪心、数组、排序 | 中等 | +| [0055. 跳跃游戏](https://leetcode.cn/problems/jump-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game/) | 贪心、数组、动态规划 | 中等 | +| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii/) | 贪心、数组、动态规划 | 中等 | +| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) | 贪心、数组、动态规划 | 中等 | +| [0561. 数组拆分](https://leetcode.cn/problems/array-partition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition/) | 贪心、数组、计数排序、排序 | 简单 | +| [1710. 卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-units-on-a-truck/) | 贪心、数组、排序 | 简单 | +| [1217. 玩筹码](https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position/) | 贪心、数组、数学 | 简单 | +| [1247. 交换字符使得字符串相同](https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal/) | 贪心、数学、字符串 | 中等 | +| [1400. 构造 K 个回文字符串](https://leetcode.cn/problems/construct-k-palindrome-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/construct-k-palindrome-strings/) | 贪心、哈希表、字符串、计数 | 中等 | +| [0921. 使括号有效的最少添加](https://leetcode.cn/problems/minimum-add-to-make-parentheses-valid/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid/) | 栈、贪心、字符串 | 中等 | +| [1029. 两地调度](https://leetcode.cn/problems/two-city-scheduling/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-city-scheduling/) | 贪心、数组、排序 | 中等 | +| [1605. 给定行和列的和求可行矩阵](https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums/) | 贪心、数组、矩阵 | 中等 | +| [0135. 分发糖果](https://leetcode.cn/problems/candy/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy/) | 贪心、数组 | 困难 | +| [0134. 加油站](https://leetcode.cn/problems/gas-station/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station/) | 贪心、数组 | 中等 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | +| [0376. 摆动序列](https://leetcode.cn/problems/wiggle-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-subsequence/) | 贪心、数组、动态规划 | 中等 | +| [0738. 单调递增的数字](https://leetcode.cn/problems/monotone-increasing-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/monotone-increasing-digits/) | 贪心、数学 | 中等 | +| [0402. 移掉 K 位数字](https://leetcode.cn/problems/remove-k-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/remove-k-digits/) | 栈、贪心、字符串、单调栈 | 中等 | +| [0861. 翻转矩阵后的得分](https://leetcode.cn/problems/score-after-flipping-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/score-after-flipping-matrix/) | 贪心、位运算、数组、矩阵 | 中等 | +| [0670. 最大交换](https://leetcode.cn/problems/maximum-swap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-swap/) | 贪心、数学 | 中等 | + + +### 位运算题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0504. 七进制数](https://leetcode.cn/problems/base-7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7/) | 数学 | 简单 | +| [0405. 数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal/) | 位运算、数学 | 简单 | +| [0190. 颠倒二进制位](https://leetcode.cn/problems/reverse-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-bits/) | 位运算、分治 | 简单 | +| [1009. 十进制整数的反码](https://leetcode.cn/problems/complement-of-base-10-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/complement-of-base-10-integer/) | 位运算 | 简单 | +| [0191. 位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits/) | 位运算、分治 | 简单 | +| [0371. 两整数之和](https://leetcode.cn/problems/sum-of-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sum-of-two-integers/) | 位运算、数学 | 中等 | +| [0089. 格雷编码](https://leetcode.cn/problems/gray-code/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/gray-code/) | 位运算、数学、回溯 | 中等 | +| [0201. 数字范围按位与](https://leetcode.cn/problems/bitwise-and-of-numbers-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/bitwise-and-of-numbers-range/) | 位运算 | 中等 | +| [0338. 比特位计数](https://leetcode.cn/problems/counting-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits/) | 位运算、动态规划 | 简单 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | +| [0137. 只出现一次的数字 II](https://leetcode.cn/problems/single-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number-ii/) | 位运算、数组 | 中等 | +| [0260. 只出现一次的数字 III](https://leetcode.cn/problems/single-number-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/single-number-iii/) | 位运算、数组 | 中等 | +| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | +| [1349. 参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | +| [0645. 错误的集合](https://leetcode.cn/problems/set-mismatch/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/set-mismatch/) | 位运算、数组、哈希表、排序 | 简单 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | +| [0090. 子集 II](https://leetcode.cn/problems/subsets-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii/) | 位运算、数组、回溯 | 中等 | + + +## 第 8 章 动态规划 + +### 动态规划基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | +| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) | 数学、动态规划、组合数学 | 中等 | + + +### 记忆化搜索题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number/) | 记忆化搜索、数学、动态规划 | 简单 | +| [0375. 猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii/) | 数学、动态规划、博弈 | 中等 | +| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum/) | 数组、动态规划、回溯 | 中等 | +| [0576. 出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths/) | 动态规划 | 中等 | +| [0087. 扰乱字符串](https://leetcode.cn/problems/scramble-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/scramble-string/) | 字符串、动态规划 | 困难 | +| [0403. 青蛙过河](https://leetcode.cn/problems/frog-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump/) | 数组、动态规划 | 困难 | +| [0552. 学生出勤记录 II](https://leetcode.cn/problems/student-attendance-record-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/student-attendance-record-ii/) | 动态规划 | 困难 | +| [0913. 猫和老鼠](https://leetcode.cn/problems/cat-and-mouse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/cat-and-mouse/) | 图、拓扑排序、记忆化搜索、数学、动态规划、博弈 | 困难 | +| [0329. 矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix/) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | + + +### 线性 DP 题目 + +#### 单串线性 DP 问题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence/) | 数组、二分查找、动态规划 | 中等 | +| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) | 树状数组、线段树、数组、动态规划 | 中等 | +| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes/) | 数组、二分查找、动态规划、排序 | 困难 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | +| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray/) | 数组、动态规划 | 中等 | +| [0918. 环形子数组的最大和](https://leetcode.cn/problems/maximum-sum-circular-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/maximum-sum-circular-subarray/) | 队列、数组、分治、动态规划、单调队列 | 中等 | +| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber/) | 数组、动态规划 | 中等 | +| [0213. 打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii/) | 数组、动态规划 | 中等 | +| [0740. 删除并获得点数](https://leetcode.cn/problems/delete-and-earn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/delete-and-earn/) | 数组、哈希表、动态规划 | 中等 | +| [1388. 3n 块披萨](https://leetcode.cn/problems/pizza-with-3n-slices/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/pizza-with-3n-slices/) | 贪心、数组、动态规划、堆(优先队列) | 困难 | +| [0873. 最长的斐波那契子序列的长度](https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence/) | 数组、哈希表、动态规划 | 中等 | +| [1027. 最长等差数列](https://leetcode.cn/problems/longest-arithmetic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/longest-arithmetic-subsequence/) | 数组、哈希表、二分查找、动态规划 | 中等 | +| [1055. 形成字符串的最短路径](https://leetcode.cn/problems/shortest-way-to-form-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/shortest-way-to-form-string/) | 贪心、双指针、字符串、二分查找 | 中等 | +| [0368. 最大整除子集](https://leetcode.cn/problems/largest-divisible-subset/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/largest-divisible-subset/) | 数组、数学、动态规划、排序 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | +| [0413. 等差数列划分](https://leetcode.cn/problems/arithmetic-slices/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/arithmetic-slices/) | 数组、动态规划、滑动窗口 | 中等 | +| [0091. 解码方法](https://leetcode.cn/problems/decode-ways/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways/) | 字符串、动态规划 | 中等 | +| [0639. 解码方法 II](https://leetcode.cn/problems/decode-ways-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/decode-ways-ii/) | 字符串、动态规划 | 困难 | +| [0132. 分割回文串 II](https://leetcode.cn/problems/palindrome-partitioning-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/palindrome-partitioning-ii/) | 字符串、动态规划 | 困难 | +| [1220. 统计元音字母序列的数目](https://leetcode.cn/problems/count-vowels-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/count-vowels-permutation/) | 动态规划 | 困难 | +| [0338. 比特位计数](https://leetcode.cn/problems/counting-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits/) | 位运算、动态规划 | 简单 | +| [0801. 使序列递增的最小交换次数](https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing/) | 数组、动态规划 | 困难 | +| [0871. 最低加油次数](https://leetcode.cn/problems/minimum-number-of-refueling-stops/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-number-of-refueling-stops/) | 贪心、数组、动态规划、堆(优先队列) | 困难 | +| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii/) | 贪心、数组、动态规划 | 中等 | +| [0813. 最大平均值和的分组](https://leetcode.cn/problems/largest-sum-of-averages/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/largest-sum-of-averages/) | 数组、动态规划、前缀和 | 中等 | +| [0887. 鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop/) | 数学、二分查找、动态规划 | 困难 | +| [0256. 粉刷房子](https://leetcode.cn/problems/paint-house/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/paint-house/) | 数组、动态规划 | 中等 | +| [0265. 粉刷房子 II](https://leetcode.cn/problems/paint-house-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/paint-house-ii/) | 数组、动态规划 | 困难 | +| [1473. 粉刷房子 III](https://leetcode.cn/problems/paint-house-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/paint-house-iii/) | 数组、动态规划 | 困难 | +| [0975. 奇偶跳](https://leetcode.cn/problems/odd-even-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/odd-even-jump/) | 栈、数组、动态规划、有序集合、单调栈 | 困难 | +| [0403. 青蛙过河](https://leetcode.cn/problems/frog-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump/) | 数组、动态规划 | 困难 | +| [1478. 安排邮筒](https://leetcode.cn/problems/allocate-mailboxes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/allocate-mailboxes/) | 数组、数学、动态规划、排序 | 困难 | +| [1230. 抛掷硬币](https://leetcode.cn/problems/toss-strange-coins/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/toss-strange-coins/) | 数组、数学、动态规划、概率与统计 | 中等 | +| [0410. 分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum/) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | +| [1751. 最多可以参加的会议数目 II](https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-events-that-can-be-attended-ii/) | 数组、二分查找、动态规划、排序 | 困难 | +| [1787. 使所有区间的异或结果为零](https://leetcode.cn/problems/make-the-xor-of-all-segments-equal-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/make-the-xor-of-all-segments-equal-to-zero/) | 位运算、数组、动态规划 | 困难 | +| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock/) | 数组、动态规划 | 简单 | +| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) | 贪心、数组、动态规划 | 中等 | +| [0123. 买卖股票的最佳时机 III](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii/) | 数组、动态规划 | 困难 | +| [0188. 买卖股票的最佳时机 IV](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv/) | 数组、动态规划 | 困难 | +| [0309. 买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown/) | 数组、动态规划 | 中等 | +| [0714. 买卖股票的最佳时机含手续费](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee/) | 贪心、数组、动态规划 | 中等 | + + +#### 双串线性 DP 问题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence/) | 字符串、动态规划 | 中等 | +| [0712. 两个字符串的最小ASCII删除和](https://leetcode.cn/problems/minimum-ascii-delete-sum-for-two-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-ascii-delete-sum-for-two-strings/) | 字符串、动态规划 | 中等 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0583. 两个字符串的删除操作](https://leetcode.cn/problems/delete-operation-for-two-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/delete-operation-for-two-strings/) | 字符串、动态规划 | 中等 | +| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance/) | 字符串、动态规划 | 中等 | +| [0044. 通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching/) | 贪心、递归、字符串、动态规划 | 困难 | +| [0010. 正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching/) | 递归、字符串、动态规划 | 困难 | +| [0097. 交错字符串](https://leetcode.cn/problems/interleaving-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/interleaving-string/) | 字符串、动态规划 | 中等 | +| [0115. 不同的子序列](https://leetcode.cn/problems/distinct-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/distinct-subsequences/) | 字符串、动态规划 | 困难 | +| [0087. 扰乱字符串](https://leetcode.cn/problems/scramble-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/scramble-string/) | 字符串、动态规划 | 困难 | + + +#### 矩阵线性 DP 问题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0118. 杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle/) | 数组、动态规划 | 简单 | +| [0119. 杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii/) | 数组、动态规划 | 简单 | +| [0120. 三角形最小路径和](https://leetcode.cn/problems/triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle/) | 数组、动态规划 | 中等 | +| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum/) | 数组、动态规划、矩阵 | 中等 | +| [0174. 地下城游戏](https://leetcode.cn/problems/dungeon-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/dungeon-game/) | 数组、动态规划、矩阵 | 困难 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | +| [0931. 下降路径最小和](https://leetcode.cn/problems/minimum-falling-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-falling-path-sum/) | 数组、动态规划、矩阵 | 中等 | +| [0576. 出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths/) | 动态规划 | 中等 | +| [0085. 最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximal-rectangle/) | 栈、数组、动态规划、矩阵、单调栈 | 困难 | +| [0363. 矩形区域不超过 K 的最大数值和](https://leetcode.cn/problems/max-sum-of-rectangle-no-larger-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/max-sum-of-rectangle-no-larger-than-k/) | 数组、二分查找、矩阵、有序集合、前缀和 | 困难 | +| [面试题 17.24. 最大子矩阵](https://leetcode.cn/problems/max-submatrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/max-submatrix-lcci/) | 数组、动态规划、矩阵、前缀和 | 困难 | +| [1444. 切披萨的方案数](https://leetcode.cn/problems/number-of-ways-of-cutting-a-pizza/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-ways-of-cutting-a-pizza/) | 记忆化搜索、数组、动态规划、矩阵、前缀和 | 困难 | + + +#### 无串线性 DP 问题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number/) | 记忆化搜索、数学、动态规划 | 简单 | +| [0650. 两个键的键盘](https://leetcode.cn/problems/2-keys-keyboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/2-keys-keyboard/) | 数学、动态规划 | 中等 | +| [0264. 丑数 II](https://leetcode.cn/problems/ugly-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number-ii/) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | +| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares/) | 广度优先搜索、数学、动态规划 | 中等 | +| [0343. 整数拆分](https://leetcode.cn/problems/integer-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break/) | 数学、动态规划 | 中等 | + + +### 背包问题题目 + +#### 0-1 背包问题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0416. 分割等和子集](https://leetcode.cn/problems/partition-equal-subset-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/partition-equal-subset-sum/) | 数组、动态规划 | 中等 | +| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum/) | 数组、动态规划、回溯 | 中等 | +| [1049. 最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/last-stone-weight-ii/) | 数组、动态规划 | 中等 | + + +#### 完全背包问题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares/) | 广度优先搜索、数学、动态规划 | 中等 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | +| [0518. 零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii/) | 数组、动态规划 | 中等 | +| [0139. 单词拆分](https://leetcode.cn/problems/word-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break/) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | +| [0377. 组合总和 Ⅳ](https://leetcode.cn/problems/combination-sum-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/combination-sum-iv/) | 数组、动态规划 | 中等 | +| [0638. 大礼包](https://leetcode.cn/problems/shopping-offers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/shopping-offers/) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | +| [1449. 数位成本和为目标值的最大数字](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target/) | 数组、动态规划 | 困难 | + + +#### 多重背包问题 + +#### 分组背包问题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1155. 掷骰子等于目标和的方法数](https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum/) | 动态规划 | 中等 | +| [2585. 获得分数的方法数](https://leetcode.cn/problems/number-of-ways-to-earn-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/number-of-ways-to-earn-points/) | 数组、动态规划 | 困难 | + + +#### 多维背包问题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0474. 一和零](https://leetcode.cn/problems/ones-and-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/ones-and-zeroes/) | 数组、字符串、动态规划 | 中等 | +| [0879. 盈利计划](https://leetcode.cn/problems/profitable-schemes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/profitable-schemes/) | 数组、动态规划 | 困难 | +| [1995. 统计特殊四元组](https://leetcode.cn/problems/count-special-quadruplets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-special-quadruplets/) | 数组、哈希表、枚举 | 简单 | + + +### 区间 DP 题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0486. 预测赢家](https://leetcode.cn/problems/predict-the-winner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/predict-the-winner/) | 递归、数组、数学、动态规划、博弈 | 中等 | +| [0312. 戳气球](https://leetcode.cn/problems/burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/burst-balloons/) | 数组、动态规划 | 困难 | +| [0877. 石子游戏](https://leetcode.cn/problems/stone-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/stone-game/) | 数组、数学、动态规划、博弈 | 中等 | +| [1000. 合并石头的最低成本](https://leetcode.cn/problems/minimum-cost-to-merge-stones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-cost-to-merge-stones/) | 数组、动态规划、前缀和 | 困难 | +| [1547. 切棍子的最小成本](https://leetcode.cn/problems/minimum-cost-to-cut-a-stick/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick/) | 数组、动态规划、排序 | 困难 | +| [0664. 奇怪的打印机](https://leetcode.cn/problems/strange-printer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/strange-printer/) | 字符串、动态规划 | 困难 | +| [1039. 多边形三角剖分的最低得分](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-score-triangulation-of-polygon/) | 数组、动态规划 | 中等 | +| [0546. 移除盒子](https://leetcode.cn/problems/remove-boxes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/remove-boxes/) | 记忆化搜索、数组、动态规划 | 困难 | +| [0375. 猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii/) | 数学、动态规划、博弈 | 中等 | +| [0678. 有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string/) | 栈、贪心、字符串、动态规划 | 中等 | +| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) | 双指针、字符串、动态规划 | 中等 | +| [0516. 最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence/) | 字符串、动态规划 | 中等 | +| [0730. 统计不同回文子序列](https://leetcode.cn/problems/count-different-palindromic-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/count-different-palindromic-subsequences/) | 字符串、动态规划 | 困难 | +| [2104. 子数组范围和](https://leetcode.cn/problems/sum-of-subarray-ranges/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/sum-of-subarray-ranges/) | 栈、数组、单调栈 | 中等 | + + +### 树形 DP 题目 + +#### 固定根的树形 DP 题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [1245. 树的直径](https://leetcode.cn/problems/tree-diameter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/tree-diameter/) | 树、深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [2246. 相邻字符不同的最长路径](https://leetcode.cn/problems/longest-path-with-different-adjacent-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/longest-path-with-different-adjacent-characters/) | 树、深度优先搜索、图、拓扑排序、数组、字符串 | 困难 | +| [0687. 最长同值路径](https://leetcode.cn/problems/longest-univalue-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-univalue-path/) | 树、深度优先搜索、二叉树 | 中等 | +| [0337. 打家劫舍 III](https://leetcode.cn/problems/house-robber-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/house-robber-iii/) | 树、深度优先搜索、动态规划、二叉树 | 中等 | +| [0333. 最大二叉搜索子树](https://leetcode.cn/problems/largest-bst-subtree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/largest-bst-subtree/) | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 中等 | +| [1617. 统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities/) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | +| [2538. 最大价值和与最小价值和的差值](https://leetcode.cn/problems/difference-between-maximum-and-minimum-price-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum/) | 树、深度优先搜索、数组、动态规划 | 困难 | +| [1569. 将子数组重新排序得到同一个二叉搜索树的方案数](https://leetcode.cn/problems/number-of-ways-to-reorder-array-to-get-same-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/number-of-ways-to-reorder-array-to-get-same-bst/) | 树、并查集、二叉搜索树、记忆化搜索、数组、数学、分治、动态规划、二叉树、组合数学 | 困难 | +| [1372. 二叉树中的最长交错路径](https://leetcode.cn/problems/longest-zigzag-path-in-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/longest-zigzag-path-in-a-binary-tree/) | 树、深度优先搜索、动态规划、二叉树 | 中等 | +| [1373. 二叉搜索子树的最大键值和](https://leetcode.cn/problems/maximum-sum-bst-in-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-sum-bst-in-binary-tree/) | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 困难 | +| [0968. 监控二叉树](https://leetcode.cn/problems/binary-tree-cameras/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/binary-tree-cameras/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [1273. 删除树节点](https://leetcode.cn/problems/delete-tree-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/delete-tree-nodes/) | 树、深度优先搜索、广度优先搜索、数组 | 中等 | +| [1519. 子树中标签相同的节点数](https://leetcode.cn/problems/number-of-nodes-in-the-sub-tree-with-the-same-label/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/number-of-nodes-in-the-sub-tree-with-the-same-label/) | 树、深度优先搜索、广度优先搜索、哈希表、计数 | 中等 | + + +#### 不定根的树形 DP 题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0310. 最小高度树](https://leetcode.cn/problems/minimum-height-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/minimum-height-trees/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0834. 树中距离之和](https://leetcode.cn/problems/sum-of-distances-in-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/sum-of-distances-in-tree/) | 树、深度优先搜索、图、动态规划 | 困难 | +| [2581. 统计可能的树根数目](https://leetcode.cn/problems/count-number-of-possible-root-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/count-number-of-possible-root-nodes/) | 树、深度优先搜索、数组、哈希表、动态规划 | 困难 | + + +### 状态压缩 DP 题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1879. 两个数组最小的异或值之和](https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays/) | 位运算、数组、动态规划、状态压缩 | 困难 | +| [2172. 数组的最大与和](https://leetcode.cn/problems/maximum-and-sum-of-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/maximum-and-sum-of-array/) | 位运算、数组、动态规划、状态压缩 | 困难 | +| [1947. 最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1595. 连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | +| [1494. 并行课程 II](https://leetcode.cn/problems/parallel-courses-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/parallel-courses-ii/) | 位运算、图、动态规划、状态压缩 | 困难 | +| [1655. 分配重复整数](https://leetcode.cn/problems/distribute-repeating-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/distribute-repeating-integers/) | 位运算、数组、动态规划、回溯、状态压缩 | 困难 | +| [1986. 完成任务的最少工作时间段](https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1434. 每个人戴不同帽子的方案数](https://leetcode.cn/problems/number-of-ways-to-wear-different-hats-to-each-other/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-ways-to-wear-different-hats-to-each-other/) | 位运算、数组、动态规划、状态压缩 | 困难 | +| [1799. N 次操作后的最大分数和](https://leetcode.cn/problems/maximize-score-after-n-operations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximize-score-after-n-operations/) | 位运算、数组、数学、动态规划、回溯、状态压缩、数论 | 困难 | +| [1681. 最小不兼容性](https://leetcode.cn/problems/minimum-incompatibility/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-incompatibility/) | 位运算、数组、动态规划、状态压缩 | 困难 | +| [0526. 优美的排列](https://leetcode.cn/problems/beautiful-arrangement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/beautiful-arrangement/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [0351. 安卓系统手势解锁](https://leetcode.cn/problems/android-unlock-patterns/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/android-unlock-patterns/) | 位运算、动态规划、回溯、状态压缩 | 中等 | +| [0464. 我能赢吗](https://leetcode.cn/problems/can-i-win/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/can-i-win/) | 位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 | 中等 | +| [0847. 访问所有节点的最短路径](https://leetcode.cn/problems/shortest-path-visiting-all-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-path-visiting-all-nodes/) | 位运算、广度优先搜索、图、动态规划、状态压缩 | 困难 | +| [0638. 大礼包](https://leetcode.cn/problems/shopping-offers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/shopping-offers/) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | +| [1994. 好子集的数目](https://leetcode.cn/problems/the-number-of-good-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/the-number-of-good-subsets/) | 位运算、数组、数学、动态规划、状态压缩 | 困难 | +| [1349. 参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | +| [0698. 划分为k个相等的子集](https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/partition-to-k-equal-sum-subsets/) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | +| [0943. 最短超级串](https://leetcode.cn/problems/find-the-shortest-superstring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/find-the-shortest-superstring/) | 位运算、数组、字符串、动态规划、状态压缩 | 困难 | +| [0691. 贴纸拼词](https://leetcode.cn/problems/stickers-to-spell-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/stickers-to-spell-word/) | 位运算、记忆化搜索、数组、哈希表、字符串、动态规划、回溯、状态压缩 | 困难 | +| [0982. 按位与为零的三元组](https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero/) | 位运算、数组、哈希表 | 困难 | + + +### 计数 DP 题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) | 数学、动态规划、组合数学 | 中等 | +| [0063. 不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii/) | 数组、动态规划、矩阵 | 中等 | +| [0343. 整数拆分](https://leetcode.cn/problems/integer-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break/) | 数学、动态规划 | 中等 | +| [0096. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees/) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | +| [1259. 不相交的握手](https://leetcode.cn/problems/handshakes-that-dont-cross/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/handshakes-that-dont-cross/) | 数学、动态规划 | 困难 | +| [0790. 多米诺和托米诺平铺](https://leetcode.cn/problems/domino-and-tromino-tiling/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/domino-and-tromino-tiling/) | 动态规划 | 中等 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | +| [0746. 使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/min-cost-climbing-stairs/) | 数组、动态规划 | 简单 | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number/) | 记忆化搜索、数学、动态规划 | 简单 | + + +### 数位 DP 题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [2376. 统计特殊整数](https://leetcode.cn/problems/count-special-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2300-2399/count-special-integers/) | 数学、动态规划 | 困难 | +| [0357. 统计各位数字都不同的数字个数](https://leetcode.cn/problems/count-numbers-with-unique-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-numbers-with-unique-digits/) | 数学、动态规划、回溯 | 中等 | +| [1012. 至少有 1 位重复的数字](https://leetcode.cn/problems/numbers-with-repeated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/numbers-with-repeated-digits/) | 数学、动态规划 | 困难 | +| [0902. 最大为 N 的数字组合](https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/numbers-at-most-n-given-digit-set/) | 数组、数学、字符串、二分查找、动态规划 | 困难 | +| [0788. 旋转数字](https://leetcode.cn/problems/rotated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotated-digits/) | 数学、动态规划 | 中等 | +| [0600. 不含连续1的非负整数](https://leetcode.cn/problems/non-negative-integers-without-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones/) | 动态规划 | 困难 | +| [0233. 数字 1 的个数](https://leetcode.cn/problems/number-of-digit-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-digit-one/) | 递归、数学、动态规划 | 困难 | +| [2719. 统计整数数目](https://leetcode.cn/problems/count-of-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/count-of-integers/) | 数学、字符串、动态规划 | 困难 | +| [0248. 中心对称数 III](https://leetcode.cn/problems/strobogrammatic-number-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/strobogrammatic-number-iii/) | 递归、数组、字符串 | 困难 | +| [1088. 易混淆数 II](https://leetcode.cn/problems/confusing-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/confusing-number-ii/) | 数学、回溯 | 困难 | +| [1067. 范围内的数字计数](https://leetcode.cn/problems/digit-count-in-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/digit-count-in-range/) | 数学、动态规划 | 困难 | +| [1742. 盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-balls-in-a-box/) | 哈希表、数学、计数 | 简单 | +| [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci/) | 递归、数学、动态规划 | 困难 | + + +### 概率 DP 题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0688. 骑士在棋盘上的概率](https://leetcode.cn/problems/knight-probability-in-chessboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/knight-probability-in-chessboard/) | 动态规划 | 中等 | +| [0808. 分汤](https://leetcode.cn/problems/soup-servings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/soup-servings/) | 数学、动态规划、概率与统计 | 中等 | +| [0837. 新 21 点](https://leetcode.cn/problems/new-21-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/new-21-game/) | 数学、动态规划、滑动窗口、概率与统计 | 中等 | +| [1230. 抛掷硬币](https://leetcode.cn/problems/toss-strange-coins/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/toss-strange-coins/) | 数组、数学、动态规划、概率与统计 | 中等 | +| [1467. 两个盒子中球的颜色数相同的概率](https://leetcode.cn/problems/probability-of-a-two-boxes-having-the-same-number-of-distinct-balls/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/probability-of-a-two-boxes-having-the-same-number-of-distinct-balls/) | 数组、数学、动态规划、回溯、组合数学、概率与统计 | 困难 | +| [1227. 飞机座位分配概率](https://leetcode.cn/problems/airplane-seat-assignment-probability/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/airplane-seat-assignment-probability/) | 脑筋急转弯、数学、动态规划、概率与统计 | 中等 | +| [1377. T 秒后青蛙的位置](https://leetcode.cn/problems/frog-position-after-t-seconds/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/frog-position-after-t-seconds/) | 树、深度优先搜索、广度优先搜索、图 | 困难 | +| [LCR 185. 统计结果概率](https://leetcode.cn/problems/nge-tou-zi-de-dian-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/nge-tou-zi-de-dian-shu-lcof/) | 数学、动态规划、概率与统计 | 中等 | + + diff --git a/docs/00_preface/00_07_interview_100_list.md b/docs/00_preface/00_07_interview_100_list.md new file mode 100644 index 00000000..70c8bfba --- /dev/null +++ b/docs/00_preface/00_07_interview_100_list.md @@ -0,0 +1,419 @@ +# LeetCode 面试最常考 200 题(按分类排序) + +## 第 1 章 数组 + +### 数组基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix/) | 数组、矩阵、模拟 | 中等 | +| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image/) | 数组、数学、矩阵 | 中等 | + + +### 排序算法题目 + +#### 选择排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | + + +#### 希尔排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | + + +#### 归并排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | + + +#### 快速排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | + + +#### 堆排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | + + +#### 计数排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | + + +#### 桶排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | + + +#### 其他排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | +| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number/) | 贪心、数组、字符串、排序 | 中等 | + + +### 二分查找题目 + +#### 二分下标题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search/) | 数组、二分查找 | 简单 | +| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array/) | 数组、二分查找 | 中等 | +| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | +| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | +| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element/) | 数组、二分查找 | 中等 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | +| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii/) | 数组、二分查找、分治、矩阵 | 中等 | + + +#### 二分答案题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx/) | 数学、二分查找 | 简单 | + + +### 双指针题目 + +#### 对撞指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | + + +#### 快慢指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | + + +#### 分离双指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | + + +### 滑动窗口题目 + +#### 固定长度窗口题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | + + +#### 不定长度窗口题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring/) | 哈希表、字符串、滑动窗口 | 困难 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | + + +## 第 2 章 链表 + +### 链表经典题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list/) | 链表 | 简单 | +| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii/) | 链表、双指针 | 中等 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | +| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group/) | 递归、链表 | 困难 | +| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list/) | 栈、递归、链表、双指针 | 简单 | + + +### 链表排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list/) | 链表、双指针、分治、排序、归并排序 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | + + +### 链表双指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle/) | 哈希表、链表、双指针 | 简单 | +| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii/) | 哈希表、链表、双指针 | 中等 | +| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists/) | 哈希表、链表、双指针 | 简单 | +| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list/) | 链表、双指针 | 中等 | +| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | 链表、双指针 | 简单 | +| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list/) | 栈、递归、链表、双指针 | 中等 | +| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers/) | 递归、链表、数学 | 中等 | + + +## 第 3 章 堆栈、队列、哈希表 + +### 堆栈基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack/) | 栈、设计 | 中等 | +| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses/) | 栈、字符串 | 简单 | +| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii/) | 栈、数学、字符串 | 中等 | +| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks/) | 栈、设计、队列 | 简单 | +| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string/) | 栈、递归、字符串 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | + + +### 单调栈 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) | 栈、数组、双指针、动态规划、单调栈 | 困难 | + + +### 队列基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues/) | 栈、设计、队列 | 简单 | + + +### 优先队列题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | + + +### 哈希表题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | +| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive/) | 数组、哈希表 | 困难 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | + + +## 第 4 章 字符串 + +### 字符串基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) | 双指针、字符串、动态规划 | 中等 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | +| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string/) | 双指针、字符串 | 中等 | +| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings/) | 数学、字符串、模拟 | 中等 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | + + +## 第 5 章 树 + +### 二叉树的遍历题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | +| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | +| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree/) | 树、深度优先搜索、二叉树 | 中等 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii/) | 树、深度优先搜索、回溯、二叉树 | 中等 | +| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | + + +### 二叉树的还原题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | + + +### 二叉搜索树题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | + + +### 并查集题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | + + +## 第 6 章 图论 + +### 图的深度优先搜索题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers/) | 树、深度优先搜索、二叉树 | 中等 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | + + +### 图的广度优先搜索题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | + + +## 第 7 章 基础算法 + +### 枚举算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | + + +### 递归算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs/) | 递归、链表 | 中等 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | + + +### 分治算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | + + +### 回溯算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations/) | 数组、回溯 | 中等 | +| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses/) | 字符串、动态规划、回溯 | 中等 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | +| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum/) | 数组、回溯 | 中等 | +| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses/) | 字符串、回溯 | 中等 | + + +### 贪心算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | +| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) | 贪心、数组、动态规划 | 中等 | + + +### 位运算题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | + + +## 第 8 章 动态规划 + +### 动态规划题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | +| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock/) | 数组、动态规划 | 简单 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | +| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence/) | 数组、二分查找、动态规划 | 中等 | +| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence/) | 字符串、动态规划 | 中等 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum/) | 数组、动态规划、矩阵 | 中等 | +| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance/) | 字符串、动态规划 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | +| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) | 数学、动态规划、组合数学 | 中等 | +| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray/) | 数组、动态规划 | 中等 | +| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber/) | 数组、动态规划 | 中等 | + + +## 补充题目 + +#### 设计数据结构题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0146. LRU 缓存](https://leetcode.cn/problems/lru-cache/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/lru-cache/) | 设计、哈希表、链表、双向链表 | 中等 | + + +#### 模拟题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0008. 字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi/) | 字符串 | 中等 | +| [0165. 比较版本号](https://leetcode.cn/problems/compare-version-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/compare-version-numbers/) | 双指针、字符串 | 中等 | +| [0468. 验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address/) | 字符串 | 中等 | + + +#### 思维锻炼题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0031. 下一个排列](https://leetcode.cn/problems/next-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/next-permutation/) | 数组、双指针 | 中等 | +| [0470. 用 Rand7() 实现 Rand10()](https://leetcode.cn/problems/implement-rand10-using-rand7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/implement-rand10-using-rand7/) | 数学、拒绝采样、概率与统计、随机化 | 中等 | + + + +## 参考资料 + +- 【清单】[CodeTop 企业题库](https://codetop.cc/home) diff --git a/docs/00_preface/00_08_interview_200_list.md b/docs/00_preface/00_08_interview_200_list.md new file mode 100644 index 00000000..c59ebaba --- /dev/null +++ b/docs/00_preface/00_08_interview_200_list.md @@ -0,0 +1,598 @@ +# LeetCode 面试最常考 200 题(按分类排序) + +## 第 1 章 数组 + +### 数组基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0189. 轮转数组](https://leetcode.cn/problems/rotate-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array/) | 数组、数学、双指针 | 中等 | +| [0498. 对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse/) | 数组、矩阵、模拟 | 中等 | +| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image/) | 数组、数学、矩阵 | 中等 | +| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix/) | 数组、矩阵、模拟 | 中等 | +| [0059. 螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii/) | 数组、矩阵、模拟 | 中等 | + + +### 排序算法题目 + +#### 冒泡排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | + + +#### 选择排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | + + +#### 插入排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) | 数组、双指针、排序 | 中等 | + + +#### 希尔排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | + + +#### 归并排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | +| [LCR 170. 交易逆序对的总数](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | + + +#### 快速排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | + + +#### 堆排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [LCR 159. 库存管理 III](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof/) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | + + +#### 计数排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | + + +#### 桶排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | + + +#### 基数排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap/) | 数组、桶排序、基数排序、排序 | 中等 | + + +#### 其他排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | +| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number/) | 贪心、数组、字符串、排序 | 中等 | +| [0384. 打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array/) | 设计、数组、数学、随机化 | 中等 | +| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | 贪心、字符串、排序 | 中等 | + + +### 二分查找题目 + +#### 二分下标题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search/) | 数组、二分查找 | 简单 | +| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array/) | 数组、二分查找 | 中等 | +| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | +| [0154. 寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii/) | 数组、二分查找 | 困难 | +| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | +| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element/) | 数组、二分查找 | 中等 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | +| [0074. 搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix/) | 数组、二分查找、矩阵 | 中等 | +| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii/) | 数组、二分查找、分治、矩阵 | 中等 | + + +#### 二分答案题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx/) | 数学、二分查找 | 简单 | +| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number/) | 位运算、数组、双指针、二分查找 | 中等 | +| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) | 递归、数学 | 中等 | +| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit/) | 数学、二分查找 | 中等 | + + +#### 复杂的二分查找问题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | + + +### 双指针题目 + +#### 对撞指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0611. 有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number/) | 贪心、数组、双指针、二分查找、排序 | 中等 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | +| [0016. 最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest/) | 数组、双指针、排序 | 中等 | +| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) | 双指针、字符串 | 简单 | +| [0011. 盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water/) | 贪心、数组、双指针 | 中等 | +| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) | 数组、双指针、排序 | 中等 | +| [LCR 139. 训练计划 I](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | 数组、双指针、排序 | 简单 | +| [0443. 压缩字符串](https://leetcode.cn/problems/string-compression/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression/) | 双指针、字符串 | 中等 | + + +#### 快慢指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0026. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array/) | 数组、双指针 | 简单 | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | + + +#### 分离双指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | + + +### 滑动窗口题目 + +#### 固定长度窗口题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | + + +#### 不定长度窗口题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring/) | 哈希表、字符串、滑动窗口 | 困难 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0862. 和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k/) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [1004. 最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | + + +## 02. 链表 + +### 链表经典题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list/) | 链表 | 简单 | +| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii/) | 链表、双指针 | 中等 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | +| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group/) | 递归、链表 | 困难 | +| [0328. 奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list/) | 链表 | 中等 | +| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list/) | 栈、递归、链表、双指针 | 简单 | +| [0138. 随机链表的复制](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer/) | 哈希表、链表 | 中等 | +| [0061. 旋转链表](https://leetcode.cn/problems/rotate-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list/) | 链表、双指针 | 中等 | + + +### 链表排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list/) | 链表、双指针、分治、排序、归并排序 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | + + +### 链表双指针题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle/) | 哈希表、链表、双指针 | 简单 | +| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii/) | 哈希表、链表、双指针 | 中等 | +| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists/) | 哈希表、链表、双指针 | 简单 | +| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list/) | 链表、双指针 | 中等 | +| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | 链表、双指针 | 简单 | +| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list/) | 栈、递归、链表、双指针 | 中等 | +| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers/) | 递归、链表、数学 | 中等 | +| [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii/) | 栈、链表、数学 | 中等 | + + +## 第 3 章 堆栈、队列、哈希表 + +### 堆栈基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [1047. 删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string/) | 栈、字符串 | 简单 | +| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack/) | 栈、设计 | 中等 | +| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses/) | 栈、字符串 | 简单 | +| [0224. 基本计算器](https://leetcode.cn/problems/basic-calculator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator/) | 栈、递归、数学、字符串 | 困难 | +| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii/) | 栈、数学、字符串 | 中等 | +| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks/) | 栈、设计、队列 | 简单 | +| [LCR 125. 图书整理 II](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | 栈、设计、队列 | 简单 | +| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string/) | 栈、递归、字符串 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | +| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) | 栈、数组、单调栈 | 中等 | +| [0071. 简化路径](https://leetcode.cn/problems/simplify-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/simplify-path/) | 栈、字符串 | 中等 | + + +### 单调栈 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) | 栈、数组、单调栈 | 中等 | +| [0503. 下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii/) | 栈、数组、单调栈 | 中等 | +| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) | 栈、数组、双指针、动态规划、单调栈 | 困难 | +| [0085. 最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximal-rectangle/) | 栈、数组、动态规划、矩阵、单调栈 | 困难 | + + +### 队列基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues/) | 栈、设计、队列 | 简单 | + + +### 优先队列题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0347. 前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements/) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0295. 数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream/) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | + + +### 哈希表题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | +| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive/) | 数组、哈希表 | 困难 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | +| [0242. 有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram/) | 哈希表、字符串、排序 | 简单 | +| [0442. 数组中重复的数据](https://leetcode.cn/problems/find-all-duplicates-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-duplicates-in-an-array/) | 数组、哈希表 | 中等 | +| [LCR 186. 文物朝代判断](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof/) | 数组、排序 | 简单 | +| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | +| [LCR 120. 寻找文件副本](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | 数组、哈希表、排序 | 简单 | + + +## 第 4 章 字符串 + +### 字符串基础题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) | 双指针、字符串 | 简单 | +| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) | 双指针、字符串、动态规划 | 中等 | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | +| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) | 双指针、字符串 | 简单 | +| [0557. 反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii/) | 双指针、字符串 | 简单 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | +| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string/) | 双指针、字符串 | 中等 | +| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings/) | 数学、字符串、模拟 | 中等 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | + + +### 单模式串匹配题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0459. 重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern/) | 字符串、字符串匹配 | 简单 | + + +### 字典树题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0208. 实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree/) | 设计、字典树、哈希表、字符串 | 中等 | +| [0440. 字典序的第K小数字](https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/k-th-smallest-in-lexicographical-order/) | 字典树 | 困难 | + + +## 第 5 章 树 + +### 二叉树的遍历题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | +| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii/) | 树、深度优先搜索、回溯、二叉树 | 中等 | +| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree/) | 树、深度优先搜索、二叉树 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0297. 二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree/) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | +| [0114. 二叉树展开为链表](https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/flatten-binary-tree-to-linked-list/) | 栈、树、深度优先搜索、链表、二叉树 | 中等 | + + +### 二叉树的还原题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0106. 从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | + + +### 二叉搜索树题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst/) | 树、二叉搜索树、二叉树 | 中等 | +| [LCR 174. 寻找二叉搜索树中的目标节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0230. 二叉搜索树中第 K 小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-smallest-element-in-a-bst/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0426. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list/) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | +| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | + + +### 并查集题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | + + +## 第 6 章 图论 + +### 图的深度优先搜索题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers/) | 树、深度优先搜索、二叉树 | 中等 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | + + +### 图的广度优先搜索题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | +| [0207. 课程表](https://leetcode.cn/problems/course-schedule/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 151. 彩灯装饰记录 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | 树、广度优先搜索、二叉树 | 中等 | + + +### 图的拓扑排序题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0210. 课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | + + +## 第 7 章 基础算法 + +### 枚举算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | +| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k/) | 数组、哈希表、前缀和 | 中等 | + + +### 递归算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs/) | 递归、链表 | 中等 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | 递归、数学 | 简单 | + + +### 分治算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | +| [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 | + + +### 回溯算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations/) | 数组、回溯 | 中等 | +| [0047. 全排列 II](https://leetcode.cn/problems/permutations-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii/) | 数组、回溯、排序 | 中等 | +| [0037. 解数独](https://leetcode.cn/problems/sudoku-solver/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver/) | 数组、哈希表、回溯、矩阵 | 困难 | +| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses/) | 字符串、动态规划、回溯 | 中等 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | +| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum/) | 数组、回溯 | 中等 | +| [0040. 组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii/) | 数组、回溯 | 中等 | +| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses/) | 字符串、回溯 | 中等 | +| [0079. 单词搜索](https://leetcode.cn/problems/word-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search/) | 深度优先搜索、数组、字符串、回溯、矩阵 | 中等 | +| [0679. 24 点游戏](https://leetcode.cn/problems/24-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/24-game/) | 数组、数学、回溯 | 困难 | + + +### 贪心算法题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | +| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) | 贪心、数组、动态规划 | 中等 | +| [0055. 跳跃游戏](https://leetcode.cn/problems/jump-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game/) | 贪心、数组、动态规划 | 中等 | +| [0402. 移掉 K 位数字](https://leetcode.cn/problems/remove-k-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/remove-k-digits/) | 栈、贪心、字符串、单调栈 | 中等 | +| [0135. 分发糖果](https://leetcode.cn/problems/candy/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy/) | 贪心、数组 | 困难 | +| [0134. 加油站](https://leetcode.cn/problems/gas-station/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station/) | 贪心、数组 | 中等 | +| [0670. 最大交换](https://leetcode.cn/problems/maximum-swap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-swap/) | 贪心、数学 | 中等 | + + +### 位运算题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | +| [0191. 位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits/) | 位运算、分治 | 简单 | +| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | + + +## 第 8 章 动态规划 + +### 动态规划题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock/) | 数组、动态规划 | 简单 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | +| [0518. 零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii/) | 数组、动态规划 | 中等 | +| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence/) | 数组、二分查找、动态规划 | 中等 | +| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence/) | 字符串、动态规划 | 中等 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum/) | 数组、动态规划、矩阵 | 中等 | +| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance/) | 字符串、动态规划 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | +| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) | 数学、动态规划、组合数学 | 中等 | +| [0063. 不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii/) | 数组、动态规划、矩阵 | 中等 | +| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray/) | 数组、动态规划 | 中等 | +| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber/) | 数组、动态规划 | 中等 | +| [0213. 打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii/) | 数组、动态规划 | 中等 | +| [0091. 解码方法](https://leetcode.cn/problems/decode-ways/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways/) | 字符串、动态规划 | 中等 | +| [0010. 正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching/) | 递归、字符串、动态规划 | 困难 | +| [0678. 有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string/) | 栈、贪心、字符串、动态规划 | 中等 | +| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii/) | 贪心、数组、动态规划 | 中等 | +| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) | 树状数组、线段树、数组、动态规划 | 中等 | +| [0139. 单词拆分](https://leetcode.cn/problems/word-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break/) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | +| [0044. 通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching/) | 贪心、递归、字符串、动态规划 | 困难 | +| [0120. 三角形最小路径和](https://leetcode.cn/problems/triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle/) | 数组、动态规划 | 中等 | +| [0096. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees/) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | +| [0887. 鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop/) | 数学、二分查找、动态规划 | 困难 | +| [0097. 交错字符串](https://leetcode.cn/problems/interleaving-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/interleaving-string/) | 字符串、动态规划 | 中等 | +| [0516. 最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence/) | 字符串、动态规划 | 中等 | + + +### 记忆化搜索题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0329. 矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix/) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | + + +## 补充题目 + +#### 设计数据结构题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0146. LRU 缓存](https://leetcode.cn/problems/lru-cache/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/lru-cache/) | 设计、哈希表、链表、双向链表 | 中等 | +| [0460. LFU 缓存](https://leetcode.cn/problems/lfu-cache/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/lfu-cache/) | 设计、哈希表、链表、双向链表 | 困难 | + + +#### 数学题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0007. 整数反转](https://leetcode.cn/problems/reverse-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-integer/) | 数学 | 中等 | +| [0009. 回文数](https://leetcode.cn/problems/palindrome-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/palindrome-number/) | 数学 | 简单 | +| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | 递归、数学 | 简单 | +| [0168. Excel 表列名称](https://leetcode.cn/problems/excel-sheet-column-title/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-title/) | 数学、字符串 | 简单 | +| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit/) | 数学、二分查找 | 中等 | + + +#### 模拟题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0008. 字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi/) | 字符串 | 中等 | +| [0165. 比较版本号](https://leetcode.cn/problems/compare-version-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/compare-version-numbers/) | 双指针、字符串 | 中等 | +| [0468. 验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address/) | 字符串 | 中等 | +| [0086. 分隔链表](https://leetcode.cn/problems/partition-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/partition-list/) | 链表、双指针 | 中等 | + + +#### 前缀和 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k/) | 数组、哈希表、前缀和 | 中等 | + + +#### 思维锻炼题目 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [0031. 下一个排列](https://leetcode.cn/problems/next-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/next-permutation/) | 数组、双指针 | 中等 | +| [0556. 下一个更大元素 III](https://leetcode.cn/problems/next-greater-element-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-iii/) | 数学、双指针、字符串 | 中等 | +| [0470. 用 Rand7() 实现 Rand10()](https://leetcode.cn/problems/implement-rand10-using-rand7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/implement-rand10-using-rand7/) | 数学、拒绝采样、概率与统计、随机化 | 中等 | + + + +## 参考资料 + +- 【清单】[CodeTop 企业题库](https://codetop.cc/home) diff --git a/docs/00_preface/index.md b/docs/00_preface/index.md new file mode 100644 index 00000000..ff1033fc --- /dev/null +++ b/docs/00_preface/index.md @@ -0,0 +1,10 @@ +# 本章内容 + +- [0.1 关于本书](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_01_about_the_book.md) +- [0.2 算法与数据结构](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_02_data_structures_algorithms.md) +- [0.3 算法复杂度](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_03_algorithm_complexity.md) +- [0.4 LeetCode 入门与攻略](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_04_leetcode_guide.md) +- [0.5 LeetCode 题解(字典序排序,850+ 道题解)](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_05_solutions_list.md) +- [0.6 LeetCode 题解(按分类排序,推荐刷题列表 ★★★)](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md) +- [0.7 LeetCode 面试最常考 100 题(按分类排序)](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_07_interview_100_list.md) +- [0.8 LeetCode 面试最常考 200 题(按分类排序)](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_08_interview_200_list.md) \ No newline at end of file diff --git a/Contents/01.Array/01.Array-Basic/01.Array-Basic.md b/docs/01_array/01_01_array_basic.md similarity index 95% rename from Contents/01.Array/01.Array-Basic/01.Array-Basic.md rename to docs/01_array/01_01_array_basic.md index 74451466..40fbdbb9 100644 --- a/Contents/01.Array/01.Array-Basic/01.Array-Basic.md +++ b/docs/01_array/01_01_array_basic.md @@ -226,11 +226,13 @@ print(arr) 到这里,有关数组的基础知识就介绍完了。下面进行一下总结。 -## 3. 数组的基础知识总结 +## 3. 总结 -数组是最基础、最简单的数据结构。数组是实现线性表的顺序结构存储的基础。它使用一组连续的内存空间,来存储一组具有相同类型的数据。 +数组是一种简单的数据结构。它使用连续的内存空间存储相同类型的数据。数组的最大特点的支持随机访问,可以根据下标快速访问元素。 -数组的最大特点的支持随机访问。访问数组元素、改变数组元素的时间复杂度为 $O(1)$,在数组尾部插入、删除元素的时间复杂度也是 $O(1)$,普通情况下插入、删除元素的时间复杂度为 $O(n)$。 +访问数组元素、修改元素的时间复杂度是 $O(1)$。在数组尾部插入、删除元素的时间复杂度也是 $O(1)$。在数组中间插入、删除元素的时间复杂度是 $O(n)$。 + +不同编程语言中数组的实现可能不同。C/C++ 的数组严格使用连续内存,Java 和 Python 的数组灵活性更高。 ## 参考资料 diff --git a/docs/01_array/01_02_array_sort.md b/docs/01_array/01_02_array_sort.md new file mode 100644 index 00000000..e24125b8 --- /dev/null +++ b/docs/01_array/01_02_array_sort.md @@ -0,0 +1,54 @@ +# 1.2 数组排序 + +数组排序是计算机科学中最基本的问题之一。排序算法有很多种,每种算法都有其特点和适用场景。 + +## 1. 排序算法的分类 + +排序算法可以按照不同的标准进行分类: + +1. 按照时间复杂度分类: + - 简单排序算法:时间复杂度为 $O(n^2)$,如冒泡排序、选择排序、插入排序 + - 高级排序算法:时间复杂度为 $O(n \log n)$,如快速排序、归并排序、堆排序 + - 线性排序算法:时间复杂度为 $O(n)$,如计数排序、桶排序、基数排序 + +2. 按照空间复杂度分类: + - 原地排序算法:空间复杂度为 $O(1)$,如冒泡排序、选择排序、插入排序、快速排序、堆排序 + - 非原地排序算法:空间复杂度为 $O(n)$,如归并排序、计数排序、桶排序、基数排序 + +3. 按照稳定性分类: + - 稳定排序算法:相等元素的相对顺序在排序后保持不变,如冒泡排序、插入排序、归并排序、计数排序、桶排序、基数排序 + - 不稳定排序算法:相等元素的相对顺序在排序后可能改变,如选择排序、快速排序、堆排序 + +## 2. 排序算法的评价指标 + +评价一个排序算法的好坏,主要从以下几个方面考虑: + +1. 时间复杂度:算法执行所需的时间 +2. 空间复杂度:算法执行所需的额外空间 +3. 稳定性:相等元素的相对顺序是否保持不变 +4. 原地性:是否需要在原数组之外开辟额外空间 +5. 自适应性:算法是否能够利用输入数据的特性来提高效率 + +## 3. 常见排序算法 + +常见的排序算法包括: + +1. 冒泡排序:通过相邻元素比较和交换,将最大元素逐步"冒泡"到数组末尾 +2. 选择排序:每次从未排序区间选择最小元素,放到已排序区间末尾 +3. 插入排序:将未排序区间的元素插入到已排序区间的合适位置 +4. 快速排序:选择一个基准元素,将数组分为两部分,递归排序 +5. 归并排序:将数组分成两半,分别排序后合并 +6. 堆排序:利用堆这种数据结构进行排序 +7. 计数排序:统计每个元素出现的次数,按顺序输出 +8. 桶排序:将元素分到有限数量的桶中,对每个桶单独排序 +9. 基数排序:按照元素的位数进行排序 + +## 4. 排序算法的选择 + +在实际应用中,选择合适的排序算法需要考虑以下因素: + +1. 数据规模:小规模数据可以使用简单排序算法,大规模数据需要使用高级排序算法 +2. 数据特征:如果数据基本有序,插入排序效率较高;如果数据分布均匀,快速排序效率较高 +3. 空间限制:如果空间有限,应该选择原地排序算法 +4. 稳定性要求:如果需要保持相等元素的相对顺序,应该选择稳定排序算法 +5. 硬件环境:不同的硬件环境可能适合不同的排序算法 diff --git a/Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md b/docs/01_array/01_03_array_bubble_sort.md similarity index 89% rename from Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md rename to docs/01_array/01_03_array_bubble_sort.md index e1dd3bc9..0c626ab7 100644 --- a/Contents/01.Array/02.Array-Sort/01.Array-Bubble-Sort.md +++ b/docs/01_array/01_03_array_bubble_sort.md @@ -97,6 +97,16 @@ class Solution: - **冒泡排序适用情况**:冒泡排序方法在排序过程中需要移动较多次数的元素,并且排序时间效率比较低。因此,冒泡排序方法比较适合于参加排序序列的数据量较小的情况,尤其是当序列的初始状态为基本有序的情况。 - **排序稳定性**:由于元素交换是在相邻元素之间进行的,不会改变相等元素的相对顺序,因此,冒泡排序法是一种 **稳定排序算法**。 +## 5. 总结 + +冒泡排序是一种简单的排序算法。它通过多次比较相邻元素并交换位置,将较大的元素逐步移动到数组末尾。 + +冒泡排序的时间复杂度取决于数据情况。最好情况下是 $O(n)$,最坏情况下是 $O(n^2)$。它只需要常数级别的额外空间,空间复杂度是 $O(1)$。 + +冒泡排序适合数据量小的场景。当数据基本有序时,它的效率较高。由于交换只在相邻元素间进行,冒泡排序是稳定的排序算法。 + +冒泡排序容易实现,但效率较低。在实际应用中,通常选择更高效的排序算法处理大规模数据。 + ## 参考资料 - 【文章】[11.3. 冒泡排序 - Hello 算法](https://www.hello-algo.com/chapter_sorting/bubble_sort/) \ No newline at end of file diff --git a/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md b/docs/01_array/01_04_array_selection_sort.md similarity index 85% rename from Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md rename to docs/01_array/01_04_array_selection_sort.md index 6d7ba879..32b9e70b 100644 --- a/Contents/01.Array/02.Array-Sort/02.Array-Selection-Sort.md +++ b/docs/01_array/01_04_array_selection_sort.md @@ -84,5 +84,10 @@ class Solution: - **排序稳定性**:由于值最小元素与未排序区间第 $1$ 个元素的交换动作是在不相邻的元素之间进行的,因此很有可能会改变相等元素的相对顺序,因此,选择排序法是一种 **不稳定排序算法**。 +## 5. 总结 +选择排序是一种简单的排序算法。它的工作原理是将数组分成已排序和未排序两部分。每次从未排序部分找到最小的元素,放到已排序部分的末尾。这个过程重复进行,直到所有元素排序完成。 +选择排序的时间复杂度是 $O(n^2)$,因为它需要进行 $ \frac{n(n−1)}{2}$ 次比较。空间复杂度是 $O(1)$,因为它只需要常数级的额外空间。选择排序是不稳定的排序算法,因为在交换过程中可能改变相等元素的相对顺序。 + +选择排序适合小规模数据的排序。它的优点是实现简单,不需要额外空间。缺点是效率较低,不适合大规模数据。 \ No newline at end of file diff --git a/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md b/docs/01_array/01_05_array_insertion_sort.md similarity index 81% rename from Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md rename to docs/01_array/01_05_array_insertion_sort.md index 670dcf67..a87b3457 100644 --- a/Contents/01.Array/02.Array-Sort/03.Array-Insertion-Sort.md +++ b/docs/01_array/01_05_array_insertion_sort.md @@ -57,4 +57,12 @@ class Solution: - **最差时间复杂度**:$O(n^2)$。最差的情况下(初始时区间已经是降序排列),每个元素 $nums[i]$ 都要进行 $i - 1$ 次元素之间的比较,元素之间总的比较次数达到最大值,为 $∑^n_{i=2}(i − 1) = \frac{n(n−1)}{2}$。 - **平均时间复杂度**:$O(n^2)$。如果区间的初始情况是随机的,即参加排序的区间中元素可能出现的各种排列的概率相同,则可取上述最小值和最大值的平均值作为插入排序时所进行的元素之间的比较次数,约为 $\frac{n^2}{4}$。由此得知,插入排序算法的平均时间复杂度为 $O(n^2)$。 - **空间复杂度**:$O(1)$。插入排序算法为原地排序算法,只用到指针变量 $i$、$j$ 以及表示无序区间中第 $1$ 个元素的变量等常数项的变量。 -- **排序稳定性**:在插入操作过程中,每次都讲元素插入到相等元素的右侧,并不会改变相等元素的相对顺序。因此,插入排序方法是一种 **稳定排序算法**。 \ No newline at end of file +- **排序稳定性**:在插入操作过程中,每次都讲元素插入到相等元素的右侧,并不会改变相等元素的相对顺序。因此,插入排序方法是一种 **稳定排序算法**。 + +## 5. 总结 + +插入排序是一种简单直观的排序算法。它的工作原理是将数组分为有序区间和无序区间,每次从无序区间取出一个元素,插入到有序区间的正确位置。这个过程重复进行,直到所有元素都排好序。 + +插入排序的时间复杂度取决于数据的初始顺序。最好的情况是数组已经有序,时间复杂度为 $O(n)$。最坏的情况是数组完全逆序,时间复杂度为 $O(n^2)$。平均时间复杂度也是 $O(n^2)$。空间复杂度是 $O(1)$,因为排序是在原地进行的。 + +插入排序是稳定的排序算法,因为它不会改变相等元素的相对顺序。这个算法适合小规模数据或基本有序的数据排序。对于大规模数据,插入排序的效率不如快速排序等更高级的算法。 \ No newline at end of file diff --git a/Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md b/docs/01_array/01_06_array_shell_sort.md similarity index 85% rename from Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md rename to docs/01_array/01_06_array_shell_sort.md index a203d1d7..e56db6e5 100644 --- a/Contents/01.Array/02.Array-Sort/04.Array-Shell-Sort.md +++ b/docs/01_array/01_06_array_shell_sort.md @@ -86,4 +86,12 @@ class Solution: - 从算法中也可以看到,外层 `while gap > 0` 的循环次数为 $\log n$ 数量级,内层插入排序算法循环次数为 $n$ 数量级。当子数组分得越多时,子数组内的元素就越少,内层循环的次数也就越少;反之,当所分的子数组个数减少时,子数组内的元素也随之增多,但整个数组也逐步接近有序,而循环次数却不会随之增加。因此,希尔排序算法的时间复杂度在 $O(n \times \log^2 n)$ 与 $O(n^2)$ 之间。 - **空间复杂度**:$O(1)$。希尔排序中用到的插入排序算法为原地排序算法,只用到指针变量 $i$、$j$ 以及表示无序区间中第 $1$ 个元素的变量、间隔数 $gap$ 等常数项的变量。 -- **排序稳定性**:在一次插入排序是稳定的,不会改变相等元素的相对顺序,但是在不同的插入排序中,相等元素可能在各自的插入排序中移动。因此,希尔排序方法是一种 **不稳定排序算法**。 \ No newline at end of file +- **排序稳定性**:在一次插入排序是稳定的,不会改变相等元素的相对顺序,但是在不同的插入排序中,相等元素可能在各自的插入排序中移动。因此,希尔排序方法是一种 **不稳定排序算法**。 + +## 5. 总结 + +希尔排序是插入排序的改进版本。它通过将数组分成多个子数组进行排序,逐步缩小间隔,最终对整个数组进行一次插入排序。这种方法减少了数据移动的次数,提高了排序效率。 + +希尔排序的时间复杂度取决于间隔序列的选择。使用常见的间隔序列时,时间复杂度在 $O(n \log n)$ 到 $O(n^2)$ 之间。空间复杂度是 $O(1)$,因为排序是在原地进行的。 + +希尔排序是不稳定的排序算法,因为在不同的子数组排序过程中,相等元素的相对顺序可能改变。希尔排序适合中等规模的数据排序,比简单插入排序更快,但比快速排序等高级算法稍慢。 \ No newline at end of file diff --git a/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md b/docs/01_array/01_07_array_merge_sort.md similarity index 87% rename from Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md rename to docs/01_array/01_07_array_merge_sort.md index 6b9e7981..82138688 100644 --- a/Contents/01.Array/02.Array-Sort/05.Array-Merge-Sort.md +++ b/docs/01_array/01_07_array_merge_sort.md @@ -73,4 +73,12 @@ class Solution: - **时间复杂度**:$O(n \times \log n)$。归并排序算法的时间复杂度等于归并趟数与每一趟归并的时间复杂度乘积。子算法 `merge(left_nums, right_nums):` 的时间复杂度是 $O(n)$,因此,归并排序算法总的时间复杂度为 $O(n \times \log n)$。 - **空间复杂度**:$O(n)$。归并排序方法需要用到与参加排序的数组同样大小的辅助空间。因此,算法的空间复杂度为 $O(n)$。 -- **排序稳定性**:因为在两个有序子数组的归并过程中,如果两个有序数组中出现相等元素,`merge(left_nums, right_nums):` 算法能够使前一个数组中那个相等元素先被复制,从而确保这两个元素的相对顺序不发生改变。因此,归并排序算法是一种 **稳定排序算法**。 \ No newline at end of file +- **排序稳定性**:因为在两个有序子数组的归并过程中,如果两个有序数组中出现相等元素,`merge(left_nums, right_nums):` 算法能够使前一个数组中那个相等元素先被复制,从而确保这两个元素的相对顺序不发生改变。因此,归并排序算法是一种 **稳定排序算法**。 + +## 5. 总结 + +归并排序采用分治策略,将数组不断拆分为更小的子数组进行排序,再将有序子数组合并成完整的有序数组。这种方法保证了排序的稳定性。 + +归并排序的时间复杂度是 $O(n \log n)$,这是因为它需要 $\log n$ 次分解,每次合并需要 $O(n)$ 时间。空间复杂度是 $O(n)$,因为合并过程需要额外的存储空间。 + +归并排序是稳定的排序算法,在合并过程中相等元素的相对顺序不会改变。它适合处理大规模数据,但需要额外的存储空间是其缺点。归并排序常用于外部排序场景。 \ No newline at end of file diff --git a/Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md b/docs/01_array/01_08_array_quick_sort.md similarity index 88% rename from Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md rename to docs/01_array/01_08_array_quick_sort.md index 061051f2..ecbc4586 100644 --- a/Contents/01.Array/02.Array-Sort/06.Array-Quick-Sort.md +++ b/docs/01_array/01_08_array_quick_sort.md @@ -134,6 +134,16 @@ class Solution: - **空间复杂度**:$O(n)$。无论快速排序算法递归与否,排序过程中都需要用到堆栈或其他结构的辅助空间来存放当前待排序数组的首、尾位置。最坏的情况下,空间复杂度为 $O(n)$。如果对算法进行一些改写,在一趟排序之后比较被划分所得到的两个子数组的长度,并且首先对长度较短的子数组进行快速排序,这时候需要的空间复杂度可以达到 $O(log_2 n)$。 - **排序稳定性**:在进行哨兵划分时,基准数可能会被交换至相等元素的右侧。因此,快速排序是一种 **不稳定排序算法**。 +## 5. 总结 + +快速排序使用分治策略,通过选取基准数将数组分成两部分,一部分比基准数小,一部分比基准数大。然后对这两部分递归地进行相同操作。 + +快速排序的时间复杂度取决于基准数的选择。最好情况是每次都能平分数组,时间复杂度为 $O(n \log n)$。最坏情况是每次选择的基准数都是极值,时间复杂度为 $O(n^2)$。平均时间复杂度为 $O(n \log n)$。空间复杂度为 $O(n)$,优化后可达 $O(\log n)$。 + +快速排序是不稳定的排序算法,因为在交换过程中可能改变相等元素的相对顺序。它的优势在于平均情况下效率高,适合处理大规模数据。但最坏情况下的性能较差,可以通过随机选择基准数来优化。 + +快速排序在实际应用中很常见,是许多编程语言内置排序函数的实现基础。它的效率通常比其他 $O(n \log n)$ 算法更高,因为它的常数因子较小。 + ## 参考资料 - 【文章】[快速排序 - OI Wiki](https://oi-wiki.org/basic/quick-sort/) diff --git a/Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md b/docs/01_array/01_09_array_heap_sort.md similarity index 93% rename from Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md rename to docs/01_array/01_09_array_heap_sort.md index cea58140..1b503353 100644 --- a/Contents/01.Array/02.Array-Sort/07.Array-Heap-Sort.md +++ b/docs/01_array/01_09_array_heap_sort.md @@ -367,3 +367,13 @@ print(Solution().sortArray([10, 25, 6, 8, 7, 1, 20, 23, 16, 19, 17, 3, 18, 14])) - 因此,堆积排序的时间复杂度为 $O(n \times \log n)$。 - **空间复杂度**:$O(1)$。由于在堆积排序中只需要一个记录大小的辅助空间,因此,堆积排序的空间复杂度为:$O(1)$。 - **排序稳定性**:在进行「下移调整」时,相等元素的相对位置可能会发生变化。因此,堆排序是一种 **不稳定排序算法**。 + +## 5. 总结 + +堆排序利用堆结构进行排序。堆是一种完全二叉树,分为大顶堆和小顶堆。大顶堆中每个节点的值都大于等于其子节点值,小顶堆中每个节点的值都小于等于其子节点值。 + +堆排序分为两个主要步骤:构建初始堆和交换调整堆。首先将数组构建成大顶堆,然后重复取出堆顶元素(最大值)并调整堆结构。每次取出堆顶元素后,将堆末尾元素移到堆顶,再进行下移调整保持堆的性质。 + +堆排序的时间复杂度为 $O(n \log n)$。构建初始堆需要 $O(n)$ 时间,每次调整堆需要 $O(\log n)$ 时间,共进行 $n$ 次调整。空间复杂度为 $O(1)$,因为排序是原地进行的。 + +堆排序是不稳定的排序算法,因为在调整堆的过程中可能改变相等元素的相对顺序。它的优势在于不需要额外空间,适合处理大规模数据。但相比快速排序,堆排序的常数因子较大,实际应用中可能稍慢。 \ No newline at end of file diff --git a/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md b/docs/01_array/01_10_array_counting_sort.md similarity index 84% rename from Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md rename to docs/01_array/01_10_array_counting_sort.md index bc1ef75b..bed4c181 100644 --- a/Contents/01.Array/02.Array-Sort/08.Array-Counting-Sort.md +++ b/docs/01_array/01_10_array_counting_sort.md @@ -60,4 +60,12 @@ class Solution: - **时间复杂度**:$O(n + k)$。其中 $k$ 代表待排序数组的值域。 - **空间复杂度**:$O(k)$。其中 $k$ 代表待排序序列的值域。由于用于计数的数组 $counts$ 的长度取决于待排序数组中数据的范围(大小等于待排序数组最大值减去最小值再加 $1$)。所以计数排序算法对于数据范围很大的数组,需要大量的内存。 - **计数排序适用情况**:计数排序一般用于整数排序,不适用于按字母顺序、人名顺序排序。 -- **排序稳定性**:由于向结果数组中填充元素时使用的是逆序遍历,可以避免改变相等元素之间的相对顺序。因此,计数排序是一种 **稳定排序算法**。 \ No newline at end of file +- **排序稳定性**:由于向结果数组中填充元素时使用的是逆序遍历,可以避免改变相等元素之间的相对顺序。因此,计数排序是一种 **稳定排序算法**。 + +## 5. 总结 + +计数排序通过统计元素出现次数来实现排序。它先找出数组中的最大值和最小值,确定排序范围。然后统计每个元素的出现次数,计算累积次数,最后根据统计信息将元素放到正确位置。 + +计数排序的时间复杂度是 $O(n + k)$,其中 $n$ 是元素个数,$k$ 是数值范围。空间复杂度是 $O(k)$。当 $k$ 值较小时效率很高,但当数值范围很大时会消耗较多内存。 + +计数排序适合整数排序,不适合字符串等复杂数据。它是稳定的排序算法,能保持相等元素的原始顺序。在实际应用中,计数排序常用于数据范围不大的整数排序场景。 \ No newline at end of file diff --git a/Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md b/docs/01_array/01_11_array_bucket_sort.md similarity index 84% rename from Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md rename to docs/01_array/01_11_array_bucket_sort.md index 4fdce2e4..6b6fbfe3 100644 --- a/Contents/01.Array/02.Array-Sort/09.Array-Bucket-Sort.md +++ b/docs/01_array/01_11_array_bucket_sort.md @@ -63,4 +63,12 @@ class Solution: - **时间复杂度**:$O(n)$。当输入元素个数为 $n$,桶的个数是 $m$ 时,每个桶里的数据就是 $k = \frac{n}{m}$ 个。每个桶内排序的时间复杂度为 $O(k \times \log k)$。$m$ 个桶就是 $m \times O(k \times \log k) = m \times O(\frac{n}{m} \times \log \frac{n}{m}) = O(n \times \log \frac{n}{m})$。当桶的个数 $m$ 接近于数据个数 $n$ 时,$\log \frac{n}{m}$ 就是一个较小的常数,所以排序桶排序时间复杂度接近于 $O(n)$。 - **空间复杂度**:$O(n + m)$。由于桶排序使用了辅助空间,所以桶排序的空间复杂度是 $O(n + m)$。 -- **排序稳定性**:桶排序的稳定性取决于桶内使用的排序算法。如果桶内使用稳定的排序算法(比如插入排序算法),并且在合并桶的过程中保持相等元素的相对顺序不变,则桶排序是一种 **稳定排序算法**。反之,则桶排序是一种 **不稳定排序算法**。 \ No newline at end of file +- **排序稳定性**:桶排序的稳定性取决于桶内使用的排序算法。如果桶内使用稳定的排序算法(比如插入排序算法),并且在合并桶的过程中保持相等元素的相对顺序不变,则桶排序是一种 **稳定排序算法**。反之,则桶排序是一种 **不稳定排序算法**。 + +## 5. 总结 + +桶排序将元素分散到多个桶中,每个桶单独排序后再合并。它先确定桶的数量和范围,把元素分配到对应桶中,对每个桶排序,最后合并所有桶。 + +桶排序的时间复杂度接近 $O(n)$,在数据分布均匀时效率很高。空间复杂度是 $O(n + m)$,需要额外存储桶。排序的稳定性取决于桶内使用的排序算法。 + +桶排序适合数据分布均匀的情况,当数据集中在少数桶时会降低效率。实际应用中常用于外部排序和处理大数据量的场景。合理设置桶的数量和范围对性能很重要。 \ No newline at end of file diff --git a/Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md b/docs/01_array/01_12_array_radix_sort.md similarity index 80% rename from Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md rename to docs/01_array/01_12_array_radix_sort.md index a36b7a58..a32a95e2 100644 --- a/Contents/01.Array/02.Array-Sort/10.Array-Radix-Sort.md +++ b/docs/01_array/01_12_array_radix_sort.md @@ -54,4 +54,12 @@ class Solution: - **时间复杂度**:$O(n \times k)$。其中 $n$ 是待排序元素的个数,$k$ 是数字位数。$k$ 的大小取决于数字位的选择(十进制位、二进制位)和待排序元素所属数据类型全集的大小。 - **空间复杂度**:$O(n + k)$。 -- **排序稳定性**:基数排序采用的桶排序是稳定的。基数排序是一种 **稳定排序算法**。 \ No newline at end of file +- **排序稳定性**:基数排序采用的桶排序是稳定的。基数排序是一种 **稳定排序算法**。 + +## 5. 总结 + +基数排序按照数字的每一位进行排序。它从最低位开始,逐位比较,直到最高位。每次排序时,将数字分配到 $0 \sim 9$ 的桶中,然后按顺序收集。 + +基数排序的时间复杂度是 $O(n \times k)$,$n$ 是元素数量,$k$ 是最大位数。空间复杂度是 $O(n + k)$。它是稳定的排序算法,能保持相同数字的相对顺序。 + +基数排序适合处理位数不多的整数排序。当数字范围很大但位数较少时效率较高。实际应用中常用于电话号码、身份证号等固定位数数据的排序。 \ No newline at end of file diff --git a/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md b/docs/01_array/01_13_array_binary_search_01.md similarity index 88% rename from Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md rename to docs/01_array/01_13_array_binary_search_01.md index 2f1d1dab..71e3e878 100644 --- a/Contents/01.Array/03.Array-Binary-Search/01.Array-Binary-Search-01.md +++ b/docs/01_array/01_13_array_binary_search_01.md @@ -145,3 +145,13 @@ class Solution: - **时间复杂度**:$O(\log n)$。 - **空间复杂度**:$O(1)$。 + +## 3. 总结 + +二分查找是一种高效的搜索算法,适用于有序数组。它的工作原理是通过不断将搜索范围减半来快速定位目标元素。 + +二分查找的步骤包括初始化查找范围、计算中间元素、比较中间元素与目标值,并根据比较结果调整查找范围。如果中间元素等于目标值,返回其位置。如果中间元素小于目标值,搜索右半部分。如果中间元素大于目标值,搜索左半部分。重复这个过程直到找到目标值或确定目标值不存在。 + +二分查找的时间复杂度是 $O(\log n)$,比顺序查找的 $O(n)$ 更快。它的空间复杂度是 $O(1)$,因为它不需要额外的存储空间。 + +二分查找的思想是减而治之,通过排除不可能的区域来缩小搜索范围。这种方法在有序数据集中非常有效,可以显著提高搜索效率。 \ No newline at end of file diff --git a/Contents/01.Array/03.Array-Binary-Search/02.Array-Binary-Search-02.md b/docs/01_array/01_14_array_binary_search_02.md similarity index 92% rename from Contents/01.Array/03.Array-Binary-Search/02.Array-Binary-Search-02.md rename to docs/01_array/01_14_array_binary_search_02.md index 35dbd9b8..22407dc3 100644 --- a/Contents/01.Array/03.Array-Binary-Search/02.Array-Binary-Search-02.md +++ b/docs/01_array/01_14_array_binary_search_02.md @@ -234,6 +234,28 @@ class Solution: - **直接法**:因为判断语句是 `left <= right`,有时候要考虑返回是 $left$ 还是 $right$。循环体内有 3 个分支,并且一定有一个分支用于退出循环或者直接返回。这种思路适合解决简单题目。即要查找的元素性质简单,数组中都是非重复元素,且 `==`、`>`、`<` 的情况非常好写的时候。 - **排除法**:更加符合二分查找算法的减治思想。每次排除目标元素一定不存在的区间,达到减少问题规模的效果。然后在可能存在的区间内继续查找目标元素。这种思路适合解决复杂题目。比如查找一个数组里可能不存在的元素,找边界问题,可以使用这种思路。 +## 5. 总结 + +二分查找的细节问题包括区间开闭、mid取值、循环条件和搜索范围的选择。 + +**区间开闭**:建议使用左闭右闭区间,这样逻辑更简单,减少出错可能。 + +**mid取值**:通常使用 `mid = left + (right - left) // 2`,防止整型溢出。在某些情况下,如 `left = mid` 时,需向上取整,避免死循环。 + +**循环条件**: +- `left <= right`:适用于直接法,循环结束时若未找到目标,直接返回 $-1$。 +- `left < right`:适用于排除法,循环结束时需额外判断 `nums[left]` 是否为目标值。 + +**搜索范围选择**: +- 直接法:`left = mid + 1` 或 `right = mid - 1`,明确缩小范围。 +- 排除法:根据情况选择 `left = mid + 1` 或 `right = mid`,以及 `right = mid - 1` 或 `left = mid`,确保每次排除无效区间。 + +**两种思路**: +- **直接法**:简单直接,适合查找明确存在的元素。 +- **排除法**:更通用,适合复杂问题,如边界查找或不确定元素是否存在的情况。 + +掌握这些细节能更灵活地应用二分查找,避免常见错误。 + ## 参考资料 - 【博文】[Learning-Algorithms-with-Leetcode - 第 3.1 节 二分查找算法](https://www.yuque.com/liweiwei1419/algo/wkmtx4) diff --git a/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md b/docs/01_array/01_15_array_two_pointers.md similarity index 98% rename from Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md rename to docs/01_array/01_15_array_two_pointers.md index 4afd494c..7bdc22ae 100644 --- a/Contents/01.Array/04.Array-Two-Pointers/01.Array-Two-Pointers.md +++ b/docs/01_array/01_15_array_two_pointers.md @@ -491,6 +491,8 @@ class Solution: - **快慢指针**:两个指针方向相同。适合解决数组中的移动、删除元素问题,或者链表中的判断是否有环、长度问题。 - **分离双指针**:两个指针分别属于不同的数组 / 链表。适合解决有序数组合并,求交集、并集问题。 +双指针算法能有效降低时间复杂度,通常将暴力解法的 $O(n^2)$ 优化为 $O(n)$。关键在于利用数据的有序性或问题的单调性,通过指针移动排除不可能的情况,减少不必要的计算。掌握双指针技巧能高效解决许多数组和链表问题。 + ## 参考资料 - 【博文】[双指针算法之快慢指针 (yanyusoul.com)](https://yanyusoul.com/blog/cs/algorithms_fast-slow-points/) diff --git a/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md b/docs/01_array/01_16_array_sliding_window.md similarity index 68% rename from Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md rename to docs/01_array/01_16_array_sliding_window.md index 910d6d5f..fc42368c 100644 --- a/Contents/01.Array/05.Array-Sliding-Window/01.Array-Sliding-Window.md +++ b/docs/01_array/01_16_array_sliding_window.md @@ -257,162 +257,23 @@ class Solution: - **时间复杂度**:$O(n)$。 - **空间复杂度**:$O(| \sum |)$。其中 $\sum$ 表示字符集,$| \sum |$ 表示字符集的大小。 -### 4.4 长度最小的子数组 +## 5. 总结 -#### 4.4.1 题目链接 +滑动窗口算法用于解决数组或字符串中的连续子区间问题。 -- [209. 长度最小的子数组 - 力扣(LeetCode)](https://leetcode.cn/problems/minimum-size-subarray-sum/) +**固定长度窗口**:窗口大小不变。适用于需要检查固定长度子区间的问题,如计算特定长度子数组的平均值。 -#### 4.4.2 题目大意 +**不定长度窗口**:窗口大小可变。适用于寻找满足条件的最长或最短子区间,如无重复字符的最长子串。 -**描述**:给定一个只包含正整数的数组 $nums$ 和一个正整数 $target$。 +滑动窗口通过维护窗口的左右边界来减少重复计算,将时间复杂度从 $O(n^2)$ 优化到 $O(n)$。 -**要求**:找出数组中满足和大于等于 $target$ 的长度最小的「连续子数组」,并返回其长度。如果不存在符合条件的子数组,返回 $0$。 +使用滑动窗口时需要注意: +- 窗口的初始位置 +- 窗口扩展和收缩的条件 +- 如何更新答案 +- 边界情况的处理 -**说明**: - -- $1 \le target \le 10^9$。 -- $1 \le nums.length \le 10^5$。 -- $1 \le nums[i] \le 10^5$。 - -**示例**: - -- 示例 1: - -```python -输入:target = 7, nums = [2,3,1,2,4,3] -输出:2 -解释:子数组 [4,3] 是该条件下的长度最小的子数组。 -``` - -- 示例 2: - -```python -输入:target = 4, nums = [1,4,4] -输出:1 -``` - -#### 4.4.3 解题思路 - -##### 思路 1:滑动窗口(不定长度) - -最直接的做法是暴力枚举,时间复杂度为 $O(n^2)$。但是我们可以利用滑动窗口的方法,在时间复杂度为 $O(n)$ 的范围内解决问题。 - -用滑动窗口来记录连续子数组的和,设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口中的和刚好大于等于 $target$。 - -1. 一开始,$left$、$right$ 都指向 $0$。 -2. 向右移动 $right$,将最右侧元素加入当前窗口和 $window\underline{\hspace{0.5em}}sum$ 中。 -3. 如果 $window\underline{\hspace{0.5em}}sum \ge target$,则不断右移 $left$,缩小滑动窗口长度,并更新窗口和的最小值,直到 $window\underline{\hspace{0.5em}}sum < target$。 -4. 然后继续右移 $right$,直到 $right \ge len(nums)$ 结束。 -5. 输出窗口和的最小值作为答案。 - -##### 思路 1:代码 - -```python -class Solution: - def minSubArrayLen(self, target: int, nums: List[int]) -> int: - size = len(nums) - ans = size + 1 - left = 0 - right = 0 - window_sum = 0 - - while right < size: - window_sum += nums[right] - - while window_sum >= target: - ans = min(ans, right - left + 1) - window_sum -= nums[left] - left += 1 - - right += 1 - - return ans if ans != size + 1 else 0 -``` - -##### 思路 1:复杂度分析 - -- **时间复杂度**:$O(n)$。 -- **空间复杂度**:$O(1)$。 - -### 4.5 乘积小于K的子数组 - -#### 4.5.1 题目链接 - -- [713. 乘积小于K的子数组 - 力扣(LeetCode)](https://leetcode.cn/problems/subarray-product-less-than-k/) - -#### 4.5.2 题目大意 - -**描述**:给定一个正整数数组 $nums$ 和整数 $k$。 - -**要求**:找出该数组内乘积小于 $k$ 的连续的子数组的个数。 - -**说明**: - -- $1 \le nums.length \le 3 * 10^4$。 -- $1 \le nums[i] \le 1000$。 -- $0 \le k \le 10^6$。 - -**示例**: - -- 示例 1: - -```python -输入:nums = [10,5,2,6], k = 100 -输出:8 -解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。 -``` - -- 示例 2: - -```python -输入:nums = [1,2,3], k = 0 -输出:0 -``` - -#### 4.5.3 解题思路 - -##### 思路 1:滑动窗口(不定长度) - -1. 设定两个指针:$left$、$right$,分别指向滑动窗口的左右边界,保证窗口内所有数的乘积 $window\underline{\hspace{0.5em}}product$ 都小于 $k$。使用 $window\underline{\hspace{0.5em}}product$ 记录窗口中的乘积值,使用 $count$ 记录符合要求的子数组个数。 -2. 一开始,$left$、$right$ 都指向 $0$。 -3. 向右移动 $right$,将最右侧元素加入当前子数组乘积 $window\underline{\hspace{0.5em}}product$ 中。 -4. 如果 $window\underline{\hspace{0.5em}}product \ge k$,则不断右移 $left$,缩小滑动窗口长度,并更新当前乘积值 $window\underline{\hspace{0.5em}}product$ 直到 $window\underline{\hspace{0.5em}}product < k$。 -5. 记录累积答案个数加 $1$,继续右移 $right$,直到 $right \ge len(nums)$ 结束。 -6. 输出累积答案个数。 - -##### 思路 1:代码 - -```python -class Solution: - def numSubarrayProductLessThanK(self, nums: List[int], k: int) -> int: - if k <= 1: - return 0 - - size = len(nums) - left = 0 - right = 0 - window_product = 1 - - count = 0 - - while right < size: - window_product *= nums[right] - - while window_product >= k: - window_product /= nums[left] - left += 1 - - count += (right - left + 1) - right += 1 - - return count -``` - -##### 思路 1:复杂度分析 - -- **时间复杂度**:$O(n)$。 -- **空间复杂度**:$O(1)$。 +掌握滑动窗口算法能高效解决许多子区间相关问题。 ## 参考资料 diff --git a/docs/01_array/index.md b/docs/01_array/index.md new file mode 100644 index 00000000..36fcd3de --- /dev/null +++ b/docs/01_array/index.md @@ -0,0 +1,18 @@ +## 本章内容 + +- [1.1 数组基础](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_01_array_basic.md) +- [1.2 数组排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_02_array_sort.md) +- [1.3 数组冒泡排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_03_array_bubble_sort.md) +- [1.4 数组选择排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_04_array_selection_sort.md) +- [1.5 数组插入排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array//01_05_array_insertion_sort.md) +- [1.6 数组希尔排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_06_array_shell_sort.md) +- [1.7 数组归并排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_07_array_merge_sort.md) +- [1.8 数组快速排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_08_array_quick_sort.md) +- [1.9 数组堆排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_09_array_heap_sort.md) +- [1.10 数组计数排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_10_array_counting_sort.md) +- [1.11 数组桶排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_11_array_bucket_sort.md) +- [1.12 数组基数排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_12_array_radix_sort.md) +- [1.13 数组二分查找(一)](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_13_array_binary_search_01.md) +- [1.14 数组二分查找(二)](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_14_array_binary_search_02.md) +- [1.15 数组双指针](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_15_array_two_pointers.md) +- [1.16 数组滑动窗口](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_16_array_sliding_window.md) \ No newline at end of file diff --git a/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md b/docs/02_linked_list/02_01_linked_list_basic.md similarity index 99% rename from Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md rename to docs/02_linked_list/02_01_linked_list_basic.md index 3f71376d..9ac1ab5e 100644 --- a/Contents/02.Linked-List/01.Linked-List-Basic/01.Linked-List-Basic.md +++ b/docs/02_linked_list/02_01_linked_list_basic.md @@ -348,7 +348,7 @@ def removeInside(self, index): 到这里,有关链表的基础知识就介绍完了。下面进行一下总结。 -## 3. 链表总结 +## 3. 总结 链表是最基础、最简单的数据结构。**「链表」** 是实现线性表的链式存储结构的基础。它使用一组任意的存储单元(可以是连续的,也可以是不连续的),来存储一组具有相同类型的数据。 diff --git a/docs/02_linked_list/02_02_linked_list_sort.md b/docs/02_linked_list/02_02_linked_list_sort.md new file mode 100644 index 00000000..b566bb44 --- /dev/null +++ b/docs/02_linked_list/02_02_linked_list_sort.md @@ -0,0 +1,51 @@ +## 1. 链表排序简介 + +在数组排序中,常见的排序算法有:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序等。 + +而对于链表排序而言,因为链表不支持随机访问,访问链表后面的节点只能依靠 `next` 指针从头部顺序遍历,所以相对于数组排序问题来说,链表排序问题会更加复杂一点。 + +下面先来总结一下适合链表排序与不适合链表排序的算法: + +- 适合链表的排序算法:**冒泡排序**、**选择排序**、**插入排序**、**归并排序**、**快速排序**、**计数排序**、**桶排序**、**基数排序**。 +- 不适合链表的排序算法:**希尔排序**。 +- 可以用于链表排序但不建议使用的排序算法:**堆排序**。 + +> 希尔排序为什么不适合链表排序? + +**希尔排序**:希尔排序中经常涉及到对序列中第 $i + gap$ 的元素进行操作,其中 $gap$ 是希尔排序中当前的步长。而链表不支持随机访问的特性,导致这种操作不适合链表,因而希尔排序算法不适合进行链表排序。 + +> 为什么不建议使用堆排序? + +**堆排序**:堆排序所使用的最大堆 / 最小堆结构本质上是一棵完全二叉树。而完全二叉树适合采用顺序存储结构(数组)。因为数组存储的完全二叉树可以很方便的通过下标序号来确定父亲节点和孩子节点,并且可以极大限度的节省存储空间。 + +而链表用在存储完全二叉树的时候,因为不支持随机访问的特性,导致其寻找子节点和父亲节点会比较耗时,如果增加指向父亲节点的变量,又会浪费大量存储空间。所以堆排序算法不适合进行链表排序。 + +如果一定要对链表进行堆排序,则可以使用额外的数组空间表示堆结构。然后将链表中各个节点的值依次添加入堆结构中,对数组进行堆排序。排序后,再按照堆中元素顺序,依次建立链表节点,构建新的链表并返回新链表头节点。 + +> 需要用到额外的辅助空间进行排序的算法 + +刚才我们说到如果一定要对链表进行堆排序,则需要使用额外的数组空间。除此之外,计数排序、桶排序、基数排序都需要用到额外的数组空间。 + +接下来,我们将对适合链表排序的 8 种算法进行一一讲解。当然,这些排序算法不用完全掌握,重点是掌握 **「链表插入排序」**、**「链表归并排序」** 这两种排序算法。 + +## 2. 常见链表排序算法 + +链表排序常用的方法有冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、桶排序、基数排序。 + +- **链表冒泡排序**:每次比较相邻两个节点的值,大的往后移。重复多次,直到链表有序。时间复杂度 $O(n^2)$,空间复杂度 $O(1)$。 +- **链表选择排序**:每次从未排序部分找到最小的节点,和当前节点交换。重复操作,直到链表有序。时间复杂度 $O(n^2)$,空间复杂度 $O(1)$。 +- **链表插入排序**:每次取一个节点,插入到已排序部分的合适位置。不断重复,直到全部节点有序。时间复杂度 $O(n^2)$,空间复杂度 $O(1)$。 +- **链表归并排序**:把链表分成两半,递归排序,再合并。适合链表,时间复杂度 O$(n \log n)$,空间复杂度 $O(1)$。 +- **链表快速排序**:选一个基准值,把小于基准的放左边,大于的放右边。对两边递归排序。时间复杂度 $O(n \log n)$,空间复杂度 $O(1)$。 +- **链表计数排序**:先找最大最小值,用数组统计每个值出现次数,再按顺序重建链表。适合值域不大时用。时间复杂度 $O(n + k)$,空间复杂度 $O(k)$。 +- **链表桶排序**:把节点分到不同的桶里,每个桶内单独排序,再合并所有桶。适合数据分布均匀时用。时间复杂度 $O(n)$,空间复杂度 $O(n + m)$。 +- **链表基数排序**:按个位、十位、百位等分多轮,把节点分到不同的桶里,再合并。适合数字位数不多时用。时间复杂度 $O(n \times k)$,空间复杂度 $O(n + k)$。 + +## 参考资料 + +- 【文章】[单链表的冒泡排序_zhao_miao的博客 - CSDN博客](https://blog.csdn.net/zhao_miao/article/details/81708454) +- 【文章】[链表排序总结(全)(C++)- 阿祭儿 - CSDN博客](https://blog.csdn.net/qq_32523711/article/details/107402873) +- 【题解】[快排、冒泡、选择排序实现列表排序 - 排序链表 - 力扣](https://leetcode.cn/problems/sort-list/solution/kuai-pai-mou-pao-xuan-ze-pai-xu-shi-xian-ula7/) +- 【题解】[归并排序+快速排序 - 排序链表 - 力扣](https://leetcode.cn/problems/sort-list/solution/gui-bing-pai-xu-kuai-su-pai-xu-by-datacruiser/) +- 【题解】[排序链表(递归+迭代)详解 - 排序链表 - 力扣](https://leetcode.cn/problems/sort-list/solution/pai-xu-lian-biao-di-gui-die-dai-xiang-jie-by-cherr/) +- 【题解】[Sort List (归并排序链表) - 排序链表 - 力扣](https://leetcode.cn/problems/sort-list/solution/sort-list-gui-bing-pai-xu-lian-biao-by-jyd/) diff --git a/docs/02_linked_list/02_03_linked_list_bubble_sort.md b/docs/02_linked_list/02_03_linked_list_bubble_sort.md new file mode 100644 index 00000000..451e495b --- /dev/null +++ b/docs/02_linked_list/02_03_linked_list_bubble_sort.md @@ -0,0 +1,51 @@ +## 1. 链表冒泡排序算法描述 + +1. 使用三个指针 `node_i`、`node_j` 和 `tail`。其中 `node_i` 用于控制外循环次数,循环次数为链节点个数(链表长度)。`node_j` 和 `tail` 用于控制内循环次数和循环结束位置。 + +2. 排序开始前,将 `node_i` 、`node_j` 置于头节点位置。`tail` 指向链表末尾,即 `None`。 + +3. 比较链表中相邻两个元素 `node_j.val` 与 `node_j.next.val` 的值大小,如果 `node_j.val > node_j.next.val`,则值相互交换。否则不发生交换。然后向右移动 `node_j` 指针,直到 `node_j.next == tail` 时停止。 + +4. 一次循环之后,将 `tail` 移动到 `node_j` 所在位置。相当于 `tail` 向左移动了一位。此时 `tail` 节点右侧为链表中最大的链节点。 + +5. 然后移动 `node_i` 节点,并将 `node_j` 置于头节点位置。然后重复第 3、4 步操作。 +6. 直到 `node_i` 节点移动到链表末尾停止,排序结束。 +7. 返回链表的头节点 `head`。 + +## 2. 链表冒泡排序算法实现代码 + +```python +class Solution: + def bubbleSort(self, head: ListNode): + node_i = head + tail = None + # 外层循环次数为 链表节点个数 + while node_i: + node_j = head + while node_j and node_j.next != tail: + if node_j.val > node_j.next.val: + # 交换两个节点的值 + node_j.val, node_j.next.val = node_j.next.val, node_j.val + node_j = node_j.next + # 尾指针向前移动 1 位,此时尾指针右侧为排好序的链表 + tail = node_j + node_i = node_i.next + + return head + + def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: + return self.bubbleSort(head) +``` + +## 3. 链表冒泡排序算法复杂度分析 + +- **时间复杂度**:$O(n^2)$。 +- **空间复杂度**:$O(1)$。 + +## 4. 总结 + +链表冒泡排序使用三个指针进行操作。`node_i` 控制外层循环次数,`node_j` 和 `tail` 控制内层循环。每次比较相邻节点的值,需要交换时就交换。每次内循环结束后,最大的节点会移动到链表末尾。 + +这个算法的时间复杂度是 $O(n^2)$,因为需要进行两层循环。空间复杂度是 $O(1)$,因为只使用了固定数量的指针变量,没有使用额外空间。 + +链表冒泡排序适合小规模数据排序。对于大规模数据,其他排序算法可能更高效。实现时需要注意指针移动和节点交换的操作。 \ No newline at end of file diff --git a/docs/02_linked_list/02_04_linked_list_selection_sort.md b/docs/02_linked_list/02_04_linked_list_selection_sort.md new file mode 100644 index 00000000..47ce6c3e --- /dev/null +++ b/docs/02_linked_list/02_04_linked_list_selection_sort.md @@ -0,0 +1,40 @@ +## 1. 链表选择排序算法描述 + + 1. 使用两个指针 `node_i`、`node_j`。`node_i` 既可以用于控制外循环次数,又可以作为当前未排序链表的第一个链节点位置。 + 2. 使用 `min_node` 记录当前未排序链表中值最小的链节点。 + 3. 每一趟排序开始时,先令 `min_node = node_i`(即暂时假设链表中 `node_i` 节点为值最小的节点,经过比较后再确定最小值节点位置)。 + 4. 然后依次比较未排序链表中 `node_j.val` 与 `min_node.val` 的值大小。如果 `node_j.val < min_node.val`,则更新 `min_node` 为 `node_j`。 + 5. 这一趟排序结束时,未排序链表中最小值节点为 `min_node`,如果 `node_i != min_node`,则将 `node_i` 与 `min_node` 值进行交换。如果 `node_i == min_node`,则不用交换。 + 6. 排序结束后,继续向右移动 `node_i`,重复上述步骤,在剩余未排序链表中寻找最小的链节点,并与 `node_i` 进行比较和交换,直到 `node_i == None` 或者 `node_i.next == None` 时,停止排序。 + 7. 返回链表的头节点 `head`。 + +## 2. 链表选择排序实现代码 + + ```python + class Solution: + def sectionSort(self, head: ListNode): + node_i = head + # node_i 为当前未排序链表的第一个链节点 + while node_i and node_i.next: + # min_node 为未排序链表中的值最小节点 + min_node = node_i + node_j = node_i.next + while node_j: + if node_j.val < min_node.val: + min_node = node_j + node_j = node_j.next + # 交换值最小节点与未排序链表中第一个节点的值 + if node_i != min_node: + node_i.val, min_node.val = min_node.val, node_i.val + node_i = node_i.next + + return head + + def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: + return self.sectionSort(head) + ``` + +## 3. 链表选择排序算法复杂度分析 + + - **时间复杂度**:$O(n^2)$。 + - **空间复杂度**:$O(1)$。 diff --git a/docs/02_linked_list/02_05_linked_list_insertion_sort.md b/docs/02_linked_list/02_05_linked_list_insertion_sort.md new file mode 100644 index 00000000..097f8cd5 --- /dev/null +++ b/docs/02_linked_list/02_05_linked_list_insertion_sort.md @@ -0,0 +1,52 @@ + + +## 1. 链表插入排序算法描述 + + 1. 先使用哑节点 `dummy_head` 构造一个指向 `head` 的指针,使得可以从 `head` 开始遍历。 + 2. 维护 `sorted_list` 为链表的已排序部分的最后一个节点,初始时,`sorted_list = head`。 + 3. 维护 `prev` 为插入元素位置的前一个节点,维护 `cur` 为待插入元素。初始时,`prev = head`,`cur = head.next`。 + 4. 比较 `sorted_list` 和 `cur` 的节点值。 + + - 如果 `sorted_list.val <= cur.val`,说明 `cur` 应该插入到 `sorted_list` 之后,则将 `sorted_list` 后移一位。 + - 如果 `sorted_list.val > cur.val`,说明 `cur` 应该插入到 `head` 与 `sorted_list` 之间。则使用 `prev` 从 `head` 开始遍历,直到找到插入 `cur` 的位置的前一个节点位置。然后将 `cur` 插入。 + + 5. 令 `cur = sorted_list.next`,此时 `cur` 为下一个待插入元素。 + 6. 重复 4、5 步骤,直到 `cur` 遍历结束为空。返回 `dummy_head` 的下一个节点。 + +## 2. 链表插入排序实现代码 + + ```python +class Solution: + def insertionSort(self, head: ListNode): + if not head or not head.next: + return head + + dummy_head = ListNode(-1) + dummy_head.next = head + sorted_list = head + cur = head.next + + while cur: + if sorted_list.val <= cur.val: + # 将 cur 插入到 sorted_list 之后 + sorted_list = sorted_list.next + else: + prev = dummy_head + while prev.next.val <= cur.val: + prev = prev.next + # 将 cur 到链表中间 + sorted_list.next = cur.next + cur.next = prev.next + prev.next = cur + cur = sorted_list.next + + return dummy_head.next + + def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: + return self.insertionSort(head) + ``` + +## 3. 链表插入排序算法复杂度分析 + + - **时间复杂度**:$O(n^2)$。 + - **空间复杂度**:$O(1)$。 diff --git a/docs/02_linked_list/02_06_linked_list_merge_sort.md b/docs/02_linked_list/02_06_linked_list_merge_sort.md new file mode 100644 index 00000000..a8f49a21 --- /dev/null +++ b/docs/02_linked_list/02_06_linked_list_merge_sort.md @@ -0,0 +1,63 @@ +## 1. 链表归并排序算法描述 + + 1. **分割环节**:找到链表中心链节点,从中心节点将链表断开,并递归进行分割。 + 1. 使用快慢指针 `fast = head.next`、`slow = head`,让 `fast` 每次移动 `2` 步,`slow` 移动 `1` 步,移动到链表末尾,从而找到链表中心链节点,即 `slow`。 + 2. 从中心位置将链表从中心位置分为左右两个链表 `left_head` 和 `right_head`,并从中心位置将其断开,即 `slow.next = None`。 + 3. 对左右两个链表分别进行递归分割,直到每个链表中只包含一个链节点。 + 2. **归并环节**:将递归后的链表进行两两归并,完成一遍后每个子链表长度加倍。重复进行归并操作,直到得到完整的链表。 + 1. 使用哑节点 `dummy_head` 构造一个头节点,并使用 `cur` 指向 `dummy_head` 用于遍历。 + 2. 比较两个链表头节点 `left` 和 `right` 的值大小。将较小的头节点加入到合并后的链表中,并向后移动该链表的头节点指针。 + 3. 然后重复上一步操作,直到两个链表中出现链表为空的情况。 + 4. 将剩余链表插入到合并后的链表中。 + 5. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为合并后的头节点返回。 + +## 2. 链表归并排序实现代码 + + ```python +class Solution: + def merge(self, left, right): + # 归并环节 + dummy_head = ListNode(-1) + cur = dummy_head + while left and right: + if left.val <= right.val: + cur.next = left + left = left.next + else: + cur.next = right + right = right.next + cur = cur.next + + if left: + cur.next = left + elif right: + cur.next = right + + return dummy_head.next + + def mergeSort(self, head: ListNode): + # 分割环节 + if not head or not head.next: + return head + + # 快慢指针找到中心链节点 + slow, fast = head, head.next + while fast and fast.next: + slow = slow.next + fast = fast.next.next + + # 断开左右链节点 + left_head, right_head = head, slow.next + slow.next = None + + # 归并操作 + return self.merge(self.mergeSort(left_head), self.mergeSort(right_head)) + + def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: + return self.mergeSort(head) + ``` + +## 3. 链表归并排序算法复杂度分析 + + - **时间复杂度**:$O(n \times \log_2n)$。 + - **空间复杂度**:$O(1)$。 diff --git a/docs/02_linked_list/02_07_linked_list_quick_sort.md b/docs/02_linked_list/02_07_linked_list_quick_sort.md new file mode 100644 index 00000000..bf01a2c4 --- /dev/null +++ b/docs/02_linked_list/02_07_linked_list_quick_sort.md @@ -0,0 +1,49 @@ +## 1. 链表快速排序算法描述 + + 1. 从链表中找到一个基准值 `pivot`,这里以头节点为基准值。 + 2. 然后通过快慢指针 `node_i`、`node_j` 在链表中移动,使得 `node_i` 之前的节点值都小于基准值,`node_i` 之后的节点值都大于基准值。从而把数组拆分为左右两个部分。 + 3. 再对左右两个部分分别重复第二步,直到各个部分只有一个节点,则排序结束。 + +## 2. 链表快速排序实现代码 + + ```python +class Solution: + def partition(self, left: ListNode, right: ListNode): + # 左闭右开,区间没有元素或者只有一个元素,直接返回第一个节点 + if left == right or left.next == right: + return left + # 选择头节点为基准节点 + pivot = left.val + # 使用 node_i, node_j 双指针,保证 node_i 之前的节点值都小于基准节点值,node_i 与 node_j 之间的节点值都大于等于基准节点值 + node_i, node_j = left, left.next + + while node_j != right: + # 发现一个小与基准值的元素 + if node_j.val < pivot: + # 因为 node_i 之前节点都小于基准值,所以先将 node_i 向右移动一位(此时 node_i 节点值大于等于基准节点值) + node_i = node_i.next + # 将小于基准值的元素 node_j 与当前 node_i 换位,换位后可以保证 node_i 之前的节点都小于基准节点值 + node_i.val, node_j.val = node_j.val, node_i.val + node_j = node_j.next + # 将基准节点放到正确位置上 + node_i.val, left.val = left.val, node_i.val + return node_i + + def quickSort(self, left: ListNode, right: ListNode): + if left == right or left.next == right: + return left + pi = self.partition(left, right) + self.quickSort(left, pi) + self.quickSort(pi.next, right) + return left + + def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: + if not head or not head.next: + return head + return self.quickSort(head, None) + ``` + +## 3. 链表快速排序算法复杂度分析 + + - **时间复杂度**:$O(n \times \log_2n)$。 + - **空间复杂度**:$O(1)$。 diff --git a/docs/02_linked_list/02_08_linked_list_counting_sort.md b/docs/02_linked_list/02_08_linked_list_counting_sort.md new file mode 100644 index 00000000..c4ce4173 --- /dev/null +++ b/docs/02_linked_list/02_08_linked_list_counting_sort.md @@ -0,0 +1,54 @@ +## 1. 链表计数排序算法描述 + + 1. 使用 `cur` 指针遍历一遍链表。找出链表中最大值 `list_max` 和最小值 `list_min`。 + 2. 使用数组 `counts` 存储节点出现次数。 + 3. 再次使用 `cur` 指针遍历一遍链表。将链表中每个值为 `cur.val` 的节点出现次数,存入数组对应第 `cur.val - list_min` 项中。 + 4. 反向填充目标链表: + 1. 建立一个哑节点 `dummy_head`,作为链表的头节点。使用 `cur` 指针指向 `dummy_head`。 + 2. 从小到大遍历一遍数组 `counts`。对于每个 `counts[i] != 0` 的元素建立一个链节点,值为 `i + list_min`,将其插入到 `cur.next` 上。并向右移动 `cur`。同时 `counts[i] -= 1`。直到 `counts[i] == 0` 后继续向后遍历数组 `counts`。 + 5. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为新链表的头节点返回。 + +## 2. 链表计数排序代码实现 + + ```python +class Solution: + def countingSort(self, head: ListNode): + if not head: + return head + + # 找出链表中最大值 list_max 和最小值 list_min + list_min, list_max = float('inf'), float('-inf') + cur = head + while cur: + if cur.val < list_min: + list_min = cur.val + if cur.val > list_max: + list_max = cur.val + cur = cur.next + + size = list_max - list_min + 1 + counts = [0 for _ in range(size)] + + cur = head + while cur: + counts[cur.val - list_min] += 1 + cur = cur.next + + dummy_head = ListNode(-1) + cur = dummy_head + for i in range(size): + while counts[i]: + cur.next = ListNode(i + list_min) + counts[i] -= 1 + cur = cur.next + return dummy_head.next + + def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: + return self.countingSort(head) + ``` + +## 3. 链表计数排序算法复杂度分析 + + - **时间复杂度**:$O(n + k)$,其中 $k$ 代表待排序链表中所有元素的值域。 + - **空间复杂度**:$O(k)$。 + diff --git a/docs/02_linked_list/02_09_linked_list_bucket_sort.md b/docs/02_linked_list/02_09_linked_list_bucket_sort.md new file mode 100644 index 00000000..35309252 --- /dev/null +++ b/docs/02_linked_list/02_09_linked_list_bucket_sort.md @@ -0,0 +1,111 @@ +## 1. 链表桶排序算法描述 + + 1. 使用 `cur` 指针遍历一遍链表。找出链表中最大值 `list_max` 和最小值 `list_min`。 + 2. 通过 `(最大值 - 最小值) / 每个桶的大小` 计算出桶的个数,即 `bucket_count = (list_max - list_min) // bucket_size + 1` 个桶。 + 3. 定义数组 `buckets` 为桶,桶的个数为 `bucket_count` 个。 + 4. 使用 `cur` 指针再次遍历一遍链表,将每个元素装入对应的桶中。 + 5. 对每个桶内的元素单独排序,可以使用链表插入排序、链表归并排序、链表快速排序等算法。 + 6. 最后按照顺序将桶内的元素拼成新的链表,并返回。 + +## 2. 链表桶排序代码实现 + + ```python +class ListNode: + def __init__(self, val=0, next=None): + self.val = val + self.next = next + +class Solution: + # 将链表节点值 val 添加到对应桶 buckets[index] 中 + def insertion(self, buckets, index, val): + if not buckets[index]: + buckets[index] = ListNode(val) + return + + node = ListNode(val) + node.next = buckets[index] + buckets[index] = node + + # 归并环节 + def merge(self, left, right): + dummy_head = ListNode(-1) + cur = dummy_head + while left and right: + if left.val <= right.val: + cur.next = left + left = left.next + else: + cur.next = right + right = right.next + cur = cur.next + + if left: + cur.next = left + elif right: + cur.next = right + + return dummy_head.next + + def mergeSort(self, head: ListNode): + # 分割环节 + if not head or not head.next: + return head + + # 快慢指针找到中心链节点 + slow, fast = head, head.next + while fast and fast.next: + slow = slow.next + fast = fast.next.next + + # 断开左右链节点 + left_head, right_head = head, slow.next + slow.next = None + + # 归并操作 + return self.merge(self.mergeSort(left_head), self.mergeSort(right_head)) + + def bucketSort(self, head: ListNode, bucket_size=5): + if not head: + return head + + # 找出链表中最大值 list_max 和最小值 list_min + list_min, list_max = float('inf'), float('-inf') + cur = head + while cur: + if cur.val < list_min: + list_min = cur.val + if cur.val > list_max: + list_max = cur.val + cur = cur.next + + # 计算桶的个数,并定义桶 + bucket_count = (list_max - list_min) // bucket_size + 1 + buckets = [None for _ in range(bucket_count)] + + # 将链表节点值依次添加到对应桶中 + cur = head + while cur: + index = (cur.val - list_min) // bucket_size + self.insertion(buckets, index, cur.val) + cur = cur.next + + dummy_head = ListNode(-1) + cur = dummy_head + # 将元素依次出桶,并拼接成有序链表 + for bucket_head in buckets: + bucket_cur = self.mergeSort(bucket_head) + while bucket_cur: + cur.next = bucket_cur + cur = cur.next + bucket_cur = bucket_cur.next + + return dummy_head.next + + def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: + return self.bucketSort(head) + ``` + +## 3. 链表桶排序算法复杂度分析 + + - **时间复杂度**:$O(n)$。 + - **空间复杂度**:$O(n + m)$。$m$ 为桶的个数。 diff --git a/docs/02_linked_list/02_10_linked_list_radix_sort.md b/docs/02_linked_list/02_10_linked_list_radix_sort.md new file mode 100644 index 00000000..4cf8e73a --- /dev/null +++ b/docs/02_linked_list/02_10_linked_list_radix_sort.md @@ -0,0 +1,52 @@ +## 1. 链表基数排序算法描述 + + 1. 使用 `cur` 指针遍历链表,获取节点值位数最长的位数 `size`。 + 2. 从个位到高位遍历位数。因为 `0` ~ `9` 共有 `10` 位数字,所以建立 `10` 个桶。 + 3. 以每个节点对应位数上的数字为索引,将节点值放入到对应桶中。 + 4. 建立一个哑节点 `dummy_head`,作为链表的头节点。使用 `cur` 指针指向 `dummy_head`。 + 5. 将桶中元素依次取出,并根据元素值建立链表节点,并插入到新的链表后面。从而生成新的链表。 + 6. 之后依次以十位,百位,…,直到最大值元素的最高位处值为索引,放入到对应桶中,并生成新的链表,最终完成排序。 + 7. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为新链表的头节点返回。 + +## 2. 链表基数排序代码实现 + + ```python +class Solution: + def radixSort(self, head: ListNode): + # 计算位数最长的位数 + size = 0 + cur = head + while cur: + val_len = len(str(cur.val)) + if val_len > size: + size = val_len + cur = cur.next + + # 从个位到高位遍历位数 + for i in range(size): + buckets = [[] for _ in range(10)] + cur = head + while cur: + # 以每个节点对应位数上的数字为索引,将节点值放入到对应桶中 + buckets[cur.val // (10 ** i) % 10].append(cur.val) + cur = cur.next + + # 生成新的链表 + dummy_head = ListNode(-1) + cur = dummy_head + for bucket in buckets: + for num in bucket: + cur.next = ListNode(num) + cur = cur.next + head = dummy_head.next + + return head + + def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: + return self.radixSort(head) + ``` + +## 3. 链表基数排序算法复杂度分析 + + - **时间复杂度**:$O(n \times k)$。其中 $n$ 是待排序元素的个数,$k$ 是数字位数。$k$ 的大小取决于数字位的选择(十进制位、二进制位)和待排序元素所属数据类型全集的大小。 + - **空间复杂度**:$O(n + k)$。 diff --git a/Contents/02.Linked-List/03.Linked-List-Two-Pointers/01.Linked-List-Two-Pointers.md b/docs/02_linked_list/02_11_linked_list_two_pointers.md similarity index 100% rename from Contents/02.Linked-List/03.Linked-List-Two-Pointers/01.Linked-List-Two-Pointers.md rename to docs/02_linked_list/02_11_linked_list_two_pointers.md diff --git a/docs/02_linked_list/index.md b/docs/02_linked_list/index.md new file mode 100644 index 00000000..50ef2cfb --- /dev/null +++ b/docs/02_linked_list/index.md @@ -0,0 +1,13 @@ +## 本章内容 + +- [2.1 链表基础](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_01_linked_list_basic.md) +- [2.2 链表排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_02_linked_list_sort.md) +- [2.3 链表冒泡排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_03_linked_list_bubble_sort.md) +- [2.4 链表选择排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_04_linked_list_selection_sort.md) +- [2.5 链表插入排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_05_linked_list_insertion_sort.md) +- [2.6 链表归并排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_06_linked_list_merge_sort.md) +- [2.7 链表快速排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_07_linked_list_quick_sort.md) +- [2.8 链表计数排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_08_linked_list_counting_sort.md) +- [2.9 链表桶排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_09_linked_list_bucket_sort.md) +- [2.10 链表基数排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_10_linked_list_radix_sort.md) +- [2.11 链表双指针](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_11_linked_list_two_pointers.md) diff --git a/Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md b/docs/03_stack_queue_hash_table/03_01_stack_basic.md similarity index 100% rename from Contents/03.Stack/01.Stack-Basic/01.Stack-Basic.md rename to docs/03_stack_queue_hash_table/03_01_stack_basic.md diff --git a/Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md b/docs/03_stack_queue_hash_table/03_02_monotone_stack.md similarity index 100% rename from Contents/03.Stack/02.Monotone-Stack/01.Monotone-Stack.md rename to docs/03_stack_queue_hash_table/03_02_monotone_stack.md diff --git a/Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md b/docs/03_stack_queue_hash_table/03_03_queue_basic.md similarity index 100% rename from Contents/04.Queue/01.Queue-Basic/01.Queue-Basic.md rename to docs/03_stack_queue_hash_table/03_03_queue_basic.md diff --git a/Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md b/docs/03_stack_queue_hash_table/03_04_priority_queue.md similarity index 100% rename from Contents/04.Queue/02.Priority-Queue/01.Priority-Queue.md rename to docs/03_stack_queue_hash_table/03_04_priority_queue.md diff --git a/Contents/06.String/03.String-Multi-Pattern-Matching/04.AC-Automaton-List.md b/docs/03_stack_queue_hash_table/03_05_bidirectional_queue.md similarity index 100% rename from Contents/06.String/03.String-Multi-Pattern-Matching/04.AC-Automaton-List.md rename to docs/03_stack_queue_hash_table/03_05_bidirectional_queue.md diff --git a/Contents/05.Hash-Table/01.Hash-Table.md b/docs/03_stack_queue_hash_table/03_06_hash_table.md similarity index 100% rename from Contents/05.Hash-Table/01.Hash-Table.md rename to docs/03_stack_queue_hash_table/03_06_hash_table.md diff --git a/docs/03_stack_queue_hash_table/index.md b/docs/03_stack_queue_hash_table/index.md new file mode 100644 index 00000000..eef67253 --- /dev/null +++ b/docs/03_stack_queue_hash_table/index.md @@ -0,0 +1,8 @@ +## 本章内容 + +- [3.1 堆栈基础](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_01_stack_basic.md) +- [3.2 单调栈](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_02_monotone_stack.md) +- [3.3 队列基础](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_03_queue_basic.md) +- [3.4 优先队列](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_04_priority_queue.md) +- [3.5 双端队列](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_05_bidirectional_queue.md) +- [3.6 哈希表](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_06_hash_table.md) \ No newline at end of file diff --git a/Contents/06.String/01.String-Basic/01.String-Basic.md b/docs/04_string/04_01_string_basic.md similarity index 100% rename from Contents/06.String/01.String-Basic/01.String-Basic.md rename to docs/04_string/04_01_string_basic.md diff --git a/Contents/06.String/03.String-Multi-Pattern-Matching/05.Suffix-Array.md b/docs/04_string/04_02_string_single_pattern_matching.md similarity index 100% rename from Contents/06.String/03.String-Multi-Pattern-Matching/05.Suffix-Array.md rename to docs/04_string/04_02_string_single_pattern_matching.md diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md b/docs/04_string/04_03_string_brute_force.md similarity index 100% rename from Contents/06.String/02.String-Single-Pattern-Matching/01.String-Brute-Force.md rename to docs/04_string/04_03_string_brute_force.md diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md b/docs/04_string/04_04_string_rabin_karp.md similarity index 100% rename from Contents/06.String/02.String-Single-Pattern-Matching/02.String-Rabin-Karp.md rename to docs/04_string/04_04_string_rabin_karp.md diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md b/docs/04_string/04_05_string_kmp.md similarity index 100% rename from Contents/06.String/02.String-Single-Pattern-Matching/03.String-KMP.md rename to docs/04_string/04_05_string_kmp.md diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md b/docs/04_string/04_06_string_boyer_moore.md similarity index 100% rename from Contents/06.String/02.String-Single-Pattern-Matching/04.String-Boyer-Moore.md rename to docs/04_string/04_06_string_boyer_moore.md diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md b/docs/04_string/04_07_string_horspool.md similarity index 100% rename from Contents/06.String/02.String-Single-Pattern-Matching/05.String-Horspool.md rename to docs/04_string/04_07_string_horspool.md diff --git a/Contents/06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md b/docs/04_string/04_08_string_sunday.md similarity index 100% rename from Contents/06.String/02.String-Single-Pattern-Matching/06.String-Sunday.md rename to docs/04_string/04_08_string_sunday.md diff --git a/docs/04_string/04_09_string_multi_pattern_matching.md b/docs/04_string/04_09_string_multi_pattern_matching.md new file mode 100644 index 00000000..7092fe67 --- /dev/null +++ b/docs/04_string/04_09_string_multi_pattern_matching.md @@ -0,0 +1,82 @@ +# 多模式串匹配 + +## 1. 多模式串匹配的定义 + +多模式串匹配(Multiple Pattern Matching)是指在文本串中同时查找多个模式串的问题。与单模式串匹配(如 KMP 算法)不同,多模式串匹配需要在一个文本串中同时查找多个模式串的所有出现位置。 + +## 2. 主要算法介绍 + +### 2.1 字典树(Trie) + +字典树是一种树形数据结构,用于高效地存储和检索字符串集合。它的主要特点是: + +- 每个节点代表一个字符 +- 从根节点到某个节点的路径上的字符连接起来,就是该节点对应的字符串 +- 每个节点的所有子节点包含的字符都不相同 + +字典树的主要应用: +- 字符串检索 +- 词频统计 +- 字符串排序 +- 前缀匹配 + +### 2.2 AC 自动机(Aho-Corasick) + +AC 自动机是在字典树的基础上,结合了 KMP 算法的思想,用于多模式串匹配的算法。它的主要特点是: + +- 基于字典树构建 +- 添加了失败指针(fail pointer),类似于 KMP 的 next 数组 +- 可以同时匹配多个模式串 +- 时间复杂度为 O(n + k),其中 n 是文本串长度,k 是所有模式串的总长度 + +AC 自动机的主要应用: +- 敏感词过滤 +- 病毒特征码匹配 +- 文本分析 + +### 2.3 后缀数组(Suffix Array) + +后缀数组是一种数据结构,用于高效地处理字符串的后缀。它的主要特点是: + +- 将字符串的所有后缀按字典序排序 +- 可以快速查找子串 +- 支持最长公共前缀(LCP)查询 + +后缀数组的主要应用: +- 字符串匹配 +- 最长重复子串 +- 最长公共子串 +- 字符串压缩 + +## 3. 算法比较 + +| 算法 | 预处理时间复杂度 | 匹配时间复杂度 | 空间复杂度 | 适用场景 | +|------|----------------|--------------|------------|----------| +| 字典树 | O(k) | O(m) | O(k) | 前缀匹配、字符串集合操作 | +| AC 自动机 | O(k) | O(n + k) | O(k) | 多模式串精确匹配 | +| 后缀数组 | O(n log n) | O(m + log n) | O(n) | 子串匹配、后缀操作 | + +其中: +- n 为文本串长度 +- m 为模式串长度 +- k 为所有模式串的总长度 + +## 4. 应用场景 + +1. 文本搜索和过滤 + - 敏感词过滤 + - 关键词提取 + - 文本分类 + +2. 生物信息学 + - DNA 序列匹配 + - 蛋白质序列分析 + +3. 网络安全 + - 入侵检测 + - 病毒特征码匹配 + +4. 自然语言处理 + - 分词 + - 命名实体识别 + - 文本摘要 diff --git a/Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md b/docs/04_string/04_10_trie.md similarity index 100% rename from Contents/06.String/03.String-Multi-Pattern-Matching/01.Trie.md rename to docs/04_string/04_10_trie.md diff --git a/Contents/06.String/03.String-Multi-Pattern-Matching/03.AC-Automaton.md b/docs/04_string/04_11_ac_automaton.md similarity index 100% rename from Contents/06.String/03.String-Multi-Pattern-Matching/03.AC-Automaton.md rename to docs/04_string/04_11_ac_automaton.md diff --git a/Contents/06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md b/docs/04_string/04_12_suffix_array.md similarity index 100% rename from Contents/06.String/03.String-Multi-Pattern-Matching/06.Suffix-Array-List.md rename to docs/04_string/04_12_suffix_array.md diff --git a/docs/04_string/index.md b/docs/04_string/index.md new file mode 100644 index 00000000..dc59f620 --- /dev/null +++ b/docs/04_string/index.md @@ -0,0 +1,14 @@ +## 本章内容 + +- [4.1 字符串基础](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_01_string_basic.md) +- [4.2 单模式串匹配](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_02_string_single_pattern_matching.md) +- [4.3 Brute Force 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_03_string_brute_force.md) +- [4.4 Rabin Karp 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_04_string_rabin_karp.md) +- [4.5 KMP 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_05_string_kmp.md) +- [4.6 Boyer Moore 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_06_string_boyer_moore.md) +- [4.7 Horspool 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_07_string_horspool.md) +- [4.8 Sunday 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_08_string_sunday.md) +- [4.9 多模式串匹配](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_09_string_multi_pattern_matching.md) +- [4.10 字典树](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_10_trie.md) +- [4.11 AC 自动机](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_11_ac_automaton.md) +- [4.12 后缀数组](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_12_suffix_array.md) diff --git a/Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md b/docs/05_tree/05_01_tree_basic.md similarity index 100% rename from Contents/07.Tree/01.Binary-Tree/01.Binary-Tree-Basic.md rename to docs/05_tree/05_01_tree_basic.md diff --git a/Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md b/docs/05_tree/05_02_binary_tree_traverse.md similarity index 100% rename from Contents/07.Tree/01.Binary-Tree/02.Binary-Tree-Traverse.md rename to docs/05_tree/05_02_binary_tree_traverse.md diff --git a/Contents/07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md b/docs/05_tree/05_03_binary_tree_reduction.md similarity index 100% rename from Contents/07.Tree/01.Binary-Tree/04.Binary-Tree-Reduction.md rename to docs/05_tree/05_03_binary_tree_reduction.md diff --git a/Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md b/docs/05_tree/05_04_binary_search_tree.md similarity index 100% rename from Contents/07.Tree/02.Binary-Search-Tree/01.Binary-Search-Tree.md rename to docs/05_tree/05_04_binary_search_tree.md diff --git a/Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md b/docs/05_tree/05_05_segment_tree_01.md similarity index 69% rename from Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md rename to docs/05_tree/05_05_segment_tree_01.md index 26216110..afe7c1b3 100644 --- a/Contents/07.Tree/03.Segment-Tree/01.Segment-Tree.md +++ b/docs/05_tree/05_05_segment_tree_01.md @@ -325,195 +325,6 @@ class SegmentTree: self.tree[index].lazy_tag = None # 更新当前节点的懒惰标记 ``` -## 4. 线段树的常见题型 - -### 4.1 RMQ 问题 - -> **RMQ 问题**:Range Maximum / Minimum Query 的缩写,指的是对于长度为 $n$ 的数组序列 $nums$,回答若干个询问问题 `RMQ(nums, q_left, q_right)`,要求返回数组序列 $nums$ 在区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 中的最大(最小)值。也就是求区间最大(最小)值问题。 - -假设查询次数为 $q$,则使用朴素算法解决 RMQ 问题的时间复杂度为 $O(q \times n)$。而使用线段树解决 RMQ 问题的时间复杂度为 $O(q \times n) \sim Q(q \times \log_2n)$ 之间。 - -### 4.2 单点更新,区间查询问题 - -> **单点更新,区间查询问题**: -> -> 1. 修改某一个元素的值。 -> 2. 查询区间为 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 的区间值。 - -这类问题直接使用「3.1 线段树的单点更新」和「3.2 线段树的区间查询」即可解决。 - -### 4.3 区间更新,区间查询问题 - -> **区间更新,区间查询问题**: -> -> 1. 修改某一个区间的值。 -> 2. 查询区间为 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 的区间值。 - -这类问题直接使用「3.3 线段树的区间更新」和「3.2 线段树的区间查询」即可解决。 - -### 4.4 区间合并问题 - -> **区间合并,区间查询问题**: -> -> 1. 修改某一个区间的值。 -> 2. 查询区间为 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 中满足条件的连续最长区间值。 - -这类问题需要在「3.3 线段树的区间更新」和「3.2 线段树的区间查询」的基础上增加变动,在进行向上更新时需要对左右子节点的区间进行合并。 - -### 4.5 扫描线问题 - -> **扫描线问题**:虚拟扫描线或扫描面来解决欧几里德空间中的各种问题,一般被用来解决图形面积,周长等问题。 -> -> 主要思想为:想象一条线(通常是一条垂直线)在平面上扫过或移动,在某些点停止。几何操作仅限于几何对象,无论何时停止,它们都与扫描线相交或紧邻扫描线,并且一旦线穿过所有对象,就可以获得完整的解。 - -这类问题通常坐标跨度很大,需要先对每条扫描线的坐标进行离散化处理,将 $y$ 坐标映射到 $0, 1, 2, ...$ 中。然后将每条竖线的端点作为区间范围,使用线段树存储每条竖线的信息($x$ 坐标、是左竖线还是右竖线等),然后再进行区间合并,并统计相关信息。 - -## 5. 线段树的拓展 - -### 5.1 动态开点线段树 - -在有些情况下,线段树需要维护的区间很大(例如 $[1, 10^9]$),在实际中用到的节点却很少。 - -如果使用之前数组形式实现线段树,则需要 $4 \times n$ 大小的空间,空间消耗有点过大了。 - -这时候我们就可以使用动态开点的思想来构建线段树。 - -动态开点线段树的算法思想如下: - -- 开始时只建立一个根节点,代表整个区间。 -- 当需要访问线段树的某棵子树(某个子区间)时,再建立代表这个子区间的节点。 - -动态开点线段树实现代码如下: - -```python -# 线段树的节点类 -class TreeNode: - def __init__(self, left=-1, right=-1, val=0): - self.left = left # 区间左边界 - self.right = right # 区间右边界 - self.mid = left + (right - left) // 2 - self.leftNode = None # 区间左节点 - self.rightNode = None # 区间右节点 - self.val = val # 节点值(区间值) - self.lazy_tag = None # 区间问题的延迟更新标记 - - -# 线段树类 -class SegmentTree: - def __init__(self, function): - self.tree = TreeNode(0, int(1e9)) - self.function = function # function 是一个函数,左右区间的聚合方法 - - # 向上更新 node 节点区间值,节点的区间值等于该节点左右子节点元素值的聚合计算结果 - def __pushup(self, node): - leftNode = node.leftNode - rightNode = node.rightNode - if leftNode and rightNode: - node.val = self.function(leftNode.val, rightNode.val) - - # 单点更新,将 nums[i] 更改为 val - def update_point(self, i, val): - self.__update_point(i, val, self.tree) - - # 单点更新,将 nums[i] 更改为 val。node 节点的区间为 [node.left, node.right] - def __update_point(self, i, val, node): - if node.left == node.right: - node.val = val # 叶子节点,节点值修改为 val - return - - if i <= node.mid: # 在左子树中更新节点值 - if not node.leftNode: - node.leftNode = TreeNode(node.left, node.mid) - self.__update_point(i, val, node.leftNode) - else: # 在右子树中更新节点值 - if not node.rightNode: - node.rightNode = TreeNode(node.mid + 1, node.right) - self.__update_point(i, val, node.rightNode) - self.__pushup(node) # 向上更新节点的区间值 - - # 区间查询,查询区间为 [q_left, q_right] 的区间值 - def query_interval(self, q_left, q_right): - return self.__query_interval(q_left, q_right, self.tree) - - # 区间查询,在线段树的 [left, right] 区间范围中搜索区间为 [q_left, q_right] 的区间值 - def __query_interval(self, q_left, q_right, node): - if node.left >= q_left and node.right <= q_right: # 节点所在区间被 [q_left, q_right] 所覆盖 - return node.val # 直接返回节点值 - if node.right < q_left or node.left > q_right: # 节点所在区间与 [q_left, q_right] 无关 - return 0 - - self.__pushdown(node) # 向下更新节点所在区间的左右子节点的值和懒惰标记 - - res_left = 0 # 左子树查询结果 - res_right = 0 # 右子树查询结果 - if q_left <= node.mid: # 在左子树中查询 - if not node.leftNode: - node.leftNode = TreeNode(node.left, node.mid) - res_left = self.__query_interval(q_left, q_right, node.leftNode) - if q_right > node.mid: # 在右子树中查询 - if not node.rightNode: - node.rightNode = TreeNode(node.mid + 1, node.right) - res_right = self.__query_interval(q_left, q_right, node.rightNode) - return self.function(res_left, res_right) # 返回左右子树元素值的聚合计算结果 - - # 区间更新,将区间为 [q_left, q_right] 上的元素值修改为 val - def update_interval(self, q_left, q_right, val): - self.__update_interval(q_left, q_right, val, self.tree) - - # 区间更新 - def __update_interval(self, q_left, q_right, val, node): - if node.left >= q_left and node.right <= q_right: # 节点所在区间被 [q_left, q_right] 所覆盖 - if node.lazy_tag: - node.lazy_tag += val # 将当前节点的延迟标记增加 val - else: - node.lazy_tag = val # 将当前节点的延迟标记增加 val - interval_size = (node.right - node.left + 1) # 当前节点所在区间大小 - node.val += val * interval_size # 当前节点所在区间每个元素值增加 val - return - if node.right < q_left or node.left > q_right: # 节点所在区间与 [q_left, q_right] 无关 - return 0 - - self.__pushdown(node) # 向下更新节点所在区间的左右子节点的值和懒惰标记 - - if q_left <= node.mid: # 在左子树中更新区间值 - if not node.leftNode: - node.leftNode = TreeNode(node.left, node.mid) - self.__update_interval(q_left, q_right, val, node.leftNode) - if q_right > node.mid: # 在右子树中更新区间值 - if not node.rightNode: - node.rightNode = TreeNode(node.mid + 1, node.right) - self.__update_interval(q_left, q_right, val, node.rightNode) - - self.__pushup(node) - - # 向下更新 node 节点所在区间的左右子节点的值和懒惰标记 - def __pushdown(self, node): - lazy_tag = node.lazy_tag - if not node.lazy_tag: - return - - if not node.leftNode: - node.leftNode = TreeNode(node.left, node.mid) - if not node.rightNode: - node.rightNode = TreeNode(node.mid + 1, node.right) - - if node.leftNode.lazy_tag: - node.leftNode.lazy_tag += lazy_tag # 更新左子节点懒惰标记 - else: - node.leftNode.lazy_tag = lazy_tag # 更新左子节点懒惰标记 - left_size = (node.leftNode.right - node.leftNode.left + 1) - node.leftNode.val += lazy_tag * left_size # 左子节点每个元素值增加 lazy_tag - - if node.rightNode.lazy_tag: - node.rightNode.lazy_tag += lazy_tag # 更新右子节点懒惰标记 - else: - node.rightNode.lazy_tag = lazy_tag # 更新右子节点懒惰标记 - right_size = (node.rightNode.right - node.rightNode.left + 1) - node.rightNode.val += lazy_tag * right_size # 右子节点每个元素值增加 lazy_tag - - node.lazy_tag = None # 更新当前节点的懒惰标记 -``` - ## 参考资料 - 【书籍】ACM-ICPC 程序设计系列 - 算法设计与实现 - 陈宇 吴昊 主编 diff --git a/docs/05_tree/05_06_segment_tree_02.md b/docs/05_tree/05_06_segment_tree_02.md new file mode 100644 index 00000000..04c6fa98 --- /dev/null +++ b/docs/05_tree/05_06_segment_tree_02.md @@ -0,0 +1,199 @@ +## 1. 线段树的常见题型 + +### 1.1 RMQ 问题 + +> **RMQ 问题**:Range Maximum / Minimum Query 的缩写,指的是对于长度为 $n$ 的数组序列 $nums$,回答若干个询问问题 `RMQ(nums, q_left, q_right)`,要求返回数组序列 $nums$ 在区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 中的最大(最小)值。也就是求区间最大(最小)值问题。 + +假设查询次数为 $q$,则使用朴素算法解决 RMQ 问题的时间复杂度为 $O(q \times n)$。而使用线段树解决 RMQ 问题的时间复杂度为 $O(q \times n) \sim Q(q \times \log_2n)$ 之间。 + +### 1.2 单点更新,区间查询问题 + +> **单点更新,区间查询问题**: +> +> 1. 修改某一个元素的值。 +> 2. 查询区间为 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 的区间值。 + +这类问题直接使用「3.1 线段树的单点更新」和「3.2 线段树的区间查询」即可解决。 + +### 1.3 区间更新,区间查询问题 + +> **区间更新,区间查询问题**: +> +> 1. 修改某一个区间的值。 +> 2. 查询区间为 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 的区间值。 + +这类问题直接使用「3.3 线段树的区间更新」和「3.2 线段树的区间查询」即可解决。 + +### 1.4 区间合并问题 + +> **区间合并,区间查询问题**: +> +> 1. 修改某一个区间的值。 +> 2. 查询区间为 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 中满足条件的连续最长区间值。 + +这类问题需要在「3.3 线段树的区间更新」和「3.2 线段树的区间查询」的基础上增加变动,在进行向上更新时需要对左右子节点的区间进行合并。 + +### 1.5 扫描线问题 + +> **扫描线问题**:虚拟扫描线或扫描面来解决欧几里德空间中的各种问题,一般被用来解决图形面积,周长等问题。 +> +> 主要思想为:想象一条线(通常是一条垂直线)在平面上扫过或移动,在某些点停止。几何操作仅限于几何对象,无论何时停止,它们都与扫描线相交或紧邻扫描线,并且一旦线穿过所有对象,就可以获得完整的解。 + +这类问题通常坐标跨度很大,需要先对每条扫描线的坐标进行离散化处理,将 $y$ 坐标映射到 $0, 1, 2, ...$ 中。然后将每条竖线的端点作为区间范围,使用线段树存储每条竖线的信息($x$ 坐标、是左竖线还是右竖线等),然后再进行区间合并,并统计相关信息。 + +## 2. 线段树的拓展 + +### 2.1 动态开点线段树 + +在有些情况下,线段树需要维护的区间很大(例如 $[1, 10^9]$),在实际中用到的节点却很少。 + +如果使用之前数组形式实现线段树,则需要 $4 \times n$ 大小的空间,空间消耗有点过大了。 + +这时候我们就可以使用动态开点的思想来构建线段树。 + +动态开点线段树的算法思想如下: + +- 开始时只建立一个根节点,代表整个区间。 +- 当需要访问线段树的某棵子树(某个子区间)时,再建立代表这个子区间的节点。 + +动态开点线段树实现代码如下: + +```python +# 线段树的节点类 +class TreeNode: + def __init__(self, left=-1, right=-1, val=0): + self.left = left # 区间左边界 + self.right = right # 区间右边界 + self.mid = left + (right - left) // 2 + self.leftNode = None # 区间左节点 + self.rightNode = None # 区间右节点 + self.val = val # 节点值(区间值) + self.lazy_tag = None # 区间问题的延迟更新标记 + + +# 线段树类 +class SegmentTree: + def __init__(self, function): + self.tree = TreeNode(0, int(1e9)) + self.function = function # function 是一个函数,左右区间的聚合方法 + + # 向上更新 node 节点区间值,节点的区间值等于该节点左右子节点元素值的聚合计算结果 + def __pushup(self, node): + leftNode = node.leftNode + rightNode = node.rightNode + if leftNode and rightNode: + node.val = self.function(leftNode.val, rightNode.val) + + # 单点更新,将 nums[i] 更改为 val + def update_point(self, i, val): + self.__update_point(i, val, self.tree) + + # 单点更新,将 nums[i] 更改为 val。node 节点的区间为 [node.left, node.right] + def __update_point(self, i, val, node): + if node.left == node.right: + node.val = val # 叶子节点,节点值修改为 val + return + + if i <= node.mid: # 在左子树中更新节点值 + if not node.leftNode: + node.leftNode = TreeNode(node.left, node.mid) + self.__update_point(i, val, node.leftNode) + else: # 在右子树中更新节点值 + if not node.rightNode: + node.rightNode = TreeNode(node.mid + 1, node.right) + self.__update_point(i, val, node.rightNode) + self.__pushup(node) # 向上更新节点的区间值 + + # 区间查询,查询区间为 [q_left, q_right] 的区间值 + def query_interval(self, q_left, q_right): + return self.__query_interval(q_left, q_right, self.tree) + + # 区间查询,在线段树的 [left, right] 区间范围中搜索区间为 [q_left, q_right] 的区间值 + def __query_interval(self, q_left, q_right, node): + if node.left >= q_left and node.right <= q_right: # 节点所在区间被 [q_left, q_right] 所覆盖 + return node.val # 直接返回节点值 + if node.right < q_left or node.left > q_right: # 节点所在区间与 [q_left, q_right] 无关 + return 0 + + self.__pushdown(node) # 向下更新节点所在区间的左右子节点的值和懒惰标记 + + res_left = 0 # 左子树查询结果 + res_right = 0 # 右子树查询结果 + if q_left <= node.mid: # 在左子树中查询 + if not node.leftNode: + node.leftNode = TreeNode(node.left, node.mid) + res_left = self.__query_interval(q_left, q_right, node.leftNode) + if q_right > node.mid: # 在右子树中查询 + if not node.rightNode: + node.rightNode = TreeNode(node.mid + 1, node.right) + res_right = self.__query_interval(q_left, q_right, node.rightNode) + return self.function(res_left, res_right) # 返回左右子树元素值的聚合计算结果 + + # 区间更新,将区间为 [q_left, q_right] 上的元素值修改为 val + def update_interval(self, q_left, q_right, val): + self.__update_interval(q_left, q_right, val, self.tree) + + # 区间更新 + def __update_interval(self, q_left, q_right, val, node): + if node.left >= q_left and node.right <= q_right: # 节点所在区间被 [q_left, q_right] 所覆盖 + if node.lazy_tag: + node.lazy_tag += val # 将当前节点的延迟标记增加 val + else: + node.lazy_tag = val # 将当前节点的延迟标记增加 val + interval_size = (node.right - node.left + 1) # 当前节点所在区间大小 + node.val += val * interval_size # 当前节点所在区间每个元素值增加 val + return + if node.right < q_left or node.left > q_right: # 节点所在区间与 [q_left, q_right] 无关 + return 0 + + self.__pushdown(node) # 向下更新节点所在区间的左右子节点的值和懒惰标记 + + if q_left <= node.mid: # 在左子树中更新区间值 + if not node.leftNode: + node.leftNode = TreeNode(node.left, node.mid) + self.__update_interval(q_left, q_right, val, node.leftNode) + if q_right > node.mid: # 在右子树中更新区间值 + if not node.rightNode: + node.rightNode = TreeNode(node.mid + 1, node.right) + self.__update_interval(q_left, q_right, val, node.rightNode) + + self.__pushup(node) + + # 向下更新 node 节点所在区间的左右子节点的值和懒惰标记 + def __pushdown(self, node): + lazy_tag = node.lazy_tag + if not node.lazy_tag: + return + + if not node.leftNode: + node.leftNode = TreeNode(node.left, node.mid) + if not node.rightNode: + node.rightNode = TreeNode(node.mid + 1, node.right) + + if node.leftNode.lazy_tag: + node.leftNode.lazy_tag += lazy_tag # 更新左子节点懒惰标记 + else: + node.leftNode.lazy_tag = lazy_tag # 更新左子节点懒惰标记 + left_size = (node.leftNode.right - node.leftNode.left + 1) + node.leftNode.val += lazy_tag * left_size # 左子节点每个元素值增加 lazy_tag + + if node.rightNode.lazy_tag: + node.rightNode.lazy_tag += lazy_tag # 更新右子节点懒惰标记 + else: + node.rightNode.lazy_tag = lazy_tag # 更新右子节点懒惰标记 + right_size = (node.rightNode.right - node.rightNode.left + 1) + node.rightNode.val += lazy_tag * right_size # 右子节点每个元素值增加 lazy_tag + + node.lazy_tag = None # 更新当前节点的懒惰标记 +``` + +## 参考资料 + +- 【书籍】ACM-ICPC 程序设计系列 - 算法设计与实现 - 陈宇 吴昊 主编 +- 【书籍】算法训练营 陈小玉 著 +- 【博文】[史上最详细的线段树教程 - 知乎](https://zhuanlan.zhihu.com/p/34150142) +- 【博文】[线段树 Segment Tree 实战 - halfrost](https://halfrost.com/segment_tree/) +- 【博文】[线段树 - OI Wiki](https://oi-wiki.org/ds/seg/) +- 【博文】[线段树的 python 实现 - 年糕的博客 - CSDN博客](https://blog.csdn.net/qq_33935895/article/details/102806357) +- 【博文】[线段树 从入门到进阶 - Dijkstra·Liu - 博客园](https://www.cnblogs.com/dijkstra2003/p/9676729.html) + diff --git a/Contents/07.Tree/04.Binary-Indexed-Tree/01.Binary-Indexed-Tree.md b/docs/05_tree/05_07_binary_indexed_tree.md similarity index 100% rename from Contents/07.Tree/04.Binary-Indexed-Tree/01.Binary-Indexed-Tree.md rename to docs/05_tree/05_07_binary_indexed_tree.md diff --git a/Contents/07.Tree/05.Union-Find/01.Union-Find.md b/docs/05_tree/05_08_union_find.md similarity index 100% rename from Contents/07.Tree/05.Union-Find/01.Union-Find.md rename to docs/05_tree/05_08_union_find.md diff --git a/docs/05_tree/index.md b/docs/05_tree/index.md new file mode 100644 index 00000000..9ddb2c7a --- /dev/null +++ b/docs/05_tree/index.md @@ -0,0 +1,10 @@ +## 本章内容 + +- [5.1 树与二叉树基础](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_01_tree_basic.md) +- [5.2 二叉树的遍历](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_02_binary_tree_traverse.md) +- [5.3 二叉树的还原](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_03_binary_tree_reduction.md) +- [5.4 二叉搜索树](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_04_binary_search_tree.md) +- [5.5 线段树(一)](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_05_segment_tree_01.md) +- [5.6 线段树(二)](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_06_segment_tree_02.md) +- [5.7 树状数组](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_07_binary_indexed_tree.md) +- [5.8 并查集](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_08_union_find.md) \ No newline at end of file diff --git a/Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md b/docs/06_graph/06_01_graph_basic.md similarity index 100% rename from Contents/08.Graph/01.Graph-Basic/01.Graph-Basic.md rename to docs/06_graph/06_01_graph_basic.md diff --git a/Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md b/docs/06_graph/06_02_graph_structure.md similarity index 100% rename from Contents/08.Graph/01.Graph-Basic/02.Graph-Structure.md rename to docs/06_graph/06_02_graph_structure.md diff --git a/Contents/08.Graph/02.Graph-Traversal/01.Graph-DFS.md b/docs/06_graph/06_03_graph_dfs.md similarity index 100% rename from Contents/08.Graph/02.Graph-Traversal/01.Graph-DFS.md rename to docs/06_graph/06_03_graph_dfs.md diff --git a/Contents/08.Graph/02.Graph-Traversal/03.Graph-BFS.md b/docs/06_graph/06_04_graph_bfs.md similarity index 100% rename from Contents/08.Graph/02.Graph-Traversal/03.Graph-BFS.md rename to docs/06_graph/06_04_graph_bfs.md diff --git a/Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md b/docs/06_graph/06_05_graph_topological_sorting.md similarity index 100% rename from Contents/08.Graph/02.Graph-Traversal/05.Graph-Topological-Sorting.md rename to docs/06_graph/06_05_graph_topological_sorting.md diff --git a/Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md b/docs/06_graph/06_06_graph_minimum_spanning_tree.md similarity index 100% rename from Contents/08.Graph/03.Graph-Spanning-Tree/01.Graph-Minimum-Spanning-Tree.md rename to docs/06_graph/06_06_graph_minimum_spanning_tree.md diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md b/docs/06_graph/06_07_graph_shortest_path_01.md similarity index 100% rename from Contents/08.Graph/04.Graph-Shortest-Path/01.Graph-Single-Source-Shortest-Path-01.md rename to docs/06_graph/06_07_graph_shortest_path_01.md diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md b/docs/06_graph/06_08_graph_shortest_path_02.md similarity index 100% rename from Contents/08.Graph/04.Graph-Shortest-Path/02.Graph-Single-Source-Shortest-Path-02.md rename to docs/06_graph/06_08_graph_shortest_path_02.md diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md b/docs/06_graph/06_09_graph_multi_source_shortest_path.md similarity index 100% rename from Contents/08.Graph/04.Graph-Shortest-Path/04.Graph-Multi-Source-Shortest-Path.md rename to docs/06_graph/06_09_graph_multi_source_shortest_path.md diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md b/docs/06_graph/06_10_graph_the_second_shortest_path.md similarity index 98% rename from Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md rename to docs/06_graph/06_10_graph_the_second_shortest_path.md index d2abf0cb..2dbb28dd 100644 --- a/Contents/08.Graph/04.Graph-Shortest-Path/06.Graph-The-Second-Shortest-Path.md +++ b/docs/06_graph/06_10_graph_the_second_shortest_path.md @@ -32,7 +32,7 @@ 4. 遍历 $u$ 的所有邻接节点 $v$: - 如果找到更短的路径,更新 $dist1[v]$。 - 如果找到次短的路径,更新 $dist2[v]$。 -5. 最终 $dist2[终点]$ 即为所求的次短路径长度。 +5. 最终 $dist2[target]$ 即为所求的次短路径长度。 ### 1.2.2 算法正确性证明 diff --git a/Contents/08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md b/docs/06_graph/06_11_graph_system_of_difference_constraints.md similarity index 100% rename from Contents/08.Graph/04.Graph-Shortest-Path/08.Graph-System-Of-Difference-Constraints.md rename to docs/06_graph/06_11_graph_system_of_difference_constraints.md diff --git a/Contents/08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md b/docs/06_graph/06_12_graph_bipartite_basic.md similarity index 100% rename from Contents/08.Graph/05.Graph-Bipartite/01.Graph-Bipartite-Basic.md rename to docs/06_graph/06_12_graph_bipartite_basic.md diff --git a/Contents/08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md b/docs/06_graph/06_13_graph_bipartite_matching.md similarity index 100% rename from Contents/08.Graph/05.Graph-Bipartite/03.Graph-Bipartite-Matching.md rename to docs/06_graph/06_13_graph_bipartite_matching.md diff --git a/docs/06_graph/index.md b/docs/06_graph/index.md new file mode 100644 index 00000000..4bbb8266 --- /dev/null +++ b/docs/06_graph/index.md @@ -0,0 +1,15 @@ +## 本章内容 + +- [6.1 图的定义和分类](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_01_graph_basic.md) +- [6.2 图的存储结构和问题应用](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_02_graph_structure.md) +- [图的深度优先搜索](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_03_graph_dfs.md) +- [图的广度优先搜索](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_04_graph_bfs.md) +- [图的拓扑排序](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_05_graph_topological_sorting.md) +- [图的最小生成树](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_06_graph_minimum_spanning_tree.md) +- [单源最短路径(一)](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_07_graph_shortest_path_01.md) +- [单源最短路径(二)](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_08_graph_shortest_path_02.md) +- [多源最短路径](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_09_graph_multi_source_shortest_path.md) +- [次短路径](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_10_graph_the_second_shortest_path.md) +- [差分约束系统](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_11_graph_system_of_difference_constraints.md) +- [二分图基础](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_12_graph_bipartite_basic.md) +- [二分图最大匹配](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_13_graph_bipartite_matching.md) diff --git a/Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md b/docs/07_algorithm/07_01_enumeration_algorithm.md similarity index 100% rename from Contents/09.Algorithm-Base/01.Enumeration-Algorithm/01.Enumeration-Algorithm.md rename to docs/07_algorithm/07_01_enumeration_algorithm.md diff --git a/Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md b/docs/07_algorithm/07_02_recursive_algorithm.md similarity index 100% rename from Contents/09.Algorithm-Base/02.Recursive-Algorithm/01.Recursive-Algorithm.md rename to docs/07_algorithm/07_02_recursive_algorithm.md diff --git a/Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md b/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md similarity index 100% rename from Contents/09.Algorithm-Base/03.Divide-And-Conquer-Algorithm/01.Divide-And-Conquer-Algorithm.md rename to docs/07_algorithm/07_03_divide_and_conquer_algorithm.md diff --git a/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md b/docs/07_algorithm/07_04_backtracking_algorithm.md similarity index 91% rename from Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md rename to docs/07_algorithm/07_04_backtracking_algorithm.md index 8a9dde5e..30283949 100644 --- a/Contents/09.Algorithm-Base/04.Backtracking-Algorithm/01.Backtracking-Algorithm.md +++ b/docs/07_algorithm/07_04_backtracking_algorithm.md @@ -104,7 +104,7 @@ backtracking(nums) 1. **明确所有选择**:画出搜索过程的决策树,根据决策树来确定搜索路径。 2. **明确终止条件**:推敲出递归的终止条件,以及递归终止时的要执行的处理方法。 -3. **将决策树和终止条件翻译成代码:** +3. **将决策树和终止条件翻译成代码**: 1. 定义回溯函数(明确函数意义、传入参数、返回结果等)。 2. 书写回溯函数主体(给出约束条件、选择元素、递归搜索、撤销选择部分)。 3. 明确递归终止条件(给出递归终止条件,以及递归终止时的处理方法)。 @@ -203,18 +203,14 @@ for i in range(len(nums)): # 枚举可选元素列表 下面我们根据回溯算法三步走,写出对应的回溯算法。 -1. **明确所有选择**:根据数组中每个位置上的元素选与不选两种选择,画出决策树,如下图所示。 - - - ![子集的决策树](https://qcdn.itcharge.cn/images/20220425210640.png) +![子集的决策树](https://qcdn.itcharge.cn/images/20220425210640.png) +1. **明确所有选择**:根据数组中每个位置上的元素选与不选两种选择,画出决策树,如上图所示。 2. **明确终止条件**: - - 当遍历到决策树的叶子节点时,就终止了。即当前路径搜索到末尾时,递归终止。 - -3. **将决策树和终止条件翻译成代码:** +3. **将决策树和终止条件翻译成代码**: 1. 定义回溯函数: - - - `backtracking(nums, index):` 函数的传入参数是 $nums$(可选数组列表)和 $index$(代表当前正在考虑元素是 $nums[i]$ ),全局变量是 $res$(存放所有符合条件结果的集合数组)和 $path$(存放当前符合条件的结果)。 + - `backtracking(nums, index):` 函数的传入参数是 $nums$(可选数组列表)和 $index$(代表当前正在考虑元素是 $nums[i]$),全局变量是 $res$(存放所有符合条件结果的集合数组)和 $path$(存放当前符合条件的结果)。 - `backtracking(nums, index):` 函数代表的含义是:在选择 $nums[index]$ 的情况下,递归选择剩下的元素。 2. 书写回溯函数主体(给出选择元素、递归搜索、撤销选择部分)。 - 从当前正在考虑元素,到数组结束为止,枚举出所有可选的元素。对于每一个可选元素: @@ -228,7 +224,6 @@ for i in range(len(nums)): # 枚举可选元素列表 backtracking(nums, i + 1) # 递归搜索 path.pop() # 撤销选择 ``` - 3. 明确递归终止条件(给出递归终止条件,以及递归终止时的处理方法)。 - 当遍历到决策树的叶子节点时,就终止了。也就是当正在考虑的元素位置到达数组末尾(即 $start \ge len(nums)$)时,递归停止。 - 从决策树中也可以看出,子集需要存储的答案集合应该包含决策树上所有的节点,应该需要保存递归搜索的所有状态。所以无论是否达到终止条件,我们都应该将当前符合条件的结果放入到集合中。 @@ -301,19 +296,14 @@ class Solution: 下面我们根据回溯算法三步走,写出对应的回溯算法。 -1. **明确所有选择**:根据棋盘中当前行的所有列位置上是否选择放置皇后,画出决策树,如下图所示。 - - - ![n 皇后问题的决策树](https://qcdn.itcharge.cn/images/20220426095225.png) +![](https://qcdn.itcharge.cn/images/20220426095225.png) +1. **明确所有选择**:根据棋盘中当前行的所有列位置上是否选择放置皇后,画出决策树,如上图所示。 2. **明确终止条件**: - - 当遍历到决策树的叶子节点时,就终止了。也就是在最后一行放置完皇后时,递归终止。 - 3. **将决策树和终止条件翻译成代码:** - 1. 定义回溯函数: - - - 首先我们先使用一个 $n * n$ 大小的二维矩阵 $chessboard$ 来表示当前棋盘,$chessboard$ 中的字符 `Q` 代表皇后,`.` 代表空位,初始都为 `.`。 + - 首先我们先使用一个 $n \times n$ 大小的二维矩阵 $chessboard$ 来表示当前棋盘,$chessboard$ 中的字符 `Q` 代表皇后,`.` 代表空位,初始都为 `.`。 - 然后定义回溯函数 `backtrack(chessboard, row): ` 函数的传入参数是 $chessboard$(棋盘数组)和 $row$(代表当前正在考虑放置第 $row$ 行皇后),全局变量是 $res$(存放所有符合条件结果的集合数组)。 - `backtrack(chessboard, row):` 函数代表的含义是:在放置好第 $row$ 行皇后的情况下,递归放置剩下行的皇后。 2. 书写回溯函数主体(给出选择元素、递归搜索、撤销选择部分)。 @@ -322,38 +312,36 @@ class Solution: - 选择元素:选择 $row, col$ 位置放置皇后,将其棋盘对应位置设置为 `Q`。 - 递归搜索:在该位置放置皇后的情况下,继续递归考虑下一行。 - 撤销选择:将棋盘上 $row, col$ 位置设置为 `.`。 + ```python + # 判断当前位置 row, col 是否与之前放置的皇后发生冲突 + def isValid(self, n: int, row: int, col: int, chessboard: List[List[str]]): + for i in range(row): + if chessboard[i][col] == 'Q': + return False + + i, j = row - 1, col - 1 + while i >= 0 and j >= 0: + if chessboard[i][j] == 'Q': + return False + i -= 1 + j -= 1 + i, j = row - 1, col + 1 + while i >= 0 and j < n: + if chessboard[i][j] == 'Q': + return False + i -= 1 + j += 1 - ```python - # 判断当前位置 row, col 是否与之前放置的皇后发生冲突 - def isValid(self, n: int, row: int, col: int, chessboard: List[List[str]]): - for i in range(row): - if chessboard[i][col] == 'Q': - return False - - i, j = row - 1, col - 1 - while i >= 0 and j >= 0: - if chessboard[i][j] == 'Q': - return False - i -= 1 - j -= 1 - i, j = row - 1, col + 1 - while i >= 0 and j < n: - if chessboard[i][j] == 'Q': - return False - i -= 1 - j += 1 - - return True - ``` + return True + ``` ```python - for col in range(n): # 枚举可放置皇后的列 - if self.isValid(n, row, col, chessboard): # 如果该位置与之前放置的皇后不发生冲突 - chessboard[row][col] = 'Q' # 选择 row, col 位置放置皇后 - backtrack(row + 1, chessboard) # 递归放置 row + 1 行之后的皇后 - chessboard[row][col] = '.' # 撤销选择 row, col 位置 + for col in range(n): # 枚举可放置皇后的列 + if self.isValid(n, row, col, chessboard): # 如果该位置与之前放置的皇后不发生冲突 + chessboard[row][col] = 'Q' # 选择 row, col 位置放置皇后 + backtrack(row + 1, chessboard) # 递归放置 row + 1 行之后的皇后 + chessboard[row][col] = '.' # 撤销选择 row, col 位置 ``` - 3. 明确递归终止条件(给出递归终止条件,以及递归终止时的处理方法)。 - 当遍历到决策树的叶子节点时,就终止了。也就是在最后一行放置完皇后(即 $row == n$)时,递归停止。 - 递归停止时,将当前符合条件的棋盘转换为答案需要的形式,然后将其存入答案数组 $res$ 中即可。 diff --git a/Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md b/docs/07_algorithm/07_05_greedy_algorithm.md similarity index 100% rename from Contents/09.Algorithm-Base/05.Greedy-Algorithm/01.Greedy-Algorithm.md rename to docs/07_algorithm/07_05_greedy_algorithm.md diff --git a/Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md b/docs/07_algorithm/07_06_bit_operation.md similarity index 100% rename from Contents/09.Algorithm-Base/06.Bit-Operation/01.Bit-Operation.md rename to docs/07_algorithm/07_06_bit_operation.md diff --git a/docs/07_algorithm/index.md b/docs/07_algorithm/index.md new file mode 100644 index 00000000..7e6a67f5 --- /dev/null +++ b/docs/07_algorithm/index.md @@ -0,0 +1,8 @@ +## 本章内容 + +- [7.1 枚举算法](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_01_enumeration_algorithm.md) +- [7.2 递归算法](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_02_recursive_algorithm.md) +- [7.3 分治算法](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md) +- [7.4 回溯算法](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_04_backtracking_algorithm.md) +- [7.5 贪心算法](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_05_greedy_algorithm.md) +- [7.6 位运算](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_06_bit_operation.md) diff --git a/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md b/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md similarity index 100% rename from Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md rename to docs/08_dynamic_programming/08_01_dynamic_programming_basic.md diff --git a/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md b/docs/08_dynamic_programming/08_02_memoization_search.md similarity index 100% rename from Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md rename to docs/08_dynamic_programming/08_02_memoization_search.md diff --git a/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md b/docs/08_dynamic_programming/08_03_linear_dp_01.md similarity index 100% rename from Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md rename to docs/08_dynamic_programming/08_03_linear_dp_01.md diff --git a/Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md b/docs/08_dynamic_programming/08_04_linear_dp_02.md similarity index 100% rename from Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md rename to docs/08_dynamic_programming/08_04_linear_dp_02.md diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md b/docs/08_dynamic_programming/08_05_knapsack_problem_01.md similarity index 100% rename from Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md rename to docs/08_dynamic_programming/08_05_knapsack_problem_01.md diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md b/docs/08_dynamic_programming/08_06_knapsack_problem_02.md similarity index 100% rename from Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md rename to docs/08_dynamic_programming/08_06_knapsack_problem_02.md diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md b/docs/08_dynamic_programming/08_07_knapsack_problem_03.md similarity index 100% rename from Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md rename to docs/08_dynamic_programming/08_07_knapsack_problem_03.md diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md b/docs/08_dynamic_programming/08_08_knapsack_problem_04.md similarity index 100% rename from Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md rename to docs/08_dynamic_programming/08_08_knapsack_problem_04.md diff --git a/Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md b/docs/08_dynamic_programming/08_09_knapsack_problem_05.md similarity index 100% rename from Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md rename to docs/08_dynamic_programming/08_09_knapsack_problem_05.md diff --git a/Contents/10.Dynamic-Programming/05.Interval-DP/01.Interval-DP.md b/docs/08_dynamic_programming/08_10_interval_dp.md similarity index 100% rename from Contents/10.Dynamic-Programming/05.Interval-DP/01.Interval-DP.md rename to docs/08_dynamic_programming/08_10_interval_dp.md diff --git a/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md b/docs/08_dynamic_programming/08_11_tree_dp.md similarity index 100% rename from Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md rename to docs/08_dynamic_programming/08_11_tree_dp.md diff --git a/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md b/docs/08_dynamic_programming/08_12_state_compression_dp.md similarity index 100% rename from Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md rename to docs/08_dynamic_programming/08_12_state_compression_dp.md diff --git a/Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md b/docs/08_dynamic_programming/08_13_counting_dp.md similarity index 100% rename from Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md rename to docs/08_dynamic_programming/08_13_counting_dp.md diff --git a/Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md b/docs/08_dynamic_programming/08_14_digit_dp.md similarity index 100% rename from Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md rename to docs/08_dynamic_programming/08_14_digit_dp.md diff --git a/Contents/10.Dynamic-Programming/10.Probability-DP/01.Probability-DP.md b/docs/08_dynamic_programming/08_15_probability_dp.md similarity index 100% rename from Contents/10.Dynamic-Programming/10.Probability-DP/01.Probability-DP.md rename to docs/08_dynamic_programming/08_15_probability_dp.md diff --git a/docs/08_dynamic_programming/index.md b/docs/08_dynamic_programming/index.md new file mode 100644 index 00000000..c3cb7f3a --- /dev/null +++ b/docs/08_dynamic_programming/index.md @@ -0,0 +1,17 @@ +## 本章内容 + +- [8.1 动态规划基础](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md) +- [8.2 记忆化搜索](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md) +- [8.3 线性 DP(一)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md) +- [8.4 线性 DP(二)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md) +- [8.5 背包问题知识(一)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md) +- [8.6 背包问题知识(二)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md) +- [8.7 背包问题知识(三)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md) +- [8.8 背包问题知识(四)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md) +- [8.9 背包问题知识(五)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md) +- [8.10 区间 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/05.Interval-DP/01.Interval-DP.md) +- [8.11 树形 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md) +- [8.12 状态压缩 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md) +- [8.13 计数 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md) +- [8.14 数位 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md) +- [8.15 概率 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/10.Probability-DP/01.Probability-DP.md) diff --git a/Assets/Origins/Root-Index-Head.md b/docs/README.md similarity index 96% rename from Assets/Origins/Root-Index-Head.md rename to docs/README.md index 78776f57..2059f83f 100644 --- a/Assets/Origins/Root-Index-Head.md +++ b/docs/README.md @@ -18,9 +18,9 @@ ## 源码地址 -本书内容及代码都放在 [Github repo](https://github.com/itcharge/LeetCode-Py) 中,欢迎在下方项目中 **「Star ⭐️ 」** 和 **「Fork」**,这是对我最大的鼓励和支持。 +本书内容及代码都放在 [Github repo](https://github.com/itcharge/AlgoNote) 中,欢迎在下方项目中 **「Star ⭐️ 」** 和 **「Fork」**,这是对我最大的鼓励和支持。 -- Github 地址:[https://github.com/itcharge/LeetCode-Py](https://github.com/itcharge/LeetCode-Py) +- Github 地址:[https://github.com/itcharge/AlgoNote](https://github.com/itcharge/AlgoNote) ## 本书前言 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..2059f83f --- /dev/null +++ b/docs/index.md @@ -0,0 +1,71 @@ +# 算法通关手册(LeetCode) + +## 关于本书 + +本书不仅仅只是一本算法题解书,更是一本算法与数据结构基础知识的讲解书。本书易于理解,没有大跨度的思维跳跃,书中使用部分图示、例子来帮助理解。本书先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。 + +本书采用 Python 作为编程语言,要求学习者已有基本 Python 程序设计的知识与经验。 + +## 本书起因 + +我想写一本通俗易懂的算法书已经很久了,久到大概有 6 年那么久。至今我还记着上大学时立下的 flag,我要把我所学的算法知识总结起来,整理成册,编辑成书。然后大大方方的在封面书上自己的昵称,再把它分享给想要学习算法的朋友们看。 + +结果是万万没想到,这一晃过去,毕业后参加工作都已经 5 年了,每天忙于开发需求、业务逻辑,写书这件事也跟其他大多数的待办事项和计划清单一样,被无限期地闲置一旁,再也不管不顾了。 + +不过,好在是今年我又重新拾起了算法,开始和朋友一起愉快的在 LeetCode 上刷题。于是往日的目标又浮现在了眼前,所以这次痛下决心,立志写一本浅显易懂、图文并茂的算法书,能够让没有算法基础的新手能够通过这本书学到一些「算法和数据结构」相关知识,并通过在 LeetCode 刷题的方式,锻炼自己的解决问题的能力和思维方式。 + +![](https://qcdn.itcharge.cn/images/20211027170432.png) + +## 源码地址 + +本书内容及代码都放在 [Github repo](https://github.com/itcharge/AlgoNote) 中,欢迎在下方项目中 **「Star ⭐️ 」** 和 **「Fork」**,这是对我最大的鼓励和支持。 + +- Github 地址:[https://github.com/itcharge/AlgoNote](https://github.com/itcharge/AlgoNote) + +## 本书前言 + +**「算法和数据结构」** 是计算机程序设计的重要理论技术基础,但很多程序员忽略了它的重要性。在日常开发工作中,最多的情况是使用成熟的开发框架,利用已经封装好的接口,进行 CRUD(增删改查)操作,似乎很少会需要自己实现相应的数据结构和算法。 + +况且工作中用到的编程语言、开发框架、开发平台,更新速度堪比摩尔定律。以前端为例,React 还没学明白呢,Vue 就火起来了。Vue 2.0 的文档还在研究呢,Vue 3.0 就发布了。很多时候,连新的技术还学不过来呢,哪还有时间去专门研究算法和数据结构呢。 + +诚然,语言、技术、框架固然重要,但背后的计算机算法和理论更为重要。因为语言、技术、框架的更新日新月异,但万变不离其宗的是背后的算法和理论,例如:**数据结构**、**算法**、**编译原理**、**计算机网络**、**计算机体系结构** 等等。任凭新技术如何变化,只要掌握了这些计算机科学的核心理论,就可以见招拆招,让自己立于不败之地。从此无论是看懂底层系统的设计原理、框架背后的设计思想,还是学习新技术、提升工作实战的效率,都可以做到得心应手。 + +**学习数据结构与算法的关键,在于掌握其中的思想和精髓,学会解决实际问题的方法。** + +本书采用算法与数据结构相结合的方法,把内容分为如下 6 部分: + +- 第一部分是序言(第 00 章):介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 +- 第二部分是数据结构篇(第 01 ~ 08 章):每一章对应一种数据结构,这个部分用来介绍最常见、最重要的数据结构,以及与该数据结构相关的算法知识。 +- 第三部分是基础算法篇(第 09 章):这一章用来介绍基本的算法思想。包括枚举、递归、贪心、分治、回溯以及位运算。 +- 第四部分是动态规划篇(第 10 章):这一章用来介绍动态规划的基础知识、题型和优化方法。 +- 第五部分是补充内容篇(第 11 章):这一章用来补充之前章节没有讲到的内容。 +- 第六部分是 LeetCode 题解篇(第 12 章):这一章用来讲解我在 LeetCode 上刷过的所有题目。可按照对应题号进行检索和学习。 + +在本书构思与写作阶段,很多朋友给我提出了有益的意见和建议。这些意见和建议令我受益匪浅。感谢在本书著作准备过程中,帮助过我的朋友,以及一起陪我刷题打卡的朋友,还有提供宝贵意见的读者。感谢为本书提供课程合作和宣传的 DataWhale 开源组织。谢谢诸位。 + +## 目标读者 + +- 拥有 Python 编程基础的编程爱好者 +- 对 LeetCode 刷题感兴趣的编程爱好者 +- 对算法感兴趣的计算机专业学生或程序员 + +## 使用说明 + +- 本电子书的左侧为所有章节目录导航,可直接点击对应章节跳转阅读。 +- 本电子书左上角有搜索栏,可以帮你迅速找到想看的章节和题解文章。 +- 本电子书每页都接入了 Utterances 评论系统,可在每页下方的评论框进行评论(需使用 GitHub 账号登录)。如果没有显示,请检查一下网络。 + +## 互助与勘误 + +限于本人的水平和经验,书中一定不乏纰漏和谬误之处。恳切希望读者给予批评指正。这将有利于我改进和提高,以帮助更多的读者。如果您对本书有任何评论和建议,或者遇到问题需要帮助,可在每页评论区留言,或者致信作者邮箱 [i@itcharge.cn](mailto:i@itcharge.cn),我将不胜感激。 + +## 关于作者 + +我是一名 iOS / macOS 的开发程序员,另外也是北航软院的一名非全硕士(在读)。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。 + +我从 2021 年 03 月 30 日开始每日在 LeetCode 刷题,到 2022 年 06 月 08 日已经刷了 1000+ 道题目,并且完成了 800+ 道题解。努力向着 1000+、1500+、2000+ 道题解前进。 + +## 版权说明 + +- 本书采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 +- 本书题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 diff --git a/Contents/Others/Update-Time.md b/docs/others/update_time.md similarity index 100% rename from Contents/Others/Update-Time.md rename to docs/others/update_time.md diff --git "a/Solutions/0016. \346\234\200\346\216\245\350\277\221\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" b/docs/solutions/0001-0099/3sum-closest.md similarity index 100% rename from "Solutions/0016. \346\234\200\346\216\245\350\277\221\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" rename to docs/solutions/0001-0099/3sum-closest.md diff --git "a/Solutions/0015. \344\270\211\346\225\260\344\271\213\345\222\214.md" b/docs/solutions/0001-0099/3sum.md similarity index 100% rename from "Solutions/0015. \344\270\211\346\225\260\344\271\213\345\222\214.md" rename to docs/solutions/0001-0099/3sum.md diff --git "a/Solutions/0018. \345\233\233\346\225\260\344\271\213\345\222\214.md" b/docs/solutions/0001-0099/4sum.md similarity index 100% rename from "Solutions/0018. \345\233\233\346\225\260\344\271\213\345\222\214.md" rename to docs/solutions/0001-0099/4sum.md diff --git "a/Solutions/0067. \344\272\214\350\277\233\345\210\266\346\261\202\345\222\214.md" b/docs/solutions/0001-0099/add-binary.md similarity index 100% rename from "Solutions/0067. \344\272\214\350\277\233\345\210\266\346\261\202\345\222\214.md" rename to docs/solutions/0001-0099/add-binary.md diff --git "a/Solutions/0002. \344\270\244\346\225\260\347\233\270\345\212\240.md" b/docs/solutions/0001-0099/add-two-numbers.md similarity index 100% rename from "Solutions/0002. \344\270\244\346\225\260\347\233\270\345\212\240.md" rename to docs/solutions/0001-0099/add-two-numbers.md diff --git "a/Solutions/0094. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\255\345\272\217\351\201\215\345\216\206.md" b/docs/solutions/0001-0099/binary-tree-inorder-traversal.md similarity index 100% rename from "Solutions/0094. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\255\345\272\217\351\201\215\345\216\206.md" rename to docs/solutions/0001-0099/binary-tree-inorder-traversal.md diff --git "a/Solutions/0070. \347\210\254\346\245\274\346\242\257.md" b/docs/solutions/0001-0099/climbing-stairs.md similarity index 100% rename from "Solutions/0070. \347\210\254\346\245\274\346\242\257.md" rename to docs/solutions/0001-0099/climbing-stairs.md diff --git "a/Solutions/0040. \347\273\204\345\220\210\346\200\273\345\222\214 II.md" b/docs/solutions/0001-0099/combination-sum-ii.md similarity index 100% rename from "Solutions/0040. \347\273\204\345\220\210\346\200\273\345\222\214 II.md" rename to docs/solutions/0001-0099/combination-sum-ii.md diff --git "a/Solutions/0039. \347\273\204\345\220\210\346\200\273\345\222\214.md" b/docs/solutions/0001-0099/combination-sum.md similarity index 100% rename from "Solutions/0039. \347\273\204\345\220\210\346\200\273\345\222\214.md" rename to docs/solutions/0001-0099/combination-sum.md diff --git "a/Solutions/0077. \347\273\204\345\220\210.md" b/docs/solutions/0001-0099/combinations.md similarity index 100% rename from "Solutions/0077. \347\273\204\345\220\210.md" rename to docs/solutions/0001-0099/combinations.md diff --git "a/Solutions/0011. \347\233\233\346\234\200\345\244\232\346\260\264\347\232\204\345\256\271\345\231\250.md" b/docs/solutions/0001-0099/container-with-most-water.md similarity index 100% rename from "Solutions/0011. \347\233\233\346\234\200\345\244\232\346\260\264\347\232\204\345\256\271\345\231\250.md" rename to docs/solutions/0001-0099/container-with-most-water.md diff --git "a/Solutions/0038. \345\244\226\350\247\202\346\225\260\345\210\227.md" b/docs/solutions/0001-0099/count-and-say.md similarity index 100% rename from "Solutions/0038. \345\244\226\350\247\202\346\225\260\345\210\227.md" rename to docs/solutions/0001-0099/count-and-say.md diff --git "a/Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" b/docs/solutions/0001-0099/decode-ways.md similarity index 100% rename from "Solutions/0091. \350\247\243\347\240\201\346\226\271\346\263\225.md" rename to docs/solutions/0001-0099/decode-ways.md diff --git "a/Solutions/0029. \344\270\244\346\225\260\347\233\270\351\231\244.md" b/docs/solutions/0001-0099/divide-two-integers.md similarity index 100% rename from "Solutions/0029. \344\270\244\346\225\260\347\233\270\351\231\244.md" rename to docs/solutions/0001-0099/divide-two-integers.md diff --git "a/Solutions/0072. \347\274\226\350\276\221\350\267\235\347\246\273.md" b/docs/solutions/0001-0099/edit-distance.md similarity index 100% rename from "Solutions/0072. \347\274\226\350\276\221\350\267\235\347\246\273.md" rename to docs/solutions/0001-0099/edit-distance.md diff --git "a/Solutions/0034. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240\347\232\204\347\254\254\344\270\200\344\270\252\345\222\214\346\234\200\345\220\216\344\270\200\344\270\252\344\275\215\347\275\256.md" b/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array.md similarity index 100% rename from "Solutions/0034. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240\347\232\204\347\254\254\344\270\200\344\270\252\345\222\214\346\234\200\345\220\216\344\270\200\344\270\252\344\275\215\347\275\256.md" rename to docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array.md diff --git "a/Solutions/0028. \346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md" b/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md similarity index 100% rename from "Solutions/0028. \346\211\276\345\207\272\345\255\227\347\254\246\344\270\262\344\270\255\347\254\254\344\270\200\344\270\252\345\214\271\351\205\215\351\241\271\347\232\204\344\270\213\346\240\207.md" rename to docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md diff --git "a/Solutions/0041. \347\274\272\345\244\261\347\232\204\347\254\254\344\270\200\344\270\252\346\255\243\346\225\260.md" b/docs/solutions/0001-0099/first-missing-positive.md similarity index 100% rename from "Solutions/0041. \347\274\272\345\244\261\347\232\204\347\254\254\344\270\200\344\270\252\346\255\243\346\225\260.md" rename to docs/solutions/0001-0099/first-missing-positive.md diff --git "a/Solutions/0022. \346\213\254\345\217\267\347\224\237\346\210\220.md" b/docs/solutions/0001-0099/generate-parentheses.md similarity index 100% rename from "Solutions/0022. \346\213\254\345\217\267\347\224\237\346\210\220.md" rename to docs/solutions/0001-0099/generate-parentheses.md diff --git "a/Solutions/0089. \346\240\274\351\233\267\347\274\226\347\240\201.md" b/docs/solutions/0001-0099/gray-code.md similarity index 100% rename from "Solutions/0089. \346\240\274\351\233\267\347\274\226\347\240\201.md" rename to docs/solutions/0001-0099/gray-code.md diff --git "a/Solutions/0049. \345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\345\210\206\347\273\204.md" b/docs/solutions/0001-0099/group-anagrams.md similarity index 100% rename from "Solutions/0049. \345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\345\210\206\347\273\204.md" rename to docs/solutions/0001-0099/group-anagrams.md diff --git a/docs/solutions/0001-0099/index.md b/docs/solutions/0001-0099/index.md new file mode 100644 index 00000000..5de0373a --- /dev/null +++ b/docs/solutions/0001-0099/index.md @@ -0,0 +1,88 @@ +## 本章内容 + +- [0001. 两数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) +- [0002. 两数相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers/) +- [0003. 无重复字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) +- [0004. 寻找两个正序数组的中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) +- [0005. 最长回文子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) +- [0007. 整数反转](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-integer/) +- [0008. 字符串转换整数 (atoi)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi/) +- [0009. 回文数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/palindrome-number/) +- [0010. 正则表达式匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching/) +- [0011. 盛最多水的容器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water/) +- [0012. 整数转罗马数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/integer-to-roman/) +- [0013. 罗马数字转整数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/roman-to-integer/) +- [0014. 最长公共前缀](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) +- [0015. 三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) +- [0016. 最接近的三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest/) +- [0017. 电话号码的字母组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/letter-combinations-of-a-phone-number/) +- [0018. 四数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum/) +- [0019. 删除链表的倒数第 N 个结点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list/) +- [0020. 有效的括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses/) +- [0021. 合并两个有序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) +- [0022. 括号生成](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses/) +- [0023. 合并 K 个升序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) +- [0024. 两两交换链表中的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs/) +- [0025. K 个一组翻转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group/) +- [0026. 删除有序数组中的重复项](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array/) +- [0027. 移除元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-element/) +- [0028. 找出字符串中第一个匹配项的下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string/) +- [0029. 两数相除](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/divide-two-integers/) +- [0032. 最长有效括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) +- [0033. 搜索旋转排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array/) +- [0034. 在排序数组中查找元素的第一个和最后一个位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array/) +- [0035. 搜索插入位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-insert-position/) +- [0036. 有效的数独](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-sudoku/) +- [0037. 解数独](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver/) +- [0038. 外观数列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/count-and-say/) +- [0039. 组合总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum/) +- [0040. 组合总和 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii/) +- [0041. 缺失的第一个正数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive/) +- [0042. 接雨水](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) +- [0043. 字符串相乘](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings/) +- [0044. 通配符匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching/) +- [0045. 跳跃游戏 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii/) +- [0046. 全排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations/) +- [0047. 全排列 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii/) +- [0048. 旋转图像](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image/) +- [0049. 字母异位词分组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams/) +- [0050. Pow(x, n)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) +- [0051. N 皇后](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens/) +- [0052. N 皇后 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens-ii/) +- [0053. 最大子数组和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) +- [0054. 螺旋矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix/) +- [0055. 跳跃游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game/) +- [0056. 合并区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) +- [0058. 最后一个单词的长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/length-of-last-word/) +- [0059. 螺旋矩阵 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii/) +- [0061. 旋转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list/) +- [0062. 不同路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) +- [0063. 不同路径 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii/) +- [0064. 最小路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum/) +- [0066. 加一](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/plus-one/) +- [0067. 二进制求和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-binary/) +- [0069. x 的平方根](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx/) +- [0070. 爬楼梯](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) +- [0072. 编辑距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance/) +- [0073. 矩阵置零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/set-matrix-zeroes/) +- [0074. 搜索二维矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix/) +- [0075. 颜色分类](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) +- [0076. 最小覆盖子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring/) +- [0077. 组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combinations/) +- [0078. 子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) +- [0079. 单词搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search/) +- [0080. 删除有序数组中的重复项 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii/) +- [0081. 搜索旋转排序数组 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array-ii/) +- [0082. 删除排序链表中的重复元素 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii/) +- [0083. 删除排序链表中的重复元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list/) +- [0084. 柱状图中最大的矩形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/largest-rectangle-in-histogram/) +- [0088. 合并两个有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) +- [0089. 格雷编码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/gray-code/) +- [0090. 子集 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii/) +- [0091. 解码方法](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways/) +- [0092. 反转链表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) +- [0093. 复原 IP 地址](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses/) +- [0094. 二叉树的中序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) +- [0095. 不同的二叉搜索树 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees-ii/) +- [0096. 不同的二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees/) +- [0098. 验证二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree/) diff --git "a/Solutions/0012. \346\225\264\346\225\260\350\275\254\347\275\227\351\251\254\346\225\260\345\255\227.md" b/docs/solutions/0001-0099/integer-to-roman.md similarity index 100% rename from "Solutions/0012. \346\225\264\346\225\260\350\275\254\347\275\227\351\251\254\346\225\260\345\255\227.md" rename to docs/solutions/0001-0099/integer-to-roman.md diff --git "a/Solutions/0045. \350\267\263\350\267\203\346\270\270\346\210\217 II.md" b/docs/solutions/0001-0099/jump-game-ii.md similarity index 100% rename from "Solutions/0045. \350\267\263\350\267\203\346\270\270\346\210\217 II.md" rename to docs/solutions/0001-0099/jump-game-ii.md diff --git "a/Solutions/0055. \350\267\263\350\267\203\346\270\270\346\210\217.md" b/docs/solutions/0001-0099/jump-game.md similarity index 100% rename from "Solutions/0055. \350\267\263\350\267\203\346\270\270\346\210\217.md" rename to docs/solutions/0001-0099/jump-game.md diff --git "a/Solutions/0084. \346\237\261\347\212\266\345\233\276\344\270\255\346\234\200\345\244\247\347\232\204\347\237\251\345\275\242.md" b/docs/solutions/0001-0099/largest-rectangle-in-histogram.md similarity index 100% rename from "Solutions/0084. \346\237\261\347\212\266\345\233\276\344\270\255\346\234\200\345\244\247\347\232\204\347\237\251\345\275\242.md" rename to docs/solutions/0001-0099/largest-rectangle-in-histogram.md diff --git "a/Solutions/0058. \346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md" b/docs/solutions/0001-0099/length-of-last-word.md similarity index 100% rename from "Solutions/0058. \346\234\200\345\220\216\344\270\200\344\270\252\345\215\225\350\257\215\347\232\204\351\225\277\345\272\246.md" rename to docs/solutions/0001-0099/length-of-last-word.md diff --git "a/Solutions/0017. \347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md" b/docs/solutions/0001-0099/letter-combinations-of-a-phone-number.md similarity index 100% rename from "Solutions/0017. \347\224\265\350\257\235\345\217\267\347\240\201\347\232\204\345\255\227\346\257\215\347\273\204\345\220\210.md" rename to docs/solutions/0001-0099/letter-combinations-of-a-phone-number.md diff --git "a/Solutions/0014. \346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md" b/docs/solutions/0001-0099/longest-common-prefix.md similarity index 100% rename from "Solutions/0014. \346\234\200\351\225\277\345\205\254\345\205\261\345\211\215\347\274\200.md" rename to docs/solutions/0001-0099/longest-common-prefix.md diff --git "a/Solutions/0005. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" b/docs/solutions/0001-0099/longest-palindromic-substring.md similarity index 100% rename from "Solutions/0005. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\344\270\262.md" rename to docs/solutions/0001-0099/longest-palindromic-substring.md diff --git "a/Solutions/0003. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" b/docs/solutions/0001-0099/longest-substring-without-repeating-characters.md similarity index 100% rename from "Solutions/0003. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" rename to docs/solutions/0001-0099/longest-substring-without-repeating-characters.md diff --git "a/Solutions/0032. \346\234\200\351\225\277\346\234\211\346\225\210\346\213\254\345\217\267.md" b/docs/solutions/0001-0099/longest-valid-parentheses.md similarity index 100% rename from "Solutions/0032. \346\234\200\351\225\277\346\234\211\346\225\210\346\213\254\345\217\267.md" rename to docs/solutions/0001-0099/longest-valid-parentheses.md diff --git "a/Solutions/0053. \346\234\200\345\244\247\345\255\220\346\225\260\347\273\204\345\222\214.md" b/docs/solutions/0001-0099/maximum-subarray.md similarity index 100% rename from "Solutions/0053. \346\234\200\345\244\247\345\255\220\346\225\260\347\273\204\345\222\214.md" rename to docs/solutions/0001-0099/maximum-subarray.md diff --git "a/Solutions/0004. \345\257\273\346\211\276\344\270\244\344\270\252\346\255\243\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260.md" b/docs/solutions/0001-0099/median-of-two-sorted-arrays.md similarity index 100% rename from "Solutions/0004. \345\257\273\346\211\276\344\270\244\344\270\252\346\255\243\345\272\217\346\225\260\347\273\204\347\232\204\344\270\255\344\275\215\346\225\260.md" rename to docs/solutions/0001-0099/median-of-two-sorted-arrays.md diff --git "a/Solutions/0056. \345\220\210\345\271\266\345\214\272\351\227\264.md" b/docs/solutions/0001-0099/merge-intervals.md similarity index 100% rename from "Solutions/0056. \345\220\210\345\271\266\345\214\272\351\227\264.md" rename to docs/solutions/0001-0099/merge-intervals.md diff --git "a/Solutions/0023. \345\220\210\345\271\266 K \344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.md" b/docs/solutions/0001-0099/merge-k-sorted-lists.md similarity index 100% rename from "Solutions/0023. \345\220\210\345\271\266 K \344\270\252\345\215\207\345\272\217\351\223\276\350\241\250.md" rename to docs/solutions/0001-0099/merge-k-sorted-lists.md diff --git "a/Solutions/0088. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204.md" b/docs/solutions/0001-0099/merge-sorted-array.md similarity index 100% rename from "Solutions/0088. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\346\225\260\347\273\204.md" rename to docs/solutions/0001-0099/merge-sorted-array.md diff --git "a/Solutions/0021. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.md" b/docs/solutions/0001-0099/merge-two-sorted-lists.md similarity index 100% rename from "Solutions/0021. \345\220\210\345\271\266\344\270\244\344\270\252\346\234\211\345\272\217\351\223\276\350\241\250.md" rename to docs/solutions/0001-0099/merge-two-sorted-lists.md diff --git "a/Solutions/0064. \346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" b/docs/solutions/0001-0099/minimum-path-sum.md similarity index 100% rename from "Solutions/0064. \346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" rename to docs/solutions/0001-0099/minimum-path-sum.md diff --git "a/Solutions/0076. \346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262.md" b/docs/solutions/0001-0099/minimum-window-substring.md similarity index 100% rename from "Solutions/0076. \346\234\200\345\260\217\350\246\206\347\233\226\345\255\220\344\270\262.md" rename to docs/solutions/0001-0099/minimum-window-substring.md diff --git "a/Solutions/0043. \345\255\227\347\254\246\344\270\262\347\233\270\344\271\230.md" b/docs/solutions/0001-0099/multiply-strings.md similarity index 100% rename from "Solutions/0043. \345\255\227\347\254\246\344\270\262\347\233\270\344\271\230.md" rename to docs/solutions/0001-0099/multiply-strings.md diff --git "a/Solutions/0052. N \347\232\207\345\220\216 II.md" b/docs/solutions/0001-0099/n-queens-ii.md similarity index 93% rename from "Solutions/0052. N \347\232\207\345\220\216 II.md" rename to docs/solutions/0001-0099/n-queens-ii.md index d9dc0711..eff2a297 100644 --- "a/Solutions/0052. N \347\232\207\345\220\216 II.md" +++ b/docs/solutions/0001-0099/n-queens-ii.md @@ -45,19 +45,14 @@ 下面我们根据回溯算法三步走,写出对应的回溯算法。 -1. **明确所有选择**:根据棋盘中当前行的所有列位置上是否选择放置皇后,画出决策树,如下图所示。 - - - ![](https://qcdn.itcharge.cn/images/20220426095225.png) +![](https://qcdn.itcharge.cn/images/20220426095225.png) +1. **明确所有选择**:根据棋盘中当前行的所有列位置上是否选择放置皇后,画出决策树,如上图所示。 2. **明确终止条件**: - - 当遍历到决策树的叶子节点时,就终止了。也就是在最后一行放置完皇后时,递归终止。 - -3. **将决策树和终止条件翻译成代码:** - +3. **将决策树和终止条件翻译成代码**: 1. 定义回溯函数: - - - 首先我们先使用一个 `n * n` 大小的二维矩阵 `chessboard` 来表示当前棋盘,`chessboard` 中的字符 `Q` 代表皇后,`.` 代表空位,初始都为 `.`。 + - 首先我们先使用一个 $n \times n$ 大小的二维矩阵 `chessboard` 来表示当前棋盘,`chessboard` 中的字符 `Q` 代表皇后,`.` 代表空位,初始都为 `.`。 - 然后定义回溯函数 `backtrack(chessboard, row): ` 函数的传入参数是 `chessboard`(棋盘数组)和 `row`(代表当前正在考虑放置第 `row` 行皇后),全局变量是 `ans`(所有可行方案的数量)。 - `backtrack(chessboard, row):` 函数代表的含义是:在放置好第 `row` 行皇后的情况下,递归放置剩下行的皇后。 2. 书写回溯函数主体(给出选择元素、递归搜索、撤销选择部分)。 diff --git "a/Solutions/0051. N \347\232\207\345\220\216.md" b/docs/solutions/0001-0099/n-queens.md similarity index 94% rename from "Solutions/0051. N \347\232\207\345\220\216.md" rename to docs/solutions/0001-0099/n-queens.md index abd79e7b..72aae45c 100644 --- "a/Solutions/0051. N \347\232\207\345\220\216.md" +++ b/docs/solutions/0001-0099/n-queens.md @@ -43,19 +43,14 @@ 下面我们根据回溯算法三步走,写出对应的回溯算法。 -1. **明确所有选择**:根据棋盘中当前行的所有列位置上是否选择放置皇后,画出决策树,如下图所示。 - - - ![](https://qcdn.itcharge.cn/images/20220426095225.png) +![](https://qcdn.itcharge.cn/images/20220426095225.png) +1. **明确所有选择**:根据棋盘中当前行的所有列位置上是否选择放置皇后,画出决策树,如上图所示。 2. **明确终止条件**: - - 当遍历到决策树的叶子节点时,就终止了。也就是在最后一行放置完皇后时,递归终止。 - -3. **将决策树和终止条件翻译成代码:** - +3. **将决策树和终止条件翻译成代码**: 1. 定义回溯函数: - - - 首先我们先使用一个 `n * n` 大小的二维矩阵 `chessboard` 来表示当前棋盘,`chessboard` 中的字符 `Q` 代表皇后,`.` 代表空位,初始都为 `.`。 + - 首先我们先使用一个 $n \times n$ 大小的二维矩阵 `chessboard` 来表示当前棋盘,`chessboard` 中的字符 `Q` 代表皇后,`.` 代表空位,初始都为 `.`。 - 然后定义回溯函数 `backtrack(chessboard, row): ` 函数的传入参数是 `chessboard`(棋盘数组)和 `row`(代表当前正在考虑放置第 `row` 行皇后),全局变量是 `res`(存放所有符合条件结果的集合数组)。 - `backtrack(chessboard, row):` 函数代表的含义是:在放置好第 `row` 行皇后的情况下,递归放置剩下行的皇后。 2. 书写回溯函数主体(给出选择元素、递归搜索、撤销选择部分)。 diff --git "a/Solutions/0009. \345\233\236\346\226\207\346\225\260.md" b/docs/solutions/0001-0099/palindrome-number.md similarity index 100% rename from "Solutions/0009. \345\233\236\346\226\207\346\225\260.md" rename to docs/solutions/0001-0099/palindrome-number.md diff --git "a/Solutions/0047. \345\205\250\346\216\222\345\210\227 II.md" b/docs/solutions/0001-0099/permutations-ii.md similarity index 100% rename from "Solutions/0047. \345\205\250\346\216\222\345\210\227 II.md" rename to docs/solutions/0001-0099/permutations-ii.md diff --git "a/Solutions/0046. \345\205\250\346\216\222\345\210\227.md" b/docs/solutions/0001-0099/permutations.md similarity index 89% rename from "Solutions/0046. \345\205\250\346\216\222\345\210\227.md" rename to docs/solutions/0001-0099/permutations.md index 57890942..f76d625e 100644 --- "a/Solutions/0046. \345\205\250\346\216\222\345\210\227.md" +++ b/docs/solutions/0001-0099/permutations.md @@ -41,18 +41,13 @@ 根据回溯算法三步走,写出对应的回溯算法。 -1. **明确所有选择**:全排列中每个位置上的元素都可以从剩余可选元素中选出,对此画出决策树,如下图所示。 - - - ![](https://qcdn.itcharge.cn/images/20220425102048.png) +![](https://qcdn.itcharge.cn/images/20220425102048.png) +1. **明确所有选择**:全排列中每个位置上的元素都可以从剩余可选元素中选出,对此画出决策树,如上图所示。 2. **明确终止条件**: - - 当遍历到决策树的叶子节点时,就终止了。即当前路径搜索到末尾时,递归终止。 - 3. **将决策树和终止条件翻译成代码:** - 1. 定义回溯函数: - - `backtracking(nums):` 函数的传入参数是 `nums`(可选数组列表),全局变量是 `res`(存放所有符合条件结果的集合数组)和 `path`(存放当前符合条件的结果)。 - `backtracking(nums):` 函数代表的含义是:递归在 `nums` 中选择剩下的元素。 2. 书写回溯函数主体(给出选择元素、递归搜索、撤销选择部分)。 @@ -61,15 +56,13 @@ - 选择元素:将其添加到当前子集数组 `path` 中。 - 递归搜索:在选择该元素的情况下,继续递归选择剩下元素。 - 撤销选择:将该元素从当前结果数组 `path` 中移除。 - ```python - for i in range(len(nums)): # 枚举可选元素列表 - if nums[i] not in path: # 从当前路径中没有出现的数字中选择 - path.append(nums[i]) # 选择元素 - backtracking(nums) # 递归搜索 - path.pop() # 撤销选择 + for i in range(len(nums)): # 枚举可选元素列表 + if nums[i] not in path: # 从当前路径中没有出现的数字中选择 + path.append(nums[i]) # 选择元素 + backtracking(nums) # 递归搜索 + path.pop() # 撤销选择 ``` - 3. 明确递归终止条件(给出递归终止条件,以及递归终止时的处理方法)。 - 当遍历到决策树的叶子节点时,就终止了。也就是存放当前结果的数组 `path` 的长度等于给定数组 `nums` 的长度(即 `len(path) == len(nums)`)时,递归停止。 diff --git "a/Solutions/0066. \345\212\240\344\270\200.md" b/docs/solutions/0001-0099/plus-one.md similarity index 100% rename from "Solutions/0066. \345\212\240\344\270\200.md" rename to docs/solutions/0001-0099/plus-one.md diff --git a/Solutions/0050. Pow(x, n).md b/docs/solutions/0001-0099/powx-n.md similarity index 100% rename from Solutions/0050. Pow(x, n).md rename to docs/solutions/0001-0099/powx-n.md diff --git "a/Solutions/0010. \346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md" b/docs/solutions/0001-0099/regular-expression-matching.md similarity index 100% rename from "Solutions/0010. \346\255\243\345\210\231\350\241\250\350\276\276\345\274\217\345\214\271\351\205\215.md" rename to docs/solutions/0001-0099/regular-expression-matching.md diff --git "a/Solutions/0080. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271 II.md" b/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii.md similarity index 100% rename from "Solutions/0080. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271 II.md" rename to docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii.md diff --git "a/Solutions/0026. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md" b/docs/solutions/0001-0099/remove-duplicates-from-sorted-array.md similarity index 100% rename from "Solutions/0026. \345\210\240\351\231\244\346\234\211\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\351\207\215\345\244\215\351\241\271.md" rename to docs/solutions/0001-0099/remove-duplicates-from-sorted-array.md diff --git "a/Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" b/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii.md similarity index 100% rename from "Solutions/0082. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240 II.md" rename to docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii.md diff --git "a/Solutions/0083. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" b/docs/solutions/0001-0099/remove-duplicates-from-sorted-list.md similarity index 100% rename from "Solutions/0083. \345\210\240\351\231\244\346\216\222\345\272\217\351\223\276\350\241\250\344\270\255\347\232\204\351\207\215\345\244\215\345\205\203\347\264\240.md" rename to docs/solutions/0001-0099/remove-duplicates-from-sorted-list.md diff --git "a/Solutions/0027. \347\247\273\351\231\244\345\205\203\347\264\240.md" b/docs/solutions/0001-0099/remove-element.md similarity index 100% rename from "Solutions/0027. \347\247\273\351\231\244\345\205\203\347\264\240.md" rename to docs/solutions/0001-0099/remove-element.md diff --git "a/Solutions/0019. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 N \344\270\252\347\273\223\347\202\271.md" b/docs/solutions/0001-0099/remove-nth-node-from-end-of-list.md similarity index 100% rename from "Solutions/0019. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 N \344\270\252\347\273\223\347\202\271.md" rename to docs/solutions/0001-0099/remove-nth-node-from-end-of-list.md diff --git "a/Solutions/0093. \345\244\215\345\216\237 IP \345\234\260\345\235\200.md" b/docs/solutions/0001-0099/restore-ip-addresses.md similarity index 85% rename from "Solutions/0093. \345\244\215\345\216\237 IP \345\234\260\345\235\200.md" rename to docs/solutions/0001-0099/restore-ip-addresses.md index 59f4723b..c5a335ae 100644 --- "a/Solutions/0093. \345\244\215\345\216\237 IP \345\234\260\345\235\200.md" +++ b/docs/solutions/0001-0099/restore-ip-addresses.md @@ -43,16 +43,11 @@ 根据回溯算法三步走,写出对应的回溯算法。 -1. **明确所有选择**:全排列中每个位置上的元素都可以从剩余可选元素中选出,对此画出决策树,如下图所示。 - +1. **明确所有选择**:全排列中每个位置上的元素都可以从剩余可选元素中选出。 2. **明确终止条件**: - - 当遍历到决策树的叶子节点时,就终止了。即当前路径搜索到末尾时,递归终止。 - -3. **将决策树和终止条件翻译成代码:** - +3. **将决策树和终止条件翻译成代码**: 1. 定义回溯函数: - - `backtracking(index):` 函数的传入参数是 `index`(剩余字符开始位置),全局变量是 `res`(存放所有符合条件结果的集合数组)和 `path`(存放当前符合条件的结果)。 - `backtracking(index):` 函数代表的含义是:递归从 `index` 位置开始,从剩下字符中,选择当前子段的值。 2. 书写回溯函数主体(给出选择元素、递归搜索、撤销选择部分)。 @@ -61,25 +56,23 @@ - 选择元素:将其添加到当前子集数组 `path` 中。 - 递归搜索:在选择该子段值的情况下,继续递归从剩下字符中,选择下一个子段值。 - 撤销选择:将该子段值从当前结果数组 `path` 中移除。 - ```python - for i in range(index, len(s)): # 枚举可选元素列表 - sub = s[index: i + 1] - # 如果当前值不在 0 ~ 255 之间,直接跳过 - if int(sub) > 255: - continue - # 如果当前值为 0,但不是单个 0("00..."),直接跳过 - if int(sub) == 0 and i != index: - continue - # 如果当前值大于 0,但是以 0 开头("0XX..."),直接跳过 - if int(sub) > 0 and s[index] == '0': - continue - - path.append(sub) # 选择元素 - backtracking(i + 1) # 递归搜索 - path.pop() # 撤销选择 + for i in range(index, len(s)): # 枚举可选元素列表 + sub = s[index: i + 1] + # 如果当前值不在 0 ~ 255 之间,直接跳过 + if int(sub) > 255: + continue + # 如果当前值为 0,但不是单个 0("00..."),直接跳过 + if int(sub) == 0 and i != index: + continue + # 如果当前值大于 0,但是以 0 开头("0XX..."),直接跳过 + if int(sub) > 0 and s[index] == '0': + continue + + path.append(sub) # 选择元素 + backtracking(i + 1) # 递归搜索 + path.pop() # 撤销选择 ``` - 3. 明确递归终止条件(给出递归终止条件,以及递归终止时的处理方法)。 - 当遍历到决策树的叶子节点时,就终止了。也就是存放当前结果的数组 `path` 的长度等于 $4$,并且剩余字符开始位置为字符串结束位置(即 `len(path) == 4 and index == len(s)`)时,递归停止。 - 如果回溯过程中,切割次数大于 4(即 `len(path) > 4`),递归停止,直接返回。 diff --git "a/Solutions/0007. \346\225\264\346\225\260\345\217\215\350\275\254.md" b/docs/solutions/0001-0099/reverse-integer.md similarity index 100% rename from "Solutions/0007. \346\225\264\346\225\260\345\217\215\350\275\254.md" rename to docs/solutions/0001-0099/reverse-integer.md diff --git "a/Solutions/0092. \345\217\215\350\275\254\351\223\276\350\241\250 II.md" b/docs/solutions/0001-0099/reverse-linked-list-ii.md similarity index 100% rename from "Solutions/0092. \345\217\215\350\275\254\351\223\276\350\241\250 II.md" rename to docs/solutions/0001-0099/reverse-linked-list-ii.md diff --git "a/Solutions/0025. K \344\270\252\344\270\200\347\273\204\347\277\273\350\275\254\351\223\276\350\241\250.md" b/docs/solutions/0001-0099/reverse-nodes-in-k-group.md similarity index 100% rename from "Solutions/0025. K \344\270\252\344\270\200\347\273\204\347\277\273\350\275\254\351\223\276\350\241\250.md" rename to docs/solutions/0001-0099/reverse-nodes-in-k-group.md diff --git "a/Solutions/0013. \347\275\227\351\251\254\346\225\260\345\255\227\350\275\254\346\225\264\346\225\260.md" b/docs/solutions/0001-0099/roman-to-integer.md similarity index 100% rename from "Solutions/0013. \347\275\227\351\251\254\346\225\260\345\255\227\350\275\254\346\225\264\346\225\260.md" rename to docs/solutions/0001-0099/roman-to-integer.md diff --git "a/Solutions/0048. \346\227\213\350\275\254\345\233\276\345\203\217.md" b/docs/solutions/0001-0099/rotate-image.md similarity index 100% rename from "Solutions/0048. \346\227\213\350\275\254\345\233\276\345\203\217.md" rename to docs/solutions/0001-0099/rotate-image.md diff --git "a/Solutions/0061. \346\227\213\350\275\254\351\223\276\350\241\250.md" b/docs/solutions/0001-0099/rotate-list.md similarity index 100% rename from "Solutions/0061. \346\227\213\350\275\254\351\223\276\350\241\250.md" rename to docs/solutions/0001-0099/rotate-list.md diff --git "a/Solutions/0074. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265.md" b/docs/solutions/0001-0099/search-a-2d-matrix.md similarity index 100% rename from "Solutions/0074. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265.md" rename to docs/solutions/0001-0099/search-a-2d-matrix.md diff --git "a/Solutions/0081. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204 II.md" b/docs/solutions/0001-0099/search-in-rotated-sorted-array-ii.md similarity index 100% rename from "Solutions/0081. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204 II.md" rename to docs/solutions/0001-0099/search-in-rotated-sorted-array-ii.md diff --git "a/Solutions/0033. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" b/docs/solutions/0001-0099/search-in-rotated-sorted-array.md similarity index 100% rename from "Solutions/0033. \346\220\234\347\264\242\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204.md" rename to docs/solutions/0001-0099/search-in-rotated-sorted-array.md diff --git "a/Solutions/0035. \346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md" b/docs/solutions/0001-0099/search-insert-position.md similarity index 100% rename from "Solutions/0035. \346\220\234\347\264\242\346\217\222\345\205\245\344\275\215\347\275\256.md" rename to docs/solutions/0001-0099/search-insert-position.md diff --git "a/Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" b/docs/solutions/0001-0099/set-matrix-zeroes.md similarity index 98% rename from "Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" rename to docs/solutions/0001-0099/set-matrix-zeroes.md index 6b70f58f..4dde4a72 100644 --- "a/Solutions/0073. \347\237\251\351\230\265\347\275\256\351\233\266.md" +++ b/docs/solutions/0001-0099/set-matrix-zeroes.md @@ -29,7 +29,8 @@ **示例**: - 示例 1: -- ![](https://assets.leetcode.com/uploads/2020/08/17/mat1.jpg) + +![](https://assets.leetcode.com/uploads/2020/08/17/mat1.jpg) ```python 输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] diff --git "a/Solutions/0075. \351\242\234\350\211\262\345\210\206\347\261\273.md" b/docs/solutions/0001-0099/sort-colors.md similarity index 100% rename from "Solutions/0075. \351\242\234\350\211\262\345\210\206\347\261\273.md" rename to docs/solutions/0001-0099/sort-colors.md diff --git "a/Solutions/0059. \350\236\272\346\227\213\347\237\251\351\230\265 II.md" b/docs/solutions/0001-0099/spiral-matrix-ii.md similarity index 100% rename from "Solutions/0059. \350\236\272\346\227\213\347\237\251\351\230\265 II.md" rename to docs/solutions/0001-0099/spiral-matrix-ii.md diff --git "a/Solutions/0054. \350\236\272\346\227\213\347\237\251\351\230\265.md" b/docs/solutions/0001-0099/spiral-matrix.md similarity index 100% rename from "Solutions/0054. \350\236\272\346\227\213\347\237\251\351\230\265.md" rename to docs/solutions/0001-0099/spiral-matrix.md diff --git "a/Solutions/0069. x \347\232\204\345\271\263\346\226\271\346\240\271.md" b/docs/solutions/0001-0099/sqrtx.md similarity index 100% rename from "Solutions/0069. x \347\232\204\345\271\263\346\226\271\346\240\271.md" rename to docs/solutions/0001-0099/sqrtx.md diff --git "a/Solutions/0008. \345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\225\264\346\225\260 (atoi).md" b/docs/solutions/0001-0099/string-to-integer-atoi.md similarity index 100% rename from "Solutions/0008. \345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\225\264\346\225\260 (atoi).md" rename to docs/solutions/0001-0099/string-to-integer-atoi.md diff --git "a/Solutions/0090. \345\255\220\351\233\206 II.md" b/docs/solutions/0001-0099/subsets-ii.md similarity index 100% rename from "Solutions/0090. \345\255\220\351\233\206 II.md" rename to docs/solutions/0001-0099/subsets-ii.md diff --git "a/Solutions/0078. \345\255\220\351\233\206.md" b/docs/solutions/0001-0099/subsets.md similarity index 97% rename from "Solutions/0078. \345\255\220\351\233\206.md" rename to docs/solutions/0001-0099/subsets.md index 386ad101..c75d2791 100644 --- "a/Solutions/0078. \345\255\220\351\233\206.md" +++ b/docs/solutions/0001-0099/subsets.md @@ -45,17 +45,13 @@ 下面我们根据回溯算法三步走,写出对应的回溯算法。 -1. **明确所有选择**:根据数组中每个位置上的元素选与不选两种选择,画出决策树,如下图所示。 - - - ![](https://qcdn.itcharge.cn/images/20220425210640.png) +![](https://qcdn.itcharge.cn/images/20220425210640.png) +1. **明确所有选择**:根据数组中每个位置上的元素选与不选两种选择,画出决策树,如上图所示。 2. **明确终止条件**: - - 当遍历到决策树的叶子节点时,就终止了。即当前路径搜索到末尾时,递归终止。 - -3. **将决策树和终止条件翻译成代码:** +3. **将决策树和终止条件翻译成代码**: 1. 定义回溯函数: - - `backtracking(nums, index):` 函数的传入参数是 `nums`(可选数组列表)和 `index`(代表当前正在考虑元素是 `nums[i]` ),全局变量是 `res`(存放所有符合条件结果的集合数组)和 `path`(存放当前符合条件的结果)。 - `backtracking(nums, index):` 函数代表的含义是:在选择 `nums[index]` 的情况下,递归选择剩下的元素。 2. 书写回溯函数主体(给出选择元素、递归搜索、撤销选择部分)。 @@ -70,7 +66,6 @@ backtracking(nums, i + 1) # 递归搜索 path.pop() # 撤销选择 ``` - 3. 明确递归终止条件(给出递归终止条件,以及递归终止时的处理方法)。 - 当遍历到决策树的叶子节点时,就终止了。也就是当正在考虑的元素位置到达数组末尾(即 `start >= len(nums)`)时,递归停止。 - 从决策树中也可以看出,子集需要存储的答案集合应该包含决策树上所有的节点,应该需要保存递归搜索的所有状态。所以无论是否达到终止条件,我们都应该将当前符合条件的结果放入到集合中。 diff --git "a/Solutions/0037. \350\247\243\346\225\260\347\213\254.md" b/docs/solutions/0001-0099/sudoku-solver.md similarity index 100% rename from "Solutions/0037. \350\247\243\346\225\260\347\213\254.md" rename to docs/solutions/0001-0099/sudoku-solver.md diff --git "a/Solutions/0024. \344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" b/docs/solutions/0001-0099/swap-nodes-in-pairs.md similarity index 100% rename from "Solutions/0024. \344\270\244\344\270\244\344\272\244\346\215\242\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" rename to docs/solutions/0001-0099/swap-nodes-in-pairs.md diff --git "a/Solutions/0042. \346\216\245\351\233\250\346\260\264.md" b/docs/solutions/0001-0099/trapping-rain-water.md similarity index 100% rename from "Solutions/0042. \346\216\245\351\233\250\346\260\264.md" rename to docs/solutions/0001-0099/trapping-rain-water.md diff --git "a/Solutions/0001. \344\270\244\346\225\260\344\271\213\345\222\214.md" b/docs/solutions/0001-0099/two-sum.md similarity index 100% rename from "Solutions/0001. \344\270\244\346\225\260\344\271\213\345\222\214.md" rename to docs/solutions/0001-0099/two-sum.md diff --git "a/Solutions/0095. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221 II.md" b/docs/solutions/0001-0099/unique-binary-search-trees-ii.md similarity index 100% rename from "Solutions/0095. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221 II.md" rename to docs/solutions/0001-0099/unique-binary-search-trees-ii.md diff --git "a/Solutions/0096. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" b/docs/solutions/0001-0099/unique-binary-search-trees.md similarity index 100% rename from "Solutions/0096. \344\270\215\345\220\214\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" rename to docs/solutions/0001-0099/unique-binary-search-trees.md diff --git "a/Solutions/0063. \344\270\215\345\220\214\350\267\257\345\276\204 II.md" b/docs/solutions/0001-0099/unique-paths-ii.md similarity index 100% rename from "Solutions/0063. \344\270\215\345\220\214\350\267\257\345\276\204 II.md" rename to docs/solutions/0001-0099/unique-paths-ii.md diff --git "a/Solutions/0062. \344\270\215\345\220\214\350\267\257\345\276\204.md" b/docs/solutions/0001-0099/unique-paths.md similarity index 100% rename from "Solutions/0062. \344\270\215\345\220\214\350\267\257\345\276\204.md" rename to docs/solutions/0001-0099/unique-paths.md diff --git "a/Solutions/0020. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md" b/docs/solutions/0001-0099/valid-parentheses.md similarity index 100% rename from "Solutions/0020. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267.md" rename to docs/solutions/0001-0099/valid-parentheses.md diff --git "a/Solutions/0036. \346\234\211\346\225\210\347\232\204\346\225\260\347\213\254.md" b/docs/solutions/0001-0099/valid-sudoku.md similarity index 100% rename from "Solutions/0036. \346\234\211\346\225\210\347\232\204\346\225\260\347\213\254.md" rename to docs/solutions/0001-0099/valid-sudoku.md diff --git "a/Solutions/0098. \351\252\214\350\257\201\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" b/docs/solutions/0001-0099/validate-binary-search-tree.md similarity index 100% rename from "Solutions/0098. \351\252\214\350\257\201\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" rename to docs/solutions/0001-0099/validate-binary-search-tree.md diff --git "a/Solutions/0044. \351\200\232\351\205\215\347\254\246\345\214\271\351\205\215.md" b/docs/solutions/0001-0099/wildcard-matching.md similarity index 100% rename from "Solutions/0044. \351\200\232\351\205\215\347\254\246\345\214\271\351\205\215.md" rename to docs/solutions/0001-0099/wildcard-matching.md diff --git "a/Solutions/0079. \345\215\225\350\257\215\346\220\234\347\264\242.md" b/docs/solutions/0001-0099/word-search.md similarity index 100% rename from "Solutions/0079. \345\215\225\350\257\215\346\220\234\347\264\242.md" rename to docs/solutions/0001-0099/word-search.md diff --git "a/Solutions/0110. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/0100-0199/balanced-binary-tree.md similarity index 100% rename from "Solutions/0110. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/0100-0199/balanced-binary-tree.md diff --git "a/Solutions/0122. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 II.md" b/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii.md similarity index 100% rename from "Solutions/0122. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 II.md" rename to docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii.md diff --git "a/Solutions/0123. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 III.md" b/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii.md similarity index 100% rename from "Solutions/0123. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 III.md" rename to docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii.md diff --git "a/Solutions/0188. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 IV.md" b/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv.md similarity index 100% rename from "Solutions/0188. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272 IV.md" rename to docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv.md diff --git "a/Solutions/0121. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272.md" b/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock.md similarity index 100% rename from "Solutions/0121. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272.md" rename to docs/solutions/0100-0199/best-time-to-buy-and-sell-stock.md diff --git "a/Solutions/0173. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" b/docs/solutions/0100-0199/binary-search-tree-iterator.md similarity index 100% rename from "Solutions/0173. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" rename to docs/solutions/0100-0199/binary-search-tree-iterator.md diff --git "a/Solutions/0107. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206 II.md" b/docs/solutions/0100-0199/binary-tree-level-order-traversal-ii.md similarity index 100% rename from "Solutions/0107. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206 II.md" rename to docs/solutions/0100-0199/binary-tree-level-order-traversal-ii.md diff --git "a/Solutions/0102. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" b/docs/solutions/0100-0199/binary-tree-level-order-traversal.md similarity index 100% rename from "Solutions/0102. \344\272\214\345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" rename to docs/solutions/0100-0199/binary-tree-level-order-traversal.md diff --git "a/Solutions/0124. \344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" b/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md similarity index 100% rename from "Solutions/0124. \344\272\214\345\217\211\346\240\221\344\270\255\347\232\204\346\234\200\345\244\247\350\267\257\345\276\204\345\222\214.md" rename to docs/solutions/0100-0199/binary-tree-maximum-path-sum.md diff --git "a/Solutions/0145. \344\272\214\345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" b/docs/solutions/0100-0199/binary-tree-postorder-traversal.md similarity index 100% rename from "Solutions/0145. \344\272\214\345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" rename to docs/solutions/0100-0199/binary-tree-postorder-traversal.md diff --git "a/Solutions/0144. \344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" b/docs/solutions/0100-0199/binary-tree-preorder-traversal.md similarity index 100% rename from "Solutions/0144. \344\272\214\345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" rename to docs/solutions/0100-0199/binary-tree-preorder-traversal.md diff --git "a/Solutions/0199. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276.md" b/docs/solutions/0100-0199/binary-tree-right-side-view.md similarity index 100% rename from "Solutions/0199. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\350\247\206\345\233\276.md" rename to docs/solutions/0100-0199/binary-tree-right-side-view.md diff --git "a/Solutions/0103. \344\272\214\345\217\211\346\240\221\347\232\204\351\224\257\351\275\277\345\275\242\345\261\202\345\272\217\351\201\215\345\216\206.md" b/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal.md similarity index 100% rename from "Solutions/0103. \344\272\214\345\217\211\346\240\221\347\232\204\351\224\257\351\275\277\345\275\242\345\261\202\345\272\217\351\201\215\345\216\206.md" rename to docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal.md diff --git "a/Solutions/0135. \345\210\206\345\217\221\347\263\226\346\236\234.md" b/docs/solutions/0100-0199/candy.md similarity index 100% rename from "Solutions/0135. \345\210\206\345\217\221\347\263\226\346\236\234.md" rename to docs/solutions/0100-0199/candy.md diff --git "a/Solutions/0133. \345\205\213\351\232\206\345\233\276.md" b/docs/solutions/0100-0199/clone-graph.md similarity index 100% rename from "Solutions/0133. \345\205\213\351\232\206\345\233\276.md" rename to docs/solutions/0100-0199/clone-graph.md diff --git "a/Solutions/0106. \344\273\216\344\270\255\345\272\217\344\270\216\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal.md similarity index 100% rename from "Solutions/0106. \344\273\216\344\270\255\345\272\217\344\270\216\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal.md diff --git "a/Solutions/0105. \344\273\216\345\211\215\345\272\217\344\270\216\344\270\255\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal.md similarity index 100% rename from "Solutions/0105. \344\273\216\345\211\215\345\272\217\344\270\216\344\270\255\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal.md diff --git "a/Solutions/0108. \345\260\206\346\234\211\345\272\217\346\225\260\347\273\204\350\275\254\346\215\242\344\270\272\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" b/docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree.md similarity index 100% rename from "Solutions/0108. \345\260\206\346\234\211\345\272\217\346\225\260\347\273\204\350\275\254\346\215\242\344\270\272\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" rename to docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree.md diff --git "a/Solutions/0138. \345\244\215\345\210\266\345\270\246\351\232\217\346\234\272\346\214\207\351\222\210\347\232\204\351\223\276\350\241\250.md" b/docs/solutions/0100-0199/copy-list-with-random-pointer.md similarity index 91% rename from "Solutions/0138. \345\244\215\345\210\266\345\270\246\351\232\217\346\234\272\346\214\207\351\222\210\347\232\204\351\223\276\350\241\250.md" rename to docs/solutions/0100-0199/copy-list-with-random-pointer.md index 7bea1029..b5db18c4 100644 --- "a/Solutions/0138. \345\244\215\345\210\266\345\270\246\351\232\217\346\234\272\346\214\207\351\222\210\347\232\204\351\223\276\350\241\250.md" +++ b/docs/solutions/0100-0199/copy-list-with-random-pointer.md @@ -1,11 +1,11 @@ -# [0138. 复制带随机指针的链表](https://leetcode.cn/problems/copy-list-with-random-pointer/) +# [0138. 随机链表的复制](https://leetcode.cn/problems/copy-list-with-random-pointer/) - 标签:哈希表、链表 - 难度:中等 ## 题目链接 -- [0138. 复制带随机指针的链表 - 力扣](https://leetcode.cn/problems/copy-list-with-random-pointer/) +- [0138. 随机链表的复制 - 力扣](https://leetcode.cn/problems/copy-list-with-random-pointer/) ## 题目大意 diff --git "a/Solutions/0115. \344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" b/docs/solutions/0100-0199/distinct-subsequences.md similarity index 100% rename from "Solutions/0115. \344\270\215\345\220\214\347\232\204\345\255\220\345\272\217\345\210\227.md" rename to docs/solutions/0100-0199/distinct-subsequences.md diff --git "a/Solutions/0150. \351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md" b/docs/solutions/0100-0199/evaluate-reverse-polish-notation.md similarity index 100% rename from "Solutions/0150. \351\200\206\346\263\242\345\205\260\350\241\250\350\276\276\345\274\217\346\261\202\345\200\274.md" rename to docs/solutions/0100-0199/evaluate-reverse-polish-notation.md diff --git "a/Solutions/0171. Excel \350\241\250\345\210\227\345\272\217\345\217\267.md" b/docs/solutions/0100-0199/excel-sheet-column-number.md similarity index 100% rename from "Solutions/0171. Excel \350\241\250\345\210\227\345\272\217\345\217\267.md" rename to docs/solutions/0100-0199/excel-sheet-column-number.md diff --git "a/Solutions/0168. Excel\350\241\250\345\210\227\345\220\215\347\247\260.md" b/docs/solutions/0100-0199/excel-sheet-column-title.md similarity index 82% rename from "Solutions/0168. Excel\350\241\250\345\210\227\345\220\215\347\247\260.md" rename to docs/solutions/0100-0199/excel-sheet-column-title.md index 0b18c679..bbbcb500 100644 --- "a/Solutions/0168. Excel\350\241\250\345\210\227\345\220\215\347\247\260.md" +++ b/docs/solutions/0100-0199/excel-sheet-column-title.md @@ -1,11 +1,11 @@ -# [0168. Excel表列名称](https://leetcode.cn/problems/excel-sheet-column-title/) +# [0168. Excel 表列名称](https://leetcode.cn/problems/excel-sheet-column-title/) - 标签:数学、字符串 - 难度:简单 ## 题目链接 -- [0168. Excel表列名称 - 力扣](https://leetcode.cn/problems/excel-sheet-column-title/) +- [0168. Excel 表列名称 - 力扣](https://leetcode.cn/problems/excel-sheet-column-title/) ## 题目大意 diff --git "a/Solutions/0172. \351\230\266\344\271\230\345\220\216\347\232\204\351\233\266.md" b/docs/solutions/0100-0199/factorial-trailing-zeroes.md similarity index 100% rename from "Solutions/0172. \351\230\266\344\271\230\345\220\216\347\232\204\351\233\266.md" rename to docs/solutions/0100-0199/factorial-trailing-zeroes.md diff --git "a/Solutions/0154. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274 II.md" b/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii.md similarity index 100% rename from "Solutions/0154. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274 II.md" rename to docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii.md diff --git "a/Solutions/0153. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274.md" b/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array.md similarity index 100% rename from "Solutions/0153. \345\257\273\346\211\276\346\227\213\350\275\254\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\260\217\345\200\274.md" rename to docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array.md diff --git "a/Solutions/0162. \345\257\273\346\211\276\345\263\260\345\200\274.md" b/docs/solutions/0100-0199/find-peak-element.md similarity index 100% rename from "Solutions/0162. \345\257\273\346\211\276\345\263\260\345\200\274.md" rename to docs/solutions/0100-0199/find-peak-element.md diff --git "a/Solutions/0166. \345\210\206\346\225\260\345\210\260\345\260\217\346\225\260.md" b/docs/solutions/0100-0199/fraction-to-recurring-decimal.md similarity index 100% rename from "Solutions/0166. \345\210\206\346\225\260\345\210\260\345\260\217\346\225\260.md" rename to docs/solutions/0100-0199/fraction-to-recurring-decimal.md diff --git "a/Solutions/0134. \345\212\240\346\262\271\347\253\231.md" b/docs/solutions/0100-0199/gas-station.md similarity index 100% rename from "Solutions/0134. \345\212\240\346\262\271\347\253\231.md" rename to docs/solutions/0100-0199/gas-station.md diff --git "a/Solutions/0198. \346\211\223\345\256\266\345\212\253\350\210\215.md" b/docs/solutions/0100-0199/house-robber.md similarity index 100% rename from "Solutions/0198. \346\211\223\345\256\266\345\212\253\350\210\215.md" rename to docs/solutions/0100-0199/house-robber.md diff --git a/docs/solutions/0100-0199/index.md b/docs/solutions/0100-0199/index.md new file mode 100644 index 00000000..5ec07d8f --- /dev/null +++ b/docs/solutions/0100-0199/index.md @@ -0,0 +1,72 @@ +## 本章内容 + +- [0100. 相同的树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) +- [0101. 对称二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree/) +- [0102. 二叉树的层序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal/) +- [0103. 二叉树的锯齿形层序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal/) +- [0104. 二叉树的最大深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) +- [0105. 从前序与中序遍历序列构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal/) +- [0106. 从中序与后序遍历序列构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal/) +- [0107. 二叉树的层序遍历 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal-ii/) +- [0108. 将有序数组转换为二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree/) +- [0110. 平衡二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree/) +- [0111. 二叉树的最小深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) +- [0112. 路径总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum/) +- [0113. 路径总和 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii/) +- [0115. 不同的子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/distinct-subsequences/) +- [0116. 填充每个节点的下一个右侧节点指针](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node/) +- [0117. 填充每个节点的下一个右侧节点指针 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii/) +- [0118. 杨辉三角](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle/) +- [0119. 杨辉三角 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii/) +- [0120. 三角形最小路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle/) +- [0121. 买卖股票的最佳时机](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock/) +- [0122. 买卖股票的最佳时机 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) +- [0123. 买卖股票的最佳时机 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii/) +- [0124. 二叉树中的最大路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) +- [0125. 验证回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) +- [0127. 单词接龙](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-ladder/) +- [0128. 最长连续序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) +- [0129. 求根节点到叶节点数字之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers/) +- [0130. 被围绕的区域](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/surrounded-regions/) +- [0131. 分割回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/palindrome-partitioning/) +- [0133. 克隆图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph/) +- [0134. 加油站](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station/) +- [0135. 分发糖果](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy/) +- [0136. 只出现一次的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) +- [0137. 只出现一次的数字 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number-ii/) +- [0138. 随机链表的复制](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer/) +- [0139. 单词拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break/) +- [0140. 单词拆分 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break-ii/) +- [0141. 环形链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle/) +- [0142. 环形链表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii/) +- [0143. 重排链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list/) +- [0144. 二叉树的前序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) +- [0145. 二叉树的后序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) +- [0147. 对链表进行插入排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/insertion-sort-list/) +- [0148. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list/) +- [0149. 直线上最多的点数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/max-points-on-a-line/) +- [0150. 逆波兰表达式求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/evaluate-reverse-polish-notation/) +- [0151. 反转字符串中的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string/) +- [0152. 乘积最大子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray/) +- [0153. 寻找旋转排序数组中的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array/) +- [0154. 寻找旋转排序数组中的最小值 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii/) +- [0155. 最小栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack/) +- [0159. 至多包含两个不同字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters/) +- [0160. 相交链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists/) +- [0162. 寻找峰值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element/) +- [0164. 最大间距](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap/) +- [0166. 分数到小数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/fraction-to-recurring-decimal/) +- [0167. 两数之和 II - 输入有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted/) +- [0168. Excel 表列名称](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-title/) +- [0169. 多数元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) +- [0170. 两数之和 III - 数据结构设计](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-iii-data-structure-design/) +- [0171. Excel 表列序号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-number/) +- [0172. 阶乘后的零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/factorial-trailing-zeroes/) +- [0173. 二叉搜索树迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-search-tree-iterator/) +- [0179. 最大数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number/) +- [0188. 买卖股票的最佳时机 IV](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv/) +- [0189. 轮转数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array/) +- [0190. 颠倒二进制位](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-bits/) +- [0191. 位1的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits/) +- [0198. 打家劫舍](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber/) +- [0199. 二叉树的右视图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) diff --git "a/Solutions/0147. \345\257\271\351\223\276\350\241\250\350\277\233\350\241\214\346\217\222\345\205\245\346\216\222\345\272\217.md" b/docs/solutions/0100-0199/insertion-sort-list.md similarity index 100% rename from "Solutions/0147. \345\257\271\351\223\276\350\241\250\350\277\233\350\241\214\346\217\222\345\205\245\346\216\222\345\272\217.md" rename to docs/solutions/0100-0199/insertion-sort-list.md diff --git "a/Solutions/0160. \347\233\270\344\272\244\351\223\276\350\241\250.md" b/docs/solutions/0100-0199/intersection-of-two-linked-lists.md similarity index 100% rename from "Solutions/0160. \347\233\270\344\272\244\351\223\276\350\241\250.md" rename to docs/solutions/0100-0199/intersection-of-two-linked-lists.md diff --git "a/Solutions/0179. \346\234\200\345\244\247\346\225\260.md" b/docs/solutions/0100-0199/largest-number.md similarity index 100% rename from "Solutions/0179. \346\234\200\345\244\247\346\225\260.md" rename to docs/solutions/0100-0199/largest-number.md diff --git "a/Solutions/0142. \347\216\257\345\275\242\351\223\276\350\241\250 II.md" b/docs/solutions/0100-0199/linked-list-cycle-ii.md similarity index 100% rename from "Solutions/0142. \347\216\257\345\275\242\351\223\276\350\241\250 II.md" rename to docs/solutions/0100-0199/linked-list-cycle-ii.md diff --git "a/Solutions/0141. \347\216\257\345\275\242\351\223\276\350\241\250.md" b/docs/solutions/0100-0199/linked-list-cycle.md similarity index 100% rename from "Solutions/0141. \347\216\257\345\275\242\351\223\276\350\241\250.md" rename to docs/solutions/0100-0199/linked-list-cycle.md diff --git "a/Solutions/0128. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" b/docs/solutions/0100-0199/longest-consecutive-sequence.md similarity index 100% rename from "Solutions/0128. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" rename to docs/solutions/0100-0199/longest-consecutive-sequence.md diff --git "a/Solutions/0159. \350\207\263\345\244\232\345\214\205\345\220\253\344\270\244\344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" b/docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters.md similarity index 100% rename from "Solutions/0159. \350\207\263\345\244\232\345\214\205\345\220\253\344\270\244\344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" rename to docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters.md diff --git "a/Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" b/docs/solutions/0100-0199/majority-element.md similarity index 100% rename from "Solutions/0169. \345\244\232\346\225\260\345\205\203\347\264\240.md" rename to docs/solutions/0100-0199/majority-element.md diff --git "a/Solutions/0149. \347\233\264\347\272\277\344\270\212\346\234\200\345\244\232\347\232\204\347\202\271\346\225\260.md" b/docs/solutions/0100-0199/max-points-on-a-line.md similarity index 100% rename from "Solutions/0149. \347\233\264\347\272\277\344\270\212\346\234\200\345\244\232\347\232\204\347\202\271\346\225\260.md" rename to docs/solutions/0100-0199/max-points-on-a-line.md diff --git "a/Solutions/0104. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\244\247\346\267\261\345\272\246.md" b/docs/solutions/0100-0199/maximum-depth-of-binary-tree.md similarity index 100% rename from "Solutions/0104. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\244\247\346\267\261\345\272\246.md" rename to docs/solutions/0100-0199/maximum-depth-of-binary-tree.md diff --git "a/Solutions/0164. \346\234\200\345\244\247\351\227\264\350\267\235.md" b/docs/solutions/0100-0199/maximum-gap.md similarity index 100% rename from "Solutions/0164. \346\234\200\345\244\247\351\227\264\350\267\235.md" rename to docs/solutions/0100-0199/maximum-gap.md diff --git "a/Solutions/0152. \344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/0100-0199/maximum-product-subarray.md similarity index 100% rename from "Solutions/0152. \344\271\230\347\247\257\346\234\200\345\244\247\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/0100-0199/maximum-product-subarray.md diff --git "a/Solutions/0155. \346\234\200\345\260\217\346\240\210.md" b/docs/solutions/0100-0199/min-stack.md similarity index 100% rename from "Solutions/0155. \346\234\200\345\260\217\346\240\210.md" rename to docs/solutions/0100-0199/min-stack.md diff --git "a/Solutions/0111. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" b/docs/solutions/0100-0199/minimum-depth-of-binary-tree.md similarity index 100% rename from "Solutions/0111. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\345\260\217\346\267\261\345\272\246.md" rename to docs/solutions/0100-0199/minimum-depth-of-binary-tree.md diff --git "a/Solutions/0191. \344\275\2151\347\232\204\344\270\252\346\225\260.md" b/docs/solutions/0100-0199/number-of-1-bits.md similarity index 100% rename from "Solutions/0191. \344\275\2151\347\232\204\344\270\252\346\225\260.md" rename to docs/solutions/0100-0199/number-of-1-bits.md diff --git "a/Solutions/0131. \345\210\206\345\211\262\345\233\236\346\226\207\344\270\262.md" b/docs/solutions/0100-0199/palindrome-partitioning.md similarity index 100% rename from "Solutions/0131. \345\210\206\345\211\262\345\233\236\346\226\207\344\270\262.md" rename to docs/solutions/0100-0199/palindrome-partitioning.md diff --git "a/Solutions/0119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" b/docs/solutions/0100-0199/pascals-triangle-ii.md similarity index 100% rename from "Solutions/0119. \346\235\250\350\276\211\344\270\211\350\247\222 II.md" rename to docs/solutions/0100-0199/pascals-triangle-ii.md diff --git "a/Solutions/0118. \346\235\250\350\276\211\344\270\211\350\247\222.md" b/docs/solutions/0100-0199/pascals-triangle.md similarity index 100% rename from "Solutions/0118. \346\235\250\350\276\211\344\270\211\350\247\222.md" rename to docs/solutions/0100-0199/pascals-triangle.md diff --git "a/Solutions/0113. \350\267\257\345\276\204\346\200\273\345\222\214 II.md" b/docs/solutions/0100-0199/path-sum-ii.md similarity index 100% rename from "Solutions/0113. \350\267\257\345\276\204\346\200\273\345\222\214 II.md" rename to docs/solutions/0100-0199/path-sum-ii.md diff --git "a/Solutions/0112. \350\267\257\345\276\204\346\200\273\345\222\214.md" b/docs/solutions/0100-0199/path-sum.md similarity index 100% rename from "Solutions/0112. \350\267\257\345\276\204\346\200\273\345\222\214.md" rename to docs/solutions/0100-0199/path-sum.md diff --git "a/Solutions/0117. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210 II.md" b/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii.md similarity index 100% rename from "Solutions/0117. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210 II.md" rename to docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii.md diff --git "a/Solutions/0116. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" b/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node.md similarity index 100% rename from "Solutions/0116. \345\241\253\345\205\205\346\257\217\344\270\252\350\212\202\347\202\271\347\232\204\344\270\213\344\270\200\344\270\252\345\217\263\344\276\247\350\212\202\347\202\271\346\214\207\351\222\210.md" rename to docs/solutions/0100-0199/populating-next-right-pointers-in-each-node.md diff --git "a/Solutions/0143. \351\207\215\346\216\222\351\223\276\350\241\250.md" b/docs/solutions/0100-0199/reorder-list.md similarity index 100% rename from "Solutions/0143. \351\207\215\346\216\222\351\223\276\350\241\250.md" rename to docs/solutions/0100-0199/reorder-list.md diff --git "a/Solutions/0190. \351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215.md" b/docs/solutions/0100-0199/reverse-bits.md similarity index 100% rename from "Solutions/0190. \351\242\240\345\200\222\344\272\214\350\277\233\345\210\266\344\275\215.md" rename to docs/solutions/0100-0199/reverse-bits.md diff --git "a/Solutions/0151. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md" b/docs/solutions/0100-0199/reverse-words-in-a-string.md similarity index 100% rename from "Solutions/0151. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215.md" rename to docs/solutions/0100-0199/reverse-words-in-a-string.md diff --git "a/Solutions/0189. \350\275\256\350\275\254\346\225\260\347\273\204.md" b/docs/solutions/0100-0199/rotate-array.md similarity index 100% rename from "Solutions/0189. \350\275\256\350\275\254\346\225\260\347\273\204.md" rename to docs/solutions/0100-0199/rotate-array.md diff --git "a/Solutions/0100. \347\233\270\345\220\214\347\232\204\346\240\221.md" b/docs/solutions/0100-0199/same-tree.md similarity index 100% rename from "Solutions/0100. \347\233\270\345\220\214\347\232\204\346\240\221.md" rename to docs/solutions/0100-0199/same-tree.md diff --git "a/Solutions/0137. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 II.md" b/docs/solutions/0100-0199/single-number-ii.md similarity index 100% rename from "Solutions/0137. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 II.md" rename to docs/solutions/0100-0199/single-number-ii.md diff --git "a/Solutions/0136. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" b/docs/solutions/0100-0199/single-number.md similarity index 100% rename from "Solutions/0136. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" rename to docs/solutions/0100-0199/single-number.md diff --git "a/Solutions/0148. \346\216\222\345\272\217\351\223\276\350\241\250.md" b/docs/solutions/0100-0199/sort-list.md similarity index 100% rename from "Solutions/0148. \346\216\222\345\272\217\351\223\276\350\241\250.md" rename to docs/solutions/0100-0199/sort-list.md diff --git "a/Solutions/0129. \346\261\202\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\346\225\260\345\255\227\344\271\213\345\222\214.md" b/docs/solutions/0100-0199/sum-root-to-leaf-numbers.md similarity index 100% rename from "Solutions/0129. \346\261\202\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\346\225\260\345\255\227\344\271\213\345\222\214.md" rename to docs/solutions/0100-0199/sum-root-to-leaf-numbers.md diff --git "a/Solutions/0130. \350\242\253\345\233\264\347\273\225\347\232\204\345\214\272\345\237\237.md" b/docs/solutions/0100-0199/surrounded-regions.md similarity index 100% rename from "Solutions/0130. \350\242\253\345\233\264\347\273\225\347\232\204\345\214\272\345\237\237.md" rename to docs/solutions/0100-0199/surrounded-regions.md diff --git "a/Solutions/0101. \345\257\271\347\247\260\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/0100-0199/symmetric-tree.md similarity index 100% rename from "Solutions/0101. \345\257\271\347\247\260\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/0100-0199/symmetric-tree.md diff --git "a/Solutions/0120. \344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" b/docs/solutions/0100-0199/triangle.md similarity index 100% rename from "Solutions/0120. \344\270\211\350\247\222\345\275\242\346\234\200\345\260\217\350\267\257\345\276\204\345\222\214.md" rename to docs/solutions/0100-0199/triangle.md diff --git "a/Solutions/0167. \344\270\244\346\225\260\344\271\213\345\222\214 II - \350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204.md" b/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted.md similarity index 100% rename from "Solutions/0167. \344\270\244\346\225\260\344\271\213\345\222\214 II - \350\276\223\345\205\245\346\234\211\345\272\217\346\225\260\347\273\204.md" rename to docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted.md diff --git "a/Solutions/0170. \344\270\244\346\225\260\344\271\213\345\222\214 III - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" b/docs/solutions/0100-0199/two-sum-iii-data-structure-design.md similarity index 100% rename from "Solutions/0170. \344\270\244\346\225\260\344\271\213\345\222\214 III - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" rename to docs/solutions/0100-0199/two-sum-iii-data-structure-design.md diff --git "a/Solutions/0125. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md" b/docs/solutions/0100-0199/valid-palindrome.md similarity index 100% rename from "Solutions/0125. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262.md" rename to docs/solutions/0100-0199/valid-palindrome.md diff --git "a/Solutions/0140. \345\215\225\350\257\215\346\213\206\345\210\206 II.md" b/docs/solutions/0100-0199/word-break-ii.md similarity index 100% rename from "Solutions/0140. \345\215\225\350\257\215\346\213\206\345\210\206 II.md" rename to docs/solutions/0100-0199/word-break-ii.md diff --git "a/Solutions/0139. \345\215\225\350\257\215\346\213\206\345\210\206.md" b/docs/solutions/0100-0199/word-break.md similarity index 100% rename from "Solutions/0139. \345\215\225\350\257\215\346\213\206\345\210\206.md" rename to docs/solutions/0100-0199/word-break.md diff --git "a/Solutions/0127. \345\215\225\350\257\215\346\216\245\351\276\231.md" b/docs/solutions/0100-0199/word-ladder.md similarity index 100% rename from "Solutions/0127. \345\215\225\350\257\215\346\216\245\351\276\231.md" rename to docs/solutions/0100-0199/word-ladder.md diff --git "a/Solutions/0259. \350\276\203\345\260\217\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" b/docs/solutions/0200-0299/3sum-smaller.md similarity index 100% rename from "Solutions/0259. \350\276\203\345\260\217\347\232\204\344\270\211\346\225\260\344\271\213\345\222\214.md" rename to docs/solutions/0200-0299/3sum-smaller.md diff --git "a/Solutions/0258. \345\220\204\344\275\215\347\233\270\345\212\240.md" b/docs/solutions/0200-0299/add-digits.md similarity index 100% rename from "Solutions/0258. \345\220\204\344\275\215\347\233\270\345\212\240.md" rename to docs/solutions/0200-0299/add-digits.md diff --git "a/Solutions/0227. \345\237\272\346\234\254\350\256\241\347\256\227\345\231\250 II.md" b/docs/solutions/0200-0299/basic-calculator-ii.md similarity index 100% rename from "Solutions/0227. \345\237\272\346\234\254\350\256\241\347\256\227\345\231\250 II.md" rename to docs/solutions/0200-0299/basic-calculator-ii.md diff --git "a/Solutions/0257. \344\272\214\345\217\211\346\240\221\347\232\204\346\211\200\346\234\211\350\267\257\345\276\204.md" b/docs/solutions/0200-0299/binary-tree-paths.md similarity index 100% rename from "Solutions/0257. \344\272\214\345\217\211\346\240\221\347\232\204\346\211\200\346\234\211\350\267\257\345\276\204.md" rename to docs/solutions/0200-0299/binary-tree-paths.md diff --git "a/Solutions/0201. \346\225\260\345\255\227\350\214\203\345\233\264\346\214\211\344\275\215\344\270\216.md" b/docs/solutions/0200-0299/bitwise-and-of-numbers-range.md similarity index 100% rename from "Solutions/0201. \346\225\260\345\255\227\350\214\203\345\233\264\346\214\211\344\275\215\344\270\216.md" rename to docs/solutions/0200-0299/bitwise-and-of-numbers-range.md diff --git "a/Solutions/0270. \346\234\200\346\216\245\350\277\221\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\200\274.md" b/docs/solutions/0200-0299/closest-binary-search-tree-value.md similarity index 100% rename from "Solutions/0270. \346\234\200\346\216\245\350\277\221\347\232\204\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\200\274.md" rename to docs/solutions/0200-0299/closest-binary-search-tree-value.md diff --git "a/Solutions/0219. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 II.md" b/docs/solutions/0200-0299/contains-duplicate-ii.md similarity index 100% rename from "Solutions/0219. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 II.md" rename to docs/solutions/0200-0299/contains-duplicate-ii.md diff --git "a/Solutions/0220. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 III.md" b/docs/solutions/0200-0299/contains-duplicate-iii.md similarity index 100% rename from "Solutions/0220. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240 III.md" rename to docs/solutions/0200-0299/contains-duplicate-iii.md diff --git "a/Solutions/0217. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240.md" b/docs/solutions/0200-0299/contains-duplicate.md similarity index 100% rename from "Solutions/0217. \345\255\230\345\234\250\351\207\215\345\244\215\345\205\203\347\264\240.md" rename to docs/solutions/0200-0299/contains-duplicate.md diff --git "a/Solutions/0222. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\347\232\204\350\212\202\347\202\271\344\270\252\346\225\260.md" b/docs/solutions/0200-0299/count-complete-tree-nodes.md similarity index 100% rename from "Solutions/0222. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\347\232\204\350\212\202\347\202\271\344\270\252\346\225\260.md" rename to docs/solutions/0200-0299/count-complete-tree-nodes.md diff --git "a/Solutions/0204. \350\256\241\346\225\260\350\264\250\346\225\260.md" b/docs/solutions/0200-0299/count-primes.md similarity index 100% rename from "Solutions/0204. \350\256\241\346\225\260\350\264\250\346\225\260.md" rename to docs/solutions/0200-0299/count-primes.md diff --git "a/Solutions/0210. \350\257\276\347\250\213\350\241\250 II.md" b/docs/solutions/0200-0299/course-schedule-ii.md similarity index 100% rename from "Solutions/0210. \350\257\276\347\250\213\350\241\250 II.md" rename to docs/solutions/0200-0299/course-schedule-ii.md diff --git "a/Solutions/0207. \350\257\276\347\250\213\350\241\250.md" b/docs/solutions/0200-0299/course-schedule.md similarity index 100% rename from "Solutions/0207. \350\257\276\347\250\213\350\241\250.md" rename to docs/solutions/0200-0299/course-schedule.md diff --git "a/Solutions/0237. \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" b/docs/solutions/0200-0299/delete-node-in-a-linked-list.md similarity index 100% rename from "Solutions/0237. \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\347\232\204\350\212\202\347\202\271.md" rename to docs/solutions/0200-0299/delete-node-in-a-linked-list.md diff --git "a/Solutions/0211. \346\267\273\345\212\240\344\270\216\346\220\234\347\264\242\345\215\225\350\257\215 - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" b/docs/solutions/0200-0299/design-add-and-search-words-data-structure.md similarity index 100% rename from "Solutions/0211. \346\267\273\345\212\240\344\270\216\346\220\234\347\264\242\345\215\225\350\257\215 - \346\225\260\346\215\256\347\273\223\346\236\204\350\256\276\350\256\241.md" rename to docs/solutions/0200-0299/design-add-and-search-words-data-structure.md diff --git "a/Solutions/0241. \344\270\272\350\277\220\347\256\227\350\241\250\350\276\276\345\274\217\350\256\276\350\256\241\344\274\230\345\205\210\347\272\247.md" b/docs/solutions/0200-0299/different-ways-to-add-parentheses.md similarity index 100% rename from "Solutions/0241. \344\270\272\350\277\220\347\256\227\350\241\250\350\276\276\345\274\217\350\256\276\350\256\241\344\274\230\345\205\210\347\272\247.md" rename to docs/solutions/0200-0299/different-ways-to-add-parentheses.md diff --git "a/Solutions/0295. \346\225\260\346\215\256\346\265\201\347\232\204\344\270\255\344\275\215\346\225\260.md" b/docs/solutions/0200-0299/find-median-from-data-stream.md similarity index 100% rename from "Solutions/0295. \346\225\260\346\215\256\346\265\201\347\232\204\344\270\255\344\275\215\346\225\260.md" rename to docs/solutions/0200-0299/find-median-from-data-stream.md diff --git "a/Solutions/0287. \345\257\273\346\211\276\351\207\215\345\244\215\346\225\260.md" b/docs/solutions/0200-0299/find-the-duplicate-number.md similarity index 100% rename from "Solutions/0287. \345\257\273\346\211\276\351\207\215\345\244\215\346\225\260.md" rename to docs/solutions/0200-0299/find-the-duplicate-number.md diff --git "a/Solutions/0278. \347\254\254\344\270\200\344\270\252\351\224\231\350\257\257\347\232\204\347\211\210\346\234\254.md" b/docs/solutions/0200-0299/first-bad-version.md similarity index 100% rename from "Solutions/0278. \347\254\254\344\270\200\344\270\252\351\224\231\350\257\257\347\232\204\347\211\210\346\234\254.md" rename to docs/solutions/0200-0299/first-bad-version.md diff --git "a/Solutions/0289. \347\224\237\345\221\275\346\270\270\346\210\217.md" b/docs/solutions/0200-0299/game-of-life.md similarity index 100% rename from "Solutions/0289. \347\224\237\345\221\275\346\270\270\346\210\217.md" rename to docs/solutions/0200-0299/game-of-life.md diff --git "a/Solutions/0249. \347\247\273\344\275\215\345\255\227\347\254\246\344\270\262\345\210\206\347\273\204.md" b/docs/solutions/0200-0299/group-shifted-strings.md similarity index 100% rename from "Solutions/0249. \347\247\273\344\275\215\345\255\227\347\254\246\344\270\262\345\210\206\347\273\204.md" rename to docs/solutions/0200-0299/group-shifted-strings.md diff --git "a/Solutions/0202. \345\277\253\344\271\220\346\225\260.md" b/docs/solutions/0200-0299/happy-number.md similarity index 100% rename from "Solutions/0202. \345\277\253\344\271\220\346\225\260.md" rename to docs/solutions/0200-0299/happy-number.md diff --git "a/Solutions/0213. \346\211\223\345\256\266\345\212\253\350\210\215 II.md" b/docs/solutions/0200-0299/house-robber-ii.md similarity index 100% rename from "Solutions/0213. \346\211\223\345\256\266\345\212\253\350\210\215 II.md" rename to docs/solutions/0200-0299/house-robber-ii.md diff --git "a/Solutions/0232. \347\224\250\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" b/docs/solutions/0200-0299/implement-queue-using-stacks.md similarity index 100% rename from "Solutions/0232. \347\224\250\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" rename to docs/solutions/0200-0299/implement-queue-using-stacks.md diff --git "a/Solutions/0225. \347\224\250\351\230\237\345\210\227\345\256\236\347\216\260\346\240\210.md" b/docs/solutions/0200-0299/implement-stack-using-queues.md similarity index 100% rename from "Solutions/0225. \347\224\250\351\230\237\345\210\227\345\256\236\347\216\260\346\240\210.md" rename to docs/solutions/0200-0299/implement-stack-using-queues.md diff --git "a/Solutions/0208. \345\256\236\347\216\260 Trie (\345\211\215\347\274\200\346\240\221).md" b/docs/solutions/0200-0299/implement-trie-prefix-tree.md similarity index 100% rename from "Solutions/0208. \345\256\236\347\216\260 Trie (\345\211\215\347\274\200\346\240\221).md" rename to docs/solutions/0200-0299/implement-trie-prefix-tree.md diff --git a/docs/solutions/0200-0299/index.md b/docs/solutions/0200-0299/index.md new file mode 100644 index 00000000..74bd0ceb --- /dev/null +++ b/docs/solutions/0200-0299/index.md @@ -0,0 +1,60 @@ +## 本章内容 + +- [0200. 岛屿数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) +- [0201. 数字范围按位与](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/bitwise-and-of-numbers-range/) +- [0202. 快乐数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/happy-number/) +- [0203. 移除链表元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/remove-linked-list-elements/) +- [0204. 计数质数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-primes/) +- [0205. 同构字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/isomorphic-strings/) +- [0206. 反转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) +- [0207. 课程表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule/) +- [0208. 实现 Trie (前缀树)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree/) +- [0209. 长度最小的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) +- [0210. 课程表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii/) +- [0211. 添加与搜索单词 - 数据结构设计](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/design-add-and-search-words-data-structure/) +- [0212. 单词搜索 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-search-ii/) +- [0213. 打家劫舍 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii/) +- [0215. 数组中的第K个最大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) +- [0217. 存在重复元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate/) +- [0218. 天际线问题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem/) +- [0219. 存在重复元素 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-ii/) +- [0220. 存在重复元素 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii/) +- [0221. 最大正方形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) +- [0222. 完全二叉树的节点个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-complete-tree-nodes/) +- [0223. 矩形面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/rectangle-area/) +- [0225. 用队列实现栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues/) +- [0226. 翻转二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) +- [0227. 基本计算器 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii/) +- [0231. 2 的幂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/power-of-two/) +- [0232. 用栈实现队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks/) +- [0233. 数字 1 的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-digit-one/) +- [0234. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list/) +- [0235. 二叉搜索树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree/) +- [0236. 二叉树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree/) +- [0237. 删除链表中的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/delete-node-in-a-linked-list/) +- [0238. 除自身以外数组的乘积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/product-of-array-except-self/) +- [0239. 滑动窗口最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) +- [0240. 搜索二维矩阵 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii/) +- [0241. 为运算表达式设计优先级](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/different-ways-to-add-parentheses/) +- [0242. 有效的字母异位词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram/) +- [0249. 移位字符串分组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/group-shifted-strings/) +- [0257. 二叉树的所有路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/binary-tree-paths/) +- [0258. 各位相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/add-digits/) +- [0259. 较小的三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller/) +- [0260. 只出现一次的数字 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/single-number-iii/) +- [0263. 丑数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number/) +- [0264. 丑数 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number-ii/) +- [0268. 丢失的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) +- [0270. 最接近的二叉搜索树值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/closest-binary-search-tree-value/) +- [0278. 第一个错误的版本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/first-bad-version/) +- [0279. 完全平方数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares/) +- [0283. 移动零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) +- [0285. 二叉搜索树中的中序后继](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/inorder-successor-in-bst/) +- [0286. 墙与门](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/walls-and-gates/) +- [0287. 寻找重复数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number/) +- [0288. 单词的唯一缩写](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/unique-word-abbreviation/) +- [0289. 生命游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/game-of-life/) +- [0290. 单词规律](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-pattern/) +- [0292. Nim 游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/nim-game/) +- [0295. 数据流的中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream/) +- [0297. 二叉树的序列化与反序列化](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree/) diff --git "a/Solutions/0285. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" b/docs/solutions/0200-0299/inorder-successor-in-bst.md similarity index 100% rename from "Solutions/0285. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" rename to docs/solutions/0200-0299/inorder-successor-in-bst.md diff --git "a/Solutions/0226. \347\277\273\350\275\254\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/0200-0299/invert-binary-tree.md similarity index 100% rename from "Solutions/0226. \347\277\273\350\275\254\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/0200-0299/invert-binary-tree.md diff --git "a/Solutions/0205. \345\220\214\346\236\204\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/0200-0299/isomorphic-strings.md similarity index 100% rename from "Solutions/0205. \345\220\214\346\236\204\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/0200-0299/isomorphic-strings.md diff --git "a/Solutions/0215. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254K\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.md" b/docs/solutions/0200-0299/kth-largest-element-in-an-array.md similarity index 100% rename from "Solutions/0215. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254K\344\270\252\346\234\200\345\244\247\345\205\203\347\264\240.md" rename to docs/solutions/0200-0299/kth-largest-element-in-an-array.md diff --git "a/Solutions/0235. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" b/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree.md similarity index 100% rename from "Solutions/0235. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" rename to docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree.md diff --git "a/Solutions/0236. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" b/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree.md similarity index 100% rename from "Solutions/0236. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" rename to docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree.md diff --git "a/Solutions/0221. \346\234\200\345\244\247\346\255\243\346\226\271\345\275\242.md" b/docs/solutions/0200-0299/maximal-square.md similarity index 100% rename from "Solutions/0221. \346\234\200\345\244\247\346\255\243\346\226\271\345\275\242.md" rename to docs/solutions/0200-0299/maximal-square.md diff --git "a/Solutions/0209. \351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/0200-0299/minimum-size-subarray-sum.md similarity index 100% rename from "Solutions/0209. \351\225\277\345\272\246\346\234\200\345\260\217\347\232\204\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/0200-0299/minimum-size-subarray-sum.md diff --git "a/Solutions/0268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.md" b/docs/solutions/0200-0299/missing-number.md similarity index 100% rename from "Solutions/0268. \344\270\242\345\244\261\347\232\204\346\225\260\345\255\227.md" rename to docs/solutions/0200-0299/missing-number.md diff --git "a/Solutions/0283. \347\247\273\345\212\250\351\233\266.md" b/docs/solutions/0200-0299/move-zeroes.md similarity index 100% rename from "Solutions/0283. \347\247\273\345\212\250\351\233\266.md" rename to docs/solutions/0200-0299/move-zeroes.md diff --git "a/Solutions/0292. Nim \346\270\270\346\210\217.md" b/docs/solutions/0200-0299/nim-game.md similarity index 100% rename from "Solutions/0292. Nim \346\270\270\346\210\217.md" rename to docs/solutions/0200-0299/nim-game.md diff --git "a/Solutions/0233. \346\225\260\345\255\227 1 \347\232\204\344\270\252\346\225\260.md" b/docs/solutions/0200-0299/number-of-digit-one.md similarity index 100% rename from "Solutions/0233. \346\225\260\345\255\227 1 \347\232\204\344\270\252\346\225\260.md" rename to docs/solutions/0200-0299/number-of-digit-one.md diff --git "a/Solutions/0200. \345\262\233\345\261\277\346\225\260\351\207\217.md" b/docs/solutions/0200-0299/number-of-islands.md similarity index 100% rename from "Solutions/0200. \345\262\233\345\261\277\346\225\260\351\207\217.md" rename to docs/solutions/0200-0299/number-of-islands.md diff --git "a/Solutions/0234. \345\233\236\346\226\207\351\223\276\350\241\250.md" b/docs/solutions/0200-0299/palindrome-linked-list.md similarity index 100% rename from "Solutions/0234. \345\233\236\346\226\207\351\223\276\350\241\250.md" rename to docs/solutions/0200-0299/palindrome-linked-list.md diff --git "a/Solutions/0279. \345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" b/docs/solutions/0200-0299/perfect-squares.md similarity index 100% rename from "Solutions/0279. \345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" rename to docs/solutions/0200-0299/perfect-squares.md diff --git "a/Solutions/0231. 2 \347\232\204\345\271\202.md" b/docs/solutions/0200-0299/power-of-two.md similarity index 100% rename from "Solutions/0231. 2 \347\232\204\345\271\202.md" rename to docs/solutions/0200-0299/power-of-two.md diff --git "a/Solutions/0238. \351\231\244\350\207\252\350\272\253\344\273\245\345\244\226\346\225\260\347\273\204\347\232\204\344\271\230\347\247\257.md" b/docs/solutions/0200-0299/product-of-array-except-self.md similarity index 100% rename from "Solutions/0238. \351\231\244\350\207\252\350\272\253\344\273\245\345\244\226\346\225\260\347\273\204\347\232\204\344\271\230\347\247\257.md" rename to docs/solutions/0200-0299/product-of-array-except-self.md diff --git "a/Solutions/0223. \347\237\251\345\275\242\351\235\242\347\247\257.md" b/docs/solutions/0200-0299/rectangle-area.md similarity index 100% rename from "Solutions/0223. \347\237\251\345\275\242\351\235\242\347\247\257.md" rename to docs/solutions/0200-0299/rectangle-area.md diff --git "a/Solutions/0203. \347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md" b/docs/solutions/0200-0299/remove-linked-list-elements.md similarity index 100% rename from "Solutions/0203. \347\247\273\351\231\244\351\223\276\350\241\250\345\205\203\347\264\240.md" rename to docs/solutions/0200-0299/remove-linked-list-elements.md diff --git "a/Solutions/0206. \345\217\215\350\275\254\351\223\276\350\241\250.md" b/docs/solutions/0200-0299/reverse-linked-list.md similarity index 100% rename from "Solutions/0206. \345\217\215\350\275\254\351\223\276\350\241\250.md" rename to docs/solutions/0200-0299/reverse-linked-list.md diff --git "a/Solutions/0240. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265 II.md" b/docs/solutions/0200-0299/search-a-2d-matrix-ii.md similarity index 100% rename from "Solutions/0240. \346\220\234\347\264\242\344\272\214\347\273\264\347\237\251\351\230\265 II.md" rename to docs/solutions/0200-0299/search-a-2d-matrix-ii.md diff --git "a/Solutions/0297. \344\272\214\345\217\211\346\240\221\347\232\204\345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226.md" b/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree.md similarity index 100% rename from "Solutions/0297. \344\272\214\345\217\211\346\240\221\347\232\204\345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226.md" rename to docs/solutions/0200-0299/serialize-and-deserialize-binary-tree.md diff --git "a/Solutions/0260. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 III.md" b/docs/solutions/0200-0299/single-number-iii.md similarity index 100% rename from "Solutions/0260. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227 III.md" rename to docs/solutions/0200-0299/single-number-iii.md diff --git "a/Solutions/0239. \346\273\221\345\212\250\347\252\227\345\217\243\346\234\200\345\244\247\345\200\274.md" b/docs/solutions/0200-0299/sliding-window-maximum.md similarity index 100% rename from "Solutions/0239. \346\273\221\345\212\250\347\252\227\345\217\243\346\234\200\345\244\247\345\200\274.md" rename to docs/solutions/0200-0299/sliding-window-maximum.md diff --git "a/Solutions/0218. \345\244\251\351\231\205\347\272\277\351\227\256\351\242\230.md" b/docs/solutions/0200-0299/the-skyline-problem.md similarity index 100% rename from "Solutions/0218. \345\244\251\351\231\205\347\272\277\351\227\256\351\242\230.md" rename to docs/solutions/0200-0299/the-skyline-problem.md diff --git "a/Solutions/0264. \344\270\221\346\225\260 II.md" b/docs/solutions/0200-0299/ugly-number-ii.md similarity index 100% rename from "Solutions/0264. \344\270\221\346\225\260 II.md" rename to docs/solutions/0200-0299/ugly-number-ii.md diff --git "a/Solutions/0263. \344\270\221\346\225\260.md" b/docs/solutions/0200-0299/ugly-number.md similarity index 100% rename from "Solutions/0263. \344\270\221\346\225\260.md" rename to docs/solutions/0200-0299/ugly-number.md diff --git "a/Solutions/0288. \345\215\225\350\257\215\347\232\204\345\224\257\344\270\200\347\274\251\345\206\231.md" b/docs/solutions/0200-0299/unique-word-abbreviation.md similarity index 100% rename from "Solutions/0288. \345\215\225\350\257\215\347\232\204\345\224\257\344\270\200\347\274\251\345\206\231.md" rename to docs/solutions/0200-0299/unique-word-abbreviation.md diff --git "a/Solutions/0242. \346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" b/docs/solutions/0200-0299/valid-anagram.md similarity index 100% rename from "Solutions/0242. \346\234\211\346\225\210\347\232\204\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" rename to docs/solutions/0200-0299/valid-anagram.md diff --git "a/Solutions/0286. \345\242\231\344\270\216\351\227\250.md" b/docs/solutions/0200-0299/walls-and-gates.md similarity index 100% rename from "Solutions/0286. \345\242\231\344\270\216\351\227\250.md" rename to docs/solutions/0200-0299/walls-and-gates.md diff --git "a/Solutions/0290. \345\215\225\350\257\215\350\247\204\345\276\213.md" b/docs/solutions/0200-0299/word-pattern.md similarity index 100% rename from "Solutions/0290. \345\215\225\350\257\215\350\247\204\345\276\213.md" rename to docs/solutions/0200-0299/word-pattern.md diff --git "a/Solutions/0212. \345\215\225\350\257\215\346\220\234\347\264\242 II.md" b/docs/solutions/0200-0299/word-search-ii.md similarity index 100% rename from "Solutions/0212. \345\215\225\350\257\215\346\220\234\347\264\242 II.md" rename to docs/solutions/0200-0299/word-search-ii.md diff --git "a/Solutions/0351. \345\256\211\345\215\223\347\263\273\347\273\237\346\211\213\345\212\277\350\247\243\351\224\201.md" b/docs/solutions/0300-0399/android-unlock-patterns.md similarity index 97% rename from "Solutions/0351. \345\256\211\345\215\223\347\263\273\347\273\237\346\211\213\345\212\277\350\247\243\351\224\201.md" rename to docs/solutions/0300-0399/android-unlock-patterns.md index 21491f10..e29b9f99 100644 --- "a/Solutions/0351. \345\256\211\345\215\223\347\263\273\347\273\237\346\211\213\345\212\277\350\247\243\351\224\201.md" +++ b/docs/solutions/0300-0399/android-unlock-patterns.md @@ -19,8 +19,7 @@ - 解锁模式中所有点不能重复。 - 如果解锁模式中两个点是按顺序经过的,那么这两个点之间的手势轨迹不能跨过其他任何未被经过的点。 -- 一些有效和无效解锁模式示例: - - ![](https://assets.leetcode.com/uploads/2018/10/12/android-unlock.png) +- 一些有效和无效解锁模式示例:![](https://assets.leetcode.com/uploads/2018/10/12/android-unlock.png) - 无效手势:$[4,1,3,6]$,连接点 $1$ 和点 $3$ 时经过了未被连接过的 $2$ 号点。 - 无效手势:$[4,1,9,2]$,连接点 $1$ 和点 $9$ 时经过了未被连接过的 $5$ 号点。 - 有效手势:$[2,4,1,3,6]$,连接点 $1$ 和点 $3$ 是有效的,因为虽然它经过了点 $2$,但是点 $2$ 在该手势中之前已经被连过了。 diff --git "a/Solutions/0309. \346\234\200\344\275\263\344\271\260\345\215\226\350\202\241\347\245\250\346\227\266\346\234\272\345\220\253\345\206\267\345\206\273\346\234\237.md" b/docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown.md similarity index 93% rename from "Solutions/0309. \346\234\200\344\275\263\344\271\260\345\215\226\350\202\241\347\245\250\346\227\266\346\234\272\345\220\253\345\206\267\345\206\273\346\234\237.md" rename to docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown.md index d70a62b5..6d0c1530 100644 --- "a/Solutions/0309. \346\234\200\344\275\263\344\271\260\345\215\226\350\202\241\347\245\250\346\227\266\346\234\272\345\220\253\345\206\267\345\206\273\346\234\237.md" +++ b/docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown.md @@ -1,11 +1,11 @@ -# [0309. 最佳买卖股票时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) +# [0309. 买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) - 标签:数组、动态规划 - 难度:中等 ## 题目链接 -- [0309. 最佳买卖股票时机含冷冻期 - 力扣](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) +- [0309. 买卖股票的最佳时机含冷冻期 - 力扣](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) ## 题目大意 diff --git "a/Solutions/0312. \346\210\263\346\260\224\347\220\203.md" b/docs/solutions/0300-0399/burst-balloons.md similarity index 100% rename from "Solutions/0312. \346\210\263\346\260\224\347\220\203.md" rename to docs/solutions/0300-0399/burst-balloons.md diff --git "a/Solutions/0322. \351\233\266\351\222\261\345\205\221\346\215\242.md" b/docs/solutions/0300-0399/coin-change.md similarity index 100% rename from "Solutions/0322. \351\233\266\351\222\261\345\205\221\346\215\242.md" rename to docs/solutions/0300-0399/coin-change.md diff --git "a/Solutions/0377. \347\273\204\345\220\210\346\200\273\345\222\214 \342\205\243.md" b/docs/solutions/0300-0399/combination-sum-iv.md similarity index 100% rename from "Solutions/0377. \347\273\204\345\220\210\346\200\273\345\222\214 \342\205\243.md" rename to docs/solutions/0300-0399/combination-sum-iv.md diff --git "a/Solutions/0357. \347\273\237\350\256\241\345\220\204\344\275\215\346\225\260\345\255\227\351\203\275\344\270\215\345\220\214\347\232\204\346\225\260\345\255\227\344\270\252\346\225\260.md" b/docs/solutions/0300-0399/count-numbers-with-unique-digits.md similarity index 100% rename from "Solutions/0357. \347\273\237\350\256\241\345\220\204\344\275\215\346\225\260\345\255\227\351\203\275\344\270\215\345\220\214\347\232\204\346\225\260\345\255\227\344\270\252\346\225\260.md" rename to docs/solutions/0300-0399/count-numbers-with-unique-digits.md diff --git "a/Solutions/0315. \350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.md" b/docs/solutions/0300-0399/count-of-smaller-numbers-after-self.md similarity index 100% rename from "Solutions/0315. \350\256\241\347\256\227\345\217\263\344\276\247\345\260\217\344\272\216\345\275\223\345\211\215\345\205\203\347\264\240\347\232\204\344\270\252\346\225\260.md" rename to docs/solutions/0300-0399/count-of-smaller-numbers-after-self.md diff --git "a/Solutions/0338. \346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" b/docs/solutions/0300-0399/counting-bits.md similarity index 100% rename from "Solutions/0338. \346\257\224\347\211\271\344\275\215\350\256\241\346\225\260.md" rename to docs/solutions/0300-0399/counting-bits.md diff --git "a/Solutions/0394. \345\255\227\347\254\246\344\270\262\350\247\243\347\240\201.md" b/docs/solutions/0300-0399/decode-string.md similarity index 100% rename from "Solutions/0394. \345\255\227\347\254\246\344\270\262\350\247\243\347\240\201.md" rename to docs/solutions/0300-0399/decode-string.md diff --git "a/Solutions/0399. \351\231\244\346\263\225\346\261\202\345\200\274.md" b/docs/solutions/0300-0399/evaluate-division.md similarity index 100% rename from "Solutions/0399. \351\231\244\346\263\225\346\261\202\345\200\274.md" rename to docs/solutions/0300-0399/evaluate-division.md diff --git "a/Solutions/0389. \346\211\276\344\270\215\345\220\214.md" b/docs/solutions/0300-0399/find-the-difference.md similarity index 100% rename from "Solutions/0389. \346\211\276\344\270\215\345\220\214.md" rename to docs/solutions/0300-0399/find-the-difference.md diff --git "a/Solutions/0387. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254\344\270\200\344\270\252\345\224\257\344\270\200\345\255\227\347\254\246.md" b/docs/solutions/0300-0399/first-unique-character-in-a-string.md similarity index 100% rename from "Solutions/0387. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\347\254\254\344\270\200\344\270\252\345\224\257\344\270\200\345\255\227\347\254\246.md" rename to docs/solutions/0300-0399/first-unique-character-in-a-string.md diff --git "a/Solutions/0341. \346\211\201\345\271\263\345\214\226\345\265\214\345\245\227\345\210\227\350\241\250\350\277\255\344\273\243\345\231\250.md" b/docs/solutions/0300-0399/flatten-nested-list-iterator.md similarity index 100% rename from "Solutions/0341. \346\211\201\345\271\263\345\214\226\345\265\214\345\245\227\345\210\227\350\241\250\350\277\255\344\273\243\345\231\250.md" rename to docs/solutions/0300-0399/flatten-nested-list-iterator.md diff --git "a/Solutions/0375. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217 II.md" b/docs/solutions/0300-0399/guess-number-higher-or-lower-ii.md similarity index 100% rename from "Solutions/0375. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217 II.md" rename to docs/solutions/0300-0399/guess-number-higher-or-lower-ii.md diff --git "a/Solutions/0374. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217.md" b/docs/solutions/0300-0399/guess-number-higher-or-lower.md similarity index 100% rename from "Solutions/0374. \347\214\234\346\225\260\345\255\227\345\244\247\345\260\217.md" rename to docs/solutions/0300-0399/guess-number-higher-or-lower.md diff --git "a/Solutions/0337. \346\211\223\345\256\266\345\212\253\350\210\215 III.md" b/docs/solutions/0300-0399/house-robber-iii.md similarity index 100% rename from "Solutions/0337. \346\211\223\345\256\266\345\212\253\350\210\215 III.md" rename to docs/solutions/0300-0399/house-robber-iii.md diff --git "a/Solutions/0334. \351\200\222\345\242\236\347\232\204\344\270\211\345\205\203\345\255\220\345\272\217\345\210\227.md" b/docs/solutions/0300-0399/increasing-triplet-subsequence.md similarity index 100% rename from "Solutions/0334. \351\200\222\345\242\236\347\232\204\344\270\211\345\205\203\345\255\220\345\272\217\345\210\227.md" rename to docs/solutions/0300-0399/increasing-triplet-subsequence.md diff --git a/docs/solutions/0300-0399/index.md b/docs/solutions/0300-0399/index.md new file mode 100644 index 00000000..685909be --- /dev/null +++ b/docs/solutions/0300-0399/index.md @@ -0,0 +1,56 @@ +## 本章内容 + +- [0300. 最长递增子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence/) +- [0303. 区域和检索 - 数组不可变](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable/) +- [0304. 二维区域和检索 - 矩阵不可变](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-2d-immutable/) +- [0307. 区域和检索 - 数组可修改](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable/) +- [0309. 买卖股票的最佳时机含冷冻期](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown/) +- [0310. 最小高度树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/minimum-height-trees/) +- [0312. 戳气球](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/burst-balloons/) +- [0315. 计算右侧小于当前元素的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self/) +- [0316. 去除重复字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/remove-duplicate-letters/) +- [0318. 最大单词长度乘积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/maximum-product-of-word-lengths/) +- [0322. 零钱兑换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) +- [0323. 无向图中连通分量的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph/) +- [0324. 摆动排序 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-sort-ii/) +- [0326. 3 的幂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-three/) +- [0328. 奇偶链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list/) +- [0329. 矩阵中的最长递增路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix/) +- [0334. 递增的三元子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/increasing-triplet-subsequence/) +- [0336. 回文对](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/palindrome-pairs/) +- [0337. 打家劫舍 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/house-robber-iii/) +- [0338. 比特位计数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits/) +- [0340. 至多包含 K 个不同字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters/) +- [0341. 扁平化嵌套列表迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/flatten-nested-list-iterator/) +- [0342. 4的幂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-four/) +- [0343. 整数拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break/) +- [0344. 反转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) +- [0345. 反转字符串中的元音字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-vowels-of-a-string/) +- [0346. 数据流中的移动平均值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/moving-average-from-data-stream/) +- [0347. 前 K 个高频元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements/) +- [0349. 两个数组的交集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays/) +- [0350. 两个数组的交集 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii/) +- [0351. 安卓系统手势解锁](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/android-unlock-patterns/) +- [0354. 俄罗斯套娃信封问题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes/) +- [0357. 统计各位数字都不同的数字个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-numbers-with-unique-digits/) +- [0359. 日志速率限制器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/logger-rate-limiter/) +- [0360. 有序转化数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sort-transformed-array/) +- [0367. 有效的完全平方数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/valid-perfect-square/) +- [0370. 区间加法](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-addition/) +- [0371. 两整数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sum-of-two-integers/) +- [0374. 猜数字大小](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower/) +- [0375. 猜数字大小 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii/) +- [0376. 摆动序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-subsequence/) +- [0377. 组合总和 Ⅳ](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/combination-sum-iv/) +- [0378. 有序矩阵中第 K 小的元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/kth-smallest-element-in-a-sorted-matrix/) +- [0380. O(1) 时间插入、删除和获取随机元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/insert-delete-getrandom-o1/) +- [0383. 赎金信](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/ransom-note/) +- [0384. 打乱数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array/) +- [0386. 字典序排数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/lexicographical-numbers/) +- [0387. 字符串中的第一个唯一字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/first-unique-character-in-a-string/) +- [0389. 找不同](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/find-the-difference/) +- [0391. 完美矩形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/perfect-rectangle/) +- [0392. 判断子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/is-subsequence/) +- [0394. 字符串解码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string/) +- [0395. 至少有 K 个重复字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-least-k-repeating-characters/) +- [0399. 除法求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/evaluate-division/) diff --git "a/Solutions/0380. O(1) \346\227\266\351\227\264\346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\350\216\267\345\217\226\351\232\217\346\234\272\345\205\203\347\264\240.md" b/docs/solutions/0300-0399/insert-delete-getrandom-o1.md similarity index 100% rename from "Solutions/0380. O(1) \346\227\266\351\227\264\346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\350\216\267\345\217\226\351\232\217\346\234\272\345\205\203\347\264\240.md" rename to docs/solutions/0300-0399/insert-delete-getrandom-o1.md diff --git "a/Solutions/0343. \346\225\264\346\225\260\346\213\206\345\210\206.md" b/docs/solutions/0300-0399/integer-break.md similarity index 100% rename from "Solutions/0343. \346\225\264\346\225\260\346\213\206\345\210\206.md" rename to docs/solutions/0300-0399/integer-break.md diff --git "a/Solutions/0350. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206 II.md" b/docs/solutions/0300-0399/intersection-of-two-arrays-ii.md similarity index 100% rename from "Solutions/0350. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206 II.md" rename to docs/solutions/0300-0399/intersection-of-two-arrays-ii.md diff --git "a/Solutions/0349. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md" b/docs/solutions/0300-0399/intersection-of-two-arrays.md similarity index 100% rename from "Solutions/0349. \344\270\244\344\270\252\346\225\260\347\273\204\347\232\204\344\272\244\351\233\206.md" rename to docs/solutions/0300-0399/intersection-of-two-arrays.md diff --git "a/Solutions/0392. \345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" b/docs/solutions/0300-0399/is-subsequence.md similarity index 100% rename from "Solutions/0392. \345\210\244\346\226\255\345\255\220\345\272\217\345\210\227.md" rename to docs/solutions/0300-0399/is-subsequence.md diff --git "a/Solutions/0378. \346\234\211\345\272\217\347\237\251\351\230\265\344\270\255\347\254\254 K \345\260\217\347\232\204\345\205\203\347\264\240.md" b/docs/solutions/0300-0399/kth-smallest-element-in-a-sorted-matrix.md similarity index 100% rename from "Solutions/0378. \346\234\211\345\272\217\347\237\251\351\230\265\344\270\255\347\254\254 K \345\260\217\347\232\204\345\205\203\347\264\240.md" rename to docs/solutions/0300-0399/kth-smallest-element-in-a-sorted-matrix.md diff --git "a/Solutions/0386. \345\255\227\345\205\270\345\272\217\346\216\222\346\225\260.md" b/docs/solutions/0300-0399/lexicographical-numbers.md similarity index 100% rename from "Solutions/0386. \345\255\227\345\205\270\345\272\217\346\216\222\346\225\260.md" rename to docs/solutions/0300-0399/lexicographical-numbers.md diff --git "a/Solutions/0359. \346\227\245\345\277\227\351\200\237\347\216\207\351\231\220\345\210\266\345\231\250.md" b/docs/solutions/0300-0399/logger-rate-limiter.md similarity index 100% rename from "Solutions/0359. \346\227\245\345\277\227\351\200\237\347\216\207\351\231\220\345\210\266\345\231\250.md" rename to docs/solutions/0300-0399/logger-rate-limiter.md diff --git "a/Solutions/0329. \347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" b/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix.md similarity index 100% rename from "Solutions/0329. \347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" rename to docs/solutions/0300-0399/longest-increasing-path-in-a-matrix.md diff --git "a/Solutions/0300. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" b/docs/solutions/0300-0399/longest-increasing-subsequence.md similarity index 100% rename from "Solutions/0300. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" rename to docs/solutions/0300-0399/longest-increasing-subsequence.md diff --git "a/Solutions/0395. \350\207\263\345\260\221\346\234\211 K \344\270\252\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" b/docs/solutions/0300-0399/longest-substring-with-at-least-k-repeating-characters.md similarity index 100% rename from "Solutions/0395. \350\207\263\345\260\221\346\234\211 K \344\270\252\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" rename to docs/solutions/0300-0399/longest-substring-with-at-least-k-repeating-characters.md diff --git "a/Solutions/0340. \350\207\263\345\244\232\345\214\205\345\220\253 K \344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" b/docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters.md similarity index 100% rename from "Solutions/0340. \350\207\263\345\244\232\345\214\205\345\220\253 K \344\270\252\344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\344\270\262.md" rename to docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters.md diff --git "a/Solutions/0318. \346\234\200\345\244\247\345\215\225\350\257\215\351\225\277\345\272\246\344\271\230\347\247\257.md" b/docs/solutions/0300-0399/maximum-product-of-word-lengths.md similarity index 100% rename from "Solutions/0318. \346\234\200\345\244\247\345\215\225\350\257\215\351\225\277\345\272\246\344\271\230\347\247\257.md" rename to docs/solutions/0300-0399/maximum-product-of-word-lengths.md diff --git "a/Solutions/0310. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" b/docs/solutions/0300-0399/minimum-height-trees.md similarity index 100% rename from "Solutions/0310. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" rename to docs/solutions/0300-0399/minimum-height-trees.md diff --git "a/Solutions/0346. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\247\273\345\212\250\345\271\263\345\235\207\345\200\274.md" b/docs/solutions/0300-0399/moving-average-from-data-stream.md similarity index 100% rename from "Solutions/0346. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\247\273\345\212\250\345\271\263\345\235\207\345\200\274.md" rename to docs/solutions/0300-0399/moving-average-from-data-stream.md diff --git "a/Solutions/0323. \346\227\240\345\220\221\345\233\276\344\270\255\350\277\236\351\200\232\345\210\206\351\207\217\347\232\204\346\225\260\347\233\256.md" b/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph.md similarity index 100% rename from "Solutions/0323. \346\227\240\345\220\221\345\233\276\344\270\255\350\277\236\351\200\232\345\210\206\351\207\217\347\232\204\346\225\260\347\233\256.md" rename to docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph.md diff --git "a/Solutions/0328. \345\245\207\345\201\266\351\223\276\350\241\250.md" b/docs/solutions/0300-0399/odd-even-linked-list.md similarity index 100% rename from "Solutions/0328. \345\245\207\345\201\266\351\223\276\350\241\250.md" rename to docs/solutions/0300-0399/odd-even-linked-list.md diff --git "a/Solutions/0336. \345\233\236\346\226\207\345\257\271.md" b/docs/solutions/0300-0399/palindrome-pairs.md similarity index 100% rename from "Solutions/0336. \345\233\236\346\226\207\345\257\271.md" rename to docs/solutions/0300-0399/palindrome-pairs.md diff --git "a/Solutions/0391. \345\256\214\347\276\216\347\237\251\345\275\242.md" b/docs/solutions/0300-0399/perfect-rectangle.md similarity index 100% rename from "Solutions/0391. \345\256\214\347\276\216\347\237\251\345\275\242.md" rename to docs/solutions/0300-0399/perfect-rectangle.md diff --git "a/Solutions/0342. 4\347\232\204\345\271\202.md" b/docs/solutions/0300-0399/power-of-four.md similarity index 100% rename from "Solutions/0342. 4\347\232\204\345\271\202.md" rename to docs/solutions/0300-0399/power-of-four.md diff --git "a/Solutions/0326. 3 \347\232\204\345\271\202.md" b/docs/solutions/0300-0399/power-of-three.md similarity index 100% rename from "Solutions/0326. 3 \347\232\204\345\271\202.md" rename to docs/solutions/0300-0399/power-of-three.md diff --git "a/Solutions/0370. \345\214\272\351\227\264\345\212\240\346\263\225.md" b/docs/solutions/0300-0399/range-addition.md similarity index 100% rename from "Solutions/0370. \345\214\272\351\227\264\345\212\240\346\263\225.md" rename to docs/solutions/0300-0399/range-addition.md diff --git "a/Solutions/0304. \344\272\214\347\273\264\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \347\237\251\351\230\265\344\270\215\345\217\257\345\217\230.md" b/docs/solutions/0300-0399/range-sum-query-2d-immutable.md similarity index 100% rename from "Solutions/0304. \344\272\214\347\273\264\345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \347\237\251\351\230\265\344\270\215\345\217\257\345\217\230.md" rename to docs/solutions/0300-0399/range-sum-query-2d-immutable.md diff --git "a/Solutions/0303. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\344\270\215\345\217\257\345\217\230.md" b/docs/solutions/0300-0399/range-sum-query-immutable.md similarity index 100% rename from "Solutions/0303. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\344\270\215\345\217\257\345\217\230.md" rename to docs/solutions/0300-0399/range-sum-query-immutable.md diff --git "a/Solutions/0307. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\345\217\257\344\277\256\346\224\271.md" b/docs/solutions/0300-0399/range-sum-query-mutable.md similarity index 100% rename from "Solutions/0307. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\345\217\257\344\277\256\346\224\271.md" rename to docs/solutions/0300-0399/range-sum-query-mutable.md diff --git "a/Solutions/0383. \350\265\216\351\207\221\344\277\241.md" b/docs/solutions/0300-0399/ransom-note.md similarity index 100% rename from "Solutions/0383. \350\265\216\351\207\221\344\277\241.md" rename to docs/solutions/0300-0399/ransom-note.md diff --git "a/Solutions/0316. \345\216\273\351\231\244\351\207\215\345\244\215\345\255\227\346\257\215.md" b/docs/solutions/0300-0399/remove-duplicate-letters.md similarity index 100% rename from "Solutions/0316. \345\216\273\351\231\244\351\207\215\345\244\215\345\255\227\346\257\215.md" rename to docs/solutions/0300-0399/remove-duplicate-letters.md diff --git "a/Solutions/0344. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/0300-0399/reverse-string.md similarity index 100% rename from "Solutions/0344. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/0300-0399/reverse-string.md diff --git "a/Solutions/0345. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\351\237\263\345\255\227\346\257\215.md" b/docs/solutions/0300-0399/reverse-vowels-of-a-string.md similarity index 100% rename from "Solutions/0345. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\351\237\263\345\255\227\346\257\215.md" rename to docs/solutions/0300-0399/reverse-vowels-of-a-string.md diff --git "a/Solutions/0354. \344\277\204\347\275\227\346\226\257\345\245\227\345\250\203\344\277\241\345\260\201\351\227\256\351\242\230.md" b/docs/solutions/0300-0399/russian-doll-envelopes.md similarity index 100% rename from "Solutions/0354. \344\277\204\347\275\227\346\226\257\345\245\227\345\250\203\344\277\241\345\260\201\351\227\256\351\242\230.md" rename to docs/solutions/0300-0399/russian-doll-envelopes.md diff --git "a/Solutions/0384. \346\211\223\344\271\261\346\225\260\347\273\204.md" b/docs/solutions/0300-0399/shuffle-an-array.md similarity index 100% rename from "Solutions/0384. \346\211\223\344\271\261\346\225\260\347\273\204.md" rename to docs/solutions/0300-0399/shuffle-an-array.md diff --git "a/Solutions/0360. \346\234\211\345\272\217\350\275\254\345\214\226\346\225\260\347\273\204.md" b/docs/solutions/0300-0399/sort-transformed-array.md similarity index 100% rename from "Solutions/0360. \346\234\211\345\272\217\350\275\254\345\214\226\346\225\260\347\273\204.md" rename to docs/solutions/0300-0399/sort-transformed-array.md diff --git "a/Solutions/0371. \344\270\244\346\225\264\346\225\260\344\271\213\345\222\214.md" b/docs/solutions/0300-0399/sum-of-two-integers.md similarity index 100% rename from "Solutions/0371. \344\270\244\346\225\264\346\225\260\344\271\213\345\222\214.md" rename to docs/solutions/0300-0399/sum-of-two-integers.md diff --git "a/Solutions/0347. \345\211\215 K \344\270\252\351\253\230\351\242\221\345\205\203\347\264\240.md" b/docs/solutions/0300-0399/top-k-frequent-elements.md similarity index 100% rename from "Solutions/0347. \345\211\215 K \344\270\252\351\253\230\351\242\221\345\205\203\347\264\240.md" rename to docs/solutions/0300-0399/top-k-frequent-elements.md diff --git "a/Solutions/0367. \346\234\211\346\225\210\347\232\204\345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" b/docs/solutions/0300-0399/valid-perfect-square.md similarity index 100% rename from "Solutions/0367. \346\234\211\346\225\210\347\232\204\345\256\214\345\205\250\345\271\263\346\226\271\346\225\260.md" rename to docs/solutions/0300-0399/valid-perfect-square.md diff --git "a/Solutions/0324. \346\221\206\345\212\250\346\216\222\345\272\217 II.md" b/docs/solutions/0300-0399/wiggle-sort-ii.md similarity index 100% rename from "Solutions/0324. \346\221\206\345\212\250\346\216\222\345\272\217 II.md" rename to docs/solutions/0300-0399/wiggle-sort-ii.md diff --git "a/Solutions/0376. \346\221\206\345\212\250\345\272\217\345\210\227.md" b/docs/solutions/0300-0399/wiggle-subsequence.md similarity index 100% rename from "Solutions/0376. \346\221\206\345\212\250\345\272\217\345\210\227.md" rename to docs/solutions/0300-0399/wiggle-subsequence.md diff --git "a/Solutions/0454. \345\233\233\346\225\260\347\233\270\345\212\240 II.md" b/docs/solutions/0400-0499/4sum-ii.md similarity index 100% rename from "Solutions/0454. \345\233\233\346\225\260\347\233\270\345\212\240 II.md" rename to docs/solutions/0400-0499/4sum-ii.md diff --git "a/Solutions/0415. \345\255\227\347\254\246\344\270\262\347\233\270\345\212\240.md" b/docs/solutions/0400-0499/add-strings.md similarity index 100% rename from "Solutions/0415. \345\255\227\347\254\246\344\270\262\347\233\270\345\212\240.md" rename to docs/solutions/0400-0499/add-strings.md diff --git "a/Solutions/0445. \344\270\244\346\225\260\347\233\270\345\212\240 II.md" b/docs/solutions/0400-0499/add-two-numbers-ii.md similarity index 100% rename from "Solutions/0445. \344\270\244\346\225\260\347\233\270\345\212\240 II.md" rename to docs/solutions/0400-0499/add-two-numbers-ii.md diff --git "a/Solutions/0455. \345\210\206\345\217\221\351\245\274\345\271\262.md" b/docs/solutions/0400-0499/assign-cookies.md similarity index 100% rename from "Solutions/0455. \345\210\206\345\217\221\351\245\274\345\271\262.md" rename to docs/solutions/0400-0499/assign-cookies.md diff --git "a/Solutions/0464. \346\210\221\350\203\275\350\265\242\345\220\227.md" b/docs/solutions/0400-0499/can-i-win.md similarity index 100% rename from "Solutions/0464. \346\210\221\350\203\275\350\265\242\345\220\227.md" rename to docs/solutions/0400-0499/can-i-win.md diff --git "a/Solutions/0405. \346\225\260\345\255\227\350\275\254\346\215\242\344\270\272\345\215\201\345\205\255\350\277\233\345\210\266\346\225\260.md" b/docs/solutions/0400-0499/convert-a-number-to-hexadecimal.md similarity index 100% rename from "Solutions/0405. \346\225\260\345\255\227\350\275\254\346\215\242\344\270\272\345\215\201\345\205\255\350\277\233\345\210\266\346\225\260.md" rename to docs/solutions/0400-0499/convert-a-number-to-hexadecimal.md diff --git "a/Solutions/0426. \345\260\206\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\345\214\226\344\270\272\346\216\222\345\272\217\347\232\204\345\217\214\345\220\221\351\223\276\350\241\250.md" b/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list.md similarity index 100% rename from "Solutions/0426. \345\260\206\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\345\214\226\344\270\272\346\216\222\345\272\217\347\232\204\345\217\214\345\220\221\351\223\276\350\241\250.md" rename to docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list.md diff --git "a/Solutions/0450. \345\210\240\351\231\244\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\350\212\202\347\202\271.md" b/docs/solutions/0400-0499/delete-node-in-a-bst.md similarity index 100% rename from "Solutions/0450. \345\210\240\351\231\244\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\350\212\202\347\202\271.md" rename to docs/solutions/0400-0499/delete-node-in-a-bst.md diff --git "a/Solutions/0498. \345\257\271\350\247\222\347\272\277\351\201\215\345\216\206.md" b/docs/solutions/0400-0499/diagonal-traverse.md similarity index 100% rename from "Solutions/0498. \345\257\271\350\247\222\347\272\277\351\201\215\345\216\206.md" rename to docs/solutions/0400-0499/diagonal-traverse.md diff --git "a/Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" b/docs/solutions/0400-0499/find-all-anagrams-in-a-string.md similarity index 100% rename from "Solutions/0438. \346\211\276\345\210\260\345\255\227\347\254\246\344\270\262\344\270\255\346\211\200\346\234\211\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215.md" rename to docs/solutions/0400-0499/find-all-anagrams-in-a-string.md diff --git a/Solutions/0412. Fizz Buzz.md b/docs/solutions/0400-0499/fizz-buzz.md similarity index 100% rename from Solutions/0412. Fizz Buzz.md rename to docs/solutions/0400-0499/fizz-buzz.md diff --git "a/Solutions/0430. \346\211\201\345\271\263\345\214\226\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" b/docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list.md similarity index 100% rename from "Solutions/0430. \346\211\201\345\271\263\345\214\226\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" rename to docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list.md diff --git "a/Solutions/0403. \351\235\222\350\233\231\350\277\207\346\262\263.md" b/docs/solutions/0400-0499/frog-jump.md similarity index 100% rename from "Solutions/0403. \351\235\222\350\233\231\350\277\207\346\262\263.md" rename to docs/solutions/0400-0499/frog-jump.md diff --git "a/Solutions/0461. \346\261\211\346\230\216\350\267\235\347\246\273.md" b/docs/solutions/0400-0499/hamming-distance.md similarity index 100% rename from "Solutions/0461. \346\261\211\346\230\216\350\267\235\347\246\273.md" rename to docs/solutions/0400-0499/hamming-distance.md diff --git a/docs/solutions/0400-0499/index.md b/docs/solutions/0400-0499/index.md new file mode 100644 index 00000000..5e9b7cbe --- /dev/null +++ b/docs/solutions/0400-0499/index.md @@ -0,0 +1,47 @@ +## 本章内容 + +- [0400. 第 N 位数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit/) +- [0403. 青蛙过河](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump/) +- [0404. 左叶子之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sum-of-left-leaves/) +- [0405. 数字转换为十六进制数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal/) +- [0406. 根据身高重建队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/queue-reconstruction-by-height/) +- [0409. 最长回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-palindrome/) +- [0410. 分割数组的最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum/) +- [0412. Fizz Buzz](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/fizz-buzz/) +- [0415. 字符串相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) +- [0416. 分割等和子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/partition-equal-subset-sum/) +- [0417. 太平洋大西洋水流问题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/pacific-atlantic-water-flow/) +- [0421. 数组中两个数的最大异或值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array/) +- [0424. 替换后的最长重复字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-repeating-character-replacement/) +- [0425. 单词方块](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/word-squares/) +- [0426. 将二叉搜索树转化为排序的双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list/) +- [0428. 序列化和反序列化 N 叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/serialize-and-deserialize-n-ary-tree/) +- [0429. N 叉树的层序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/n-ary-tree-level-order-traversal/) +- [0430. 扁平化多级双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list/) +- [0435. 无重叠区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-overlapping-intervals/) +- [0437. 路径总和 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/path-sum-iii/) +- [0438. 找到字符串中所有字母异位词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-anagrams-in-a-string/) +- [0443. 压缩字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression/) +- [0445. 两数相加 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii/) +- [0447. 回旋镖的数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/number-of-boomerangs/) +- [0450. 删除二叉搜索树中的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst/) +- [0451. 根据字符出现频率排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency/) +- [0452. 用最少数量的箭引爆气球](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons/) +- [0454. 四数相加 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/4sum-ii/) +- [0455. 分发饼干](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/assign-cookies/) +- [0459. 重复的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern/) +- [0461. 汉明距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/hamming-distance/) +- [0463. 岛屿的周长](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/island-perimeter/) +- [0464. 我能赢吗](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/can-i-win/) +- [0467. 环绕字符串中唯一的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/unique-substrings-in-wraparound-string/) +- [0468. 验证IP地址](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address/) +- [0473. 火柴拼正方形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/matchsticks-to-square/) +- [0474. 一和零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/ones-and-zeroes/) +- [0480. 滑动窗口中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sliding-window-median/) +- [0485. 最大连续 1 的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones/) +- [0486. 预测赢家](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/predict-the-winner/) +- [0487. 最大连续1的个数 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones-ii/) +- [0491. 非递减子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-decreasing-subsequences/) +- [0494. 目标和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum/) +- [0496. 下一个更大元素 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/next-greater-element-i/) +- [0498. 对角线遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse/) diff --git "a/Solutions/0463. \345\262\233\345\261\277\347\232\204\345\221\250\351\225\277.md" b/docs/solutions/0400-0499/island-perimeter.md similarity index 100% rename from "Solutions/0463. \345\262\233\345\261\277\347\232\204\345\221\250\351\225\277.md" rename to docs/solutions/0400-0499/island-perimeter.md diff --git "a/Solutions/0409. \346\234\200\351\225\277\345\233\236\346\226\207\344\270\262.md" b/docs/solutions/0400-0499/longest-palindrome.md similarity index 100% rename from "Solutions/0409. \346\234\200\351\225\277\345\233\236\346\226\207\344\270\262.md" rename to docs/solutions/0400-0499/longest-palindrome.md diff --git "a/Solutions/0424. \346\233\277\346\215\242\345\220\216\347\232\204\346\234\200\351\225\277\351\207\215\345\244\215\345\255\227\347\254\246.md" b/docs/solutions/0400-0499/longest-repeating-character-replacement.md similarity index 100% rename from "Solutions/0424. \346\233\277\346\215\242\345\220\216\347\232\204\346\234\200\351\225\277\351\207\215\345\244\215\345\255\227\347\254\246.md" rename to docs/solutions/0400-0499/longest-repeating-character-replacement.md diff --git "a/Solutions/0473. \347\201\253\346\237\264\346\213\274\346\255\243\346\226\271\345\275\242.md" b/docs/solutions/0400-0499/matchsticks-to-square.md similarity index 100% rename from "Solutions/0473. \347\201\253\346\237\264\346\213\274\346\255\243\346\226\271\345\275\242.md" rename to docs/solutions/0400-0499/matchsticks-to-square.md diff --git "a/Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" b/docs/solutions/0400-0499/max-consecutive-ones-ii.md similarity index 100% rename from "Solutions/0487. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 II.md" rename to docs/solutions/0400-0499/max-consecutive-ones-ii.md diff --git "a/Solutions/0485. \346\234\200\345\244\247\350\277\236\347\273\255 1 \347\232\204\344\270\252\346\225\260.md" b/docs/solutions/0400-0499/max-consecutive-ones.md similarity index 100% rename from "Solutions/0485. \346\234\200\345\244\247\350\277\236\347\273\255 1 \347\232\204\344\270\252\346\225\260.md" rename to docs/solutions/0400-0499/max-consecutive-ones.md diff --git "a/Solutions/0421. \346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\345\274\202\346\210\226\345\200\274.md" b/docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array.md similarity index 100% rename from "Solutions/0421. \346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\347\232\204\346\234\200\345\244\247\345\274\202\346\210\226\345\200\274.md" rename to docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array.md diff --git "a/Solutions/0452. \347\224\250\346\234\200\345\260\221\346\225\260\351\207\217\347\232\204\347\256\255\345\274\225\347\210\206\346\260\224\347\220\203.md" b/docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons.md similarity index 100% rename from "Solutions/0452. \347\224\250\346\234\200\345\260\221\346\225\260\351\207\217\347\232\204\347\256\255\345\274\225\347\210\206\346\260\224\347\220\203.md" rename to docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons.md diff --git "a/Solutions/0429. N \345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" b/docs/solutions/0400-0499/n-ary-tree-level-order-traversal.md similarity index 100% rename from "Solutions/0429. N \345\217\211\346\240\221\347\232\204\345\261\202\345\272\217\351\201\215\345\216\206.md" rename to docs/solutions/0400-0499/n-ary-tree-level-order-traversal.md diff --git "a/Solutions/0496. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 I.md" b/docs/solutions/0400-0499/next-greater-element-i.md similarity index 100% rename from "Solutions/0496. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 I.md" rename to docs/solutions/0400-0499/next-greater-element-i.md diff --git "a/Solutions/0491. \351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" b/docs/solutions/0400-0499/non-decreasing-subsequences.md similarity index 89% rename from "Solutions/0491. \351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" rename to docs/solutions/0400-0499/non-decreasing-subsequences.md index b4130690..0943125c 100644 --- "a/Solutions/0491. \351\200\222\345\242\236\345\255\220\345\272\217\345\210\227.md" +++ b/docs/solutions/0400-0499/non-decreasing-subsequences.md @@ -1,11 +1,11 @@ -# [0491. 递增子序列](https://leetcode.cn/problems/increasing-subsequences/) +# [0491. 非递减子序列](https://leetcode.cn/problems/non-decreasing-subsequences/) - 标签:位运算、数组、哈希表、回溯 - 难度:中等 ## 题目链接 -- [0491. 递增子序列 - 力扣](https://leetcode.cn/problems/increasing-subsequences/) +- [0491. 非递减子序列 - 力扣](https://leetcode.cn/problems/non-decreasing-subsequences/) ## 题目大意 diff --git "a/Solutions/0435. \346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.md" b/docs/solutions/0400-0499/non-overlapping-intervals.md similarity index 100% rename from "Solutions/0435. \346\227\240\351\207\215\345\217\240\345\214\272\351\227\264.md" rename to docs/solutions/0400-0499/non-overlapping-intervals.md diff --git "a/Solutions/0400. \347\254\254 N \344\275\215\346\225\260\345\255\227.md" b/docs/solutions/0400-0499/nth-digit.md similarity index 100% rename from "Solutions/0400. \347\254\254 N \344\275\215\346\225\260\345\255\227.md" rename to docs/solutions/0400-0499/nth-digit.md diff --git "a/Solutions/0447. \345\233\236\346\227\213\351\225\226\347\232\204\346\225\260\351\207\217.md" b/docs/solutions/0400-0499/number-of-boomerangs.md similarity index 100% rename from "Solutions/0447. \345\233\236\346\227\213\351\225\226\347\232\204\346\225\260\351\207\217.md" rename to docs/solutions/0400-0499/number-of-boomerangs.md diff --git "a/Solutions/0474. \344\270\200\345\222\214\351\233\266.md" b/docs/solutions/0400-0499/ones-and-zeroes.md similarity index 100% rename from "Solutions/0474. \344\270\200\345\222\214\351\233\266.md" rename to docs/solutions/0400-0499/ones-and-zeroes.md diff --git "a/Solutions/0417. \345\244\252\345\271\263\346\264\213\345\244\247\350\245\277\346\264\213\346\260\264\346\265\201\351\227\256\351\242\230.md" b/docs/solutions/0400-0499/pacific-atlantic-water-flow.md similarity index 100% rename from "Solutions/0417. \345\244\252\345\271\263\346\264\213\345\244\247\350\245\277\346\264\213\346\260\264\346\265\201\351\227\256\351\242\230.md" rename to docs/solutions/0400-0499/pacific-atlantic-water-flow.md diff --git "a/Solutions/0416. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" b/docs/solutions/0400-0499/partition-equal-subset-sum.md similarity index 100% rename from "Solutions/0416. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" rename to docs/solutions/0400-0499/partition-equal-subset-sum.md diff --git "a/Solutions/0437. \350\267\257\345\276\204\346\200\273\345\222\214 III.md" b/docs/solutions/0400-0499/path-sum-iii.md similarity index 100% rename from "Solutions/0437. \350\267\257\345\276\204\346\200\273\345\222\214 III.md" rename to docs/solutions/0400-0499/path-sum-iii.md diff --git "a/Solutions/0486. \351\242\204\346\265\213\350\265\242\345\256\266.md" b/docs/solutions/0400-0499/predict-the-winner.md similarity index 100% rename from "Solutions/0486. \351\242\204\346\265\213\350\265\242\345\256\266.md" rename to docs/solutions/0400-0499/predict-the-winner.md diff --git "a/Solutions/0406. \346\240\271\346\215\256\350\272\253\351\253\230\351\207\215\345\273\272\351\230\237\345\210\227.md" b/docs/solutions/0400-0499/queue-reconstruction-by-height.md similarity index 100% rename from "Solutions/0406. \346\240\271\346\215\256\350\272\253\351\253\230\351\207\215\345\273\272\351\230\237\345\210\227.md" rename to docs/solutions/0400-0499/queue-reconstruction-by-height.md diff --git "a/Solutions/0459. \351\207\215\345\244\215\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/0400-0499/repeated-substring-pattern.md similarity index 100% rename from "Solutions/0459. \351\207\215\345\244\215\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/0400-0499/repeated-substring-pattern.md diff --git "a/Solutions/0428. \345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226 N \345\217\211\346\240\221.md" b/docs/solutions/0400-0499/serialize-and-deserialize-n-ary-tree.md similarity index 100% rename from "Solutions/0428. \345\272\217\345\210\227\345\214\226\345\222\214\345\217\215\345\272\217\345\210\227\345\214\226 N \345\217\211\346\240\221.md" rename to docs/solutions/0400-0499/serialize-and-deserialize-n-ary-tree.md diff --git "a/Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" b/docs/solutions/0400-0499/sliding-window-median.md similarity index 100% rename from "Solutions/0480. \346\273\221\345\212\250\347\252\227\345\217\243\344\270\255\344\275\215\346\225\260.md" rename to docs/solutions/0400-0499/sliding-window-median.md diff --git "a/Solutions/0451. \346\240\271\346\215\256\345\255\227\347\254\246\345\207\272\347\216\260\351\242\221\347\216\207\346\216\222\345\272\217.md" b/docs/solutions/0400-0499/sort-characters-by-frequency.md similarity index 100% rename from "Solutions/0451. \346\240\271\346\215\256\345\255\227\347\254\246\345\207\272\347\216\260\351\242\221\347\216\207\346\216\222\345\272\217.md" rename to docs/solutions/0400-0499/sort-characters-by-frequency.md diff --git "a/Solutions/0410. \345\210\206\345\211\262\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\200\274.md" b/docs/solutions/0400-0499/split-array-largest-sum.md similarity index 100% rename from "Solutions/0410. \345\210\206\345\211\262\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\200\274.md" rename to docs/solutions/0400-0499/split-array-largest-sum.md diff --git "a/Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/0400-0499/string-compression.md similarity index 100% rename from "Solutions/0443. \345\216\213\347\274\251\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/0400-0499/string-compression.md diff --git "a/Solutions/0404. \345\267\246\345\217\266\345\255\220\344\271\213\345\222\214.md" b/docs/solutions/0400-0499/sum-of-left-leaves.md similarity index 100% rename from "Solutions/0404. \345\267\246\345\217\266\345\255\220\344\271\213\345\222\214.md" rename to docs/solutions/0400-0499/sum-of-left-leaves.md diff --git "a/Solutions/0494. \347\233\256\346\240\207\345\222\214.md" b/docs/solutions/0400-0499/target-sum.md similarity index 100% rename from "Solutions/0494. \347\233\256\346\240\207\345\222\214.md" rename to docs/solutions/0400-0499/target-sum.md diff --git "a/Solutions/0467. \347\216\257\347\273\225\345\255\227\347\254\246\344\270\262\344\270\255\345\224\257\344\270\200\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/0400-0499/unique-substrings-in-wraparound-string.md similarity index 100% rename from "Solutions/0467. \347\216\257\347\273\225\345\255\227\347\254\246\344\270\262\344\270\255\345\224\257\344\270\200\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/0400-0499/unique-substrings-in-wraparound-string.md diff --git "a/Solutions/0468. \351\252\214\350\257\201IP\345\234\260\345\235\200.md" b/docs/solutions/0400-0499/validate-ip-address.md similarity index 100% rename from "Solutions/0468. \351\252\214\350\257\201IP\345\234\260\345\235\200.md" rename to docs/solutions/0400-0499/validate-ip-address.md diff --git "a/Solutions/0425. \345\215\225\350\257\215\346\226\271\345\235\227.md" b/docs/solutions/0400-0499/word-squares.md similarity index 100% rename from "Solutions/0425. \345\215\225\350\257\215\346\226\271\345\235\227.md" rename to docs/solutions/0400-0499/word-squares.md diff --git "a/Solutions/0542. 01 \347\237\251\351\230\265.md" b/docs/solutions/0500-0599/01-matrix.md similarity index 100% rename from "Solutions/0542. 01 \347\237\251\351\230\265.md" rename to docs/solutions/0500-0599/01-matrix.md diff --git "a/Solutions/0561. \346\225\260\347\273\204\346\213\206\345\210\206.md" b/docs/solutions/0500-0599/array-partition.md similarity index 100% rename from "Solutions/0561. \346\225\260\347\273\204\346\213\206\345\210\206.md" rename to docs/solutions/0500-0599/array-partition.md diff --git "a/Solutions/0504. \344\270\203\350\277\233\345\210\266\346\225\260.md" b/docs/solutions/0500-0599/base-7.md similarity index 100% rename from "Solutions/0504. \344\270\203\350\277\233\345\210\266\346\225\260.md" rename to docs/solutions/0500-0599/base-7.md diff --git "a/Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" b/docs/solutions/0500-0599/beautiful-arrangement.md similarity index 100% rename from "Solutions/0526. \344\274\230\347\276\216\347\232\204\346\216\222\345\210\227.md" rename to docs/solutions/0500-0599/beautiful-arrangement.md diff --git "a/Solutions/0518. \351\233\266\351\222\261\345\205\221\346\215\242 II.md" b/docs/solutions/0500-0599/coin-change-ii.md similarity index 100% rename from "Solutions/0518. \351\233\266\351\222\261\345\205\221\346\215\242 II.md" rename to docs/solutions/0500-0599/coin-change-ii.md diff --git "a/Solutions/0525. \350\277\236\347\273\255\346\225\260\347\273\204.md" b/docs/solutions/0500-0599/contiguous-array.md similarity index 100% rename from "Solutions/0525. \350\277\236\347\273\255\346\225\260\347\273\204.md" rename to docs/solutions/0500-0599/contiguous-array.md diff --git "a/Solutions/0538. \346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221.md" b/docs/solutions/0500-0599/convert-bst-to-greater-tree.md similarity index 100% rename from "Solutions/0538. \346\212\212\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\275\254\346\215\242\344\270\272\347\264\257\345\212\240\346\240\221.md" rename to docs/solutions/0500-0599/convert-bst-to-greater-tree.md diff --git "a/Solutions/0583. \344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\232\204\345\210\240\351\231\244\346\223\215\344\275\234.md" b/docs/solutions/0500-0599/delete-operation-for-two-strings.md similarity index 100% rename from "Solutions/0583. \344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\232\204\345\210\240\351\231\244\346\223\215\344\275\234.md" rename to docs/solutions/0500-0599/delete-operation-for-two-strings.md diff --git "a/Solutions/0543. \344\272\214\345\217\211\346\240\221\347\232\204\347\233\264\345\276\204.md" b/docs/solutions/0500-0599/diameter-of-binary-tree.md similarity index 100% rename from "Solutions/0543. \344\272\214\345\217\211\346\240\221\347\232\204\347\233\264\345\276\204.md" rename to docs/solutions/0500-0599/diameter-of-binary-tree.md diff --git "a/Solutions/0575. \345\210\206\347\263\226\346\236\234.md" b/docs/solutions/0500-0599/distribute-candies.md similarity index 100% rename from "Solutions/0575. \345\210\206\347\263\226\346\236\234.md" rename to docs/solutions/0500-0599/distribute-candies.md diff --git "a/Solutions/0509. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260.md" b/docs/solutions/0500-0599/fibonacci-number.md similarity index 100% rename from "Solutions/0509. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260.md" rename to docs/solutions/0500-0599/fibonacci-number.md diff --git "a/Solutions/0513. \346\211\276\346\240\221\345\267\246\344\270\213\350\247\222\347\232\204\345\200\274.md" b/docs/solutions/0500-0599/find-bottom-left-tree-value.md similarity index 100% rename from "Solutions/0513. \346\211\276\346\240\221\345\267\246\344\270\213\350\247\222\347\232\204\345\200\274.md" rename to docs/solutions/0500-0599/find-bottom-left-tree-value.md diff --git "a/Solutions/0515. \345\234\250\346\257\217\344\270\252\346\240\221\350\241\214\344\270\255\346\211\276\346\234\200\345\244\247\345\200\274.md" b/docs/solutions/0500-0599/find-largest-value-in-each-tree-row.md similarity index 100% rename from "Solutions/0515. \345\234\250\346\257\217\344\270\252\346\240\221\350\241\214\344\270\255\346\211\276\346\234\200\345\244\247\345\200\274.md" rename to docs/solutions/0500-0599/find-largest-value-in-each-tree-row.md diff --git "a/Solutions/0501. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\274\227\346\225\260.md" b/docs/solutions/0500-0599/find-mode-in-binary-search-tree.md similarity index 100% rename from "Solutions/0501. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\274\227\346\225\260.md" rename to docs/solutions/0500-0599/find-mode-in-binary-search-tree.md diff --git a/docs/solutions/0500-0599/index.md b/docs/solutions/0500-0599/index.md new file mode 100644 index 00000000..6ae4c0cb --- /dev/null +++ b/docs/solutions/0500-0599/index.md @@ -0,0 +1,30 @@ +## 本章内容 + +- [0501. 二叉搜索树中的众数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-mode-in-binary-search-tree/) +- [0503. 下一个更大元素 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii/) +- [0504. 七进制数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7/) +- [0506. 相对名次](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/relative-ranks/) +- [0509. 斐波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) +- [0513. 找树左下角的值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-bottom-left-tree-value/) +- [0515. 在每个树行中找最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-largest-value-in-each-tree-row/) +- [0516. 最长回文子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence/) +- [0518. 零钱兑换 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii/) +- [0525. 连续数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/contiguous-array/) +- [0526. 优美的排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/beautiful-arrangement/) +- [0530. 二叉搜索树的最小绝对差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-absolute-difference-in-bst/) +- [0538. 把二叉搜索树转换为累加树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/convert-bst-to-greater-tree/) +- [0539. 最小时间差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-time-difference/) +- [0542. 01 矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/01-matrix/) +- [0543. 二叉树的直径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) +- [0546. 移除盒子](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/remove-boxes/) +- [0547. 省份数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/number-of-provinces/) +- [0557. 反转字符串中的单词 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii/) +- [0560. 和为 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k/) +- [0561. 数组拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition/) +- [0567. 字符串的排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/permutation-in-string/) +- [0575. 分糖果](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/distribute-candies/) +- [0576. 出界的路径数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths/) +- [0583. 两个字符串的删除操作](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/delete-operation-for-two-strings/) +- [0589. N 叉树的前序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-preorder-traversal/) +- [0590. N 叉树的后序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-postorder-traversal/) +- [0599. 两个列表的最小索引总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-index-sum-of-two-lists/) diff --git "a/Solutions/0516. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" b/docs/solutions/0500-0599/longest-palindromic-subsequence.md similarity index 100% rename from "Solutions/0516. \346\234\200\351\225\277\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" rename to docs/solutions/0500-0599/longest-palindromic-subsequence.md diff --git "a/Solutions/0530. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" b/docs/solutions/0500-0599/minimum-absolute-difference-in-bst.md similarity index 100% rename from "Solutions/0530. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\345\260\217\347\273\235\345\257\271\345\267\256.md" rename to docs/solutions/0500-0599/minimum-absolute-difference-in-bst.md diff --git "a/Solutions/0599. \344\270\244\344\270\252\345\210\227\350\241\250\347\232\204\346\234\200\345\260\217\347\264\242\345\274\225\346\200\273\345\222\214.md" b/docs/solutions/0500-0599/minimum-index-sum-of-two-lists.md similarity index 100% rename from "Solutions/0599. \344\270\244\344\270\252\345\210\227\350\241\250\347\232\204\346\234\200\345\260\217\347\264\242\345\274\225\346\200\273\345\222\214.md" rename to docs/solutions/0500-0599/minimum-index-sum-of-two-lists.md diff --git "a/Solutions/0539. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" b/docs/solutions/0500-0599/minimum-time-difference.md similarity index 100% rename from "Solutions/0539. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" rename to docs/solutions/0500-0599/minimum-time-difference.md diff --git "a/Solutions/0590. N \345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" b/docs/solutions/0500-0599/n-ary-tree-postorder-traversal.md similarity index 100% rename from "Solutions/0590. N \345\217\211\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206.md" rename to docs/solutions/0500-0599/n-ary-tree-postorder-traversal.md diff --git "a/Solutions/0589. N \345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" b/docs/solutions/0500-0599/n-ary-tree-preorder-traversal.md similarity index 100% rename from "Solutions/0589. N \345\217\211\346\240\221\347\232\204\345\211\215\345\272\217\351\201\215\345\216\206.md" rename to docs/solutions/0500-0599/n-ary-tree-preorder-traversal.md diff --git "a/Solutions/0503. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 II.md" b/docs/solutions/0500-0599/next-greater-element-ii.md similarity index 100% rename from "Solutions/0503. \344\270\213\344\270\200\344\270\252\346\233\264\345\244\247\345\205\203\347\264\240 II.md" rename to docs/solutions/0500-0599/next-greater-element-ii.md diff --git "a/Solutions/0547. \347\234\201\344\273\275\346\225\260\351\207\217.md" b/docs/solutions/0500-0599/number-of-provinces.md similarity index 100% rename from "Solutions/0547. \347\234\201\344\273\275\346\225\260\351\207\217.md" rename to docs/solutions/0500-0599/number-of-provinces.md diff --git "a/Solutions/0576. \345\207\272\347\225\214\347\232\204\350\267\257\345\276\204\346\225\260.md" b/docs/solutions/0500-0599/out-of-boundary-paths.md similarity index 100% rename from "Solutions/0576. \345\207\272\347\225\214\347\232\204\350\267\257\345\276\204\346\225\260.md" rename to docs/solutions/0500-0599/out-of-boundary-paths.md diff --git "a/Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" b/docs/solutions/0500-0599/permutation-in-string.md similarity index 100% rename from "Solutions/0567. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" rename to docs/solutions/0500-0599/permutation-in-string.md diff --git "a/Solutions/0506. \347\233\270\345\257\271\345\220\215\346\254\241.md" b/docs/solutions/0500-0599/relative-ranks.md similarity index 100% rename from "Solutions/0506. \347\233\270\345\257\271\345\220\215\346\254\241.md" rename to docs/solutions/0500-0599/relative-ranks.md diff --git "a/Solutions/0546. \347\247\273\351\231\244\347\233\222\345\255\220.md" b/docs/solutions/0500-0599/remove-boxes.md similarity index 100% rename from "Solutions/0546. \347\247\273\351\231\244\347\233\222\345\255\220.md" rename to docs/solutions/0500-0599/remove-boxes.md diff --git "a/Solutions/0557. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215 III.md" b/docs/solutions/0500-0599/reverse-words-in-a-string-iii.md similarity index 100% rename from "Solutions/0557. \345\217\215\350\275\254\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\215\225\350\257\215 III.md" rename to docs/solutions/0500-0599/reverse-words-in-a-string-iii.md diff --git "a/Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/0500-0599/subarray-sum-equals-k.md similarity index 100% rename from "Solutions/0560. \345\222\214\344\270\272 K \347\232\204\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/0500-0599/subarray-sum-equals-k.md diff --git "a/Solutions/0650. \345\217\252\346\234\211\344\270\244\344\270\252\351\224\256\347\232\204\351\224\256\347\233\230.md" b/docs/solutions/0600-0699/2-keys-keyboard.md similarity index 94% rename from "Solutions/0650. \345\217\252\346\234\211\344\270\244\344\270\252\351\224\256\347\232\204\351\224\256\347\233\230.md" rename to docs/solutions/0600-0699/2-keys-keyboard.md index a40067e7..b8fd3ea0 100644 --- "a/Solutions/0650. \345\217\252\346\234\211\344\270\244\344\270\252\351\224\256\347\232\204\351\224\256\347\233\230.md" +++ b/docs/solutions/0600-0699/2-keys-keyboard.md @@ -1,11 +1,11 @@ -# [0650. 只有两个键的键盘](https://leetcode.cn/problems/2-keys-keyboard/) +# [0650. 两个键的键盘](https://leetcode.cn/problems/2-keys-keyboard/) - 标签:数学、动态规划 - 难度:中等 ## 题目链接 -- [0650. 只有两个键的键盘 - 力扣](https://leetcode.cn/problems/2-keys-keyboard/) +- [0650. 两个键的键盘 - 力扣](https://leetcode.cn/problems/2-keys-keyboard/) ## 题目大意 diff --git "a/Solutions/0616. \347\273\231\345\255\227\347\254\246\344\270\262\346\267\273\345\212\240\345\212\240\347\262\227\346\240\207\347\255\276.md" b/docs/solutions/0600-0699/add-bold-tag-in-string.md similarity index 100% rename from "Solutions/0616. \347\273\231\345\255\227\347\254\246\344\270\262\346\267\273\345\212\240\345\212\240\347\262\227\346\240\207\347\255\276.md" rename to docs/solutions/0600-0699/add-bold-tag-in-string.md diff --git "a/Solutions/0639. \350\247\243\347\240\201\346\226\271\346\263\225 II.md" b/docs/solutions/0600-0699/decode-ways-ii.md similarity index 100% rename from "Solutions/0639. \350\247\243\347\240\201\346\226\271\346\263\225 II.md" rename to docs/solutions/0600-0699/decode-ways-ii.md diff --git "a/Solutions/0622. \350\256\276\350\256\241\345\276\252\347\216\257\351\230\237\345\210\227.md" b/docs/solutions/0600-0699/design-circular-queue.md similarity index 100% rename from "Solutions/0622. \350\256\276\350\256\241\345\276\252\347\216\257\351\230\237\345\210\227.md" rename to docs/solutions/0600-0699/design-circular-queue.md diff --git "a/Solutions/0642. \350\256\276\350\256\241\346\220\234\347\264\242\350\207\252\345\212\250\350\241\245\345\205\250\347\263\273\347\273\237.md" b/docs/solutions/0600-0699/design-search-autocomplete-system.md similarity index 100% rename from "Solutions/0642. \350\256\276\350\256\241\346\220\234\347\264\242\350\207\252\345\212\250\350\241\245\345\205\250\347\263\273\347\273\237.md" rename to docs/solutions/0600-0699/design-search-autocomplete-system.md diff --git "a/Solutions/0690. \345\221\230\345\267\245\347\232\204\351\207\215\350\246\201\346\200\247.md" b/docs/solutions/0600-0699/employee-importance.md similarity index 100% rename from "Solutions/0690. \345\221\230\345\267\245\347\232\204\351\207\215\350\246\201\346\200\247.md" rename to docs/solutions/0600-0699/employee-importance.md diff --git "a/Solutions/0652. \345\257\273\346\211\276\351\207\215\345\244\215\347\232\204\345\255\220\346\240\221.md" b/docs/solutions/0600-0699/find-duplicate-subtrees.md similarity index 100% rename from "Solutions/0652. \345\257\273\346\211\276\351\207\215\345\244\215\347\232\204\345\255\220\346\240\221.md" rename to docs/solutions/0600-0699/find-duplicate-subtrees.md diff --git "a/Solutions/0658. \346\211\276\345\210\260 K \344\270\252\346\234\200\346\216\245\350\277\221\347\232\204\345\205\203\347\264\240.md" b/docs/solutions/0600-0699/find-k-closest-elements.md similarity index 100% rename from "Solutions/0658. \346\211\276\345\210\260 K \344\270\252\346\234\200\346\216\245\350\277\221\347\232\204\345\205\203\347\264\240.md" rename to docs/solutions/0600-0699/find-k-closest-elements.md diff --git "a/Solutions/0676. \345\256\236\347\216\260\344\270\200\344\270\252\351\255\224\346\263\225\345\255\227\345\205\270.md" b/docs/solutions/0600-0699/implement-magic-dictionary.md similarity index 100% rename from "Solutions/0676. \345\256\236\347\216\260\344\270\200\344\270\252\351\255\224\346\263\225\345\255\227\345\205\270.md" rename to docs/solutions/0600-0699/implement-magic-dictionary.md diff --git a/docs/solutions/0600-0699/index.md b/docs/solutions/0600-0699/index.md new file mode 100644 index 00000000..d4143c6e --- /dev/null +++ b/docs/solutions/0600-0699/index.md @@ -0,0 +1,38 @@ +## 本章内容 + +- [0600. 不含连续1的非负整数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones/) +- [0611. 有效三角形的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number/) +- [0616. 给字符串添加加粗标签](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/add-bold-tag-in-string/) +- [0617. 合并二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/merge-two-binary-trees/) +- [0621. 任务调度器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/task-scheduler/) +- [0622. 设计循环队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-circular-queue/) +- [0633. 平方数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/sum-of-square-numbers/) +- [0639. 解码方法 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/decode-ways-ii/) +- [0642. 设计搜索自动补全系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-search-autocomplete-system/) +- [0643. 子数组最大平均数 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-average-subarray-i/) +- [0647. 回文子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/palindromic-substrings/) +- [0648. 单词替换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/replace-words/) +- [0650. 两个键的键盘](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/2-keys-keyboard/) +- [0652. 寻找重复的子树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-duplicate-subtrees/) +- [0653. 两数之和 IV - 输入二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/two-sum-iv-input-is-a-bst/) +- [0654. 最大二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-binary-tree/) +- [0658. 找到 K 个最接近的元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements/) +- [0662. 二叉树最大宽度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) +- [0664. 奇怪的打印机](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/strange-printer/) +- [0665. 非递减数列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-decreasing-array/) +- [0669. 修剪二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/trim-a-binary-search-tree/) +- [0673. 最长递增子序列的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) +- [0674. 最长连续递增序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-continuous-increasing-subsequence/) +- [0676. 实现一个魔法字典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/implement-magic-dictionary/) +- [0677. 键值映射](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/map-sum-pairs/) +- [0678. 有效的括号字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string/) +- [0680. 验证回文串 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-palindrome-ii/) +- [0683. K 个关闭的灯泡](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/k-empty-slots/) +- [0684. 冗余连接](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection/) +- [0686. 重复叠加字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match/) +- [0687. 最长同值路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-univalue-path/) +- [0688. 骑士在棋盘上的概率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/knight-probability-in-chessboard/) +- [0690. 员工的重要性](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/employee-importance/) +- [0691. 贴纸拼词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/stickers-to-spell-word/) +- [0695. 岛屿的最大面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island/) +- [0698. 划分为k个相等的子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/partition-to-k-equal-sum-subsets/) diff --git "a/Solutions/0683. K \344\270\252\345\205\263\351\227\255\347\232\204\347\201\257\346\263\241.md" b/docs/solutions/0600-0699/k-empty-slots.md similarity index 100% rename from "Solutions/0683. K \344\270\252\345\205\263\351\227\255\347\232\204\347\201\257\346\263\241.md" rename to docs/solutions/0600-0699/k-empty-slots.md diff --git "a/Solutions/0688. \351\252\221\345\243\253\345\234\250\346\243\213\347\233\230\344\270\212\347\232\204\346\246\202\347\216\207.md" b/docs/solutions/0600-0699/knight-probability-in-chessboard.md similarity index 100% rename from "Solutions/0688. \351\252\221\345\243\253\345\234\250\346\243\213\347\233\230\344\270\212\347\232\204\346\246\202\347\216\207.md" rename to docs/solutions/0600-0699/knight-probability-in-chessboard.md diff --git "a/Solutions/0674. \346\234\200\351\225\277\350\277\236\347\273\255\351\200\222\345\242\236\345\272\217\345\210\227.md" b/docs/solutions/0600-0699/longest-continuous-increasing-subsequence.md similarity index 100% rename from "Solutions/0674. \346\234\200\351\225\277\350\277\236\347\273\255\351\200\222\345\242\236\345\272\217\345\210\227.md" rename to docs/solutions/0600-0699/longest-continuous-increasing-subsequence.md diff --git "a/Solutions/0687. \346\234\200\351\225\277\345\220\214\345\200\274\350\267\257\345\276\204.md" b/docs/solutions/0600-0699/longest-univalue-path.md similarity index 100% rename from "Solutions/0687. \346\234\200\351\225\277\345\220\214\345\200\274\350\267\257\345\276\204.md" rename to docs/solutions/0600-0699/longest-univalue-path.md diff --git "a/Solutions/0677. \351\224\256\345\200\274\346\230\240\345\260\204.md" b/docs/solutions/0600-0699/map-sum-pairs.md similarity index 100% rename from "Solutions/0677. \351\224\256\345\200\274\346\230\240\345\260\204.md" rename to docs/solutions/0600-0699/map-sum-pairs.md diff --git "a/Solutions/0695. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" b/docs/solutions/0600-0699/max-area-of-island.md similarity index 100% rename from "Solutions/0695. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" rename to docs/solutions/0600-0699/max-area-of-island.md diff --git "a/Solutions/0643. \345\255\220\346\225\260\347\273\204\346\234\200\345\244\247\345\271\263\345\235\207\346\225\260 I.md" b/docs/solutions/0600-0699/maximum-average-subarray-i.md similarity index 100% rename from "Solutions/0643. \345\255\220\346\225\260\347\273\204\346\234\200\345\244\247\345\271\263\345\235\207\346\225\260 I.md" rename to docs/solutions/0600-0699/maximum-average-subarray-i.md diff --git "a/Solutions/0654. \346\234\200\345\244\247\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/0600-0699/maximum-binary-tree.md similarity index 100% rename from "Solutions/0654. \346\234\200\345\244\247\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/0600-0699/maximum-binary-tree.md diff --git "a/Solutions/0662. \344\272\214\345\217\211\346\240\221\346\234\200\345\244\247\345\256\275\345\272\246.md" b/docs/solutions/0600-0699/maximum-width-of-binary-tree.md similarity index 100% rename from "Solutions/0662. \344\272\214\345\217\211\346\240\221\346\234\200\345\244\247\345\256\275\345\272\246.md" rename to docs/solutions/0600-0699/maximum-width-of-binary-tree.md diff --git "a/Solutions/0617. \345\220\210\345\271\266\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/0600-0699/merge-two-binary-trees.md similarity index 100% rename from "Solutions/0617. \345\220\210\345\271\266\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/0600-0699/merge-two-binary-trees.md diff --git "a/Solutions/0665. \351\235\236\351\200\222\345\207\217\346\225\260\345\210\227.md" b/docs/solutions/0600-0699/non-decreasing-array.md similarity index 100% rename from "Solutions/0665. \351\235\236\351\200\222\345\207\217\346\225\260\345\210\227.md" rename to docs/solutions/0600-0699/non-decreasing-array.md diff --git "a/Solutions/0600. \344\270\215\345\220\253\350\277\236\347\273\2551\347\232\204\351\235\236\350\264\237\346\225\264\346\225\260.md" b/docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones.md similarity index 100% rename from "Solutions/0600. \344\270\215\345\220\253\350\277\236\347\273\2551\347\232\204\351\235\236\350\264\237\346\225\264\346\225\260.md" rename to docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones.md diff --git "a/Solutions/0673. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227\347\232\204\344\270\252\346\225\260.md" b/docs/solutions/0600-0699/number-of-longest-increasing-subsequence.md similarity index 100% rename from "Solutions/0673. \346\234\200\351\225\277\351\200\222\345\242\236\345\255\220\345\272\217\345\210\227\347\232\204\344\270\252\346\225\260.md" rename to docs/solutions/0600-0699/number-of-longest-increasing-subsequence.md diff --git "a/Solutions/0647. \345\233\236\346\226\207\345\255\220\344\270\262.md" b/docs/solutions/0600-0699/palindromic-substrings.md similarity index 100% rename from "Solutions/0647. \345\233\236\346\226\207\345\255\220\344\270\262.md" rename to docs/solutions/0600-0699/palindromic-substrings.md diff --git "a/Solutions/0698. \345\210\222\345\210\206\344\270\272k\344\270\252\347\233\270\347\255\211\347\232\204\345\255\220\351\233\206.md" b/docs/solutions/0600-0699/partition-to-k-equal-sum-subsets.md similarity index 100% rename from "Solutions/0698. \345\210\222\345\210\206\344\270\272k\344\270\252\347\233\270\347\255\211\347\232\204\345\255\220\351\233\206.md" rename to docs/solutions/0600-0699/partition-to-k-equal-sum-subsets.md diff --git "a/Solutions/0684. \345\206\227\344\275\231\350\277\236\346\216\245.md" b/docs/solutions/0600-0699/redundant-connection.md similarity index 100% rename from "Solutions/0684. \345\206\227\344\275\231\350\277\236\346\216\245.md" rename to docs/solutions/0600-0699/redundant-connection.md diff --git "a/Solutions/0686. \351\207\215\345\244\215\345\217\240\345\212\240\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" b/docs/solutions/0600-0699/repeated-string-match.md similarity index 100% rename from "Solutions/0686. \351\207\215\345\244\215\345\217\240\345\212\240\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" rename to docs/solutions/0600-0699/repeated-string-match.md diff --git "a/Solutions/0648. \345\215\225\350\257\215\346\233\277\346\215\242.md" b/docs/solutions/0600-0699/replace-words.md similarity index 100% rename from "Solutions/0648. \345\215\225\350\257\215\346\233\277\346\215\242.md" rename to docs/solutions/0600-0699/replace-words.md diff --git "a/Solutions/0691. \350\264\264\347\272\270\346\213\274\350\257\215.md" b/docs/solutions/0600-0699/stickers-to-spell-word.md similarity index 100% rename from "Solutions/0691. \350\264\264\347\272\270\346\213\274\350\257\215.md" rename to docs/solutions/0600-0699/stickers-to-spell-word.md diff --git "a/Solutions/0664. \345\245\207\346\200\252\347\232\204\346\211\223\345\215\260\346\234\272.md" b/docs/solutions/0600-0699/strange-printer.md similarity index 100% rename from "Solutions/0664. \345\245\207\346\200\252\347\232\204\346\211\223\345\215\260\346\234\272.md" rename to docs/solutions/0600-0699/strange-printer.md diff --git "a/Solutions/0633. \345\271\263\346\226\271\346\225\260\344\271\213\345\222\214.md" b/docs/solutions/0600-0699/sum-of-square-numbers.md similarity index 100% rename from "Solutions/0633. \345\271\263\346\226\271\346\225\260\344\271\213\345\222\214.md" rename to docs/solutions/0600-0699/sum-of-square-numbers.md diff --git "a/Solutions/0621. \344\273\273\345\212\241\350\260\203\345\272\246\345\231\250.md" b/docs/solutions/0600-0699/task-scheduler.md similarity index 100% rename from "Solutions/0621. \344\273\273\345\212\241\350\260\203\345\272\246\345\231\250.md" rename to docs/solutions/0600-0699/task-scheduler.md diff --git "a/Solutions/0669. \344\277\256\345\211\252\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" b/docs/solutions/0600-0699/trim-a-binary-search-tree.md similarity index 100% rename from "Solutions/0669. \344\277\256\345\211\252\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" rename to docs/solutions/0600-0699/trim-a-binary-search-tree.md diff --git "a/Solutions/0653. \344\270\244\346\225\260\344\271\213\345\222\214 IV - \350\276\223\345\205\245\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" b/docs/solutions/0600-0699/two-sum-iv-input-is-a-bst.md similarity index 100% rename from "Solutions/0653. \344\270\244\346\225\260\344\271\213\345\222\214 IV - \350\276\223\345\205\245\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" rename to docs/solutions/0600-0699/two-sum-iv-input-is-a-bst.md diff --git "a/Solutions/0680. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262 II.md" b/docs/solutions/0600-0699/valid-palindrome-ii.md similarity index 100% rename from "Solutions/0680. \351\252\214\350\257\201\345\233\236\346\226\207\344\270\262 II.md" rename to docs/solutions/0600-0699/valid-palindrome-ii.md diff --git "a/Solutions/0678. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/0600-0699/valid-parenthesis-string.md similarity index 100% rename from "Solutions/0678. \346\234\211\346\225\210\347\232\204\346\213\254\345\217\267\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/0600-0699/valid-parenthesis-string.md diff --git "a/Solutions/0611. \346\234\211\346\225\210\344\270\211\350\247\222\345\275\242\347\232\204\344\270\252\346\225\260.md" b/docs/solutions/0600-0699/valid-triangle-number.md similarity index 100% rename from "Solutions/0611. \346\234\211\346\225\210\344\270\211\350\247\222\345\275\242\347\232\204\344\270\252\346\225\260.md" rename to docs/solutions/0600-0699/valid-triangle-number.md diff --git "a/Solutions/0797. \346\211\200\346\234\211\345\217\257\350\203\275\347\232\204\350\267\257\345\276\204.md" b/docs/solutions/0700-0799/all-paths-from-source-to-target.md similarity index 100% rename from "Solutions/0797. \346\211\200\346\234\211\345\217\257\350\203\275\347\232\204\350\267\257\345\276\204.md" rename to docs/solutions/0700-0799/all-paths-from-source-to-target.md diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 037. \345\260\217\350\241\214\346\230\237\347\242\260\346\222\236.md" b/docs/solutions/0700-0799/asteroid-collision.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 037. \345\260\217\350\241\214\346\230\237\347\242\260\346\222\236.md" rename to docs/solutions/0700-0799/asteroid-collision.md index c5ce82f8..647d0583 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 037. \345\260\217\350\241\214\346\230\237\347\242\260\346\222\236.md" +++ b/docs/solutions/0700-0799/asteroid-collision.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 037. 小行星碰撞](https://leetcode.cn/problems/XagZNi/) +# [0735. 小行星碰撞](https://leetcode.cn/problems/asteroid-collision/) - 标签:栈、数组 - 难度:中等 ## 题目链接 -- [剑指 Offer II 037. 小行星碰撞 - 力扣](https://leetcode.cn/problems/XagZNi/) +- [0735. 小行星碰撞 - 力扣](https://leetcode.cn/problems/asteroid-collision/) ## 题目大意 diff --git "a/Solutions/0714. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272\345\220\253\346\211\213\347\273\255\350\264\271.md" b/docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee.md similarity index 100% rename from "Solutions/0714. \344\271\260\345\215\226\350\202\241\347\245\250\347\232\204\346\234\200\344\275\263\346\227\266\346\234\272\345\220\253\346\211\213\347\273\255\350\264\271.md" rename to docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee.md diff --git "a/Solutions/0704. \344\272\214\345\210\206\346\237\245\346\211\276.md" b/docs/solutions/0700-0799/binary-search.md similarity index 100% rename from "Solutions/0704. \344\272\214\345\210\206\346\237\245\346\211\276.md" rename to docs/solutions/0700-0799/binary-search.md diff --git "a/Solutions/0758. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\212\240\347\262\227\345\215\225\350\257\215.md" b/docs/solutions/0700-0799/bold-words-in-string.md similarity index 100% rename from "Solutions/0758. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\212\240\347\262\227\345\215\225\350\257\215.md" rename to docs/solutions/0700-0799/bold-words-in-string.md diff --git "a/Solutions/0765. \346\203\205\344\276\243\347\211\265\346\211\213.md" b/docs/solutions/0700-0799/couples-holding-hands.md similarity index 100% rename from "Solutions/0765. \346\203\205\344\276\243\347\211\265\346\211\213.md" rename to docs/solutions/0700-0799/couples-holding-hands.md diff --git "a/Solutions/0739. \346\257\217\346\227\245\346\270\251\345\272\246.md" b/docs/solutions/0700-0799/daily-temperatures.md similarity index 100% rename from "Solutions/0739. \346\257\217\346\227\245\346\270\251\345\272\246.md" rename to docs/solutions/0700-0799/daily-temperatures.md diff --git "a/Solutions/0706. \350\256\276\350\256\241\345\223\210\345\270\214\346\230\240\345\260\204.md" b/docs/solutions/0700-0799/design-hashmap.md similarity index 100% rename from "Solutions/0706. \350\256\276\350\256\241\345\223\210\345\270\214\346\230\240\345\260\204.md" rename to docs/solutions/0700-0799/design-hashmap.md diff --git "a/Solutions/0705. \350\256\276\350\256\241\345\223\210\345\270\214\351\233\206\345\220\210.md" b/docs/solutions/0700-0799/design-hashset.md similarity index 100% rename from "Solutions/0705. \350\256\276\350\256\241\345\223\210\345\270\214\351\233\206\345\220\210.md" rename to docs/solutions/0700-0799/design-hashset.md diff --git "a/Solutions/0707. \350\256\276\350\256\241\351\223\276\350\241\250.md" b/docs/solutions/0700-0799/design-linked-list.md similarity index 100% rename from "Solutions/0707. \350\256\276\350\256\241\351\223\276\350\241\250.md" rename to docs/solutions/0700-0799/design-linked-list.md diff --git "a/Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" b/docs/solutions/0700-0799/find-k-th-smallest-pair-distance.md similarity index 100% rename from "Solutions/0719. \346\211\276\345\207\272\347\254\254 K \345\260\217\347\232\204\346\225\260\345\257\271\350\267\235\347\246\273.md" rename to docs/solutions/0700-0799/find-k-th-smallest-pair-distance.md diff --git "a/Solutions/0724. \345\257\273\346\211\276\346\225\260\347\273\204\347\232\204\344\270\255\345\277\203\344\270\213\346\240\207.md" b/docs/solutions/0700-0799/find-pivot-index.md similarity index 100% rename from "Solutions/0724. \345\257\273\346\211\276\346\225\260\347\273\204\347\232\204\344\270\255\345\277\203\344\270\213\346\240\207.md" rename to docs/solutions/0700-0799/find-pivot-index.md diff --git "a/Solutions/0744. \345\257\273\346\211\276\346\257\224\347\233\256\346\240\207\345\255\227\346\257\215\345\244\247\347\232\204\346\234\200\345\260\217\345\255\227\346\257\215.md" b/docs/solutions/0700-0799/find-smallest-letter-greater-than-target.md similarity index 100% rename from "Solutions/0744. \345\257\273\346\211\276\346\257\224\347\233\256\346\240\207\345\255\227\346\257\215\345\244\247\347\232\204\346\234\200\345\260\217\345\255\227\346\257\215.md" rename to docs/solutions/0700-0799/find-smallest-letter-greater-than-target.md diff --git "a/Solutions/0733. \345\233\276\345\203\217\346\270\262\346\237\223.md" b/docs/solutions/0700-0799/flood-fill.md similarity index 100% rename from "Solutions/0733. \345\233\276\345\203\217\346\270\262\346\237\223.md" rename to docs/solutions/0700-0799/flood-fill.md diff --git a/docs/solutions/0700-0799/index.md b/docs/solutions/0700-0799/index.md new file mode 100644 index 00000000..118b4ef9 --- /dev/null +++ b/docs/solutions/0700-0799/index.md @@ -0,0 +1,44 @@ +## 本章内容 + +- [0700. 二叉搜索树中的搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-binary-search-tree/) +- [0701. 二叉搜索树中的插入操作](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-binary-search-tree/) +- [0702. 搜索长度未知的有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size/) +- [0703. 数据流中的第 K 大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream/) +- [0704. 二分查找](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search/) +- [0705. 设计哈希集合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashset/) +- [0706. 设计哈希映射](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashmap/) +- [0707. 设计链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-linked-list/) +- [0708. 循环有序列表的插入](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-sorted-circular-linked-list/) +- [0709. 转换成小写字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/to-lower-case/) +- [0713. 乘积小于 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/subarray-product-less-than-k/) +- [0714. 买卖股票的最佳时机含手续费](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee/) +- [0715. Range 模块](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/range-module/) +- [0718. 最长重复子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) +- [0719. 找出第 K 小的数对距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance/) +- [0720. 词典中最长的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/longest-word-in-dictionary/) +- [0724. 寻找数组的中心下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-pivot-index/) +- [0727. 最小窗口子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-window-subsequence/) +- [0729. 我的日程安排表 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-i/) +- [0731. 我的日程安排表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-ii/) +- [0732. 我的日程安排表 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-iii/) +- [0733. 图像渲染](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/flood-fill/) +- [0735. 小行星碰撞](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/asteroid-collision/) +- [0738. 单调递增的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/monotone-increasing-digits/) +- [0739. 每日温度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) +- [0744. 寻找比目标字母大的最小字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-smallest-letter-greater-than-target/) +- [0746. 使用最小花费爬楼梯](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/min-cost-climbing-stairs/) +- [0752. 打开转盘锁](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/open-the-lock/) +- [0758. 字符串中的加粗单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/bold-words-in-string/) +- [0763. 划分字母区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/partition-labels/) +- [0765. 情侣牵手](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/couples-holding-hands/) +- [0766. 托普利茨矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/toeplitz-matrix/) +- [0771. 宝石与石头](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/jewels-and-stones/) +- [0778. 水位上升的泳池中游泳](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water/) +- [0779. 第K个语法符号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/k-th-symbol-in-grammar/) +- [0783. 二叉搜索树节点最小距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-distance-between-bst-nodes/) +- [0784. 字母大小写全排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/letter-case-permutation/) +- [0785. 判断二分图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite/) +- [0788. 旋转数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotated-digits/) +- [0795. 区间子数组个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum/) +- [0796. 旋转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string/) +- [0797. 所有可能的路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target/) diff --git "a/Solutions/0701. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\217\222\345\205\245\346\223\215\344\275\234.md" b/docs/solutions/0700-0799/insert-into-a-binary-search-tree.md similarity index 100% rename from "Solutions/0701. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\217\222\345\205\245\346\223\215\344\275\234.md" rename to docs/solutions/0700-0799/insert-into-a-binary-search-tree.md diff --git "a/Solutions/0708. \345\276\252\347\216\257\346\234\211\345\272\217\345\210\227\350\241\250\347\232\204\346\217\222\345\205\245.md" b/docs/solutions/0700-0799/insert-into-a-sorted-circular-linked-list.md similarity index 100% rename from "Solutions/0708. \345\276\252\347\216\257\346\234\211\345\272\217\345\210\227\350\241\250\347\232\204\346\217\222\345\205\245.md" rename to docs/solutions/0700-0799/insert-into-a-sorted-circular-linked-list.md diff --git "a/Solutions/0785. \345\210\244\346\226\255\344\272\214\345\210\206\345\233\276.md" b/docs/solutions/0700-0799/is-graph-bipartite.md similarity index 100% rename from "Solutions/0785. \345\210\244\346\226\255\344\272\214\345\210\206\345\233\276.md" rename to docs/solutions/0700-0799/is-graph-bipartite.md diff --git "a/Solutions/0771. \345\256\235\347\237\263\344\270\216\347\237\263\345\244\264.md" b/docs/solutions/0700-0799/jewels-and-stones.md similarity index 100% rename from "Solutions/0771. \345\256\235\347\237\263\344\270\216\347\237\263\345\244\264.md" rename to docs/solutions/0700-0799/jewels-and-stones.md diff --git "a/Solutions/0779. \347\254\254K\344\270\252\350\257\255\346\263\225\347\254\246\345\217\267.md" b/docs/solutions/0700-0799/k-th-symbol-in-grammar.md similarity index 100% rename from "Solutions/0779. \347\254\254K\344\270\252\350\257\255\346\263\225\347\254\246\345\217\267.md" rename to docs/solutions/0700-0799/k-th-symbol-in-grammar.md diff --git "a/Solutions/0703. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254 K \345\244\247\345\205\203\347\264\240.md" b/docs/solutions/0700-0799/kth-largest-element-in-a-stream.md similarity index 100% rename from "Solutions/0703. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\347\254\254 K \345\244\247\345\205\203\347\264\240.md" rename to docs/solutions/0700-0799/kth-largest-element-in-a-stream.md diff --git "a/Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" b/docs/solutions/0700-0799/letter-case-permutation.md similarity index 100% rename from "Solutions/0784. \345\255\227\346\257\215\345\244\247\345\260\217\345\206\231\345\205\250\346\216\222\345\210\227.md" rename to docs/solutions/0700-0799/letter-case-permutation.md diff --git "a/Solutions/0720. \350\257\215\345\205\270\344\270\255\346\234\200\351\225\277\347\232\204\345\215\225\350\257\215.md" b/docs/solutions/0700-0799/longest-word-in-dictionary.md similarity index 100% rename from "Solutions/0720. \350\257\215\345\205\270\344\270\255\346\234\200\351\225\277\347\232\204\345\215\225\350\257\215.md" rename to docs/solutions/0700-0799/longest-word-in-dictionary.md diff --git "a/Solutions/0718. \346\234\200\351\225\277\351\207\215\345\244\215\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md similarity index 100% rename from "Solutions/0718. \346\234\200\351\225\277\351\207\215\345\244\215\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md diff --git "a/Solutions/0746. \344\275\277\347\224\250\346\234\200\345\260\217\350\212\261\350\264\271\347\210\254\346\245\274\346\242\257.md" b/docs/solutions/0700-0799/min-cost-climbing-stairs.md similarity index 100% rename from "Solutions/0746. \344\275\277\347\224\250\346\234\200\345\260\217\350\212\261\350\264\271\347\210\254\346\245\274\346\242\257.md" rename to docs/solutions/0700-0799/min-cost-climbing-stairs.md diff --git "a/Solutions/0783. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\212\202\347\202\271\346\234\200\345\260\217\350\267\235\347\246\273.md" b/docs/solutions/0700-0799/minimum-distance-between-bst-nodes.md similarity index 100% rename from "Solutions/0783. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\212\202\347\202\271\346\234\200\345\260\217\350\267\235\347\246\273.md" rename to docs/solutions/0700-0799/minimum-distance-between-bst-nodes.md diff --git "a/Solutions/0727. \346\234\200\345\260\217\347\252\227\345\217\243\345\255\220\345\272\217\345\210\227.md" b/docs/solutions/0700-0799/minimum-window-subsequence.md similarity index 100% rename from "Solutions/0727. \346\234\200\345\260\217\347\252\227\345\217\243\345\255\220\345\272\217\345\210\227.md" rename to docs/solutions/0700-0799/minimum-window-subsequence.md diff --git "a/Solutions/0738. \345\215\225\350\260\203\351\200\222\345\242\236\347\232\204\346\225\260\345\255\227.md" b/docs/solutions/0700-0799/monotone-increasing-digits.md similarity index 100% rename from "Solutions/0738. \345\215\225\350\260\203\351\200\222\345\242\236\347\232\204\346\225\260\345\255\227.md" rename to docs/solutions/0700-0799/monotone-increasing-digits.md diff --git "a/Solutions/0729. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 I.md" b/docs/solutions/0700-0799/my-calendar-i.md similarity index 100% rename from "Solutions/0729. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 I.md" rename to docs/solutions/0700-0799/my-calendar-i.md diff --git "a/Solutions/0731. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 II.md" b/docs/solutions/0700-0799/my-calendar-ii.md similarity index 100% rename from "Solutions/0731. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 II.md" rename to docs/solutions/0700-0799/my-calendar-ii.md diff --git "a/Solutions/0732. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 III.md" b/docs/solutions/0700-0799/my-calendar-iii.md similarity index 100% rename from "Solutions/0732. \346\210\221\347\232\204\346\227\245\347\250\213\345\256\211\346\216\222\350\241\250 III.md" rename to docs/solutions/0700-0799/my-calendar-iii.md diff --git "a/Solutions/0795. \345\214\272\351\227\264\345\255\220\346\225\260\347\273\204\344\270\252\346\225\260.md" b/docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum.md similarity index 100% rename from "Solutions/0795. \345\214\272\351\227\264\345\255\220\346\225\260\347\273\204\344\270\252\346\225\260.md" rename to docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum.md diff --git "a/Solutions/0752. \346\211\223\345\274\200\350\275\254\347\233\230\351\224\201.md" b/docs/solutions/0700-0799/open-the-lock.md similarity index 100% rename from "Solutions/0752. \346\211\223\345\274\200\350\275\254\347\233\230\351\224\201.md" rename to docs/solutions/0700-0799/open-the-lock.md diff --git "a/Solutions/0763. \345\210\222\345\210\206\345\255\227\346\257\215\345\214\272\351\227\264.md" b/docs/solutions/0700-0799/partition-labels.md similarity index 100% rename from "Solutions/0763. \345\210\222\345\210\206\345\255\227\346\257\215\345\214\272\351\227\264.md" rename to docs/solutions/0700-0799/partition-labels.md diff --git "a/Solutions/0715. Range \346\250\241\345\235\227.md" b/docs/solutions/0700-0799/range-module.md similarity index 100% rename from "Solutions/0715. Range \346\250\241\345\235\227.md" rename to docs/solutions/0700-0799/range-module.md diff --git "a/Solutions/0796. \346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/0700-0799/rotate-string.md similarity index 100% rename from "Solutions/0796. \346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/0700-0799/rotate-string.md diff --git "a/Solutions/0788. \346\227\213\350\275\254\346\225\260\345\255\227.md" b/docs/solutions/0700-0799/rotated-digits.md similarity index 100% rename from "Solutions/0788. \346\227\213\350\275\254\346\225\260\345\255\227.md" rename to docs/solutions/0700-0799/rotated-digits.md diff --git "a/Solutions/0700. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\220\234\347\264\242.md" b/docs/solutions/0700-0799/search-in-a-binary-search-tree.md similarity index 100% rename from "Solutions/0700. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\220\234\347\264\242.md" rename to docs/solutions/0700-0799/search-in-a-binary-search-tree.md diff --git "a/Solutions/0702. \346\220\234\347\264\242\351\225\277\345\272\246\346\234\252\347\237\245\347\232\204\346\234\211\345\272\217\346\225\260\347\273\204.md" b/docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size.md similarity index 100% rename from "Solutions/0702. \346\220\234\347\264\242\351\225\277\345\272\246\346\234\252\347\237\245\347\232\204\346\234\211\345\272\217\346\225\260\347\273\204.md" rename to docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size.md diff --git "a/Solutions/0713. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/0700-0799/subarray-product-less-than-k.md similarity index 100% rename from "Solutions/0713. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/0700-0799/subarray-product-less-than-k.md diff --git "a/Solutions/0778. \346\260\264\344\275\215\344\270\212\345\215\207\347\232\204\346\263\263\346\261\240\344\270\255\346\270\270\346\263\263.md" b/docs/solutions/0700-0799/swim-in-rising-water.md similarity index 100% rename from "Solutions/0778. \346\260\264\344\275\215\344\270\212\345\215\207\347\232\204\346\263\263\346\261\240\344\270\255\346\270\270\346\263\263.md" rename to docs/solutions/0700-0799/swim-in-rising-water.md diff --git "a/Solutions/0709. \350\275\254\346\215\242\346\210\220\345\260\217\345\206\231\345\255\227\346\257\215.md" b/docs/solutions/0700-0799/to-lower-case.md similarity index 100% rename from "Solutions/0709. \350\275\254\346\215\242\346\210\220\345\260\217\345\206\231\345\255\227\346\257\215.md" rename to docs/solutions/0700-0799/to-lower-case.md diff --git "a/Solutions/0766. \346\211\230\346\231\256\345\210\251\350\214\250\347\237\251\351\230\265.md" b/docs/solutions/0700-0799/toeplitz-matrix.md similarity index 100% rename from "Solutions/0766. \346\211\230\346\231\256\345\210\251\350\214\250\347\237\251\351\230\265.md" rename to docs/solutions/0700-0799/toeplitz-matrix.md diff --git "a/Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/0800-0899/backspace-string-compare.md similarity index 100% rename from "Solutions/0844. \346\257\224\350\276\203\345\220\253\351\200\200\346\240\274\347\232\204\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/0800-0899/backspace-string-compare.md diff --git "a/Solutions/0868. \344\272\214\350\277\233\345\210\266\351\227\264\350\267\235.md" b/docs/solutions/0800-0899/binary-gap.md similarity index 100% rename from "Solutions/0868. \344\272\214\350\277\233\345\210\266\351\227\264\350\267\235.md" rename to docs/solutions/0800-0899/binary-gap.md diff --git "a/Solutions/0814. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" b/docs/solutions/0800-0899/binary-tree-pruning.md similarity index 100% rename from "Solutions/0814. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" rename to docs/solutions/0800-0899/binary-tree-pruning.md diff --git "a/Solutions/0881. \346\225\221\347\224\237\350\211\207.md" b/docs/solutions/0800-0899/boats-to-save-people.md similarity index 100% rename from "Solutions/0881. \346\225\221\347\224\237\350\211\207.md" rename to docs/solutions/0800-0899/boats-to-save-people.md diff --git "a/Solutions/0803. \346\211\223\347\240\226\345\235\227.md" b/docs/solutions/0800-0899/bricks-falling-when-hit.md similarity index 100% rename from "Solutions/0803. \346\211\223\347\240\226\345\235\227.md" rename to docs/solutions/0800-0899/bricks-falling-when-hit.md diff --git "a/Solutions/0889. \346\240\271\346\215\256\345\211\215\345\272\217\345\222\214\345\220\216\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal.md similarity index 100% rename from "Solutions/0889. \346\240\271\346\215\256\345\211\215\345\272\217\345\222\214\345\220\216\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal.md diff --git "a/Solutions/0802. \346\211\276\345\210\260\346\234\200\347\273\210\347\232\204\345\256\211\345\205\250\347\212\266\346\200\201.md" b/docs/solutions/0800-0899/find-eventual-safe-states.md similarity index 100% rename from "Solutions/0802. \346\211\276\345\210\260\346\234\200\347\273\210\347\232\204\345\256\211\345\205\250\347\212\266\346\200\201.md" rename to docs/solutions/0800-0899/find-eventual-safe-states.md diff --git "a/Solutions/0832. \347\277\273\350\275\254\345\233\276\345\203\217.md" b/docs/solutions/0800-0899/flipping-an-image.md similarity index 100% rename from "Solutions/0832. \347\277\273\350\275\254\345\233\276\345\203\217.md" rename to docs/solutions/0800-0899/flipping-an-image.md diff --git "a/Solutions/0824. \345\261\261\347\276\212\346\213\211\344\270\201\346\226\207.md" b/docs/solutions/0800-0899/goat-latin.md similarity index 100% rename from "Solutions/0824. \345\261\261\347\276\212\346\213\211\344\270\201\346\226\207.md" rename to docs/solutions/0800-0899/goat-latin.md diff --git "a/Solutions/0846. \344\270\200\346\211\213\351\241\272\345\255\220.md" b/docs/solutions/0800-0899/hand-of-straights.md similarity index 100% rename from "Solutions/0846. \344\270\200\346\211\213\351\241\272\345\255\220.md" rename to docs/solutions/0800-0899/hand-of-straights.md diff --git "a/Solutions/0897. \351\200\222\345\242\236\351\241\272\345\272\217\346\220\234\347\264\242\346\240\221.md" b/docs/solutions/0800-0899/increasing-order-search-tree.md similarity index 100% rename from "Solutions/0897. \351\200\222\345\242\236\351\241\272\345\272\217\346\220\234\347\264\242\346\240\221.md" rename to docs/solutions/0800-0899/increasing-order-search-tree.md diff --git a/docs/solutions/0800-0899/index.md b/docs/solutions/0800-0899/index.md new file mode 100644 index 00000000..45e6a0b5 --- /dev/null +++ b/docs/solutions/0800-0899/index.md @@ -0,0 +1,43 @@ +## 本章内容 + +- [0800. 相似 RGB 颜色](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/similar-rgb-color/) +- [0801. 使序列递增的最小交换次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing/) +- [0802. 找到最终的安全状态](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states/) +- [0803. 打砖块](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bricks-falling-when-hit/) +- [0804. 唯一摩尔斯密码词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/unique-morse-code-words/) +- [0806. 写字符串需要的行数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/number-of-lines-to-write-string/) +- [0811. 子域名访问计数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/subdomain-visit-count/) +- [0814. 二叉树剪枝](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-tree-pruning/) +- [0819. 最常见的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/most-common-word/) +- [0820. 单词的压缩编码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/short-encoding-of-words/) +- [0821. 字符的最短距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-distance-to-a-character/) +- [0824. 山羊拉丁文](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/goat-latin/) +- [0830. 较大分组的位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/positions-of-large-groups/) +- [0832. 翻转图像](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/flipping-an-image/) +- [0834. 树中距离之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/sum-of-distances-in-tree/) +- [0836. 矩形重叠](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-overlap/) +- [0841. 钥匙和房间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/keys-and-rooms/) +- [0844. 比较含退格的字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/backspace-string-compare/) +- [0845. 数组中的最长山脉](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/longest-mountain-in-array/) +- [0846. 一手顺子](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/hand-of-straights/) +- [0847. 访问所有节点的最短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-path-visiting-all-nodes/) +- [0850. 矩形面积 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-area-ii/) +- [0851. 喧闹和富有](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/loud-and-rich/) +- [0852. 山脉数组的峰顶索引](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/peak-index-in-a-mountain-array/) +- [0860. 柠檬水找零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/lemonade-change/) +- [0861. 翻转矩阵后的得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/score-after-flipping-matrix/) +- [0862. 和至少为 K 的最短子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k/) +- [0867. 转置矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/transpose-matrix/) +- [0868. 二进制间距](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-gap/) +- [0872. 叶子相似的树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/leaf-similar-trees/) +- [0873. 最长的斐波那契子序列的长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence/) +- [0875. 爱吃香蕉的珂珂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/koko-eating-bananas/) +- [0876. 链表的中间结点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/middle-of-the-linked-list/) +- [0877. 石子游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/stone-game/) +- [0881. 救生艇](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/boats-to-save-people/) +- [0884. 两句话中的不常见单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/uncommon-words-from-two-sentences/) +- [0886. 可能的二分法](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/possible-bipartition/) +- [0887. 鸡蛋掉落](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop/) +- [0889. 根据前序和后序遍历构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal/) +- [0892. 三维形体的表面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/surface-area-of-3d-shapes/) +- [0897. 递增顺序搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/increasing-order-search-tree/) diff --git "a/Solutions/0841. \351\222\245\345\214\231\345\222\214\346\210\277\351\227\264.md" b/docs/solutions/0800-0899/keys-and-rooms.md similarity index 100% rename from "Solutions/0841. \351\222\245\345\214\231\345\222\214\346\210\277\351\227\264.md" rename to docs/solutions/0800-0899/keys-and-rooms.md diff --git "a/Solutions/0875. \347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.md" b/docs/solutions/0800-0899/koko-eating-bananas.md similarity index 100% rename from "Solutions/0875. \347\210\261\345\220\203\351\246\231\350\225\211\347\232\204\347\217\202\347\217\202.md" rename to docs/solutions/0800-0899/koko-eating-bananas.md diff --git "a/Solutions/0872. \345\217\266\345\255\220\347\233\270\344\274\274\347\232\204\346\240\221.md" b/docs/solutions/0800-0899/leaf-similar-trees.md similarity index 100% rename from "Solutions/0872. \345\217\266\345\255\220\347\233\270\344\274\274\347\232\204\346\240\221.md" rename to docs/solutions/0800-0899/leaf-similar-trees.md diff --git "a/Solutions/0860. \346\237\240\346\252\254\346\260\264\346\211\276\351\233\266.md" b/docs/solutions/0800-0899/lemonade-change.md similarity index 100% rename from "Solutions/0860. \346\237\240\346\252\254\346\260\264\346\211\276\351\233\266.md" rename to docs/solutions/0800-0899/lemonade-change.md diff --git "a/Solutions/0873. \346\234\200\351\225\277\347\232\204\346\226\220\346\263\242\351\202\243\345\245\221\345\255\220\345\272\217\345\210\227\347\232\204\351\225\277\345\272\246.md" b/docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence.md similarity index 100% rename from "Solutions/0873. \346\234\200\351\225\277\347\232\204\346\226\220\346\263\242\351\202\243\345\245\221\345\255\220\345\272\217\345\210\227\347\232\204\351\225\277\345\272\246.md" rename to docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence.md diff --git "a/Solutions/0845. \346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\351\225\277\345\261\261\350\204\211.md" b/docs/solutions/0800-0899/longest-mountain-in-array.md similarity index 100% rename from "Solutions/0845. \346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\351\225\277\345\261\261\350\204\211.md" rename to docs/solutions/0800-0899/longest-mountain-in-array.md diff --git "a/Solutions/0851. \345\226\247\351\227\271\345\222\214\345\257\214\346\234\211.md" b/docs/solutions/0800-0899/loud-and-rich.md similarity index 100% rename from "Solutions/0851. \345\226\247\351\227\271\345\222\214\345\257\214\346\234\211.md" rename to docs/solutions/0800-0899/loud-and-rich.md diff --git "a/Solutions/0876. \351\223\276\350\241\250\347\232\204\344\270\255\351\227\264\347\273\223\347\202\271.md" b/docs/solutions/0800-0899/middle-of-the-linked-list.md similarity index 100% rename from "Solutions/0876. \351\223\276\350\241\250\347\232\204\344\270\255\351\227\264\347\273\223\347\202\271.md" rename to docs/solutions/0800-0899/middle-of-the-linked-list.md diff --git "a/Solutions/0801. \344\275\277\345\272\217\345\210\227\351\200\222\345\242\236\347\232\204\346\234\200\345\260\217\344\272\244\346\215\242\346\254\241\346\225\260.md" b/docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing.md similarity index 100% rename from "Solutions/0801. \344\275\277\345\272\217\345\210\227\351\200\222\345\242\236\347\232\204\346\234\200\345\260\217\344\272\244\346\215\242\346\254\241\346\225\260.md" rename to docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing.md diff --git "a/Solutions/0819. \346\234\200\345\270\270\350\247\201\347\232\204\345\215\225\350\257\215.md" b/docs/solutions/0800-0899/most-common-word.md similarity index 100% rename from "Solutions/0819. \346\234\200\345\270\270\350\247\201\347\232\204\345\215\225\350\257\215.md" rename to docs/solutions/0800-0899/most-common-word.md diff --git "a/Solutions/0806. \345\206\231\345\255\227\347\254\246\344\270\262\351\234\200\350\246\201\347\232\204\350\241\214\346\225\260.md" b/docs/solutions/0800-0899/number-of-lines-to-write-string.md similarity index 100% rename from "Solutions/0806. \345\206\231\345\255\227\347\254\246\344\270\262\351\234\200\350\246\201\347\232\204\350\241\214\346\225\260.md" rename to docs/solutions/0800-0899/number-of-lines-to-write-string.md diff --git "a/Solutions/0852. \345\261\261\350\204\211\346\225\260\347\273\204\347\232\204\345\263\260\351\241\266\347\264\242\345\274\225.md" b/docs/solutions/0800-0899/peak-index-in-a-mountain-array.md similarity index 100% rename from "Solutions/0852. \345\261\261\350\204\211\346\225\260\347\273\204\347\232\204\345\263\260\351\241\266\347\264\242\345\274\225.md" rename to docs/solutions/0800-0899/peak-index-in-a-mountain-array.md diff --git "a/Solutions/0830. \350\276\203\345\244\247\345\210\206\347\273\204\347\232\204\344\275\215\347\275\256.md" b/docs/solutions/0800-0899/positions-of-large-groups.md similarity index 100% rename from "Solutions/0830. \350\276\203\345\244\247\345\210\206\347\273\204\347\232\204\344\275\215\347\275\256.md" rename to docs/solutions/0800-0899/positions-of-large-groups.md diff --git "a/Solutions/0886. \345\217\257\350\203\275\347\232\204\344\272\214\345\210\206\346\263\225.md" b/docs/solutions/0800-0899/possible-bipartition.md similarity index 100% rename from "Solutions/0886. \345\217\257\350\203\275\347\232\204\344\272\214\345\210\206\346\263\225.md" rename to docs/solutions/0800-0899/possible-bipartition.md diff --git "a/Solutions/0850. \347\237\251\345\275\242\351\235\242\347\247\257 II.md" b/docs/solutions/0800-0899/rectangle-area-ii.md similarity index 100% rename from "Solutions/0850. \347\237\251\345\275\242\351\235\242\347\247\257 II.md" rename to docs/solutions/0800-0899/rectangle-area-ii.md diff --git "a/Solutions/0836. \347\237\251\345\275\242\351\207\215\345\217\240.md" b/docs/solutions/0800-0899/rectangle-overlap.md similarity index 100% rename from "Solutions/0836. \347\237\251\345\275\242\351\207\215\345\217\240.md" rename to docs/solutions/0800-0899/rectangle-overlap.md diff --git "a/Solutions/0861. \347\277\273\350\275\254\347\237\251\351\230\265\345\220\216\347\232\204\345\276\227\345\210\206.md" b/docs/solutions/0800-0899/score-after-flipping-matrix.md similarity index 100% rename from "Solutions/0861. \347\277\273\350\275\254\347\237\251\351\230\265\345\220\216\347\232\204\345\276\227\345\210\206.md" rename to docs/solutions/0800-0899/score-after-flipping-matrix.md diff --git "a/Solutions/0820. \345\215\225\350\257\215\347\232\204\345\216\213\347\274\251\347\274\226\347\240\201.md" b/docs/solutions/0800-0899/short-encoding-of-words.md similarity index 100% rename from "Solutions/0820. \345\215\225\350\257\215\347\232\204\345\216\213\347\274\251\347\274\226\347\240\201.md" rename to docs/solutions/0800-0899/short-encoding-of-words.md diff --git "a/Solutions/0821. \345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\350\267\235\347\246\273.md" b/docs/solutions/0800-0899/shortest-distance-to-a-character.md similarity index 100% rename from "Solutions/0821. \345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\350\267\235\347\246\273.md" rename to docs/solutions/0800-0899/shortest-distance-to-a-character.md diff --git "a/Solutions/0847. \350\256\277\351\227\256\346\211\200\346\234\211\350\212\202\347\202\271\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" b/docs/solutions/0800-0899/shortest-path-visiting-all-nodes.md similarity index 100% rename from "Solutions/0847. \350\256\277\351\227\256\346\211\200\346\234\211\350\212\202\347\202\271\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" rename to docs/solutions/0800-0899/shortest-path-visiting-all-nodes.md diff --git "a/Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k.md similarity index 100% rename from "Solutions/0862. \345\222\214\350\207\263\345\260\221\344\270\272 K \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k.md diff --git "a/Solutions/0800. \347\233\270\344\274\274 RGB \351\242\234\350\211\262.md" b/docs/solutions/0800-0899/similar-rgb-color.md similarity index 100% rename from "Solutions/0800. \347\233\270\344\274\274 RGB \351\242\234\350\211\262.md" rename to docs/solutions/0800-0899/similar-rgb-color.md diff --git "a/Solutions/0877. \347\237\263\345\255\220\346\270\270\346\210\217.md" b/docs/solutions/0800-0899/stone-game.md similarity index 100% rename from "Solutions/0877. \347\237\263\345\255\220\346\270\270\346\210\217.md" rename to docs/solutions/0800-0899/stone-game.md diff --git "a/Solutions/0811. \345\255\220\345\237\237\345\220\215\350\256\277\351\227\256\350\256\241\346\225\260.md" b/docs/solutions/0800-0899/subdomain-visit-count.md similarity index 100% rename from "Solutions/0811. \345\255\220\345\237\237\345\220\215\350\256\277\351\227\256\350\256\241\346\225\260.md" rename to docs/solutions/0800-0899/subdomain-visit-count.md diff --git "a/Solutions/0834. \346\240\221\344\270\255\350\267\235\347\246\273\344\271\213\345\222\214.md" b/docs/solutions/0800-0899/sum-of-distances-in-tree.md similarity index 100% rename from "Solutions/0834. \346\240\221\344\270\255\350\267\235\347\246\273\344\271\213\345\222\214.md" rename to docs/solutions/0800-0899/sum-of-distances-in-tree.md diff --git "a/Solutions/0887. \351\270\241\350\233\213\346\216\211\350\220\275.md" b/docs/solutions/0800-0899/super-egg-drop.md similarity index 100% rename from "Solutions/0887. \351\270\241\350\233\213\346\216\211\350\220\275.md" rename to docs/solutions/0800-0899/super-egg-drop.md diff --git "a/Solutions/0892. \344\270\211\347\273\264\345\275\242\344\275\223\347\232\204\350\241\250\351\235\242\347\247\257.md" b/docs/solutions/0800-0899/surface-area-of-3d-shapes.md similarity index 100% rename from "Solutions/0892. \344\270\211\347\273\264\345\275\242\344\275\223\347\232\204\350\241\250\351\235\242\347\247\257.md" rename to docs/solutions/0800-0899/surface-area-of-3d-shapes.md diff --git "a/Solutions/0867. \350\275\254\347\275\256\347\237\251\351\230\265.md" b/docs/solutions/0800-0899/transpose-matrix.md similarity index 100% rename from "Solutions/0867. \350\275\254\347\275\256\347\237\251\351\230\265.md" rename to docs/solutions/0800-0899/transpose-matrix.md diff --git "a/Solutions/0884. \344\270\244\345\217\245\350\257\235\344\270\255\347\232\204\344\270\215\345\270\270\350\247\201\345\215\225\350\257\215.md" b/docs/solutions/0800-0899/uncommon-words-from-two-sentences.md similarity index 100% rename from "Solutions/0884. \344\270\244\345\217\245\350\257\235\344\270\255\347\232\204\344\270\215\345\270\270\350\247\201\345\215\225\350\257\215.md" rename to docs/solutions/0800-0899/uncommon-words-from-two-sentences.md diff --git "a/Solutions/0804. \345\224\257\344\270\200\346\221\251\345\260\224\346\226\257\345\257\206\347\240\201\350\257\215.md" b/docs/solutions/0800-0899/unique-morse-code-words.md similarity index 100% rename from "Solutions/0804. \345\224\257\344\270\200\346\221\251\345\260\224\346\226\257\345\257\206\347\240\201\350\257\215.md" rename to docs/solutions/0800-0899/unique-morse-code-words.md diff --git "a/Solutions/0999. \345\217\257\344\273\245\350\242\253\344\270\200\346\255\245\346\215\225\350\216\267\347\232\204\346\243\213\345\255\220\346\225\260.md" b/docs/solutions/0900-0999/available-captures-for-rook.md similarity index 100% rename from "Solutions/0999. \345\217\257\344\273\245\350\242\253\344\270\200\346\255\245\346\215\225\350\216\267\347\232\204\346\243\213\345\255\220\346\225\260.md" rename to docs/solutions/0900-0999/available-captures-for-rook.md diff --git "a/Solutions/0932. \346\274\202\344\272\256\346\225\260\347\273\204.md" b/docs/solutions/0900-0999/beautiful-array.md similarity index 100% rename from "Solutions/0932. \346\274\202\344\272\256\346\225\260\347\273\204.md" rename to docs/solutions/0900-0999/beautiful-array.md diff --git "a/Solutions/0968. \347\233\221\346\216\247\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/0900-0999/binary-tree-cameras.md similarity index 100% rename from "Solutions/0968. \347\233\221\346\216\247\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/0900-0999/binary-tree-cameras.md diff --git "a/Solutions/0958. \344\272\214\345\217\211\346\240\221\347\232\204\345\256\214\345\205\250\346\200\247\346\243\200\351\252\214.md" b/docs/solutions/0900-0999/check-completeness-of-a-binary-tree.md similarity index 100% rename from "Solutions/0958. \344\272\214\345\217\211\346\240\221\347\232\204\345\256\214\345\205\250\346\200\247\346\243\200\351\252\214.md" rename to docs/solutions/0900-0999/check-completeness-of-a-binary-tree.md diff --git "a/Solutions/0919. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\217\222\345\205\245\345\231\250.md" b/docs/solutions/0900-0999/complete-binary-tree-inserter.md similarity index 100% rename from "Solutions/0919. \345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\217\222\345\205\245\345\231\250.md" rename to docs/solutions/0900-0999/complete-binary-tree-inserter.md diff --git "a/Solutions/0993. \344\272\214\345\217\211\346\240\221\347\232\204\345\240\202\345\205\204\345\274\237\350\212\202\347\202\271.md" b/docs/solutions/0900-0999/cousins-in-binary-tree.md similarity index 100% rename from "Solutions/0993. \344\272\214\345\217\211\346\240\221\347\232\204\345\240\202\345\205\204\345\274\237\350\212\202\347\202\271.md" rename to docs/solutions/0900-0999/cousins-in-binary-tree.md diff --git "a/Solutions/0904. \346\260\264\346\236\234\346\210\220\347\257\256.md" b/docs/solutions/0900-0999/fruit-into-baskets.md similarity index 100% rename from "Solutions/0904. \346\260\264\346\236\234\346\210\220\347\257\256.md" rename to docs/solutions/0900-0999/fruit-into-baskets.md diff --git a/docs/solutions/0900-0999/index.md b/docs/solutions/0900-0999/index.md new file mode 100644 index 00000000..cb55b18d --- /dev/null +++ b/docs/solutions/0900-0999/index.md @@ -0,0 +1,33 @@ +## 本章内容 + +- [0900. RLE 迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/rle-iterator/) +- [0901. 股票价格跨度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/online-stock-span/) +- [0902. 最大为 N 的数字组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/numbers-at-most-n-given-digit-set/) +- [0904. 水果成篮](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/fruit-into-baskets/) +- [0908. 最小差值 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/smallest-range-i/) +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) +- [0918. 环形子数组的最大和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/maximum-sum-circular-subarray/) +- [0919. 完全二叉树插入器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/complete-binary-tree-inserter/) +- [0921. 使括号有效的最少添加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid/) +- [0925. 长按键入](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/long-pressed-name/) +- [0932. 漂亮数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/beautiful-array/) +- [0933. 最近的请求次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/number-of-recent-calls/) +- [0935. 骑士拨号器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/knight-dialer/) +- [0938. 二叉搜索树的范围和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/range-sum-of-bst/) +- [0946. 验证栈序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/validate-stack-sequences/) +- [0947. 移除最多的同行或同列石头](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column/) +- [0953. 验证外星语词典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/verifying-an-alien-dictionary/) +- [0958. 二叉树的完全性检验](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) +- [0959. 由斜杠划分区域](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/regions-cut-by-slashes/) +- [0968. 监控二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/binary-tree-cameras/) +- [0973. 最接近原点的 K 个点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/k-closest-points-to-origin/) +- [0974. 和可被 K 整除的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarray-sums-divisible-by-k/) +- [0976. 三角形的最大周长](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/largest-perimeter-triangle/) +- [0977. 有序数组的平方](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/squares-of-a-sorted-array/) +- [0978. 最长湍流子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/longest-turbulent-subarray/) +- [0982. 按位与为零的三元组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero/) +- [0990. 等式方程的可满足性](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/satisfiability-of-equality-equations/) +- [0992. K 个不同整数的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarrays-with-k-different-integers/) +- [0993. 二叉树的堂兄弟节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/cousins-in-binary-tree/) +- [0995. K 连续位的最小翻转次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips/) +- [0999. 可以被一步捕获的棋子数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/available-captures-for-rook/) diff --git "a/Solutions/0973. \346\234\200\346\216\245\350\277\221\345\216\237\347\202\271\347\232\204 K \344\270\252\347\202\271.md" b/docs/solutions/0900-0999/k-closest-points-to-origin.md similarity index 100% rename from "Solutions/0973. \346\234\200\346\216\245\350\277\221\345\216\237\347\202\271\347\232\204 K \344\270\252\347\202\271.md" rename to docs/solutions/0900-0999/k-closest-points-to-origin.md diff --git "a/Solutions/0935. \351\252\221\345\243\253\346\213\250\345\217\267\345\231\250.md" b/docs/solutions/0900-0999/knight-dialer.md similarity index 100% rename from "Solutions/0935. \351\252\221\345\243\253\346\213\250\345\217\267\345\231\250.md" rename to docs/solutions/0900-0999/knight-dialer.md diff --git "a/Solutions/0976. \344\270\211\350\247\222\345\275\242\347\232\204\346\234\200\345\244\247\345\221\250\351\225\277.md" b/docs/solutions/0900-0999/largest-perimeter-triangle.md similarity index 100% rename from "Solutions/0976. \344\270\211\350\247\222\345\275\242\347\232\204\346\234\200\345\244\247\345\221\250\351\225\277.md" rename to docs/solutions/0900-0999/largest-perimeter-triangle.md diff --git "a/Solutions/0925. \351\225\277\346\214\211\351\224\256\345\205\245.md" b/docs/solutions/0900-0999/long-pressed-name.md similarity index 100% rename from "Solutions/0925. \351\225\277\346\214\211\351\224\256\345\205\245.md" rename to docs/solutions/0900-0999/long-pressed-name.md diff --git "a/Solutions/0978. \346\234\200\351\225\277\346\271\215\346\265\201\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/0900-0999/longest-turbulent-subarray.md similarity index 100% rename from "Solutions/0978. \346\234\200\351\225\277\346\271\215\346\265\201\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/0900-0999/longest-turbulent-subarray.md diff --git "a/Solutions/0918. \347\216\257\345\275\242\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" b/docs/solutions/0900-0999/maximum-sum-circular-subarray.md similarity index 100% rename from "Solutions/0918. \347\216\257\345\275\242\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" rename to docs/solutions/0900-0999/maximum-sum-circular-subarray.md diff --git "a/Solutions/0921. \344\275\277\346\213\254\345\217\267\346\234\211\346\225\210\347\232\204\346\234\200\345\260\221\346\267\273\345\212\240.md" b/docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid.md similarity index 100% rename from "Solutions/0921. \344\275\277\346\213\254\345\217\267\346\234\211\346\225\210\347\232\204\346\234\200\345\260\221\346\267\273\345\212\240.md" rename to docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid.md diff --git "a/Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" b/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips.md similarity index 100% rename from "Solutions/0995. K \350\277\236\347\273\255\344\275\215\347\232\204\346\234\200\345\260\217\347\277\273\350\275\254\346\254\241\346\225\260.md" rename to docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips.md diff --git "a/Solutions/0947. \347\247\273\351\231\244\346\234\200\345\244\232\347\232\204\345\220\214\350\241\214\346\210\226\345\220\214\345\210\227\347\237\263\345\244\264.md" b/docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column.md similarity index 100% rename from "Solutions/0947. \347\247\273\351\231\244\346\234\200\345\244\232\347\232\204\345\220\214\350\241\214\346\210\226\345\220\214\345\210\227\347\237\263\345\244\264.md" rename to docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column.md diff --git "a/Solutions/0933. \346\234\200\350\277\221\347\232\204\350\257\267\346\261\202\346\254\241\346\225\260.md" b/docs/solutions/0900-0999/number-of-recent-calls.md similarity index 100% rename from "Solutions/0933. \346\234\200\350\277\221\347\232\204\350\257\267\346\261\202\346\254\241\346\225\260.md" rename to docs/solutions/0900-0999/number-of-recent-calls.md diff --git "a/Solutions/0902. \346\234\200\345\244\247\344\270\272 N \347\232\204\346\225\260\345\255\227\347\273\204\345\220\210.md" b/docs/solutions/0900-0999/numbers-at-most-n-given-digit-set.md similarity index 100% rename from "Solutions/0902. \346\234\200\345\244\247\344\270\272 N \347\232\204\346\225\260\345\255\227\347\273\204\345\220\210.md" rename to docs/solutions/0900-0999/numbers-at-most-n-given-digit-set.md diff --git "a/Solutions/0901. \350\202\241\347\245\250\344\273\267\346\240\274\350\267\250\345\272\246.md" b/docs/solutions/0900-0999/online-stock-span.md similarity index 100% rename from "Solutions/0901. \350\202\241\347\245\250\344\273\267\346\240\274\350\267\250\345\272\246.md" rename to docs/solutions/0900-0999/online-stock-span.md diff --git "a/Solutions/0938. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\350\214\203\345\233\264\345\222\214.md" b/docs/solutions/0900-0999/range-sum-of-bst.md similarity index 100% rename from "Solutions/0938. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\350\214\203\345\233\264\345\222\214.md" rename to docs/solutions/0900-0999/range-sum-of-bst.md diff --git "a/Solutions/0959. \347\224\261\346\226\234\346\235\240\345\210\222\345\210\206\345\214\272\345\237\237.md" b/docs/solutions/0900-0999/regions-cut-by-slashes.md similarity index 100% rename from "Solutions/0959. \347\224\261\346\226\234\346\235\240\345\210\222\345\210\206\345\214\272\345\237\237.md" rename to docs/solutions/0900-0999/regions-cut-by-slashes.md diff --git "a/Solutions/0900. RLE \350\277\255\344\273\243\345\231\250.md" b/docs/solutions/0900-0999/rle-iterator.md similarity index 100% rename from "Solutions/0900. RLE \350\277\255\344\273\243\345\231\250.md" rename to docs/solutions/0900-0999/rle-iterator.md diff --git "a/Solutions/0990. \347\255\211\345\274\217\346\226\271\347\250\213\347\232\204\345\217\257\346\273\241\350\266\263\346\200\247.md" b/docs/solutions/0900-0999/satisfiability-of-equality-equations.md similarity index 100% rename from "Solutions/0990. \347\255\211\345\274\217\346\226\271\347\250\213\347\232\204\345\217\257\346\273\241\350\266\263\346\200\247.md" rename to docs/solutions/0900-0999/satisfiability-of-equality-equations.md diff --git "a/Solutions/0908. \346\234\200\345\260\217\345\267\256\345\200\274 I.md" b/docs/solutions/0900-0999/smallest-range-i.md similarity index 100% rename from "Solutions/0908. \346\234\200\345\260\217\345\267\256\345\200\274 I.md" rename to docs/solutions/0900-0999/smallest-range-i.md diff --git "a/Solutions/0912. \346\216\222\345\272\217\346\225\260\347\273\204.md" b/docs/solutions/0900-0999/sort-an-array.md similarity index 100% rename from "Solutions/0912. \346\216\222\345\272\217\346\225\260\347\273\204.md" rename to docs/solutions/0900-0999/sort-an-array.md diff --git "a/Solutions/0977. \346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md" b/docs/solutions/0900-0999/squares-of-a-sorted-array.md similarity index 100% rename from "Solutions/0977. \346\234\211\345\272\217\346\225\260\347\273\204\347\232\204\345\271\263\346\226\271.md" rename to docs/solutions/0900-0999/squares-of-a-sorted-array.md diff --git "a/Solutions/0974. \345\222\214\345\217\257\350\242\253 K \346\225\264\351\231\244\347\232\204\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/0900-0999/subarray-sums-divisible-by-k.md similarity index 100% rename from "Solutions/0974. \345\222\214\345\217\257\350\242\253 K \346\225\264\351\231\244\347\232\204\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/0900-0999/subarray-sums-divisible-by-k.md diff --git "a/Solutions/0992. K \344\270\252\344\270\215\345\220\214\346\225\264\346\225\260\347\232\204\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/0900-0999/subarrays-with-k-different-integers.md similarity index 100% rename from "Solutions/0992. K \344\270\252\344\270\215\345\220\214\346\225\264\346\225\260\347\232\204\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/0900-0999/subarrays-with-k-different-integers.md diff --git "a/Solutions/0982. \346\214\211\344\275\215\344\270\216\344\270\272\351\233\266\347\232\204\344\270\211\345\205\203\347\273\204.md" b/docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero.md similarity index 100% rename from "Solutions/0982. \346\214\211\344\275\215\344\270\216\344\270\272\351\233\266\347\232\204\344\270\211\345\205\203\347\273\204.md" rename to docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero.md diff --git "a/Solutions/0946. \351\252\214\350\257\201\346\240\210\345\272\217\345\210\227.md" b/docs/solutions/0900-0999/validate-stack-sequences.md similarity index 100% rename from "Solutions/0946. \351\252\214\350\257\201\346\240\210\345\272\217\345\210\227.md" rename to docs/solutions/0900-0999/validate-stack-sequences.md diff --git "a/Solutions/0953. \351\252\214\350\257\201\345\244\226\346\230\237\350\257\255\350\257\215\345\205\270.md" b/docs/solutions/0900-0999/verifying-an-alien-dictionary.md similarity index 100% rename from "Solutions/0953. \351\252\214\350\257\201\345\244\226\346\230\237\350\257\255\350\257\215\345\205\270.md" rename to docs/solutions/0900-0999/verifying-an-alien-dictionary.md diff --git "a/Solutions/1014. \346\234\200\344\275\263\350\247\202\345\205\211\347\273\204\345\220\210.md" b/docs/solutions/1000-1099/best-sightseeing-pair.md similarity index 100% rename from "Solutions/1014. \346\234\200\344\275\263\350\247\202\345\205\211\347\273\204\345\220\210.md" rename to docs/solutions/1000-1099/best-sightseeing-pair.md diff --git "a/Solutions/1038. \344\273\216\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\210\260\346\233\264\345\244\247\345\222\214\346\240\221.md" b/docs/solutions/1000-1099/binary-search-tree-to-greater-sum-tree.md similarity index 100% rename from "Solutions/1038. \344\273\216\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\345\210\260\346\233\264\345\244\247\345\222\214\346\240\221.md" rename to docs/solutions/1000-1099/binary-search-tree-to-greater-sum-tree.md diff --git "a/Solutions/1023. \351\251\274\345\263\260\345\274\217\345\214\271\351\205\215.md" b/docs/solutions/1000-1099/camelcase-matching.md similarity index 100% rename from "Solutions/1023. \351\251\274\345\263\260\345\274\217\345\214\271\351\205\215.md" rename to docs/solutions/1000-1099/camelcase-matching.md diff --git "a/Solutions/1011. \345\234\250 D \345\244\251\345\206\205\351\200\201\350\276\276\345\214\205\350\243\271\347\232\204\350\203\275\345\212\233.md" b/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days.md similarity index 100% rename from "Solutions/1011. \345\234\250 D \345\244\251\345\206\205\351\200\201\350\276\276\345\214\205\350\243\271\347\232\204\350\203\275\345\212\233.md" rename to docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days.md diff --git "a/Solutions/1034. \350\276\271\347\225\214\347\235\200\350\211\262.md" b/docs/solutions/1000-1099/coloring-a-border.md similarity index 100% rename from "Solutions/1034. \350\276\271\347\225\214\347\235\200\350\211\262.md" rename to docs/solutions/1000-1099/coloring-a-border.md diff --git "a/Solutions/1009. \345\215\201\350\277\233\345\210\266\346\225\264\346\225\260\347\232\204\345\217\215\347\240\201.md" b/docs/solutions/1000-1099/complement-of-base-10-integer.md similarity index 100% rename from "Solutions/1009. \345\215\201\350\277\233\345\210\266\346\225\264\346\225\260\347\232\204\345\217\215\347\240\201.md" rename to docs/solutions/1000-1099/complement-of-base-10-integer.md diff --git "a/Solutions/1008. \345\211\215\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" b/docs/solutions/1000-1099/construct-binary-search-tree-from-preorder-traversal.md similarity index 100% rename from "Solutions/1008. \345\211\215\345\272\217\351\201\215\345\216\206\346\236\204\351\200\240\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" rename to docs/solutions/1000-1099/construct-binary-search-tree-from-preorder-traversal.md diff --git "a/Solutions/1025. \351\231\244\346\225\260\345\215\232\345\274\210.md" b/docs/solutions/1000-1099/divisor-game.md similarity index 100% rename from "Solutions/1025. \351\231\244\346\225\260\345\215\232\345\274\210.md" rename to docs/solutions/1000-1099/divisor-game.md diff --git "a/Solutions/1089. \345\244\215\345\206\231\351\233\266.md" b/docs/solutions/1000-1099/duplicate-zeros.md similarity index 100% rename from "Solutions/1089. \345\244\215\345\206\231\351\233\266.md" rename to docs/solutions/1000-1099/duplicate-zeros.md diff --git "a/Solutions/1002. \346\237\245\346\211\276\345\205\261\347\224\250\345\255\227\347\254\246.md" b/docs/solutions/1000-1099/find-common-characters.md similarity index 100% rename from "Solutions/1002. \346\237\245\346\211\276\345\205\261\347\224\250\345\255\227\347\254\246.md" rename to docs/solutions/1000-1099/find-common-characters.md diff --git "a/Solutions/1095. \345\261\261\350\204\211\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\347\233\256\346\240\207\345\200\274.md" b/docs/solutions/1000-1099/find-in-mountain-array.md similarity index 100% rename from "Solutions/1095. \345\261\261\350\204\211\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\347\233\256\346\240\207\345\200\274.md" rename to docs/solutions/1000-1099/find-in-mountain-array.md diff --git "a/Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" b/docs/solutions/1000-1099/grumpy-bookstore-owner.md similarity index 100% rename from "Solutions/1052. \347\210\261\347\224\237\346\260\224\347\232\204\344\271\246\345\272\227\350\200\201\346\235\277.md" rename to docs/solutions/1000-1099/grumpy-bookstore-owner.md diff --git "a/Solutions/1051. \351\253\230\345\272\246\346\243\200\346\237\245\345\231\250.md" b/docs/solutions/1000-1099/height-checker.md similarity index 100% rename from "Solutions/1051. \351\253\230\345\272\246\346\243\200\346\237\245\345\231\250.md" rename to docs/solutions/1000-1099/height-checker.md diff --git "a/Solutions/1065. \345\255\227\347\254\246\344\270\262\347\232\204\347\264\242\345\274\225\345\257\271.md" b/docs/solutions/1000-1099/index-pairs-of-a-string.md similarity index 100% rename from "Solutions/1065. \345\255\227\347\254\246\344\270\262\347\232\204\347\264\242\345\274\225\345\257\271.md" rename to docs/solutions/1000-1099/index-pairs-of-a-string.md diff --git a/docs/solutions/1000-1099/index.md b/docs/solutions/1000-1099/index.md new file mode 100644 index 00000000..f4483e2b --- /dev/null +++ b/docs/solutions/1000-1099/index.md @@ -0,0 +1,34 @@ +## 本章内容 + +- [1000. 合并石头的最低成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-cost-to-merge-stones/) +- [1002. 查找共用字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-common-characters/) +- [1004. 最大连续1的个数 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii/) +- [1005. K 次取反后最大化的数组和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/maximize-sum-of-array-after-k-negations/) +- [1008. 前序遍历构造二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/construct-binary-search-tree-from-preorder-traversal/) +- [1009. 十进制整数的反码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/complement-of-base-10-integer/) +- [1011. 在 D 天内送达包裹的能力](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days/) +- [1012. 至少有 1 位重复的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/numbers-with-repeated-digits/) +- [1014. 最佳观光组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/best-sightseeing-pair/) +- [1020. 飞地的数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/number-of-enclaves/) +- [1021. 删除最外层的括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-outermost-parentheses/) +- [1023. 驼峰式匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/camelcase-matching/) +- [1025. 除数博弈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/divisor-game/) +- [1028. 从先序遍历还原二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/recover-a-tree-from-preorder-traversal/) +- [1029. 两地调度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-city-scheduling/) +- [1034. 边界着色](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/coloring-a-border/) +- [1035. 不相交的线](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/uncrossed-lines/) +- [1037. 有效的回旋镖](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/valid-boomerang/) +- [1038. 从二叉搜索树到更大和树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/binary-search-tree-to-greater-sum-tree/) +- [1039. 多边形三角剖分的最低得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-score-triangulation-of-polygon/) +- [1041. 困于环中的机器人](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/robot-bounded-in-circle/) +- [1047. 删除字符串中的所有相邻重复项](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string/) +- [1049. 最后一块石头的重量 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/last-stone-weight-ii/) +- [1051. 高度检查器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/height-checker/) +- [1052. 爱生气的书店老板](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/grumpy-bookstore-owner/) +- [1065. 字符串的索引对](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/index-pairs-of-a-string/) +- [1079. 活字印刷](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/letter-tile-possibilities/) +- [1081. 不同字符的最小子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/smallest-subsequence-of-distinct-characters/) +- [1089. 复写零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/duplicate-zeros/) +- [1091. 二进制矩阵中的最短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/shortest-path-in-binary-matrix/) +- [1095. 山脉数组中查找目标值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-in-mountain-array/) +- [1099. 小于 K 的两数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-sum-less-than-k/) diff --git "a/Solutions/1049. \346\234\200\345\220\216\344\270\200\345\235\227\347\237\263\345\244\264\347\232\204\351\207\215\351\207\217 II.md" b/docs/solutions/1000-1099/last-stone-weight-ii.md similarity index 100% rename from "Solutions/1049. \346\234\200\345\220\216\344\270\200\345\235\227\347\237\263\345\244\264\347\232\204\351\207\215\351\207\217 II.md" rename to docs/solutions/1000-1099/last-stone-weight-ii.md diff --git "a/Solutions/1079. \346\264\273\345\255\227\345\215\260\345\210\267.md" b/docs/solutions/1000-1099/letter-tile-possibilities.md similarity index 100% rename from "Solutions/1079. \346\264\273\345\255\227\345\215\260\345\210\267.md" rename to docs/solutions/1000-1099/letter-tile-possibilities.md diff --git "a/Solutions/1004. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 III.md" b/docs/solutions/1000-1099/max-consecutive-ones-iii.md similarity index 100% rename from "Solutions/1004. \346\234\200\345\244\247\350\277\236\347\273\2551\347\232\204\344\270\252\346\225\260 III.md" rename to docs/solutions/1000-1099/max-consecutive-ones-iii.md diff --git "a/Solutions/1005. K \346\254\241\345\217\226\345\217\215\345\220\216\346\234\200\345\244\247\345\214\226\347\232\204\346\225\260\347\273\204\345\222\214.md" b/docs/solutions/1000-1099/maximize-sum-of-array-after-k-negations.md similarity index 100% rename from "Solutions/1005. K \346\254\241\345\217\226\345\217\215\345\220\216\346\234\200\345\244\247\345\214\226\347\232\204\346\225\260\347\273\204\345\222\214.md" rename to docs/solutions/1000-1099/maximize-sum-of-array-after-k-negations.md diff --git "a/Solutions/1000. \345\220\210\345\271\266\347\237\263\345\244\264\347\232\204\346\234\200\344\275\216\346\210\220\346\234\254.md" b/docs/solutions/1000-1099/minimum-cost-to-merge-stones.md similarity index 100% rename from "Solutions/1000. \345\220\210\345\271\266\347\237\263\345\244\264\347\232\204\346\234\200\344\275\216\346\210\220\346\234\254.md" rename to docs/solutions/1000-1099/minimum-cost-to-merge-stones.md diff --git "a/Solutions/1039. \345\244\232\350\276\271\345\275\242\344\270\211\350\247\222\345\211\226\345\210\206\347\232\204\346\234\200\344\275\216\345\276\227\345\210\206.md" b/docs/solutions/1000-1099/minimum-score-triangulation-of-polygon.md similarity index 100% rename from "Solutions/1039. \345\244\232\350\276\271\345\275\242\344\270\211\350\247\222\345\211\226\345\210\206\347\232\204\346\234\200\344\275\216\345\276\227\345\210\206.md" rename to docs/solutions/1000-1099/minimum-score-triangulation-of-polygon.md diff --git "a/Solutions/1020. \351\243\236\345\234\260\347\232\204\346\225\260\351\207\217.md" b/docs/solutions/1000-1099/number-of-enclaves.md similarity index 100% rename from "Solutions/1020. \351\243\236\345\234\260\347\232\204\346\225\260\351\207\217.md" rename to docs/solutions/1000-1099/number-of-enclaves.md diff --git "a/Solutions/1012. \350\207\263\345\260\221\346\234\211 1 \344\275\215\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" b/docs/solutions/1000-1099/numbers-with-repeated-digits.md similarity index 100% rename from "Solutions/1012. \350\207\263\345\260\221\346\234\211 1 \344\275\215\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" rename to docs/solutions/1000-1099/numbers-with-repeated-digits.md diff --git "a/Solutions/1028. \344\273\216\345\205\210\345\272\217\351\201\215\345\216\206\350\277\230\345\216\237\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/1000-1099/recover-a-tree-from-preorder-traversal.md similarity index 100% rename from "Solutions/1028. \344\273\216\345\205\210\345\272\217\351\201\215\345\216\206\350\277\230\345\216\237\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/1000-1099/recover-a-tree-from-preorder-traversal.md diff --git "a/Solutions/1047. \345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md" b/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string.md similarity index 100% rename from "Solutions/1047. \345\210\240\351\231\244\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\211\200\346\234\211\347\233\270\351\202\273\351\207\215\345\244\215\351\241\271.md" rename to docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string.md diff --git "a/Solutions/1021. \345\210\240\351\231\244\346\234\200\345\244\226\345\261\202\347\232\204\346\213\254\345\217\267.md" b/docs/solutions/1000-1099/remove-outermost-parentheses.md similarity index 100% rename from "Solutions/1021. \345\210\240\351\231\244\346\234\200\345\244\226\345\261\202\347\232\204\346\213\254\345\217\267.md" rename to docs/solutions/1000-1099/remove-outermost-parentheses.md diff --git "a/Solutions/1041. \345\233\260\344\272\216\347\216\257\344\270\255\347\232\204\346\234\272\345\231\250\344\272\272.md" b/docs/solutions/1000-1099/robot-bounded-in-circle.md similarity index 100% rename from "Solutions/1041. \345\233\260\344\272\216\347\216\257\344\270\255\347\232\204\346\234\272\345\231\250\344\272\272.md" rename to docs/solutions/1000-1099/robot-bounded-in-circle.md diff --git "a/Solutions/1091. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" b/docs/solutions/1000-1099/shortest-path-in-binary-matrix.md similarity index 100% rename from "Solutions/1091. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\346\234\200\347\237\255\350\267\257\345\276\204.md" rename to docs/solutions/1000-1099/shortest-path-in-binary-matrix.md diff --git "a/Solutions/1081. \344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\345\260\217\345\255\220\345\272\217\345\210\227.md" b/docs/solutions/1000-1099/smallest-subsequence-of-distinct-characters.md similarity index 100% rename from "Solutions/1081. \344\270\215\345\220\214\345\255\227\347\254\246\347\232\204\346\234\200\345\260\217\345\255\220\345\272\217\345\210\227.md" rename to docs/solutions/1000-1099/smallest-subsequence-of-distinct-characters.md diff --git "a/Solutions/1029. \344\270\244\345\234\260\350\260\203\345\272\246.md" b/docs/solutions/1000-1099/two-city-scheduling.md similarity index 100% rename from "Solutions/1029. \344\270\244\345\234\260\350\260\203\345\272\246.md" rename to docs/solutions/1000-1099/two-city-scheduling.md diff --git "a/Solutions/1099. \345\260\217\344\272\216 K \347\232\204\344\270\244\346\225\260\344\271\213\345\222\214.md" b/docs/solutions/1000-1099/two-sum-less-than-k.md similarity index 100% rename from "Solutions/1099. \345\260\217\344\272\216 K \347\232\204\344\270\244\346\225\260\344\271\213\345\222\214.md" rename to docs/solutions/1000-1099/two-sum-less-than-k.md diff --git "a/Solutions/1035. \344\270\215\347\233\270\344\272\244\347\232\204\347\272\277.md" b/docs/solutions/1000-1099/uncrossed-lines.md similarity index 100% rename from "Solutions/1035. \344\270\215\347\233\270\344\272\244\347\232\204\347\272\277.md" rename to docs/solutions/1000-1099/uncrossed-lines.md diff --git "a/Solutions/1037. \346\234\211\346\225\210\347\232\204\345\233\236\346\227\213\351\225\226.md" b/docs/solutions/1000-1099/valid-boomerang.md similarity index 100% rename from "Solutions/1037. \346\234\211\346\225\210\347\232\204\345\233\236\346\227\213\351\225\226.md" rename to docs/solutions/1000-1099/valid-boomerang.md diff --git "a/Solutions/1109. \350\210\252\347\217\255\351\242\204\350\256\242\347\273\237\350\256\241.md" b/docs/solutions/1100-1199/corporate-flight-bookings.md similarity index 100% rename from "Solutions/1109. \350\210\252\347\217\255\351\242\204\350\256\242\347\273\237\350\256\241.md" rename to docs/solutions/1100-1199/corporate-flight-bookings.md diff --git "a/Solutions/1108. IP \345\234\260\345\235\200\346\227\240\346\225\210\345\214\226.md" b/docs/solutions/1100-1199/defanging-an-ip-address.md similarity index 100% rename from "Solutions/1108. IP \345\234\260\345\235\200\346\227\240\346\225\210\345\214\226.md" rename to docs/solutions/1100-1199/defanging-an-ip-address.md diff --git "a/Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" b/docs/solutions/1100-1199/delete-nodes-and-return-forest.md similarity index 100% rename from "Solutions/1110. \345\210\240\347\202\271\346\210\220\346\236\227.md" rename to docs/solutions/1100-1199/delete-nodes-and-return-forest.md diff --git "a/Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" b/docs/solutions/1100-1199/diet-plan-performance.md similarity index 100% rename from "Solutions/1176. \345\201\245\350\272\253\350\256\241\345\210\222\350\257\204\344\274\260.md" rename to docs/solutions/1100-1199/diet-plan-performance.md diff --git "a/Solutions/1184. \345\205\254\344\272\244\347\253\231\351\227\264\347\232\204\350\267\235\347\246\273.md" b/docs/solutions/1100-1199/distance-between-bus-stops.md similarity index 100% rename from "Solutions/1184. \345\205\254\344\272\244\347\253\231\351\227\264\347\232\204\350\267\235\347\246\273.md" rename to docs/solutions/1100-1199/distance-between-bus-stops.md diff --git "a/Solutions/1103. \345\210\206\347\263\226\346\236\234 II.md" b/docs/solutions/1100-1199/distribute-candies-to-people.md similarity index 100% rename from "Solutions/1103. \345\210\206\347\263\226\346\236\234 II.md" rename to docs/solutions/1100-1199/distribute-candies-to-people.md diff --git "a/Solutions/1100. \351\225\277\345\272\246\344\270\272 K \347\232\204\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\345\255\220\344\270\262.md" b/docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters.md similarity index 100% rename from "Solutions/1100. \351\225\277\345\272\246\344\270\272 K \347\232\204\346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\345\255\220\344\270\262.md" rename to docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters.md diff --git a/docs/solutions/1100-1199/index.md b/docs/solutions/1100-1199/index.md new file mode 100644 index 00000000..61306bac --- /dev/null +++ b/docs/solutions/1100-1199/index.md @@ -0,0 +1,16 @@ +## 本章内容 + +- [1100. 长度为 K 的无重复字符子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters/) +- [1103. 分糖果 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distribute-candies-to-people/) +- [1108. IP 地址无效化](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/defanging-an-ip-address/) +- [1109. 航班预订统计](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings/) +- [1110. 删点成林](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/delete-nodes-and-return-forest/) +- [1122. 数组的相对排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/relative-sort-array/) +- [1136. 并行课程](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/parallel-courses/) +- [1137. 第 N 个泰波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number/) +- [1143. 最长公共子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence/) +- [1151. 最少交换次数来组合所有的 1](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together/) +- [1155. 掷骰子等于目标和的方法数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum/) +- [1161. 最大层内元素和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/maximum-level-sum-of-a-binary-tree/) +- [1176. 健身计划评估](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/diet-plan-performance/) +- [1184. 公交站间的距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distance-between-bus-stops/) diff --git "a/Solutions/1143. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" b/docs/solutions/1100-1199/longest-common-subsequence.md similarity index 100% rename from "Solutions/1143. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" rename to docs/solutions/1100-1199/longest-common-subsequence.md diff --git "a/Solutions/1161. \346\234\200\345\244\247\345\261\202\345\206\205\345\205\203\347\264\240\345\222\214.md" b/docs/solutions/1100-1199/maximum-level-sum-of-a-binary-tree.md similarity index 100% rename from "Solutions/1161. \346\234\200\345\244\247\345\261\202\345\206\205\345\205\203\347\264\240\345\222\214.md" rename to docs/solutions/1100-1199/maximum-level-sum-of-a-binary-tree.md diff --git "a/Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" b/docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together.md similarity index 100% rename from "Solutions/1151. \346\234\200\345\260\221\344\272\244\346\215\242\346\254\241\346\225\260\346\235\245\347\273\204\345\220\210\346\211\200\346\234\211\347\232\204 1.md" rename to docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together.md diff --git "a/Solutions/1137. \347\254\254 N \344\270\252\346\263\260\346\263\242\351\202\243\345\245\221\346\225\260.md" b/docs/solutions/1100-1199/n-th-tribonacci-number.md similarity index 100% rename from "Solutions/1137. \347\254\254 N \344\270\252\346\263\260\346\263\242\351\202\243\345\245\221\346\225\260.md" rename to docs/solutions/1100-1199/n-th-tribonacci-number.md diff --git "a/Solutions/1155. \346\216\267\351\252\260\345\255\220\347\255\211\344\272\216\347\233\256\346\240\207\345\222\214\347\232\204\346\226\271\346\263\225\346\225\260.md" b/docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum.md similarity index 100% rename from "Solutions/1155. \346\216\267\351\252\260\345\255\220\347\255\211\344\272\216\347\233\256\346\240\207\345\222\214\347\232\204\346\226\271\346\263\225\346\225\260.md" rename to docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum.md diff --git "a/Solutions/1136. \345\271\266\350\241\214\350\257\276\347\250\213.md" b/docs/solutions/1100-1199/parallel-courses.md similarity index 100% rename from "Solutions/1136. \345\271\266\350\241\214\350\257\276\347\250\213.md" rename to docs/solutions/1100-1199/parallel-courses.md diff --git "a/Solutions/1122. \346\225\260\347\273\204\347\232\204\347\233\270\345\257\271\346\216\222\345\272\217.md" b/docs/solutions/1100-1199/relative-sort-array.md similarity index 100% rename from "Solutions/1122. \346\225\260\347\273\204\347\232\204\347\233\270\345\257\271\346\216\222\345\272\217.md" rename to docs/solutions/1100-1199/relative-sort-array.md diff --git "a/Solutions/1227. \351\243\236\346\234\272\345\272\247\344\275\215\345\210\206\351\205\215\346\246\202\347\216\207.md" b/docs/solutions/1200-1299/airplane-seat-assignment-probability.md similarity index 100% rename from "Solutions/1227. \351\243\236\346\234\272\345\272\247\344\275\215\345\210\206\351\205\215\346\246\202\347\216\207.md" rename to docs/solutions/1200-1299/airplane-seat-assignment-probability.md diff --git "a/Solutions/1232. \347\274\200\347\202\271\346\210\220\347\272\277.md" b/docs/solutions/1200-1299/check-if-it-is-a-straight-line.md similarity index 100% rename from "Solutions/1232. \347\274\200\347\202\271\346\210\220\347\272\277.md" rename to docs/solutions/1200-1299/check-if-it-is-a-straight-line.md diff --git "a/Solutions/1220. \347\273\237\350\256\241\345\205\203\351\237\263\345\255\227\346\257\215\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" b/docs/solutions/1200-1299/count-vowels-permutation.md similarity index 100% rename from "Solutions/1220. \347\273\237\350\256\241\345\205\203\351\237\263\345\255\227\346\257\215\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" rename to docs/solutions/1200-1299/count-vowels-permutation.md diff --git "a/Solutions/1296. \345\210\222\345\210\206\346\225\260\347\273\204\344\270\272\350\277\236\347\273\255\346\225\260\345\255\227\347\232\204\351\233\206\345\220\210.md" b/docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers.md similarity index 100% rename from "Solutions/1296. \345\210\222\345\210\206\346\225\260\347\273\204\344\270\272\350\277\236\347\273\255\346\225\260\345\255\227\347\232\204\351\233\206\345\220\210.md" rename to docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers.md diff --git "a/Solutions/1261. \345\234\250\345\217\227\346\261\241\346\237\223\347\232\204\344\272\214\345\217\211\346\240\221\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240.md" b/docs/solutions/1200-1299/find-elements-in-a-contaminated-binary-tree.md similarity index 100% rename from "Solutions/1261. \345\234\250\345\217\227\346\261\241\346\237\223\347\232\204\344\272\214\345\217\211\346\240\221\344\270\255\346\237\245\346\211\276\345\205\203\347\264\240.md" rename to docs/solutions/1200-1299/find-elements-in-a-contaminated-binary-tree.md diff --git "a/Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" b/docs/solutions/1200-1299/get-equal-substrings-within-budget.md similarity index 100% rename from "Solutions/1208. \345\260\275\345\217\257\350\203\275\344\275\277\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" rename to docs/solutions/1200-1299/get-equal-substrings-within-budget.md diff --git a/docs/solutions/1200-1299/index.md b/docs/solutions/1200-1299/index.md new file mode 100644 index 00000000..f5518028 --- /dev/null +++ b/docs/solutions/1200-1299/index.md @@ -0,0 +1,18 @@ +## 本章内容 + +- [1202. 交换字符串中的元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/smallest-string-with-swaps/) +- [1208. 尽可能使字符串相等](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/get-equal-substrings-within-budget/) +- [1217. 玩筹码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position/) +- [1220. 统计元音字母序列的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/count-vowels-permutation/) +- [1227. 飞机座位分配概率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/airplane-seat-assignment-probability/) +- [1229. 安排会议日程](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/meeting-scheduler/) +- [1232. 缀点成线](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/check-if-it-is-a-straight-line/) +- [1245. 树的直径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/tree-diameter/) +- [1247. 交换字符使得字符串相同](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal/) +- [1253. 重构 2 行二进制矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/reconstruct-a-2-row-binary-matrix/) +- [1254. 统计封闭岛屿的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/number-of-closed-islands/) +- [1261. 在受污染的二叉树中查找元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/find-elements-in-a-contaminated-binary-tree/) +- [1266. 访问所有点的最小时间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-time-visiting-all-points/) +- [1268. 搜索推荐系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/search-suggestions-system/) +- [1281. 整数的各位积和之差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/subtract-the-product-and-sum-of-digits-of-an-integer/) +- [1296. 划分数组为连续数字的集合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers/) diff --git "a/Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" b/docs/solutions/1200-1299/meeting-scheduler.md similarity index 100% rename from "Solutions/1229. \345\256\211\346\216\222\344\274\232\350\256\256\346\227\245\347\250\213.md" rename to docs/solutions/1200-1299/meeting-scheduler.md diff --git "a/Solutions/1217. \347\216\251\347\255\271\347\240\201.md" b/docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position.md similarity index 100% rename from "Solutions/1217. \347\216\251\347\255\271\347\240\201.md" rename to docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position.md diff --git "a/Solutions/1247. \344\272\244\346\215\242\345\255\227\347\254\246\344\275\277\345\276\227\345\255\227\347\254\246\344\270\262\347\233\270\345\220\214.md" b/docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal.md similarity index 100% rename from "Solutions/1247. \344\272\244\346\215\242\345\255\227\347\254\246\344\275\277\345\276\227\345\255\227\347\254\246\344\270\262\347\233\270\345\220\214.md" rename to docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal.md diff --git "a/Solutions/1266. \350\256\277\351\227\256\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\346\227\266\351\227\264.md" b/docs/solutions/1200-1299/minimum-time-visiting-all-points.md similarity index 100% rename from "Solutions/1266. \350\256\277\351\227\256\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\346\227\266\351\227\264.md" rename to docs/solutions/1200-1299/minimum-time-visiting-all-points.md diff --git "a/Solutions/1254. \347\273\237\350\256\241\345\260\201\351\227\255\345\262\233\345\261\277\347\232\204\346\225\260\347\233\256.md" b/docs/solutions/1200-1299/number-of-closed-islands.md similarity index 100% rename from "Solutions/1254. \347\273\237\350\256\241\345\260\201\351\227\255\345\262\233\345\261\277\347\232\204\346\225\260\347\233\256.md" rename to docs/solutions/1200-1299/number-of-closed-islands.md diff --git "a/Solutions/1253. \351\207\215\346\236\204 2 \350\241\214\344\272\214\350\277\233\345\210\266\347\237\251\351\230\265.md" b/docs/solutions/1200-1299/reconstruct-a-2-row-binary-matrix.md similarity index 100% rename from "Solutions/1253. \351\207\215\346\236\204 2 \350\241\214\344\272\214\350\277\233\345\210\266\347\237\251\351\230\265.md" rename to docs/solutions/1200-1299/reconstruct-a-2-row-binary-matrix.md diff --git "a/Solutions/1268. \346\220\234\347\264\242\346\216\250\350\215\220\347\263\273\347\273\237.md" b/docs/solutions/1200-1299/search-suggestions-system.md similarity index 100% rename from "Solutions/1268. \346\220\234\347\264\242\346\216\250\350\215\220\347\263\273\347\273\237.md" rename to docs/solutions/1200-1299/search-suggestions-system.md diff --git "a/Solutions/1202. \344\272\244\346\215\242\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\347\264\240.md" b/docs/solutions/1200-1299/smallest-string-with-swaps.md similarity index 100% rename from "Solutions/1202. \344\272\244\346\215\242\345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\345\205\203\347\264\240.md" rename to docs/solutions/1200-1299/smallest-string-with-swaps.md diff --git "a/Solutions/1281. \346\225\264\346\225\260\347\232\204\345\220\204\344\275\215\347\247\257\345\222\214\344\271\213\345\267\256.md" b/docs/solutions/1200-1299/subtract-the-product-and-sum-of-digits-of-an-integer.md similarity index 100% rename from "Solutions/1281. \346\225\264\346\225\260\347\232\204\345\220\204\344\275\215\347\247\257\345\222\214\344\271\213\345\267\256.md" rename to docs/solutions/1200-1299/subtract-the-product-and-sum-of-digits-of-an-integer.md diff --git "a/Solutions/1245. \346\240\221\347\232\204\347\233\264\345\276\204.md" b/docs/solutions/1200-1299/tree-diameter.md similarity index 100% rename from "Solutions/1245. \346\240\221\347\232\204\347\233\264\345\276\204.md" rename to docs/solutions/1200-1299/tree-diameter.md diff --git "a/Solutions/1305. \344\270\244\346\243\265\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\211\200\346\234\211\345\205\203\347\264\240.md" b/docs/solutions/1300-1399/all-elements-in-two-binary-search-trees.md similarity index 100% rename from "Solutions/1305. \344\270\244\346\243\265\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\346\211\200\346\234\211\345\205\203\347\264\240.md" rename to docs/solutions/1300-1399/all-elements-in-two-binary-search-trees.md diff --git "a/Solutions/1344. \346\227\266\351\222\237\346\214\207\351\222\210\347\232\204\345\244\271\350\247\222.md" b/docs/solutions/1300-1399/angle-between-hands-of-a-clock.md similarity index 100% rename from "Solutions/1344. \346\227\266\351\222\237\346\214\207\351\222\210\347\232\204\345\244\271\350\247\222.md" rename to docs/solutions/1300-1399/angle-between-hands-of-a-clock.md diff --git "a/Solutions/1362. \346\234\200\346\216\245\350\277\221\347\232\204\345\233\240\346\225\260.md" b/docs/solutions/1300-1399/closest-divisors.md similarity index 100% rename from "Solutions/1362. \346\234\200\346\216\245\350\277\221\347\232\204\345\233\240\346\225\260.md" rename to docs/solutions/1300-1399/closest-divisors.md diff --git "a/Solutions/1317. \345\260\206\346\225\264\346\225\260\350\275\254\346\215\242\344\270\272\344\270\244\344\270\252\346\227\240\351\233\266\346\225\264\346\225\260\347\232\204\345\222\214.md" b/docs/solutions/1300-1399/convert-integer-to-the-sum-of-two-no-zero-integers.md similarity index 100% rename from "Solutions/1317. \345\260\206\346\225\264\346\225\260\350\275\254\346\215\242\344\270\272\344\270\244\344\270\252\346\227\240\351\233\266\346\225\264\346\225\260\347\232\204\345\222\214.md" rename to docs/solutions/1300-1399/convert-integer-to-the-sum-of-two-no-zero-integers.md diff --git "a/Solutions/1313. \350\247\243\345\216\213\347\274\251\347\274\226\347\240\201\345\210\227\350\241\250.md" b/docs/solutions/1300-1399/decompress-run-length-encoded-list.md similarity index 100% rename from "Solutions/1313. \350\247\243\345\216\213\347\274\251\347\274\226\347\240\201\345\210\227\350\241\250.md" rename to docs/solutions/1300-1399/decompress-run-length-encoded-list.md diff --git "a/Solutions/1381. \350\256\276\350\256\241\344\270\200\344\270\252\346\224\257\346\214\201\345\242\236\351\207\217\346\223\215\344\275\234\347\232\204\346\240\210.md" b/docs/solutions/1300-1399/design-a-stack-with-increment-operation.md similarity index 100% rename from "Solutions/1381. \350\256\276\350\256\241\344\270\200\344\270\252\346\224\257\346\214\201\345\242\236\351\207\217\346\223\215\344\275\234\347\232\204\346\240\210.md" rename to docs/solutions/1300-1399/design-a-stack-with-increment-operation.md diff --git a/docs/solutions/1300-1399/index.md b/docs/solutions/1300-1399/index.md new file mode 100644 index 00000000..967f46ae --- /dev/null +++ b/docs/solutions/1300-1399/index.md @@ -0,0 +1,17 @@ +## 本章内容 + +- [1300. 转变数组后最接近目标值的数组和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target/) +- [1305. 两棵二叉搜索树中的所有元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/all-elements-in-two-binary-search-trees/) +- [1310. 子数组异或查询](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray/) +- [1313. 解压缩编码列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/decompress-run-length-encoded-list/) +- [1317. 将整数转换为两个无零整数的和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/convert-integer-to-the-sum-of-two-no-zero-integers/) +- [1319. 连通网络的操作次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-operations-to-make-network-connected/) +- [1324. 竖直打印单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/print-words-vertically/) +- [1338. 数组大小减半](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/reduce-array-size-to-the-half/) +- [1343. 大小为 K 且平均值大于等于阈值的子数组数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) +- [1344. 时钟指针的夹角](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/angle-between-hands-of-a-clock/) +- [1347. 制造字母异位词的最小步骤数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/minimum-number-of-steps-to-make-two-strings-anagram/) +- [1349. 参加考试的最大学生数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam/) +- [1358. 包含所有三种字符的子字符串数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters/) +- [1362. 最接近的因数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/closest-divisors/) +- [1381. 设计一个支持增量操作的栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/design-a-stack-with-increment-operation/) diff --git "a/Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" b/docs/solutions/1300-1399/maximum-students-taking-exam.md similarity index 100% rename from "Solutions/1349. \345\217\202\345\212\240\350\200\203\350\257\225\347\232\204\346\234\200\345\244\247\345\255\246\347\224\237\346\225\260.md" rename to docs/solutions/1300-1399/maximum-students-taking-exam.md diff --git "a/Solutions/1347. \345\210\266\351\200\240\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\347\232\204\346\234\200\345\260\217\346\255\245\351\252\244\346\225\260.md" b/docs/solutions/1300-1399/minimum-number-of-steps-to-make-two-strings-anagram.md similarity index 100% rename from "Solutions/1347. \345\210\266\351\200\240\345\255\227\346\257\215\345\274\202\344\275\215\350\257\215\347\232\204\346\234\200\345\260\217\346\255\245\351\252\244\346\225\260.md" rename to docs/solutions/1300-1399/minimum-number-of-steps-to-make-two-strings-anagram.md diff --git "a/Solutions/1319. \350\277\236\351\200\232\347\275\221\347\273\234\347\232\204\346\223\215\344\275\234\346\254\241\346\225\260.md" b/docs/solutions/1300-1399/number-of-operations-to-make-network-connected.md similarity index 100% rename from "Solutions/1319. \350\277\236\351\200\232\347\275\221\347\273\234\347\232\204\346\223\215\344\275\234\346\254\241\346\225\260.md" rename to docs/solutions/1300-1399/number-of-operations-to-make-network-connected.md diff --git "a/Solutions/1343. \345\244\247\345\260\217\344\270\272 K \344\270\224\345\271\263\345\235\207\345\200\274\345\244\247\344\272\216\347\255\211\344\272\216\351\230\210\345\200\274\347\232\204\345\255\220\346\225\260\347\273\204\346\225\260\347\233\256.md" b/docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.md similarity index 100% rename from "Solutions/1343. \345\244\247\345\260\217\344\270\272 K \344\270\224\345\271\263\345\235\207\345\200\274\345\244\247\344\272\216\347\255\211\344\272\216\351\230\210\345\200\274\347\232\204\345\255\220\346\225\260\347\273\204\346\225\260\347\233\256.md" rename to docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.md diff --git "a/Solutions/1358. \345\214\205\345\220\253\346\211\200\346\234\211\344\270\211\347\247\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262\346\225\260\347\233\256.md" b/docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters.md similarity index 100% rename from "Solutions/1358. \345\214\205\345\220\253\346\211\200\346\234\211\344\270\211\347\247\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262\346\225\260\347\233\256.md" rename to docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters.md diff --git "a/Solutions/1324. \347\253\226\347\233\264\346\211\223\345\215\260\345\215\225\350\257\215.md" b/docs/solutions/1300-1399/print-words-vertically.md similarity index 100% rename from "Solutions/1324. \347\253\226\347\233\264\346\211\223\345\215\260\345\215\225\350\257\215.md" rename to docs/solutions/1300-1399/print-words-vertically.md diff --git "a/Solutions/1338. \346\225\260\347\273\204\345\244\247\345\260\217\345\207\217\345\215\212.md" b/docs/solutions/1300-1399/reduce-array-size-to-the-half.md similarity index 100% rename from "Solutions/1338. \346\225\260\347\273\204\345\244\247\345\260\217\345\207\217\345\215\212.md" rename to docs/solutions/1300-1399/reduce-array-size-to-the-half.md diff --git "a/Solutions/1300. \350\275\254\345\217\230\346\225\260\347\273\204\345\220\216\346\234\200\346\216\245\350\277\221\347\233\256\346\240\207\345\200\274\347\232\204\346\225\260\347\273\204\345\222\214.md" b/docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target.md similarity index 100% rename from "Solutions/1300. \350\275\254\345\217\230\346\225\260\347\273\204\345\220\216\346\234\200\346\216\245\350\277\221\347\233\256\346\240\207\345\200\274\347\232\204\346\225\260\347\273\204\345\222\214.md" rename to docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target.md diff --git "a/Solutions/1310. \345\255\220\346\225\260\347\273\204\345\274\202\346\210\226\346\237\245\350\257\242.md" b/docs/solutions/1300-1399/xor-queries-of-a-subarray.md similarity index 100% rename from "Solutions/1310. \345\255\220\346\225\260\347\273\204\345\274\202\346\210\226\346\237\245\350\257\242.md" rename to docs/solutions/1300-1399/xor-queries-of-a-subarray.md diff --git "a/Solutions/1491. \345\216\273\346\216\211\346\234\200\344\275\216\345\267\245\350\265\204\345\222\214\346\234\200\351\253\230\345\267\245\350\265\204\345\220\216\347\232\204\345\267\245\350\265\204\345\271\263\345\235\207\345\200\274.md" b/docs/solutions/1400-1499/average-salary-excluding-the-minimum-and-maximum-salary.md similarity index 100% rename from "Solutions/1491. \345\216\273\346\216\211\346\234\200\344\275\216\345\267\245\350\265\204\345\222\214\346\234\200\351\253\230\345\267\245\350\265\204\345\220\216\347\232\204\345\267\245\350\265\204\345\271\263\345\235\207\345\200\274.md" rename to docs/solutions/1400-1499/average-salary-excluding-the-minimum-and-maximum-salary.md diff --git "a/Solutions/1446. \350\277\236\347\273\255\345\255\227\347\254\246.md" b/docs/solutions/1400-1499/consecutive-characters.md similarity index 100% rename from "Solutions/1446. \350\277\236\347\273\255\345\255\227\347\254\246.md" rename to docs/solutions/1400-1499/consecutive-characters.md diff --git "a/Solutions/1400. \346\236\204\351\200\240 K \344\270\252\345\233\236\346\226\207\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/1400-1499/construct-k-palindrome-strings.md similarity index 100% rename from "Solutions/1400. \346\236\204\351\200\240 K \344\270\252\345\233\236\346\226\207\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/1400-1499/construct-k-palindrome-strings.md diff --git "a/Solutions/1449. \346\225\260\344\275\215\346\210\220\346\234\254\345\222\214\344\270\272\347\233\256\346\240\207\345\200\274\347\232\204\346\234\200\345\244\247\346\225\260\345\255\227.md" b/docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target.md similarity index 100% rename from "Solutions/1449. \346\225\260\344\275\215\346\210\220\346\234\254\345\222\214\344\270\272\347\233\256\346\240\207\345\200\274\347\232\204\346\234\200\345\244\247\346\225\260\345\255\227.md" rename to docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target.md diff --git a/docs/solutions/1400-1499/index.md b/docs/solutions/1400-1499/index.md new file mode 100644 index 00000000..94b8c200 --- /dev/null +++ b/docs/solutions/1400-1499/index.md @@ -0,0 +1,20 @@ +## 本章内容 + +- [1400. 构造 K 个回文字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/construct-k-palindrome-strings/) +- [1408. 数组中的字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array/) +- [1422. 分割字符串的最大得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-score-after-splitting-a-string/) +- [1423. 可获得的最大点数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards/) +- [1438. 绝对差不超过限制的最长连续子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) +- [1446. 连续字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/consecutive-characters/) +- [1447. 最简分数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/simplified-fractions/) +- [1449. 数位成本和为目标值的最大数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target/) +- [1450. 在既定时间做作业的学生人数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time/) +- [1451. 重新排列句子中的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/rearrange-words-in-a-sentence/) +- [1456. 定长子串中元音的最大数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length/) +- [1476. 子矩形查询](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/subrectangle-queries/) +- [1480. 一维数组的动态和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/running-sum-of-1d-array/) +- [1482. 制作 m 束花所需的最少天数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets/) +- [1486. 数组异或操作](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/xor-operation-in-an-array/) +- [1491. 去掉最低工资和最高工资后的工资平均值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/average-salary-excluding-the-minimum-and-maximum-salary/) +- [1493. 删掉一个元素以后全为 1 的最长子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element/) +- [1496. 判断路径是否相交](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/path-crossing/) diff --git "a/Solutions/1438. \347\273\235\345\257\271\345\267\256\344\270\215\350\266\205\350\277\207\351\231\220\345\210\266\347\232\204\346\234\200\351\225\277\350\277\236\347\273\255\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit.md similarity index 100% rename from "Solutions/1438. \347\273\235\345\257\271\345\267\256\344\270\215\350\266\205\350\277\207\351\231\220\345\210\266\347\232\204\346\234\200\351\225\277\350\277\236\347\273\255\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit.md diff --git "a/Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element.md similarity index 100% rename from "Solutions/1493. \345\210\240\346\216\211\344\270\200\344\270\252\345\205\203\347\264\240\344\273\245\345\220\216\345\205\250\344\270\272 1 \347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element.md diff --git "a/Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" b/docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length.md similarity index 100% rename from "Solutions/1456. \345\256\232\351\225\277\345\255\220\344\270\262\344\270\255\345\205\203\351\237\263\347\232\204\346\234\200\345\244\247\346\225\260\347\233\256.md" rename to docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length.md diff --git "a/Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" b/docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards.md similarity index 100% rename from "Solutions/1423. \345\217\257\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\202\271\346\225\260.md" rename to docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards.md diff --git "a/Solutions/1422. \345\210\206\345\211\262\345\255\227\347\254\246\344\270\262\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" b/docs/solutions/1400-1499/maximum-score-after-splitting-a-string.md similarity index 100% rename from "Solutions/1422. \345\210\206\345\211\262\345\255\227\347\254\246\344\270\262\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" rename to docs/solutions/1400-1499/maximum-score-after-splitting-a-string.md diff --git "a/Solutions/1482. \345\210\266\344\275\234 m \346\235\237\350\212\261\346\211\200\351\234\200\347\232\204\346\234\200\345\260\221\345\244\251\346\225\260.md" b/docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets.md similarity index 100% rename from "Solutions/1482. \345\210\266\344\275\234 m \346\235\237\350\212\261\346\211\200\351\234\200\347\232\204\346\234\200\345\260\221\345\244\251\346\225\260.md" rename to docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets.md diff --git "a/Solutions/1450. \345\234\250\346\227\242\345\256\232\346\227\266\351\227\264\345\201\232\344\275\234\344\270\232\347\232\204\345\255\246\347\224\237\344\272\272\346\225\260.md" b/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time.md similarity index 100% rename from "Solutions/1450. \345\234\250\346\227\242\345\256\232\346\227\266\351\227\264\345\201\232\344\275\234\344\270\232\347\232\204\345\255\246\347\224\237\344\272\272\346\225\260.md" rename to docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time.md diff --git "a/Solutions/1496. \345\210\244\346\226\255\350\267\257\345\276\204\346\230\257\345\220\246\347\233\270\344\272\244.md" b/docs/solutions/1400-1499/path-crossing.md similarity index 100% rename from "Solutions/1496. \345\210\244\346\226\255\350\267\257\345\276\204\346\230\257\345\220\246\347\233\270\344\272\244.md" rename to docs/solutions/1400-1499/path-crossing.md diff --git "a/Solutions/1451. \351\207\215\346\226\260\346\216\222\345\210\227\345\217\245\345\255\220\344\270\255\347\232\204\345\215\225\350\257\215.md" b/docs/solutions/1400-1499/rearrange-words-in-a-sentence.md similarity index 100% rename from "Solutions/1451. \351\207\215\346\226\260\346\216\222\345\210\227\345\217\245\345\255\220\344\270\255\347\232\204\345\215\225\350\257\215.md" rename to docs/solutions/1400-1499/rearrange-words-in-a-sentence.md diff --git "a/Solutions/1480. \344\270\200\347\273\264\346\225\260\347\273\204\347\232\204\345\212\250\346\200\201\345\222\214.md" b/docs/solutions/1400-1499/running-sum-of-1d-array.md similarity index 100% rename from "Solutions/1480. \344\270\200\347\273\264\346\225\260\347\273\204\347\232\204\345\212\250\346\200\201\345\222\214.md" rename to docs/solutions/1400-1499/running-sum-of-1d-array.md diff --git "a/Solutions/1447. \346\234\200\347\256\200\345\210\206\346\225\260.md" b/docs/solutions/1400-1499/simplified-fractions.md similarity index 100% rename from "Solutions/1447. \346\234\200\347\256\200\345\210\206\346\225\260.md" rename to docs/solutions/1400-1499/simplified-fractions.md diff --git "a/Solutions/1408. \346\225\260\347\273\204\344\270\255\347\232\204\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" b/docs/solutions/1400-1499/string-matching-in-an-array.md similarity index 100% rename from "Solutions/1408. \346\225\260\347\273\204\344\270\255\347\232\204\345\255\227\347\254\246\344\270\262\345\214\271\351\205\215.md" rename to docs/solutions/1400-1499/string-matching-in-an-array.md diff --git "a/Solutions/1476. \345\255\220\347\237\251\345\275\242\346\237\245\350\257\242.md" b/docs/solutions/1400-1499/subrectangle-queries.md similarity index 100% rename from "Solutions/1476. \345\255\220\347\237\251\345\275\242\346\237\245\350\257\242.md" rename to docs/solutions/1400-1499/subrectangle-queries.md diff --git "a/Solutions/1486. \346\225\260\347\273\204\345\274\202\346\210\226\346\223\215\344\275\234.md" b/docs/solutions/1400-1499/xor-operation-in-an-array.md similarity index 100% rename from "Solutions/1486. \346\225\260\347\273\204\345\274\202\346\210\226\346\223\215\344\275\234.md" rename to docs/solutions/1400-1499/xor-operation-in-an-array.md diff --git "a/Solutions/1502. \345\210\244\346\226\255\350\203\275\345\220\246\345\275\242\346\210\220\347\255\211\345\267\256\346\225\260\345\210\227.md" b/docs/solutions/1500-1599/can-make-arithmetic-progression-from-sequence.md similarity index 100% rename from "Solutions/1502. \345\210\244\346\226\255\350\203\275\345\220\246\345\275\242\346\210\220\347\255\211\345\267\256\346\225\260\345\210\227.md" rename to docs/solutions/1500-1599/can-make-arithmetic-progression-from-sequence.md diff --git "a/Solutions/1534. \347\273\237\350\256\241\345\245\275\344\270\211\345\205\203\347\273\204.md" b/docs/solutions/1500-1599/count-good-triplets.md similarity index 100% rename from "Solutions/1534. \347\273\237\350\256\241\345\245\275\344\270\211\345\205\203\347\273\204.md" rename to docs/solutions/1500-1599/count-good-triplets.md diff --git "a/Solutions/1523. \345\234\250\345\214\272\351\227\264\350\214\203\345\233\264\345\206\205\347\273\237\350\256\241\345\245\207\346\225\260\346\225\260\347\233\256.md" b/docs/solutions/1500-1599/count-odd-numbers-in-an-interval-range.md similarity index 100% rename from "Solutions/1523. \345\234\250\345\214\272\351\227\264\350\214\203\345\233\264\345\206\205\347\273\237\350\256\241\345\245\207\346\225\260\346\225\260\347\233\256.md" rename to docs/solutions/1500-1599/count-odd-numbers-in-an-interval-range.md diff --git a/docs/solutions/1500-1599/index.md b/docs/solutions/1500-1599/index.md new file mode 100644 index 00000000..f7590fb3 --- /dev/null +++ b/docs/solutions/1500-1599/index.md @@ -0,0 +1,15 @@ +## 本章内容 + +- [1502. 判断能否形成等差数列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/can-make-arithmetic-progression-from-sequence/) +- [1507. 转变日期格式](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/reformat-date/) +- [1523. 在区间范围内统计奇数数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-odd-numbers-in-an-interval-range/) +- [1534. 统计好三元组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-good-triplets/) +- [1547. 切棍子的最小成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick/) +- [1551. 使数组中所有元素相等的最小操作数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-operations-to-make-array-equal/) +- [1556. 千位分隔数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/thousand-separator/) +- [1561. 你可以获得的最大硬币数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-number-of-coins-you-can-get/) +- [1567. 乘积为正数的最长子数组长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-length-of-subarray-with-positive-product/) +- [1582. 二进制矩阵中的特殊位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/special-positions-in-a-binary-matrix/) +- [1584. 连接所有点的最小费用](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/min-cost-to-connect-all-points/) +- [1593. 拆分字符串使唯一子字符串的数目最大](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings/) +- [1595. 连通两组点的最小成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points/) diff --git "a/Solutions/1567. \344\271\230\347\247\257\344\270\272\346\255\243\346\225\260\347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204\351\225\277\345\272\246.md" b/docs/solutions/1500-1599/maximum-length-of-subarray-with-positive-product.md similarity index 100% rename from "Solutions/1567. \344\271\230\347\247\257\344\270\272\346\255\243\346\225\260\347\232\204\346\234\200\351\225\277\345\255\220\346\225\260\347\273\204\351\225\277\345\272\246.md" rename to docs/solutions/1500-1599/maximum-length-of-subarray-with-positive-product.md diff --git "a/Solutions/1561. \344\275\240\345\217\257\344\273\245\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\241\254\345\270\201\346\225\260\347\233\256.md" b/docs/solutions/1500-1599/maximum-number-of-coins-you-can-get.md similarity index 100% rename from "Solutions/1561. \344\275\240\345\217\257\344\273\245\350\216\267\345\276\227\347\232\204\346\234\200\345\244\247\347\241\254\345\270\201\346\225\260\347\233\256.md" rename to docs/solutions/1500-1599/maximum-number-of-coins-you-can-get.md diff --git "a/Solutions/1584. \350\277\236\346\216\245\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\350\264\271\347\224\250.md" b/docs/solutions/1500-1599/min-cost-to-connect-all-points.md similarity index 100% rename from "Solutions/1584. \350\277\236\346\216\245\346\211\200\346\234\211\347\202\271\347\232\204\346\234\200\345\260\217\350\264\271\347\224\250.md" rename to docs/solutions/1500-1599/min-cost-to-connect-all-points.md diff --git "a/Solutions/1595. \350\277\236\351\200\232\344\270\244\347\273\204\347\202\271\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" b/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points.md similarity index 100% rename from "Solutions/1595. \350\277\236\351\200\232\344\270\244\347\273\204\347\202\271\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" rename to docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points.md diff --git "a/Solutions/1547. \345\210\207\346\243\215\345\255\220\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" b/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick.md similarity index 100% rename from "Solutions/1547. \345\210\207\346\243\215\345\255\220\347\232\204\346\234\200\345\260\217\346\210\220\346\234\254.md" rename to docs/solutions/1500-1599/minimum-cost-to-cut-a-stick.md diff --git "a/Solutions/1551. \344\275\277\346\225\260\347\273\204\344\270\255\346\211\200\346\234\211\345\205\203\347\264\240\347\233\270\347\255\211\347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" b/docs/solutions/1500-1599/minimum-operations-to-make-array-equal.md similarity index 100% rename from "Solutions/1551. \344\275\277\346\225\260\347\273\204\344\270\255\346\211\200\346\234\211\345\205\203\347\264\240\347\233\270\347\255\211\347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" rename to docs/solutions/1500-1599/minimum-operations-to-make-array-equal.md diff --git "a/Solutions/1507. \350\275\254\345\217\230\346\227\245\346\234\237\346\240\274\345\274\217.md" b/docs/solutions/1500-1599/reformat-date.md similarity index 100% rename from "Solutions/1507. \350\275\254\345\217\230\346\227\245\346\234\237\346\240\274\345\274\217.md" rename to docs/solutions/1500-1599/reformat-date.md diff --git "a/Solutions/1582. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\347\211\271\346\256\212\344\275\215\347\275\256.md" b/docs/solutions/1500-1599/special-positions-in-a-binary-matrix.md similarity index 100% rename from "Solutions/1582. \344\272\214\350\277\233\345\210\266\347\237\251\351\230\265\344\270\255\347\232\204\347\211\271\346\256\212\344\275\215\347\275\256.md" rename to docs/solutions/1500-1599/special-positions-in-a-binary-matrix.md diff --git "a/Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" b/docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings.md similarity index 100% rename from "Solutions/1593. \346\213\206\345\210\206\345\255\227\347\254\246\344\270\262\344\275\277\345\224\257\344\270\200\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256\346\234\200\345\244\247.md" rename to docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings.md diff --git "a/Solutions/1556. \345\215\203\344\275\215\345\210\206\351\232\224\346\225\260.md" b/docs/solutions/1500-1599/thousand-separator.md similarity index 100% rename from "Solutions/1556. \345\215\203\344\275\215\345\210\206\351\232\224\346\225\260.md" rename to docs/solutions/1500-1599/thousand-separator.md diff --git "a/Solutions/1641. \347\273\237\350\256\241\345\255\227\345\205\270\345\272\217\345\205\203\351\237\263\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256.md" b/docs/solutions/1600-1699/count-sorted-vowel-strings.md similarity index 100% rename from "Solutions/1641. \347\273\237\350\256\241\345\255\227\345\205\270\345\272\217\345\205\203\351\237\263\345\255\227\347\254\246\344\270\262\347\232\204\346\225\260\347\233\256.md" rename to docs/solutions/1600-1699/count-sorted-vowel-strings.md diff --git "a/Solutions/1617. \347\273\237\350\256\241\345\255\220\346\240\221\344\270\255\345\237\216\345\270\202\344\271\213\351\227\264\346\234\200\345\244\247\350\267\235\347\246\273.md" b/docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities.md similarity index 100% rename from "Solutions/1617. \347\273\237\350\256\241\345\255\220\346\240\221\344\270\255\345\237\216\345\270\202\344\271\213\351\227\264\346\234\200\345\244\247\350\267\235\347\246\273.md" rename to docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities.md diff --git "a/Solutions/1603. \350\256\276\350\256\241\345\201\234\350\275\246\347\263\273\347\273\237.md" b/docs/solutions/1600-1699/design-parking-system.md similarity index 100% rename from "Solutions/1603. \350\256\276\350\256\241\345\201\234\350\275\246\347\263\273\347\273\237.md" rename to docs/solutions/1600-1699/design-parking-system.md diff --git "a/Solutions/1657. \347\241\256\345\256\232\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\346\230\257\345\220\246\346\216\245\350\277\221.md" b/docs/solutions/1600-1699/determine-if-two-strings-are-close.md similarity index 100% rename from "Solutions/1657. \347\241\256\345\256\232\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\346\230\257\345\220\246\346\216\245\350\277\221.md" rename to docs/solutions/1600-1699/determine-if-two-strings-are-close.md diff --git "a/Solutions/1605. \347\273\231\345\256\232\350\241\214\345\222\214\345\210\227\347\232\204\345\222\214\346\261\202\345\217\257\350\241\214\347\237\251\351\230\265.md" b/docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums.md similarity index 100% rename from "Solutions/1605. \347\273\231\345\256\232\350\241\214\345\222\214\345\210\227\347\232\204\345\222\214\346\261\202\345\217\257\350\241\214\347\237\251\351\230\265.md" rename to docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums.md diff --git "a/Solutions/1646. \350\216\267\345\217\226\347\224\237\346\210\220\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\244\247\345\200\274.md" b/docs/solutions/1600-1699/get-maximum-in-generated-array.md similarity index 100% rename from "Solutions/1646. \350\216\267\345\217\226\347\224\237\346\210\220\346\225\260\347\273\204\344\270\255\347\232\204\346\234\200\345\244\247\345\200\274.md" rename to docs/solutions/1600-1699/get-maximum-in-generated-array.md diff --git a/docs/solutions/1600-1699/index.md b/docs/solutions/1600-1699/index.md new file mode 100644 index 00000000..36ebacab --- /dev/null +++ b/docs/solutions/1600-1699/index.md @@ -0,0 +1,15 @@ +## 本章内容 + +- [1603. 设计停车系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/design-parking-system/) +- [1605. 给定行和列的和求可行矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums/) +- [1614. 括号的最大嵌套深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-nesting-depth-of-the-parentheses/) +- [1617. 统计子树中城市之间最大距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities/) +- [1631. 最小体力消耗路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort/) +- [1641. 统计字典序元音字符串的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-sorted-vowel-strings/) +- [1646. 获取生成数组中的最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/get-maximum-in-generated-array/) +- [1647. 字符频次唯一的最小删除次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-deletions-to-make-character-frequencies-unique/) +- [1657. 确定两个字符串是否接近](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/determine-if-two-strings-are-close/) +- [1658. 将 x 减到 0 的最小操作数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero/) +- [1672. 最富有客户的资产总量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/richest-customer-wealth/) +- [1695. 删除子数组的最大得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-erasure-value/) +- [1698. 字符串的不同子字符串个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/number-of-distinct-substrings-in-a-string/) diff --git "a/Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" b/docs/solutions/1600-1699/maximum-erasure-value.md similarity index 100% rename from "Solutions/1695. \345\210\240\351\231\244\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\276\227\345\210\206.md" rename to docs/solutions/1600-1699/maximum-erasure-value.md diff --git "a/Solutions/1614. \346\213\254\345\217\267\347\232\204\346\234\200\345\244\247\345\265\214\345\245\227\346\267\261\345\272\246.md" b/docs/solutions/1600-1699/maximum-nesting-depth-of-the-parentheses.md similarity index 100% rename from "Solutions/1614. \346\213\254\345\217\267\347\232\204\346\234\200\345\244\247\345\265\214\345\245\227\346\267\261\345\272\246.md" rename to docs/solutions/1600-1699/maximum-nesting-depth-of-the-parentheses.md diff --git "a/Solutions/1647. \345\255\227\347\254\246\351\242\221\346\254\241\345\224\257\344\270\200\347\232\204\346\234\200\345\260\217\345\210\240\351\231\244\346\254\241\346\225\260.md" b/docs/solutions/1600-1699/minimum-deletions-to-make-character-frequencies-unique.md similarity index 100% rename from "Solutions/1647. \345\255\227\347\254\246\351\242\221\346\254\241\345\224\257\344\270\200\347\232\204\346\234\200\345\260\217\345\210\240\351\231\244\346\254\241\346\225\260.md" rename to docs/solutions/1600-1699/minimum-deletions-to-make-character-frequencies-unique.md diff --git "a/Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" b/docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero.md similarity index 100% rename from "Solutions/1658. \345\260\206 x \345\207\217\345\210\260 0 \347\232\204\346\234\200\345\260\217\346\223\215\344\275\234\346\225\260.md" rename to docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero.md diff --git "a/Solutions/1698. \345\255\227\347\254\246\344\270\262\347\232\204\344\270\215\345\220\214\345\255\220\345\255\227\347\254\246\344\270\262\344\270\252\346\225\260.md" b/docs/solutions/1600-1699/number-of-distinct-substrings-in-a-string.md similarity index 100% rename from "Solutions/1698. \345\255\227\347\254\246\344\270\262\347\232\204\344\270\215\345\220\214\345\255\220\345\255\227\347\254\246\344\270\262\344\270\252\346\225\260.md" rename to docs/solutions/1600-1699/number-of-distinct-substrings-in-a-string.md diff --git "a/Solutions/1631. \346\234\200\345\260\217\344\275\223\345\212\233\346\266\210\350\200\227\350\267\257\345\276\204.md" b/docs/solutions/1600-1699/path-with-minimum-effort.md similarity index 100% rename from "Solutions/1631. \346\234\200\345\260\217\344\275\223\345\212\233\346\266\210\350\200\227\350\267\257\345\276\204.md" rename to docs/solutions/1600-1699/path-with-minimum-effort.md diff --git "a/Solutions/1672. \346\234\200\345\257\214\346\234\211\345\256\242\346\210\267\347\232\204\350\265\204\344\272\247\346\200\273\351\207\217.md" b/docs/solutions/1600-1699/richest-customer-wealth.md similarity index 100% rename from "Solutions/1672. \346\234\200\345\257\214\346\234\211\345\256\242\346\210\267\347\232\204\350\265\204\344\272\247\346\200\273\351\207\217.md" rename to docs/solutions/1600-1699/richest-customer-wealth.md diff --git "a/Solutions/1716. \350\256\241\347\256\227\345\212\233\346\211\243\351\223\266\350\241\214\347\232\204\351\222\261.md" b/docs/solutions/1700-1799/calculate-money-in-leetcode-bank.md similarity index 100% rename from "Solutions/1716. \350\256\241\347\256\227\345\212\233\346\211\243\351\223\266\350\241\214\347\232\204\351\222\261.md" rename to docs/solutions/1700-1799/calculate-money-in-leetcode-bank.md diff --git "a/Solutions/1790. \344\273\205\346\211\247\350\241\214\344\270\200\346\254\241\345\255\227\347\254\246\344\270\262\344\272\244\346\215\242\350\203\275\345\220\246\344\275\277\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" b/docs/solutions/1700-1799/check-if-one-string-swap-can-make-strings-equal.md similarity index 100% rename from "Solutions/1790. \344\273\205\346\211\247\350\241\214\344\270\200\346\254\241\345\255\227\347\254\246\344\270\262\344\272\244\346\215\242\350\203\275\345\220\246\344\275\277\344\270\244\344\270\252\345\255\227\347\254\246\344\270\262\347\233\270\347\255\211.md" rename to docs/solutions/1700-1799/check-if-one-string-swap-can-make-strings-equal.md diff --git "a/Solutions/1720. \350\247\243\347\240\201\345\274\202\346\210\226\345\220\216\347\232\204\346\225\260\347\273\204.md" b/docs/solutions/1700-1799/decode-xored-array.md similarity index 100% rename from "Solutions/1720. \350\247\243\347\240\201\345\274\202\346\210\226\345\220\216\347\232\204\346\225\260\347\273\204.md" rename to docs/solutions/1700-1799/decode-xored-array.md diff --git "a/Solutions/1791. \346\211\276\345\207\272\346\230\237\345\236\213\345\233\276\347\232\204\344\270\255\345\277\203\350\212\202\347\202\271.md" b/docs/solutions/1700-1799/find-center-of-star-graph.md similarity index 100% rename from "Solutions/1791. \346\211\276\345\207\272\346\230\237\345\236\213\345\233\276\347\232\204\344\270\255\345\277\203\350\212\202\347\202\271.md" rename to docs/solutions/1700-1799/find-center-of-star-graph.md diff --git "a/Solutions/1779. \346\211\276\345\210\260\346\234\200\350\277\221\347\232\204\346\234\211\347\233\270\345\220\214 X \346\210\226 Y \345\235\220\346\240\207\347\232\204\347\202\271.md" b/docs/solutions/1700-1799/find-nearest-point-that-has-the-same-x-or-y-coordinate.md similarity index 100% rename from "Solutions/1779. \346\211\276\345\210\260\346\234\200\350\277\221\347\232\204\346\234\211\347\233\270\345\220\214 X \346\210\226 Y \345\235\220\346\240\207\347\232\204\347\202\271.md" rename to docs/solutions/1700-1799/find-nearest-point-that-has-the-same-x-or-y-coordinate.md diff --git a/docs/solutions/1700-1799/index.md b/docs/solutions/1700-1799/index.md new file mode 100644 index 00000000..59b404f6 --- /dev/null +++ b/docs/solutions/1700-1799/index.md @@ -0,0 +1,13 @@ +## 本章内容 + +- [1710. 卡车上的最大单元数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-units-on-a-truck/) +- [1716. 计算力扣银行的钱](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/calculate-money-in-leetcode-bank/) +- [1720. 解码异或后的数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/decode-xored-array/) +- [1726. 同积元组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/tuple-with-same-product/) +- [1736. 替换隐藏数字得到的最晚时间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/latest-time-by-replacing-hidden-digits/) +- [1742. 盒子中小球的最大数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-balls-in-a-box/) +- [1749. 任意子数组和的绝对值的最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-absolute-sum-of-any-subarray/) +- [1763. 最长的美好子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/longest-nice-substring/) +- [1779. 找到最近的有相同 X 或 Y 坐标的点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-nearest-point-that-has-the-same-x-or-y-coordinate/) +- [1790. 仅执行一次字符串交换能否使两个字符串相等](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/check-if-one-string-swap-can-make-strings-equal/) +- [1791. 找出星型图的中心节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-center-of-star-graph/) diff --git "a/Solutions/1736. \346\233\277\346\215\242\351\232\220\350\227\217\346\225\260\345\255\227\345\276\227\345\210\260\347\232\204\346\234\200\346\231\232\346\227\266\351\227\264.md" b/docs/solutions/1700-1799/latest-time-by-replacing-hidden-digits.md similarity index 100% rename from "Solutions/1736. \346\233\277\346\215\242\351\232\220\350\227\217\346\225\260\345\255\227\345\276\227\345\210\260\347\232\204\346\234\200\346\231\232\346\227\266\351\227\264.md" rename to docs/solutions/1700-1799/latest-time-by-replacing-hidden-digits.md diff --git "a/Solutions/1763. \346\234\200\351\225\277\347\232\204\347\276\216\345\245\275\345\255\220\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/1700-1799/longest-nice-substring.md similarity index 100% rename from "Solutions/1763. \346\234\200\351\225\277\347\232\204\347\276\216\345\245\275\345\255\220\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/1700-1799/longest-nice-substring.md diff --git "a/Solutions/1749. \344\273\273\346\204\217\345\255\220\346\225\260\347\273\204\345\222\214\347\232\204\347\273\235\345\257\271\345\200\274\347\232\204\346\234\200\345\244\247\345\200\274.md" b/docs/solutions/1700-1799/maximum-absolute-sum-of-any-subarray.md similarity index 100% rename from "Solutions/1749. \344\273\273\346\204\217\345\255\220\346\225\260\347\273\204\345\222\214\347\232\204\347\273\235\345\257\271\345\200\274\347\232\204\346\234\200\345\244\247\345\200\274.md" rename to docs/solutions/1700-1799/maximum-absolute-sum-of-any-subarray.md diff --git "a/Solutions/1742. \347\233\222\345\255\220\344\270\255\345\260\217\347\220\203\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" b/docs/solutions/1700-1799/maximum-number-of-balls-in-a-box.md similarity index 100% rename from "Solutions/1742. \347\233\222\345\255\220\344\270\255\345\260\217\347\220\203\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" rename to docs/solutions/1700-1799/maximum-number-of-balls-in-a-box.md diff --git "a/Solutions/1710. \345\215\241\350\275\246\344\270\212\347\232\204\346\234\200\345\244\247\345\215\225\345\205\203\346\225\260.md" b/docs/solutions/1700-1799/maximum-units-on-a-truck.md similarity index 100% rename from "Solutions/1710. \345\215\241\350\275\246\344\270\212\347\232\204\346\234\200\345\244\247\345\215\225\345\205\203\346\225\260.md" rename to docs/solutions/1700-1799/maximum-units-on-a-truck.md diff --git "a/Solutions/1726. \345\220\214\347\247\257\345\205\203\347\273\204.md" b/docs/solutions/1700-1799/tuple-with-same-product.md similarity index 100% rename from "Solutions/1726. \345\220\214\347\247\257\345\205\203\347\273\204.md" rename to docs/solutions/1700-1799/tuple-with-same-product.md diff --git "a/Solutions/1893. \346\243\200\346\237\245\346\230\257\345\220\246\345\214\272\345\237\237\345\206\205\346\211\200\346\234\211\346\225\264\346\225\260\351\203\275\350\242\253\350\246\206\347\233\226.md" b/docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered.md similarity index 100% rename from "Solutions/1893. \346\243\200\346\237\245\346\230\257\345\220\246\345\214\272\345\237\237\345\206\205\346\211\200\346\234\211\346\225\264\346\225\260\351\203\275\350\242\253\350\246\206\347\233\226.md" rename to docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered.md diff --git a/docs/solutions/1800-1899/index.md b/docs/solutions/1800-1899/index.md new file mode 100644 index 00000000..4ceb27d1 --- /dev/null +++ b/docs/solutions/1800-1899/index.md @@ -0,0 +1,13 @@ +## 本章内容 + +- [1822. 数组元素积的符号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sign-of-the-product-of-an-array/) +- [1827. 最少操作使数组递增](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-operations-to-make-the-array-increasing/) +- [1833. 雪糕的最大数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/maximum-ice-cream-bars/) +- [1844. 将所有数字用字符替换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/replace-all-digits-with-characters/) +- [1858. 包含所有前缀的最长单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/longest-word-with-all-prefixes/) +- [1859. 将句子排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sorting-the-sentence/) +- [1876. 长度为三且各字符不同的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/substrings-of-size-three-with-distinct-characters/) +- [1877. 数组中最大数对和的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimize-maximum-pair-sum-in-array/) +- [1879. 两个数组最小的异或值之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays/) +- [1893. 检查是否区域内所有整数都被覆盖](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered/) +- [1897. 重新分配字符使所有字符串都相等](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/redistribute-characters-to-make-all-strings-equal/) diff --git "a/Solutions/1858. \345\214\205\345\220\253\346\211\200\346\234\211\345\211\215\347\274\200\347\232\204\346\234\200\351\225\277\345\215\225\350\257\215.md" b/docs/solutions/1800-1899/longest-word-with-all-prefixes.md similarity index 100% rename from "Solutions/1858. \345\214\205\345\220\253\346\211\200\346\234\211\345\211\215\347\274\200\347\232\204\346\234\200\351\225\277\345\215\225\350\257\215.md" rename to docs/solutions/1800-1899/longest-word-with-all-prefixes.md diff --git "a/Solutions/1833. \351\233\252\347\263\225\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" b/docs/solutions/1800-1899/maximum-ice-cream-bars.md similarity index 100% rename from "Solutions/1833. \351\233\252\347\263\225\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" rename to docs/solutions/1800-1899/maximum-ice-cream-bars.md diff --git "a/Solutions/1877. \346\225\260\347\273\204\344\270\255\346\234\200\345\244\247\346\225\260\345\257\271\345\222\214\347\232\204\346\234\200\345\260\217\345\200\274.md" b/docs/solutions/1800-1899/minimize-maximum-pair-sum-in-array.md similarity index 100% rename from "Solutions/1877. \346\225\260\347\273\204\344\270\255\346\234\200\345\244\247\346\225\260\345\257\271\345\222\214\347\232\204\346\234\200\345\260\217\345\200\274.md" rename to docs/solutions/1800-1899/minimize-maximum-pair-sum-in-array.md diff --git "a/Solutions/1827. \346\234\200\345\260\221\346\223\215\344\275\234\344\275\277\346\225\260\347\273\204\351\200\222\345\242\236.md" b/docs/solutions/1800-1899/minimum-operations-to-make-the-array-increasing.md similarity index 100% rename from "Solutions/1827. \346\234\200\345\260\221\346\223\215\344\275\234\344\275\277\346\225\260\347\273\204\351\200\222\345\242\236.md" rename to docs/solutions/1800-1899/minimum-operations-to-make-the-array-increasing.md diff --git "a/Solutions/1879. \344\270\244\344\270\252\346\225\260\347\273\204\346\234\200\345\260\217\347\232\204\345\274\202\346\210\226\345\200\274\344\271\213\345\222\214.md" b/docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays.md similarity index 100% rename from "Solutions/1879. \344\270\244\344\270\252\346\225\260\347\273\204\346\234\200\345\260\217\347\232\204\345\274\202\346\210\226\345\200\274\344\271\213\345\222\214.md" rename to docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays.md diff --git "a/Solutions/1897. \351\207\215\346\226\260\345\210\206\351\205\215\345\255\227\347\254\246\344\275\277\346\211\200\346\234\211\345\255\227\347\254\246\344\270\262\351\203\275\347\233\270\347\255\211.md" b/docs/solutions/1800-1899/redistribute-characters-to-make-all-strings-equal.md similarity index 100% rename from "Solutions/1897. \351\207\215\346\226\260\345\210\206\351\205\215\345\255\227\347\254\246\344\275\277\346\211\200\346\234\211\345\255\227\347\254\246\344\270\262\351\203\275\347\233\270\347\255\211.md" rename to docs/solutions/1800-1899/redistribute-characters-to-make-all-strings-equal.md diff --git "a/Solutions/1844. \345\260\206\346\211\200\346\234\211\346\225\260\345\255\227\347\224\250\345\255\227\347\254\246\346\233\277\346\215\242.md" b/docs/solutions/1800-1899/replace-all-digits-with-characters.md similarity index 100% rename from "Solutions/1844. \345\260\206\346\211\200\346\234\211\346\225\260\345\255\227\347\224\250\345\255\227\347\254\246\346\233\277\346\215\242.md" rename to docs/solutions/1800-1899/replace-all-digits-with-characters.md diff --git "a/Solutions/1822. \346\225\260\347\273\204\345\205\203\347\264\240\347\247\257\347\232\204\347\254\246\345\217\267.md" b/docs/solutions/1800-1899/sign-of-the-product-of-an-array.md similarity index 100% rename from "Solutions/1822. \346\225\260\347\273\204\345\205\203\347\264\240\347\247\257\347\232\204\347\254\246\345\217\267.md" rename to docs/solutions/1800-1899/sign-of-the-product-of-an-array.md diff --git "a/Solutions/1859. \345\260\206\345\217\245\345\255\220\346\216\222\345\272\217.md" b/docs/solutions/1800-1899/sorting-the-sentence.md similarity index 100% rename from "Solutions/1859. \345\260\206\345\217\245\345\255\220\346\216\222\345\272\217.md" rename to docs/solutions/1800-1899/sorting-the-sentence.md diff --git "a/Solutions/1876. \351\225\277\345\272\246\344\270\272\344\270\211\344\270\224\345\220\204\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/1800-1899/substrings-of-size-three-with-distinct-characters.md similarity index 100% rename from "Solutions/1876. \351\225\277\345\272\246\344\270\272\344\270\211\344\270\224\345\220\204\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/1800-1899/substrings-of-size-three-with-distinct-characters.md diff --git "a/Solutions/1936. \346\226\260\345\242\236\347\232\204\346\234\200\345\260\221\345\217\260\351\230\266\346\225\260.md" b/docs/solutions/1900-1999/add-minimum-number-of-rungs.md similarity index 100% rename from "Solutions/1936. \346\226\260\345\242\236\347\232\204\346\234\200\345\260\221\345\217\260\351\230\266\346\225\260.md" rename to docs/solutions/1900-1999/add-minimum-number-of-rungs.md diff --git "a/Solutions/1941. \346\243\200\346\237\245\346\230\257\345\220\246\346\211\200\346\234\211\345\255\227\347\254\246\345\207\272\347\216\260\346\254\241\346\225\260\347\233\270\345\220\214.md" b/docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences.md similarity index 100% rename from "Solutions/1941. \346\243\200\346\237\245\346\230\257\345\220\246\346\211\200\346\234\211\345\255\227\347\254\246\345\207\272\347\216\260\346\254\241\346\225\260\347\233\270\345\220\214.md" rename to docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences.md diff --git "a/Solutions/1929. \346\225\260\347\273\204\344\270\262\350\201\224.md" b/docs/solutions/1900-1999/concatenation-of-array.md similarity index 100% rename from "Solutions/1929. \346\225\260\347\273\204\344\270\262\350\201\224.md" rename to docs/solutions/1900-1999/concatenation-of-array.md diff --git "a/Solutions/1925. \347\273\237\350\256\241\345\271\263\346\226\271\345\222\214\344\270\211\345\205\203\347\273\204\347\232\204\346\225\260\347\233\256.md" b/docs/solutions/1900-1999/count-square-sum-triples.md similarity index 100% rename from "Solutions/1925. \347\273\237\350\256\241\345\271\263\346\226\271\345\222\214\344\270\211\345\205\203\347\273\204\347\232\204\346\225\260\347\233\256.md" rename to docs/solutions/1900-1999/count-square-sum-triples.md diff --git "a/Solutions/1921. \346\266\210\347\201\255\346\200\252\347\211\251\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" b/docs/solutions/1900-1999/eliminate-maximum-number-of-monsters.md similarity index 100% rename from "Solutions/1921. \346\266\210\347\201\255\346\200\252\347\211\251\347\232\204\346\234\200\345\244\247\346\225\260\351\207\217.md" rename to docs/solutions/1900-1999/eliminate-maximum-number-of-monsters.md diff --git "a/Solutions/1991. \346\211\276\345\210\260\346\225\260\347\273\204\347\232\204\344\270\255\351\227\264\344\275\215\347\275\256.md" b/docs/solutions/1900-1999/find-the-middle-index-in-array.md similarity index 100% rename from "Solutions/1991. \346\211\276\345\210\260\346\225\260\347\273\204\347\232\204\344\270\255\351\227\264\344\275\215\347\275\256.md" rename to docs/solutions/1900-1999/find-the-middle-index-in-array.md diff --git a/docs/solutions/1900-1999/index.md b/docs/solutions/1900-1999/index.md new file mode 100644 index 00000000..68445636 --- /dev/null +++ b/docs/solutions/1900-1999/index.md @@ -0,0 +1,14 @@ +## 本章内容 + +- [1903. 字符串中的最大奇数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/largest-odd-number-in-string/) +- [1921. 消灭怪物的最大数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/eliminate-maximum-number-of-monsters/) +- [1925. 统计平方和三元组的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-square-sum-triples/) +- [1929. 数组串联](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/concatenation-of-array/) +- [1930. 长度为 3 的不同回文子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/unique-length-3-palindromic-subsequences/) +- [1936. 新增的最少台阶数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/add-minimum-number-of-rungs/) +- [1941. 检查是否所有字符出现次数相同](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences/) +- [1947. 最大兼容性评分和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum/) +- [1984. 学生分数的最小差值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-difference-between-highest-and-lowest-of-k-scores/) +- [1986. 完成任务的最少工作时间段](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks/) +- [1991. 找到数组的中间位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/find-the-middle-index-in-array/) +- [1994. 好子集的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/the-number-of-good-subsets/) diff --git "a/Solutions/1903. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\234\200\345\244\247\345\245\207\346\225\260.md" b/docs/solutions/1900-1999/largest-odd-number-in-string.md similarity index 100% rename from "Solutions/1903. \345\255\227\347\254\246\344\270\262\344\270\255\347\232\204\346\234\200\345\244\247\345\245\207\346\225\260.md" rename to docs/solutions/1900-1999/largest-odd-number-in-string.md diff --git "a/Solutions/1947. \346\234\200\345\244\247\345\205\274\345\256\271\346\200\247\350\257\204\345\210\206\345\222\214.md" b/docs/solutions/1900-1999/maximum-compatibility-score-sum.md similarity index 100% rename from "Solutions/1947. \346\234\200\345\244\247\345\205\274\345\256\271\346\200\247\350\257\204\345\210\206\345\222\214.md" rename to docs/solutions/1900-1999/maximum-compatibility-score-sum.md diff --git "a/Solutions/1984. \345\255\246\347\224\237\345\210\206\346\225\260\347\232\204\346\234\200\345\260\217\345\267\256\345\200\274.md" b/docs/solutions/1900-1999/minimum-difference-between-highest-and-lowest-of-k-scores.md similarity index 100% rename from "Solutions/1984. \345\255\246\347\224\237\345\210\206\346\225\260\347\232\204\346\234\200\345\260\217\345\267\256\345\200\274.md" rename to docs/solutions/1900-1999/minimum-difference-between-highest-and-lowest-of-k-scores.md diff --git "a/Solutions/1986. \345\256\214\346\210\220\344\273\273\345\212\241\347\232\204\346\234\200\345\260\221\345\267\245\344\275\234\346\227\266\351\227\264\346\256\265.md" b/docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks.md similarity index 100% rename from "Solutions/1986. \345\256\214\346\210\220\344\273\273\345\212\241\347\232\204\346\234\200\345\260\221\345\267\245\344\275\234\346\227\266\351\227\264\346\256\265.md" rename to docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks.md diff --git "a/Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" b/docs/solutions/1900-1999/the-number-of-good-subsets.md similarity index 100% rename from "Solutions/1994. \345\245\275\345\255\220\351\233\206\347\232\204\346\225\260\347\233\256.md" rename to docs/solutions/1900-1999/the-number-of-good-subsets.md diff --git "a/Solutions/1930. \351\225\277\345\272\246\344\270\272 3 \347\232\204\344\270\215\345\220\214\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" b/docs/solutions/1900-1999/unique-length-3-palindromic-subsequences.md similarity index 100% rename from "Solutions/1930. \351\225\277\345\272\246\344\270\272 3 \347\232\204\344\270\215\345\220\214\345\233\236\346\226\207\345\255\220\345\272\217\345\210\227.md" rename to docs/solutions/1900-1999/unique-length-3-palindromic-subsequences.md diff --git "a/Solutions/2011. \346\211\247\350\241\214\346\223\215\344\275\234\345\220\216\347\232\204\345\217\230\351\207\217\345\200\274.md" b/docs/solutions/2000-2099/final-value-of-variable-after-performing-operations.md similarity index 100% rename from "Solutions/2011. \346\211\247\350\241\214\346\223\215\344\275\234\345\220\216\347\232\204\345\217\230\351\207\217\345\200\274.md" rename to docs/solutions/2000-2099/final-value-of-variable-after-performing-operations.md diff --git a/docs/solutions/2000-2099/index.md b/docs/solutions/2000-2099/index.md new file mode 100644 index 00000000..3cde4cdb --- /dev/null +++ b/docs/solutions/2000-2099/index.md @@ -0,0 +1,5 @@ +## 本章内容 + +- [2011. 执行操作后的变量值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/final-value-of-variable-after-performing-operations/) +- [2023. 连接后等于目标字符串的字符串对](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/number-of-pairs-of-strings-with-concatenation-equal-to-target/) +- [2050. 并行课程 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/parallel-courses-iii/) diff --git "a/Solutions/2023. \350\277\236\346\216\245\345\220\216\347\255\211\344\272\216\347\233\256\346\240\207\345\255\227\347\254\246\344\270\262\347\232\204\345\255\227\347\254\246\344\270\262\345\257\271.md" b/docs/solutions/2000-2099/number-of-pairs-of-strings-with-concatenation-equal-to-target.md similarity index 100% rename from "Solutions/2023. \350\277\236\346\216\245\345\220\216\347\255\211\344\272\216\347\233\256\346\240\207\345\255\227\347\254\246\344\270\262\347\232\204\345\255\227\347\254\246\344\270\262\345\257\271.md" rename to docs/solutions/2000-2099/number-of-pairs-of-strings-with-concatenation-equal-to-target.md diff --git "a/Solutions/2050. \345\271\266\350\241\214\350\257\276\347\250\213 III.md" b/docs/solutions/2000-2099/parallel-courses-iii.md similarity index 100% rename from "Solutions/2050. \345\271\266\350\241\214\350\257\276\347\250\213 III.md" rename to docs/solutions/2000-2099/parallel-courses-iii.md diff --git "a/Solutions/2156. \346\237\245\346\211\276\347\273\231\345\256\232\345\223\210\345\270\214\345\200\274\347\232\204\345\255\220\344\270\262.md" b/docs/solutions/2100-2199/find-substring-with-given-hash-value.md similarity index 100% rename from "Solutions/2156. \346\237\245\346\211\276\347\273\231\345\256\232\345\223\210\345\270\214\345\200\274\347\232\204\345\255\220\344\270\262.md" rename to docs/solutions/2100-2199/find-substring-with-given-hash-value.md diff --git a/docs/solutions/2100-2199/index.md b/docs/solutions/2100-2199/index.md new file mode 100644 index 00000000..4435613e --- /dev/null +++ b/docs/solutions/2100-2199/index.md @@ -0,0 +1,4 @@ +## 本章内容 + +- [2156. 查找给定哈希值的子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value/) +- [2172. 数组的最大与和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/maximum-and-sum-of-array/) diff --git "a/Solutions/2172. \346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\344\270\216\345\222\214.md" b/docs/solutions/2100-2199/maximum-and-sum-of-array.md similarity index 100% rename from "Solutions/2172. \346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\344\270\216\345\222\214.md" rename to docs/solutions/2100-2199/maximum-and-sum-of-array.md diff --git "a/Solutions/2235. \344\270\244\346\225\264\346\225\260\347\233\270\345\212\240.md" b/docs/solutions/2200-2299/add-two-integers.md similarity index 100% rename from "Solutions/2235. \344\270\244\346\225\264\346\225\260\347\233\270\345\212\240.md" rename to docs/solutions/2200-2299/add-two-integers.md diff --git "a/Solutions/2276. \347\273\237\350\256\241\345\214\272\351\227\264\344\270\255\347\232\204\346\225\264\346\225\260\346\225\260\347\233\256.md" b/docs/solutions/2200-2299/count-integers-in-intervals.md similarity index 100% rename from "Solutions/2276. \347\273\237\350\256\241\345\214\272\351\227\264\344\270\255\347\232\204\346\225\264\346\225\260\346\225\260\347\233\256.md" rename to docs/solutions/2200-2299/count-integers-in-intervals.md diff --git "a/Solutions/2249. \347\273\237\350\256\241\345\234\206\345\206\205\346\240\274\347\202\271\346\225\260\347\233\256.md" b/docs/solutions/2200-2299/count-lattice-points-inside-a-circle.md similarity index 100% rename from "Solutions/2249. \347\273\237\350\256\241\345\234\206\345\206\205\346\240\274\347\202\271\346\225\260\347\233\256.md" rename to docs/solutions/2200-2299/count-lattice-points-inside-a-circle.md diff --git a/docs/solutions/2200-2299/index.md b/docs/solutions/2200-2299/index.md new file mode 100644 index 00000000..b9afd718 --- /dev/null +++ b/docs/solutions/2200-2299/index.md @@ -0,0 +1,6 @@ +## 本章内容 + +- [2235. 两整数相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/add-two-integers/) +- [2246. 相邻字符不同的最长路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/longest-path-with-different-adjacent-characters/) +- [2249. 统计圆内格点数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-lattice-points-inside-a-circle/) +- [2276. 统计区间中的整数数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-integers-in-intervals/) diff --git "a/Solutions/2246. \347\233\270\351\202\273\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\346\234\200\351\225\277\350\267\257\345\276\204.md" b/docs/solutions/2200-2299/longest-path-with-different-adjacent-characters.md similarity index 100% rename from "Solutions/2246. \347\233\270\351\202\273\345\255\227\347\254\246\344\270\215\345\220\214\347\232\204\346\234\200\351\225\277\350\267\257\345\276\204.md" rename to docs/solutions/2200-2299/longest-path-with-different-adjacent-characters.md diff --git "a/Solutions/2376. \347\273\237\350\256\241\347\211\271\346\256\212\346\225\264\346\225\260.md" b/docs/solutions/2300-2399/count-special-integers.md similarity index 100% rename from "Solutions/2376. \347\273\237\350\256\241\347\211\271\346\256\212\346\225\264\346\225\260.md" rename to docs/solutions/2300-2399/count-special-integers.md diff --git a/docs/solutions/2300-2399/index.md b/docs/solutions/2300-2399/index.md new file mode 100644 index 00000000..5d14aa66 --- /dev/null +++ b/docs/solutions/2300-2399/index.md @@ -0,0 +1,3 @@ +## 本章内容 + +- [2376. 统计特殊整数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2300-2399/count-special-integers/) diff --git a/docs/solutions/2400-2499/index.md b/docs/solutions/2400-2499/index.md new file mode 100644 index 00000000..e28005cc --- /dev/null +++ b/docs/solutions/2400-2499/index.md @@ -0,0 +1,3 @@ +## 本章内容 + +- [2427. 公因子的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2400-2499/number-of-common-factors/) diff --git "a/Solutions/2427. \345\205\254\345\233\240\345\255\220\347\232\204\346\225\260\347\233\256.md" b/docs/solutions/2400-2499/number-of-common-factors.md similarity index 100% rename from "Solutions/2427. \345\205\254\345\233\240\345\255\220\347\232\204\346\225\260\347\233\256.md" rename to docs/solutions/2400-2499/number-of-common-factors.md diff --git "a/Solutions/2538. \346\234\200\345\244\247\344\273\267\345\200\274\345\222\214\344\270\216\346\234\200\345\260\217\344\273\267\345\200\274\345\222\214\347\232\204\345\267\256\345\200\274.md" b/docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum.md similarity index 100% rename from "Solutions/2538. \346\234\200\345\244\247\344\273\267\345\200\274\345\222\214\344\270\216\346\234\200\345\260\217\344\273\267\345\200\274\345\222\214\347\232\204\345\267\256\345\200\274.md" rename to docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum.md diff --git a/docs/solutions/2500-2599/index.md b/docs/solutions/2500-2599/index.md new file mode 100644 index 00000000..0314e0ad --- /dev/null +++ b/docs/solutions/2500-2599/index.md @@ -0,0 +1,4 @@ +## 本章内容 + +- [2538. 最大价值和与最小价值和的差值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum/) +- [2585. 获得分数的方法数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/number-of-ways-to-earn-points/) diff --git "a/Solutions/2585. \350\216\267\345\276\227\345\210\206\346\225\260\347\232\204\346\226\271\346\263\225\346\225\260.md" b/docs/solutions/2500-2599/number-of-ways-to-earn-points.md similarity index 100% rename from "Solutions/2585. \350\216\267\345\276\227\345\210\206\346\225\260\347\232\204\346\226\271\346\263\225\346\225\260.md" rename to docs/solutions/2500-2599/number-of-ways-to-earn-points.md diff --git "a/Solutions/2719. \347\273\237\350\256\241\346\225\264\346\225\260\346\225\260\347\233\256.md" b/docs/solutions/2700-2799/count-of-integers.md similarity index 100% rename from "Solutions/2719. \347\273\237\350\256\241\346\225\264\346\225\260\346\225\260\347\233\256.md" rename to docs/solutions/2700-2799/count-of-integers.md diff --git a/docs/solutions/2700-2799/index.md b/docs/solutions/2700-2799/index.md new file mode 100644 index 00000000..a4b5a5c4 --- /dev/null +++ b/docs/solutions/2700-2799/index.md @@ -0,0 +1,3 @@ +## 本章内容 + +- [2719. 统计整数数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/count-of-integers/) diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.09. \346\213\254\345\217\267.md" b/docs/solutions/Interviews/bracket-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 08.09. \346\213\254\345\217\267.md" rename to docs/solutions/Interviews/bracket-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 16.26. \350\256\241\347\256\227\345\231\250.md" b/docs/solutions/Interviews/calculator-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 16.26. \350\256\241\347\256\227\345\231\250.md" rename to docs/solutions/Interviews/calculator-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.10. \351\242\234\350\211\262\345\241\253\345\205\205.md" b/docs/solutions/Interviews/color-fill-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 08.10. \351\242\234\350\211\262\345\241\253\345\205\205.md" rename to docs/solutions/Interviews/color-fill-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.12. \345\205\253\347\232\207\345\220\216.md" b/docs/solutions/Interviews/eight-queens-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 08.12. \345\205\253\347\232\207\345\220\216.md" rename to docs/solutions/Interviews/eight-queens-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 16.05. \351\230\266\344\271\230\345\260\276\346\225\260.md" b/docs/solutions/Interviews/factorial-zeros-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 16.05. \351\230\266\344\271\230\345\260\276\346\225\260.md" rename to docs/solutions/Interviews/factorial-zeros-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 04.08. \351\246\226\344\270\252\345\205\261\345\220\214\347\245\226\345\205\210.md" b/docs/solutions/Interviews/first-common-ancestor-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 04.08. \351\246\226\344\270\252\345\205\261\345\220\214\347\245\226\345\205\210.md" rename to docs/solutions/Interviews/first-common-ancestor-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 10.02. \345\217\230\344\275\215\350\257\215\347\273\204.md" b/docs/solutions/Interviews/group-anagrams-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 10.02. \345\217\230\344\275\215\350\257\215\347\273\204.md" rename to docs/solutions/Interviews/group-anagrams-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 03.04. \345\214\226\346\240\210\344\270\272\351\230\237.md" b/docs/solutions/Interviews/implement-queue-using-stacks-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 03.04. \345\214\226\346\240\210\344\270\272\351\230\237.md" rename to docs/solutions/Interviews/implement-queue-using-stacks-lcci.md diff --git a/docs/solutions/Interviews/index.md b/docs/solutions/Interviews/index.md new file mode 100644 index 00000000..b1ec96c9 --- /dev/null +++ b/docs/solutions/Interviews/index.md @@ -0,0 +1,32 @@ +## 本章内容 + +- [面试题 01.07. 旋转矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/rotate-matrix-lcci/) +- [面试题 01.08. 零矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/zero-matrix-lcci/) +- [面试题 02.02. 返回倒数第 k 个节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/kth-node-from-end-of-list-lcci/) +- [面试题 02.05. 链表求和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sum-lists-lcci/) +- [面试题 02.06. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/palindrome-linked-list-lcci/) +- [面试题 02.07. 链表相交](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci/) +- [面试题 02.08. 环路检测](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/linked-list-cycle-lcci/) +- [面试题 03.02. 栈的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/min-stack-lcci/) +- [面试题 03.04. 化栈为队](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/implement-queue-using-stacks-lcci/) +- [面试题 04.02. 最小高度树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/minimum-height-tree-lcci/) +- [面试题 04.05. 合法二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/legal-binary-search-tree-lcci/) +- [面试题 04.06. 后继者](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/successor-lcci/) +- [面试题 04.08. 首个共同祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/first-common-ancestor-lcci/) +- [面试题 04.12. 求和路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/paths-with-sum-lcci/) +- [面试题 08.04. 幂集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/power-set-lcci/) +- [面试题 08.07. 无重复字符串的排列组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-i-lcci/) +- [面试题 08.08. 有重复字符串的排列组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-ii-lcci/) +- [面试题 08.09. 括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/bracket-lcci/) +- [面试题 08.10. 颜色填充](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/color-fill-lcci/) +- [面试题 08.12. 八皇后](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/eight-queens-lcci/) +- [面试题 10.01. 合并排序的数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-merge-lcci/) +- [面试题 10.02. 变位词组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/group-anagrams-lcci/) +- [面试题 10.09. 排序矩阵查找](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-matrix-search-lcci/) +- [面试题 16.02. 单词频率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/words-frequency-lcci/) +- [面试题 16.05. 阶乘尾数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/factorial-zeros-lcci/) +- [面试题 16.26. 计算器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/calculator-lcci/) +- [面试题 17.06. 2出现的次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci/) +- [面试题 17.14. 最小K个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/smallest-k-lcci/) +- [面试题 17.15. 最长单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/longest-word-lcci/) +- [面试题 17.17. 多次搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/multi-search-lcci/) diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 02.07. \351\223\276\350\241\250\347\233\270\344\272\244.md" b/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 02.07. \351\223\276\350\241\250\347\233\270\344\272\244.md" rename to docs/solutions/Interviews/intersection-of-two-linked-lists-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 02.02. \350\277\224\345\233\236\345\200\222\346\225\260\347\254\254 k \344\270\252\350\212\202\347\202\271.md" b/docs/solutions/Interviews/kth-node-from-end-of-list-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 02.02. \350\277\224\345\233\236\345\200\222\346\225\260\347\254\254 k \344\270\252\350\212\202\347\202\271.md" rename to docs/solutions/Interviews/kth-node-from-end-of-list-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 04.05. \345\220\210\346\263\225\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" b/docs/solutions/Interviews/legal-binary-search-tree-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 04.05. \345\220\210\346\263\225\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" rename to docs/solutions/Interviews/legal-binary-search-tree-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 02.08. \347\216\257\350\267\257\346\243\200\346\265\213.md" b/docs/solutions/Interviews/linked-list-cycle-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 02.08. \347\216\257\350\267\257\346\243\200\346\265\213.md" rename to docs/solutions/Interviews/linked-list-cycle-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 17.15. \346\234\200\351\225\277\345\215\225\350\257\215.md" b/docs/solutions/Interviews/longest-word-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 17.15. \346\234\200\351\225\277\345\215\225\350\257\215.md" rename to docs/solutions/Interviews/longest-word-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 03.02. \346\240\210\347\232\204\346\234\200\345\260\217\345\200\274.md" b/docs/solutions/Interviews/min-stack-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 03.02. \346\240\210\347\232\204\346\234\200\345\260\217\345\200\274.md" rename to docs/solutions/Interviews/min-stack-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 04.02. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" b/docs/solutions/Interviews/minimum-height-tree-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 04.02. \346\234\200\345\260\217\351\253\230\345\272\246\346\240\221.md" rename to docs/solutions/Interviews/minimum-height-tree-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 17.17. \345\244\232\346\254\241\346\220\234\347\264\242.md" b/docs/solutions/Interviews/multi-search-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 17.17. \345\244\232\346\254\241\346\220\234\347\264\242.md" rename to docs/solutions/Interviews/multi-search-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 17.06. 2\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" b/docs/solutions/Interviews/number-of-2s-in-range-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 17.06. 2\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" rename to docs/solutions/Interviews/number-of-2s-in-range-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 02.06. \345\233\236\346\226\207\351\223\276\350\241\250.md" b/docs/solutions/Interviews/palindrome-linked-list-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 02.06. \345\233\236\346\226\207\351\223\276\350\241\250.md" rename to docs/solutions/Interviews/palindrome-linked-list-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 04.12. \346\261\202\345\222\214\350\267\257\345\276\204.md" b/docs/solutions/Interviews/paths-with-sum-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 04.12. \346\261\202\345\222\214\350\267\257\345\276\204.md" rename to docs/solutions/Interviews/paths-with-sum-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.07. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" b/docs/solutions/Interviews/permutation-i-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 08.07. \346\227\240\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" rename to docs/solutions/Interviews/permutation-i-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.08. \346\234\211\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" b/docs/solutions/Interviews/permutation-ii-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 08.08. \346\234\211\351\207\215\345\244\215\345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227\347\273\204\345\220\210.md" rename to docs/solutions/Interviews/permutation-ii-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 08.04. \345\271\202\351\233\206.md" b/docs/solutions/Interviews/power-set-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 08.04. \345\271\202\351\233\206.md" rename to docs/solutions/Interviews/power-set-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 01.07. \346\227\213\350\275\254\347\237\251\351\230\265.md" b/docs/solutions/Interviews/rotate-matrix-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 01.07. \346\227\213\350\275\254\347\237\251\351\230\265.md" rename to docs/solutions/Interviews/rotate-matrix-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 17.14. \346\234\200\345\260\217K\344\270\252\346\225\260.md" b/docs/solutions/Interviews/smallest-k-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 17.14. \346\234\200\345\260\217K\344\270\252\346\225\260.md" rename to docs/solutions/Interviews/smallest-k-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 10.09. \346\216\222\345\272\217\347\237\251\351\230\265\346\237\245\346\211\276.md" b/docs/solutions/Interviews/sorted-matrix-search-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 10.09. \346\216\222\345\272\217\347\237\251\351\230\265\346\237\245\346\211\276.md" rename to docs/solutions/Interviews/sorted-matrix-search-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 10.01. \345\220\210\345\271\266\346\216\222\345\272\217\347\232\204\346\225\260\347\273\204.md" b/docs/solutions/Interviews/sorted-merge-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 10.01. \345\220\210\345\271\266\346\216\222\345\272\217\347\232\204\346\225\260\347\273\204.md" rename to docs/solutions/Interviews/sorted-merge-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 04.06. \345\220\216\347\273\247\350\200\205.md" b/docs/solutions/Interviews/successor-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 04.06. \345\220\216\347\273\247\350\200\205.md" rename to docs/solutions/Interviews/successor-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 02.05. \351\223\276\350\241\250\346\261\202\345\222\214.md" b/docs/solutions/Interviews/sum-lists-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 02.05. \351\223\276\350\241\250\346\261\202\345\222\214.md" rename to docs/solutions/Interviews/sum-lists-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 16.02. \345\215\225\350\257\215\351\242\221\347\216\207.md" b/docs/solutions/Interviews/words-frequency-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 16.02. \345\215\225\350\257\215\351\242\221\347\216\207.md" rename to docs/solutions/Interviews/words-frequency-lcci.md diff --git "a/Solutions/\351\235\242\350\257\225\351\242\230 01.08. \351\233\266\347\237\251\351\230\265.md" b/docs/solutions/Interviews/zero-matrix-lcci.md similarity index 100% rename from "Solutions/\351\235\242\350\257\225\351\242\230 01.08. \351\233\266\347\237\251\351\230\265.md" rename to docs/solutions/Interviews/zero-matrix-lcci.md diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 075. \346\225\260\347\273\204\347\233\270\345\257\271\346\216\222\345\272\217.md" b/docs/solutions/LCR/0H97ZC.md similarity index 90% rename from "Solutions/\345\211\221\346\214\207 Offer II 075. \346\225\260\347\273\204\347\233\270\345\257\271\346\216\222\345\272\217.md" rename to docs/solutions/LCR/0H97ZC.md index c7ea2943..ea7e3ce5 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 075. \346\225\260\347\273\204\347\233\270\345\257\271\346\216\222\345\272\217.md" +++ b/docs/solutions/LCR/0H97ZC.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 075. 数组相对排序](https://leetcode.cn/problems/0H97ZC/) +# [LCR 075. 数组的相对排序](https://leetcode.cn/problems/0H97ZC/) - 标签:数组、哈希表、计数排序、排序 - 难度:简单 ## 题目链接 -- [剑指 Offer II 075. 数组相对排序 - 力扣](https://leetcode.cn/problems/0H97ZC/) +- [LCR 075. 数组的相对排序 - 力扣](https://leetcode.cn/problems/0H97ZC/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 087. \345\244\215\345\216\237 IP.md" b/docs/solutions/LCR/0on3uN.md similarity index 94% rename from "Solutions/\345\211\221\346\214\207 Offer II 087. \345\244\215\345\216\237 IP.md" rename to docs/solutions/LCR/0on3uN.md index 8bb162d2..1f76573f 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 087. \345\244\215\345\216\237 IP.md" +++ b/docs/solutions/LCR/0on3uN.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 087. 复原 IP](https://leetcode.cn/problems/0on3uN/) +# [LCR 087. 复原 IP 地址](https://leetcode.cn/problems/0on3uN/) - 标签:字符串、回溯 - 难度:中等 ## 题目链接 -- [剑指 Offer II 087. 复原 IP - 力扣](https://leetcode.cn/problems/0on3uN/) +- [LCR 087. 复原 IP 地址 - 力扣](https://leetcode.cn/problems/0on3uN/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 039. \347\233\264\346\226\271\345\233\276\346\234\200\345\244\247\347\237\251\345\275\242\351\235\242\347\247\257.md" b/docs/solutions/LCR/0ynMMM.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 039. \347\233\264\346\226\271\345\233\276\346\234\200\345\244\247\347\237\251\345\275\242\351\235\242\347\247\257.md" rename to docs/solutions/LCR/0ynMMM.md index f5f87c1b..763a9886 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 039. \347\233\264\346\226\271\345\233\276\346\234\200\345\244\247\347\237\251\345\275\242\351\235\242\347\247\257.md" +++ b/docs/solutions/LCR/0ynMMM.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 039. 直方图最大矩形面积](https://leetcode.cn/problems/0ynMMM/) +# [LCR 039. 柱状图中最大的矩形](https://leetcode.cn/problems/0ynMMM/) - 标签:栈、数组、单调栈 - 难度:困难 ## 题目链接 -- [剑指 Offer II 039. 直方图最大矩形面积 - 力扣](https://leetcode.cn/problems/0ynMMM/) +- [LCR 039. 柱状图中最大的矩形 - 力扣](https://leetcode.cn/problems/0ynMMM/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 007. \346\225\260\347\273\204\344\270\255\345\222\214\344\270\272 0 \347\232\204\344\270\211\344\270\252\346\225\260.md" b/docs/solutions/LCR/1fGaJU.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 007. \346\225\260\347\273\204\344\270\255\345\222\214\344\270\272 0 \347\232\204\344\270\211\344\270\252\346\225\260.md" rename to docs/solutions/LCR/1fGaJU.md index 680d5312..60c3a1b0 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 007. \346\225\260\347\273\204\344\270\255\345\222\214\344\270\272 0 \347\232\204\344\270\211\344\270\252\346\225\260.md" +++ b/docs/solutions/LCR/1fGaJU.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 007. 数组中和为 0 的三个数](https://leetcode.cn/problems/1fGaJU/) +# [LCR 007. 三数之和](https://leetcode.cn/problems/1fGaJU/) - 标签:数组、双指针、排序 - 难度:中等 ## 题目链接 -- [剑指 Offer II 007. 数组中和为 0 的三个数 - 力扣](https://leetcode.cn/problems/1fGaJU/) +- [LCR 007. 三数之和 - 力扣](https://leetcode.cn/problems/1fGaJU/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" b/docs/solutions/LCR/21dk04.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" rename to docs/solutions/LCR/21dk04.md index 002657b8..339b0a0d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 097. \345\255\220\345\272\217\345\210\227\347\232\204\346\225\260\347\233\256.md" +++ b/docs/solutions/LCR/21dk04.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 097. 子序列的数目](https://leetcode.cn/problems/21dk04/) +# [LCR 097. 不同的子序列](https://leetcode.cn/problems/21dk04/) - 标签:字符串、动态规划 - 难度:困难 ## 题目链接 -- [剑指 Offer II 097. 子序列的数目 - 力扣](https://leetcode.cn/problems/21dk04/) +- [LCR 097. 不同的子序列 - 力扣](https://leetcode.cn/problems/21dk04/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 098. \350\267\257\345\276\204\347\232\204\346\225\260\347\233\256.md" b/docs/solutions/LCR/2AoeFn.md similarity index 82% rename from "Solutions/\345\211\221\346\214\207 Offer II 098. \350\267\257\345\276\204\347\232\204\346\225\260\347\233\256.md" rename to docs/solutions/LCR/2AoeFn.md index d86c4f90..3d3d10cd 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 098. \350\267\257\345\276\204\347\232\204\346\225\260\347\233\256.md" +++ b/docs/solutions/LCR/2AoeFn.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 098. 路径的数目](https://leetcode.cn/problems/2AoeFn/) +# [LCR 098. 不同路径](https://leetcode.cn/problems/2AoeFn/) - 标签:数学、动态规划、组合数学 - 难度:中等 ## 题目链接 -- [剑指 Offer II 098. 路径的数目 - 力扣](https://leetcode.cn/problems/2AoeFn/) +- [LCR 098. 不同路径 - 力扣](https://leetcode.cn/problems/2AoeFn/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 008. \345\222\214\345\244\247\344\272\216\347\255\211\344\272\216 target \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/LCR/2VG8Kg.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 008. \345\222\214\345\244\247\344\272\216\347\255\211\344\272\216 target \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/LCR/2VG8Kg.md index 9921d1f3..e0dc88b9 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 008. \345\222\214\345\244\247\344\272\216\347\255\211\344\272\216 target \347\232\204\346\234\200\347\237\255\345\255\220\346\225\260\347\273\204.md" +++ b/docs/solutions/LCR/2VG8Kg.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 008. 和大于等于 target 的最短子数组](https://leetcode.cn/problems/2VG8Kg/) +# [LCR 008. 长度最小的子数组](https://leetcode.cn/problems/2VG8Kg/) - 标签:数组、二分查找、前缀和、滑动窗口 - 难度:中等 ## 题目链接 -- [剑指 Offer II 008. 和大于等于 target 的最短子数组 - 力扣](https://leetcode.cn/problems/2VG8Kg/) +- [LCR 008. 长度最小的子数组 - 力扣](https://leetcode.cn/problems/2VG8Kg/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 107. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\235\347\246\273.md" b/docs/solutions/LCR/2bCMpM.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 107. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\235\347\246\273.md" rename to docs/solutions/LCR/2bCMpM.md index 235b3ff4..8305c5ba 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 107. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\235\347\246\273.md" +++ b/docs/solutions/LCR/2bCMpM.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 107. 矩阵中的距离](https://leetcode.cn/problems/2bCMpM/) +# [LCR 107. 01 矩阵](https://leetcode.cn/problems/2bCMpM/) - 标签:广度优先搜索、数组、动态规划、矩阵 - 难度:中等 ## 题目链接 -- [剑指 Offer II 107. 矩阵中的距离 - 力扣](https://leetcode.cn/problems/2bCMpM/) +- [LCR 107. 01 矩阵 - 力扣](https://leetcode.cn/problems/2bCMpM/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 049. \344\273\216\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\347\232\204\350\267\257\345\276\204\346\225\260\345\255\227\344\271\213\345\222\214.md" b/docs/solutions/LCR/3Etpl5.md similarity index 82% rename from "Solutions/\345\211\221\346\214\207 Offer II 049. \344\273\216\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\347\232\204\350\267\257\345\276\204\346\225\260\345\255\227\344\271\213\345\222\214.md" rename to docs/solutions/LCR/3Etpl5.md index 69169059..42aa525a 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 049. \344\273\216\346\240\271\350\212\202\347\202\271\345\210\260\345\217\266\350\212\202\347\202\271\347\232\204\350\267\257\345\276\204\346\225\260\345\255\227\344\271\213\345\222\214.md" +++ b/docs/solutions/LCR/3Etpl5.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 049. 从根节点到叶节点的路径数字之和](https://leetcode.cn/problems/3Etpl5/) +# [LCR 049. 求根节点到叶节点数字之和](https://leetcode.cn/problems/3Etpl5/) - 标签:树、深度优先搜索、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer II 049. 从根节点到叶节点的路径数字之和 - 力扣](https://leetcode.cn/problems/3Etpl5/) +- [LCR 049. 求根节点到叶节点数字之和 - 力扣](https://leetcode.cn/problems/3Etpl5/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 023. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\351\207\215\345\220\210\350\212\202\347\202\271.md" b/docs/solutions/LCR/3u1WK4.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 023. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\351\207\215\345\220\210\350\212\202\347\202\271.md" rename to docs/solutions/LCR/3u1WK4.md index 16f0c24b..a975b037 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 023. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\351\207\215\345\220\210\350\212\202\347\202\271.md" +++ b/docs/solutions/LCR/3u1WK4.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 023. 两个链表的第一个重合节点](https://leetcode.cn/problems/3u1WK4/) +# [LCR 023. 相交链表](https://leetcode.cn/problems/3u1WK4/) - 标签:哈希表、链表、双指针 - 难度:简单 ## 题目链接 -- [剑指 Offer II 023. 两个链表的第一个重合节点 - 力扣](https://leetcode.cn/problems/3u1WK4/) +- [LCR 023. 相交链表 - 力扣](https://leetcode.cn/problems/3u1WK4/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210.md" b/docs/solutions/LCR/4sjJUc.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210.md" rename to docs/solutions/LCR/4sjJUc.md index cd7d752a..3bfc396d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 082. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\347\273\204\345\220\210.md" +++ b/docs/solutions/LCR/4sjJUc.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 082. 含有重复元素集合的组合](https://leetcode.cn/problems/4sjJUc/) +# [LCR 082. 组合总和 II](https://leetcode.cn/problems/4sjJUc/) - 标签:数组、回溯 - 难度:中等 ## 题目链接 -- [剑指 Offer II 082. 含有重复元素集合的组合 - 力扣](https://leetcode.cn/problems/4sjJUc/) +- [LCR 082. 组合总和 II - 力扣](https://leetcode.cn/problems/4sjJUc/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 029. \346\216\222\345\272\217\347\232\204\345\276\252\347\216\257\351\223\276\350\241\250.md" b/docs/solutions/LCR/4ueAj6.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 029. \346\216\222\345\272\217\347\232\204\345\276\252\347\216\257\351\223\276\350\241\250.md" rename to docs/solutions/LCR/4ueAj6.md index 30407c41..af6458b9 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 029. \346\216\222\345\272\217\347\232\204\345\276\252\347\216\257\351\223\276\350\241\250.md" +++ b/docs/solutions/LCR/4ueAj6.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 029. 排序的循环链表](https://leetcode.cn/problems/4ueAj6/) +# [LCR 029. 循环有序列表的插入](https://leetcode.cn/problems/4ueAj6/) - 标签:链表 - 难度:中等 ## 题目链接 -- [剑指 Offer II 029. 排序的循环链表 - 力扣](https://leetcode.cn/problems/4ueAj6/) +- [LCR 029. 循环有序列表的插入 - 力扣](https://leetcode.cn/problems/4ueAj6/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 035. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" b/docs/solutions/LCR/569nqc.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 035. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" rename to docs/solutions/LCR/569nqc.md index affdee56..f51af70e 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 035. \346\234\200\345\260\217\346\227\266\351\227\264\345\267\256.md" +++ b/docs/solutions/LCR/569nqc.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 035. 最小时间差](https://leetcode.cn/problems/569nqc/) +# [LCR 035. 最小时间差](https://leetcode.cn/problems/569nqc/) - 标签:数组、数学、字符串、排序 - 难度:中等 ## 题目链接 -- [剑指 Offer II 035. 最小时间差 - 力扣](https://leetcode.cn/problems/569nqc/) +- [LCR 035. 最小时间差 - 力扣](https://leetcode.cn/problems/569nqc/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 050. \345\220\221\344\270\213\347\232\204\350\267\257\345\276\204\350\212\202\347\202\271\344\271\213\345\222\214.md" b/docs/solutions/LCR/6eUYwP.md similarity index 82% rename from "Solutions/\345\211\221\346\214\207 Offer II 050. \345\220\221\344\270\213\347\232\204\350\267\257\345\276\204\350\212\202\347\202\271\344\271\213\345\222\214.md" rename to docs/solutions/LCR/6eUYwP.md index a2d44da9..8195bd14 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 050. \345\220\221\344\270\213\347\232\204\350\267\257\345\276\204\350\212\202\347\202\271\344\271\213\345\222\214.md" +++ b/docs/solutions/LCR/6eUYwP.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 050. 向下的路径节点之和](https://leetcode.cn/problems/6eUYwP/) +# [LCR 050. 路径总和 III](https://leetcode.cn/problems/6eUYwP/) - 标签:树、深度优先搜索、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer II 050. 向下的路径节点之和 - 力扣](https://leetcode.cn/problems/6eUYwP/) +- [LCR 050. 路径总和 III - 力扣](https://leetcode.cn/problems/6eUYwP/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271.md" b/docs/solutions/LCR/7LpjUW.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271.md" rename to docs/solutions/LCR/7LpjUW.md index bab8778f..db34f9bb 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 118. \345\244\232\344\275\231\347\232\204\350\276\271.md" +++ b/docs/solutions/LCR/7LpjUW.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 118. 多余的边](https://leetcode.cn/problems/7LpjUW/) +# [LCR 118. 冗余连接](https://leetcode.cn/problems/7LpjUW/) - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 ## 题目链接 -- [剑指 Offer II 118. 多余的边 - 力扣](https://leetcode.cn/problems/7LpjUW/) +- [LCR 118. 冗余连接 - 力扣](https://leetcode.cn/problems/7LpjUW/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 077. \351\223\276\350\241\250\346\216\222\345\272\217.md" b/docs/solutions/LCR/7WHec2.md similarity index 90% rename from "Solutions/\345\211\221\346\214\207 Offer II 077. \351\223\276\350\241\250\346\216\222\345\272\217.md" rename to docs/solutions/LCR/7WHec2.md index d6cfd53f..90f421bf 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 077. \351\223\276\350\241\250\346\216\222\345\272\217.md" +++ b/docs/solutions/LCR/7WHec2.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 077. 链表排序](https://leetcode.cn/problems/7WHec2/) +# [LCR 077. 排序链表](https://leetcode.cn/problems/7WHec2/) - 标签:链表、双指针、分治、排序、归并排序 - 难度:中等 ## 题目链接 -- [剑指 Offer II 077. 链表排序 - 力扣](https://leetcode.cn/problems/7WHec2/) +- [LCR 077. 排序链表 - 力扣](https://leetcode.cn/problems/7WHec2/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 057. \345\200\274\345\222\214\344\270\213\346\240\207\344\271\213\345\267\256\351\203\275\345\234\250\347\273\231\345\256\232\347\232\204\350\214\203\345\233\264\345\206\205.md" b/docs/solutions/LCR/7WqeDu.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 057. \345\200\274\345\222\214\344\270\213\346\240\207\344\271\213\345\267\256\351\203\275\345\234\250\347\273\231\345\256\232\347\232\204\350\214\203\345\233\264\345\206\205.md" rename to docs/solutions/LCR/7WqeDu.md index 3d63e036..2a490326 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 057. \345\200\274\345\222\214\344\270\213\346\240\207\344\271\213\345\267\256\351\203\275\345\234\250\347\273\231\345\256\232\347\232\204\350\214\203\345\233\264\345\206\205.md" +++ b/docs/solutions/LCR/7WqeDu.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 057. 值和下标之差都在给定的范围内](https://leetcode.cn/problems/7WqeDu/) +# [LCR 057. 存在重复元素 III](https://leetcode.cn/problems/7WqeDu/) - 标签:数组、桶排序、有序集合、排序、滑动窗口 - 难度:中等 ## 题目链接 -- [剑指 Offer II 057. 值和下标之差都在给定的范围内 - 力扣](https://leetcode.cn/problems/7WqeDu/) +- [LCR 057. 存在重复元素 III - 力扣](https://leetcode.cn/problems/7WqeDu/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 084. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" b/docs/solutions/LCR/7p8L0Z.md similarity index 66% rename from "Solutions/\345\211\221\346\214\207 Offer II 084. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" rename to docs/solutions/LCR/7p8L0Z.md index dc7ade0f..d90c056e 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 084. \345\220\253\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" +++ b/docs/solutions/LCR/7p8L0Z.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 084. 含有重复元素集合的全排列](https://leetcode.cn/problems/7p8L0Z/) +# [LCR 084. 全排列 II](https://leetcode.cn/problems/7p8L0Z/) - 标签:数组、回溯 - 难度:中等 ## 题目链接 -- [剑指 Offer II 084. 含有重复元素集合的全排列 - 力扣](https://leetcode.cn/problems/7p8L0Z/) +- [LCR 084. 全排列 II - 力扣](https://leetcode.cn/problems/7p8L0Z/) ## 题目大意 @@ -15,7 +15,7 @@ ## 解题思路 -这道题跟「[剑指 Offer II 083. 没有重复元素集合的全排列](https://leetcode.cn/problems/VvJkup/)」不一样的地方在于增加了序列中的元素可重复这一条件。这就涉及到了去重。先对 `nums` 进行排序,然后使用 visited 数组标记该元素在当前排列中是否被访问过。若未被访问过则将其加入排列中,并在访问后将该元素变为未访问状态。 +这道题跟「[LCR 083. 全排列](https://leetcode.cn/problems/VvJkup/)」不一样的地方在于增加了序列中的元素可重复这一条件。这就涉及到了去重。先对 `nums` 进行排序,然后使用 visited 数组标记该元素在当前排列中是否被访问过。若未被访问过则将其加入排列中,并在访问后将该元素变为未访问状态。 然后再递归遍历下一层元素之前,增加一句语句进行判重:`if i > 0 and nums[i] == nums[i - 1] and not visited[i - 1]: continue`。 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 036. \345\220\216\347\274\200\350\241\250\350\276\276\345\274\217.md" b/docs/solutions/LCR/8Zf90G.md similarity index 85% rename from "Solutions/\345\211\221\346\214\207 Offer II 036. \345\220\216\347\274\200\350\241\250\350\276\276\345\274\217.md" rename to docs/solutions/LCR/8Zf90G.md index e73d29a9..3d983af7 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 036. \345\220\216\347\274\200\350\241\250\350\276\276\345\274\217.md" +++ b/docs/solutions/LCR/8Zf90G.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 036. 后缀表达式](https://leetcode.cn/problems/8Zf90G/) +# [LCR 036. 逆波兰表达式求值](https://leetcode.cn/problems/8Zf90G/) - 标签:栈、数组、数学 - 难度:中等 ## 题目链接 -- [剑指 Offer II 036. 后缀表达式 - 力扣](https://leetcode.cn/problems/8Zf90G/) +- [LCR 036. 逆波兰表达式求值 - 力扣](https://leetcode.cn/problems/8Zf90G/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 011. 0 \345\222\214 1 \344\270\252\346\225\260\347\233\270\345\220\214\347\232\204\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/LCR/A1NYOS.md similarity index 94% rename from "Solutions/\345\211\221\346\214\207 Offer II 011. 0 \345\222\214 1 \344\270\252\346\225\260\347\233\270\345\220\214\347\232\204\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/LCR/A1NYOS.md index 2c73929b..5e9cb183 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 011. 0 \345\222\214 1 \344\270\252\346\225\260\347\233\270\345\220\214\347\232\204\345\255\220\346\225\260\347\273\204.md" +++ b/docs/solutions/LCR/A1NYOS.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 011. 0 和 1 个数相同的子数组](https://leetcode.cn/problems/A1NYOS/) +# [LCR 011. 连续数组](https://leetcode.cn/problems/A1NYOS/) - 标签:数组、哈希表、前缀和 - 难度:中等 ## 题目链接 -- [剑指 Offer II 011. 0 和 1 个数相同的子数组 - 力扣](https://leetcode.cn/problems/A1NYOS/) +- [LCR 011. 连续数组 - 力扣](https://leetcode.cn/problems/A1NYOS/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256.md" b/docs/solutions/LCR/D0F0SV.md similarity index 86% rename from "Solutions/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256.md" rename to docs/solutions/LCR/D0F0SV.md index eef9162a..9f4bbc36 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 104. \346\216\222\345\210\227\347\232\204\346\225\260\347\233\256.md" +++ b/docs/solutions/LCR/D0F0SV.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 104. 排列的数目](https://leetcode.cn/problems/D0F0SV/) +# [LCR 104. 组合总和 Ⅳ](https://leetcode.cn/problems/D0F0SV/) - 标签:数组、动态规划 - 难度:中等 ## 题目链接 -- [剑指 Offer II 104. 排列的数目 - 力扣](https://leetcode.cn/problems/D0F0SV/) +- [LCR 104. 组合总和 Ⅳ - 力扣](https://leetcode.cn/problems/D0F0SV/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 030. \346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\351\232\217\346\234\272\350\256\277\351\227\256\351\203\275\346\230\257 O(1) \347\232\204\345\256\271\345\231\250.md" b/docs/solutions/LCR/FortPu.md similarity index 90% rename from "Solutions/\345\211\221\346\214\207 Offer II 030. \346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\351\232\217\346\234\272\350\256\277\351\227\256\351\203\275\346\230\257 O(1) \347\232\204\345\256\271\345\231\250.md" rename to docs/solutions/LCR/FortPu.md index 18c33c2d..9bc4e8bd 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 030. \346\217\222\345\205\245\343\200\201\345\210\240\351\231\244\345\222\214\351\232\217\346\234\272\350\256\277\351\227\256\351\203\275\346\230\257 O(1) \347\232\204\345\256\271\345\231\250.md" +++ b/docs/solutions/LCR/FortPu.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 030. 插入、删除和随机访问都是 O(1) 的容器](https://leetcode.cn/problems/FortPu/) +# [LCR 030. O(1) 时间插入、删除和获取随机元素](https://leetcode.cn/problems/FortPu/) - 标签:设计、数组、哈希表、数学、随机化 - 难度:中等 ## 题目链接 -- [剑指 Offer II 030. 插入、删除和随机访问都是 O(1) 的容器 - 力扣](https://leetcode.cn/problems/FortPu/) +- [LCR 030. O(1) 时间插入、删除和获取随机元素 - 力扣](https://leetcode.cn/problems/FortPu/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 089. \346\210\277\345\261\213\345\201\267\347\233\227.md" b/docs/solutions/LCR/Gu0c2T.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 089. \346\210\277\345\261\213\345\201\267\347\233\227.md" rename to docs/solutions/LCR/Gu0c2T.md index 3fd0fdd2..834a6c3c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 089. \346\210\277\345\261\213\345\201\267\347\233\227.md" +++ b/docs/solutions/LCR/Gu0c2T.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 089. 房屋偷盗](https://leetcode.cn/problems/Gu0c2T/) +# [LCR 089. 打家劫舍](https://leetcode.cn/problems/Gu0c2T/) - 标签:数组、动态规划 - 难度:中等 ## 题目链接 -- [剑指 Offer II 089. 房屋偷盗 - 力扣](https://leetcode.cn/problems/Gu0c2T/) +- [LCR 089. 打家劫舍 - 力扣](https://leetcode.cn/problems/Gu0c2T/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 088. \347\210\254\346\245\274\346\242\257\347\232\204\346\234\200\345\260\221\346\210\220\346\234\254.md" b/docs/solutions/LCR/GzCJIP.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 088. \347\210\254\346\245\274\346\242\257\347\232\204\346\234\200\345\260\221\346\210\220\346\234\254.md" rename to docs/solutions/LCR/GzCJIP.md index eb2de0dd..d577b152 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 088. \347\210\254\346\245\274\346\242\257\347\232\204\346\234\200\345\260\221\346\210\220\346\234\254.md" +++ b/docs/solutions/LCR/GzCJIP.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 088. 爬楼梯的最少成本](https://leetcode.cn/problems/GzCJIP/) +# [LCR 088. 使用最小花费爬楼梯](https://leetcode.cn/problems/GzCJIP/) - 标签:数组、动态规划 - 难度:简单 ## 题目链接 -- [剑指 Offer II 088. 爬楼梯的最少成本 - 力扣](https://leetcode.cn/problems/GzCJIP/) +- [LCR 088. 使用最小花费爬楼梯 - 力扣](https://leetcode.cn/problems/GzCJIP/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 042. \346\234\200\350\277\221\350\257\267\346\261\202\346\254\241\346\225\260.md" b/docs/solutions/LCR/H8086Q.md similarity index 85% rename from "Solutions/\345\211\221\346\214\207 Offer II 042. \346\234\200\350\277\221\350\257\267\346\261\202\346\254\241\346\225\260.md" rename to docs/solutions/LCR/H8086Q.md index 0f6219bd..f8ba66de 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 042. \346\234\200\350\277\221\350\257\267\346\261\202\346\254\241\346\225\260.md" +++ b/docs/solutions/LCR/H8086Q.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 042. 最近请求次数](https://leetcode.cn/problems/H8086Q/) +# [LCR 042. 最近的请求次数](https://leetcode.cn/problems/H8086Q/) - 标签:设计、队列、数据流 - 难度:简单 ## 题目链接 -- [剑指 Offer II 042. 最近请求次数 - 力扣](https://leetcode.cn/problems/H8086Q/) +- [LCR 042. 最近的请求次数 - 力扣](https://leetcode.cn/problems/H8086Q/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267.md" b/docs/solutions/LCR/IDBivT.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267.md" rename to docs/solutions/LCR/IDBivT.md index d5efe559..df0a6d8f 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 085. \347\224\237\346\210\220\345\214\271\351\205\215\347\232\204\346\213\254\345\217\267.md" +++ b/docs/solutions/LCR/IDBivT.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 085. 生成匹配的括号](https://leetcode.cn/problems/IDBivT/) +# [LCR 085. 括号生成](https://leetcode.cn/problems/IDBivT/) - 标签:字符串、动态规划、回溯 - 难度:中等 ## 题目链接 -- [剑指 Offer II 085. 生成匹配的括号 - 力扣](https://leetcode.cn/problems/IDBivT/) +- [LCR 085. 括号生成 - 力扣](https://leetcode.cn/problems/IDBivT/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225.md" b/docs/solutions/LCR/JFETK5.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225.md" rename to docs/solutions/LCR/JFETK5.md index 99ed6ae5..045fb5db 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 002. \344\272\214\350\277\233\345\210\266\345\212\240\346\263\225.md" +++ b/docs/solutions/LCR/JFETK5.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 002. 二进制加法](https://leetcode.cn/problems/JFETK5/) +# [LCR 002. 二进制求和](https://leetcode.cn/problems/JFETK5/) - 标签:位运算、数学、字符串、模拟 - 难度:简单 ## 题目链接 -- [剑指 Offer II 002. 二进制加法 - 力扣](https://leetcode.cn/problems/JFETK5/) +- [LCR 002. 二进制求和 - 力扣](https://leetcode.cn/problems/JFETK5/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 026. \351\207\215\346\216\222\351\223\276\350\241\250.md" b/docs/solutions/LCR/LGjMqU.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 026. \351\207\215\346\216\222\351\223\276\350\241\250.md" rename to docs/solutions/LCR/LGjMqU.md index 7cbf286e..dd50e411 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 026. \351\207\215\346\216\222\351\223\276\350\241\250.md" +++ b/docs/solutions/LCR/LGjMqU.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 026. 重排链表](https://leetcode.cn/problems/LGjMqU/) +# [LCR 026. 重排链表](https://leetcode.cn/problems/LGjMqU/) - 标签:栈、递归、链表、双指针 - 难度:中等 ## 题目链接 -- [剑指 Offer II 026. 重排链表 - 力扣](https://leetcode.cn/problems/LGjMqU/) +- [LCR 026. 重排链表 - 力扣](https://leetcode.cn/problems/LGjMqU/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 045. \344\272\214\345\217\211\346\240\221\346\234\200\345\272\225\345\261\202\346\234\200\345\267\246\350\276\271\347\232\204\345\200\274.md" b/docs/solutions/LCR/LwUNpT.md similarity index 85% rename from "Solutions/\345\211\221\346\214\207 Offer II 045. \344\272\214\345\217\211\346\240\221\346\234\200\345\272\225\345\261\202\346\234\200\345\267\246\350\276\271\347\232\204\345\200\274.md" rename to docs/solutions/LCR/LwUNpT.md index 0e0f9fac..8028fbd6 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 045. \344\272\214\345\217\211\346\240\221\346\234\200\345\272\225\345\261\202\346\234\200\345\267\246\350\276\271\347\232\204\345\200\274.md" +++ b/docs/solutions/LCR/LwUNpT.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 045. 二叉树最底层最左边的值](https://leetcode.cn/problems/LwUNpT/) +# [LCR 045. 找树左下角的值](https://leetcode.cn/problems/LwUNpT/) - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer II 045. 二叉树最底层最左边的值 - 力扣](https://leetcode.cn/problems/LwUNpT/) +- [LCR 045. 找树左下角的值 - 力扣](https://leetcode.cn/problems/LwUNpT/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 017. \345\220\253\346\234\211\346\211\200\346\234\211\345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/LCR/M1oyTv.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 017. \345\220\253\346\234\211\346\211\200\346\234\211\345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/LCR/M1oyTv.md index 659ccc5a..7b2208bb 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 017. \345\220\253\346\234\211\346\211\200\346\234\211\345\255\227\347\254\246\347\232\204\346\234\200\347\237\255\345\255\227\347\254\246\344\270\262.md" +++ b/docs/solutions/LCR/M1oyTv.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 017. 含有所有字符的最短字符串](https://leetcode.cn/problems/M1oyTv/) +# [LCR 017. 最小覆盖子串](https://leetcode.cn/problems/M1oyTv/) - 标签:哈希表、字符串、滑动窗口 - 难度:困难 ## 题目链接 -- [剑指 Offer II 017. 含有所有字符的最短字符串 - 力扣](https://leetcode.cn/problems/M1oyTv/) +- [LCR 017. 最小覆盖子串 - 力扣](https://leetcode.cn/problems/M1oyTv/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 086. \345\210\206\345\211\262\345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/LCR/M99OJA.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 086. \345\210\206\345\211\262\345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/LCR/M99OJA.md index 170b41f2..f6bc7863 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 086. \345\210\206\345\211\262\345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262.md" +++ b/docs/solutions/LCR/M99OJA.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 086. 分割回文子字符串](https://leetcode.cn/problems/M99OJA/) +# [LCR 086. 分割回文串](https://leetcode.cn/problems/M99OJA/) - 标签:深度优先搜索、广度优先搜索、图、哈希表 - 难度:中等 ## 题目链接 -- [剑指 Offer II 086. 分割回文子字符串 - 力扣](https://leetcode.cn/problems/M99OJA/) +- [LCR 086. 分割回文串 - 力扣](https://leetcode.cn/problems/M99OJA/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 068. \346\237\245\346\211\276\346\217\222\345\205\245\344\275\215\347\275\256.md" b/docs/solutions/LCR/N6YdxV.md similarity index 87% rename from "Solutions/\345\211\221\346\214\207 Offer II 068. \346\237\245\346\211\276\346\217\222\345\205\245\344\275\215\347\275\256.md" rename to docs/solutions/LCR/N6YdxV.md index 1b0eb31d..bde08aea 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 068. \346\237\245\346\211\276\346\217\222\345\205\245\344\275\215\347\275\256.md" +++ b/docs/solutions/LCR/N6YdxV.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 068. 查找插入位置](https://leetcode.cn/problems/N6YdxV/) +# [LCR 068. 搜索插入位置](https://leetcode.cn/problems/N6YdxV/) - 标签:数组、二分查找 - 难度:简单 ## 题目链接 -- [剑指 Offer II 068. 查找插入位置 - 力扣](https://leetcode.cn/problems/N6YdxV/) +- [LCR 068. 搜索插入位置 - 力扣](https://leetcode.cn/problems/N6YdxV/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 101. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" b/docs/solutions/LCR/NUPfPr.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 101. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" rename to docs/solutions/LCR/NUPfPr.md index 5f28b479..d6ea4a4d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 101. \345\210\206\345\211\262\347\255\211\345\222\214\345\255\220\351\233\206.md" +++ b/docs/solutions/LCR/NUPfPr.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 101. 分割等和子集](https://leetcode.cn/problems/NUPfPr/) +# [LCR 101. 分割等和子集](https://leetcode.cn/problems/NUPfPr/) - 标签:数学、字符串、模拟 - 难度:简单 ## 题目链接 -- [剑指 Offer II 101. 分割等和子集 - 力扣](https://leetcode.cn/problems/NUPfPr/) +- [LCR 101. 分割等和子集 - 力扣](https://leetcode.cn/problems/NUPfPr/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" b/docs/solutions/LCR/NYBBNL.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" rename to docs/solutions/LCR/NYBBNL.md index 394ed157..7feddd0c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 052. \345\261\225\345\271\263\344\272\214\345\217\211\346\220\234\347\264\242\346\240\221.md" +++ b/docs/solutions/LCR/NYBBNL.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 052. 展平二叉搜索树](https://leetcode.cn/problems/NYBBNL/) +# [LCR 052. 递增顺序搜索树](https://leetcode.cn/problems/NYBBNL/) - 标签:栈、树、深度优先搜索、二叉搜索树、二叉树 - 难度:简单 ## 题目链接 -- [剑指 Offer II 052. 展平二叉搜索树 - 力扣](https://leetcode.cn/problems/NYBBNL/) +- [LCR 052. 递增顺序搜索树 - 力扣](https://leetcode.cn/problems/NYBBNL/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 043. \345\276\200\345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\267\273\345\212\240\350\212\202\347\202\271.md" b/docs/solutions/LCR/NaqhDT.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 043. \345\276\200\345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\267\273\345\212\240\350\212\202\347\202\271.md" rename to docs/solutions/LCR/NaqhDT.md index e4c35c20..cca716d5 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 043. \345\276\200\345\256\214\345\205\250\344\272\214\345\217\211\346\240\221\346\267\273\345\212\240\350\212\202\347\202\271.md" +++ b/docs/solutions/LCR/NaqhDT.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 043. 往完全二叉树添加节点](https://leetcode.cn/problems/NaqhDT/) +# [LCR 043. 完全二叉树插入器](https://leetcode.cn/problems/NaqhDT/) - 标签:树、广度优先搜索、设计、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer II 043. 往完全二叉树添加节点 - 力扣](https://leetcode.cn/problems/NaqhDT/) +- [LCR 043. 完全二叉树插入器 - 力扣](https://leetcode.cn/problems/NaqhDT/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 013. \344\272\214\347\273\264\345\255\220\347\237\251\351\230\265\347\232\204\345\222\214.md" b/docs/solutions/LCR/O4NDxx.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 013. \344\272\214\347\273\264\345\255\220\347\237\251\351\230\265\347\232\204\345\222\214.md" rename to docs/solutions/LCR/O4NDxx.md index 8264d767..da9c6857 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 013. \344\272\214\347\273\264\345\255\220\347\237\251\351\230\265\347\232\204\345\222\214.md" +++ b/docs/solutions/LCR/O4NDxx.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 013. 二维子矩阵的和](https://leetcode.cn/problems/O4NDxx/) +# [LCR 013. 二维区域和检索 - 矩阵不可变](https://leetcode.cn/problems/O4NDxx/) - 标签:设计、数组、矩阵、前缀和 - 难度:中等 ## 题目链接 -- [剑指 Offer II 013. 二维子矩阵的和 - 力扣](https://leetcode.cn/problems/O4NDxx/) +- [LCR 013. 二维区域和检索 - 矩阵不可变 - 力扣](https://leetcode.cn/problems/O4NDxx/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 031. \346\234\200\350\277\221\346\234\200\345\260\221\344\275\277\347\224\250\347\274\223\345\255\230.md" b/docs/solutions/LCR/OrIXps.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 031. \346\234\200\350\277\221\346\234\200\345\260\221\344\275\277\347\224\250\347\274\223\345\255\230.md" rename to docs/solutions/LCR/OrIXps.md index 11f701ef..5d4cb029 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 031. \346\234\200\350\277\221\346\234\200\345\260\221\344\275\277\347\224\250\347\274\223\345\255\230.md" +++ b/docs/solutions/LCR/OrIXps.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 031. 最近最少使用缓存](https://leetcode.cn/problems/OrIXps/) +# [LCR 031. LRU 缓存](https://leetcode.cn/problems/OrIXps/) - 标签:设计、哈希表、链表、双向链表 - 难度:中等 ## 题目链接 -- [剑指 Offer II 031. 最近最少使用缓存 - 力扣](https://leetcode.cn/problems/OrIXps/) +- [LCR 031. LRU 缓存 - 力扣](https://leetcode.cn/problems/OrIXps/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 053. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" b/docs/solutions/LCR/P5rCT8.md similarity index 85% rename from "Solutions/\345\211\221\346\214\207 Offer II 053. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" rename to docs/solutions/LCR/P5rCT8.md index 27ee7ac4..8f4e937c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 053. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\347\232\204\344\270\255\345\272\217\345\220\216\347\273\247.md" +++ b/docs/solutions/LCR/P5rCT8.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 053. 二叉搜索树中的中序后继](https://leetcode.cn/problems/P5rCT8/) +# [LCR 053. 二叉搜索树中的中序后继](https://leetcode.cn/problems/P5rCT8/) - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer II 053. 二叉搜索树中的中序后继 - 力扣](https://leetcode.cn/problems/P5rCT8/) +- [LCR 053. 二叉搜索树中的中序后继 - 力扣](https://leetcode.cn/problems/P5rCT8/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 090. \347\216\257\345\275\242\346\210\277\345\261\213\345\201\267\347\233\227.md" b/docs/solutions/LCR/PzWKhm.md similarity index 80% rename from "Solutions/\345\211\221\346\214\207 Offer II 090. \347\216\257\345\275\242\346\210\277\345\261\213\345\201\267\347\233\227.md" rename to docs/solutions/LCR/PzWKhm.md index 33c7667f..73a4db2d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 090. \347\216\257\345\275\242\346\210\277\345\261\213\345\201\267\347\233\227.md" +++ b/docs/solutions/LCR/PzWKhm.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 090. 环形房屋偷盗](https://leetcode.cn/problems/PzWKhm/) +# [LCR 090. 打家劫舍 II](https://leetcode.cn/problems/PzWKhm/) - 标签:数组、动态规划 - 难度:中等 ## 题目链接 -- [剑指 Offer II 090. 环形房屋偷盗 - 力扣](https://leetcode.cn/problems/PzWKhm/) +- [LCR 090. 打家劫舍 II - 力扣](https://leetcode.cn/problems/PzWKhm/) ## 题目大意 @@ -15,7 +15,7 @@ ## 解题思路 -「[剑指 Offer II 089. 房屋偷盗](https://leetcode.cn/problems/Gu0c2T/)」的升级版。可以用动态规划来解决问题,关键点在于找到状态转移方程。 +「[LCR 089. 打家劫舍](https://leetcode.cn/problems/Gu0c2T/)」的升级版。可以用动态规划来解决问题,关键点在于找到状态转移方程。 先来考虑最简单的情况。 @@ -23,9 +23,9 @@ 两间屋子以下,最多只能偷窃一间房屋,则不用考虑首尾相连的情况。如果三个屋子以上,偷窃了第一间房屋,则不能偷窃最后一间房屋。同样偷窃了最后一间房屋则不能偷窃第一间房屋。 -假设总共房屋数量为 N,这种情况可以转换为分别求解 $[0, N - 2]$ 和 $[1, N - 1]$ 范围下首尾不相连的房屋所能偷窃的最高金额,这就变成了「[剑指 Offer II 089. 房屋偷盗](https://leetcode.cn/problems/Gu0c2T/)」的求解问题。 +假设总共房屋数量为 N,这种情况可以转换为分别求解 $[0, N - 2]$ 和 $[1, N - 1]$ 范围下首尾不相连的房屋所能偷窃的最高金额,这就变成了「[LCR 089. 打家劫舍](https://leetcode.cn/problems/Gu0c2T/)」的求解问题。 -「[剑指 Offer II 089. 房屋偷盗](https://leetcode.cn/problems/Gu0c2T/)」求解思路如下: +「[LCR 089. 打家劫舍](https://leetcode.cn/problems/Gu0c2T/)」求解思路如下: 如果房屋大于两间,则偷窃第 `i` 间房屋的时候,就有两种状态: diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 093. \346\234\200\351\225\277\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" b/docs/solutions/LCR/Q91FMA.md similarity index 96% rename from "Solutions/\345\211\221\346\214\207 Offer II 093. \346\234\200\351\225\277\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" rename to docs/solutions/LCR/Q91FMA.md index c4b8df27..8eb48dfd 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 093. \346\234\200\351\225\277\346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" +++ b/docs/solutions/LCR/Q91FMA.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 093. 最长斐波那契数列](https://leetcode.cn/problems/Q91FMA/) +# [LCR 093. 最长的斐波那契子序列的长度](https://leetcode.cn/problems/Q91FMA/) - 标签:数组、哈希表、动态规划 - 难度:中等 ## 题目链接 -- [剑指 Offer II 093. 最长斐波那契数列 - 力扣](https://leetcode.cn/problems/Q91FMA/) +- [LCR 093. 最长的斐波那契子序列的长度 - 力扣](https://leetcode.cn/problems/Q91FMA/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 113. \350\257\276\347\250\213\351\241\272\345\272\217.md" b/docs/solutions/LCR/QA2IGt.md similarity index 93% rename from "Solutions/\345\211\221\346\214\207 Offer II 113. \350\257\276\347\250\213\351\241\272\345\272\217.md" rename to docs/solutions/LCR/QA2IGt.md index 2f4b7268..58c9b720 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 113. \350\257\276\347\250\213\351\241\272\345\272\217.md" +++ b/docs/solutions/LCR/QA2IGt.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 113. 课程顺序](https://leetcode.cn/problems/QA2IGt/) +# [LCR 113. 课程表 II](https://leetcode.cn/problems/QA2IGt/) - 标签:深度优先搜索、广度优先搜索、图、拓扑排序 - 难度:中等 ## 题目链接 -- [剑指 Offer II 113. 课程顺序 - 力扣](https://leetcode.cn/problems/QA2IGt/) +- [LCR 113. 课程表 II - 力扣](https://leetcode.cn/problems/QA2IGt/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 062. \345\256\236\347\216\260\345\211\215\347\274\200\346\240\221.md" b/docs/solutions/LCR/QC3q1f.md similarity index 94% rename from "Solutions/\345\211\221\346\214\207 Offer II 062. \345\256\236\347\216\260\345\211\215\347\274\200\346\240\221.md" rename to docs/solutions/LCR/QC3q1f.md index 15699a5f..ea15ee2f 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 062. \345\256\236\347\216\260\345\211\215\347\274\200\346\240\221.md" +++ b/docs/solutions/LCR/QC3q1f.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 062. 实现前缀树](https://leetcode.cn/problems/QC3q1f/) +# [LCR 062. 实现 Trie (前缀树)](https://leetcode.cn/problems/QC3q1f/) - 标签:设计、字典树、哈希表、字符串 - 难度:中等 ## 题目链接 -- [剑指 Offer II 062. 实现前缀树 - 力扣](https://leetcode.cn/problems/QC3q1f/) +- [LCR 062. 实现 Trie (前缀树) - 力扣](https://leetcode.cn/problems/QC3q1f/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 010. \345\222\214\344\270\272 k \347\232\204\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/LCR/QTMn0o.md similarity index 93% rename from "Solutions/\345\211\221\346\214\207 Offer II 010. \345\222\214\344\270\272 k \347\232\204\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/LCR/QTMn0o.md index c2a438d2..797623c0 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 010. \345\222\214\344\270\272 k \347\232\204\345\255\220\346\225\260\347\273\204.md" +++ b/docs/solutions/LCR/QTMn0o.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 010. 和为 k 的子数组](https://leetcode.cn/problems/QTMn0o/) +# [LCR 010. 和为 K 的子数组](https://leetcode.cn/problems/QTMn0o/) - 标签:数组、哈希表、前缀和 - 难度:中等 ## 题目链接 -- [剑指 Offer II 010. 和为 k 的子数组 - 力扣](https://leetcode.cn/problems/QTMn0o/) +- [LCR 010. 和为 K 的子数组 - 力扣](https://leetcode.cn/problems/QTMn0o/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 028. \345\261\225\345\271\263\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" b/docs/solutions/LCR/Qv1Da2.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 028. \345\261\225\345\271\263\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" rename to docs/solutions/LCR/Qv1Da2.md index c16124b8..50562f52 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 028. \345\261\225\345\271\263\345\244\232\347\272\247\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ b/docs/solutions/LCR/Qv1Da2.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 028. 展平多级双向链表](https://leetcode.cn/problems/Qv1Da2/) +# [LCR 028. 扁平化多级双向链表](https://leetcode.cn/problems/Qv1Da2/) - 标签:深度优先搜索、链表、双向链表 - 难度:中等 ## 题目链接 -- [剑指 Offer II 028. 展平多级双向链表 - 力扣](https://leetcode.cn/problems/Qv1Da2/) +- [LCR 028. 扁平化多级双向链表 - 力扣](https://leetcode.cn/problems/Qv1Da2/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 019. \346\234\200\345\244\232\345\210\240\351\231\244\344\270\200\344\270\252\345\255\227\347\254\246\345\276\227\345\210\260\345\233\236\346\226\207.md" b/docs/solutions/LCR/RQku0D.md similarity index 86% rename from "Solutions/\345\211\221\346\214\207 Offer II 019. \346\234\200\345\244\232\345\210\240\351\231\244\344\270\200\344\270\252\345\255\227\347\254\246\345\276\227\345\210\260\345\233\236\346\226\207.md" rename to docs/solutions/LCR/RQku0D.md index 7f39bd99..75476cb6 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 019. \346\234\200\345\244\232\345\210\240\351\231\244\344\270\200\344\270\252\345\255\227\347\254\246\345\276\227\345\210\260\345\233\236\346\226\207.md" +++ b/docs/solutions/LCR/RQku0D.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 019. 最多删除一个字符得到回文](https://leetcode.cn/problems/RQku0D/) +# [LCR 019. 验证回文串 II](https://leetcode.cn/problems/RQku0D/) - 标签:贪心、双指针、字符串 - 难度:简单 ## 题目链接 -- [剑指 Offer II 019. 最多删除一个字符得到回文 - 力扣](https://leetcode.cn/problems/RQku0D/) +- [LCR 019. 验证回文串 II - 力扣](https://leetcode.cn/problems/RQku0D/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271.md" b/docs/solutions/LCR/SLwz0R.md similarity index 87% rename from "Solutions/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271.md" rename to docs/solutions/LCR/SLwz0R.md index 871bd104..b5da545e 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 021. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\345\200\222\346\225\260\347\254\254 n \344\270\252\347\273\223\347\202\271.md" +++ b/docs/solutions/LCR/SLwz0R.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 021. 删除链表的倒数第 n 个结点](https://leetcode.cn/problems/SLwz0R/) +# [LCR 021. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/SLwz0R/) - 标签:链表、双指针 - 难度:中等 ## 题目链接 -- [剑指 Offer II 021. 删除链表的倒数第 n 个结点 - 力扣](https://leetcode.cn/problems/SLwz0R/) +- [LCR 021. 删除链表的倒数第 N 个结点 - 力扣](https://leetcode.cn/problems/SLwz0R/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264.md" b/docs/solutions/LCR/SsGoHC.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264.md" rename to docs/solutions/LCR/SsGoHC.md index 25bba808..fb2f91a8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 074. \345\220\210\345\271\266\345\214\272\351\227\264.md" +++ b/docs/solutions/LCR/SsGoHC.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 074. 合并区间](https://leetcode.cn/problems/SsGoHC/) +# [LCR 074. 合并区间](https://leetcode.cn/problems/SsGoHC/) - 标签:数组、排序 - 难度:中等 ## 题目链接 -- [剑指 Offer II 074. 合并区间 - 力扣](https://leetcode.cn/problems/SsGoHC/) +- [LCR 074. 合并区间 - 力扣](https://leetcode.cn/problems/SsGoHC/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206.md" b/docs/solutions/LCR/TVdhkn.md similarity index 82% rename from "Solutions/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206.md" rename to docs/solutions/LCR/TVdhkn.md index f7b718bd..28cc4174 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 079. \346\211\200\346\234\211\345\255\220\351\233\206.md" +++ b/docs/solutions/LCR/TVdhkn.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 079. 所有子集](https://leetcode.cn/problems/TVdhkn/) +# [LCR 079. 子集](https://leetcode.cn/problems/TVdhkn/) - 标签:位运算、数组、回溯 - 难度:中等 ## 题目链接 -- [剑指 Offer II 079. 所有子集 - 力扣](https://leetcode.cn/problems/TVdhkn/) +- [LCR 079. 子集 - 力扣](https://leetcode.cn/problems/TVdhkn/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 024. \345\217\215\350\275\254\351\223\276\350\241\250.md" b/docs/solutions/LCR/UHnkqh.md similarity index 95% rename from "Solutions/\345\211\221\346\214\207 Offer II 024. \345\217\215\350\275\254\351\223\276\350\241\250.md" rename to docs/solutions/LCR/UHnkqh.md index 7feea5c2..4f2f3bb5 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 024. \345\217\215\350\275\254\351\223\276\350\241\250.md" +++ b/docs/solutions/LCR/UHnkqh.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 024. 反转链表](https://leetcode.cn/problems/UHnkqh/) +# [LCR 024. 反转链表](https://leetcode.cn/problems/UHnkqh/) - 标签:递归、链表 - 难度:简单 ## 题目链接 -- [剑指 Offer II 024. 反转链表 - 力扣](https://leetcode.cn/problems/UHnkqh/) +- [LCR 024. 反转链表 - 力扣](https://leetcode.cn/problems/UHnkqh/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 064. \347\245\236\345\245\207\347\232\204\345\255\227\345\205\270.md" b/docs/solutions/LCR/US1pGT.md similarity index 93% rename from "Solutions/\345\211\221\346\214\207 Offer II 064. \347\245\236\345\245\207\347\232\204\345\255\227\345\205\270.md" rename to docs/solutions/LCR/US1pGT.md index ddce22eb..a41bdcfd 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 064. \347\245\236\345\245\207\347\232\204\345\255\227\345\205\270.md" +++ b/docs/solutions/LCR/US1pGT.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 064. 神奇的字典](https://leetcode.cn/problems/US1pGT/) +# [LCR 064. 实现一个魔法字典](https://leetcode.cn/problems/US1pGT/) - 标签:设计、字典树、哈希表、字符串 - 难度:中等 ## 题目链接 -- [剑指 Offer II 064. 神奇的字典 - 力扣](https://leetcode.cn/problems/US1pGT/) +- [LCR 064. 实现一个魔法字典 - 力扣](https://leetcode.cn/problems/US1pGT/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 063. \346\233\277\346\215\242\345\215\225\350\257\215.md" b/docs/solutions/LCR/UhWRSj.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 063. \346\233\277\346\215\242\345\215\225\350\257\215.md" rename to docs/solutions/LCR/UhWRSj.md index 584526b9..d9bce2db 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 063. \346\233\277\346\215\242\345\215\225\350\257\215.md" +++ b/docs/solutions/LCR/UhWRSj.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 063. 替换单词](https://leetcode.cn/problems/UhWRSj/) +# [LCR 063. 单词替换](https://leetcode.cn/problems/UhWRSj/) - 标签:字典树、数组、哈希表、字符串 - 难度:中等 ## 题目链接 -- [剑指 Offer II 063. 替换单词 - 力扣](https://leetcode.cn/problems/UhWRSj/) +- [LCR 063. 单词替换 - 力扣](https://leetcode.cn/problems/UhWRSj/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 083. \346\262\241\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" b/docs/solutions/LCR/VvJkup.md similarity index 83% rename from "Solutions/\345\211\221\346\214\207 Offer II 083. \346\262\241\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" rename to docs/solutions/LCR/VvJkup.md index 5935064e..9d0320f4 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 083. \346\262\241\346\234\211\351\207\215\345\244\215\345\205\203\347\264\240\351\233\206\345\220\210\347\232\204\345\205\250\346\216\222\345\210\227.md" +++ b/docs/solutions/LCR/VvJkup.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 083. 没有重复元素集合的全排列](https://leetcode.cn/problems/VvJkup/) +# [LCR 083. 全排列](https://leetcode.cn/problems/VvJkup/) - 标签:数组、回溯 - 难度:中等 ## 题目链接 -- [剑指 Offer II 083. 没有重复元素集合的全排列 - 力扣](https://leetcode.cn/problems/VvJkup/) +- [LCR 083. 全排列 - 力扣](https://leetcode.cn/problems/VvJkup/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 004. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" b/docs/solutions/LCR/WGki4K.md similarity index 93% rename from "Solutions/\345\211\221\346\214\207 Offer II 004. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" rename to docs/solutions/LCR/WGki4K.md index cea40233..18fc3783 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 004. \345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\346\225\260\345\255\227.md" +++ b/docs/solutions/LCR/WGki4K.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 004. 只出现一次的数字](https://leetcode.cn/problems/WGki4K/) +# [LCR 004. 只出现一次的数字 II](https://leetcode.cn/problems/WGki4K/) - 标签:位运算、数组 - 难度:中等 ## 题目链接 -- [剑指 Offer II 004. 只出现一次的数字 - 力扣](https://leetcode.cn/problems/WGki4K/) +- [LCR 004. 只出现一次的数字 II - 力扣](https://leetcode.cn/problems/WGki4K/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 046. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\344\276\247\350\247\206\345\233\276.md" b/docs/solutions/LCR/WNC0Lk.md similarity index 84% rename from "Solutions/\345\211\221\346\214\207 Offer II 046. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\344\276\247\350\247\206\345\233\276.md" rename to docs/solutions/LCR/WNC0Lk.md index 6589de02..3d33a4b3 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 046. \344\272\214\345\217\211\346\240\221\347\232\204\345\217\263\344\276\247\350\247\206\345\233\276.md" +++ b/docs/solutions/LCR/WNC0Lk.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 046. 二叉树的右侧视图](https://leetcode.cn/problems/WNC0Lk/) +# [LCR 046. 二叉树的右视图](https://leetcode.cn/problems/WNC0Lk/) - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer II 046. 二叉树的右侧视图 - 力扣](https://leetcode.cn/problems/WNC0Lk/) +- [LCR 046. 二叉树的右视图 - 力扣](https://leetcode.cn/problems/WNC0Lk/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" b/docs/solutions/LCR/WhsWhI.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" rename to docs/solutions/LCR/WhsWhI.md index c3f073c2..ec9f906d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 119. \346\234\200\351\225\277\350\277\236\347\273\255\345\272\217\345\210\227.md" +++ b/docs/solutions/LCR/WhsWhI.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 119. 最长连续序列](https://leetcode.cn/problems/WhsWhI/) +# [LCR 119. 最长连续序列](https://leetcode.cn/problems/WhsWhI/) - 标签:并查集、数组、哈希表 - 难度:中等 ## 题目链接 -- [剑指 Offer II 119. 最长连续序列 - 力扣](https://leetcode.cn/problems/WhsWhI/) +- [LCR 119. 最长连续序列 - 力扣](https://leetcode.cn/problems/WhsWhI/) ## 题目大意 diff --git "a/Solutions/0735. \350\241\214\346\230\237\347\242\260\346\222\236.md" b/docs/solutions/LCR/XagZNi.md similarity index 92% rename from "Solutions/0735. \350\241\214\346\230\237\347\242\260\346\222\236.md" rename to docs/solutions/LCR/XagZNi.md index e96f4dcd..128681b4 100644 --- "a/Solutions/0735. \350\241\214\346\230\237\347\242\260\346\222\236.md" +++ b/docs/solutions/LCR/XagZNi.md @@ -1,11 +1,11 @@ -# [0735. 行星碰撞](https://leetcode.cn/problems/asteroid-collision/) +# [LCR 037. 行星碰撞](https://leetcode.cn/problems/XagZNi/) - 标签:栈、数组 - 难度:中等 ## 题目链接 -- [0735. 行星碰撞 - 力扣](https://leetcode.cn/problems/asteroid-collision/) +- [LCR 037. 行星碰撞 - 力扣](https://leetcode.cn/problems/XagZNi/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207.md" b/docs/solutions/LCR/XltzEq.md similarity index 86% rename from "Solutions/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207.md" rename to docs/solutions/LCR/XltzEq.md index 952c8fba..d6ce554b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 018. \346\234\211\346\225\210\347\232\204\345\233\236\346\226\207.md" +++ b/docs/solutions/LCR/XltzEq.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 018. 有效的回文](https://leetcode.cn/problems/XltzEq/) +# [LCR 018. 验证回文串](https://leetcode.cn/problems/XltzEq/) - 标签:双指针、字符串 - 难度:简单 ## 题目链接 -- [剑指 Offer II 018. 有效的回文 - 力扣](https://leetcode.cn/problems/XltzEq/) +- [LCR 018. 验证回文串 - 力扣](https://leetcode.cn/problems/XltzEq/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274.md" b/docs/solutions/LCR/YaVDxD.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274.md" rename to docs/solutions/LCR/YaVDxD.md index 8f243470..76e11f0c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 102. \345\212\240\345\207\217\347\232\204\347\233\256\346\240\207\345\200\274.md" +++ b/docs/solutions/LCR/YaVDxD.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 102. 加减的目标值](https://leetcode.cn/problems/YaVDxD/) +# [LCR 102. 目标和](https://leetcode.cn/problems/YaVDxD/) - 标签:数组、动态规划、回溯 - 难度:中等 ## 题目链接 -- [剑指 Offer II 102. 加减的目标值 - 力扣](https://leetcode.cn/problems/YaVDxD/) +- [LCR 102. 目标和 - 力扣](https://leetcode.cn/problems/YaVDxD/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 081. \345\205\201\350\256\270\351\207\215\345\244\215\351\200\211\346\213\251\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" b/docs/solutions/LCR/Ygoe9J.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 081. \345\205\201\350\256\270\351\207\215\345\244\215\351\200\211\346\213\251\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" rename to docs/solutions/LCR/Ygoe9J.md index fe9edbb7..b28319a8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 081. \345\205\201\350\256\270\351\207\215\345\244\215\351\200\211\346\213\251\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" +++ b/docs/solutions/LCR/Ygoe9J.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 081. 允许重复选择元素的组合](https://leetcode.cn/problems/Ygoe9J/) +# [LCR 081. 组合总和](https://leetcode.cn/problems/Ygoe9J/) - 标签:数组、回溯 - 难度:中等 ## 题目链接 -- [剑指 Offer II 081. 允许重复选择元素的组合 - 力扣](https://leetcode.cn/problems/Ygoe9J/) +- [LCR 081. 组合总和 - 力扣](https://leetcode.cn/problems/Ygoe9J/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" b/docs/solutions/LCR/ZL6zAn.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" rename to docs/solutions/LCR/ZL6zAn.md index 03765059..c5c8ee2e 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 105. \345\262\233\345\261\277\347\232\204\346\234\200\345\244\247\351\235\242\347\247\257.md" +++ b/docs/solutions/LCR/ZL6zAn.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 105. 岛屿的最大面积](https://leetcode.cn/problems/ZL6zAn/) +# [LCR 105. 岛屿的最大面积](https://leetcode.cn/problems/ZL6zAn/) - 标签:深度优先搜索、广度优先搜索、并查集、数组、矩阵 - 难度:中等 ## 题目链接 -- [剑指 Offer II 105. 岛屿的最大面积 - 力扣](https://leetcode.cn/problems/ZL6zAn/) +- [LCR 105. 岛屿的最大面积 - 力扣](https://leetcode.cn/problems/ZL6zAn/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 009. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" b/docs/solutions/LCR/ZVAVXX.md similarity index 87% rename from "Solutions/\345\211\221\346\214\207 Offer II 009. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" rename to docs/solutions/LCR/ZVAVXX.md index bb7e4820..b6223caa 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 009. \344\271\230\347\247\257\345\260\217\344\272\216 K \347\232\204\345\255\220\346\225\260\347\273\204.md" +++ b/docs/solutions/LCR/ZVAVXX.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 009. 乘积小于 K 的子数组](https://leetcode.cn/problems/ZVAVXX/) +# [LCR 009. 乘积小于 K 的子数组](https://leetcode.cn/problems/ZVAVXX/) - 标签:数组、滑动窗口 - 难度:中等 ## 题目链接 -- [剑指 Offer II 009. 乘积小于 K 的子数组 - 力扣](https://leetcode.cn/problems/ZVAVXX/) +- [LCR 009. 乘积小于 K 的子数组 - 力扣](https://leetcode.cn/problems/ZVAVXX/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 020. \345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\344\270\252\346\225\260.md" b/docs/solutions/LCR/a7VOhD.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 020. \345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\344\270\252\346\225\260.md" rename to docs/solutions/LCR/a7VOhD.md index 84d3b14a..2f1090ae 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 020. \345\233\236\346\226\207\345\255\220\345\255\227\347\254\246\344\270\262\347\232\204\344\270\252\346\225\260.md" +++ b/docs/solutions/LCR/a7VOhD.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 020. 回文子字符串的个数](https://leetcode.cn/problems/a7VOhD/) +# [LCR 020. 回文子串](https://leetcode.cn/problems/a7VOhD/) - 标签:字符串、动态规划 - 难度:中等 ## 题目链接 -- [剑指 Offer II 020. 回文子字符串的个数 - 力扣](https://leetcode.cn/problems/a7VOhD/) +- [LCR 020. 回文子串 - 力扣](https://leetcode.cn/problems/a7VOhD/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250.md" b/docs/solutions/LCR/aMhZSa.md similarity index 81% rename from "Solutions/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250.md" rename to docs/solutions/LCR/aMhZSa.md index 10eacce6..2d9cc3e4 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 027. \345\233\236\346\226\207\351\223\276\350\241\250.md" +++ b/docs/solutions/LCR/aMhZSa.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 027. 回文链表](https://leetcode.cn/problems/aMhZSa/) +# [LCR 027. 回文链表](https://leetcode.cn/problems/aMhZSa/) - 标签:栈、递归、链表、双指针 - 难度:简单 ## 题目链接 -- [剑指 Offer II 027. 回文链表 - 力扣](https://leetcode.cn/problems/aMhZSa/) +- [LCR 027. 回文链表 - 力扣](https://leetcode.cn/problems/aMhZSa/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 005. \345\215\225\350\257\215\351\225\277\345\272\246\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md" b/docs/solutions/LCR/aseY1I.md similarity index 90% rename from "Solutions/\345\211\221\346\214\207 Offer II 005. \345\215\225\350\257\215\351\225\277\345\272\246\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md" rename to docs/solutions/LCR/aseY1I.md index 7066e417..dabd22b7 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 005. \345\215\225\350\257\215\351\225\277\345\272\246\347\232\204\346\234\200\345\244\247\344\271\230\347\247\257.md" +++ b/docs/solutions/LCR/aseY1I.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 005. 单词长度的最大乘积](https://leetcode.cn/problems/aseY1I/) +# [LCR 005. 最大单词长度乘积](https://leetcode.cn/problems/aseY1I/) - 标签:位运算、数组、字符串 - 难度:中等 ## 题目链接 -- [剑指 Offer II 005. 单词长度的最大乘积 - 力扣](https://leetcode.cn/problems/aseY1I/) +- [LCR 005. 最大单词长度乘积 - 力扣](https://leetcode.cn/problems/aseY1I/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 116. \347\234\201\344\273\275\346\225\260\351\207\217.md" b/docs/solutions/LCR/bLyHh0.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 116. \347\234\201\344\273\275\346\225\260\351\207\217.md" rename to docs/solutions/LCR/bLyHh0.md index 1ab9cace..733b3734 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 116. \347\234\201\344\273\275\346\225\260\351\207\217.md" +++ b/docs/solutions/LCR/bLyHh0.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 116. 省份数量](https://leetcode.cn/problems/bLyHh0/) +# [LCR 116. 省份数量](https://leetcode.cn/problems/bLyHh0/) - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 ## 题目链接 -- [剑指 Offer II 116. 省份数量 - 力扣](https://leetcode.cn/problems/bLyHh0/) +- [LCR 116. 省份数量 - 力扣](https://leetcode.cn/problems/bLyHh0/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 46. \346\212\212\346\225\260\345\255\227\347\277\273\350\257\221\346\210\220\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/LCR/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof.md similarity index 84% rename from "Solutions/\345\211\221\346\214\207 Offer 46. \346\212\212\346\225\260\345\255\227\347\277\273\350\257\221\346\210\220\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/LCR/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof.md index 2dc575de..677e007d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 46. \346\212\212\346\225\260\345\255\227\347\277\273\350\257\221\346\210\220\345\255\227\347\254\246\344\270\262.md" +++ b/docs/solutions/LCR/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 46. 把数字翻译成字符串](https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) +# [LCR 165. 解密数字](https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) - 标签:字符串、动态规划 - 难度:中等 ## 题目链接 -- [剑指 Offer 46. 把数字翻译成字符串 - 力扣](https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) +- [LCR 165. 解密数字 - 力扣](https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 45. \346\212\212\346\225\260\347\273\204\346\216\222\346\210\220\346\234\200\345\260\217\347\232\204\346\225\260.md" b/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof.md similarity index 78% rename from "Solutions/\345\211\221\346\214\207 Offer 45. \346\212\212\346\225\260\347\273\204\346\216\222\346\210\220\346\234\200\345\260\217\347\232\204\346\225\260.md" rename to docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof.md index fe9b4ee8..f803ce7e 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 45. \346\212\212\346\225\260\347\273\204\346\216\222\346\210\220\346\234\200\345\260\217\347\232\204\346\225\260.md" +++ b/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 45. 把数组排成最小的数](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) +# [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) - 标签:贪心、字符串、排序 - 难度:中等 ## 题目链接 -- [剑指 Offer 45. 把数组排成最小的数 - 力扣](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) +- [LCR 164. 破解闯关密码 - 力扣](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) ## 题目大意 @@ -73,4 +73,4 @@ class Solution: ## 参考资料 -- 【题解】[剑指 Offer 45. 把数组排成最小的数(自定义排序,清晰图解) - 把数组排成最小的数 - 力扣](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/solution/mian-shi-ti-45-ba-shu-zu-pai-cheng-zui-xiao-de-s-4/) +- 【题解】[LCR 164. 破解闯关密码(自定义排序,清晰图解) - 把数组排成最小的数 - 力扣](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/solution/mian-shi-ti-45-ba-shu-zu-pai-cheng-zui-xiao-de-s-4/) diff --git "a/Solutions/\345\211\221\346\214\207 Offer 67. \346\212\212\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\210\220\346\225\264\346\225\260.md" b/docs/solutions/LCR/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer 67. \346\212\212\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\210\220\346\225\264\346\225\260.md" rename to docs/solutions/LCR/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof.md index b97b3760..438f4929 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 67. \346\212\212\345\255\227\347\254\246\344\270\262\350\275\254\346\215\242\346\210\220\346\225\264\346\225\260.md" +++ b/docs/solutions/LCR/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 67. 把字符串转换成整数](https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) +# [LCR 192. 把字符串转换成整数 (atoi)](https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) - 标签:字符串 - 难度:中等 ## 题目链接 -- [剑指 Offer 67. 把字符串转换成整数 - 力扣](https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) +- [LCR 192. 把字符串转换成整数 (atoi) - 力扣](https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 30. \345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.md" b/docs/solutions/LCR/bao-han-minhan-shu-de-zhan-lcof.md similarity index 85% rename from "Solutions/\345\211\221\346\214\207 Offer 30. \345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.md" rename to docs/solutions/LCR/bao-han-minhan-shu-de-zhan-lcof.md index c0eac409..b7d49f1d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 30. \345\214\205\345\220\253min\345\207\275\346\225\260\347\232\204\346\240\210.md" +++ b/docs/solutions/LCR/bao-han-minhan-shu-de-zhan-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 30. 包含min函数的栈](https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/) +# [LCR 147. 最小栈](https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/) - 标签:栈、设计 - 难度:简单 ## 题目链接 -- [剑指 Offer 30. 包含min函数的栈 - 力扣](https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/) +- [LCR 147. 最小栈 - 力扣](https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 61. \346\211\221\345\205\213\347\211\214\344\270\255\347\232\204\351\241\272\345\255\220.md" b/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof.md similarity index 87% rename from "Solutions/\345\211\221\346\214\207 Offer 61. \346\211\221\345\205\213\347\211\214\344\270\255\347\232\204\351\241\272\345\255\220.md" rename to docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof.md index 1efb62b1..073fbc1b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 61. \346\211\221\345\205\213\347\211\214\344\270\255\347\232\204\351\241\272\345\255\220.md" +++ b/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 61. 扑克牌中的顺子](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) +# [LCR 186. 文物朝代判断](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) - 标签:数组、排序 - 难度:简单 ## 题目链接 -- [剑指 Offer 61. 扑克牌中的顺子 - 力扣](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) +- [LCR 186. 文物朝代判断 - 力扣](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 65. \344\270\215\347\224\250\345\212\240\345\207\217\344\271\230\351\231\244\345\201\232\345\212\240\346\263\225.md" b/docs/solutions/LCR/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof.md similarity index 85% rename from "Solutions/\345\211\221\346\214\207 Offer 65. \344\270\215\347\224\250\345\212\240\345\207\217\344\271\230\351\231\244\345\201\232\345\212\240\346\263\225.md" rename to docs/solutions/LCR/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof.md index ee9d3511..e1bdbfcc 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 65. \344\270\215\347\224\250\345\212\240\345\207\217\344\271\230\351\231\244\345\201\232\345\212\240\346\263\225.md" +++ b/docs/solutions/LCR/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 65. 不用加减乘除做加法](https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) +# [LCR 190. 加密运算](https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) - 标签:位运算、数学 - 难度:简单 ## 题目链接 -- [剑指 Offer 65. 不用加减乘除做加法 - 力扣](https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) +- [LCR 190. 加密运算 - 力扣](https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 022. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\350\212\202\347\202\271.md" b/docs/solutions/LCR/c32eOV.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 022. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\350\212\202\347\202\271.md" rename to docs/solutions/LCR/c32eOV.md index 9dd6c703..d82762af 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 022. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\350\212\202\347\202\271.md" +++ b/docs/solutions/LCR/c32eOV.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 022. 链表中环的入口节点](https://leetcode.cn/problems/c32eOV/) +# [LCR 022. 环形链表 II](https://leetcode.cn/problems/c32eOV/) - 标签:哈希表、链表、双指针 - 难度:中等 ## 题目链接 -- [剑指 Offer II 022. 链表中环的入口节点 - 力扣](https://leetcode.cn/problems/c32eOV/) +- [LCR 022. 环形链表 II - 力扣](https://leetcode.cn/problems/c32eOV/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 49. \344\270\221\346\225\260.md" b/docs/solutions/LCR/chou-shu-lcof.md similarity index 86% rename from "Solutions/\345\211\221\346\214\207 Offer 49. \344\270\221\346\225\260.md" rename to docs/solutions/LCR/chou-shu-lcof.md index b87bc0b4..388ed365 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 49. \344\270\221\346\225\260.md" +++ b/docs/solutions/LCR/chou-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 49. 丑数](https://leetcode.cn/problems/chou-shu-lcof/) +# [LCR 168. 丑数](https://leetcode.cn/problems/chou-shu-lcof/) - 标签:哈希表、数学、动态规划、堆(优先队列) - 难度:中等 ## 题目链接 -- [剑指 Offer 49. 丑数 - 力扣](https://leetcode.cn/problems/chou-shu-lcof/) +- [LCR 168. 丑数 - 力扣](https://leetcode.cn/problems/chou-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 32 - II. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 II.md" b/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof.md similarity index 83% rename from "Solutions/\345\211\221\346\214\207 Offer 32 - II. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 II.md" rename to docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof.md index d9d6404c..1c5f9909 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 32 - II. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 II.md" +++ b/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 32 - II. 从上到下打印二叉树 II](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) +# [LCR 150. 彩灯装饰记录 II](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) - 标签:树、广度优先搜索、二叉树 - 难度:简单 ## 题目链接 -- [剑指 Offer 32 - II. 从上到下打印二叉树 II - 力扣](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) +- [LCR 150. 彩灯装饰记录 II - 力扣](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 32 - III. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 III.md" b/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof.md similarity index 87% rename from "Solutions/\345\211\221\346\214\207 Offer 32 - III. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 III.md" rename to docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof.md index c70ab810..3448ae42 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 32 - III. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221 III.md" +++ b/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 32 - III. 从上到下打印二叉树 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) +# [LCR 151. 彩灯装饰记录 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) - 标签:树、广度优先搜索、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer 32 - III. 从上到下打印二叉树 III - 力扣](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) +- [LCR 151. 彩灯装饰记录 III - 力扣](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 32 - I. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-lcof.md similarity index 80% rename from "Solutions/\345\211\221\346\214\207 Offer 32 - I. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-lcof.md index 5929d2e9..87cb98b5 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 32 - I. \344\273\216\344\270\212\345\210\260\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" +++ b/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 32 - I. 从上到下打印二叉树](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) +# [LCR 149. 彩灯装饰记录 I](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) - 标签:树、广度优先搜索、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer 32 - I. 从上到下打印二叉树 - 力扣](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) +- [LCR 149. 彩灯装饰记录 I - 力扣](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 06. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" b/docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof.md similarity index 70% rename from "Solutions/\345\211\221\346\214\207 Offer 06. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" rename to docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof.md index 159055e3..134bb705 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 06. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" +++ b/docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 06. 从尾到头打印链表](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) +# [LCR 123. 图书整理 I](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) - 标签:栈、递归、链表、双指针 - 难度:简单 ## 题目链接 -- [剑指 Offer 06. 从尾到头打印链表 - 力扣](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) +- [LCR 123. 图书整理 I - 力扣](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 032. \346\234\211\346\225\210\347\232\204\345\217\230\344\275\215\350\257\215.md" b/docs/solutions/LCR/dKk3P7.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 032. \346\234\211\346\225\210\347\232\204\345\217\230\344\275\215\350\257\215.md" rename to docs/solutions/LCR/dKk3P7.md index 6ac97654..841495e7 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 032. \346\234\211\346\225\210\347\232\204\345\217\230\344\275\215\350\257\215.md" +++ b/docs/solutions/LCR/dKk3P7.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 032. 有效的变位词](https://leetcode.cn/problems/dKk3P7/) +# [LCR 032. 有效的字母异位词](https://leetcode.cn/problems/dKk3P7/) - 标签:哈希表、字符串、排序 - 难度:简单 ## 题目链接 -- [剑指 Offer II 032. 有效的变位词 - 力扣](https://leetcode.cn/problems/dKk3P7/) +- [LCR 032. 有效的字母异位词 - 力扣](https://leetcode.cn/problems/dKk3P7/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 17. \346\211\223\345\215\260\344\273\2161\345\210\260\346\234\200\345\244\247\347\232\204n\344\275\215\346\225\260.md" b/docs/solutions/LCR/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof.md similarity index 60% rename from "Solutions/\345\211\221\346\214\207 Offer 17. \346\211\223\345\215\260\344\273\2161\345\210\260\346\234\200\345\244\247\347\232\204n\344\275\215\346\225\260.md" rename to docs/solutions/LCR/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof.md index fc156377..5f8a4dd7 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 17. \346\211\223\345\215\260\344\273\2161\345\210\260\346\234\200\345\244\247\347\232\204n\344\275\215\346\225\260.md" +++ b/docs/solutions/LCR/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 17. 打印从1到最大的n位数](https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) +# [LCR 135. 报数](https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) - 标签:数组、数学 - 难度:简单 ## 题目链接 -- [剑指 Offer 17. 打印从1到最大的n位数 - 力扣](https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) +- [LCR 135. 报数 - 力扣](https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 50. \347\254\254\344\270\200\344\270\252\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\345\255\227\347\254\246.md" b/docs/solutions/LCR/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof.md similarity index 73% rename from "Solutions/\345\211\221\346\214\207 Offer 50. \347\254\254\344\270\200\344\270\252\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\345\255\227\347\254\246.md" rename to docs/solutions/LCR/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof.md index b97c2e2c..8fb09e82 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 50. \347\254\254\344\270\200\344\270\252\345\217\252\345\207\272\347\216\260\344\270\200\346\254\241\347\232\204\345\255\227\347\254\246.md" +++ b/docs/solutions/LCR/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 50. 第一个只出现一次的字符](https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) +# [LCR 169. 招式拆解 II](https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) - 标签:队列、哈希表、字符串、计数 - 难度:简单 ## 题目链接 -- [剑指 Offer 50. 第一个只出现一次的字符 - 力扣](https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) +- [LCR 169. 招式拆解 II - 力扣](https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" b/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof.md similarity index 79% rename from "Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" rename to docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof.md index 6cd03adf..bb452cb1 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" +++ b/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 21. 调整数组顺序使奇数位于偶数前面](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) +# [LCR 139. 训练计划 I](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) - 标签:数组、双指针、排序 - 难度:简单 ## 题目链接 -- [剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 - 力扣](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) +- [LCR 139. 训练计划 I - 力扣](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/LCR/dui-cheng-de-er-cha-shu-lcof.md similarity index 84% rename from "Solutions/\345\211\221\346\214\207 Offer 28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/LCR/dui-cheng-de-er-cha-shu-lcof.md index 2cec0f3f..63280f93 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" +++ b/docs/solutions/LCR/dui-cheng-de-er-cha-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 28. 对称的二叉树](https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/) +# [LCR 145. 判断对称二叉树](https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/) - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 ## 题目链接 -- [剑指 Offer 28. 对称的二叉树 - 力扣](https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/) +- [LCR 145. 判断对称二叉树 - 力扣](https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 59 - II. \351\230\237\345\210\227\347\232\204\346\234\200\345\244\247\345\200\274.md" b/docs/solutions/LCR/dui-lie-de-zui-da-zhi-lcof.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer 59 - II. \351\230\237\345\210\227\347\232\204\346\234\200\345\244\247\345\200\274.md" rename to docs/solutions/LCR/dui-lie-de-zui-da-zhi-lcof.md index 75a78621..a032fa76 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 59 - II. \351\230\237\345\210\227\347\232\204\346\234\200\345\244\247\345\200\274.md" +++ b/docs/solutions/LCR/dui-lie-de-zui-da-zhi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 59 - II. 队列的最大值](https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/) +# [LCR 184. 设计自助结算系统](https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/) - 标签:设计、队列、单调队列 - 难度:中等 ## 题目链接 -- [剑指 Offer 59 - II. 队列的最大值 - 力扣](https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/) +- [LCR 184. 设计自助结算系统 - 力扣](https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" b/docs/solutions/LCR/er-cha-shu-de-jing-xiang-lcof.md similarity index 74% rename from "Solutions/\345\211\221\346\214\207 Offer 27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" rename to docs/solutions/LCR/er-cha-shu-de-jing-xiang-lcof.md index c4c75b72..3e3de15c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" +++ b/docs/solutions/LCR/er-cha-shu-de-jing-xiang-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 27. 二叉树的镜像](https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/) +# [LCR 144. 翻转二叉树](https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/) - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 ## 题目链接 -- [剑指 Offer 27. 二叉树的镜像 - 力扣](https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/) +- [LCR 144. 翻转二叉树 - 力扣](https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 55 - I. \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" b/docs/solutions/LCR/er-cha-shu-de-shen-du-lcof.md similarity index 78% rename from "Solutions/\345\211\221\346\214\207 Offer 55 - I. \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" rename to docs/solutions/LCR/er-cha-shu-de-shen-du-lcof.md index e2d490e2..ac21d2df 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 55 - I. \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" +++ b/docs/solutions/LCR/er-cha-shu-de-shen-du-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 55 - I. 二叉树的深度](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/) +# [LCR 175. 计算二叉树的深度](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/) - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:简单 ## 题目链接 -- [剑指 Offer 55 - I. 二叉树的深度 - 力扣](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/) +- [LCR 175. 计算二叉树的深度 - 力扣](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 68 - II. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" b/docs/solutions/LCR/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer 68 - II. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" rename to docs/solutions/LCR/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof.md index 79a9ef48..e2dcac43 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 68 - II. \344\272\214\345\217\211\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ b/docs/solutions/LCR/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 68 - II. 二叉树的最近公共祖先](https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) +# [LCR 194. 二叉树的最近公共祖先](https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) - 标签:树、深度优先搜索、二叉树 - 难度:简单 ## 题目链接 -- [剑指 Offer 68 - II. 二叉树的最近公共祖先 - 力扣](https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) +- [LCR 194. 二叉树的最近公共祖先 - 力扣](https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" b/docs/solutions/LCR/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof.md similarity index 80% rename from "Solutions/\345\211\221\346\214\207 Offer 34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" rename to docs/solutions/LCR/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof.md index 2cd732c8..72fb70ee 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" +++ b/docs/solutions/LCR/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 34. 二叉树中和为某一值的路径](https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) +# [LCR 153. 二叉树中和为目标值的路径](https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) - 标签:树、深度优先搜索、回溯、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer 34. 二叉树中和为某一值的路径 - 力扣](https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) +- [LCR 153. 二叉树中和为目标值的路径 - 力扣](https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" b/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof.md similarity index 93% rename from "Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" rename to docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof.md index da4581ac..b649faad 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 54. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\347\254\254k\345\244\247\350\212\202\347\202\271.md" +++ b/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 54. 二叉搜索树的第k大节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) +# [LCR 174. 寻找二叉搜索树中的目标节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:简单 ## 题目链接 -- [剑指 Offer 54. 二叉搜索树的第k大节点 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) +- [LCR 174. 寻找二叉搜索树中的目标节点 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" b/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" rename to docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof.md index f2b1f700..47067c60 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" +++ b/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 33. 二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) +# [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) - 标签:栈、树、二叉搜索树、递归、二叉树、单调栈 - 难度:中等 ## 题目链接 -- [剑指 Offer 33. 二叉搜索树的后序遍历序列 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) +- [LCR 152. 验证二叉搜索树的后序遍历序列 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 68 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" b/docs/solutions/LCR/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof.md similarity index 86% rename from "Solutions/\345\211\221\346\214\207 Offer 68 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" rename to docs/solutions/LCR/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof.md index e162f4b8..7930c210 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 68 - I. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\346\234\200\350\277\221\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ b/docs/solutions/LCR/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 68 - I. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) +# [LCR 193. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:简单 ## 题目链接 -- [剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) +- [LCR 193. 二叉搜索树的最近公共祖先 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" b/docs/solutions/LCR/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof.md similarity index 84% rename from "Solutions/\345\211\221\346\214\207 Offer 36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" rename to docs/solutions/LCR/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof.md index 18e99982..882820b0 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ b/docs/solutions/LCR/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 36. 二叉搜索树与双向链表](https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) +# [LCR 155. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) - 标签:栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 - 难度:中等 ## 题目链接 -- [剑指 Offer 36. 二叉搜索树与双向链表 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) +- [LCR 155. 将二叉搜索树转化为排序的双向链表 - 力扣](https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 15. \344\272\214\350\277\233\345\210\266\344\270\2551\347\232\204\344\270\252\346\225\260.md" b/docs/solutions/LCR/er-jin-zhi-zhong-1de-ge-shu-lcof.md similarity index 82% rename from "Solutions/\345\211\221\346\214\207 Offer 15. \344\272\214\350\277\233\345\210\266\344\270\2551\347\232\204\344\270\252\346\225\260.md" rename to docs/solutions/LCR/er-jin-zhi-zhong-1de-ge-shu-lcof.md index 792ce325..c9df6b42 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 15. \344\272\214\350\277\233\345\210\266\344\270\2551\347\232\204\344\270\252\346\225\260.md" +++ b/docs/solutions/LCR/er-jin-zhi-zhong-1de-ge-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 15. 二进制中1的个数](https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/) +# [LCR 133. 位 1 的个数](https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/) - 标签:位运算 - 难度:简单 ## 题目链接 -- [剑指 Offer 15. 二进制中1的个数 - 力扣](https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/) +- [LCR 133. 位 1 的个数 - 力扣](https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 04. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" b/docs/solutions/LCR/er-wei-shu-zu-zhong-de-cha-zhao-lcof.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer 04. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" rename to docs/solutions/LCR/er-wei-shu-zu-zhong-de-cha-zhao-lcof.md index e4e93206..1a4eb233 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 04. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" +++ b/docs/solutions/LCR/er-wei-shu-zu-zhong-de-cha-zhao-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 04. 二维数组中的查找](https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) +# [LCR 121. 寻找目标值 - 二维数组](https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) - 标签:数组、二分查找、分治、矩阵 - 难度:中等 ## 题目链接 -- [剑指 Offer 04. 二维数组中的查找 - 力扣](https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) +- [LCR 121. 寻找目标值 - 二维数组 - 力扣](https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 58 - I. \347\277\273\350\275\254\345\215\225\350\257\215\351\241\272\345\272\217.md" b/docs/solutions/LCR/fan-zhuan-dan-ci-shun-xu-lcof.md similarity index 74% rename from "Solutions/\345\211\221\346\214\207 Offer 58 - I. \347\277\273\350\275\254\345\215\225\350\257\215\351\241\272\345\272\217.md" rename to docs/solutions/LCR/fan-zhuan-dan-ci-shun-xu-lcof.md index 51deea29..99faaa61 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 58 - I. \347\277\273\350\275\254\345\215\225\350\257\215\351\241\272\345\272\217.md" +++ b/docs/solutions/LCR/fan-zhuan-dan-ci-shun-xu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 58 - I. 翻转单词顺序](https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/) +# [LCR 181. 字符串中的单词反转](https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/) - 标签:双指针、字符串 - 难度:简单 ## 题目链接 -- [剑指 Offer 58 - I. 翻转单词顺序 - 力扣](https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/) +- [LCR 181. 字符串中的单词反转 - 力扣](https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 24. \345\217\215\350\275\254\351\223\276\350\241\250.md" b/docs/solutions/LCR/fan-zhuan-lian-biao-lcof.md similarity index 94% rename from "Solutions/\345\211\221\346\214\207 Offer 24. \345\217\215\350\275\254\351\223\276\350\241\250.md" rename to docs/solutions/LCR/fan-zhuan-lian-biao-lcof.md index cf955d63..40000966 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 24. \345\217\215\350\275\254\351\223\276\350\241\250.md" +++ b/docs/solutions/LCR/fan-zhuan-lian-biao-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 24. 反转链表](https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/) +# [LCR 141. 训练计划 III](https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/) - 标签:递归、链表 - 难度:简单 ## 题目链接 -- [剑指 Offer 24. 反转链表 - 力扣](https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/) +- [LCR 141. 训练计划 III - 力扣](https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 10- I. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" b/docs/solutions/LCR/fei-bo-na-qi-shu-lie-lcof.md similarity index 76% rename from "Solutions/\345\211\221\346\214\207 Offer 10- I. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" rename to docs/solutions/LCR/fei-bo-na-qi-shu-lie-lcof.md index fcfd3ac4..bf28b20a 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 10- I. \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" +++ b/docs/solutions/LCR/fei-bo-na-qi-shu-lie-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 10- I. 斐波那契数列](https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/) +# [LCR 126. 斐波那契数](https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/) - 标签:记忆化搜索、数学、动态规划 - 难度:简单 ## 题目链接 -- [剑指 Offer 10- I. 斐波那契数列 - 力扣](https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/) +- [LCR 126. 斐波那契数 - 力扣](https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 112. \346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" b/docs/solutions/LCR/fpTFWP.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 112. \346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" rename to docs/solutions/LCR/fpTFWP.md index 35d4a239..ecf927f6 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 112. \346\234\200\351\225\277\351\200\222\345\242\236\350\267\257\345\276\204.md" +++ b/docs/solutions/LCR/fpTFWP.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 112. 最长递增路径](https://leetcode.cn/problems/fpTFWP/) +# [LCR 112. 矩阵中的最长递增路径](https://leetcode.cn/problems/fpTFWP/) - 标签:深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 - 难度:困难 ## 题目链接 -- [剑指 Offer II 112. 最长递增路径 - 力扣](https://leetcode.cn/problems/fpTFWP/) +- [LCR 112. 矩阵中的最长递增路径 - 力扣](https://leetcode.cn/problems/fpTFWP/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" b/docs/solutions/LCR/fu-za-lian-biao-de-fu-zhi-lcof.md similarity index 83% rename from "Solutions/\345\211\221\346\214\207 Offer 35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" rename to docs/solutions/LCR/fu-za-lian-biao-de-fu-zhi-lcof.md index ef55af6b..f1496a06 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" +++ b/docs/solutions/LCR/fu-za-lian-biao-de-fu-zhi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 35. 复杂链表的复制](https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/) +# [LCR 154. 复杂链表的复制](https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/) - 标签:哈希表、链表 - 难度:中等 ## 题目链接 -- [剑指 Offer 35. 复杂链表的复制 - 力扣](https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/) +- [LCR 154. 复杂链表的复制 - 力扣](https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227.md" b/docs/solutions/LCR/g5c51o.md similarity index 94% rename from "Solutions/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227.md" rename to docs/solutions/LCR/g5c51o.md index 912ee21b..e4190d6b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 060. \345\207\272\347\216\260\351\242\221\347\216\207\346\234\200\351\253\230\347\232\204 k \344\270\252\346\225\260\345\255\227.md" +++ b/docs/solutions/LCR/g5c51o.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 060. 出现频率最高的 k 个数字](https://leetcode.cn/problems/g5c51o/) +# [LCR 060. 前 K 个高频元素](https://leetcode.cn/problems/g5c51o/) - 标签:数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) - 难度:中等 ## 题目链接 -- [剑指 Offer II 060. 出现频率最高的 k 个数字 - 力扣](https://leetcode.cn/problems/g5c51o/) +- [LCR 060. 前 K 个高频元素 - 力扣](https://leetcode.cn/problems/g5c51o/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256.md" b/docs/solutions/LCR/gaM7Ch.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256.md" rename to docs/solutions/LCR/gaM7Ch.md index ffc1db51..b9c93915 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 103. \346\234\200\345\260\221\347\232\204\347\241\254\345\270\201\346\225\260\347\233\256.md" +++ b/docs/solutions/LCR/gaM7Ch.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 103. 最少的硬币数目](https://leetcode.cn/problems/gaM7Ch/) +# [LCR 103. 零钱兑换](https://leetcode.cn/problems/gaM7Ch/) - 标签:广度优先搜索、数组、动态规划 - 难度:中等 ## 题目链接 -- [剑指 Offer II 103. 最少的硬币数目 - 力扣](https://leetcode.cn/problems/gaM7Ch/) +- [LCR 103. 零钱兑换 - 力扣](https://leetcode.cn/problems/gaM7Ch/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" b/docs/solutions/LCR/gou-jian-cheng-ji-shu-zu-lcof.md similarity index 82% rename from "Solutions/\345\211\221\346\214\207 Offer 66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" rename to docs/solutions/LCR/gou-jian-cheng-ji-shu-zu-lcof.md index 6d839c22..e629feba 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" +++ b/docs/solutions/LCR/gou-jian-cheng-ji-shu-zu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 66. 构建乘积数组](https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/) +# [LCR 191. 按规则计算统计结果](https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/) - 标签:数组、前缀和 - 难度:中等 ## 题目链接 -- [剑指 Offer 66. 构建乘积数组 - 力扣](https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/) +- [LCR 191. 按规则计算统计结果 - 力扣](https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" b/docs/solutions/LCR/gu-piao-de-zui-da-li-run-lcof.md similarity index 84% rename from "Solutions/\345\211\221\346\214\207 Offer 63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" rename to docs/solutions/LCR/gu-piao-de-zui-da-li-run-lcof.md index 97f92a17..7096700a 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" +++ b/docs/solutions/LCR/gu-piao-de-zui-da-li-run-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 63. 股票的最大利润](https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/) +# [LCR 188. 买卖芯片的最佳时机](https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/) - 标签:数组、动态规划 - 难度:中等 ## 题目链接 -- [剑指 Offer 63. 股票的最大利润 - 力扣](https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/) +- [LCR 188. 买卖芯片的最佳时机 - 力扣](https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 048. \345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/LCR/h54YBf.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 048. \345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/LCR/h54YBf.md index 340cfc9c..81884f52 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 048. \345\272\217\345\210\227\345\214\226\344\270\216\345\217\215\345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" +++ b/docs/solutions/LCR/h54YBf.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 048. 序列化与反序列化二叉树](https://leetcode.cn/problems/h54YBf/) +# [LCR 048. 二叉树的序列化与反序列化](https://leetcode.cn/problems/h54YBf/) - 标签:树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 - 难度:困难 ## 题目链接 -- [剑指 Offer II 048. 序列化与反序列化二叉树 - 力扣](https://leetcode.cn/problems/h54YBf/) +- [LCR 048. 二叉树的序列化与反序列化 - 力扣](https://leetcode.cn/problems/h54YBf/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 044. \344\272\214\345\217\211\346\240\221\346\257\217\345\261\202\347\232\204\346\234\200\345\244\247\345\200\274.md" b/docs/solutions/LCR/hPov7L.md similarity index 85% rename from "Solutions/\345\211\221\346\214\207 Offer II 044. \344\272\214\345\217\211\346\240\221\346\257\217\345\261\202\347\232\204\346\234\200\345\244\247\345\200\274.md" rename to docs/solutions/LCR/hPov7L.md index 785351a4..9f7f4b47 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 044. \344\272\214\345\217\211\346\240\221\346\257\217\345\261\202\347\232\204\346\234\200\345\244\247\345\200\274.md" +++ b/docs/solutions/LCR/hPov7L.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 044. 二叉树每层的最大值](https://leetcode.cn/problems/hPov7L/) +# [LCR 044. 在每个树行中找最大值](https://leetcode.cn/problems/hPov7L/) - 标签:树、深度优先搜索、广度优先搜索、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer II 044. 二叉树每层的最大值 - 力扣](https://leetcode.cn/problems/hPov7L/) +- [LCR 044. 在每个树行中找最大值 - 力扣](https://leetcode.cn/problems/hPov7L/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" b/docs/solutions/LCR/he-bing-liang-ge-pai-xu-de-lian-biao-lcof.md similarity index 83% rename from "Solutions/\345\211\221\346\214\207 Offer 25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" rename to docs/solutions/LCR/he-bing-liang-ge-pai-xu-de-lian-biao-lcof.md index a54aa02c..714c4c54 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" +++ b/docs/solutions/LCR/he-bing-liang-ge-pai-xu-de-lian-biao-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 25. 合并两个排序的链表](https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) +# [LCR 142. 训练计划 IV](https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) - 标签:递归、链表 - 难度:简单 ## 题目链接 -- [剑指 Offer 25. 合并两个排序的链表 - 力扣](https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) +- [LCR 142. 训练计划 IV - 力扣](https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 57 - II. \345\222\214\344\270\272s\347\232\204\350\277\236\347\273\255\346\255\243\346\225\260\345\272\217\345\210\227.md" b/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof.md similarity index 93% rename from "Solutions/\345\211\221\346\214\207 Offer 57 - II. \345\222\214\344\270\272s\347\232\204\350\277\236\347\273\255\346\255\243\346\225\260\345\272\217\345\210\227.md" rename to docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof.md index a3c66f73..64e0883c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 57 - II. \345\222\214\344\270\272s\347\232\204\350\277\236\347\273\255\346\255\243\346\225\260\345\272\217\345\210\227.md" +++ b/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 57 - II. 和为s的连续正数序列](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) +# [LCR 180. 文件组合](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) - 标签:数学、双指针、枚举 - 难度:简单 ## 题目链接 -- [剑指 Offer 57 - II. 和为s的连续正数序列 - 力扣](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) +- [LCR 180. 文件组合 - 力扣](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 57. \345\222\214\344\270\272s\347\232\204\344\270\244\344\270\252\346\225\260\345\255\227.md" b/docs/solutions/LCR/he-wei-sde-liang-ge-shu-zi-lcof.md similarity index 80% rename from "Solutions/\345\211\221\346\214\207 Offer 57. \345\222\214\344\270\272s\347\232\204\344\270\244\344\270\252\346\225\260\345\255\227.md" rename to docs/solutions/LCR/he-wei-sde-liang-ge-shu-zi-lcof.md index 343753fa..40168787 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 57. \345\222\214\344\270\272s\347\232\204\344\270\244\344\270\252\346\225\260\345\255\227.md" +++ b/docs/solutions/LCR/he-wei-sde-liang-ge-shu-zi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 57. 和为s的两个数字](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/) +# [LCR 179. 查找总价格为目标值的两个商品](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/) - 标签:数组、双指针、二分查找 - 难度:简单 ## 题目链接 -- [剑指 Offer 57. 和为s的两个数字 - 力扣](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/) +- [LCR 179. 查找总价格为目标值的两个商品 - 力扣](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 59 - I. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\346\234\200\345\244\247\345\200\274.md" b/docs/solutions/LCR/hua-dong-chuang-kou-de-zui-da-zhi-lcof.md similarity index 86% rename from "Solutions/\345\211\221\346\214\207 Offer 59 - I. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\346\234\200\345\244\247\345\200\274.md" rename to docs/solutions/LCR/hua-dong-chuang-kou-de-zui-da-zhi-lcof.md index 97e29981..2bb4be17 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 59 - I. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\346\234\200\345\244\247\345\200\274.md" +++ b/docs/solutions/LCR/hua-dong-chuang-kou-de-zui-da-zhi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 59 - I. 滑动窗口的最大值](https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) +# [LCR 183. 望远镜中最高的海拔](https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) - 标签:队列、滑动窗口、单调队列、堆(优先队列) - 难度:困难 ## 题目链接 -- [剑指 Offer 59 - I. 滑动窗口的最大值 - 力扣](https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) +- [LCR 183. 望远镜中最高的海拔 - 力扣](https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 038. \346\257\217\346\227\245\346\270\251\345\272\246.md" b/docs/solutions/LCR/iIQa4I.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 038. \346\257\217\346\227\245\346\270\251\345\272\246.md" rename to docs/solutions/LCR/iIQa4I.md index 787656a7..af440845 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 038. \346\257\217\346\227\245\346\270\251\345\272\246.md" +++ b/docs/solutions/LCR/iIQa4I.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 038. 每日温度](https://leetcode.cn/problems/iIQa4I/) +# [LCR 038. 每日温度](https://leetcode.cn/problems/iIQa4I/) - 标签:栈、数组、单调栈 - 难度:中等 ## 题目链接 -- [剑指 Offer II 038. 每日温度 - 力扣](https://leetcode.cn/problems/iIQa4I/) +- [LCR 038. 每日温度 - 力扣](https://leetcode.cn/problems/iIQa4I/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 065. \346\234\200\347\237\255\347\232\204\345\215\225\350\257\215\347\274\226\347\240\201.md" b/docs/solutions/LCR/iSwD2y.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 065. \346\234\200\347\237\255\347\232\204\345\215\225\350\257\215\347\274\226\347\240\201.md" rename to docs/solutions/LCR/iSwD2y.md index 2cee65bf..7f2670ef 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 065. \346\234\200\347\237\255\347\232\204\345\215\225\350\257\215\347\274\226\347\240\201.md" +++ b/docs/solutions/LCR/iSwD2y.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 065. 最短的单词编码](https://leetcode.cn/problems/iSwD2y/) +# [LCR 065. 单词的压缩编码](https://leetcode.cn/problems/iSwD2y/) - 标签:字典树、数组、哈希表、字符串 - 难度:中等 ## 题目链接 -- [剑指 Offer II 065. 最短的单词编码 - 力扣](https://leetcode.cn/problems/iSwD2y/) +- [LCR 065. 单词的压缩编码 - 力扣](https://leetcode.cn/problems/iSwD2y/) ## 题目大意 diff --git a/docs/solutions/LCR/index.md b/docs/solutions/LCR/index.md new file mode 100644 index 00000000..4191eaf3 --- /dev/null +++ b/docs/solutions/LCR/index.md @@ -0,0 +1,172 @@ +## 本章内容 + +- [LCR 001. 两数相除](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xoh6Oh/) +- [LCR 002. 二进制求和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/JFETK5/) +- [LCR 003. 比特位计数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w3tCBm/) +- [LCR 004. 只出现一次的数字 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WGki4K/) +- [LCR 005. 最大单词长度乘积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aseY1I/) +- [LCR 006. 两数之和 II - 输入有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kLl5u1/) +- [LCR 007. 三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/1fGaJU/) +- [LCR 008. 长度最小的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2VG8Kg/) +- [LCR 009. 乘积小于 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZVAVXX/) +- [LCR 010. 和为 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QTMn0o/) +- [LCR 011. 连续数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/A1NYOS/) +- [LCR 012. 寻找数组的中心下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/tvdfij/) +- [LCR 013. 二维区域和检索 - 矩阵不可变](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/O4NDxx/) +- [LCR 016. 无重复字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/wtcaE1/) +- [LCR 017. 最小覆盖子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M1oyTv/) +- [LCR 018. 验证回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XltzEq/) +- [LCR 019. 验证回文串 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/RQku0D/) +- [LCR 020. 回文子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/a7VOhD/) +- [LCR 021. 删除链表的倒数第 N 个结点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SLwz0R/) +- [LCR 022. 环形链表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/c32eOV/) +- [LCR 023. 相交链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3u1WK4/) +- [LCR 024. 反转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UHnkqh/) +- [LCR 025. 两数相加 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lMSNwu/) +- [LCR 026. 重排链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LGjMqU/) +- [LCR 027. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aMhZSa/) +- [LCR 028. 扁平化多级双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Qv1Da2/) +- [LCR 029. 循环有序列表的插入](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4ueAj6/) +- [LCR 030. O(1) 时间插入、删除和获取随机元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/FortPu/) +- [LCR 031. LRU 缓存](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/OrIXps/) +- [LCR 032. 有效的字母异位词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dKk3P7/) +- [LCR 033. 字母异位词分组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/sfvd7V/) +- [LCR 034. 验证外星语词典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lwyVBB/) +- [LCR 035. 最小时间差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/569nqc/) +- [LCR 036. 逆波兰表达式求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/8Zf90G/) +- [LCR 037. 行星碰撞](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XagZNi/) +- [LCR 038. 每日温度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iIQa4I/) +- [LCR 039. 柱状图中最大的矩形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0ynMMM/) +- [LCR 041. 数据流中的移动平均值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qIsx9U/) +- [LCR 042. 最近的请求次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/H8086Q/) +- [LCR 043. 完全二叉树插入器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NaqhDT/) +- [LCR 044. 在每个树行中找最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hPov7L/) +- [LCR 045. 找树左下角的值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LwUNpT/) +- [LCR 046. 二叉树的右视图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WNC0Lk/) +- [LCR 047. 二叉树剪枝](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/pOCWxh/) +- [LCR 048. 二叉树的序列化与反序列化](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/h54YBf/) +- [LCR 049. 求根节点到叶节点数字之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3Etpl5/) +- [LCR 050. 路径总和 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/6eUYwP/) +- [LCR 051. 二叉树中的最大路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jC7MId/) +- [LCR 052. 递增顺序搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NYBBNL/) +- [LCR 053. 二叉搜索树中的中序后继](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/P5rCT8/) +- [LCR 054. 把二叉搜索树转换为累加树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w6cpku/) +- [LCR 055. 二叉搜索树迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kTOapQ/) +- [LCR 056. 两数之和 IV - 输入二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/opLdQZ/) +- [LCR 057. 存在重复元素 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WqeDu/) +- [LCR 059. 数据流中的第 K 大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jBjn9C/) +- [LCR 060. 前 K 个高频元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/g5c51o/) +- [LCR 062. 实现 Trie (前缀树)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QC3q1f/) +- [LCR 063. 单词替换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UhWRSj/) +- [LCR 064. 实现一个魔法字典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/US1pGT/) +- [LCR 065. 单词的压缩编码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iSwD2y/) +- [LCR 066. 键值映射](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/z1R5dt/) +- [LCR 067. 数组中两个数的最大异或值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ms70jA/) +- [LCR 068. 搜索插入位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/N6YdxV/) +- [LCR 072. x 的平方根](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jJ0w9p/) +- [LCR 073. 爱吃香蕉的狒狒](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/nZZqjQ/) +- [LCR 074. 合并区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SsGoHC/) +- [LCR 075. 数组的相对排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0H97ZC/) +- [LCR 076. 数组中的第 K 个最大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xx4gT2/) +- [LCR 077. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WHec2/) +- [LCR 078. 合并 K 个升序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vvXgSW/) +- [LCR 079. 子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/TVdhkn/) +- [LCR 080. 组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/uUsW3B/) +- [LCR 081. 组合总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Ygoe9J/) +- [LCR 082. 组合总和 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4sjJUc/) +- [LCR 083. 全排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/VvJkup/) +- [LCR 084. 全排列 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7p8L0Z/) +- [LCR 085. 括号生成](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/IDBivT/) +- [LCR 086. 分割回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M99OJA/) +- [LCR 087. 复原 IP 地址](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0on3uN/) +- [LCR 088. 使用最小花费爬楼梯](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/GzCJIP/) +- [LCR 089. 打家劫舍](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Gu0c2T/) +- [LCR 090. 打家劫舍 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/PzWKhm/) +- [LCR 093. 最长的斐波那契子序列的长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Q91FMA/) +- [LCR 095. 最长公共子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qJnOS7/) +- [LCR 097. 不同的子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/21dk04/) +- [LCR 098. 不同路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2AoeFn/) +- [LCR 101. 分割等和子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NUPfPr/) +- [LCR 102. 目标和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/YaVDxD/) +- [LCR 103. 零钱兑换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gaM7Ch/) +- [LCR 104. 组合总和 Ⅳ](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/D0F0SV/) +- [LCR 105. 岛屿的最大面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZL6zAn/) +- [LCR 106. 判断二分图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vEAB3K/) +- [LCR 107. 01 矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2bCMpM/) +- [LCR 108. 单词接龙](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/om3reC/) +- [LCR 109. 打开转盘锁](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zlDJc7/) +- [LCR 111. 除法求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vlzXQL/) +- [LCR 112. 矩阵中的最长递增路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fpTFWP/) +- [LCR 113. 课程表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QA2IGt/) +- [LCR 116. 省份数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bLyHh0/) +- [LCR 118. 冗余连接](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7LpjUW/) +- [LCR 119. 最长连续序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WhsWhI/) +- [LCR 120. 寻找文件副本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) +- [LCR 121. 寻找目标值 - 二维数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) +- [LCR 122. 路径加密](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ti-huan-kong-ge-lcof/) +- [LCR 123. 图书整理 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof/) +- [LCR 124. 推理二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhong-jian-er-cha-shu-lcof/) +- [LCR 125. 图书整理 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) +- [LCR 126. 斐波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fei-bo-na-qi-shu-lie-lcof/) +- [LCR 127. 跳跃训练](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qing-wa-tiao-tai-jie-wen-ti-lcof/) +- [LCR 128. 库存管理 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) +- [LCR 129. 字母迷宫](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ju-zhen-zhong-de-lu-jing-lcof/) +- [LCR 130. 衣橱整理](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof/) +- [LCR 131. 砍竹子 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jian-sheng-zi-lcof/) +- [LCR 133. 位 1 的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-jin-zhi-zhong-1de-ge-shu-lcof/) +- [LCR 134. Pow(x, n)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zhi-de-zheng-shu-ci-fang-lcof/) +- [LCR 135. 报数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) +- [LCR 136. 删除链表的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shan-chu-lian-biao-de-jie-dian-lcof/) +- [LCR 139. 训练计划 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) +- [LCR 140. 训练计划 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) +- [LCR 141. 训练计划 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-lian-biao-lcof/) +- [LCR 142. 训练计划 IV](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) +- [LCR 143. 子结构判断](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-de-zi-jie-gou-lcof/) +- [LCR 144. 翻转二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-jing-xiang-lcof/) +- [LCR 145. 判断对称二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-cheng-de-er-cha-shu-lcof/) +- [LCR 146. 螺旋遍历二维数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shun-shi-zhen-da-yin-ju-zhen-lcof/) +- [LCR 147. 最小栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bao-han-minhan-shu-de-zhan-lcof/) +- [LCR 148. 验证图书取出顺序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) +- [LCR 149. 彩灯装饰记录 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) +- [LCR 150. 彩灯装饰记录 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) +- [LCR 151. 彩灯装饰记录 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) +- [LCR 152. 验证二叉搜索树的后序遍历序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) +- [LCR 153. 二叉树中和为目标值的路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) +- [LCR 154. 复杂链表的复制](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fu-za-lian-biao-de-fu-zhi-lcof/) +- [LCR 155. 将二叉搜索树转化为排序的双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) +- [LCR 156. 序列化与反序列化二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xu-lie-hua-er-cha-shu-lcof/) +- [LCR 157. 套餐内商品的排列顺序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zi-fu-chuan-de-pai-lie-lcof/) +- [LCR 158. 库存管理 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) +- [LCR 159. 库存管理 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof/) +- [LCR 160. 数据流中的中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) +- [LCR 161. 连续天数的最高销售额](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) +- [LCR 163. 找到第 k 位数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) +- [LCR 164. 破解闯关密码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) +- [LCR 165. 解密数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) +- [LCR 166. 珠宝的最高价值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/li-wu-de-zui-da-jie-zhi-lcof/) +- [LCR 167. 招式拆解 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) +- [LCR 168. 丑数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/chou-shu-lcof/) +- [LCR 169. 招式拆解 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) +- [LCR 170. 交易逆序对的总数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof/) +- [LCR 171. 训练计划 V](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) +- [LCR 172. 统计目标成绩的出现次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) +- [LCR 173. 点名](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/que-shi-de-shu-zi-lcof/) +- [LCR 174. 寻找二叉搜索树中的目标节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) +- [LCR 175. 计算二叉树的深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-shen-du-lcof/) +- [LCR 176. 判断是否为平衡二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ping-heng-er-cha-shu-lcof/) +- [LCR 177. 撞色搭配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) +- [LCR 179. 查找总价格为目标值的两个商品](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-liang-ge-shu-zi-lcof/) +- [LCR 180. 文件组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) +- [LCR 181. 字符串中的单词反转](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-dan-ci-shun-xu-lcof/) +- [LCR 182. 动态口令](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zuo-xuan-zhuan-zi-fu-chuan-lcof/) +- [LCR 183. 望远镜中最高的海拔](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) +- [LCR 184. 设计自助结算系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-lie-de-zui-da-zhi-lcof/) +- [LCR 186. 文物朝代判断](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof/) +- [LCR 187. 破冰游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) +- [LCR 188. 买卖芯片的最佳时机](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gu-piao-de-zui-da-li-run-lcof/) +- [LCR 189. 设计机械累加器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qiu-12n-lcof/) +- [LCR 190. 加密运算](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) +- [LCR 191. 按规则计算统计结果](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gou-jian-cheng-ji-shu-zu-lcof/) +- [LCR 192. 把字符串转换成整数 (atoi)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) +- [LCR 193. 二叉搜索树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) +- [LCR 194. 二叉树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 059. \346\225\260\346\215\256\346\265\201\347\232\204\347\254\254 K \345\244\247\346\225\260\345\200\274.md" b/docs/solutions/LCR/jBjn9C.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 059. \346\225\260\346\215\256\346\265\201\347\232\204\347\254\254 K \345\244\247\346\225\260\345\200\274.md" rename to docs/solutions/LCR/jBjn9C.md index 1a3df66d..6b7ad2af 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 059. \346\225\260\346\215\256\346\265\201\347\232\204\347\254\254 K \345\244\247\346\225\260\345\200\274.md" +++ b/docs/solutions/LCR/jBjn9C.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 059. 数据流的第 K 大数值](https://leetcode.cn/problems/jBjn9C/) +# [LCR 059. 数据流中的第 K 大元素](https://leetcode.cn/problems/jBjn9C/) - 标签:树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) - 难度:简单 ## 题目链接 -- [剑指 Offer II 059. 数据流的第 K 大数值 - 力扣](https://leetcode.cn/problems/jBjn9C/) +- [LCR 059. 数据流中的第 K 大元素 - 力扣](https://leetcode.cn/problems/jBjn9C/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 051. \350\212\202\347\202\271\344\271\213\345\222\214\346\234\200\345\244\247\347\232\204\350\267\257\345\276\204.md" b/docs/solutions/LCR/jC7MId.md similarity index 90% rename from "Solutions/\345\211\221\346\214\207 Offer II 051. \350\212\202\347\202\271\344\271\213\345\222\214\346\234\200\345\244\247\347\232\204\350\267\257\345\276\204.md" rename to docs/solutions/LCR/jC7MId.md index a64410b9..b8d6c92b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 051. \350\212\202\347\202\271\344\271\213\345\222\214\346\234\200\345\244\247\347\232\204\350\267\257\345\276\204.md" +++ b/docs/solutions/LCR/jC7MId.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 051. 节点之和最大的路径](https://leetcode.cn/problems/jC7MId/) +# [LCR 051. 二叉树中的最大路径和](https://leetcode.cn/problems/jC7MId/) - 标签:树、深度优先搜索、动态规划、二叉树 - 难度:困难 ## 题目链接 -- [剑指 Offer II 051. 节点之和最大的路径 - 力扣](https://leetcode.cn/problems/jC7MId/) +- [LCR 051. 二叉树中的最大路径和 - 力扣](https://leetcode.cn/problems/jC7MId/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 072. \346\261\202\345\271\263\346\226\271\346\240\271.md" b/docs/solutions/LCR/jJ0w9p.md similarity index 83% rename from "Solutions/\345\211\221\346\214\207 Offer II 072. \346\261\202\345\271\263\346\226\271\346\240\271.md" rename to docs/solutions/LCR/jJ0w9p.md index bd51cebe..b0225cc5 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 072. \346\261\202\345\271\263\346\226\271\346\240\271.md" +++ b/docs/solutions/LCR/jJ0w9p.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 072. 求平方根](https://leetcode.cn/problems/jJ0w9p/) +# [LCR 072. x 的平方根](https://leetcode.cn/problems/jJ0w9p/) - 标签:数学、二分查找 - 难度:简单 ## 题目链接 -- [剑指 Offer II 072. 求平方根 - 力扣](https://leetcode.cn/problems/jJ0w9p/) +- [LCR 072. x 的平方根 - 力扣](https://leetcode.cn/problems/jJ0w9p/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 13. \346\234\272\345\231\250\344\272\272\347\232\204\350\277\220\345\212\250\350\214\203\345\233\264.md" b/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof.md similarity index 90% rename from "Solutions/\345\211\221\346\214\207 Offer 13. \346\234\272\345\231\250\344\272\272\347\232\204\350\277\220\345\212\250\350\214\203\345\233\264.md" rename to docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof.md index af601050..e212e650 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 13. \346\234\272\345\231\250\344\272\272\347\232\204\350\277\220\345\212\250\350\214\203\345\233\264.md" +++ b/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 13. 机器人的运动范围](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) +# [LCR 130. 衣橱整理](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) - 标签:深度优先搜索、广度优先搜索、动态规划 - 难度:中等 ## 题目链接 -- [剑指 Offer 13. 机器人的运动范围 - 力扣](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) +- [LCR 130. 衣橱整理 - 力扣](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 14- I. \345\211\252\347\273\263\345\255\220.md" b/docs/solutions/LCR/jian-sheng-zi-lcof.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer 14- I. \345\211\252\347\273\263\345\255\220.md" rename to docs/solutions/LCR/jian-sheng-zi-lcof.md index 57db3edf..a32ed232 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 14- I. \345\211\252\347\273\263\345\255\220.md" +++ b/docs/solutions/LCR/jian-sheng-zi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 14- I. 剪绳子](https://leetcode.cn/problems/jian-sheng-zi-lcof/) +# [LCR 131. 砍竹子 I](https://leetcode.cn/problems/jian-sheng-zi-lcof/) - 标签:数学、动态规划 - 难度:中等 ## 题目链接 -- [剑指 Offer 14- I. 剪绳子 - 力扣](https://leetcode.cn/problems/jian-sheng-zi-lcof/) +- [LCR 131. 砍竹子 I - 力扣](https://leetcode.cn/problems/jian-sheng-zi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" b/docs/solutions/LCR/ju-zhen-zhong-de-lu-jing-lcof.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer 12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" rename to docs/solutions/LCR/ju-zhen-zhong-de-lu-jing-lcof.md index ed03a9a2..700ce2e8 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" +++ b/docs/solutions/LCR/ju-zhen-zhong-de-lu-jing-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 12. 矩阵中的路径](https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/) +# [LCR 129. 字母迷宫](https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/) - 标签:数组、回溯、矩阵 - 难度:中等 ## 题目链接 -- [剑指 Offer 12. 矩阵中的路径 - 力扣](https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/) +- [LCR 129. 字母迷宫 - 力扣](https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 006. \346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\345\255\227\344\271\213\345\222\214.md" b/docs/solutions/LCR/kLl5u1.md similarity index 87% rename from "Solutions/\345\211\221\346\214\207 Offer II 006. \346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\345\255\227\344\271\213\345\222\214.md" rename to docs/solutions/LCR/kLl5u1.md index 80d48f88..c1e0844c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 006. \346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\344\270\244\344\270\252\346\225\260\345\255\227\344\271\213\345\222\214.md" +++ b/docs/solutions/LCR/kLl5u1.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 006. 排序数组中两个数字之和](https://leetcode.cn/problems/kLl5u1/) +# [LCR 006. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/kLl5u1/) - 标签:数组、双指针、二分查找 - 难度:简单 ## 题目链接 -- [剑指 Offer II 006. 排序数组中两个数字之和 - 力扣](https://leetcode.cn/problems/kLl5u1/) +- [LCR 006. 两数之和 II - 输入有序数组 - 力扣](https://leetcode.cn/problems/kLl5u1/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 055. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" b/docs/solutions/LCR/kTOapQ.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 055. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" rename to docs/solutions/LCR/kTOapQ.md index 576aa937..e15e1860 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 055. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\350\277\255\344\273\243\345\231\250.md" +++ b/docs/solutions/LCR/kTOapQ.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 055. 二叉搜索树迭代器](https://leetcode.cn/problems/kTOapQ/) +# [LCR 055. 二叉搜索树迭代器](https://leetcode.cn/problems/kTOapQ/) - 标签:栈、树、设计、二叉搜索树、二叉树、迭代器 - 难度:中等 ## 题目链接 -- [剑指 Offer II 055. 二叉搜索树迭代器 - 力扣](https://leetcode.cn/problems/kTOapQ/) +- [LCR 055. 二叉搜索树迭代器 - 力扣](https://leetcode.cn/problems/kTOapQ/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240.md" b/docs/solutions/LCR/lMSNwu.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240.md" rename to docs/solutions/LCR/lMSNwu.md index 793aebd6..506ee06d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 025. \351\223\276\350\241\250\344\270\255\347\232\204\344\270\244\346\225\260\347\233\270\345\212\240.md" +++ b/docs/solutions/LCR/lMSNwu.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 025. 链表中的两数相加](https://leetcode.cn/problems/lMSNwu/) +# [LCR 025. 两数相加 II](https://leetcode.cn/problems/lMSNwu/) - 标签:栈、链表、数学 - 难度:中等 ## 题目链接 -- [剑指 Offer II 025. 链表中的两数相加 - 力扣](https://leetcode.cn/problems/lMSNwu/) +- [LCR 025. 两数相加 II - 力扣](https://leetcode.cn/problems/lMSNwu/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 47. \347\244\274\347\211\251\347\232\204\346\234\200\345\244\247\344\273\267\345\200\274.md" b/docs/solutions/LCR/li-wu-de-zui-da-jie-zhi-lcof.md similarity index 85% rename from "Solutions/\345\211\221\346\214\207 Offer 47. \347\244\274\347\211\251\347\232\204\346\234\200\345\244\247\344\273\267\345\200\274.md" rename to docs/solutions/LCR/li-wu-de-zui-da-jie-zhi-lcof.md index 55c1488a..c0797148 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 47. \347\244\274\347\211\251\347\232\204\346\234\200\345\244\247\344\273\267\345\200\274.md" +++ b/docs/solutions/LCR/li-wu-de-zui-da-jie-zhi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 47. 礼物的最大价值](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/) +# [LCR 166. 珠宝的最高价值](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/) - 标签:数组、动态规划、矩阵 - 难度:中等 ## 题目链接 -- [剑指 Offer 47. 礼物的最大价值 - 力扣](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/) +- [LCR 166. 珠宝的最高价值 - 力扣](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254k\344\270\252\350\212\202\347\202\271.md" b/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof.md similarity index 79% rename from "Solutions/\345\211\221\346\214\207 Offer 22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254k\344\270\252\350\212\202\347\202\271.md" rename to docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof.md index 1145bc38..575d1b0c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254k\344\270\252\350\212\202\347\202\271.md" +++ b/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 22. 链表中倒数第k个节点](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) +# [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) - 标签:链表、双指针 - 难度:简单 ## 题目链接 -- [剑指 Offer 22. 链表中倒数第k个节点 - 力扣](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) +- [LCR 140. 训练计划 II - 力扣](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 42. \350\277\236\347\273\255\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" b/docs/solutions/LCR/lian-xu-zi-shu-zu-de-zui-da-he-lcof.md similarity index 80% rename from "Solutions/\345\211\221\346\214\207 Offer 42. \350\277\236\347\273\255\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" rename to docs/solutions/LCR/lian-xu-zi-shu-zu-de-zui-da-he-lcof.md index ec253f48..61218216 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 42. \350\277\236\347\273\255\345\255\220\346\225\260\347\273\204\347\232\204\346\234\200\345\244\247\345\222\214.md" +++ b/docs/solutions/LCR/lian-xu-zi-shu-zu-de-zui-da-he-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 42. 连续子数组的最大和](https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) +# [LCR 161. 连续天数的最高销售额](https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) - 标签:数组、分治、动态规划 - 难度:简单 ## 题目链接 -- [剑指 Offer 42. 连续子数组的最大和 - 力扣](https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) +- [LCR 161. 连续天数的最高销售额 - 力扣](https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\350\212\202\347\202\271.md" b/docs/solutions/LCR/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof.md similarity index 83% rename from "Solutions/\345\211\221\346\214\207 Offer 52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\350\212\202\347\202\271.md" rename to docs/solutions/LCR/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof.md index b9311ee3..c4227218 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\350\212\202\347\202\271.md" +++ b/docs/solutions/LCR/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 52. 两个链表的第一个公共节点](https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) +# [LCR 171. 训练计划 V](https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) - 标签:哈希表、链表、双指针 - 难度:简单 ## 题目链接 -- [剑指 Offer 52. 两个链表的第一个公共节点 - 力扣](https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) +- [LCR 171. 训练计划 V - 力扣](https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 034. \345\244\226\346\230\237\350\257\255\350\250\200\346\230\257\345\220\246\346\216\222\345\272\217.md" b/docs/solutions/LCR/lwyVBB.md similarity index 90% rename from "Solutions/\345\211\221\346\214\207 Offer II 034. \345\244\226\346\230\237\350\257\255\350\250\200\346\230\257\345\220\246\346\216\222\345\272\217.md" rename to docs/solutions/LCR/lwyVBB.md index 2cebf50b..a4da5c53 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 034. \345\244\226\346\230\237\350\257\255\350\250\200\346\230\257\345\220\246\346\216\222\345\272\217.md" +++ b/docs/solutions/LCR/lwyVBB.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 034. 外星语言是否排序](https://leetcode.cn/problems/lwyVBB/) +# [LCR 034. 验证外星语词典](https://leetcode.cn/problems/lwyVBB/) - 标签:数组、哈希表、字符串 - 难度:简单 ## 题目链接 -- [剑指 Offer II 034. 外星语言是否排序 - 力扣](https://leetcode.cn/problems/lwyVBB/) +- [LCR 034. 验证外星语词典 - 力扣](https://leetcode.cn/problems/lwyVBB/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 067. \346\234\200\345\244\247\347\232\204\345\274\202\346\210\226.md" b/docs/solutions/LCR/ms70jA.md similarity index 94% rename from "Solutions/\345\211\221\346\214\207 Offer II 067. \346\234\200\345\244\247\347\232\204\345\274\202\346\210\226.md" rename to docs/solutions/LCR/ms70jA.md index 1d79787b..b5c1255d 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 067. \346\234\200\345\244\247\347\232\204\345\274\202\346\210\226.md" +++ b/docs/solutions/LCR/ms70jA.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 067. 最大的异或](https://leetcode.cn/problems/ms70jA/) +# [LCR 067. 数组中两个数的最大异或值](https://leetcode.cn/problems/ms70jA/) - 标签:位运算、字典树、数组、哈希表 - 难度:中等 ## 题目链接 -- [剑指 Offer II 067. 最大的异或 - 力扣](https://leetcode.cn/problems/ms70jA/) +- [LCR 067. 数组中两个数的最大异或值 - 力扣](https://leetcode.cn/problems/ms70jA/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 073. \347\213\222\347\213\222\345\220\203\351\246\231\350\225\211.md" b/docs/solutions/LCR/nZZqjQ.md similarity index 93% rename from "Solutions/\345\211\221\346\214\207 Offer II 073. \347\213\222\347\213\222\345\220\203\351\246\231\350\225\211.md" rename to docs/solutions/LCR/nZZqjQ.md index ae87abb7..e9d09e54 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 073. \347\213\222\347\213\222\345\220\203\351\246\231\350\225\211.md" +++ b/docs/solutions/LCR/nZZqjQ.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 073. 狒狒吃香蕉](https://leetcode.cn/problems/nZZqjQ/) +# [LCR 073. 爱吃香蕉的狒狒](https://leetcode.cn/problems/nZZqjQ/) - 标签:数组、二分查找 - 难度:中等 ## 题目链接 -- [剑指 Offer II 073. 狒狒吃香蕉 - 力扣](https://leetcode.cn/problems/nZZqjQ/) +- [LCR 073. 爱吃香蕉的狒狒 - 力扣](https://leetcode.cn/problems/nZZqjQ/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 108. \345\215\225\350\257\215\346\274\224\345\217\230.md" b/docs/solutions/LCR/om3reC.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 108. \345\215\225\350\257\215\346\274\224\345\217\230.md" rename to docs/solutions/LCR/om3reC.md index 57dc3638..5500ac16 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 108. \345\215\225\350\257\215\346\274\224\345\217\230.md" +++ b/docs/solutions/LCR/om3reC.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 108. 单词演变](https://leetcode.cn/problems/om3reC/) +# [LCR 108. 单词接龙](https://leetcode.cn/problems/om3reC/) - 标签:广度优先搜索、哈希表、字符串 - 难度:困难 ## 题目链接 -- [剑指 Offer II 108. 单词演变 - 力扣](https://leetcode.cn/problems/om3reC/) +- [LCR 108. 单词接龙 - 力扣](https://leetcode.cn/problems/om3reC/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 056. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\344\271\213\345\222\214.md" b/docs/solutions/LCR/opLdQZ.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 056. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\344\271\213\345\222\214.md" rename to docs/solutions/LCR/opLdQZ.md index 25511024..95443742 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 056. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\344\271\213\345\222\214.md" +++ b/docs/solutions/LCR/opLdQZ.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 056. 二叉搜索树中两个节点之和](https://leetcode.cn/problems/opLdQZ/) +# [LCR 056. 两数之和 IV - 输入二叉搜索树](https://leetcode.cn/problems/opLdQZ/) - 标签:树、深度优先搜索、广度优先搜索、二叉搜索树、哈希表、双指针、二叉树 - 难度:简单 ## 题目链接 -- [剑指 Offer II 056. 二叉搜索树中两个节点之和 - 力扣](https://leetcode.cn/problems/opLdQZ/) +- [LCR 056. 两数之和 IV - 输入二叉搜索树 - 力扣](https://leetcode.cn/problems/opLdQZ/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 047. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" b/docs/solutions/LCR/pOCWxh.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 047. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" rename to docs/solutions/LCR/pOCWxh.md index 179a4c64..ad9714bd 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 047. \344\272\214\345\217\211\346\240\221\345\211\252\346\236\235.md" +++ b/docs/solutions/LCR/pOCWxh.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 047. 二叉树剪枝](https://leetcode.cn/problems/pOCWxh/) +# [LCR 047. 二叉树剪枝](https://leetcode.cn/problems/pOCWxh/) - 标签:树、深度优先搜索、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer II 047. 二叉树剪枝 - 力扣](https://leetcode.cn/problems/pOCWxh/) +- [LCR 047. 二叉树剪枝 - 力扣](https://leetcode.cn/problems/pOCWxh/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 55 - II. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/LCR/ping-heng-er-cha-shu-lcof.md similarity index 84% rename from "Solutions/\345\211\221\346\214\207 Offer 55 - II. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/LCR/ping-heng-er-cha-shu-lcof.md index ae199d28..006cfa56 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 55 - II. \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" +++ b/docs/solutions/LCR/ping-heng-er-cha-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 55 - II. 平衡二叉树](https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/) +# [LCR 176. 判断是否为平衡二叉树](https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/) - 标签:树、深度优先搜索、二叉树 - 难度:简单 ## 题目链接 -- [剑指 Offer 55 - II. 平衡二叉树 - 力扣](https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/) +- [LCR 176. 判断是否为平衡二叉树 - 力扣](https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 041. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\345\271\263\345\235\207\345\200\274.md" b/docs/solutions/LCR/qIsx9U.md similarity index 92% rename from "Solutions/\345\211\221\346\214\207 Offer II 041. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\345\271\263\345\235\207\345\200\274.md" rename to docs/solutions/LCR/qIsx9U.md index ced7512d..a49080c3 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 041. \346\273\221\345\212\250\347\252\227\345\217\243\347\232\204\345\271\263\345\235\207\345\200\274.md" +++ b/docs/solutions/LCR/qIsx9U.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 041. 滑动窗口的平均值](https://leetcode.cn/problems/qIsx9U/) +# [LCR 041. 数据流中的移动平均值](https://leetcode.cn/problems/qIsx9U/) - 标签:设计、队列、数组、数据流 - 难度:简单 ## 题目链接 -- [剑指 Offer II 041. 滑动窗口的平均值 - 力扣](https://leetcode.cn/problems/qIsx9U/) +- [LCR 041. 数据流中的移动平均值 - 力扣](https://leetcode.cn/problems/qIsx9U/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 095. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" b/docs/solutions/LCR/qJnOS7.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 095. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" rename to docs/solutions/LCR/qJnOS7.md index bee95db4..a447f25a 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 095. \346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" +++ b/docs/solutions/LCR/qJnOS7.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 095. 最长公共子序列](https://leetcode.cn/problems/qJnOS7/) +# [LCR 095. 最长公共子序列](https://leetcode.cn/problems/qJnOS7/) - 标签:字符串、动态规划 - 难度:中等 ## 题目链接 -- [剑指 Offer II 095. 最长公共子序列 - 力扣](https://leetcode.cn/problems/qJnOS7/) +- [LCR 095. 最长公共子序列 - 力扣](https://leetcode.cn/problems/qJnOS7/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 10- II. \351\235\222\350\233\231\350\267\263\345\217\260\351\230\266\351\227\256\351\242\230.md" b/docs/solutions/LCR/qing-wa-tiao-tai-jie-wen-ti-lcof.md similarity index 81% rename from "Solutions/\345\211\221\346\214\207 Offer 10- II. \351\235\222\350\233\231\350\267\263\345\217\260\351\230\266\351\227\256\351\242\230.md" rename to docs/solutions/LCR/qing-wa-tiao-tai-jie-wen-ti-lcof.md index c1808ffb..6f261465 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 10- II. \351\235\222\350\233\231\350\267\263\345\217\260\351\230\266\351\227\256\351\242\230.md" +++ b/docs/solutions/LCR/qing-wa-tiao-tai-jie-wen-ti-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 10- II. 青蛙跳台阶问题](https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/) +# [LCR 127. 跳跃训练](https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/) - 标签:记忆化搜索、数学、动态规划 - 难度:简单 ## 题目链接 -- [剑指 Offer 10- II. 青蛙跳台阶问题 - 力扣](https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/) +- [LCR 127. 跳跃训练 - 力扣](https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 64. \346\261\2021+2+\342\200\246+n.md" b/docs/solutions/LCR/qiu-12n-lcof.md similarity index 77% rename from "Solutions/\345\211\221\346\214\207 Offer 64. \346\261\2021+2+\342\200\246+n.md" rename to docs/solutions/LCR/qiu-12n-lcof.md index 728ed3da..fa207a81 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 64. \346\261\2021+2+\342\200\246+n.md" +++ b/docs/solutions/LCR/qiu-12n-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 64. 求1+2+…+n](https://leetcode.cn/problems/qiu-12n-lcof/) +# [LCR 189. 设计机械累加器](https://leetcode.cn/problems/qiu-12n-lcof/) - 标签:位运算、递归、脑筋急转弯 - 难度:中等 ## 题目链接 -- [剑指 Offer 64. 求1+2+…+n - 力扣](https://leetcode.cn/problems/qiu-12n-lcof/) +- [LCR 189. 设计机械累加器 - 力扣](https://leetcode.cn/problems/qiu-12n-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 53 - II. 0\357\275\236n-1\344\270\255\347\274\272\345\244\261\347\232\204\346\225\260\345\255\227.md" b/docs/solutions/LCR/que-shi-de-shu-zi-lcof.md similarity index 82% rename from "Solutions/\345\211\221\346\214\207 Offer 53 - II. 0\357\275\236n-1\344\270\255\347\274\272\345\244\261\347\232\204\346\225\260\345\255\227.md" rename to docs/solutions/LCR/que-shi-de-shu-zi-lcof.md index 42349a71..4f0f8478 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 53 - II. 0\357\275\236n-1\344\270\255\347\274\272\345\244\261\347\232\204\346\225\260\345\255\227.md" +++ b/docs/solutions/LCR/que-shi-de-shu-zi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 53 - II. 0~n-1中缺失的数字](https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/) +# [LCR 173. 点名](https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/) - 标签:位运算、数组、哈希表、数学、二分查找 - 难度:简单 ## 题目链接 -- [剑指 Offer 53 - II. 0~n-1中缺失的数字 - 力扣](https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/) +- [LCR 173. 点名 - 力扣](https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 033. \345\217\230\344\275\215\350\257\215\347\273\204.md" b/docs/solutions/LCR/sfvd7V.md similarity index 85% rename from "Solutions/\345\211\221\346\214\207 Offer II 033. \345\217\230\344\275\215\350\257\215\347\273\204.md" rename to docs/solutions/LCR/sfvd7V.md index dbe4c21e..8d0949b4 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 033. \345\217\230\344\275\215\350\257\215\347\273\204.md" +++ b/docs/solutions/LCR/sfvd7V.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 033. 变位词组](https://leetcode.cn/problems/sfvd7V/) +# [LCR 033. 字母异位词分组](https://leetcode.cn/problems/sfvd7V/) - 标签:数组、哈希表、字符串、排序 - 难度:中等 ## 题目链接 -- [剑指 Offer II 033. 变位词组 - 力扣](https://leetcode.cn/problems/sfvd7V/) +- [LCR 033. 字母异位词分组 - 力扣](https://leetcode.cn/problems/sfvd7V/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 18. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\350\212\202\347\202\271.md" b/docs/solutions/LCR/shan-chu-lian-biao-de-jie-dian-lcof.md similarity index 83% rename from "Solutions/\345\211\221\346\214\207 Offer 18. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\350\212\202\347\202\271.md" rename to docs/solutions/LCR/shan-chu-lian-biao-de-jie-dian-lcof.md index c5bcf1bf..908cd592 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 18. \345\210\240\351\231\244\351\223\276\350\241\250\347\232\204\350\212\202\347\202\271.md" +++ b/docs/solutions/LCR/shan-chu-lian-biao-de-jie-dian-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 18. 删除链表的节点](https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/) +# [LCR 136. 删除链表的节点](https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/) - 标签:链表 - 难度:简单 ## 题目链接 -- [剑指 Offer 18. 删除链表的节点 - 力扣](https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/) +- [LCR 136. 删除链表的节点 - 力扣](https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" b/docs/solutions/LCR/shu-de-zi-jie-gou-lcof.md similarity index 90% rename from "Solutions/\345\211\221\346\214\207 Offer 26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" rename to docs/solutions/LCR/shu-de-zi-jie-gou-lcof.md index 0c8334e8..bd7c58da 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" +++ b/docs/solutions/LCR/shu-de-zi-jie-gou-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 26. 树的子结构](https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/) +# [LCR 143. 子结构判断](https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/) - 标签:树、深度优先搜索、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer 26. 树的子结构 - 力扣](https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/) +- [LCR 143. 子结构判断 - 力扣](https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 41. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\344\270\255\344\275\215\346\225\260.md" b/docs/solutions/LCR/shu-ju-liu-zhong-de-zhong-wei-shu-lcof.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer 41. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\344\270\255\344\275\215\346\225\260.md" rename to docs/solutions/LCR/shu-ju-liu-zhong-de-zhong-wei-shu-lcof.md index 809280b4..cd20280b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 41. \346\225\260\346\215\256\346\265\201\344\270\255\347\232\204\344\270\255\344\275\215\346\225\260.md" +++ b/docs/solutions/LCR/shu-ju-liu-zhong-de-zhong-wei-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 41. 数据流中的中位数](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) +# [LCR 160. 数据流中的中位数](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) - 标签:设计、双指针、数据流、排序、堆(优先队列) - 难度:困难 ## 题目链接 -- [剑指 Offer 41. 数据流中的中位数 - 力扣](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) +- [LCR 160. 数据流中的中位数 - 力扣](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" b/docs/solutions/LCR/shu-zhi-de-zheng-shu-ci-fang-lcof.md similarity index 83% rename from "Solutions/\345\211\221\346\214\207 Offer 16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" rename to docs/solutions/LCR/shu-zhi-de-zheng-shu-ci-fang-lcof.md index c995e0f9..13fac5bf 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" +++ b/docs/solutions/LCR/shu-zhi-de-zheng-shu-ci-fang-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 16. 数值的整数次方](https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/) +# [LCR 134. Pow(x, n)](https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/) - 标签:递归、数学 - 难度:中等 ## 题目链接 -- [剑指 Offer 16. 数值的整数次方 - 力扣](https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/) +- [LCR 134. Pow(x, n) - 力扣](https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 44. \346\225\260\345\255\227\345\272\217\345\210\227\344\270\255\346\237\220\344\270\200\344\275\215\347\232\204\346\225\260\345\255\227.md" b/docs/solutions/LCR/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof.md similarity index 86% rename from "Solutions/\345\211\221\346\214\207 Offer 44. \346\225\260\345\255\227\345\272\217\345\210\227\344\270\255\346\237\220\344\270\200\344\275\215\347\232\204\346\225\260\345\255\227.md" rename to docs/solutions/LCR/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof.md index 15e0ec34..2f33abb6 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 44. \346\225\260\345\255\227\345\272\217\345\210\227\344\270\255\346\237\220\344\270\200\344\275\215\347\232\204\346\225\260\345\255\227.md" +++ b/docs/solutions/LCR/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 44. 数字序列中某一位的数字](https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) +# [LCR 163. 找到第 k 位数字](https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) - 标签:数学、二分查找 - 难度:中等 ## 题目链接 -- [剑指 Offer 44. 数字序列中某一位的数字 - 力扣](https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) +- [LCR 163. 找到第 k 位数字 - 力扣](https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 39. \346\225\260\347\273\204\344\270\255\345\207\272\347\216\260\346\254\241\346\225\260\350\266\205\350\277\207\344\270\200\345\215\212\347\232\204\346\225\260\345\255\227.md" b/docs/solutions/LCR/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof.md similarity index 74% rename from "Solutions/\345\211\221\346\214\207 Offer 39. \346\225\260\347\273\204\344\270\255\345\207\272\347\216\260\346\254\241\346\225\260\350\266\205\350\277\207\344\270\200\345\215\212\347\232\204\346\225\260\345\255\227.md" rename to docs/solutions/LCR/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof.md index 0fa6c543..eda53db6 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 39. \346\225\260\347\273\204\344\270\255\345\207\272\347\216\260\346\254\241\346\225\260\350\266\205\350\277\207\344\270\200\345\215\212\347\232\204\346\225\260\345\255\227.md" +++ b/docs/solutions/LCR/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 39. 数组中出现次数超过一半的数字](https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) +# [LCR 158. 库存管理 II](https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) - 标签:数组、哈希表、分治、计数、排序 - 难度:简单 ## 题目链接 -- [剑指 Offer 39. 数组中出现次数超过一半的数字 - 力扣](https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) +- [LCR 158. 库存管理 II - 力扣](https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" b/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md similarity index 96% rename from "Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" rename to docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md index 1cdc68c8..2563d853 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 51. \346\225\260\347\273\204\344\270\255\347\232\204\351\200\206\345\272\217\345\257\271.md" +++ b/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 51. 数组中的逆序对](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) +# [LCR 170. 交易逆序对的总数](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) - 标签:树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 - 难度:困难 ## 题目链接 -- [剑指 Offer 51. 数组中的逆序对 - 力扣](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) +- [LCR 170. 交易逆序对的总数 - 力扣](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 56 - I. \346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" b/docs/solutions/LCR/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof.md similarity index 86% rename from "Solutions/\345\211\221\346\214\207 Offer 56 - I. \346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" rename to docs/solutions/LCR/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof.md index 2e6cf764..9a6ff8cf 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 56 - I. \346\225\260\347\273\204\344\270\255\346\225\260\345\255\227\345\207\272\347\216\260\347\232\204\346\254\241\346\225\260.md" +++ b/docs/solutions/LCR/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 56 - I. 数组中数字出现的次数](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) +# [LCR 177. 撞色搭配](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) - 标签:位运算、数组 - 难度:中等 ## 题目链接 -- [剑指 Offer 56 - I. 数组中数字出现的次数 - 力扣](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) +- [LCR 177. 撞色搭配 - 力扣](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 03. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" b/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof.md similarity index 73% rename from "Solutions/\345\211\221\346\214\207 Offer 03. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" rename to docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof.md index 3b39660b..4e33e1e9 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 03. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" +++ b/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 03. 数组中重复的数字](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) +# [LCR 120. 寻找文件副本](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) - 标签:数组、哈希表、排序 - 难度:简单 ## 题目链接 -- [剑指 Offer 03. 数组中重复的数字 - 力扣](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) +- [LCR 120. 寻找文件副本 - 力扣](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" b/docs/solutions/LCR/shun-shi-zhen-da-yin-ju-zhen-lcof.md similarity index 87% rename from "Solutions/\345\211\221\346\214\207 Offer 29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" rename to docs/solutions/LCR/shun-shi-zhen-da-yin-ju-zhen-lcof.md index 2fb38218..996646e6 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" +++ b/docs/solutions/LCR/shun-shi-zhen-da-yin-ju-zhen-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 29. 顺时针打印矩阵](https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/) +# [LCR 146. 螺旋遍历二维数组](https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/) - 标签:数组、矩阵、模拟 - 难度:简单 ## 题目链接 -- [剑指 Offer 29. 顺时针打印矩阵 - 力扣](https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/) +- [LCR 146. 螺旋遍历二维数组 - 力扣](https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 05. \346\233\277\346\215\242\347\251\272\346\240\274.md" b/docs/solutions/LCR/ti-huan-kong-ge-lcof.md similarity index 82% rename from "Solutions/\345\211\221\346\214\207 Offer 05. \346\233\277\346\215\242\347\251\272\346\240\274.md" rename to docs/solutions/LCR/ti-huan-kong-ge-lcof.md index b1772cc2..172e6e1e 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 05. \346\233\277\346\215\242\347\251\272\346\240\274.md" +++ b/docs/solutions/LCR/ti-huan-kong-ge-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 05. 替换空格](https://leetcode.cn/problems/ti-huan-kong-ge-lcof/) +# [LCR 122. 路径加密](https://leetcode.cn/problems/ti-huan-kong-ge-lcof/) - 标签:字符串 - 难度:简单 ## 题目链接 -- [剑指 Offer 05. 替换空格 - 力扣](https://leetcode.cn/problems/ti-huan-kong-ge-lcof/) +- [LCR 122. 路径加密 - 力扣](https://leetcode.cn/problems/ti-huan-kong-ge-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 012. \345\267\246\345\217\263\344\270\244\350\276\271\345\255\220\346\225\260\347\273\204\347\232\204\345\222\214\347\233\270\347\255\211.md" b/docs/solutions/LCR/tvdfij.md similarity index 78% rename from "Solutions/\345\211\221\346\214\207 Offer II 012. \345\267\246\345\217\263\344\270\244\350\276\271\345\255\220\346\225\260\347\273\204\347\232\204\345\222\214\347\233\270\347\255\211.md" rename to docs/solutions/LCR/tvdfij.md index b3130ca5..07ab138b 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 012. \345\267\246\345\217\263\344\270\244\350\276\271\345\255\220\346\225\260\347\273\204\347\232\204\345\222\214\347\233\270\347\255\211.md" +++ b/docs/solutions/LCR/tvdfij.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 012. 左右两边子数组的和相等](https://leetcode.cn/problems/tvdfij/) +# [LCR 012. 寻找数组的中心下标](https://leetcode.cn/problems/tvdfij/) - 标签:数组、前缀和 - 难度:简单 ## 题目链接 -- [剑指 Offer II 012. 左右两边子数组的和相等 - 力扣](https://leetcode.cn/problems/tvdfij/) +- [LCR 012. 寻找数组的中心下标 - 力扣](https://leetcode.cn/problems/tvdfij/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" b/docs/solutions/LCR/uUsW3B.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" rename to docs/solutions/LCR/uUsW3B.md index 722bdbfc..5215ce75 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 080. \345\220\253\346\234\211 k \344\270\252\345\205\203\347\264\240\347\232\204\347\273\204\345\220\210.md" +++ b/docs/solutions/LCR/uUsW3B.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 080. 含有 k 个元素的组合](https://leetcode.cn/problems/uUsW3B/) +# [LCR 080. 组合](https://leetcode.cn/problems/uUsW3B/) - 标签:数组、回溯 - 难度:中等 ## 题目链接 -- [剑指 Offer II 080. 含有 k 个元素的组合 - 力扣](https://leetcode.cn/problems/uUsW3B/) +- [LCR 080. 组合 - 力扣](https://leetcode.cn/problems/uUsW3B/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 106. \344\272\214\345\210\206\345\233\276.md" b/docs/solutions/LCR/vEAB3K.md similarity index 94% rename from "Solutions/\345\211\221\346\214\207 Offer II 106. \344\272\214\345\210\206\345\233\276.md" rename to docs/solutions/LCR/vEAB3K.md index 3b55f18d..1c0df49c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 106. \344\272\214\345\210\206\345\233\276.md" +++ b/docs/solutions/LCR/vEAB3K.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 106. 二分图](https://leetcode.cn/problems/vEAB3K/) +# [LCR 106. 判断二分图](https://leetcode.cn/problems/vEAB3K/) - 标签:深度优先搜索、广度优先搜索、并查集、图 - 难度:中等 ## 题目链接 -- [剑指 Offer II 106. 二分图 - 力扣](https://leetcode.cn/problems/vEAB3K/) +- [LCR 106. 判断二分图 - 力扣](https://leetcode.cn/problems/vEAB3K/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 111. \350\256\241\347\256\227\351\231\244\346\263\225.md" b/docs/solutions/LCR/vlzXQL.md similarity index 96% rename from "Solutions/\345\211\221\346\214\207 Offer II 111. \350\256\241\347\256\227\351\231\244\346\263\225.md" rename to docs/solutions/LCR/vlzXQL.md index 06c3db6d..f774a008 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 111. \350\256\241\347\256\227\351\231\244\346\263\225.md" +++ b/docs/solutions/LCR/vlzXQL.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 111. 计算除法](https://leetcode.cn/problems/vlzXQL/) +# [LCR 111. 除法求值](https://leetcode.cn/problems/vlzXQL/) - 标签:深度优先搜索、广度优先搜索、并查集、图、数组、最短路 - 难度:中等 ## 题目链接 -- [剑指 Offer II 111. 计算除法 - 力扣](https://leetcode.cn/problems/vlzXQL/) +- [LCR 111. 除法求值 - 力扣](https://leetcode.cn/problems/vlzXQL/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 078. \345\220\210\345\271\266\346\216\222\345\272\217\351\223\276\350\241\250.md" b/docs/solutions/LCR/vvXgSW.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 078. \345\220\210\345\271\266\346\216\222\345\272\217\351\223\276\350\241\250.md" rename to docs/solutions/LCR/vvXgSW.md index 0ffd9591..4c6728ea 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 078. \345\220\210\345\271\266\346\216\222\345\272\217\351\223\276\350\241\250.md" +++ b/docs/solutions/LCR/vvXgSW.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 078. 合并排序链表](https://leetcode.cn/problems/vvXgSW/) +# [LCR 078. 合并 K 个升序链表](https://leetcode.cn/problems/vvXgSW/) - 标签:链表、分治、堆(优先队列)、归并排序 - 难度:困难 ## 题目链接 -- [剑指 Offer II 078. 合并排序链表 - 力扣](https://leetcode.cn/problems/vvXgSW/) +- [LCR 078. 合并 K 个升序链表 - 力扣](https://leetcode.cn/problems/vvXgSW/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 003. \345\211\215 n \344\270\252\346\225\260\345\255\227\344\272\214\350\277\233\345\210\266\344\270\255 1 \347\232\204\344\270\252\346\225\260.md" b/docs/solutions/LCR/w3tCBm.md similarity index 80% rename from "Solutions/\345\211\221\346\214\207 Offer II 003. \345\211\215 n \344\270\252\346\225\260\345\255\227\344\272\214\350\277\233\345\210\266\344\270\255 1 \347\232\204\344\270\252\346\225\260.md" rename to docs/solutions/LCR/w3tCBm.md index 89d6f54f..fa303277 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 003. \345\211\215 n \344\270\252\346\225\260\345\255\227\344\272\214\350\277\233\345\210\266\344\270\255 1 \347\232\204\344\270\252\346\225\260.md" +++ b/docs/solutions/LCR/w3tCBm.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 003. 前 n 个数字二进制中 1 的个数](https://leetcode.cn/problems/w3tCBm/) +# [LCR 003. 比特位计数](https://leetcode.cn/problems/w3tCBm/) - 标签:位运算、动态规划 - 难度:简单 ## 题目链接 -- [剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 - 力扣](https://leetcode.cn/problems/w3tCBm/) +- [LCR 003. 比特位计数 - 力扣](https://leetcode.cn/problems/w3tCBm/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 054. \346\211\200\346\234\211\345\244\247\344\272\216\347\255\211\344\272\216\350\212\202\347\202\271\347\232\204\345\200\274\344\271\213\345\222\214.md" b/docs/solutions/LCR/w6cpku.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer II 054. \346\211\200\346\234\211\345\244\247\344\272\216\347\255\211\344\272\216\350\212\202\347\202\271\347\232\204\345\200\274\344\271\213\345\222\214.md" rename to docs/solutions/LCR/w6cpku.md index 2ec38886..dd25e693 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 054. \346\211\200\346\234\211\345\244\247\344\272\216\347\255\211\344\272\216\350\212\202\347\202\271\347\232\204\345\200\274\344\271\213\345\222\214.md" +++ b/docs/solutions/LCR/w6cpku.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 054. 所有大于等于节点的值之和](https://leetcode.cn/problems/w6cpku/) +# [LCR 054. 把二叉搜索树转换为累加树](https://leetcode.cn/problems/w6cpku/) - 标签:树、深度优先搜索、二叉搜索树、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer II 054. 所有大于等于节点的值之和 - 力扣](https://leetcode.cn/problems/w6cpku/) +- [LCR 054. 把二叉搜索树转换为累加树 - 力扣](https://leetcode.cn/problems/w6cpku/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 016. \344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/LCR/wtcaE1.md similarity index 83% rename from "Solutions/\345\211\221\346\214\207 Offer II 016. \344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/LCR/wtcaE1.md index 0b707a9b..e2b91a16 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 016. \344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\346\234\200\351\225\277\345\255\220\345\255\227\347\254\246\344\270\262.md" +++ b/docs/solutions/LCR/wtcaE1.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 016. 不含重复字符的最长子字符串](https://leetcode.cn/problems/wtcaE1/) +# [LCR 016. 无重复字符的最长子串](https://leetcode.cn/problems/wtcaE1/) - 标签:哈希表、字符串、滑动窗口 - 难度:中等 ## 题目链接 -- [剑指 Offer II 016. 不含重复字符的最长子字符串 - 力扣](https://leetcode.cn/problems/wtcaE1/) +- [LCR 016. 无重复字符的最长子串 - 力扣](https://leetcode.cn/problems/wtcaE1/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 001. \346\225\264\346\225\260\351\231\244\346\263\225.md" b/docs/solutions/LCR/xoh6Oh.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer II 001. \346\225\264\346\225\260\351\231\244\346\263\225.md" rename to docs/solutions/LCR/xoh6Oh.md index 583c3826..11ed6615 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 001. \346\225\264\346\225\260\351\231\244\346\263\225.md" +++ b/docs/solutions/LCR/xoh6Oh.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 001. 整数除法](https://leetcode.cn/problems/xoh6Oh/) +# [LCR 001. 两数相除](https://leetcode.cn/problems/xoh6Oh/) - 标签:位运算、数学 - 难度:简单 ## 题目链接 -- [剑指 Offer II 001. 整数除法 - 力扣](https://leetcode.cn/problems/xoh6Oh/) +- [LCR 001. 两数相除 - 力扣](https://leetcode.cn/problems/xoh6Oh/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 37. \345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/LCR/xu-lie-hua-er-cha-shu-lcof.md similarity index 89% rename from "Solutions/\345\211\221\346\214\207 Offer 37. \345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/LCR/xu-lie-hua-er-cha-shu-lcof.md index f181e606..48ddfbd0 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 37. \345\272\217\345\210\227\345\214\226\344\272\214\345\217\211\346\240\221.md" +++ b/docs/solutions/LCR/xu-lie-hua-er-cha-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 37. 序列化二叉树](https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/) +# [LCR 156. 序列化与反序列化二叉树](https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/) - 标签:树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 - 难度:困难 ## 题目链接 -- [剑指 Offer 37. 序列化二叉树 - 力扣](https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/) +- [LCR 156. 序列化与反序列化二叉树 - 力扣](https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" b/docs/solutions/LCR/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer 11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" rename to docs/solutions/LCR/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof.md index 3de5c887..84571ab0 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" +++ b/docs/solutions/LCR/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 11. 旋转数组的最小数字](https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) +# [LCR 128. 库存管理 I](https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) - 标签:数组、二分查找 - 难度:简单 ## 题目链接 -- [剑指 Offer 11. 旋转数组的最小数字 - 力扣](https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) +- [LCR 128. 库存管理 I - 力扣](https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 076. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254 k \345\244\247\347\232\204\346\225\260\345\255\227.md" b/docs/solutions/LCR/xx4gT2.md similarity index 96% rename from "Solutions/\345\211\221\346\214\207 Offer II 076. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254 k \345\244\247\347\232\204\346\225\260\345\255\227.md" rename to docs/solutions/LCR/xx4gT2.md index ea5a929c..16470ff7 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 076. \346\225\260\347\273\204\344\270\255\347\232\204\347\254\254 k \345\244\247\347\232\204\346\225\260\345\255\227.md" +++ b/docs/solutions/LCR/xx4gT2.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 076. 数组中的第 k 大的数字](https://leetcode.cn/problems/xx4gT2/) +# [LCR 076. 数组中的第 K 个最大元素](https://leetcode.cn/problems/xx4gT2/) - 标签:数组、分治、快速选择、排序、堆(优先队列) - 难度:中等 ## 题目链接 -- [剑指 Offer II 076. 数组中的第 k 大的数字 - 力扣](https://leetcode.cn/problems/xx4gT2/) +- [LCR 076. 数组中的第 K 个最大元素 - 力扣](https://leetcode.cn/problems/xx4gT2/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 09. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" b/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof.md similarity index 86% rename from "Solutions/\345\211\221\346\214\207 Offer 09. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" rename to docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof.md index ba129782..636e2751 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 09. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" +++ b/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 09. 用两个栈实现队列](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) +# [LCR 125. 图书整理 II](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) - 标签:栈、设计、队列 - 难度:简单 ## 题目链接 -- [剑指 Offer 09. 用两个栈实现队列 - 力扣](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) +- [LCR 125. 图书整理 II - 力扣](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" b/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof.md similarity index 91% rename from "Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" rename to docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof.md index 65b74b0d..5fcd7d09 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 62. \345\234\206\345\234\210\344\270\255\346\234\200\345\220\216\345\211\251\344\270\213\347\232\204\346\225\260\345\255\227.md" +++ b/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 62. 圆圈中最后剩下的数字](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) +# [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) - 标签:递归、数学 - 难度:简单 ## 题目链接 -- [剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) +- [LCR 187. 破冰游戏 - 力扣](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 066. \345\215\225\350\257\215\344\271\213\345\222\214.md" b/docs/solutions/LCR/z1R5dt.md similarity index 93% rename from "Solutions/\345\211\221\346\214\207 Offer II 066. \345\215\225\350\257\215\344\271\213\345\222\214.md" rename to docs/solutions/LCR/z1R5dt.md index 7006ac8c..f833f895 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 066. \345\215\225\350\257\215\344\271\213\345\222\214.md" +++ b/docs/solutions/LCR/z1R5dt.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 066. 单词之和](https://leetcode.cn/problems/z1R5dt/) +# [LCR 066. 键值映射](https://leetcode.cn/problems/z1R5dt/) - 标签:设计、字典树、哈希表、字符串 - 难度:中等 ## 题目链接 -- [剑指 Offer II 066. 单词之和 - 力扣](https://leetcode.cn/problems/z1R5dt/) +- [LCR 066. 键值映射 - 力扣](https://leetcode.cn/problems/z1R5dt/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 53 - I. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\346\225\260\345\255\227 I.md" b/docs/solutions/LCR/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof.md similarity index 83% rename from "Solutions/\345\211\221\346\214\207 Offer 53 - I. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\346\225\260\345\255\227 I.md" rename to docs/solutions/LCR/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof.md index 6327314b..73ea3076 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 53 - I. \345\234\250\346\216\222\345\272\217\346\225\260\347\273\204\344\270\255\346\237\245\346\211\276\346\225\260\345\255\227 I.md" +++ b/docs/solutions/LCR/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 53 - I. 在排序数组中查找数字 I](https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) +# [LCR 172. 统计目标成绩的出现次数](https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) - 标签:数组、二分查找 - 难度:简单 ## 题目链接 -- [剑指 Offer 53 - I. 在排序数组中查找数字 I - 力扣](https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) +- [LCR 172. 统计目标成绩的出现次数 - 力扣](https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 31. \346\240\210\347\232\204\345\216\213\345\205\245\343\200\201\345\274\271\345\207\272\345\272\217\345\210\227.md" b/docs/solutions/LCR/zhan-de-ya-ru-dan-chu-xu-lie-lcof.md similarity index 75% rename from "Solutions/\345\211\221\346\214\207 Offer 31. \346\240\210\347\232\204\345\216\213\345\205\245\343\200\201\345\274\271\345\207\272\345\272\217\345\210\227.md" rename to docs/solutions/LCR/zhan-de-ya-ru-dan-chu-xu-lie-lcof.md index 47edc5b8..ba715cab 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 31. \346\240\210\347\232\204\345\216\213\345\205\245\343\200\201\345\274\271\345\207\272\345\272\217\345\210\227.md" +++ b/docs/solutions/LCR/zhan-de-ya-ru-dan-chu-xu-lie-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 31. 栈的压入、弹出序列](https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) +# [LCR 148. 验证图书取出顺序](https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) - 标签:栈、数组、模拟 - 难度:中等 ## 题目链接 -- [剑指 Offer 31. 栈的压入、弹出序列 - 力扣](https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) +- [LCR 148. 验证图书取出顺序 - 力扣](https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 07. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" b/docs/solutions/LCR/zhong-jian-er-cha-shu-lcof.md similarity index 90% rename from "Solutions/\345\211\221\346\214\207 Offer 07. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" rename to docs/solutions/LCR/zhong-jian-er-cha-shu-lcof.md index f9c6c4a5..d8c6b348 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 07. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" +++ b/docs/solutions/LCR/zhong-jian-er-cha-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 07. 重建二叉树](https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/) +# [LCR 124. 推理二叉树](https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/) - 标签:树、数组、哈希表、分治、二叉树 - 难度:中等 ## 题目链接 -- [剑指 Offer 07. 重建二叉树 - 力扣](https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/) +- [LCR 124. 推理二叉树 - 力扣](https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 38. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" b/docs/solutions/LCR/zi-fu-chuan-de-pai-lie-lcof.md similarity index 88% rename from "Solutions/\345\211\221\346\214\207 Offer 38. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" rename to docs/solutions/LCR/zi-fu-chuan-de-pai-lie-lcof.md index deee93d1..c5cdf821 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 38. \345\255\227\347\254\246\344\270\262\347\232\204\346\216\222\345\210\227.md" +++ b/docs/solutions/LCR/zi-fu-chuan-de-pai-lie-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 38. 字符串的排列](https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/) +# [LCR 157. 套餐内商品的排列顺序](https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/) - 标签:字符串、回溯 - 难度:中等 ## 题目链接 -- [剑指 Offer 38. 字符串的排列 - 力扣](https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/) +- [LCR 157. 套餐内商品的排列顺序 - 力扣](https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer II 109. \345\274\200\345\257\206\347\240\201\351\224\201.md" b/docs/solutions/LCR/zlDJc7.md similarity index 94% rename from "Solutions/\345\211\221\346\214\207 Offer II 109. \345\274\200\345\257\206\347\240\201\351\224\201.md" rename to docs/solutions/LCR/zlDJc7.md index 75524f10..b70ff05c 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer II 109. \345\274\200\345\257\206\347\240\201\351\224\201.md" +++ b/docs/solutions/LCR/zlDJc7.md @@ -1,11 +1,11 @@ -# [剑指 Offer II 109. 开密码锁](https://leetcode.cn/problems/zlDJc7/) +# [LCR 109. 打开转盘锁](https://leetcode.cn/problems/zlDJc7/) - 标签:广度优先搜索、数组、哈希表、字符串 - 难度:中等 ## 题目链接 -- [剑指 Offer II 109. 开密码锁 - 力扣](https://leetcode.cn/problems/zlDJc7/) +- [LCR 109. 打开转盘锁 - 力扣](https://leetcode.cn/problems/zlDJc7/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 48. \346\234\200\351\225\277\344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/LCR/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof.md similarity index 78% rename from "Solutions/\345\211\221\346\214\207 Offer 48. \346\234\200\351\225\277\344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/LCR/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof.md index b2bc6449..55f46821 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 48. \346\234\200\351\225\277\344\270\215\345\220\253\351\207\215\345\244\215\345\255\227\347\254\246\347\232\204\345\255\220\345\255\227\347\254\246\344\270\262.md" +++ b/docs/solutions/LCR/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 48. 最长不含重复字符的子字符串](https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) +# [LCR 167. 招式拆解 I](https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) - 标签:哈希表、字符串、滑动窗口 - 难度:中等 ## 题目链接 -- [剑指 Offer 48. 最长不含重复字符的子字符串 - 力扣](https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) +- [LCR 167. 招式拆解 I - 力扣](https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 40. \346\234\200\345\260\217\347\232\204k\344\270\252\346\225\260.md" b/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof.md similarity index 96% rename from "Solutions/\345\211\221\346\214\207 Offer 40. \346\234\200\345\260\217\347\232\204k\344\270\252\346\225\260.md" rename to docs/solutions/LCR/zui-xiao-de-kge-shu-lcof.md index 6750b918..475b6eb6 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 40. \346\234\200\345\260\217\347\232\204k\344\270\252\346\225\260.md" +++ b/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 40. 最小的k个数](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) +# [LCR 159. 库存管理 III](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) - 标签:数组、分治、快速选择、排序、堆(优先队列) - 难度:简单 ## 题目链接 -- [剑指 Offer 40. 最小的k个数 - 力扣](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) +- [LCR 159. 库存管理 III - 力扣](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) ## 题目大意 diff --git "a/Solutions/\345\211\221\346\214\207 Offer 58 - II. \345\267\246\346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" b/docs/solutions/LCR/zuo-xuan-zhuan-zi-fu-chuan-lcof.md similarity index 77% rename from "Solutions/\345\211\221\346\214\207 Offer 58 - II. \345\267\246\346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" rename to docs/solutions/LCR/zuo-xuan-zhuan-zi-fu-chuan-lcof.md index 32bf7382..6b661c62 100644 --- "a/Solutions/\345\211\221\346\214\207 Offer 58 - II. \345\267\246\346\227\213\350\275\254\345\255\227\347\254\246\344\270\262.md" +++ b/docs/solutions/LCR/zuo-xuan-zhuan-zi-fu-chuan-lcof.md @@ -1,11 +1,11 @@ -# [剑指 Offer 58 - II. 左旋转字符串](https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/) +# [LCR 182. 动态口令](https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/) - 标签:数学、双指针、字符串 - 难度:简单 ## 题目链接 -- [剑指 Offer 58 - II. 左旋转字符串 - 力扣](https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/) +- [LCR 182. 动态口令 - 力扣](https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/) ## 题目大意 diff --git a/docs/solutions/index.md b/docs/solutions/index.md new file mode 100644 index 00000000..6e892b6f --- /dev/null +++ b/docs/solutions/index.md @@ -0,0 +1,31 @@ +## 本章内容 + +- [第 1 ~ 99 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/) +- [第 100 ~ 199 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/) +- [第 200 ~ 299 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/) +- [第 300 ~ 399 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/) +- [第 400 ~ 499 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/) +- [第 500 ~ 599 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/) +- [第 600 ~ 699 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/) +- [第 700 ~ 799 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/) +- [第 800 ~ 899 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/) +- [第 900 ~ 999 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/) +- [第 1000 ~ 1099 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/) +- [第 1100 ~ 1199 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/) +- [第 1200 ~ 1299 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/) +- [第 1300 ~ 1399 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/) +- [第 1400 ~ 1499 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/) +- [第 1500 ~ 1599 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/) +- [第 1600 ~ 1699 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/) +- [第 1700 ~ 1799 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/) +- [第 1800 ~ 1899 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/) +- [第 1900 ~ 1999 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/) +- [第 2000 ~ 2099 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/) +- [第 2100 ~ 2199 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/) +- [第 2200 ~ 2299 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/) +- [第 2300 ~ 2399 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2300-2399/) +- [第 2400 ~ 2499 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2400-2499/) +- [第 2500 ~ 2599 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/) +- [第 2700 ~ 2799 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/) +- [面试题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/) +- [LCR 系列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/) From d0240d0840bb1c8a0badb487f37641432254089d Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 17 Jun 2025 16:53:10 +0800 Subject: [PATCH 143/158] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 67 ++++++++++++++----- docs/00_preface/00_01_about_the_book.md | 73 --------------------- docs/00_preface/00_01_preface.md | 52 +++++++++++++++ docs/README.md | 85 ++++++++++++------------- docs/index.md | 71 --------------------- 5 files changed, 144 insertions(+), 204 deletions(-) delete mode 100644 docs/00_preface/00_01_about_the_book.md create mode 100644 docs/00_preface/00_01_preface.md delete mode 100644 docs/index.md diff --git a/README.md b/README.md index 004d2fd1..c2ea60c9 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,66 @@ -# 算法通关手册(LeetCode) +## 1. 本书简介 -## 01. 关于本书 +本书不仅仅只是一本算法题解书,更是一本算法与数据结构基础知识的讲解书。 - 超详细的 **「算法与数据结构」** 基础讲解教程,**「LeetCode 800+ 道」** 经典题目详细解析。 - 本项目易于理解,没有大跨度的思维跳跃,项目中使用大量图示、例子来帮助理解。 - 本项目先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。 - 本项目从各大知名互联网公司面试算法题中整理汇总了 **「LeetCode 200 道高频面试题」**,帮助面试者更有针对性的准备面试。 -| 在线阅读 | https://algo.itcharge.cn | -| -------- | ------------------------------------ | -| 开源地址 | https://github.com/itcharge/AlgoNote | +### 1.1 源码地址 -

      - - -

      -## 02. +本书内容及代码都放在 [Github repo](https://github.com/itcharge/AlgoNote) 中,欢迎在下方项目中 **「Star ⭐️ 」** 和 **「Fork」**,这是对我最大的鼓励和支持。 -我是一名 iOS / macOS 的开发程序员,另外也是北航软院的硕士。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。 +- Github 地址:[https://github.com/itcharge/AlgoNote](https://github.com/itcharge/AlgoNote) + +### 1.2 目标读者 + +- 拥有 Python 编程基础或其他编程语言基础的编程爱好者 +- 对 LeetCode 刷题感兴趣或准备算法面试的面试人员 +- 对算法感兴趣的计算机专业学生或程序员 +- 想要提升编程思维和问题解决能力的开发者 + +### 1.3 内容结构 + +本书采用算法与数据结构相结合的方法,把内容分为如下几个主要部分: + +- **序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 +- **第 1 章 数组**:讲解数组的基本概念、数组的基本操作。 +- **第 2 章 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。 +- **第 3 章 堆栈、队列、哈希表**:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 +- **第 4 章 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。 +- **第 5 章 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。 +- **第 6 章 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。 +- **第 7 章 基础算法**:介绍基本的算法思想。包括枚举、递归、分治、回溯、贪心以及位运算。 +- **第 8 章 动态规划**:介绍动态规划的基础知识、各种动态规划题型的解法。 +- **题目解析**:讲解 LeetCode 上刷过的所有题目,可按照对应题号进行检索和学习。 + +### 1.4 使用说明 + +- 本电子书的左侧为所有章节目录导航,可直接点击对应章节跳转阅读。 +- 本电子书左上角有搜索栏,可以帮你迅速找到想看的章节和题解文章。 +- 本电子书每页都接入了 giscus 评论系统,可在每页下方的评论框进行评论(需使用 GitHub 账号登录)。 +- 建议按照章节顺序学习,循序渐进地掌握各个知识点。 +- 每章末尾都配有练习题,建议及时完成以巩固所学知识。 + +## 2. 相关说明 + +### 2.1 关于作者 + +我是一名 iOS / macOS 的开发程序员,研究生毕业于北航软件学院。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。 我从 2021 年 03 月 30 日开始每日在 LeetCode 刷题,到 2022 年 06 月 08 日已经刷了 1000+ 道题目,并且完成了 800+ 道题解。努力向着 1000+、1500+、2000+ 道题解前进。 -![](./Assets/Images/itcharge-qr-code.png) +### 2.2 互助与勘误 + +限于本人的水平和经验,书中一定不乏纰漏和谬误之处。恳切希望读者给予批评指正。这将有利于我改进和提高,以帮助更多的读者。如果您对本书有任何评论和建议,或者遇到问题需要帮助,可在每页评论区留言,或者致信作者邮箱 [i@itcharge.cn](mailto:i@itcharge.cn),我将不胜感激。 + +### 2.3 版权说明 + +- 本书采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 +- 本书题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 + +### 2.4 致谢 -## 04. 版权说明 +在本书构思与写作阶段,很多朋友给我提出了有益的意见和建议。这些意见和建议令我受益匪浅。感谢在本书著作准备过程中,帮助过我的朋友,以及一起陪我刷题打卡的朋友,还有提供宝贵意见的读者。谢谢诸位。 -- 本教程采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 -- 本教程中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 diff --git a/docs/00_preface/00_01_about_the_book.md b/docs/00_preface/00_01_about_the_book.md deleted file mode 100644 index 7b2f251b..00000000 --- a/docs/00_preface/00_01_about_the_book.md +++ /dev/null @@ -1,73 +0,0 @@ -## 1. 本书简介 - -本书不仅仅只是一本算法题解书,更是一本算法与数据结构基础知识的讲解书。 - -- 超详细的 **「算法与数据结构」** 基础讲解教程,**「LeetCode 800+ 道」** 经典题目详细解析。 -- 本项目易于理解,没有大跨度的思维跳跃,项目中使用大量图示、例子来帮助理解。 -- 本项目先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。 -- 本项目从各大知名互联网公司面试算法题中整理汇总了 **「LeetCode 200 道高频面试题」**,帮助面试者更有针对性的准备面试。 - -### 1.1 目标读者 - -- 拥有 Python 编程基础或其他编程语言基础的编程爱好者 -- 对 LeetCode 刷题感兴趣或准备算法面试的面试人员 -- 对算法感兴趣的计算机专业学生或程序员 -- 想要提升编程思维和问题解决能力的开发者 - -### 1.2 内容结构 - -本书采用算法与数据结构相结合的方法,把内容分为如下几个主要部分: - -- **序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 -- **第 1 章 数组**:讲解数组的基本概念、数组的基本操作。 -- **第 2 章 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。 -- **第 3 章 堆栈、队列、哈希表**:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 -- **第 4 章 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。 -- **第 5 章 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。 -- **第 6 章 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。 -- **第 7 章 基础算法**:介绍基本的算法思想。包括枚举、递归、分治、回溯、贪心以及位运算。 -- **第 8 章 动态规划**:介绍动态规划的基础知识、各种动态规划题型的解法。 -- **题目解析**:讲解 LeetCode 上刷过的所有题目,可按照对应题号进行检索和学习。 - -### 1.3 使用说明 - -- 本电子书的左侧为所有章节目录导航,可直接点击对应章节跳转阅读。 -- 本电子书左上角有搜索栏,可以帮你迅速找到想看的章节和题解文章。 -- 本电子书每页都接入了 giscus 评论系统,可在每页下方的评论框进行评论(需使用 GitHub 账号登录)。 -- 建议按照章节顺序学习,循序渐进地掌握各个知识点。 -- 每章末尾都配有练习题,建议及时完成以巩固所学知识。 - -## 2. 写作初衷与算法价值 - -### 2.1 本书起因 - -我想写一本通俗易懂的算法书已经很久了,久到大概有 6 年那么久。至今我还记着上大学时立下的 flag,我要把我所学的算法知识总结起来,整理成册,编辑成书。然后大大方方的在封面书上自己的昵称,再把它分享给想要学习算法的朋友们看。 - -结果是万万没想到,这一晃过去,毕业后参加工作都已经 5 年了,每天忙于开发需求、业务逻辑,写书这件事也跟其他大多数的待办事项和计划清单一样,被无限期地闲置一旁,再也不管不顾了。 - -不过,好在是今年我又重新拾起了算法,开始和朋友一起愉快的在 LeetCode 上刷题。于是往日的目标又浮现在了眼前,所以这次痛下决心,立志写一本浅显易懂、图文并茂的算法书,能够让没有算法基础的新手能够通过这本书学到一些「算法和数据结构」相关知识,并通过在 LeetCode 刷题的方式,锻炼自己的解决问题的能力和思维方式。 - -### 2.2 算法的重要性 - -**「算法和数据结构」** 是计算机程序设计的重要理论技术基础,但很多程序员忽略了它的重要性。在日常开发工作中,最多的情况是使用成熟的开发框架,利用已经封装好的接口,进行 CRUD(增删改查)操作,似乎很少会需要自己实现相应的数据结构和算法。 - -况且工作中用到的编程语言、开发框架、开发平台,更新速度堪比摩尔定律。以前端为例,React 还没学明白呢,Vue 就火起来了。Vue 2.0 的文档还在研究呢,Vue 3.0 就发布了。很多时候,连新的技术还学不过来呢,哪还有时间去专门研究算法和数据结构呢。 - -诚然,语言、技术、框架固然重要,但背后的计算机算法和理论更为重要。因为语言、技术、框架的更新日新月异,但万变不离其宗的是背后的算法和理论,例如:**数据结构**、**算法**、**编译原理**、**计算机网络**、**计算机体系结构** 等等。任凭新技术如何变化,只要掌握了这些计算机科学的核心理论,就可以见招拆招,让自己立于不败之地。从此无论是看懂底层系统的设计原理、框架背后的设计思想,还是学习新技术、提升工作实战的效率,都可以做到得心应手。 - -**学习数据结构与算法的关键,在于掌握其中的思想和精髓,学会解决实际问题的方法。** - -## 3. 相关说明 - -### 3.1 互助与勘误 - -限于本人的水平和经验,书中一定不乏纰漏和谬误之处。恳切希望读者给予批评指正。这将有利于我改进和提高,以帮助更多的读者。如果您对本书有任何评论和建议,或者遇到问题需要帮助,可在每页评论区留言,或者致信作者邮箱 [i@itcharge.cn](mailto:i@itcharge.cn),我将不胜感激。 - -### 3.2 版权说明 - -- 本书采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 -- 本书题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 - -### 3.3 致谢 - -在本书构思与写作阶段,很多朋友给我提出了有益的意见和建议。这些意见和建议令我受益匪浅。感谢在本书著作准备过程中,帮助过我的朋友,以及一起陪我刷题打卡的朋友,还有提供宝贵意见的读者。谢谢诸位。 \ No newline at end of file diff --git a/docs/00_preface/00_01_preface.md b/docs/00_preface/00_01_preface.md new file mode 100644 index 00000000..274b3ade --- /dev/null +++ b/docs/00_preface/00_01_preface.md @@ -0,0 +1,52 @@ +## 1. 创作历程 + +### 1.1 创作起因 + +我想写一本通俗易懂的算法书已经很久了,久到大概有 7 年那么久。至今我还记得大学时曾立下的 flag:**我要把我所学到的算法知识总结起来,整理成册,编纂成书,然后大大方方的在封面上写上自己的名字,再将它分享给所有喜欢学习算法的朋友们看。** + +结果是万万没想到,一晃过去,毕业后参加工作都已经 6 年了,每天忙于开发需求、业务逻辑、项目文档,写算法书这件事也跟其他大多数的待办事项一样,被无限制的闲置在一旁,再也不管不顾了。 + +直到 2021 年 3 月底的时候,在朋友的怂恿下,我们建了一个算法群,制定了一个为期 3 个月的算法打卡计划(2021 年 4 月 ~ 6 月),这个计划的唯一规则就是:连续两天不刷题就会被踢出群。 + +就这样我们一群小伙伴们(39 个人)开启了为期 3 个月的刷题计划。3 个月过后,最终只有 13 个人成功完成了刷题计划,另外三分之二的人都因为打卡失败被踢出群了。**这些失败的人中也包括我自己,我是在计划即将结束的时候,一次周末忘记了打卡,惨遭淘汰。** + +虽然这次我的刷题计划失败了,但是经过这 3 个月的刷题练习,让我重新拾起了学习算法的乐趣,并且把刷题变成了自己的日常习惯。在工作之余,我总是习惯性地打开 LeetCode,刷上几道题,然后写下题解,这种感觉很充实也很有成就感。 + +在这次刷题计划结束之后,2021 年 7 月份的时候,我们重新建立了算法打卡群,并持续到了今天。 + +就这样,刷题打卡成了我们的日常,群里的小伙伴也越来越多。我们每天刷题,写题解,在群里讨论每日题目的思路,提出问题和回答问题、探讨更好的求解思路。再后来群里的一些小伙伴们开始参加周赛、双周赛,在比赛结束之后我们还会交流赛题思路、做题心得。 + +### 1.2 输出是最好的学习方法 + +在写刷算法题、写题解的过程中,我又开始写算法和数据结构的基础知识,于是就有了现在这个开源项目。后来我学会了用 hugo 搭建网站,就搭建了一个开源项目的电子书网站,方便大家在线阅读。 + +在写算法书的这个过程中,我发现一个秘籍:**只有「输出」才是最好的学习方法**。这也是「费曼学习法」的一个应用。 + +在写算法内容的时候,如果对一个概念不理解,或者有点模糊,我是不可能把它写清楚,并且也让别人看明白的。只有在参考了大量的算法书籍和大佬的博客,把其中的概念或算法理解透彻了,彻底弄明白了之后,才能够转换为通俗易懂的文字,让大家也看明白。 + +并且在刷题的过程中,也会有很多朋友和群里小伙伴,跟我一起进行算法知识探讨,帮我指正错误或者提出建议。这些指正和建议,在很大程度上帮助我改进文章内容和提高自己对算法的理解。就好像是学生在写作业,有专业的老师在帮我批改作业,帮助我进步一样。 + +就这样,经过一段时间的努力,我从 2021 年 7 月开始,到 2022 年 7 月底,历时整整 1 年,在 LeetCode 上刷了 1000 多题,并且在刷题的过程总结了一些算法知识和数据结构知识,终于写完了这本算法书,也就是 **「算法通关手册」**。 + +## 2. 为什么要学习算法和数据结构 + +### 2.1 算法是程序员的底层能力 + +**「算法和数据结构」** 是计算机程序设计的重要理论技术基础,但很多程序员忽略了它的重要性。在日常开发工作中,最多的情况是使用成熟的开发框架,利用已经封装好的接口,进行 CRUD(增删改查)操作,似乎很少会需要自己实现相应的数据结构和算法。 + +况且工作中用到的编程语言、开发框架、开发平台,更新速度堪比摩尔定律。以前端为例,React 还没学明白呢,Vue 就火起来了。Vue 2.0 的文档还在研究呢,Vue 3.0 就发布了。很多时候,连新的技术还学不过来呢,哪还有时间去专门研究算法和数据结构呢。 + +诚然,语言、技术、框架固然重要,但背后的计算机算法和理论更为重要。因为语言、技术、框架的更新日新月异,但万变不离其宗的是背后的算法和理论,例如:**数据结构**、**算法**、**编译原理**、**计算机网络**、**计算机体系结构** 等等。任凭新技术如何变化,只要掌握了这些计算机科学的核心理论,就可以见招拆招,让自己立于不败之地。从此无论是看懂底层系统的设计原理、框架背后的设计思想,还是学习新技术、提升工作实战的效率,都可以做到得心应手。 + +**学习数据结构与算法的关键,在于掌握其中的思想和精髓,学会解决实际问题的方法。** + +### 2.2 算法是技术面试的必考内容 + +在互联网行业相关的技术面试中,**算法和数据结构知识** 几乎是所有公司的必考内容。众多知名互联网公司喜欢在面试中考察 LeetCode 上的算法题目,通常需要面试者对给定问题进行深入分析并提供解题思路。有时候,面试官还会要求面试者评估相关算法的时间复杂度和空间复杂度。面试官通过检验面试者对常用算法的熟悉程度和实现能力的方式,从而评估面试者解决实际问题的思维能力水平。 + +LeetCode 等平台上的算法题目已经成为行业标准。很多公司直接从这些平台选取题目或进行改编。通过系统性地练习这些题目,可以提高解决实际问题的能力。在面试中遇到类似问题时,就能更从容地应对。 + +学习算法需要循序渐进。从基础的数据结构开始,逐步掌握常见算法思想。每学习一个新概念,都要通过实际题目来巩固理解。这样积累下来,就能建立起完整的算法知识体系。 + +这本「算法通关手册」就是为了帮助读者系统学习算法知识而编写的。书中包含基础理论讲解和大量实战题目分析。通过理论学习和实践练习相结合的方式,读者可以真正掌握算法知识,提高解决问题的能力。无论是准备面试还是提升编程能力,这本书都能提供有价值的帮助。 + diff --git a/docs/README.md b/docs/README.md index 2059f83f..c2ea60c9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,71 +1,66 @@ -# 算法通关手册(LeetCode) +## 1. 本书简介 -## 关于本书 +本书不仅仅只是一本算法题解书,更是一本算法与数据结构基础知识的讲解书。 -本书不仅仅只是一本算法题解书,更是一本算法与数据结构基础知识的讲解书。本书易于理解,没有大跨度的思维跳跃,书中使用部分图示、例子来帮助理解。本书先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。 +- 超详细的 **「算法与数据结构」** 基础讲解教程,**「LeetCode 800+ 道」** 经典题目详细解析。 +- 本项目易于理解,没有大跨度的思维跳跃,项目中使用大量图示、例子来帮助理解。 +- 本项目先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。 +- 本项目从各大知名互联网公司面试算法题中整理汇总了 **「LeetCode 200 道高频面试题」**,帮助面试者更有针对性的准备面试。 -本书采用 Python 作为编程语言,要求学习者已有基本 Python 程序设计的知识与经验。 - -## 本书起因 - -我想写一本通俗易懂的算法书已经很久了,久到大概有 6 年那么久。至今我还记着上大学时立下的 flag,我要把我所学的算法知识总结起来,整理成册,编辑成书。然后大大方方的在封面书上自己的昵称,再把它分享给想要学习算法的朋友们看。 - -结果是万万没想到,这一晃过去,毕业后参加工作都已经 5 年了,每天忙于开发需求、业务逻辑,写书这件事也跟其他大多数的待办事项和计划清单一样,被无限期地闲置一旁,再也不管不顾了。 - -不过,好在是今年我又重新拾起了算法,开始和朋友一起愉快的在 LeetCode 上刷题。于是往日的目标又浮现在了眼前,所以这次痛下决心,立志写一本浅显易懂、图文并茂的算法书,能够让没有算法基础的新手能够通过这本书学到一些「算法和数据结构」相关知识,并通过在 LeetCode 刷题的方式,锻炼自己的解决问题的能力和思维方式。 - -![](https://qcdn.itcharge.cn/images/20211027170432.png) - -## 源码地址 +### 1.1 源码地址 本书内容及代码都放在 [Github repo](https://github.com/itcharge/AlgoNote) 中,欢迎在下方项目中 **「Star ⭐️ 」** 和 **「Fork」**,这是对我最大的鼓励和支持。 - Github 地址:[https://github.com/itcharge/AlgoNote](https://github.com/itcharge/AlgoNote) -## 本书前言 +### 1.2 目标读者 -**「算法和数据结构」** 是计算机程序设计的重要理论技术基础,但很多程序员忽略了它的重要性。在日常开发工作中,最多的情况是使用成熟的开发框架,利用已经封装好的接口,进行 CRUD(增删改查)操作,似乎很少会需要自己实现相应的数据结构和算法。 +- 拥有 Python 编程基础或其他编程语言基础的编程爱好者 +- 对 LeetCode 刷题感兴趣或准备算法面试的面试人员 +- 对算法感兴趣的计算机专业学生或程序员 +- 想要提升编程思维和问题解决能力的开发者 -况且工作中用到的编程语言、开发框架、开发平台,更新速度堪比摩尔定律。以前端为例,React 还没学明白呢,Vue 就火起来了。Vue 2.0 的文档还在研究呢,Vue 3.0 就发布了。很多时候,连新的技术还学不过来呢,哪还有时间去专门研究算法和数据结构呢。 +### 1.3 内容结构 -诚然,语言、技术、框架固然重要,但背后的计算机算法和理论更为重要。因为语言、技术、框架的更新日新月异,但万变不离其宗的是背后的算法和理论,例如:**数据结构**、**算法**、**编译原理**、**计算机网络**、**计算机体系结构** 等等。任凭新技术如何变化,只要掌握了这些计算机科学的核心理论,就可以见招拆招,让自己立于不败之地。从此无论是看懂底层系统的设计原理、框架背后的设计思想,还是学习新技术、提升工作实战的效率,都可以做到得心应手。 +本书采用算法与数据结构相结合的方法,把内容分为如下几个主要部分: -**学习数据结构与算法的关键,在于掌握其中的思想和精髓,学会解决实际问题的方法。** +- **序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 +- **第 1 章 数组**:讲解数组的基本概念、数组的基本操作。 +- **第 2 章 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。 +- **第 3 章 堆栈、队列、哈希表**:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 +- **第 4 章 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。 +- **第 5 章 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。 +- **第 6 章 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。 +- **第 7 章 基础算法**:介绍基本的算法思想。包括枚举、递归、分治、回溯、贪心以及位运算。 +- **第 8 章 动态规划**:介绍动态规划的基础知识、各种动态规划题型的解法。 +- **题目解析**:讲解 LeetCode 上刷过的所有题目,可按照对应题号进行检索和学习。 -本书采用算法与数据结构相结合的方法,把内容分为如下 6 部分: +### 1.4 使用说明 -- 第一部分是序言(第 00 章):介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 -- 第二部分是数据结构篇(第 01 ~ 08 章):每一章对应一种数据结构,这个部分用来介绍最常见、最重要的数据结构,以及与该数据结构相关的算法知识。 -- 第三部分是基础算法篇(第 09 章):这一章用来介绍基本的算法思想。包括枚举、递归、贪心、分治、回溯以及位运算。 -- 第四部分是动态规划篇(第 10 章):这一章用来介绍动态规划的基础知识、题型和优化方法。 -- 第五部分是补充内容篇(第 11 章):这一章用来补充之前章节没有讲到的内容。 -- 第六部分是 LeetCode 题解篇(第 12 章):这一章用来讲解我在 LeetCode 上刷过的所有题目。可按照对应题号进行检索和学习。 +- 本电子书的左侧为所有章节目录导航,可直接点击对应章节跳转阅读。 +- 本电子书左上角有搜索栏,可以帮你迅速找到想看的章节和题解文章。 +- 本电子书每页都接入了 giscus 评论系统,可在每页下方的评论框进行评论(需使用 GitHub 账号登录)。 +- 建议按照章节顺序学习,循序渐进地掌握各个知识点。 +- 每章末尾都配有练习题,建议及时完成以巩固所学知识。 -在本书构思与写作阶段,很多朋友给我提出了有益的意见和建议。这些意见和建议令我受益匪浅。感谢在本书著作准备过程中,帮助过我的朋友,以及一起陪我刷题打卡的朋友,还有提供宝贵意见的读者。感谢为本书提供课程合作和宣传的 DataWhale 开源组织。谢谢诸位。 +## 2. 相关说明 -## 目标读者 +### 2.1 关于作者 -- 拥有 Python 编程基础的编程爱好者 -- 对 LeetCode 刷题感兴趣的编程爱好者 -- 对算法感兴趣的计算机专业学生或程序员 +我是一名 iOS / macOS 的开发程序员,研究生毕业于北航软件学院。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。 -## 使用说明 - -- 本电子书的左侧为所有章节目录导航,可直接点击对应章节跳转阅读。 -- 本电子书左上角有搜索栏,可以帮你迅速找到想看的章节和题解文章。 -- 本电子书每页都接入了 Utterances 评论系统,可在每页下方的评论框进行评论(需使用 GitHub 账号登录)。如果没有显示,请检查一下网络。 +我从 2021 年 03 月 30 日开始每日在 LeetCode 刷题,到 2022 年 06 月 08 日已经刷了 1000+ 道题目,并且完成了 800+ 道题解。努力向着 1000+、1500+、2000+ 道题解前进。 -## 互助与勘误 +### 2.2 互助与勘误 限于本人的水平和经验,书中一定不乏纰漏和谬误之处。恳切希望读者给予批评指正。这将有利于我改进和提高,以帮助更多的读者。如果您对本书有任何评论和建议,或者遇到问题需要帮助,可在每页评论区留言,或者致信作者邮箱 [i@itcharge.cn](mailto:i@itcharge.cn),我将不胜感激。 -## 关于作者 +### 2.3 版权说明 -我是一名 iOS / macOS 的开发程序员,另外也是北航软院的一名非全硕士(在读)。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。 +- 本书采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 +- 本书题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 -我从 2021 年 03 月 30 日开始每日在 LeetCode 刷题,到 2022 年 06 月 08 日已经刷了 1000+ 道题目,并且完成了 800+ 道题解。努力向着 1000+、1500+、2000+ 道题解前进。 +### 2.4 致谢 -## 版权说明 +在本书构思与写作阶段,很多朋友给我提出了有益的意见和建议。这些意见和建议令我受益匪浅。感谢在本书著作准备过程中,帮助过我的朋友,以及一起陪我刷题打卡的朋友,还有提供宝贵意见的读者。谢谢诸位。 -- 本书采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 -- 本书题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 2059f83f..00000000 --- a/docs/index.md +++ /dev/null @@ -1,71 +0,0 @@ -# 算法通关手册(LeetCode) - -## 关于本书 - -本书不仅仅只是一本算法题解书,更是一本算法与数据结构基础知识的讲解书。本书易于理解,没有大跨度的思维跳跃,书中使用部分图示、例子来帮助理解。本书先从基础的数据结构和算法开始讲解,再针对不同分类的数据结构和算法,进行具体题目的讲解分析。让读者可以通过「算法基础理论学习」和「编程实战学习」相结合的方式,彻底的掌握算法知识。 - -本书采用 Python 作为编程语言,要求学习者已有基本 Python 程序设计的知识与经验。 - -## 本书起因 - -我想写一本通俗易懂的算法书已经很久了,久到大概有 6 年那么久。至今我还记着上大学时立下的 flag,我要把我所学的算法知识总结起来,整理成册,编辑成书。然后大大方方的在封面书上自己的昵称,再把它分享给想要学习算法的朋友们看。 - -结果是万万没想到,这一晃过去,毕业后参加工作都已经 5 年了,每天忙于开发需求、业务逻辑,写书这件事也跟其他大多数的待办事项和计划清单一样,被无限期地闲置一旁,再也不管不顾了。 - -不过,好在是今年我又重新拾起了算法,开始和朋友一起愉快的在 LeetCode 上刷题。于是往日的目标又浮现在了眼前,所以这次痛下决心,立志写一本浅显易懂、图文并茂的算法书,能够让没有算法基础的新手能够通过这本书学到一些「算法和数据结构」相关知识,并通过在 LeetCode 刷题的方式,锻炼自己的解决问题的能力和思维方式。 - -![](https://qcdn.itcharge.cn/images/20211027170432.png) - -## 源码地址 - -本书内容及代码都放在 [Github repo](https://github.com/itcharge/AlgoNote) 中,欢迎在下方项目中 **「Star ⭐️ 」** 和 **「Fork」**,这是对我最大的鼓励和支持。 - -- Github 地址:[https://github.com/itcharge/AlgoNote](https://github.com/itcharge/AlgoNote) - -## 本书前言 - -**「算法和数据结构」** 是计算机程序设计的重要理论技术基础,但很多程序员忽略了它的重要性。在日常开发工作中,最多的情况是使用成熟的开发框架,利用已经封装好的接口,进行 CRUD(增删改查)操作,似乎很少会需要自己实现相应的数据结构和算法。 - -况且工作中用到的编程语言、开发框架、开发平台,更新速度堪比摩尔定律。以前端为例,React 还没学明白呢,Vue 就火起来了。Vue 2.0 的文档还在研究呢,Vue 3.0 就发布了。很多时候,连新的技术还学不过来呢,哪还有时间去专门研究算法和数据结构呢。 - -诚然,语言、技术、框架固然重要,但背后的计算机算法和理论更为重要。因为语言、技术、框架的更新日新月异,但万变不离其宗的是背后的算法和理论,例如:**数据结构**、**算法**、**编译原理**、**计算机网络**、**计算机体系结构** 等等。任凭新技术如何变化,只要掌握了这些计算机科学的核心理论,就可以见招拆招,让自己立于不败之地。从此无论是看懂底层系统的设计原理、框架背后的设计思想,还是学习新技术、提升工作实战的效率,都可以做到得心应手。 - -**学习数据结构与算法的关键,在于掌握其中的思想和精髓,学会解决实际问题的方法。** - -本书采用算法与数据结构相结合的方法,把内容分为如下 6 部分: - -- 第一部分是序言(第 00 章):介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 -- 第二部分是数据结构篇(第 01 ~ 08 章):每一章对应一种数据结构,这个部分用来介绍最常见、最重要的数据结构,以及与该数据结构相关的算法知识。 -- 第三部分是基础算法篇(第 09 章):这一章用来介绍基本的算法思想。包括枚举、递归、贪心、分治、回溯以及位运算。 -- 第四部分是动态规划篇(第 10 章):这一章用来介绍动态规划的基础知识、题型和优化方法。 -- 第五部分是补充内容篇(第 11 章):这一章用来补充之前章节没有讲到的内容。 -- 第六部分是 LeetCode 题解篇(第 12 章):这一章用来讲解我在 LeetCode 上刷过的所有题目。可按照对应题号进行检索和学习。 - -在本书构思与写作阶段,很多朋友给我提出了有益的意见和建议。这些意见和建议令我受益匪浅。感谢在本书著作准备过程中,帮助过我的朋友,以及一起陪我刷题打卡的朋友,还有提供宝贵意见的读者。感谢为本书提供课程合作和宣传的 DataWhale 开源组织。谢谢诸位。 - -## 目标读者 - -- 拥有 Python 编程基础的编程爱好者 -- 对 LeetCode 刷题感兴趣的编程爱好者 -- 对算法感兴趣的计算机专业学生或程序员 - -## 使用说明 - -- 本电子书的左侧为所有章节目录导航,可直接点击对应章节跳转阅读。 -- 本电子书左上角有搜索栏,可以帮你迅速找到想看的章节和题解文章。 -- 本电子书每页都接入了 Utterances 评论系统,可在每页下方的评论框进行评论(需使用 GitHub 账号登录)。如果没有显示,请检查一下网络。 - -## 互助与勘误 - -限于本人的水平和经验,书中一定不乏纰漏和谬误之处。恳切希望读者给予批评指正。这将有利于我改进和提高,以帮助更多的读者。如果您对本书有任何评论和建议,或者遇到问题需要帮助,可在每页评论区留言,或者致信作者邮箱 [i@itcharge.cn](mailto:i@itcharge.cn),我将不胜感激。 - -## 关于作者 - -我是一名 iOS / macOS 的开发程序员,另外也是北航软院的一名非全硕士(在读)。曾在大学期间学习过算法知识,并参加过 3 年的 ACM 比赛, 但水平有限,未能取得理想成绩。但是这 3 年的 ACM 经历,给我最大的收获是锻炼了自己的逻辑思维和解决实际问题的能力,这种能力为我今后的工作、学习打下了坚实的基础。 - -我从 2021 年 03 月 30 日开始每日在 LeetCode 刷题,到 2022 年 06 月 08 日已经刷了 1000+ 道题目,并且完成了 800+ 道题解。努力向着 1000+、1500+、2000+ 道题解前进。 - -## 版权说明 - -- 本书采用 [知识署名—非商业性使用—禁止演绎(BY-NC-ND)4.0 协议国际许可协议](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode.zh-Hans) 进行许可。 -- 本书题解中的所有题目版权均归 [LeetCode](https://leetcode.com/) 和 [力扣中国](https://leetcode.cn/) 所有。 From 4bd8a2ea83690a1ac684c9c7d2331e65d9ba578e Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 17 Jun 2025 20:45:22 +0800 Subject: [PATCH 144/158] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/00_preface/00_05_solutions_list.md | 1720 +++++++++---------- docs/00_preface/00_06_categories_list.md | 1368 +++++++-------- docs/00_preface/00_07_interview_100_list.md | 282 +-- docs/00_preface/00_08_interview_200_list.md | 520 +++--- docs/solutions/0001-0099/index.md | 172 +- docs/solutions/0100-0199/index.md | 140 +- docs/solutions/0200-0299/index.md | 116 +- docs/solutions/0300-0399/index.md | 108 +- docs/solutions/0400-0499/index.md | 90 +- docs/solutions/0500-0599/index.md | 56 +- docs/solutions/0600-0699/index.md | 72 +- docs/solutions/0700-0799/index.md | 84 +- docs/solutions/0800-0899/index.md | 82 +- docs/solutions/0900-0999/index.md | 62 +- docs/solutions/1000-1099/index.md | 64 +- docs/solutions/1100-1199/index.md | 28 +- docs/solutions/1200-1299/index.md | 32 +- docs/solutions/1300-1399/index.md | 30 +- docs/solutions/1400-1499/index.md | 36 +- docs/solutions/1500-1599/index.md | 26 +- docs/solutions/1600-1699/index.md | 26 +- docs/solutions/1700-1799/index.md | 22 +- docs/solutions/1800-1899/index.md | 22 +- docs/solutions/1900-1999/index.md | 24 +- docs/solutions/2000-2099/index.md | 6 +- docs/solutions/2100-2199/index.md | 4 +- docs/solutions/2200-2299/index.md | 8 +- docs/solutions/2300-2399/index.md | 2 +- docs/solutions/2400-2499/index.md | 2 +- docs/solutions/2500-2599/index.md | 4 +- docs/solutions/2700-2799/index.md | 2 +- docs/solutions/Interviews/index.md | 60 +- docs/solutions/LCR/index.md | 340 ++-- 33 files changed, 2805 insertions(+), 2805 deletions(-) diff --git a/docs/00_preface/00_05_solutions_list.md b/docs/00_preface/00_05_solutions_list.md index 8f5b0623..8522e8cd 100644 --- a/docs/00_preface/00_05_solutions_list.md +++ b/docs/00_preface/00_05_solutions_list.md @@ -4,1033 +4,1033 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | -| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers/) | 递归、链表、数学 | 中等 | -| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | -| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) | 双指针、字符串、动态规划 | 中等 | -| [0007. 整数反转](https://leetcode.cn/problems/reverse-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-integer/) | 数学 | 中等 | -| [0008. 字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi/) | 字符串 | 中等 | -| [0009. 回文数](https://leetcode.cn/problems/palindrome-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/palindrome-number/) | 数学 | 简单 | -| [0010. 正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching/) | 递归、字符串、动态规划 | 困难 | -| [0011. 盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water/) | 贪心、数组、双指针 | 中等 | -| [0012. 整数转罗马数字](https://leetcode.cn/problems/integer-to-roman/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/integer-to-roman/) | 哈希表、数学、字符串 | 中等 | -| [0013. 罗马数字转整数](https://leetcode.cn/problems/roman-to-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/roman-to-integer/) | 哈希表、数学、字符串 | 简单 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | -| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | -| [0016. 最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest/) | 数组、双指针、排序 | 中等 | -| [0017. 电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/letter-combinations-of-a-phone-number/) | 哈希表、字符串、回溯 | 中等 | -| [0018. 四数之和](https://leetcode.cn/problems/4sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum/) | 数组、双指针、排序 | 中等 | -| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list/) | 链表、双指针 | 中等 | -| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses/) | 栈、字符串 | 简单 | -| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | -| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses/) | 字符串、动态规划、回溯 | 中等 | -| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs/) | 递归、链表 | 中等 | -| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group/) | 递归、链表 | 困难 | -| [0026. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array/) | 数组、双指针 | 简单 | -| [0027. 移除元素](https://leetcode.cn/problems/remove-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-element/) | 数组、双指针 | 简单 | -| [0028. 找出字符串中第一个匹配项的下标](https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string/) | 双指针、字符串、字符串匹配 | 简单 | -| [0029. 两数相除](https://leetcode.cn/problems/divide-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/divide-two-integers/) | 位运算、数学 | 中等 | -| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | -| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | -| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array/) | 数组、二分查找 | 中等 | -| [0035. 搜索插入位置](https://leetcode.cn/problems/search-insert-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-insert-position/) | 数组、二分查找 | 简单 | -| [0036. 有效的数独](https://leetcode.cn/problems/valid-sudoku/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-sudoku/) | 数组、哈希表、矩阵 | 中等 | -| [0037. 解数独](https://leetcode.cn/problems/sudoku-solver/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver/) | 数组、哈希表、回溯、矩阵 | 困难 | -| [0038. 外观数列](https://leetcode.cn/problems/count-and-say/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/count-and-say/) | 字符串 | 中等 | -| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum/) | 数组、回溯 | 中等 | -| [0040. 组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii/) | 数组、回溯 | 中等 | -| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive/) | 数组、哈希表 | 困难 | -| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) | 栈、数组、双指针、动态规划、单调栈 | 困难 | -| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings/) | 数学、字符串、模拟 | 中等 | -| [0044. 通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching/) | 贪心、递归、字符串、动态规划 | 困难 | -| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii/) | 贪心、数组、动态规划 | 中等 | -| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations/) | 数组、回溯 | 中等 | -| [0047. 全排列 II](https://leetcode.cn/problems/permutations-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii/) | 数组、回溯、排序 | 中等 | -| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image/) | 数组、数学、矩阵 | 中等 | -| [0049. 字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams/) | 数组、哈希表、字符串、排序 | 中等 | -| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) | 递归、数学 | 中等 | -| [0051. N 皇后](https://leetcode.cn/problems/n-queens/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens/) | 数组、回溯 | 困难 | -| [0052. N 皇后 II](https://leetcode.cn/problems/n-queens-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens-ii/) | 回溯 | 困难 | -| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | -| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix/) | 数组、矩阵、模拟 | 中等 | -| [0055. 跳跃游戏](https://leetcode.cn/problems/jump-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game/) | 贪心、数组、动态规划 | 中等 | -| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | -| [0058. 最后一个单词的长度](https://leetcode.cn/problems/length-of-last-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/length-of-last-word/) | 字符串 | 简单 | -| [0059. 螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii/) | 数组、矩阵、模拟 | 中等 | -| [0061. 旋转链表](https://leetcode.cn/problems/rotate-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list/) | 链表、双指针 | 中等 | -| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) | 数学、动态规划、组合数学 | 中等 | -| [0063. 不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii/) | 数组、动态规划、矩阵 | 中等 | -| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum/) | 数组、动态规划、矩阵 | 中等 | -| [0066. 加一](https://leetcode.cn/problems/plus-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/plus-one/) | 数组、数学 | 简单 | -| [0067. 二进制求和](https://leetcode.cn/problems/add-binary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-binary/) | 位运算、数学、字符串、模拟 | 简单 | -| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx/) | 数学、二分查找 | 简单 | -| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | -| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance/) | 字符串、动态规划 | 中等 | -| [0073. 矩阵置零](https://leetcode.cn/problems/set-matrix-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/set-matrix-zeroes/) | 数组、哈希表、矩阵 | 中等 | -| [0074. 搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix/) | 数组、二分查找、矩阵 | 中等 | -| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) | 数组、双指针、排序 | 中等 | -| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring/) | 哈希表、字符串、滑动窗口 | 困难 | -| [0077. 组合](https://leetcode.cn/problems/combinations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combinations/) | 回溯 | 中等 | -| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | -| [0079. 单词搜索](https://leetcode.cn/problems/word-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search/) | 深度优先搜索、数组、字符串、回溯、矩阵 | 中等 | -| [0080. 删除有序数组中的重复项 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii/) | 数组、双指针 | 中等 | -| [0081. 搜索旋转排序数组 II](https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array-ii/) | 数组、二分查找 | 中等 | -| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii/) | 链表、双指针 | 中等 | -| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list/) | 链表 | 简单 | -| [0084. 柱状图中最大的矩形](https://leetcode.cn/problems/largest-rectangle-in-histogram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/largest-rectangle-in-histogram/) | 栈、数组、单调栈 | 困难 | -| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | -| [0089. 格雷编码](https://leetcode.cn/problems/gray-code/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/gray-code/) | 位运算、数学、回溯 | 中等 | -| [0090. 子集 II](https://leetcode.cn/problems/subsets-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii/) | 位运算、数组、回溯 | 中等 | -| [0091. 解码方法](https://leetcode.cn/problems/decode-ways/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways/) | 字符串、动态规划 | 中等 | -| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | -| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses/) | 字符串、回溯 | 中等 | -| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0095. 不同的二叉搜索树 II](https://leetcode.cn/problems/unique-binary-search-trees-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees-ii/) | 树、二叉搜索树、动态规划、回溯、二叉树 | 中等 | -| [0096. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees/) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | -| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum.md) | 数组、哈希表 | 简单 | +| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers.md) | 递归、链表、数学 | 中等 | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays.md) | 数组、二分查找、分治 | 困难 | +| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring.md) | 双指针、字符串、动态规划 | 中等 | +| [0007. 整数反转](https://leetcode.cn/problems/reverse-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-integer.md) | 数学 | 中等 | +| [0008. 字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi.md) | 字符串 | 中等 | +| [0009. 回文数](https://leetcode.cn/problems/palindrome-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/palindrome-number.md) | 数学 | 简单 | +| [0010. 正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching.md) | 递归、字符串、动态规划 | 困难 | +| [0011. 盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water.md) | 贪心、数组、双指针 | 中等 | +| [0012. 整数转罗马数字](https://leetcode.cn/problems/integer-to-roman/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/integer-to-roman.md) | 哈希表、数学、字符串 | 中等 | +| [0013. 罗马数字转整数](https://leetcode.cn/problems/roman-to-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/roman-to-integer.md) | 哈希表、数学、字符串 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum.md) | 数组、双指针、排序 | 中等 | +| [0016. 最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest.md) | 数组、双指针、排序 | 中等 | +| [0017. 电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/letter-combinations-of-a-phone-number.md) | 哈希表、字符串、回溯 | 中等 | +| [0018. 四数之和](https://leetcode.cn/problems/4sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum.md) | 数组、双指针、排序 | 中等 | +| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list.md) | 链表、双指针 | 中等 | +| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses.md) | 栈、字符串 | 简单 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists.md) | 递归、链表 | 简单 | +| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses.md) | 字符串、动态规划、回溯 | 中等 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs.md) | 递归、链表 | 中等 | +| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group.md) | 递归、链表 | 困难 | +| [0026. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array.md) | 数组、双指针 | 简单 | +| [0027. 移除元素](https://leetcode.cn/problems/remove-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-element.md) | 数组、双指针 | 简单 | +| [0028. 找出字符串中第一个匹配项的下标](https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md) | 双指针、字符串、字符串匹配 | 简单 | +| [0029. 两数相除](https://leetcode.cn/problems/divide-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/divide-two-integers.md) | 位运算、数学 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses.md) | 栈、字符串、动态规划 | 困难 | +| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array.md) | 数组、二分查找 | 中等 | +| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array.md) | 数组、二分查找 | 中等 | +| [0035. 搜索插入位置](https://leetcode.cn/problems/search-insert-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-insert-position.md) | 数组、二分查找 | 简单 | +| [0036. 有效的数独](https://leetcode.cn/problems/valid-sudoku/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-sudoku.md) | 数组、哈希表、矩阵 | 中等 | +| [0037. 解数独](https://leetcode.cn/problems/sudoku-solver/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver.md) | 数组、哈希表、回溯、矩阵 | 困难 | +| [0038. 外观数列](https://leetcode.cn/problems/count-and-say/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/count-and-say.md) | 字符串 | 中等 | +| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum.md) | 数组、回溯 | 中等 | +| [0040. 组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii.md) | 数组、回溯 | 中等 | +| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive.md) | 数组、哈希表 | 困难 | +| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | +| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings.md) | 数学、字符串、模拟 | 中等 | +| [0044. 通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching.md) | 贪心、递归、字符串、动态规划 | 困难 | +| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii.md) | 贪心、数组、动态规划 | 中等 | +| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations.md) | 数组、回溯 | 中等 | +| [0047. 全排列 II](https://leetcode.cn/problems/permutations-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii.md) | 数组、回溯、排序 | 中等 | +| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image.md) | 数组、数学、矩阵 | 中等 | +| [0049. 字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams.md) | 数组、哈希表、字符串、排序 | 中等 | +| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n.md) | 递归、数学 | 中等 | +| [0051. N 皇后](https://leetcode.cn/problems/n-queens/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens.md) | 数组、回溯 | 困难 | +| [0052. N 皇后 II](https://leetcode.cn/problems/n-queens-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens-ii.md) | 回溯 | 困难 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) | 数组、分治、动态规划 | 中等 | +| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix.md) | 数组、矩阵、模拟 | 中等 | +| [0055. 跳跃游戏](https://leetcode.cn/problems/jump-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game.md) | 贪心、数组、动态规划 | 中等 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals.md) | 数组、排序 | 中等 | +| [0058. 最后一个单词的长度](https://leetcode.cn/problems/length-of-last-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/length-of-last-word.md) | 字符串 | 简单 | +| [0059. 螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii.md) | 数组、矩阵、模拟 | 中等 | +| [0061. 旋转链表](https://leetcode.cn/problems/rotate-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list.md) | 链表、双指针 | 中等 | +| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths.md) | 数学、动态规划、组合数学 | 中等 | +| [0063. 不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii.md) | 数组、动态规划、矩阵 | 中等 | +| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum.md) | 数组、动态规划、矩阵 | 中等 | +| [0066. 加一](https://leetcode.cn/problems/plus-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/plus-one.md) | 数组、数学 | 简单 | +| [0067. 二进制求和](https://leetcode.cn/problems/add-binary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-binary.md) | 位运算、数学、字符串、模拟 | 简单 | +| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx.md) | 数学、二分查找 | 简单 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance.md) | 字符串、动态规划 | 中等 | +| [0073. 矩阵置零](https://leetcode.cn/problems/set-matrix-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/set-matrix-zeroes.md) | 数组、哈希表、矩阵 | 中等 | +| [0074. 搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix.md) | 数组、二分查找、矩阵 | 中等 | +| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors.md) | 数组、双指针、排序 | 中等 | +| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring.md) | 哈希表、字符串、滑动窗口 | 困难 | +| [0077. 组合](https://leetcode.cn/problems/combinations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combinations.md) | 回溯 | 中等 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets.md) | 位运算、数组、回溯 | 中等 | +| [0079. 单词搜索](https://leetcode.cn/problems/word-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search.md) | 深度优先搜索、数组、字符串、回溯、矩阵 | 中等 | +| [0080. 删除有序数组中的重复项 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii.md) | 数组、双指针 | 中等 | +| [0081. 搜索旋转排序数组 II](https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array-ii.md) | 数组、二分查找 | 中等 | +| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii.md) | 链表、双指针 | 中等 | +| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list.md) | 链表 | 简单 | +| [0084. 柱状图中最大的矩形](https://leetcode.cn/problems/largest-rectangle-in-histogram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/largest-rectangle-in-histogram.md) | 栈、数组、单调栈 | 困难 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array.md) | 数组、双指针、排序 | 简单 | +| [0089. 格雷编码](https://leetcode.cn/problems/gray-code/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/gray-code.md) | 位运算、数学、回溯 | 中等 | +| [0090. 子集 II](https://leetcode.cn/problems/subsets-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii.md) | 位运算、数组、回溯 | 中等 | +| [0091. 解码方法](https://leetcode.cn/problems/decode-ways/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways.md) | 字符串、动态规划 | 中等 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii.md) | 链表 | 中等 | +| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses.md) | 字符串、回溯 | 中等 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0095. 不同的二叉搜索树 II](https://leetcode.cn/problems/unique-binary-search-trees-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees-ii.md) | 树、二叉搜索树、动态规划、回溯、二叉树 | 中等 | +| [0096. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees.md) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | +| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | ### 第 100 ~ 199 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | -| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | -| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | -| [0106. 从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | -| [0107. 二叉树的层序遍历 II](https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal-ii/) | 树、广度优先搜索、二叉树 | 中等 | -| [0108. 将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree/) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | -| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | -| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii/) | 树、深度优先搜索、回溯、二叉树 | 中等 | -| [0115. 不同的子序列](https://leetcode.cn/problems/distinct-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/distinct-subsequences/) | 字符串、动态规划 | 困难 | -| [0116. 填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node/) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | -| [0117. 填充每个节点的下一个右侧节点指针 II](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii/) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | -| [0118. 杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle/) | 数组、动态规划 | 简单 | -| [0119. 杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii/) | 数组、动态规划 | 简单 | -| [0120. 三角形最小路径和](https://leetcode.cn/problems/triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle/) | 数组、动态规划 | 中等 | -| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock/) | 数组、动态规划 | 简单 | -| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) | 贪心、数组、动态规划 | 中等 | -| [0123. 买卖股票的最佳时机 III](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii/) | 数组、动态规划 | 困难 | -| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) | 双指针、字符串 | 简单 | -| [0127. 单词接龙](https://leetcode.cn/problems/word-ladder/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-ladder/) | 广度优先搜索、哈希表、字符串 | 困难 | -| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | -| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers/) | 树、深度优先搜索、二叉树 | 中等 | -| [0130. 被围绕的区域](https://leetcode.cn/problems/surrounded-regions/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/surrounded-regions/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0131. 分割回文串](https://leetcode.cn/problems/palindrome-partitioning/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/palindrome-partitioning/) | 字符串、动态规划、回溯 | 中等 | -| [0133. 克隆图](https://leetcode.cn/problems/clone-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph/) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | -| [0134. 加油站](https://leetcode.cn/problems/gas-station/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station/) | 贪心、数组 | 中等 | -| [0135. 分发糖果](https://leetcode.cn/problems/candy/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy/) | 贪心、数组 | 困难 | -| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | -| [0137. 只出现一次的数字 II](https://leetcode.cn/problems/single-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number-ii/) | 位运算、数组 | 中等 | -| [0138. 随机链表的复制](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer/) | 哈希表、链表 | 中等 | -| [0139. 单词拆分](https://leetcode.cn/problems/word-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break/) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | -| [0140. 单词拆分 II](https://leetcode.cn/problems/word-break-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break-ii/) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划、回溯 | 困难 | -| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle/) | 哈希表、链表、双指针 | 简单 | -| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii/) | 哈希表、链表、双指针 | 中等 | -| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list/) | 栈、递归、链表、双指针 | 中等 | -| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0147. 对链表进行插入排序](https://leetcode.cn/problems/insertion-sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/insertion-sort-list/) | 链表、排序 | 中等 | -| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list/) | 链表、双指针、分治、排序、归并排序 | 中等 | -| [0149. 直线上最多的点数](https://leetcode.cn/problems/max-points-on-a-line/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/max-points-on-a-line/) | 几何、数组、哈希表、数学 | 困难 | -| [0150. 逆波兰表达式求值](https://leetcode.cn/problems/evaluate-reverse-polish-notation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/evaluate-reverse-polish-notation/) | 栈、数组、数学 | 中等 | -| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string/) | 双指针、字符串 | 中等 | -| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray/) | 数组、动态规划 | 中等 | -| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | -| [0154. 寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii/) | 数组、二分查找 | 困难 | -| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack/) | 栈、设计 | 中等 | -| [0159. 至多包含两个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists/) | 哈希表、链表、双指针 | 简单 | -| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element/) | 数组、二分查找 | 中等 | -| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap/) | 数组、桶排序、基数排序、排序 | 中等 | -| [0166. 分数到小数](https://leetcode.cn/problems/fraction-to-recurring-decimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/fraction-to-recurring-decimal/) | 哈希表、数学、字符串 | 中等 | -| [0167. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted/) | 数组、双指针、二分查找 | 中等 | -| [0168. Excel 表列名称](https://leetcode.cn/problems/excel-sheet-column-title/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-title/) | 数学、字符串 | 简单 | -| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | -| [0170. 两数之和 III - 数据结构设计](https://leetcode.cn/problems/two-sum-iii-data-structure-design/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-iii-data-structure-design/) | 设计、数组、哈希表、双指针、数据流 | 简单 | -| [0171. Excel 表列序号](https://leetcode.cn/problems/excel-sheet-column-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-number/) | 数学、字符串 | 简单 | -| [0172. 阶乘后的零](https://leetcode.cn/problems/factorial-trailing-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/factorial-trailing-zeroes/) | 数学 | 中等 | -| [0173. 二叉搜索树迭代器](https://leetcode.cn/problems/binary-search-tree-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-search-tree-iterator/) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | -| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number/) | 贪心、数组、字符串、排序 | 中等 | -| [0188. 买卖股票的最佳时机 IV](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv/) | 数组、动态规划 | 困难 | -| [0189. 轮转数组](https://leetcode.cn/problems/rotate-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array/) | 数组、数学、双指针 | 中等 | -| [0190. 颠倒二进制位](https://leetcode.cn/problems/reverse-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-bits/) | 位运算、分治 | 简单 | -| [0191. 位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits/) | 位运算、分治 | 简单 | -| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber/) | 数组、动态规划 | 中等 | -| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal.md) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0106. 从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal.md) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0107. 二叉树的层序遍历 II](https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal-ii.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0108. 将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree.md) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | +| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree.md) | 树、深度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii.md) | 树、深度优先搜索、回溯、二叉树 | 中等 | +| [0115. 不同的子序列](https://leetcode.cn/problems/distinct-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/distinct-subsequences.md) | 字符串、动态规划 | 困难 | +| [0116. 填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node.md) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | +| [0117. 填充每个节点的下一个右侧节点指针 II](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii.md) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | +| [0118. 杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle.md) | 数组、动态规划 | 简单 | +| [0119. 杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii.md) | 数组、动态规划 | 简单 | +| [0120. 三角形最小路径和](https://leetcode.cn/problems/triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle.md) | 数组、动态规划 | 中等 | +| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock.md) | 数组、动态规划 | 简单 | +| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii.md) | 贪心、数组、动态规划 | 中等 | +| [0123. 买卖股票的最佳时机 III](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii.md) | 数组、动态规划 | 困难 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome.md) | 双指针、字符串 | 简单 | +| [0127. 单词接龙](https://leetcode.cn/problems/word-ladder/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-ladder.md) | 广度优先搜索、哈希表、字符串 | 困难 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence.md) | 并查集、数组、哈希表 | 中等 | +| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0130. 被围绕的区域](https://leetcode.cn/problems/surrounded-regions/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/surrounded-regions.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0131. 分割回文串](https://leetcode.cn/problems/palindrome-partitioning/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/palindrome-partitioning.md) | 字符串、动态规划、回溯 | 中等 | +| [0133. 克隆图](https://leetcode.cn/problems/clone-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph.md) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | +| [0134. 加油站](https://leetcode.cn/problems/gas-station/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station.md) | 贪心、数组 | 中等 | +| [0135. 分发糖果](https://leetcode.cn/problems/candy/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy.md) | 贪心、数组 | 困难 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) | 位运算、数组 | 简单 | +| [0137. 只出现一次的数字 II](https://leetcode.cn/problems/single-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number-ii.md) | 位运算、数组 | 中等 | +| [0138. 随机链表的复制](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer.md) | 哈希表、链表 | 中等 | +| [0139. 单词拆分](https://leetcode.cn/problems/word-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break.md) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | +| [0140. 单词拆分 II](https://leetcode.cn/problems/word-break-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break-ii.md) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划、回溯 | 困难 | +| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle.md) | 哈希表、链表、双指针 | 简单 | +| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii.md) | 哈希表、链表、双指针 | 中等 | +| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list.md) | 栈、递归、链表、双指针 | 中等 | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0147. 对链表进行插入排序](https://leetcode.cn/problems/insertion-sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/insertion-sort-list.md) | 链表、排序 | 中等 | +| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md) | 链表、双指针、分治、排序、归并排序 | 中等 | +| [0149. 直线上最多的点数](https://leetcode.cn/problems/max-points-on-a-line/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/max-points-on-a-line.md) | 几何、数组、哈希表、数学 | 困难 | +| [0150. 逆波兰表达式求值](https://leetcode.cn/problems/evaluate-reverse-polish-notation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/evaluate-reverse-polish-notation.md) | 栈、数组、数学 | 中等 | +| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string.md) | 双指针、字符串 | 中等 | +| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray.md) | 数组、动态规划 | 中等 | +| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array.md) | 数组、二分查找 | 中等 | +| [0154. 寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii.md) | 数组、二分查找 | 困难 | +| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack.md) | 栈、设计 | 中等 | +| [0159. 至多包含两个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists.md) | 哈希表、链表、双指针 | 简单 | +| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element.md) | 数组、二分查找 | 中等 | +| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap.md) | 数组、桶排序、基数排序、排序 | 中等 | +| [0166. 分数到小数](https://leetcode.cn/problems/fraction-to-recurring-decimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/fraction-to-recurring-decimal.md) | 哈希表、数学、字符串 | 中等 | +| [0167. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted.md) | 数组、双指针、二分查找 | 中等 | +| [0168. Excel 表列名称](https://leetcode.cn/problems/excel-sheet-column-title/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-title.md) | 数学、字符串 | 简单 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) | 数组、哈希表、分治、计数、排序 | 简单 | +| [0170. 两数之和 III - 数据结构设计](https://leetcode.cn/problems/two-sum-iii-data-structure-design/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-iii-data-structure-design.md) | 设计、数组、哈希表、双指针、数据流 | 简单 | +| [0171. Excel 表列序号](https://leetcode.cn/problems/excel-sheet-column-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-number.md) | 数学、字符串 | 简单 | +| [0172. 阶乘后的零](https://leetcode.cn/problems/factorial-trailing-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/factorial-trailing-zeroes.md) | 数学 | 中等 | +| [0173. 二叉搜索树迭代器](https://leetcode.cn/problems/binary-search-tree-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-search-tree-iterator.md) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | +| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number.md) | 贪心、数组、字符串、排序 | 中等 | +| [0188. 买卖股票的最佳时机 IV](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv.md) | 数组、动态规划 | 困难 | +| [0189. 轮转数组](https://leetcode.cn/problems/rotate-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array.md) | 数组、数学、双指针 | 中等 | +| [0190. 颠倒二进制位](https://leetcode.cn/problems/reverse-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-bits.md) | 位运算、分治 | 简单 | +| [0191. 位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits.md) | 位运算、分治 | 简单 | +| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber.md) | 数组、动态规划 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | ### 第 200 ~ 299 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0201. 数字范围按位与](https://leetcode.cn/problems/bitwise-and-of-numbers-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/bitwise-and-of-numbers-range/) | 位运算 | 中等 | -| [0202. 快乐数](https://leetcode.cn/problems/happy-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/happy-number/) | 哈希表、数学、双指针 | 简单 | -| [0203. 移除链表元素](https://leetcode.cn/problems/remove-linked-list-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/remove-linked-list-elements/) | 递归、链表 | 简单 | -| [0204. 计数质数](https://leetcode.cn/problems/count-primes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-primes/) | 数组、数学、枚举、数论 | 中等 | -| [0205. 同构字符串](https://leetcode.cn/problems/isomorphic-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/isomorphic-strings/) | 哈希表、字符串 | 简单 | -| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | -| [0207. 课程表](https://leetcode.cn/problems/course-schedule/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [0208. 实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree/) | 设计、字典树、哈希表、字符串 | 中等 | -| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| [0210. 课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [0211. 添加与搜索单词 - 数据结构设计](https://leetcode.cn/problems/design-add-and-search-words-data-structure/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/design-add-and-search-words-data-structure/) | 深度优先搜索、设计、字典树、字符串 | 中等 | -| [0212. 单词搜索 II](https://leetcode.cn/problems/word-search-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-search-ii/) | 字典树、数组、字符串、回溯、矩阵 | 困难 | -| [0213. 打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii/) | 数组、动态规划 | 中等 | -| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| [0217. 存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate/) | 数组、哈希表、排序 | 简单 | -| [0218. 天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem/) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | -| [0219. 存在重复元素 II](https://leetcode.cn/problems/contains-duplicate-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-ii/) | 数组、哈希表、滑动窗口 | 简单 | -| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii/) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | -| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | -| [0222. 完全二叉树的节点个数](https://leetcode.cn/problems/count-complete-tree-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-complete-tree-nodes/) | 位运算、树、二分查找、二叉树 | 简单 | -| [0223. 矩形面积](https://leetcode.cn/problems/rectangle-area/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/rectangle-area/) | 几何、数学 | 中等 | -| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues/) | 栈、设计、队列 | 简单 | -| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii/) | 栈、数学、字符串 | 中等 | -| [0231. 2 的幂](https://leetcode.cn/problems/power-of-two/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/power-of-two/) | 位运算、递归、数学 | 简单 | -| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks/) | 栈、设计、队列 | 简单 | -| [0233. 数字 1 的个数](https://leetcode.cn/problems/number-of-digit-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-digit-one/) | 递归、数学、动态规划 | 困难 | -| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list/) | 栈、递归、链表、双指针 | 简单 | -| [0235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree/) | 树、深度优先搜索、二叉树 | 中等 | -| [0237. 删除链表中的节点](https://leetcode.cn/problems/delete-node-in-a-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/delete-node-in-a-linked-list/) | 链表 | 中等 | -| [0238. 除自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-except-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/product-of-array-except-self/) | 数组、前缀和 | 中等 | -| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | -| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii/) | 数组、二分查找、分治、矩阵 | 中等 | -| [0241. 为运算表达式设计优先级](https://leetcode.cn/problems/different-ways-to-add-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/different-ways-to-add-parentheses/) | 递归、记忆化搜索、数学、字符串、动态规划 | 中等 | -| [0242. 有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram/) | 哈希表、字符串、排序 | 简单 | -| [0249. 移位字符串分组](https://leetcode.cn/problems/group-shifted-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/group-shifted-strings/) | 数组、哈希表、字符串 | 中等 | -| [0257. 二叉树的所有路径](https://leetcode.cn/problems/binary-tree-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/binary-tree-paths/) | 树、深度优先搜索、字符串、回溯、二叉树 | 简单 | -| [0258. 各位相加](https://leetcode.cn/problems/add-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/add-digits/) | 数学、数论、模拟 | 简单 | -| [0259. 较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller/) | 数组、双指针、二分查找、排序 | 中等 | -| [0260. 只出现一次的数字 III](https://leetcode.cn/problems/single-number-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/single-number-iii/) | 位运算、数组 | 中等 | -| [0263. 丑数](https://leetcode.cn/problems/ugly-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number/) | 数学 | 简单 | -| [0264. 丑数 II](https://leetcode.cn/problems/ugly-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number-ii/) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | -| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | -| [0270. 最接近的二叉搜索树值](https://leetcode.cn/problems/closest-binary-search-tree-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/closest-binary-search-tree-value/) | 树、深度优先搜索、二叉搜索树、二分查找、二叉树 | 简单 | -| [0278. 第一个错误的版本](https://leetcode.cn/problems/first-bad-version/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/first-bad-version/) | 二分查找、交互 | 简单 | -| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares/) | 广度优先搜索、数学、动态规划 | 中等 | -| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | -| [0285. 二叉搜索树中的中序后继](https://leetcode.cn/problems/inorder-successor-in-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/inorder-successor-in-bst/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [0286. 墙与门](https://leetcode.cn/problems/walls-and-gates/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/walls-and-gates/) | 广度优先搜索、数组、矩阵 | 中等 | -| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number/) | 位运算、数组、双指针、二分查找 | 中等 | -| [0288. 单词的唯一缩写](https://leetcode.cn/problems/unique-word-abbreviation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/unique-word-abbreviation/) | 设计、数组、哈希表、字符串 | 中等 | -| [0289. 生命游戏](https://leetcode.cn/problems/game-of-life/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/game-of-life/) | 数组、矩阵、模拟 | 中等 | -| [0290. 单词规律](https://leetcode.cn/problems/word-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-pattern/) | 哈希表、字符串 | 简单 | -| [0292. Nim 游戏](https://leetcode.cn/problems/nim-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/nim-game/) | 脑筋急转弯、数学、博弈 | 简单 | -| [0295. 数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream/) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | -| [0297. 二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree/) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0201. 数字范围按位与](https://leetcode.cn/problems/bitwise-and-of-numbers-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/bitwise-and-of-numbers-range.md) | 位运算 | 中等 | +| [0202. 快乐数](https://leetcode.cn/problems/happy-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/happy-number.md) | 哈希表、数学、双指针 | 简单 | +| [0203. 移除链表元素](https://leetcode.cn/problems/remove-linked-list-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/remove-linked-list-elements.md) | 递归、链表 | 简单 | +| [0204. 计数质数](https://leetcode.cn/problems/count-primes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-primes.md) | 数组、数学、枚举、数论 | 中等 | +| [0205. 同构字符串](https://leetcode.cn/problems/isomorphic-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/isomorphic-strings.md) | 哈希表、字符串 | 简单 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list.md) | 递归、链表 | 简单 | +| [0207. 课程表](https://leetcode.cn/problems/course-schedule/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0208. 实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree.md) | 设计、字典树、哈希表、字符串 | 中等 | +| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0210. 课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0211. 添加与搜索单词 - 数据结构设计](https://leetcode.cn/problems/design-add-and-search-words-data-structure/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/design-add-and-search-words-data-structure.md) | 深度优先搜索、设计、字典树、字符串 | 中等 | +| [0212. 单词搜索 II](https://leetcode.cn/problems/word-search-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-search-ii.md) | 字典树、数组、字符串、回溯、矩阵 | 困难 | +| [0213. 打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii.md) | 数组、动态规划 | 中等 | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [0217. 存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate.md) | 数组、哈希表、排序 | 简单 | +| [0218. 天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem.md) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | +| [0219. 存在重复元素 II](https://leetcode.cn/problems/contains-duplicate-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-ii.md) | 数组、哈希表、滑动窗口 | 简单 | +| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square.md) | 数组、动态规划、矩阵 | 中等 | +| [0222. 完全二叉树的节点个数](https://leetcode.cn/problems/count-complete-tree-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-complete-tree-nodes.md) | 位运算、树、二分查找、二叉树 | 简单 | +| [0223. 矩形面积](https://leetcode.cn/problems/rectangle-area/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/rectangle-area.md) | 几何、数学 | 中等 | +| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues.md) | 栈、设计、队列 | 简单 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii.md) | 栈、数学、字符串 | 中等 | +| [0231. 2 的幂](https://leetcode.cn/problems/power-of-two/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/power-of-two.md) | 位运算、递归、数学 | 简单 | +| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks.md) | 栈、设计、队列 | 简单 | +| [0233. 数字 1 的个数](https://leetcode.cn/problems/number-of-digit-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-digit-one.md) | 递归、数学、动态规划 | 困难 | +| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list.md) | 栈、递归、链表、双指针 | 简单 | +| [0235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0237. 删除链表中的节点](https://leetcode.cn/problems/delete-node-in-a-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/delete-node-in-a-linked-list.md) | 链表 | 中等 | +| [0238. 除自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-except-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/product-of-array-except-self.md) | 数组、前缀和 | 中等 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii.md) | 数组、二分查找、分治、矩阵 | 中等 | +| [0241. 为运算表达式设计优先级](https://leetcode.cn/problems/different-ways-to-add-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/different-ways-to-add-parentheses.md) | 递归、记忆化搜索、数学、字符串、动态规划 | 中等 | +| [0242. 有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram.md) | 哈希表、字符串、排序 | 简单 | +| [0249. 移位字符串分组](https://leetcode.cn/problems/group-shifted-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/group-shifted-strings.md) | 数组、哈希表、字符串 | 中等 | +| [0257. 二叉树的所有路径](https://leetcode.cn/problems/binary-tree-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/binary-tree-paths.md) | 树、深度优先搜索、字符串、回溯、二叉树 | 简单 | +| [0258. 各位相加](https://leetcode.cn/problems/add-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/add-digits.md) | 数学、数论、模拟 | 简单 | +| [0259. 较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller.md) | 数组、双指针、二分查找、排序 | 中等 | +| [0260. 只出现一次的数字 III](https://leetcode.cn/problems/single-number-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/single-number-iii.md) | 位运算、数组 | 中等 | +| [0263. 丑数](https://leetcode.cn/problems/ugly-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number.md) | 数学 | 简单 | +| [0264. 丑数 II](https://leetcode.cn/problems/ugly-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number-ii.md) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | +| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | +| [0270. 最接近的二叉搜索树值](https://leetcode.cn/problems/closest-binary-search-tree-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/closest-binary-search-tree-value.md) | 树、深度优先搜索、二叉搜索树、二分查找、二叉树 | 简单 | +| [0278. 第一个错误的版本](https://leetcode.cn/problems/first-bad-version/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/first-bad-version.md) | 二分查找、交互 | 简单 | +| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares.md) | 广度优先搜索、数学、动态规划 | 中等 | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes.md) | 数组、双指针 | 简单 | +| [0285. 二叉搜索树中的中序后继](https://leetcode.cn/problems/inorder-successor-in-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/inorder-successor-in-bst.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0286. 墙与门](https://leetcode.cn/problems/walls-and-gates/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/walls-and-gates.md) | 广度优先搜索、数组、矩阵 | 中等 | +| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number.md) | 位运算、数组、双指针、二分查找 | 中等 | +| [0288. 单词的唯一缩写](https://leetcode.cn/problems/unique-word-abbreviation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/unique-word-abbreviation.md) | 设计、数组、哈希表、字符串 | 中等 | +| [0289. 生命游戏](https://leetcode.cn/problems/game-of-life/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/game-of-life.md) | 数组、矩阵、模拟 | 中等 | +| [0290. 单词规律](https://leetcode.cn/problems/word-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-pattern.md) | 哈希表、字符串 | 简单 | +| [0292. Nim 游戏](https://leetcode.cn/problems/nim-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/nim-game.md) | 脑筋急转弯、数学、博弈 | 简单 | +| [0295. 数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream.md) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | +| [0297. 二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree.md) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | ### 第 300 ~ 399 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence/) | 数组、二分查找、动态规划 | 中等 | -| [0303. 区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable/) | 设计、数组、前缀和 | 简单 | -| [0304. 二维区域和检索 - 矩阵不可变](https://leetcode.cn/problems/range-sum-query-2d-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-2d-immutable/) | 设计、数组、矩阵、前缀和 | 中等 | -| [0307. 区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable/) | 设计、树状数组、线段树、数组 | 中等 | -| [0309. 买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown/) | 数组、动态规划 | 中等 | -| [0310. 最小高度树](https://leetcode.cn/problems/minimum-height-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/minimum-height-trees/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [0312. 戳气球](https://leetcode.cn/problems/burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/burst-balloons/) | 数组、动态规划 | 困难 | -| [0315. 计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | -| [0316. 去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/remove-duplicate-letters/) | 栈、贪心、字符串、单调栈 | 中等 | -| [0318. 最大单词长度乘积](https://leetcode.cn/problems/maximum-product-of-word-lengths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/maximum-product-of-word-lengths/) | 位运算、数组、字符串 | 中等 | -| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | -| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0324. 摆动排序 II](https://leetcode.cn/problems/wiggle-sort-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-sort-ii/) | 贪心、数组、分治、快速选择、排序 | 中等 | -| [0326. 3 的幂](https://leetcode.cn/problems/power-of-three/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-three/) | 递归、数学 | 简单 | -| [0328. 奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list/) | 链表 | 中等 | -| [0329. 矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix/) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | -| [0334. 递增的三元子序列](https://leetcode.cn/problems/increasing-triplet-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/increasing-triplet-subsequence/) | 贪心、数组 | 中等 | -| [0336. 回文对](https://leetcode.cn/problems/palindrome-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/palindrome-pairs/) | 字典树、数组、哈希表、字符串 | 困难 | -| [0337. 打家劫舍 III](https://leetcode.cn/problems/house-robber-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/house-robber-iii/) | 树、深度优先搜索、动态规划、二叉树 | 中等 | -| [0338. 比特位计数](https://leetcode.cn/problems/counting-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits/) | 位运算、动态规划 | 简单 | -| [0340. 至多包含 K 个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0341. 扁平化嵌套列表迭代器](https://leetcode.cn/problems/flatten-nested-list-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/flatten-nested-list-iterator/) | 栈、树、深度优先搜索、设计、队列、迭代器 | 中等 | -| [0342. 4的幂](https://leetcode.cn/problems/power-of-four/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-four/) | 位运算、递归、数学 | 简单 | -| [0343. 整数拆分](https://leetcode.cn/problems/integer-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break/) | 数学、动态规划 | 中等 | -| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) | 双指针、字符串 | 简单 | -| [0345. 反转字符串中的元音字母](https://leetcode.cn/problems/reverse-vowels-of-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-vowels-of-a-string/) | 双指针、字符串 | 简单 | -| [0346. 数据流中的移动平均值](https://leetcode.cn/problems/moving-average-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/moving-average-from-data-stream/) | 设计、队列、数组、数据流 | 简单 | -| [0347. 前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements/) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | -| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| [0351. 安卓系统手势解锁](https://leetcode.cn/problems/android-unlock-patterns/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/android-unlock-patterns/) | 位运算、动态规划、回溯、状态压缩 | 中等 | -| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes/) | 数组、二分查找、动态规划、排序 | 困难 | -| [0357. 统计各位数字都不同的数字个数](https://leetcode.cn/problems/count-numbers-with-unique-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-numbers-with-unique-digits/) | 数学、动态规划、回溯 | 中等 | -| [0359. 日志速率限制器](https://leetcode.cn/problems/logger-rate-limiter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/logger-rate-limiter/) | 设计、哈希表、数据流 | 简单 | -| [0360. 有序转化数组](https://leetcode.cn/problems/sort-transformed-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sort-transformed-array/) | 数组、数学、双指针、排序 | 中等 | -| [0367. 有效的完全平方数](https://leetcode.cn/problems/valid-perfect-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/valid-perfect-square/) | 数学、二分查找 | 简单 | -| [0370. 区间加法](https://leetcode.cn/problems/range-addition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-addition/) | 数组、前缀和 | 中等 | -| [0371. 两整数之和](https://leetcode.cn/problems/sum-of-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sum-of-two-integers/) | 位运算、数学 | 中等 | -| [0374. 猜数字大小](https://leetcode.cn/problems/guess-number-higher-or-lower/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower/) | 二分查找、交互 | 简单 | -| [0375. 猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii/) | 数学、动态规划、博弈 | 中等 | -| [0376. 摆动序列](https://leetcode.cn/problems/wiggle-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-subsequence/) | 贪心、数组、动态规划 | 中等 | -| [0377. 组合总和 Ⅳ](https://leetcode.cn/problems/combination-sum-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/combination-sum-iv/) | 数组、动态规划 | 中等 | -| [0378. 有序矩阵中第 K 小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/kth-smallest-element-in-a-sorted-matrix/) | 数组、二分查找、矩阵、排序、堆(优先队列) | 中等 | -| [0380. O(1) 时间插入、删除和获取随机元素](https://leetcode.cn/problems/insert-delete-getrandom-o1/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/insert-delete-getrandom-o1/) | 设计、数组、哈希表、数学、随机化 | 中等 | -| [0383. 赎金信](https://leetcode.cn/problems/ransom-note/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/ransom-note/) | 哈希表、字符串、计数 | 简单 | -| [0384. 打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array/) | 设计、数组、数学、随机化 | 中等 | -| [0386. 字典序排数](https://leetcode.cn/problems/lexicographical-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/lexicographical-numbers/) | 深度优先搜索、字典树 | 中等 | -| [0387. 字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/first-unique-character-in-a-string/) | 队列、哈希表、字符串、计数 | 简单 | -| [0389. 找不同](https://leetcode.cn/problems/find-the-difference/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/find-the-difference/) | 位运算、哈希表、字符串、排序 | 简单 | -| [0391. 完美矩形](https://leetcode.cn/problems/perfect-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/perfect-rectangle/) | 数组、扫描线 | 困难 | -| [0392. 判断子序列](https://leetcode.cn/problems/is-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/is-subsequence/) | 双指针、字符串、动态规划 | 简单 | -| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string/) | 栈、递归、字符串 | 中等 | -| [0395. 至少有 K 个重复字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-least-k-repeating-characters/) | 哈希表、字符串、分治、滑动窗口 | 中等 | -| [0399. 除法求值](https://leetcode.cn/problems/evaluate-division/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/evaluate-division/) | 深度优先搜索、广度优先搜索、并查集、图、数组、字符串、最短路 | 中等 | +| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence.md) | 数组、二分查找、动态规划 | 中等 | +| [0303. 区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable.md) | 设计、数组、前缀和 | 简单 | +| [0304. 二维区域和检索 - 矩阵不可变](https://leetcode.cn/problems/range-sum-query-2d-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-2d-immutable.md) | 设计、数组、矩阵、前缀和 | 中等 | +| [0307. 区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable.md) | 设计、树状数组、线段树、数组 | 中等 | +| [0309. 买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown.md) | 数组、动态规划 | 中等 | +| [0310. 最小高度树](https://leetcode.cn/problems/minimum-height-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/minimum-height-trees.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0312. 戳气球](https://leetcode.cn/problems/burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/burst-balloons.md) | 数组、动态规划 | 困难 | +| [0315. 计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | +| [0316. 去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/remove-duplicate-letters.md) | 栈、贪心、字符串、单调栈 | 中等 | +| [0318. 最大单词长度乘积](https://leetcode.cn/problems/maximum-product-of-word-lengths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/maximum-product-of-word-lengths.md) | 位运算、数组、字符串 | 中等 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change.md) | 广度优先搜索、数组、动态规划 | 中等 | +| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0324. 摆动排序 II](https://leetcode.cn/problems/wiggle-sort-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-sort-ii.md) | 贪心、数组、分治、快速选择、排序 | 中等 | +| [0326. 3 的幂](https://leetcode.cn/problems/power-of-three/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-three.md) | 递归、数学 | 简单 | +| [0328. 奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list.md) | 链表 | 中等 | +| [0329. 矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix.md) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | +| [0334. 递增的三元子序列](https://leetcode.cn/problems/increasing-triplet-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/increasing-triplet-subsequence.md) | 贪心、数组 | 中等 | +| [0336. 回文对](https://leetcode.cn/problems/palindrome-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/palindrome-pairs.md) | 字典树、数组、哈希表、字符串 | 困难 | +| [0337. 打家劫舍 III](https://leetcode.cn/problems/house-robber-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/house-robber-iii.md) | 树、深度优先搜索、动态规划、二叉树 | 中等 | +| [0338. 比特位计数](https://leetcode.cn/problems/counting-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits.md) | 位运算、动态规划 | 简单 | +| [0340. 至多包含 K 个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0341. 扁平化嵌套列表迭代器](https://leetcode.cn/problems/flatten-nested-list-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/flatten-nested-list-iterator.md) | 栈、树、深度优先搜索、设计、队列、迭代器 | 中等 | +| [0342. 4的幂](https://leetcode.cn/problems/power-of-four/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-four.md) | 位运算、递归、数学 | 简单 | +| [0343. 整数拆分](https://leetcode.cn/problems/integer-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break.md) | 数学、动态规划 | 中等 | +| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string.md) | 双指针、字符串 | 简单 | +| [0345. 反转字符串中的元音字母](https://leetcode.cn/problems/reverse-vowels-of-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-vowels-of-a-string.md) | 双指针、字符串 | 简单 | +| [0346. 数据流中的移动平均值](https://leetcode.cn/problems/moving-average-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/moving-average-from-data-stream.md) | 设计、队列、数组、数据流 | 简单 | +| [0347. 前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements.md) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | +| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0351. 安卓系统手势解锁](https://leetcode.cn/problems/android-unlock-patterns/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/android-unlock-patterns.md) | 位运算、动态规划、回溯、状态压缩 | 中等 | +| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes.md) | 数组、二分查找、动态规划、排序 | 困难 | +| [0357. 统计各位数字都不同的数字个数](https://leetcode.cn/problems/count-numbers-with-unique-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-numbers-with-unique-digits.md) | 数学、动态规划、回溯 | 中等 | +| [0359. 日志速率限制器](https://leetcode.cn/problems/logger-rate-limiter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/logger-rate-limiter.md) | 设计、哈希表、数据流 | 简单 | +| [0360. 有序转化数组](https://leetcode.cn/problems/sort-transformed-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sort-transformed-array.md) | 数组、数学、双指针、排序 | 中等 | +| [0367. 有效的完全平方数](https://leetcode.cn/problems/valid-perfect-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/valid-perfect-square.md) | 数学、二分查找 | 简单 | +| [0370. 区间加法](https://leetcode.cn/problems/range-addition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-addition.md) | 数组、前缀和 | 中等 | +| [0371. 两整数之和](https://leetcode.cn/problems/sum-of-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sum-of-two-integers.md) | 位运算、数学 | 中等 | +| [0374. 猜数字大小](https://leetcode.cn/problems/guess-number-higher-or-lower/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower.md) | 二分查找、交互 | 简单 | +| [0375. 猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii.md) | 数学、动态规划、博弈 | 中等 | +| [0376. 摆动序列](https://leetcode.cn/problems/wiggle-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-subsequence.md) | 贪心、数组、动态规划 | 中等 | +| [0377. 组合总和 Ⅳ](https://leetcode.cn/problems/combination-sum-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/combination-sum-iv.md) | 数组、动态规划 | 中等 | +| [0378. 有序矩阵中第 K 小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-sorted-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/kth-smallest-element-in-a-sorted-matrix.md) | 数组、二分查找、矩阵、排序、堆(优先队列) | 中等 | +| [0380. O(1) 时间插入、删除和获取随机元素](https://leetcode.cn/problems/insert-delete-getrandom-o1/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/insert-delete-getrandom-o1.md) | 设计、数组、哈希表、数学、随机化 | 中等 | +| [0383. 赎金信](https://leetcode.cn/problems/ransom-note/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/ransom-note.md) | 哈希表、字符串、计数 | 简单 | +| [0384. 打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array.md) | 设计、数组、数学、随机化 | 中等 | +| [0386. 字典序排数](https://leetcode.cn/problems/lexicographical-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/lexicographical-numbers.md) | 深度优先搜索、字典树 | 中等 | +| [0387. 字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/first-unique-character-in-a-string.md) | 队列、哈希表、字符串、计数 | 简单 | +| [0389. 找不同](https://leetcode.cn/problems/find-the-difference/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/find-the-difference.md) | 位运算、哈希表、字符串、排序 | 简单 | +| [0391. 完美矩形](https://leetcode.cn/problems/perfect-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/perfect-rectangle.md) | 数组、扫描线 | 困难 | +| [0392. 判断子序列](https://leetcode.cn/problems/is-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/is-subsequence.md) | 双指针、字符串、动态规划 | 简单 | +| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string.md) | 栈、递归、字符串 | 中等 | +| [0395. 至少有 K 个重复字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-least-k-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-least-k-repeating-characters.md) | 哈希表、字符串、分治、滑动窗口 | 中等 | +| [0399. 除法求值](https://leetcode.cn/problems/evaluate-division/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/evaluate-division.md) | 深度优先搜索、广度优先搜索、并查集、图、数组、字符串、最短路 | 中等 | ### 第 400 ~ 499 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit/) | 数学、二分查找 | 中等 | -| [0403. 青蛙过河](https://leetcode.cn/problems/frog-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump/) | 数组、动态规划 | 困难 | -| [0404. 左叶子之和](https://leetcode.cn/problems/sum-of-left-leaves/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sum-of-left-leaves/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0405. 数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal/) | 位运算、数学 | 简单 | -| [0406. 根据身高重建队列](https://leetcode.cn/problems/queue-reconstruction-by-height/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/queue-reconstruction-by-height/) | 树状数组、线段树、数组、排序 | 中等 | -| [0409. 最长回文串](https://leetcode.cn/problems/longest-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-palindrome/) | 贪心、哈希表、字符串 | 简单 | -| [0410. 分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum/) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | -| [0412. Fizz Buzz](https://leetcode.cn/problems/fizz-buzz/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/fizz-buzz/) | 数学、字符串、模拟 | 简单 | -| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | -| [0416. 分割等和子集](https://leetcode.cn/problems/partition-equal-subset-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/partition-equal-subset-sum/) | 数组、动态规划 | 中等 | -| [0417. 太平洋大西洋水流问题](https://leetcode.cn/problems/pacific-atlantic-water-flow/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/pacific-atlantic-water-flow/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | -| [0421. 数组中两个数的最大异或值](https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array/) | 位运算、字典树、数组、哈希表 | 中等 | -| [0424. 替换后的最长重复字符](https://leetcode.cn/problems/longest-repeating-character-replacement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-repeating-character-replacement/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0425. 单词方块](https://leetcode.cn/problems/word-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/word-squares/) | 字典树、数组、字符串、回溯 | 困难 | -| [0426. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list/) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | -| [0428. 序列化和反序列化 N 叉树](https://leetcode.cn/problems/serialize-and-deserialize-n-ary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/serialize-and-deserialize-n-ary-tree/) | 树、深度优先搜索、广度优先搜索、字符串 | 困难 | -| [0429. N 叉树的层序遍历](https://leetcode.cn/problems/n-ary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/n-ary-tree-level-order-traversal/) | 树、广度优先搜索 | 中等 | -| [0430. 扁平化多级双向链表](https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list/) | 深度优先搜索、链表、双向链表 | 中等 | -| [0435. 无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-overlapping-intervals/) | 贪心、数组、动态规划、排序 | 中等 | -| [0437. 路径总和 III](https://leetcode.cn/problems/path-sum-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/path-sum-iii/) | 树、深度优先搜索、二叉树 | 中等 | -| [0438. 找到字符串中所有字母异位词](https://leetcode.cn/problems/find-all-anagrams-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-anagrams-in-a-string/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0443. 压缩字符串](https://leetcode.cn/problems/string-compression/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression/) | 双指针、字符串 | 中等 | -| [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii/) | 栈、链表、数学 | 中等 | -| [0447. 回旋镖的数量](https://leetcode.cn/problems/number-of-boomerangs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/number-of-boomerangs/) | 数组、哈希表、数学 | 中等 | -| [0450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst/) | 树、二叉搜索树、二叉树 | 中等 | -| [0451. 根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency/) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | -| [0452. 用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons/) | 贪心、数组、排序 | 中等 | -| [0454. 四数相加 II](https://leetcode.cn/problems/4sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/4sum-ii/) | 数组、哈希表 | 中等 | -| [0455. 分发饼干](https://leetcode.cn/problems/assign-cookies/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/assign-cookies/) | 贪心、数组、双指针、排序 | 简单 | -| [0459. 重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern/) | 字符串、字符串匹配 | 简单 | -| [0461. 汉明距离](https://leetcode.cn/problems/hamming-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/hamming-distance/) | 位运算 | 简单 | -| [0463. 岛屿的周长](https://leetcode.cn/problems/island-perimeter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/island-perimeter/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | -| [0464. 我能赢吗](https://leetcode.cn/problems/can-i-win/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/can-i-win/) | 位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 | 中等 | -| [0467. 环绕字符串中唯一的子字符串](https://leetcode.cn/problems/unique-substrings-in-wraparound-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/unique-substrings-in-wraparound-string/) | 字符串、动态规划 | 中等 | -| [0468. 验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address/) | 字符串 | 中等 | -| [0473. 火柴拼正方形](https://leetcode.cn/problems/matchsticks-to-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/matchsticks-to-square/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| [0474. 一和零](https://leetcode.cn/problems/ones-and-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/ones-and-zeroes/) | 数组、字符串、动态规划 | 中等 | -| [0480. 滑动窗口中位数](https://leetcode.cn/problems/sliding-window-median/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sliding-window-median/) | 数组、哈希表、滑动窗口、堆(优先队列) | 困难 | -| [0485. 最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones/) | 数组 | 简单 | -| [0486. 预测赢家](https://leetcode.cn/problems/predict-the-winner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/predict-the-winner/) | 递归、数组、数学、动态规划、博弈 | 中等 | -| [0487. 最大连续1的个数 II](https://leetcode.cn/problems/max-consecutive-ones-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones-ii/) | 数组、动态规划、滑动窗口 | 中等 | -| [0491. 非递减子序列](https://leetcode.cn/problems/non-decreasing-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-decreasing-subsequences/) | 位运算、数组、哈希表、回溯 | 中等 | -| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum/) | 数组、动态规划、回溯 | 中等 | -| [0496. 下一个更大元素 I](https://leetcode.cn/problems/next-greater-element-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/next-greater-element-i/) | 栈、数组、哈希表、单调栈 | 简单 | -| [0498. 对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse/) | 数组、矩阵、模拟 | 中等 | +| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit.md) | 数学、二分查找 | 中等 | +| [0403. 青蛙过河](https://leetcode.cn/problems/frog-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump.md) | 数组、动态规划 | 困难 | +| [0404. 左叶子之和](https://leetcode.cn/problems/sum-of-left-leaves/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sum-of-left-leaves.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0405. 数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal.md) | 位运算、数学 | 简单 | +| [0406. 根据身高重建队列](https://leetcode.cn/problems/queue-reconstruction-by-height/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/queue-reconstruction-by-height.md) | 树状数组、线段树、数组、排序 | 中等 | +| [0409. 最长回文串](https://leetcode.cn/problems/longest-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-palindrome.md) | 贪心、哈希表、字符串 | 简单 | +| [0410. 分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum.md) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | +| [0412. Fizz Buzz](https://leetcode.cn/problems/fizz-buzz/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/fizz-buzz.md) | 数学、字符串、模拟 | 简单 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings.md) | 数学、字符串、模拟 | 简单 | +| [0416. 分割等和子集](https://leetcode.cn/problems/partition-equal-subset-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/partition-equal-subset-sum.md) | 数组、动态规划 | 中等 | +| [0417. 太平洋大西洋水流问题](https://leetcode.cn/problems/pacific-atlantic-water-flow/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/pacific-atlantic-water-flow.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | +| [0421. 数组中两个数的最大异或值](https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array.md) | 位运算、字典树、数组、哈希表 | 中等 | +| [0424. 替换后的最长重复字符](https://leetcode.cn/problems/longest-repeating-character-replacement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-repeating-character-replacement.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0425. 单词方块](https://leetcode.cn/problems/word-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/word-squares.md) | 字典树、数组、字符串、回溯 | 困难 | +| [0426. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list.md) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | +| [0428. 序列化和反序列化 N 叉树](https://leetcode.cn/problems/serialize-and-deserialize-n-ary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/serialize-and-deserialize-n-ary-tree.md) | 树、深度优先搜索、广度优先搜索、字符串 | 困难 | +| [0429. N 叉树的层序遍历](https://leetcode.cn/problems/n-ary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/n-ary-tree-level-order-traversal.md) | 树、广度优先搜索 | 中等 | +| [0430. 扁平化多级双向链表](https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list.md) | 深度优先搜索、链表、双向链表 | 中等 | +| [0435. 无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-overlapping-intervals.md) | 贪心、数组、动态规划、排序 | 中等 | +| [0437. 路径总和 III](https://leetcode.cn/problems/path-sum-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/path-sum-iii.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0438. 找到字符串中所有字母异位词](https://leetcode.cn/problems/find-all-anagrams-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-anagrams-in-a-string.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0443. 压缩字符串](https://leetcode.cn/problems/string-compression/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression.md) | 双指针、字符串 | 中等 | +| [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii.md) | 栈、链表、数学 | 中等 | +| [0447. 回旋镖的数量](https://leetcode.cn/problems/number-of-boomerangs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/number-of-boomerangs.md) | 数组、哈希表、数学 | 中等 | +| [0450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst.md) | 树、二叉搜索树、二叉树 | 中等 | +| [0451. 根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency.md) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | +| [0452. 用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons.md) | 贪心、数组、排序 | 中等 | +| [0454. 四数相加 II](https://leetcode.cn/problems/4sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/4sum-ii.md) | 数组、哈希表 | 中等 | +| [0455. 分发饼干](https://leetcode.cn/problems/assign-cookies/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/assign-cookies.md) | 贪心、数组、双指针、排序 | 简单 | +| [0459. 重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern.md) | 字符串、字符串匹配 | 简单 | +| [0461. 汉明距离](https://leetcode.cn/problems/hamming-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/hamming-distance.md) | 位运算 | 简单 | +| [0463. 岛屿的周长](https://leetcode.cn/problems/island-perimeter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/island-perimeter.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | +| [0464. 我能赢吗](https://leetcode.cn/problems/can-i-win/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/can-i-win.md) | 位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 | 中等 | +| [0467. 环绕字符串中唯一的子字符串](https://leetcode.cn/problems/unique-substrings-in-wraparound-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/unique-substrings-in-wraparound-string.md) | 字符串、动态规划 | 中等 | +| [0468. 验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address.md) | 字符串 | 中等 | +| [0473. 火柴拼正方形](https://leetcode.cn/problems/matchsticks-to-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/matchsticks-to-square.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [0474. 一和零](https://leetcode.cn/problems/ones-and-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/ones-and-zeroes.md) | 数组、字符串、动态规划 | 中等 | +| [0480. 滑动窗口中位数](https://leetcode.cn/problems/sliding-window-median/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sliding-window-median.md) | 数组、哈希表、滑动窗口、堆(优先队列) | 困难 | +| [0485. 最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones.md) | 数组 | 简单 | +| [0486. 预测赢家](https://leetcode.cn/problems/predict-the-winner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/predict-the-winner.md) | 递归、数组、数学、动态规划、博弈 | 中等 | +| [0487. 最大连续1的个数 II](https://leetcode.cn/problems/max-consecutive-ones-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones-ii.md) | 数组、动态规划、滑动窗口 | 中等 | +| [0491. 非递减子序列](https://leetcode.cn/problems/non-decreasing-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-decreasing-subsequences.md) | 位运算、数组、哈希表、回溯 | 中等 | +| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum.md) | 数组、动态规划、回溯 | 中等 | +| [0496. 下一个更大元素 I](https://leetcode.cn/problems/next-greater-element-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/next-greater-element-i.md) | 栈、数组、哈希表、单调栈 | 简单 | +| [0498. 对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse.md) | 数组、矩阵、模拟 | 中等 | ### 第 500 ~ 599 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0501. 二叉搜索树中的众数](https://leetcode.cn/problems/find-mode-in-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-mode-in-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| [0503. 下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii/) | 栈、数组、单调栈 | 中等 | -| [0504. 七进制数](https://leetcode.cn/problems/base-7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7/) | 数学 | 简单 | -| [0506. 相对名次](https://leetcode.cn/problems/relative-ranks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/relative-ranks/) | 数组、排序、堆(优先队列) | 简单 | -| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| [0513. 找树左下角的值](https://leetcode.cn/problems/find-bottom-left-tree-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-bottom-left-tree-value/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0515. 在每个树行中找最大值](https://leetcode.cn/problems/find-largest-value-in-each-tree-row/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-largest-value-in-each-tree-row/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0516. 最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence/) | 字符串、动态规划 | 中等 | -| [0518. 零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii/) | 数组、动态规划 | 中等 | -| [0525. 连续数组](https://leetcode.cn/problems/contiguous-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/contiguous-array/) | 数组、哈希表、前缀和 | 中等 | -| [0526. 优美的排列](https://leetcode.cn/problems/beautiful-arrangement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/beautiful-arrangement/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| [0530. 二叉搜索树的最小绝对差](https://leetcode.cn/problems/minimum-absolute-difference-in-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-absolute-difference-in-bst/) | 树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树 | 简单 | -| [0538. 把二叉搜索树转换为累加树](https://leetcode.cn/problems/convert-bst-to-greater-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/convert-bst-to-greater-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [0539. 最小时间差](https://leetcode.cn/problems/minimum-time-difference/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-time-difference/) | 数组、数学、字符串、排序 | 中等 | -| [0542. 01 矩阵](https://leetcode.cn/problems/01-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/01-matrix/) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | -| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | -| [0546. 移除盒子](https://leetcode.cn/problems/remove-boxes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/remove-boxes/) | 记忆化搜索、数组、动态规划 | 困难 | -| [0547. 省份数量](https://leetcode.cn/problems/number-of-provinces/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/number-of-provinces/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0557. 反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii/) | 双指针、字符串 | 简单 | -| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k/) | 数组、哈希表、前缀和 | 中等 | -| [0561. 数组拆分](https://leetcode.cn/problems/array-partition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition/) | 贪心、数组、计数排序、排序 | 简单 | -| [0567. 字符串的排列](https://leetcode.cn/problems/permutation-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/permutation-in-string/) | 哈希表、双指针、字符串、滑动窗口 | 中等 | -| [0575. 分糖果](https://leetcode.cn/problems/distribute-candies/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/distribute-candies/) | 数组、哈希表 | 简单 | -| [0576. 出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths/) | 动态规划 | 中等 | -| [0583. 两个字符串的删除操作](https://leetcode.cn/problems/delete-operation-for-two-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/delete-operation-for-two-strings/) | 字符串、动态规划 | 中等 | -| [0589. N 叉树的前序遍历](https://leetcode.cn/problems/n-ary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-preorder-traversal/) | 栈、树、深度优先搜索 | 简单 | -| [0590. N 叉树的后序遍历](https://leetcode.cn/problems/n-ary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-postorder-traversal/) | 栈、树、深度优先搜索 | 简单 | -| [0599. 两个列表的最小索引总和](https://leetcode.cn/problems/minimum-index-sum-of-two-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-index-sum-of-two-lists/) | 数组、哈希表、字符串 | 简单 | +| [0501. 二叉搜索树中的众数](https://leetcode.cn/problems/find-mode-in-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-mode-in-binary-search-tree.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0503. 下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii.md) | 栈、数组、单调栈 | 中等 | +| [0504. 七进制数](https://leetcode.cn/problems/base-7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7.md) | 数学 | 简单 | +| [0506. 相对名次](https://leetcode.cn/problems/relative-ranks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/relative-ranks.md) | 数组、排序、堆(优先队列) | 简单 | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [0513. 找树左下角的值](https://leetcode.cn/problems/find-bottom-left-tree-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-bottom-left-tree-value.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0515. 在每个树行中找最大值](https://leetcode.cn/problems/find-largest-value-in-each-tree-row/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-largest-value-in-each-tree-row.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0516. 最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence.md) | 字符串、动态规划 | 中等 | +| [0518. 零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii.md) | 数组、动态规划 | 中等 | +| [0525. 连续数组](https://leetcode.cn/problems/contiguous-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/contiguous-array.md) | 数组、哈希表、前缀和 | 中等 | +| [0526. 优美的排列](https://leetcode.cn/problems/beautiful-arrangement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/beautiful-arrangement.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [0530. 二叉搜索树的最小绝对差](https://leetcode.cn/problems/minimum-absolute-difference-in-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-absolute-difference-in-bst.md) | 树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0538. 把二叉搜索树转换为累加树](https://leetcode.cn/problems/convert-bst-to-greater-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/convert-bst-to-greater-tree.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0539. 最小时间差](https://leetcode.cn/problems/minimum-time-difference/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-time-difference.md) | 数组、数学、字符串、排序 | 中等 | +| [0542. 01 矩阵](https://leetcode.cn/problems/01-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/01-matrix.md) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | +| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree.md) | 树、深度优先搜索、二叉树 | 简单 | +| [0546. 移除盒子](https://leetcode.cn/problems/remove-boxes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/remove-boxes.md) | 记忆化搜索、数组、动态规划 | 困难 | +| [0547. 省份数量](https://leetcode.cn/problems/number-of-provinces/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/number-of-provinces.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0557. 反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii.md) | 双指针、字符串 | 简单 | +| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k.md) | 数组、哈希表、前缀和 | 中等 | +| [0561. 数组拆分](https://leetcode.cn/problems/array-partition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition.md) | 贪心、数组、计数排序、排序 | 简单 | +| [0567. 字符串的排列](https://leetcode.cn/problems/permutation-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/permutation-in-string.md) | 哈希表、双指针、字符串、滑动窗口 | 中等 | +| [0575. 分糖果](https://leetcode.cn/problems/distribute-candies/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/distribute-candies.md) | 数组、哈希表 | 简单 | +| [0576. 出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths.md) | 动态规划 | 中等 | +| [0583. 两个字符串的删除操作](https://leetcode.cn/problems/delete-operation-for-two-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/delete-operation-for-two-strings.md) | 字符串、动态规划 | 中等 | +| [0589. N 叉树的前序遍历](https://leetcode.cn/problems/n-ary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-preorder-traversal.md) | 栈、树、深度优先搜索 | 简单 | +| [0590. N 叉树的后序遍历](https://leetcode.cn/problems/n-ary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-postorder-traversal.md) | 栈、树、深度优先搜索 | 简单 | +| [0599. 两个列表的最小索引总和](https://leetcode.cn/problems/minimum-index-sum-of-two-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-index-sum-of-two-lists.md) | 数组、哈希表、字符串 | 简单 | ### 第 600 ~ 699 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0600. 不含连续1的非负整数](https://leetcode.cn/problems/non-negative-integers-without-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones/) | 动态规划 | 困难 | -| [0611. 有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number/) | 贪心、数组、双指针、二分查找、排序 | 中等 | -| [0616. 给字符串添加加粗标签](https://leetcode.cn/problems/add-bold-tag-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/add-bold-tag-in-string/) | 字典树、数组、哈希表、字符串、字符串匹配 | 中等 | -| [0617. 合并二叉树](https://leetcode.cn/problems/merge-two-binary-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/merge-two-binary-trees/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0621. 任务调度器](https://leetcode.cn/problems/task-scheduler/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/task-scheduler/) | 贪心、数组、哈希表、计数、排序、堆(优先队列) | 中等 | -| [0622. 设计循环队列](https://leetcode.cn/problems/design-circular-queue/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-circular-queue/) | 设计、队列、数组、链表 | 中等 | -| [0633. 平方数之和](https://leetcode.cn/problems/sum-of-square-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/sum-of-square-numbers/) | 数学、双指针、二分查找 | 中等 | -| [0639. 解码方法 II](https://leetcode.cn/problems/decode-ways-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/decode-ways-ii/) | 字符串、动态规划 | 困难 | -| [0642. 设计搜索自动补全系统](https://leetcode.cn/problems/design-search-autocomplete-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-search-autocomplete-system/) | 深度优先搜索、设计、字典树、字符串、数据流、排序、堆(优先队列) | 困难 | -| [0643. 子数组最大平均数 I](https://leetcode.cn/problems/maximum-average-subarray-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-average-subarray-i/) | 数组、滑动窗口 | 简单 | -| [0647. 回文子串](https://leetcode.cn/problems/palindromic-substrings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/palindromic-substrings/) | 双指针、字符串、动态规划 | 中等 | -| [0648. 单词替换](https://leetcode.cn/problems/replace-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/replace-words/) | 字典树、数组、哈希表、字符串 | 中等 | -| [0650. 两个键的键盘](https://leetcode.cn/problems/2-keys-keyboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/2-keys-keyboard/) | 数学、动态规划 | 中等 | -| [0652. 寻找重复的子树](https://leetcode.cn/problems/find-duplicate-subtrees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-duplicate-subtrees/) | 树、深度优先搜索、哈希表、二叉树 | 中等 | -| [0653. 两数之和 IV - 输入二叉搜索树](https://leetcode.cn/problems/two-sum-iv-input-is-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/two-sum-iv-input-is-a-bst/) | 树、深度优先搜索、广度优先搜索、二叉搜索树、哈希表、双指针、二叉树 | 简单 | -| [0654. 最大二叉树](https://leetcode.cn/problems/maximum-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-binary-tree/) | 栈、树、数组、分治、二叉树、单调栈 | 中等 | -| [0658. 找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements/) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | -| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0664. 奇怪的打印机](https://leetcode.cn/problems/strange-printer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/strange-printer/) | 字符串、动态规划 | 困难 | -| [0665. 非递减数列](https://leetcode.cn/problems/non-decreasing-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-decreasing-array/) | 数组 | 中等 | -| [0669. 修剪二叉搜索树](https://leetcode.cn/problems/trim-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/trim-a-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) | 树状数组、线段树、数组、动态规划 | 中等 | -| [0674. 最长连续递增序列](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-continuous-increasing-subsequence/) | 数组 | 简单 | -| [0676. 实现一个魔法字典](https://leetcode.cn/problems/implement-magic-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/implement-magic-dictionary/) | 深度优先搜索、设计、字典树、哈希表、字符串 | 中等 | -| [0677. 键值映射](https://leetcode.cn/problems/map-sum-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/map-sum-pairs/) | 设计、字典树、哈希表、字符串 | 中等 | -| [0678. 有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string/) | 栈、贪心、字符串、动态规划 | 中等 | -| [0680. 验证回文串 II](https://leetcode.cn/problems/valid-palindrome-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-palindrome-ii/) | 贪心、双指针、字符串 | 简单 | -| [0683. K 个关闭的灯泡](https://leetcode.cn/problems/k-empty-slots/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/k-empty-slots/) | 树状数组、线段树、队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 困难 | -| [0684. 冗余连接](https://leetcode.cn/problems/redundant-connection/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0686. 重复叠加字符串匹配](https://leetcode.cn/problems/repeated-string-match/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match/) | 字符串、字符串匹配 | 中等 | -| [0687. 最长同值路径](https://leetcode.cn/problems/longest-univalue-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-univalue-path/) | 树、深度优先搜索、二叉树 | 中等 | -| [0688. 骑士在棋盘上的概率](https://leetcode.cn/problems/knight-probability-in-chessboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/knight-probability-in-chessboard/) | 动态规划 | 中等 | -| [0690. 员工的重要性](https://leetcode.cn/problems/employee-importance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/employee-importance/) | 树、深度优先搜索、广度优先搜索、数组、哈希表 | 中等 | -| [0691. 贴纸拼词](https://leetcode.cn/problems/stickers-to-spell-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/stickers-to-spell-word/) | 位运算、记忆化搜索、数组、哈希表、字符串、动态规划、回溯、状态压缩 | 困难 | -| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0698. 划分为k个相等的子集](https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/partition-to-k-equal-sum-subsets/) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | +| [0600. 不含连续1的非负整数](https://leetcode.cn/problems/non-negative-integers-without-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones.md) | 动态规划 | 困难 | +| [0611. 有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number.md) | 贪心、数组、双指针、二分查找、排序 | 中等 | +| [0616. 给字符串添加加粗标签](https://leetcode.cn/problems/add-bold-tag-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/add-bold-tag-in-string.md) | 字典树、数组、哈希表、字符串、字符串匹配 | 中等 | +| [0617. 合并二叉树](https://leetcode.cn/problems/merge-two-binary-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/merge-two-binary-trees.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0621. 任务调度器](https://leetcode.cn/problems/task-scheduler/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/task-scheduler.md) | 贪心、数组、哈希表、计数、排序、堆(优先队列) | 中等 | +| [0622. 设计循环队列](https://leetcode.cn/problems/design-circular-queue/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-circular-queue.md) | 设计、队列、数组、链表 | 中等 | +| [0633. 平方数之和](https://leetcode.cn/problems/sum-of-square-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/sum-of-square-numbers.md) | 数学、双指针、二分查找 | 中等 | +| [0639. 解码方法 II](https://leetcode.cn/problems/decode-ways-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/decode-ways-ii.md) | 字符串、动态规划 | 困难 | +| [0642. 设计搜索自动补全系统](https://leetcode.cn/problems/design-search-autocomplete-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-search-autocomplete-system.md) | 深度优先搜索、设计、字典树、字符串、数据流、排序、堆(优先队列) | 困难 | +| [0643. 子数组最大平均数 I](https://leetcode.cn/problems/maximum-average-subarray-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-average-subarray-i.md) | 数组、滑动窗口 | 简单 | +| [0647. 回文子串](https://leetcode.cn/problems/palindromic-substrings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/palindromic-substrings.md) | 双指针、字符串、动态规划 | 中等 | +| [0648. 单词替换](https://leetcode.cn/problems/replace-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/replace-words.md) | 字典树、数组、哈希表、字符串 | 中等 | +| [0650. 两个键的键盘](https://leetcode.cn/problems/2-keys-keyboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/2-keys-keyboard.md) | 数学、动态规划 | 中等 | +| [0652. 寻找重复的子树](https://leetcode.cn/problems/find-duplicate-subtrees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-duplicate-subtrees.md) | 树、深度优先搜索、哈希表、二叉树 | 中等 | +| [0653. 两数之和 IV - 输入二叉搜索树](https://leetcode.cn/problems/two-sum-iv-input-is-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/two-sum-iv-input-is-a-bst.md) | 树、深度优先搜索、广度优先搜索、二叉搜索树、哈希表、双指针、二叉树 | 简单 | +| [0654. 最大二叉树](https://leetcode.cn/problems/maximum-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-binary-tree.md) | 栈、树、数组、分治、二叉树、单调栈 | 中等 | +| [0658. 找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements.md) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0664. 奇怪的打印机](https://leetcode.cn/problems/strange-printer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/strange-printer.md) | 字符串、动态规划 | 困难 | +| [0665. 非递减数列](https://leetcode.cn/problems/non-decreasing-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-decreasing-array.md) | 数组 | 中等 | +| [0669. 修剪二叉搜索树](https://leetcode.cn/problems/trim-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/trim-a-binary-search-tree.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence.md) | 树状数组、线段树、数组、动态规划 | 中等 | +| [0674. 最长连续递增序列](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-continuous-increasing-subsequence.md) | 数组 | 简单 | +| [0676. 实现一个魔法字典](https://leetcode.cn/problems/implement-magic-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/implement-magic-dictionary.md) | 深度优先搜索、设计、字典树、哈希表、字符串 | 中等 | +| [0677. 键值映射](https://leetcode.cn/problems/map-sum-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/map-sum-pairs.md) | 设计、字典树、哈希表、字符串 | 中等 | +| [0678. 有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string.md) | 栈、贪心、字符串、动态规划 | 中等 | +| [0680. 验证回文串 II](https://leetcode.cn/problems/valid-palindrome-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-palindrome-ii.md) | 贪心、双指针、字符串 | 简单 | +| [0683. K 个关闭的灯泡](https://leetcode.cn/problems/k-empty-slots/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/k-empty-slots.md) | 树状数组、线段树、队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0684. 冗余连接](https://leetcode.cn/problems/redundant-connection/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0686. 重复叠加字符串匹配](https://leetcode.cn/problems/repeated-string-match/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match.md) | 字符串、字符串匹配 | 中等 | +| [0687. 最长同值路径](https://leetcode.cn/problems/longest-univalue-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-univalue-path.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0688. 骑士在棋盘上的概率](https://leetcode.cn/problems/knight-probability-in-chessboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/knight-probability-in-chessboard.md) | 动态规划 | 中等 | +| [0690. 员工的重要性](https://leetcode.cn/problems/employee-importance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/employee-importance.md) | 树、深度优先搜索、广度优先搜索、数组、哈希表 | 中等 | +| [0691. 贴纸拼词](https://leetcode.cn/problems/stickers-to-spell-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/stickers-to-spell-word.md) | 位运算、记忆化搜索、数组、哈希表、字符串、动态规划、回溯、状态压缩 | 困难 | +| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0698. 划分为k个相等的子集](https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/partition-to-k-equal-sum-subsets.md) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | ### 第 700 ~ 799 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0700. 二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-binary-search-tree/) | 树、二叉搜索树、二叉树 | 简单 | -| [0701. 二叉搜索树中的插入操作](https://leetcode.cn/problems/insert-into-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-binary-search-tree/) | 树、二叉搜索树、二叉树 | 中等 | -| [0702. 搜索长度未知的有序数组](https://leetcode.cn/problems/search-in-a-sorted-array-of-unknown-size/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size/) | 数组、二分查找、交互 | 中等 | -| [0703. 数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream/) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | -| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search/) | 数组、二分查找 | 简单 | -| [0705. 设计哈希集合](https://leetcode.cn/problems/design-hashset/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashset/) | 设计、数组、哈希表、链表、哈希函数 | 简单 | -| [0706. 设计哈希映射](https://leetcode.cn/problems/design-hashmap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashmap/) | 设计、数组、哈希表、链表、哈希函数 | 简单 | -| [0707. 设计链表](https://leetcode.cn/problems/design-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-linked-list/) | 设计、链表 | 中等 | -| [0708. 循环有序列表的插入](https://leetcode.cn/problems/insert-into-a-sorted-circular-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-sorted-circular-linked-list/) | 链表 | 中等 | -| [0709. 转换成小写字母](https://leetcode.cn/problems/to-lower-case/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/to-lower-case/) | 字符串 | 简单 | -| [0713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/subarray-product-less-than-k/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| [0714. 买卖股票的最佳时机含手续费](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee/) | 贪心、数组、动态规划 | 中等 | -| [0715. Range 模块](https://leetcode.cn/problems/range-module/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/range-module/) | 设计、线段树、有序集合 | 困难 | -| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| [0719. 找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance/) | 数组、双指针、二分查找、排序 | 困难 | -| [0720. 词典中最长的单词](https://leetcode.cn/problems/longest-word-in-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/longest-word-in-dictionary/) | 字典树、数组、哈希表、字符串、排序 | 中等 | -| [0724. 寻找数组的中心下标](https://leetcode.cn/problems/find-pivot-index/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-pivot-index/) | 数组、前缀和 | 简单 | -| [0727. 最小窗口子序列](https://leetcode.cn/problems/minimum-window-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-window-subsequence/) | 字符串、动态规划、滑动窗口 | 困难 | -| [0729. 我的日程安排表 I](https://leetcode.cn/problems/my-calendar-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-i/) | 设计、线段树、数组、二分查找、有序集合 | 中等 | -| [0731. 我的日程安排表 II](https://leetcode.cn/problems/my-calendar-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-ii/) | 设计、线段树、数组、二分查找、有序集合、前缀和 | 中等 | -| [0732. 我的日程安排表 III](https://leetcode.cn/problems/my-calendar-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-iii/) | 设计、线段树、二分查找、有序集合、前缀和 | 困难 | -| [0733. 图像渲染](https://leetcode.cn/problems/flood-fill/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/flood-fill/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | -| [0735. 小行星碰撞](https://leetcode.cn/problems/asteroid-collision/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/asteroid-collision/) | 栈、数组、模拟 | 中等 | -| [0738. 单调递增的数字](https://leetcode.cn/problems/monotone-increasing-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/monotone-increasing-digits/) | 贪心、数学 | 中等 | -| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) | 栈、数组、单调栈 | 中等 | -| [0744. 寻找比目标字母大的最小字母](https://leetcode.cn/problems/find-smallest-letter-greater-than-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-smallest-letter-greater-than-target/) | 数组、二分查找 | 简单 | -| [0746. 使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/min-cost-climbing-stairs/) | 数组、动态规划 | 简单 | -| [0752. 打开转盘锁](https://leetcode.cn/problems/open-the-lock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/open-the-lock/) | 广度优先搜索、数组、哈希表、字符串 | 中等 | -| [0758. 字符串中的加粗单词](https://leetcode.cn/problems/bold-words-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/bold-words-in-string/) | 字典树、数组、哈希表、字符串、字符串匹配 | 中等 | -| [0763. 划分字母区间](https://leetcode.cn/problems/partition-labels/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/partition-labels/) | 贪心、哈希表、双指针、字符串 | 中等 | -| [0765. 情侣牵手](https://leetcode.cn/problems/couples-holding-hands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/couples-holding-hands/) | 贪心、深度优先搜索、广度优先搜索、并查集、图 | 困难 | -| [0766. 托普利茨矩阵](https://leetcode.cn/problems/toeplitz-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/toeplitz-matrix/) | 数组、矩阵 | 简单 | -| [0771. 宝石与石头](https://leetcode.cn/problems/jewels-and-stones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/jewels-and-stones/) | 哈希表、字符串 | 简单 | -| [0778. 水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | -| [0779. 第K个语法符号](https://leetcode.cn/problems/k-th-symbol-in-grammar/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/k-th-symbol-in-grammar/) | 位运算、递归、数学 | 中等 | -| [0783. 二叉搜索树节点最小距离](https://leetcode.cn/problems/minimum-distance-between-bst-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-distance-between-bst-nodes/) | 树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树 | 简单 | -| [0784. 字母大小写全排列](https://leetcode.cn/problems/letter-case-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/letter-case-permutation/) | 位运算、字符串、回溯 | 中等 | -| [0785. 判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0788. 旋转数字](https://leetcode.cn/problems/rotated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotated-digits/) | 数学、动态规划 | 中等 | -| [0795. 区间子数组个数](https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum/) | 数组、双指针 | 中等 | -| [0796. 旋转字符串](https://leetcode.cn/problems/rotate-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string/) | 字符串、字符串匹配 | 简单 | -| [0797. 所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target/) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | +| [0700. 二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-binary-search-tree.md) | 树、二叉搜索树、二叉树 | 简单 | +| [0701. 二叉搜索树中的插入操作](https://leetcode.cn/problems/insert-into-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-binary-search-tree.md) | 树、二叉搜索树、二叉树 | 中等 | +| [0702. 搜索长度未知的有序数组](https://leetcode.cn/problems/search-in-a-sorted-array-of-unknown-size/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size.md) | 数组、二分查找、交互 | 中等 | +| [0703. 数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream.md) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | +| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search.md) | 数组、二分查找 | 简单 | +| [0705. 设计哈希集合](https://leetcode.cn/problems/design-hashset/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashset.md) | 设计、数组、哈希表、链表、哈希函数 | 简单 | +| [0706. 设计哈希映射](https://leetcode.cn/problems/design-hashmap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashmap.md) | 设计、数组、哈希表、链表、哈希函数 | 简单 | +| [0707. 设计链表](https://leetcode.cn/problems/design-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-linked-list.md) | 设计、链表 | 中等 | +| [0708. 循环有序列表的插入](https://leetcode.cn/problems/insert-into-a-sorted-circular-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-sorted-circular-linked-list.md) | 链表 | 中等 | +| [0709. 转换成小写字母](https://leetcode.cn/problems/to-lower-case/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/to-lower-case.md) | 字符串 | 简单 | +| [0713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/subarray-product-less-than-k.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0714. 买卖股票的最佳时机含手续费](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee.md) | 贪心、数组、动态规划 | 中等 | +| [0715. Range 模块](https://leetcode.cn/problems/range-module/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/range-module.md) | 设计、线段树、有序集合 | 困难 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0719. 找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance.md) | 数组、双指针、二分查找、排序 | 困难 | +| [0720. 词典中最长的单词](https://leetcode.cn/problems/longest-word-in-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/longest-word-in-dictionary.md) | 字典树、数组、哈希表、字符串、排序 | 中等 | +| [0724. 寻找数组的中心下标](https://leetcode.cn/problems/find-pivot-index/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-pivot-index.md) | 数组、前缀和 | 简单 | +| [0727. 最小窗口子序列](https://leetcode.cn/problems/minimum-window-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-window-subsequence.md) | 字符串、动态规划、滑动窗口 | 困难 | +| [0729. 我的日程安排表 I](https://leetcode.cn/problems/my-calendar-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-i.md) | 设计、线段树、数组、二分查找、有序集合 | 中等 | +| [0731. 我的日程安排表 II](https://leetcode.cn/problems/my-calendar-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-ii.md) | 设计、线段树、数组、二分查找、有序集合、前缀和 | 中等 | +| [0732. 我的日程安排表 III](https://leetcode.cn/problems/my-calendar-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-iii.md) | 设计、线段树、二分查找、有序集合、前缀和 | 困难 | +| [0733. 图像渲染](https://leetcode.cn/problems/flood-fill/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/flood-fill.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | +| [0735. 小行星碰撞](https://leetcode.cn/problems/asteroid-collision/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/asteroid-collision.md) | 栈、数组、模拟 | 中等 | +| [0738. 单调递增的数字](https://leetcode.cn/problems/monotone-increasing-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/monotone-increasing-digits.md) | 贪心、数学 | 中等 | +| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures.md) | 栈、数组、单调栈 | 中等 | +| [0744. 寻找比目标字母大的最小字母](https://leetcode.cn/problems/find-smallest-letter-greater-than-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-smallest-letter-greater-than-target.md) | 数组、二分查找 | 简单 | +| [0746. 使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/min-cost-climbing-stairs.md) | 数组、动态规划 | 简单 | +| [0752. 打开转盘锁](https://leetcode.cn/problems/open-the-lock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/open-the-lock.md) | 广度优先搜索、数组、哈希表、字符串 | 中等 | +| [0758. 字符串中的加粗单词](https://leetcode.cn/problems/bold-words-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/bold-words-in-string.md) | 字典树、数组、哈希表、字符串、字符串匹配 | 中等 | +| [0763. 划分字母区间](https://leetcode.cn/problems/partition-labels/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/partition-labels.md) | 贪心、哈希表、双指针、字符串 | 中等 | +| [0765. 情侣牵手](https://leetcode.cn/problems/couples-holding-hands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/couples-holding-hands.md) | 贪心、深度优先搜索、广度优先搜索、并查集、图 | 困难 | +| [0766. 托普利茨矩阵](https://leetcode.cn/problems/toeplitz-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/toeplitz-matrix.md) | 数组、矩阵 | 简单 | +| [0771. 宝石与石头](https://leetcode.cn/problems/jewels-and-stones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/jewels-and-stones.md) | 哈希表、字符串 | 简单 | +| [0778. 水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | +| [0779. 第K个语法符号](https://leetcode.cn/problems/k-th-symbol-in-grammar/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/k-th-symbol-in-grammar.md) | 位运算、递归、数学 | 中等 | +| [0783. 二叉搜索树节点最小距离](https://leetcode.cn/problems/minimum-distance-between-bst-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-distance-between-bst-nodes.md) | 树、深度优先搜索、广度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0784. 字母大小写全排列](https://leetcode.cn/problems/letter-case-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/letter-case-permutation.md) | 位运算、字符串、回溯 | 中等 | +| [0785. 判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0788. 旋转数字](https://leetcode.cn/problems/rotated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotated-digits.md) | 数学、动态规划 | 中等 | +| [0795. 区间子数组个数](https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum.md) | 数组、双指针 | 中等 | +| [0796. 旋转字符串](https://leetcode.cn/problems/rotate-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string.md) | 字符串、字符串匹配 | 简单 | +| [0797. 所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target.md) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | ### 第 800 ~ 899 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0800. 相似 RGB 颜色](https://leetcode.cn/problems/similar-rgb-color/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/similar-rgb-color/) | 数学、字符串、枚举 | 简单 | -| [0801. 使序列递增的最小交换次数](https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing/) | 数组、动态规划 | 困难 | -| [0802. 找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [0803. 打砖块](https://leetcode.cn/problems/bricks-falling-when-hit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bricks-falling-when-hit/) | 并查集、数组、矩阵 | 困难 | -| [0804. 唯一摩尔斯密码词](https://leetcode.cn/problems/unique-morse-code-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/unique-morse-code-words/) | 数组、哈希表、字符串 | 简单 | -| [0806. 写字符串需要的行数](https://leetcode.cn/problems/number-of-lines-to-write-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/number-of-lines-to-write-string/) | 数组、字符串 | 简单 | -| [0811. 子域名访问计数](https://leetcode.cn/problems/subdomain-visit-count/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/subdomain-visit-count/) | 数组、哈希表、字符串、计数 | 中等 | -| [0814. 二叉树剪枝](https://leetcode.cn/problems/binary-tree-pruning/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-tree-pruning/) | 树、深度优先搜索、二叉树 | 中等 | -| [0819. 最常见的单词](https://leetcode.cn/problems/most-common-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/most-common-word/) | 数组、哈希表、字符串、计数 | 简单 | -| [0820. 单词的压缩编码](https://leetcode.cn/problems/short-encoding-of-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/short-encoding-of-words/) | 字典树、数组、哈希表、字符串 | 中等 | -| [0821. 字符的最短距离](https://leetcode.cn/problems/shortest-distance-to-a-character/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-distance-to-a-character/) | 数组、双指针、字符串 | 简单 | -| [0824. 山羊拉丁文](https://leetcode.cn/problems/goat-latin/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/goat-latin/) | 字符串 | 简单 | -| [0830. 较大分组的位置](https://leetcode.cn/problems/positions-of-large-groups/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/positions-of-large-groups/) | 字符串 | 简单 | -| [0832. 翻转图像](https://leetcode.cn/problems/flipping-an-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/flipping-an-image/) | 位运算、数组、双指针、矩阵、模拟 | 简单 | -| [0834. 树中距离之和](https://leetcode.cn/problems/sum-of-distances-in-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/sum-of-distances-in-tree/) | 树、深度优先搜索、图、动态规划 | 困难 | -| [0836. 矩形重叠](https://leetcode.cn/problems/rectangle-overlap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-overlap/) | 几何、数学 | 简单 | -| [0841. 钥匙和房间](https://leetcode.cn/problems/keys-and-rooms/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/keys-and-rooms/) | 深度优先搜索、广度优先搜索、图 | 中等 | -| [0844. 比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/backspace-string-compare/) | 栈、双指针、字符串、模拟 | 简单 | -| [0845. 数组中的最长山脉](https://leetcode.cn/problems/longest-mountain-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/longest-mountain-in-array/) | 数组、双指针、动态规划、枚举 | 中等 | -| [0846. 一手顺子](https://leetcode.cn/problems/hand-of-straights/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/hand-of-straights/) | 贪心、数组、哈希表、排序 | 中等 | -| [0847. 访问所有节点的最短路径](https://leetcode.cn/problems/shortest-path-visiting-all-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-path-visiting-all-nodes/) | 位运算、广度优先搜索、图、动态规划、状态压缩 | 困难 | -| [0850. 矩形面积 II](https://leetcode.cn/problems/rectangle-area-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-area-ii/) | 线段树、数组、有序集合、扫描线 | 困难 | -| [0851. 喧闹和富有](https://leetcode.cn/problems/loud-and-rich/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/loud-and-rich/) | 深度优先搜索、图、拓扑排序、数组 | 中等 | -| [0852. 山脉数组的峰顶索引](https://leetcode.cn/problems/peak-index-in-a-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/peak-index-in-a-mountain-array/) | 数组、二分查找 | 中等 | -| [0860. 柠檬水找零](https://leetcode.cn/problems/lemonade-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/lemonade-change/) | 贪心、数组 | 简单 | -| [0861. 翻转矩阵后的得分](https://leetcode.cn/problems/score-after-flipping-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/score-after-flipping-matrix/) | 贪心、位运算、数组、矩阵 | 中等 | -| [0862. 和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k/) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | -| [0867. 转置矩阵](https://leetcode.cn/problems/transpose-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/transpose-matrix/) | 数组、矩阵、模拟 | 简单 | -| [0868. 二进制间距](https://leetcode.cn/problems/binary-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-gap/) | 位运算 | 简单 | -| [0872. 叶子相似的树](https://leetcode.cn/problems/leaf-similar-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/leaf-similar-trees/) | 树、深度优先搜索、二叉树 | 简单 | -| [0873. 最长的斐波那契子序列的长度](https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence/) | 数组、哈希表、动态规划 | 中等 | -| [0875. 爱吃香蕉的珂珂](https://leetcode.cn/problems/koko-eating-bananas/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/koko-eating-bananas/) | 数组、二分查找 | 中等 | -| [0876. 链表的中间结点](https://leetcode.cn/problems/middle-of-the-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/middle-of-the-linked-list/) | 链表、双指针 | 简单 | -| [0877. 石子游戏](https://leetcode.cn/problems/stone-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/stone-game/) | 数组、数学、动态规划、博弈 | 中等 | -| [0881. 救生艇](https://leetcode.cn/problems/boats-to-save-people/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/boats-to-save-people/) | 贪心、数组、双指针、排序 | 中等 | -| [0884. 两句话中的不常见单词](https://leetcode.cn/problems/uncommon-words-from-two-sentences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/uncommon-words-from-two-sentences/) | 哈希表、字符串、计数 | 简单 | -| [0886. 可能的二分法](https://leetcode.cn/problems/possible-bipartition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/possible-bipartition/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0887. 鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop/) | 数学、二分查找、动态规划 | 困难 | -| [0889. 根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | -| [0892. 三维形体的表面积](https://leetcode.cn/problems/surface-area-of-3d-shapes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/surface-area-of-3d-shapes/) | 几何、数组、数学、矩阵 | 简单 | -| [0897. 递增顺序搜索树](https://leetcode.cn/problems/increasing-order-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/increasing-order-search-tree/) | 栈、树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0800. 相似 RGB 颜色](https://leetcode.cn/problems/similar-rgb-color/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/similar-rgb-color.md) | 数学、字符串、枚举 | 简单 | +| [0801. 使序列递增的最小交换次数](https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing.md) | 数组、动态规划 | 困难 | +| [0802. 找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0803. 打砖块](https://leetcode.cn/problems/bricks-falling-when-hit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bricks-falling-when-hit.md) | 并查集、数组、矩阵 | 困难 | +| [0804. 唯一摩尔斯密码词](https://leetcode.cn/problems/unique-morse-code-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/unique-morse-code-words.md) | 数组、哈希表、字符串 | 简单 | +| [0806. 写字符串需要的行数](https://leetcode.cn/problems/number-of-lines-to-write-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/number-of-lines-to-write-string.md) | 数组、字符串 | 简单 | +| [0811. 子域名访问计数](https://leetcode.cn/problems/subdomain-visit-count/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/subdomain-visit-count.md) | 数组、哈希表、字符串、计数 | 中等 | +| [0814. 二叉树剪枝](https://leetcode.cn/problems/binary-tree-pruning/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-tree-pruning.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0819. 最常见的单词](https://leetcode.cn/problems/most-common-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/most-common-word.md) | 数组、哈希表、字符串、计数 | 简单 | +| [0820. 单词的压缩编码](https://leetcode.cn/problems/short-encoding-of-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/short-encoding-of-words.md) | 字典树、数组、哈希表、字符串 | 中等 | +| [0821. 字符的最短距离](https://leetcode.cn/problems/shortest-distance-to-a-character/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-distance-to-a-character.md) | 数组、双指针、字符串 | 简单 | +| [0824. 山羊拉丁文](https://leetcode.cn/problems/goat-latin/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/goat-latin.md) | 字符串 | 简单 | +| [0830. 较大分组的位置](https://leetcode.cn/problems/positions-of-large-groups/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/positions-of-large-groups.md) | 字符串 | 简单 | +| [0832. 翻转图像](https://leetcode.cn/problems/flipping-an-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/flipping-an-image.md) | 位运算、数组、双指针、矩阵、模拟 | 简单 | +| [0834. 树中距离之和](https://leetcode.cn/problems/sum-of-distances-in-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/sum-of-distances-in-tree.md) | 树、深度优先搜索、图、动态规划 | 困难 | +| [0836. 矩形重叠](https://leetcode.cn/problems/rectangle-overlap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-overlap.md) | 几何、数学 | 简单 | +| [0841. 钥匙和房间](https://leetcode.cn/problems/keys-and-rooms/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/keys-and-rooms.md) | 深度优先搜索、广度优先搜索、图 | 中等 | +| [0844. 比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/backspace-string-compare.md) | 栈、双指针、字符串、模拟 | 简单 | +| [0845. 数组中的最长山脉](https://leetcode.cn/problems/longest-mountain-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/longest-mountain-in-array.md) | 数组、双指针、动态规划、枚举 | 中等 | +| [0846. 一手顺子](https://leetcode.cn/problems/hand-of-straights/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/hand-of-straights.md) | 贪心、数组、哈希表、排序 | 中等 | +| [0847. 访问所有节点的最短路径](https://leetcode.cn/problems/shortest-path-visiting-all-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-path-visiting-all-nodes.md) | 位运算、广度优先搜索、图、动态规划、状态压缩 | 困难 | +| [0850. 矩形面积 II](https://leetcode.cn/problems/rectangle-area-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-area-ii.md) | 线段树、数组、有序集合、扫描线 | 困难 | +| [0851. 喧闹和富有](https://leetcode.cn/problems/loud-and-rich/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/loud-and-rich.md) | 深度优先搜索、图、拓扑排序、数组 | 中等 | +| [0852. 山脉数组的峰顶索引](https://leetcode.cn/problems/peak-index-in-a-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/peak-index-in-a-mountain-array.md) | 数组、二分查找 | 中等 | +| [0860. 柠檬水找零](https://leetcode.cn/problems/lemonade-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/lemonade-change.md) | 贪心、数组 | 简单 | +| [0861. 翻转矩阵后的得分](https://leetcode.cn/problems/score-after-flipping-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/score-after-flipping-matrix.md) | 贪心、位运算、数组、矩阵 | 中等 | +| [0862. 和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k.md) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0867. 转置矩阵](https://leetcode.cn/problems/transpose-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/transpose-matrix.md) | 数组、矩阵、模拟 | 简单 | +| [0868. 二进制间距](https://leetcode.cn/problems/binary-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-gap.md) | 位运算 | 简单 | +| [0872. 叶子相似的树](https://leetcode.cn/problems/leaf-similar-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/leaf-similar-trees.md) | 树、深度优先搜索、二叉树 | 简单 | +| [0873. 最长的斐波那契子序列的长度](https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence.md) | 数组、哈希表、动态规划 | 中等 | +| [0875. 爱吃香蕉的珂珂](https://leetcode.cn/problems/koko-eating-bananas/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/koko-eating-bananas.md) | 数组、二分查找 | 中等 | +| [0876. 链表的中间结点](https://leetcode.cn/problems/middle-of-the-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/middle-of-the-linked-list.md) | 链表、双指针 | 简单 | +| [0877. 石子游戏](https://leetcode.cn/problems/stone-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/stone-game.md) | 数组、数学、动态规划、博弈 | 中等 | +| [0881. 救生艇](https://leetcode.cn/problems/boats-to-save-people/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/boats-to-save-people.md) | 贪心、数组、双指针、排序 | 中等 | +| [0884. 两句话中的不常见单词](https://leetcode.cn/problems/uncommon-words-from-two-sentences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/uncommon-words-from-two-sentences.md) | 哈希表、字符串、计数 | 简单 | +| [0886. 可能的二分法](https://leetcode.cn/problems/possible-bipartition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/possible-bipartition.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0887. 鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop.md) | 数学、二分查找、动态规划 | 困难 | +| [0889. 根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal.md) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0892. 三维形体的表面积](https://leetcode.cn/problems/surface-area-of-3d-shapes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/surface-area-of-3d-shapes.md) | 几何、数组、数学、矩阵 | 简单 | +| [0897. 递增顺序搜索树](https://leetcode.cn/problems/increasing-order-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/increasing-order-search-tree.md) | 栈、树、深度优先搜索、二叉搜索树、二叉树 | 简单 | ### 第 900 ~ 999 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0900. RLE 迭代器](https://leetcode.cn/problems/rle-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/rle-iterator/) | 设计、数组、计数、迭代器 | 中等 | -| [0901. 股票价格跨度](https://leetcode.cn/problems/online-stock-span/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/online-stock-span/) | 栈、设计、数据流、单调栈 | 中等 | -| [0902. 最大为 N 的数字组合](https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/numbers-at-most-n-given-digit-set/) | 数组、数学、字符串、二分查找、动态规划 | 困难 | -| [0904. 水果成篮](https://leetcode.cn/problems/fruit-into-baskets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/fruit-into-baskets/) | 数组、哈希表、滑动窗口 | 中等 | -| [0908. 最小差值 I](https://leetcode.cn/problems/smallest-range-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/smallest-range-i/) | 数组、数学 | 简单 | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0918. 环形子数组的最大和](https://leetcode.cn/problems/maximum-sum-circular-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/maximum-sum-circular-subarray/) | 队列、数组、分治、动态规划、单调队列 | 中等 | -| [0919. 完全二叉树插入器](https://leetcode.cn/problems/complete-binary-tree-inserter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/complete-binary-tree-inserter/) | 树、广度优先搜索、设计、二叉树 | 中等 | -| [0921. 使括号有效的最少添加](https://leetcode.cn/problems/minimum-add-to-make-parentheses-valid/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid/) | 栈、贪心、字符串 | 中等 | -| [0925. 长按键入](https://leetcode.cn/problems/long-pressed-name/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/long-pressed-name/) | 双指针、字符串 | 简单 | -| [0932. 漂亮数组](https://leetcode.cn/problems/beautiful-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/beautiful-array/) | 数组、数学、分治 | 中等 | -| [0933. 最近的请求次数](https://leetcode.cn/problems/number-of-recent-calls/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/number-of-recent-calls/) | 设计、队列、数据流 | 简单 | -| [0935. 骑士拨号器](https://leetcode.cn/problems/knight-dialer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/knight-dialer/) | 动态规划 | 中等 | -| [0938. 二叉搜索树的范围和](https://leetcode.cn/problems/range-sum-of-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/range-sum-of-bst/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| [0946. 验证栈序列](https://leetcode.cn/problems/validate-stack-sequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/validate-stack-sequences/) | 栈、数组、模拟 | 中等 | -| [0947. 移除最多的同行或同列石头](https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column/) | 深度优先搜索、并查集、图、哈希表 | 中等 | -| [0953. 验证外星语词典](https://leetcode.cn/problems/verifying-an-alien-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/verifying-an-alien-dictionary/) | 数组、哈希表、字符串 | 简单 | -| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | -| [0959. 由斜杠划分区域](https://leetcode.cn/problems/regions-cut-by-slashes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/regions-cut-by-slashes/) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、矩阵 | 中等 | -| [0968. 监控二叉树](https://leetcode.cn/problems/binary-tree-cameras/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/binary-tree-cameras/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [0973. 最接近原点的 K 个点](https://leetcode.cn/problems/k-closest-points-to-origin/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/k-closest-points-to-origin/) | 几何、数组、数学、分治、快速选择、排序、堆(优先队列) | 中等 | -| [0974. 和可被 K 整除的子数组](https://leetcode.cn/problems/subarray-sums-divisible-by-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarray-sums-divisible-by-k/) | 数组、哈希表、前缀和 | 中等 | -| [0976. 三角形的最大周长](https://leetcode.cn/problems/largest-perimeter-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/largest-perimeter-triangle/) | 贪心、数组、数学、排序 | 简单 | -| [0977. 有序数组的平方](https://leetcode.cn/problems/squares-of-a-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/squares-of-a-sorted-array/) | 数组、双指针、排序 | 简单 | -| [0978. 最长湍流子数组](https://leetcode.cn/problems/longest-turbulent-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/longest-turbulent-subarray/) | 数组、动态规划、滑动窗口 | 中等 | -| [0982. 按位与为零的三元组](https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero/) | 位运算、数组、哈希表 | 困难 | -| [0990. 等式方程的可满足性](https://leetcode.cn/problems/satisfiability-of-equality-equations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/satisfiability-of-equality-equations/) | 并查集、图、数组、字符串 | 中等 | -| [0992. K 个不同整数的子数组](https://leetcode.cn/problems/subarrays-with-k-different-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarrays-with-k-different-integers/) | 数组、哈希表、计数、滑动窗口 | 困难 | -| [0993. 二叉树的堂兄弟节点](https://leetcode.cn/problems/cousins-in-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/cousins-in-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0995. K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips/) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | -| [0999. 可以被一步捕获的棋子数](https://leetcode.cn/problems/available-captures-for-rook/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/available-captures-for-rook/) | 数组、矩阵、模拟 | 简单 | +| [0900. RLE 迭代器](https://leetcode.cn/problems/rle-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/rle-iterator.md) | 设计、数组、计数、迭代器 | 中等 | +| [0901. 股票价格跨度](https://leetcode.cn/problems/online-stock-span/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/online-stock-span.md) | 栈、设计、数据流、单调栈 | 中等 | +| [0902. 最大为 N 的数字组合](https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/numbers-at-most-n-given-digit-set.md) | 数组、数学、字符串、二分查找、动态规划 | 困难 | +| [0904. 水果成篮](https://leetcode.cn/problems/fruit-into-baskets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/fruit-into-baskets.md) | 数组、哈希表、滑动窗口 | 中等 | +| [0908. 最小差值 I](https://leetcode.cn/problems/smallest-range-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/smallest-range-i.md) | 数组、数学 | 简单 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0918. 环形子数组的最大和](https://leetcode.cn/problems/maximum-sum-circular-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/maximum-sum-circular-subarray.md) | 队列、数组、分治、动态规划、单调队列 | 中等 | +| [0919. 完全二叉树插入器](https://leetcode.cn/problems/complete-binary-tree-inserter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/complete-binary-tree-inserter.md) | 树、广度优先搜索、设计、二叉树 | 中等 | +| [0921. 使括号有效的最少添加](https://leetcode.cn/problems/minimum-add-to-make-parentheses-valid/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid.md) | 栈、贪心、字符串 | 中等 | +| [0925. 长按键入](https://leetcode.cn/problems/long-pressed-name/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/long-pressed-name.md) | 双指针、字符串 | 简单 | +| [0932. 漂亮数组](https://leetcode.cn/problems/beautiful-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/beautiful-array.md) | 数组、数学、分治 | 中等 | +| [0933. 最近的请求次数](https://leetcode.cn/problems/number-of-recent-calls/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/number-of-recent-calls.md) | 设计、队列、数据流 | 简单 | +| [0935. 骑士拨号器](https://leetcode.cn/problems/knight-dialer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/knight-dialer.md) | 动态规划 | 中等 | +| [0938. 二叉搜索树的范围和](https://leetcode.cn/problems/range-sum-of-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/range-sum-of-bst.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0946. 验证栈序列](https://leetcode.cn/problems/validate-stack-sequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/validate-stack-sequences.md) | 栈、数组、模拟 | 中等 | +| [0947. 移除最多的同行或同列石头](https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column.md) | 深度优先搜索、并查集、图、哈希表 | 中等 | +| [0953. 验证外星语词典](https://leetcode.cn/problems/verifying-an-alien-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/verifying-an-alien-dictionary.md) | 数组、哈希表、字符串 | 简单 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0959. 由斜杠划分区域](https://leetcode.cn/problems/regions-cut-by-slashes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/regions-cut-by-slashes.md) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、矩阵 | 中等 | +| [0968. 监控二叉树](https://leetcode.cn/problems/binary-tree-cameras/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/binary-tree-cameras.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0973. 最接近原点的 K 个点](https://leetcode.cn/problems/k-closest-points-to-origin/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/k-closest-points-to-origin.md) | 几何、数组、数学、分治、快速选择、排序、堆(优先队列) | 中等 | +| [0974. 和可被 K 整除的子数组](https://leetcode.cn/problems/subarray-sums-divisible-by-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarray-sums-divisible-by-k.md) | 数组、哈希表、前缀和 | 中等 | +| [0976. 三角形的最大周长](https://leetcode.cn/problems/largest-perimeter-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/largest-perimeter-triangle.md) | 贪心、数组、数学、排序 | 简单 | +| [0977. 有序数组的平方](https://leetcode.cn/problems/squares-of-a-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/squares-of-a-sorted-array.md) | 数组、双指针、排序 | 简单 | +| [0978. 最长湍流子数组](https://leetcode.cn/problems/longest-turbulent-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/longest-turbulent-subarray.md) | 数组、动态规划、滑动窗口 | 中等 | +| [0982. 按位与为零的三元组](https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero.md) | 位运算、数组、哈希表 | 困难 | +| [0990. 等式方程的可满足性](https://leetcode.cn/problems/satisfiability-of-equality-equations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/satisfiability-of-equality-equations.md) | 并查集、图、数组、字符串 | 中等 | +| [0992. K 个不同整数的子数组](https://leetcode.cn/problems/subarrays-with-k-different-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarrays-with-k-different-integers.md) | 数组、哈希表、计数、滑动窗口 | 困难 | +| [0993. 二叉树的堂兄弟节点](https://leetcode.cn/problems/cousins-in-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/cousins-in-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0995. K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips.md) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | +| [0999. 可以被一步捕获的棋子数](https://leetcode.cn/problems/available-captures-for-rook/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/available-captures-for-rook.md) | 数组、矩阵、模拟 | 简单 | ### 第 1000 ~ 1099 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1000. 合并石头的最低成本](https://leetcode.cn/problems/minimum-cost-to-merge-stones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-cost-to-merge-stones/) | 数组、动态规划、前缀和 | 困难 | -| [1002. 查找共用字符](https://leetcode.cn/problems/find-common-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-common-characters/) | 数组、哈希表、字符串 | 简单 | -| [1004. 最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| [1005. K 次取反后最大化的数组和](https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/maximize-sum-of-array-after-k-negations/) | 贪心、数组、排序 | 简单 | -| [1008. 前序遍历构造二叉搜索树](https://leetcode.cn/problems/construct-binary-search-tree-from-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/construct-binary-search-tree-from-preorder-traversal/) | 栈、树、二叉搜索树、数组、二叉树、单调栈 | 中等 | -| [1009. 十进制整数的反码](https://leetcode.cn/problems/complement-of-base-10-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/complement-of-base-10-integer/) | 位运算 | 简单 | -| [1011. 在 D 天内送达包裹的能力](https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days/) | 数组、二分查找 | 中等 | -| [1012. 至少有 1 位重复的数字](https://leetcode.cn/problems/numbers-with-repeated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/numbers-with-repeated-digits/) | 数学、动态规划 | 困难 | -| [1014. 最佳观光组合](https://leetcode.cn/problems/best-sightseeing-pair/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/best-sightseeing-pair/) | 数组、动态规划 | 中等 | -| [1020. 飞地的数量](https://leetcode.cn/problems/number-of-enclaves/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/number-of-enclaves/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [1021. 删除最外层的括号](https://leetcode.cn/problems/remove-outermost-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-outermost-parentheses/) | 栈、字符串 | 简单 | -| [1023. 驼峰式匹配](https://leetcode.cn/problems/camelcase-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/camelcase-matching/) | 字典树、数组、双指针、字符串、字符串匹配 | 中等 | -| [1025. 除数博弈](https://leetcode.cn/problems/divisor-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/divisor-game/) | 脑筋急转弯、数学、动态规划、博弈 | 简单 | -| [1028. 从先序遍历还原二叉树](https://leetcode.cn/problems/recover-a-tree-from-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/recover-a-tree-from-preorder-traversal/) | 树、深度优先搜索、字符串、二叉树 | 困难 | -| [1029. 两地调度](https://leetcode.cn/problems/two-city-scheduling/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-city-scheduling/) | 贪心、数组、排序 | 中等 | -| [1034. 边界着色](https://leetcode.cn/problems/coloring-a-border/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/coloring-a-border/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | -| [1035. 不相交的线](https://leetcode.cn/problems/uncrossed-lines/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/uncrossed-lines/) | 数组、动态规划 | 中等 | -| [1037. 有效的回旋镖](https://leetcode.cn/problems/valid-boomerang/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/valid-boomerang/) | 几何、数组、数学 | 简单 | -| [1038. 从二叉搜索树到更大和树](https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/binary-search-tree-to-greater-sum-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [1039. 多边形三角剖分的最低得分](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-score-triangulation-of-polygon/) | 数组、动态规划 | 中等 | -| [1041. 困于环中的机器人](https://leetcode.cn/problems/robot-bounded-in-circle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/robot-bounded-in-circle/) | 数学、字符串、模拟 | 中等 | -| [1047. 删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string/) | 栈、字符串 | 简单 | -| [1049. 最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/last-stone-weight-ii/) | 数组、动态规划 | 中等 | -| [1051. 高度检查器](https://leetcode.cn/problems/height-checker/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/height-checker/) | 数组、计数排序、排序 | 简单 | -| [1052. 爱生气的书店老板](https://leetcode.cn/problems/grumpy-bookstore-owner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/grumpy-bookstore-owner/) | 数组、滑动窗口 | 中等 | -| [1065. 字符串的索引对](https://leetcode.cn/problems/index-pairs-of-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/index-pairs-of-a-string/) | 字典树、数组、字符串、排序 | 简单 | -| [1079. 活字印刷](https://leetcode.cn/problems/letter-tile-possibilities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/letter-tile-possibilities/) | 哈希表、字符串、回溯、计数 | 中等 | -| [1081. 不同字符的最小子序列](https://leetcode.cn/problems/smallest-subsequence-of-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/smallest-subsequence-of-distinct-characters/) | 栈、贪心、字符串、单调栈 | 中等 | -| [1089. 复写零](https://leetcode.cn/problems/duplicate-zeros/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/duplicate-zeros/) | 数组、双指针 | 简单 | -| [1091. 二进制矩阵中的最短路径](https://leetcode.cn/problems/shortest-path-in-binary-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/shortest-path-in-binary-matrix/) | 广度优先搜索、数组、矩阵 | 中等 | -| [1095. 山脉数组中查找目标值](https://leetcode.cn/problems/find-in-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-in-mountain-array/) | 数组、二分查找、交互 | 困难 | -| [1099. 小于 K 的两数之和](https://leetcode.cn/problems/two-sum-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-sum-less-than-k/) | 数组、双指针、二分查找、排序 | 简单 | +| [1000. 合并石头的最低成本](https://leetcode.cn/problems/minimum-cost-to-merge-stones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-cost-to-merge-stones.md) | 数组、动态规划、前缀和 | 困难 | +| [1002. 查找共用字符](https://leetcode.cn/problems/find-common-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-common-characters.md) | 数组、哈希表、字符串 | 简单 | +| [1004. 最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [1005. K 次取反后最大化的数组和](https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/maximize-sum-of-array-after-k-negations.md) | 贪心、数组、排序 | 简单 | +| [1008. 前序遍历构造二叉搜索树](https://leetcode.cn/problems/construct-binary-search-tree-from-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/construct-binary-search-tree-from-preorder-traversal.md) | 栈、树、二叉搜索树、数组、二叉树、单调栈 | 中等 | +| [1009. 十进制整数的反码](https://leetcode.cn/problems/complement-of-base-10-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/complement-of-base-10-integer.md) | 位运算 | 简单 | +| [1011. 在 D 天内送达包裹的能力](https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days.md) | 数组、二分查找 | 中等 | +| [1012. 至少有 1 位重复的数字](https://leetcode.cn/problems/numbers-with-repeated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/numbers-with-repeated-digits.md) | 数学、动态规划 | 困难 | +| [1014. 最佳观光组合](https://leetcode.cn/problems/best-sightseeing-pair/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/best-sightseeing-pair.md) | 数组、动态规划 | 中等 | +| [1020. 飞地的数量](https://leetcode.cn/problems/number-of-enclaves/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/number-of-enclaves.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [1021. 删除最外层的括号](https://leetcode.cn/problems/remove-outermost-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-outermost-parentheses.md) | 栈、字符串 | 简单 | +| [1023. 驼峰式匹配](https://leetcode.cn/problems/camelcase-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/camelcase-matching.md) | 字典树、数组、双指针、字符串、字符串匹配 | 中等 | +| [1025. 除数博弈](https://leetcode.cn/problems/divisor-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/divisor-game.md) | 脑筋急转弯、数学、动态规划、博弈 | 简单 | +| [1028. 从先序遍历还原二叉树](https://leetcode.cn/problems/recover-a-tree-from-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/recover-a-tree-from-preorder-traversal.md) | 树、深度优先搜索、字符串、二叉树 | 困难 | +| [1029. 两地调度](https://leetcode.cn/problems/two-city-scheduling/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-city-scheduling.md) | 贪心、数组、排序 | 中等 | +| [1034. 边界着色](https://leetcode.cn/problems/coloring-a-border/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/coloring-a-border.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | +| [1035. 不相交的线](https://leetcode.cn/problems/uncrossed-lines/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/uncrossed-lines.md) | 数组、动态规划 | 中等 | +| [1037. 有效的回旋镖](https://leetcode.cn/problems/valid-boomerang/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/valid-boomerang.md) | 几何、数组、数学 | 简单 | +| [1038. 从二叉搜索树到更大和树](https://leetcode.cn/problems/binary-search-tree-to-greater-sum-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/binary-search-tree-to-greater-sum-tree.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [1039. 多边形三角剖分的最低得分](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-score-triangulation-of-polygon.md) | 数组、动态规划 | 中等 | +| [1041. 困于环中的机器人](https://leetcode.cn/problems/robot-bounded-in-circle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/robot-bounded-in-circle.md) | 数学、字符串、模拟 | 中等 | +| [1047. 删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string.md) | 栈、字符串 | 简单 | +| [1049. 最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/last-stone-weight-ii.md) | 数组、动态规划 | 中等 | +| [1051. 高度检查器](https://leetcode.cn/problems/height-checker/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/height-checker.md) | 数组、计数排序、排序 | 简单 | +| [1052. 爱生气的书店老板](https://leetcode.cn/problems/grumpy-bookstore-owner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/grumpy-bookstore-owner.md) | 数组、滑动窗口 | 中等 | +| [1065. 字符串的索引对](https://leetcode.cn/problems/index-pairs-of-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/index-pairs-of-a-string.md) | 字典树、数组、字符串、排序 | 简单 | +| [1079. 活字印刷](https://leetcode.cn/problems/letter-tile-possibilities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/letter-tile-possibilities.md) | 哈希表、字符串、回溯、计数 | 中等 | +| [1081. 不同字符的最小子序列](https://leetcode.cn/problems/smallest-subsequence-of-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/smallest-subsequence-of-distinct-characters.md) | 栈、贪心、字符串、单调栈 | 中等 | +| [1089. 复写零](https://leetcode.cn/problems/duplicate-zeros/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/duplicate-zeros.md) | 数组、双指针 | 简单 | +| [1091. 二进制矩阵中的最短路径](https://leetcode.cn/problems/shortest-path-in-binary-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/shortest-path-in-binary-matrix.md) | 广度优先搜索、数组、矩阵 | 中等 | +| [1095. 山脉数组中查找目标值](https://leetcode.cn/problems/find-in-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-in-mountain-array.md) | 数组、二分查找、交互 | 困难 | +| [1099. 小于 K 的两数之和](https://leetcode.cn/problems/two-sum-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-sum-less-than-k.md) | 数组、双指针、二分查找、排序 | 简单 | ### 第 1100 ~ 1199 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1100. 长度为 K 的无重复字符子串](https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [1103. 分糖果 II](https://leetcode.cn/problems/distribute-candies-to-people/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distribute-candies-to-people/) | 数学、模拟 | 简单 | -| [1108. IP 地址无效化](https://leetcode.cn/problems/defanging-an-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/defanging-an-ip-address/) | 字符串 | 简单 | -| [1109. 航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings/) | 数组、前缀和 | 中等 | -| [1110. 删点成林](https://leetcode.cn/problems/delete-nodes-and-return-forest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/delete-nodes-and-return-forest/) | 树、深度优先搜索、数组、哈希表、二叉树 | 中等 | -| [1122. 数组的相对排序](https://leetcode.cn/problems/relative-sort-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/relative-sort-array/) | 数组、哈希表、计数排序、排序 | 简单 | -| [1136. 并行课程](https://leetcode.cn/problems/parallel-courses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/parallel-courses/) | 图、拓扑排序 | 中等 | -| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number/) | 记忆化搜索、数学、动态规划 | 简单 | -| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence/) | 字符串、动态规划 | 中等 | -| [1151. 最少交换次数来组合所有的 1](https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together/) | 数组、滑动窗口 | 中等 | -| [1155. 掷骰子等于目标和的方法数](https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum/) | 动态规划 | 中等 | -| [1161. 最大层内元素和](https://leetcode.cn/problems/maximum-level-sum-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/maximum-level-sum-of-a-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [1176. 健身计划评估](https://leetcode.cn/problems/diet-plan-performance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/diet-plan-performance/) | 数组、滑动窗口 | 简单 | -| [1184. 公交站间的距离](https://leetcode.cn/problems/distance-between-bus-stops/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distance-between-bus-stops/) | 数组 | 简单 | +| [1100. 长度为 K 的无重复字符子串](https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [1103. 分糖果 II](https://leetcode.cn/problems/distribute-candies-to-people/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distribute-candies-to-people.md) | 数学、模拟 | 简单 | +| [1108. IP 地址无效化](https://leetcode.cn/problems/defanging-an-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/defanging-an-ip-address.md) | 字符串 | 简单 | +| [1109. 航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings.md) | 数组、前缀和 | 中等 | +| [1110. 删点成林](https://leetcode.cn/problems/delete-nodes-and-return-forest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/delete-nodes-and-return-forest.md) | 树、深度优先搜索、数组、哈希表、二叉树 | 中等 | +| [1122. 数组的相对排序](https://leetcode.cn/problems/relative-sort-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/relative-sort-array.md) | 数组、哈希表、计数排序、排序 | 简单 | +| [1136. 并行课程](https://leetcode.cn/problems/parallel-courses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/parallel-courses.md) | 图、拓扑排序 | 中等 | +| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence.md) | 字符串、动态规划 | 中等 | +| [1151. 最少交换次数来组合所有的 1](https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together.md) | 数组、滑动窗口 | 中等 | +| [1155. 掷骰子等于目标和的方法数](https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum.md) | 动态规划 | 中等 | +| [1161. 最大层内元素和](https://leetcode.cn/problems/maximum-level-sum-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/maximum-level-sum-of-a-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [1176. 健身计划评估](https://leetcode.cn/problems/diet-plan-performance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/diet-plan-performance.md) | 数组、滑动窗口 | 简单 | +| [1184. 公交站间的距离](https://leetcode.cn/problems/distance-between-bus-stops/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distance-between-bus-stops.md) | 数组 | 简单 | ### 第 1200 ~ 1299 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1202. 交换字符串中的元素](https://leetcode.cn/problems/smallest-string-with-swaps/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/smallest-string-with-swaps/) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、字符串、排序 | 中等 | -| [1208. 尽可能使字符串相等](https://leetcode.cn/problems/get-equal-substrings-within-budget/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/get-equal-substrings-within-budget/) | 字符串、二分查找、前缀和、滑动窗口 | 中等 | -| [1217. 玩筹码](https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position/) | 贪心、数组、数学 | 简单 | -| [1220. 统计元音字母序列的数目](https://leetcode.cn/problems/count-vowels-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/count-vowels-permutation/) | 动态规划 | 困难 | -| [1227. 飞机座位分配概率](https://leetcode.cn/problems/airplane-seat-assignment-probability/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/airplane-seat-assignment-probability/) | 脑筋急转弯、数学、动态规划、概率与统计 | 中等 | -| [1229. 安排会议日程](https://leetcode.cn/problems/meeting-scheduler/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/meeting-scheduler/) | 数组、双指针、排序 | 中等 | -| [1232. 缀点成线](https://leetcode.cn/problems/check-if-it-is-a-straight-line/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/check-if-it-is-a-straight-line/) | 几何、数组、数学 | 简单 | -| [1245. 树的直径](https://leetcode.cn/problems/tree-diameter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/tree-diameter/) | 树、深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [1247. 交换字符使得字符串相同](https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal/) | 贪心、数学、字符串 | 中等 | -| [1253. 重构 2 行二进制矩阵](https://leetcode.cn/problems/reconstruct-a-2-row-binary-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/reconstruct-a-2-row-binary-matrix/) | 贪心、数组、矩阵 | 中等 | -| [1254. 统计封闭岛屿的数目](https://leetcode.cn/problems/number-of-closed-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/number-of-closed-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [1261. 在受污染的二叉树中查找元素](https://leetcode.cn/problems/find-elements-in-a-contaminated-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/find-elements-in-a-contaminated-binary-tree/) | 树、深度优先搜索、广度优先搜索、设计、哈希表、二叉树 | 中等 | -| [1266. 访问所有点的最小时间](https://leetcode.cn/problems/minimum-time-visiting-all-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-time-visiting-all-points/) | 几何、数组、数学 | 简单 | -| [1268. 搜索推荐系统](https://leetcode.cn/problems/search-suggestions-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/search-suggestions-system/) | 字典树、数组、字符串、二分查找、排序、堆(优先队列) | 中等 | -| [1281. 整数的各位积和之差](https://leetcode.cn/problems/subtract-the-product-and-sum-of-digits-of-an-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/subtract-the-product-and-sum-of-digits-of-an-integer/) | 数学 | 简单 | -| [1296. 划分数组为连续数字的集合](https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers/) | 贪心、数组、哈希表、排序 | 中等 | +| [1202. 交换字符串中的元素](https://leetcode.cn/problems/smallest-string-with-swaps/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/smallest-string-with-swaps.md) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、字符串、排序 | 中等 | +| [1208. 尽可能使字符串相等](https://leetcode.cn/problems/get-equal-substrings-within-budget/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/get-equal-substrings-within-budget.md) | 字符串、二分查找、前缀和、滑动窗口 | 中等 | +| [1217. 玩筹码](https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position.md) | 贪心、数组、数学 | 简单 | +| [1220. 统计元音字母序列的数目](https://leetcode.cn/problems/count-vowels-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/count-vowels-permutation.md) | 动态规划 | 困难 | +| [1227. 飞机座位分配概率](https://leetcode.cn/problems/airplane-seat-assignment-probability/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/airplane-seat-assignment-probability.md) | 脑筋急转弯、数学、动态规划、概率与统计 | 中等 | +| [1229. 安排会议日程](https://leetcode.cn/problems/meeting-scheduler/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/meeting-scheduler.md) | 数组、双指针、排序 | 中等 | +| [1232. 缀点成线](https://leetcode.cn/problems/check-if-it-is-a-straight-line/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/check-if-it-is-a-straight-line.md) | 几何、数组、数学 | 简单 | +| [1245. 树的直径](https://leetcode.cn/problems/tree-diameter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/tree-diameter.md) | 树、深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [1247. 交换字符使得字符串相同](https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal.md) | 贪心、数学、字符串 | 中等 | +| [1253. 重构 2 行二进制矩阵](https://leetcode.cn/problems/reconstruct-a-2-row-binary-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/reconstruct-a-2-row-binary-matrix.md) | 贪心、数组、矩阵 | 中等 | +| [1254. 统计封闭岛屿的数目](https://leetcode.cn/problems/number-of-closed-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/number-of-closed-islands.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [1261. 在受污染的二叉树中查找元素](https://leetcode.cn/problems/find-elements-in-a-contaminated-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/find-elements-in-a-contaminated-binary-tree.md) | 树、深度优先搜索、广度优先搜索、设计、哈希表、二叉树 | 中等 | +| [1266. 访问所有点的最小时间](https://leetcode.cn/problems/minimum-time-visiting-all-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-time-visiting-all-points.md) | 几何、数组、数学 | 简单 | +| [1268. 搜索推荐系统](https://leetcode.cn/problems/search-suggestions-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/search-suggestions-system.md) | 字典树、数组、字符串、二分查找、排序、堆(优先队列) | 中等 | +| [1281. 整数的各位积和之差](https://leetcode.cn/problems/subtract-the-product-and-sum-of-digits-of-an-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/subtract-the-product-and-sum-of-digits-of-an-integer.md) | 数学 | 简单 | +| [1296. 划分数组为连续数字的集合](https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers.md) | 贪心、数组、哈希表、排序 | 中等 | ### 第 1300 ~ 1399 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1300. 转变数组后最接近目标值的数组和](https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target/) | 数组、二分查找、排序 | 中等 | -| [1305. 两棵二叉搜索树中的所有元素](https://leetcode.cn/problems/all-elements-in-two-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/all-elements-in-two-binary-search-trees/) | 树、深度优先搜索、二叉搜索树、二叉树、排序 | 中等 | -| [1310. 子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray/) | 位运算、数组、前缀和 | 中等 | -| [1313. 解压缩编码列表](https://leetcode.cn/problems/decompress-run-length-encoded-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/decompress-run-length-encoded-list/) | 数组 | 简单 | -| [1317. 将整数转换为两个无零整数的和](https://leetcode.cn/problems/convert-integer-to-the-sum-of-two-no-zero-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/convert-integer-to-the-sum-of-two-no-zero-integers/) | 数学 | 简单 | -| [1319. 连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-operations-to-make-network-connected/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [1324. 竖直打印单词](https://leetcode.cn/problems/print-words-vertically/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/print-words-vertically/) | 数组、字符串、模拟 | 中等 | -| [1338. 数组大小减半](https://leetcode.cn/problems/reduce-array-size-to-the-half/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/reduce-array-size-to-the-half/) | 贪心、数组、哈希表、排序、堆(优先队列) | 中等 | -| [1343. 大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | 数组、滑动窗口 | 中等 | -| [1344. 时钟指针的夹角](https://leetcode.cn/problems/angle-between-hands-of-a-clock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/angle-between-hands-of-a-clock/) | 数学 | 中等 | -| [1347. 制造字母异位词的最小步骤数](https://leetcode.cn/problems/minimum-number-of-steps-to-make-two-strings-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/minimum-number-of-steps-to-make-two-strings-anagram/) | 哈希表、字符串、计数 | 中等 | -| [1349. 参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| [1358. 包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [1362. 最接近的因数](https://leetcode.cn/problems/closest-divisors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/closest-divisors/) | 数学 | 中等 | -| [1381. 设计一个支持增量操作的栈](https://leetcode.cn/problems/design-a-stack-with-increment-operation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/design-a-stack-with-increment-operation/) | 栈、设计、数组 | 中等 | +| [1300. 转变数组后最接近目标值的数组和](https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target.md) | 数组、二分查找、排序 | 中等 | +| [1305. 两棵二叉搜索树中的所有元素](https://leetcode.cn/problems/all-elements-in-two-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/all-elements-in-two-binary-search-trees.md) | 树、深度优先搜索、二叉搜索树、二叉树、排序 | 中等 | +| [1310. 子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray.md) | 位运算、数组、前缀和 | 中等 | +| [1313. 解压缩编码列表](https://leetcode.cn/problems/decompress-run-length-encoded-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/decompress-run-length-encoded-list.md) | 数组 | 简单 | +| [1317. 将整数转换为两个无零整数的和](https://leetcode.cn/problems/convert-integer-to-the-sum-of-two-no-zero-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/convert-integer-to-the-sum-of-two-no-zero-integers.md) | 数学 | 简单 | +| [1319. 连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-operations-to-make-network-connected.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [1324. 竖直打印单词](https://leetcode.cn/problems/print-words-vertically/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/print-words-vertically.md) | 数组、字符串、模拟 | 中等 | +| [1338. 数组大小减半](https://leetcode.cn/problems/reduce-array-size-to-the-half/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/reduce-array-size-to-the-half.md) | 贪心、数组、哈希表、排序、堆(优先队列) | 中等 | +| [1343. 大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.md) | 数组、滑动窗口 | 中等 | +| [1344. 时钟指针的夹角](https://leetcode.cn/problems/angle-between-hands-of-a-clock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/angle-between-hands-of-a-clock.md) | 数学 | 中等 | +| [1347. 制造字母异位词的最小步骤数](https://leetcode.cn/problems/minimum-number-of-steps-to-make-two-strings-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/minimum-number-of-steps-to-make-two-strings-anagram.md) | 哈希表、字符串、计数 | 中等 | +| [1349. 参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | +| [1358. 包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [1362. 最接近的因数](https://leetcode.cn/problems/closest-divisors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/closest-divisors.md) | 数学 | 中等 | +| [1381. 设计一个支持增量操作的栈](https://leetcode.cn/problems/design-a-stack-with-increment-operation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/design-a-stack-with-increment-operation.md) | 栈、设计、数组 | 中等 | ### 第 1400 ~ 1499 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1400. 构造 K 个回文字符串](https://leetcode.cn/problems/construct-k-palindrome-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/construct-k-palindrome-strings/) | 贪心、哈希表、字符串、计数 | 中等 | -| [1408. 数组中的字符串匹配](https://leetcode.cn/problems/string-matching-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array/) | 数组、字符串、字符串匹配 | 简单 | -| [1422. 分割字符串的最大得分](https://leetcode.cn/problems/maximum-score-after-splitting-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-score-after-splitting-a-string/) | 字符串、前缀和 | 简单 | -| [1423. 可获得的最大点数](https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards/) | 数组、前缀和、滑动窗口 | 中等 | -| [1438. 绝对差不超过限制的最长连续子数组](https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | 队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 中等 | -| [1446. 连续字符](https://leetcode.cn/problems/consecutive-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/consecutive-characters/) | 字符串 | 简单 | -| [1447. 最简分数](https://leetcode.cn/problems/simplified-fractions/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/simplified-fractions/) | 数学、字符串、数论 | 中等 | -| [1449. 数位成本和为目标值的最大数字](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target/) | 数组、动态规划 | 困难 | -| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time/) | 数组 | 简单 | -| [1451. 重新排列句子中的单词](https://leetcode.cn/problems/rearrange-words-in-a-sentence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/rearrange-words-in-a-sentence/) | 字符串、排序 | 中等 | -| [1456. 定长子串中元音的最大数目](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length/) | 字符串、滑动窗口 | 中等 | -| [1476. 子矩形查询](https://leetcode.cn/problems/subrectangle-queries/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/subrectangle-queries/) | 设计、数组、矩阵 | 中等 | -| [1480. 一维数组的动态和](https://leetcode.cn/problems/running-sum-of-1d-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/running-sum-of-1d-array/) | 数组、前缀和 | 简单 | -| [1482. 制作 m 束花所需的最少天数](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets/) | 数组、二分查找 | 中等 | -| [1486. 数组异或操作](https://leetcode.cn/problems/xor-operation-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/xor-operation-in-an-array/) | 位运算、数学 | 简单 | -| [1491. 去掉最低工资和最高工资后的工资平均值](https://leetcode.cn/problems/average-salary-excluding-the-minimum-and-maximum-salary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/average-salary-excluding-the-minimum-and-maximum-salary/) | 数组、排序 | 简单 | -| [1493. 删掉一个元素以后全为 1 的最长子数组](https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element/) | 数组、动态规划、滑动窗口 | 中等 | -| [1496. 判断路径是否相交](https://leetcode.cn/problems/path-crossing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/path-crossing/) | 哈希表、字符串 | 简单 | +| [1400. 构造 K 个回文字符串](https://leetcode.cn/problems/construct-k-palindrome-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/construct-k-palindrome-strings.md) | 贪心、哈希表、字符串、计数 | 中等 | +| [1408. 数组中的字符串匹配](https://leetcode.cn/problems/string-matching-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array.md) | 数组、字符串、字符串匹配 | 简单 | +| [1422. 分割字符串的最大得分](https://leetcode.cn/problems/maximum-score-after-splitting-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-score-after-splitting-a-string.md) | 字符串、前缀和 | 简单 | +| [1423. 可获得的最大点数](https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards.md) | 数组、前缀和、滑动窗口 | 中等 | +| [1438. 绝对差不超过限制的最长连续子数组](https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit.md) | 队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 中等 | +| [1446. 连续字符](https://leetcode.cn/problems/consecutive-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/consecutive-characters.md) | 字符串 | 简单 | +| [1447. 最简分数](https://leetcode.cn/problems/simplified-fractions/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/simplified-fractions.md) | 数学、字符串、数论 | 中等 | +| [1449. 数位成本和为目标值的最大数字](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target.md) | 数组、动态规划 | 困难 | +| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time.md) | 数组 | 简单 | +| [1451. 重新排列句子中的单词](https://leetcode.cn/problems/rearrange-words-in-a-sentence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/rearrange-words-in-a-sentence.md) | 字符串、排序 | 中等 | +| [1456. 定长子串中元音的最大数目](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length.md) | 字符串、滑动窗口 | 中等 | +| [1476. 子矩形查询](https://leetcode.cn/problems/subrectangle-queries/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/subrectangle-queries.md) | 设计、数组、矩阵 | 中等 | +| [1480. 一维数组的动态和](https://leetcode.cn/problems/running-sum-of-1d-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/running-sum-of-1d-array.md) | 数组、前缀和 | 简单 | +| [1482. 制作 m 束花所需的最少天数](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets.md) | 数组、二分查找 | 中等 | +| [1486. 数组异或操作](https://leetcode.cn/problems/xor-operation-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/xor-operation-in-an-array.md) | 位运算、数学 | 简单 | +| [1491. 去掉最低工资和最高工资后的工资平均值](https://leetcode.cn/problems/average-salary-excluding-the-minimum-and-maximum-salary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/average-salary-excluding-the-minimum-and-maximum-salary.md) | 数组、排序 | 简单 | +| [1493. 删掉一个元素以后全为 1 的最长子数组](https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element.md) | 数组、动态规划、滑动窗口 | 中等 | +| [1496. 判断路径是否相交](https://leetcode.cn/problems/path-crossing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/path-crossing.md) | 哈希表、字符串 | 简单 | ### 第 1500 ~ 1599 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1502. 判断能否形成等差数列](https://leetcode.cn/problems/can-make-arithmetic-progression-from-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/can-make-arithmetic-progression-from-sequence/) | 数组、排序 | 简单 | -| [1507. 转变日期格式](https://leetcode.cn/problems/reformat-date/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/reformat-date/) | 字符串 | 简单 | -| [1523. 在区间范围内统计奇数数目](https://leetcode.cn/problems/count-odd-numbers-in-an-interval-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-odd-numbers-in-an-interval-range/) | 数学 | 简单 | -| [1534. 统计好三元组](https://leetcode.cn/problems/count-good-triplets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-good-triplets/) | 数组、枚举 | 简单 | -| [1547. 切棍子的最小成本](https://leetcode.cn/problems/minimum-cost-to-cut-a-stick/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick/) | 数组、动态规划、排序 | 困难 | -| [1551. 使数组中所有元素相等的最小操作数](https://leetcode.cn/problems/minimum-operations-to-make-array-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-operations-to-make-array-equal/) | 数学 | 中等 | -| [1556. 千位分隔数](https://leetcode.cn/problems/thousand-separator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/thousand-separator/) | 字符串 | 简单 | -| [1561. 你可以获得的最大硬币数目](https://leetcode.cn/problems/maximum-number-of-coins-you-can-get/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-number-of-coins-you-can-get/) | 贪心、数组、数学、博弈、排序 | 中等 | -| [1567. 乘积为正数的最长子数组长度](https://leetcode.cn/problems/maximum-length-of-subarray-with-positive-product/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-length-of-subarray-with-positive-product/) | 贪心、数组、动态规划 | 中等 | -| [1582. 二进制矩阵中的特殊位置](https://leetcode.cn/problems/special-positions-in-a-binary-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/special-positions-in-a-binary-matrix/) | 数组、矩阵 | 简单 | -| [1584. 连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/min-cost-to-connect-all-points/) | 并查集、图、数组、最小生成树 | 中等 | -| [1593. 拆分字符串使唯一子字符串的数目最大](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings/) | 哈希表、字符串、回溯 | 中等 | -| [1595. 连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | +| [1502. 判断能否形成等差数列](https://leetcode.cn/problems/can-make-arithmetic-progression-from-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/can-make-arithmetic-progression-from-sequence.md) | 数组、排序 | 简单 | +| [1507. 转变日期格式](https://leetcode.cn/problems/reformat-date/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/reformat-date.md) | 字符串 | 简单 | +| [1523. 在区间范围内统计奇数数目](https://leetcode.cn/problems/count-odd-numbers-in-an-interval-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-odd-numbers-in-an-interval-range.md) | 数学 | 简单 | +| [1534. 统计好三元组](https://leetcode.cn/problems/count-good-triplets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-good-triplets.md) | 数组、枚举 | 简单 | +| [1547. 切棍子的最小成本](https://leetcode.cn/problems/minimum-cost-to-cut-a-stick/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick.md) | 数组、动态规划、排序 | 困难 | +| [1551. 使数组中所有元素相等的最小操作数](https://leetcode.cn/problems/minimum-operations-to-make-array-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-operations-to-make-array-equal.md) | 数学 | 中等 | +| [1556. 千位分隔数](https://leetcode.cn/problems/thousand-separator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/thousand-separator.md) | 字符串 | 简单 | +| [1561. 你可以获得的最大硬币数目](https://leetcode.cn/problems/maximum-number-of-coins-you-can-get/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-number-of-coins-you-can-get.md) | 贪心、数组、数学、博弈、排序 | 中等 | +| [1567. 乘积为正数的最长子数组长度](https://leetcode.cn/problems/maximum-length-of-subarray-with-positive-product/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-length-of-subarray-with-positive-product.md) | 贪心、数组、动态规划 | 中等 | +| [1582. 二进制矩阵中的特殊位置](https://leetcode.cn/problems/special-positions-in-a-binary-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/special-positions-in-a-binary-matrix.md) | 数组、矩阵 | 简单 | +| [1584. 连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/min-cost-to-connect-all-points.md) | 并查集、图、数组、最小生成树 | 中等 | +| [1593. 拆分字符串使唯一子字符串的数目最大](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings.md) | 哈希表、字符串、回溯 | 中等 | +| [1595. 连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | ### 第 1600 ~ 1699 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1603. 设计停车系统](https://leetcode.cn/problems/design-parking-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/design-parking-system/) | 设计、计数、模拟 | 简单 | -| [1605. 给定行和列的和求可行矩阵](https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums/) | 贪心、数组、矩阵 | 中等 | -| [1614. 括号的最大嵌套深度](https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-nesting-depth-of-the-parentheses/) | 栈、字符串 | 简单 | -| [1617. 统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities/) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | -| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | -| [1641. 统计字典序元音字符串的数目](https://leetcode.cn/problems/count-sorted-vowel-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-sorted-vowel-strings/) | 数学、动态规划、组合数学 | 中等 | -| [1646. 获取生成数组中的最大值](https://leetcode.cn/problems/get-maximum-in-generated-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/get-maximum-in-generated-array/) | 数组、模拟 | 简单 | -| [1647. 字符频次唯一的最小删除次数](https://leetcode.cn/problems/minimum-deletions-to-make-character-frequencies-unique/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-deletions-to-make-character-frequencies-unique/) | 贪心、哈希表、字符串、排序 | 中等 | -| [1657. 确定两个字符串是否接近](https://leetcode.cn/problems/determine-if-two-strings-are-close/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/determine-if-two-strings-are-close/) | 哈希表、字符串、计数、排序 | 中等 | -| [1658. 将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero/) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | -| [1672. 最富有客户的资产总量](https://leetcode.cn/problems/richest-customer-wealth/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/richest-customer-wealth/) | 数组、矩阵 | 简单 | -| [1695. 删除子数组的最大得分](https://leetcode.cn/problems/maximum-erasure-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-erasure-value/) | 数组、哈希表、滑动窗口 | 中等 | -| [1698. 字符串的不同子字符串个数](https://leetcode.cn/problems/number-of-distinct-substrings-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/number-of-distinct-substrings-in-a-string/) | 字典树、字符串、后缀数组、哈希函数、滚动哈希 | 中等 | +| [1603. 设计停车系统](https://leetcode.cn/problems/design-parking-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/design-parking-system.md) | 设计、计数、模拟 | 简单 | +| [1605. 给定行和列的和求可行矩阵](https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums.md) | 贪心、数组、矩阵 | 中等 | +| [1614. 括号的最大嵌套深度](https://leetcode.cn/problems/maximum-nesting-depth-of-the-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-nesting-depth-of-the-parentheses.md) | 栈、字符串 | 简单 | +| [1617. 统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities.md) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | +| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | +| [1641. 统计字典序元音字符串的数目](https://leetcode.cn/problems/count-sorted-vowel-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-sorted-vowel-strings.md) | 数学、动态规划、组合数学 | 中等 | +| [1646. 获取生成数组中的最大值](https://leetcode.cn/problems/get-maximum-in-generated-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/get-maximum-in-generated-array.md) | 数组、模拟 | 简单 | +| [1647. 字符频次唯一的最小删除次数](https://leetcode.cn/problems/minimum-deletions-to-make-character-frequencies-unique/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-deletions-to-make-character-frequencies-unique.md) | 贪心、哈希表、字符串、排序 | 中等 | +| [1657. 确定两个字符串是否接近](https://leetcode.cn/problems/determine-if-two-strings-are-close/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/determine-if-two-strings-are-close.md) | 哈希表、字符串、计数、排序 | 中等 | +| [1658. 将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero.md) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | +| [1672. 最富有客户的资产总量](https://leetcode.cn/problems/richest-customer-wealth/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/richest-customer-wealth.md) | 数组、矩阵 | 简单 | +| [1695. 删除子数组的最大得分](https://leetcode.cn/problems/maximum-erasure-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-erasure-value.md) | 数组、哈希表、滑动窗口 | 中等 | +| [1698. 字符串的不同子字符串个数](https://leetcode.cn/problems/number-of-distinct-substrings-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/number-of-distinct-substrings-in-a-string.md) | 字典树、字符串、后缀数组、哈希函数、滚动哈希 | 中等 | ### 第 1700 ~ 1799 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1710. 卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-units-on-a-truck/) | 贪心、数组、排序 | 简单 | -| [1716. 计算力扣银行的钱](https://leetcode.cn/problems/calculate-money-in-leetcode-bank/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/calculate-money-in-leetcode-bank/) | 数学 | 简单 | -| [1720. 解码异或后的数组](https://leetcode.cn/problems/decode-xored-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/decode-xored-array/) | 位运算、数组 | 简单 | -| [1726. 同积元组](https://leetcode.cn/problems/tuple-with-same-product/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/tuple-with-same-product/) | 数组、哈希表、计数 | 中等 | -| [1736. 替换隐藏数字得到的最晚时间](https://leetcode.cn/problems/latest-time-by-replacing-hidden-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/latest-time-by-replacing-hidden-digits/) | 贪心、字符串 | 简单 | -| [1742. 盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-balls-in-a-box/) | 哈希表、数学、计数 | 简单 | -| [1749. 任意子数组和的绝对值的最大值](https://leetcode.cn/problems/maximum-absolute-sum-of-any-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-absolute-sum-of-any-subarray/) | 数组、动态规划 | 中等 | -| [1763. 最长的美好子字符串](https://leetcode.cn/problems/longest-nice-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/longest-nice-substring/) | 位运算、哈希表、字符串、分治、滑动窗口 | 简单 | -| [1779. 找到最近的有相同 X 或 Y 坐标的点](https://leetcode.cn/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-nearest-point-that-has-the-same-x-or-y-coordinate/) | 数组 | 简单 | -| [1790. 仅执行一次字符串交换能否使两个字符串相等](https://leetcode.cn/problems/check-if-one-string-swap-can-make-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/check-if-one-string-swap-can-make-strings-equal/) | 哈希表、字符串、计数 | 简单 | -| [1791. 找出星型图的中心节点](https://leetcode.cn/problems/find-center-of-star-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-center-of-star-graph/) | 图 | 简单 | +| [1710. 卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-units-on-a-truck.md) | 贪心、数组、排序 | 简单 | +| [1716. 计算力扣银行的钱](https://leetcode.cn/problems/calculate-money-in-leetcode-bank/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/calculate-money-in-leetcode-bank.md) | 数学 | 简单 | +| [1720. 解码异或后的数组](https://leetcode.cn/problems/decode-xored-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/decode-xored-array.md) | 位运算、数组 | 简单 | +| [1726. 同积元组](https://leetcode.cn/problems/tuple-with-same-product/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/tuple-with-same-product.md) | 数组、哈希表、计数 | 中等 | +| [1736. 替换隐藏数字得到的最晚时间](https://leetcode.cn/problems/latest-time-by-replacing-hidden-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/latest-time-by-replacing-hidden-digits.md) | 贪心、字符串 | 简单 | +| [1742. 盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-balls-in-a-box.md) | 哈希表、数学、计数 | 简单 | +| [1749. 任意子数组和的绝对值的最大值](https://leetcode.cn/problems/maximum-absolute-sum-of-any-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-absolute-sum-of-any-subarray.md) | 数组、动态规划 | 中等 | +| [1763. 最长的美好子字符串](https://leetcode.cn/problems/longest-nice-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/longest-nice-substring.md) | 位运算、哈希表、字符串、分治、滑动窗口 | 简单 | +| [1779. 找到最近的有相同 X 或 Y 坐标的点](https://leetcode.cn/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-nearest-point-that-has-the-same-x-or-y-coordinate.md) | 数组 | 简单 | +| [1790. 仅执行一次字符串交换能否使两个字符串相等](https://leetcode.cn/problems/check-if-one-string-swap-can-make-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/check-if-one-string-swap-can-make-strings-equal.md) | 哈希表、字符串、计数 | 简单 | +| [1791. 找出星型图的中心节点](https://leetcode.cn/problems/find-center-of-star-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-center-of-star-graph.md) | 图 | 简单 | ### 第 1800 ~ 1899 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1822. 数组元素积的符号](https://leetcode.cn/problems/sign-of-the-product-of-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sign-of-the-product-of-an-array/) | 数组、数学 | 简单 | -| [1827. 最少操作使数组递增](https://leetcode.cn/problems/minimum-operations-to-make-the-array-increasing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-operations-to-make-the-array-increasing/) | 贪心、数组 | 简单 | -| [1833. 雪糕的最大数量](https://leetcode.cn/problems/maximum-ice-cream-bars/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/maximum-ice-cream-bars/) | 贪心、数组、计数排序、排序 | 中等 | -| [1844. 将所有数字用字符替换](https://leetcode.cn/problems/replace-all-digits-with-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/replace-all-digits-with-characters/) | 字符串 | 简单 | -| [1858. 包含所有前缀的最长单词](https://leetcode.cn/problems/longest-word-with-all-prefixes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/longest-word-with-all-prefixes/) | 深度优先搜索、字典树 | 中等 | -| [1859. 将句子排序](https://leetcode.cn/problems/sorting-the-sentence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sorting-the-sentence/) | 字符串、排序 | 简单 | -| [1876. 长度为三且各字符不同的子字符串](https://leetcode.cn/problems/substrings-of-size-three-with-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/substrings-of-size-three-with-distinct-characters/) | 哈希表、字符串、计数、滑动窗口 | 简单 | -| [1877. 数组中最大数对和的最小值](https://leetcode.cn/problems/minimize-maximum-pair-sum-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimize-maximum-pair-sum-in-array/) | 贪心、数组、双指针、排序 | 中等 | -| [1879. 两个数组最小的异或值之和](https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays/) | 位运算、数组、动态规划、状态压缩 | 困难 | -| [1893. 检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered/) | 数组、哈希表、前缀和 | 简单 | -| [1897. 重新分配字符使所有字符串都相等](https://leetcode.cn/problems/redistribute-characters-to-make-all-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/redistribute-characters-to-make-all-strings-equal/) | 哈希表、字符串、计数 | 简单 | +| [1822. 数组元素积的符号](https://leetcode.cn/problems/sign-of-the-product-of-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sign-of-the-product-of-an-array.md) | 数组、数学 | 简单 | +| [1827. 最少操作使数组递增](https://leetcode.cn/problems/minimum-operations-to-make-the-array-increasing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-operations-to-make-the-array-increasing.md) | 贪心、数组 | 简单 | +| [1833. 雪糕的最大数量](https://leetcode.cn/problems/maximum-ice-cream-bars/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/maximum-ice-cream-bars.md) | 贪心、数组、计数排序、排序 | 中等 | +| [1844. 将所有数字用字符替换](https://leetcode.cn/problems/replace-all-digits-with-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/replace-all-digits-with-characters.md) | 字符串 | 简单 | +| [1858. 包含所有前缀的最长单词](https://leetcode.cn/problems/longest-word-with-all-prefixes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/longest-word-with-all-prefixes.md) | 深度优先搜索、字典树 | 中等 | +| [1859. 将句子排序](https://leetcode.cn/problems/sorting-the-sentence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sorting-the-sentence.md) | 字符串、排序 | 简单 | +| [1876. 长度为三且各字符不同的子字符串](https://leetcode.cn/problems/substrings-of-size-three-with-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/substrings-of-size-three-with-distinct-characters.md) | 哈希表、字符串、计数、滑动窗口 | 简单 | +| [1877. 数组中最大数对和的最小值](https://leetcode.cn/problems/minimize-maximum-pair-sum-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimize-maximum-pair-sum-in-array.md) | 贪心、数组、双指针、排序 | 中等 | +| [1879. 两个数组最小的异或值之和](https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays.md) | 位运算、数组、动态规划、状态压缩 | 困难 | +| [1893. 检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered.md) | 数组、哈希表、前缀和 | 简单 | +| [1897. 重新分配字符使所有字符串都相等](https://leetcode.cn/problems/redistribute-characters-to-make-all-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/redistribute-characters-to-make-all-strings-equal.md) | 哈希表、字符串、计数 | 简单 | ### 第 1900 ~ 1999 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1903. 字符串中的最大奇数](https://leetcode.cn/problems/largest-odd-number-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/largest-odd-number-in-string/) | 贪心、数学、字符串 | 简单 | -| [1921. 消灭怪物的最大数量](https://leetcode.cn/problems/eliminate-maximum-number-of-monsters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/eliminate-maximum-number-of-monsters/) | 贪心、数组、排序 | 中等 | -| [1925. 统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-square-sum-triples/) | 数学、枚举 | 简单 | -| [1929. 数组串联](https://leetcode.cn/problems/concatenation-of-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/concatenation-of-array/) | 数组、模拟 | 简单 | -| [1930. 长度为 3 的不同回文子序列](https://leetcode.cn/problems/unique-length-3-palindromic-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/unique-length-3-palindromic-subsequences/) | 位运算、哈希表、字符串、前缀和 | 中等 | -| [1936. 新增的最少台阶数](https://leetcode.cn/problems/add-minimum-number-of-rungs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/add-minimum-number-of-rungs/) | 贪心、数组 | 中等 | -| [1941. 检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences/) | 哈希表、字符串、计数 | 简单 | -| [1947. 最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| [1984. 学生分数的最小差值](https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-difference-between-highest-and-lowest-of-k-scores/) | 数组、排序、滑动窗口 | 简单 | -| [1986. 完成任务的最少工作时间段](https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| [1991. 找到数组的中间位置](https://leetcode.cn/problems/find-the-middle-index-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/find-the-middle-index-in-array/) | 数组、前缀和 | 简单 | -| [1994. 好子集的数目](https://leetcode.cn/problems/the-number-of-good-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/the-number-of-good-subsets/) | 位运算、数组、数学、动态规划、状态压缩 | 困难 | +| [1903. 字符串中的最大奇数](https://leetcode.cn/problems/largest-odd-number-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/largest-odd-number-in-string.md) | 贪心、数学、字符串 | 简单 | +| [1921. 消灭怪物的最大数量](https://leetcode.cn/problems/eliminate-maximum-number-of-monsters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/eliminate-maximum-number-of-monsters.md) | 贪心、数组、排序 | 中等 | +| [1925. 统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-square-sum-triples.md) | 数学、枚举 | 简单 | +| [1929. 数组串联](https://leetcode.cn/problems/concatenation-of-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/concatenation-of-array.md) | 数组、模拟 | 简单 | +| [1930. 长度为 3 的不同回文子序列](https://leetcode.cn/problems/unique-length-3-palindromic-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/unique-length-3-palindromic-subsequences.md) | 位运算、哈希表、字符串、前缀和 | 中等 | +| [1936. 新增的最少台阶数](https://leetcode.cn/problems/add-minimum-number-of-rungs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/add-minimum-number-of-rungs.md) | 贪心、数组 | 中等 | +| [1941. 检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences.md) | 哈希表、字符串、计数 | 简单 | +| [1947. 最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1984. 学生分数的最小差值](https://leetcode.cn/problems/minimum-difference-between-highest-and-lowest-of-k-scores/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-difference-between-highest-and-lowest-of-k-scores.md) | 数组、排序、滑动窗口 | 简单 | +| [1986. 完成任务的最少工作时间段](https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1991. 找到数组的中间位置](https://leetcode.cn/problems/find-the-middle-index-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/find-the-middle-index-in-array.md) | 数组、前缀和 | 简单 | +| [1994. 好子集的数目](https://leetcode.cn/problems/the-number-of-good-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/the-number-of-good-subsets.md) | 位运算、数组、数学、动态规划、状态压缩 | 困难 | ### 第 2000 ~ 2099 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [2011. 执行操作后的变量值](https://leetcode.cn/problems/final-value-of-variable-after-performing-operations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/final-value-of-variable-after-performing-operations/) | 数组、字符串、模拟 | 简单 | -| [2023. 连接后等于目标字符串的字符串对](https://leetcode.cn/problems/number-of-pairs-of-strings-with-concatenation-equal-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/number-of-pairs-of-strings-with-concatenation-equal-to-target/) | 数组、哈希表、字符串、计数 | 中等 | -| [2050. 并行课程 III](https://leetcode.cn/problems/parallel-courses-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/parallel-courses-iii/) | 图、拓扑排序、数组、动态规划 | 困难 | +| [2011. 执行操作后的变量值](https://leetcode.cn/problems/final-value-of-variable-after-performing-operations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/final-value-of-variable-after-performing-operations.md) | 数组、字符串、模拟 | 简单 | +| [2023. 连接后等于目标字符串的字符串对](https://leetcode.cn/problems/number-of-pairs-of-strings-with-concatenation-equal-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/number-of-pairs-of-strings-with-concatenation-equal-to-target.md) | 数组、哈希表、字符串、计数 | 中等 | +| [2050. 并行课程 III](https://leetcode.cn/problems/parallel-courses-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/parallel-courses-iii.md) | 图、拓扑排序、数组、动态规划 | 困难 | ### 第 2100 ~ 2199 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [2156. 查找给定哈希值的子串](https://leetcode.cn/problems/find-substring-with-given-hash-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value/) | 字符串、滑动窗口、哈希函数、滚动哈希 | 困难 | -| [2172. 数组的最大与和](https://leetcode.cn/problems/maximum-and-sum-of-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/maximum-and-sum-of-array/) | 位运算、数组、动态规划、状态压缩 | 困难 | +| [2156. 查找给定哈希值的子串](https://leetcode.cn/problems/find-substring-with-given-hash-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value.md) | 字符串、滑动窗口、哈希函数、滚动哈希 | 困难 | +| [2172. 数组的最大与和](https://leetcode.cn/problems/maximum-and-sum-of-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/maximum-and-sum-of-array.md) | 位运算、数组、动态规划、状态压缩 | 困难 | ### 第 2200 ~ 2299 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [2235. 两整数相加](https://leetcode.cn/problems/add-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/add-two-integers/) | 数学 | 简单 | -| [2246. 相邻字符不同的最长路径](https://leetcode.cn/problems/longest-path-with-different-adjacent-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/longest-path-with-different-adjacent-characters/) | 树、深度优先搜索、图、拓扑排序、数组、字符串 | 困难 | -| [2249. 统计圆内格点数目](https://leetcode.cn/problems/count-lattice-points-inside-a-circle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-lattice-points-inside-a-circle/) | 几何、数组、哈希表、数学、枚举 | 中等 | -| [2276. 统计区间中的整数数目](https://leetcode.cn/problems/count-integers-in-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-integers-in-intervals/) | 设计、线段树、有序集合 | 困难 | +| [2235. 两整数相加](https://leetcode.cn/problems/add-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/add-two-integers.md) | 数学 | 简单 | +| [2246. 相邻字符不同的最长路径](https://leetcode.cn/problems/longest-path-with-different-adjacent-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/longest-path-with-different-adjacent-characters.md) | 树、深度优先搜索、图、拓扑排序、数组、字符串 | 困难 | +| [2249. 统计圆内格点数目](https://leetcode.cn/problems/count-lattice-points-inside-a-circle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-lattice-points-inside-a-circle.md) | 几何、数组、哈希表、数学、枚举 | 中等 | +| [2276. 统计区间中的整数数目](https://leetcode.cn/problems/count-integers-in-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-integers-in-intervals.md) | 设计、线段树、有序集合 | 困难 | ### 第 2300 ~ 2399 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [2376. 统计特殊整数](https://leetcode.cn/problems/count-special-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2300-2399/count-special-integers/) | 数学、动态规划 | 困难 | +| [2376. 统计特殊整数](https://leetcode.cn/problems/count-special-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2300-2399/count-special-integers.md) | 数学、动态规划 | 困难 | ### 第 2400 ~ 2499 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [2427. 公因子的数目](https://leetcode.cn/problems/number-of-common-factors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2400-2499/number-of-common-factors/) | 数学、枚举、数论 | 简单 | +| [2427. 公因子的数目](https://leetcode.cn/problems/number-of-common-factors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2400-2499/number-of-common-factors.md) | 数学、枚举、数论 | 简单 | ### 第 2500 ~ 2599 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [2538. 最大价值和与最小价值和的差值](https://leetcode.cn/problems/difference-between-maximum-and-minimum-price-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum/) | 树、深度优先搜索、数组、动态规划 | 困难 | -| [2585. 获得分数的方法数](https://leetcode.cn/problems/number-of-ways-to-earn-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/number-of-ways-to-earn-points/) | 数组、动态规划 | 困难 | +| [2538. 最大价值和与最小价值和的差值](https://leetcode.cn/problems/difference-between-maximum-and-minimum-price-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum.md) | 树、深度优先搜索、数组、动态规划 | 困难 | +| [2585. 获得分数的方法数](https://leetcode.cn/problems/number-of-ways-to-earn-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/number-of-ways-to-earn-points.md) | 数组、动态规划 | 困难 | ### 第 2700 ~ 2799 题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [2719. 统计整数数目](https://leetcode.cn/problems/count-of-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/count-of-integers/) | 数学、字符串、动态规划 | 困难 | +| [2719. 统计整数数目](https://leetcode.cn/problems/count-of-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/count-of-integers.md) | 数学、字符串、动态规划 | 困难 | ### 面试题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [面试题 01.07. 旋转矩阵](https://leetcode.cn/problems/rotate-matrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/rotate-matrix-lcci/) | 数组、数学、矩阵 | 中等 | -| [面试题 01.08. 零矩阵](https://leetcode.cn/problems/zero-matrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/zero-matrix-lcci/) | 数组、哈希表、矩阵 | 中等 | -| [面试题 02.02. 返回倒数第 k 个节点](https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/kth-node-from-end-of-list-lcci/) | 链表、双指针 | 简单 | -| [面试题 02.05. 链表求和](https://leetcode.cn/problems/sum-lists-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sum-lists-lcci/) | 递归、链表、数学 | 中等 | -| [面试题 02.06. 回文链表](https://leetcode.cn/problems/palindrome-linked-list-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/palindrome-linked-list-lcci/) | 栈、递归、链表、双指针 | 简单 | -| [面试题 02.07. 链表相交](https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci/) | 哈希表、链表、双指针 | 简单 | -| [面试题 02.08. 环路检测](https://leetcode.cn/problems/linked-list-cycle-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/linked-list-cycle-lcci/) | 哈希表、链表、双指针 | 中等 | -| [面试题 03.02. 栈的最小值](https://leetcode.cn/problems/min-stack-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/min-stack-lcci/) | 栈、设计 | 简单 | -| [面试题 03.04. 化栈为队](https://leetcode.cn/problems/implement-queue-using-stacks-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/implement-queue-using-stacks-lcci/) | 栈、设计、队列 | 简单 | -| [面试题 04.02. 最小高度树](https://leetcode.cn/problems/minimum-height-tree-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/minimum-height-tree-lcci/) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | -| [面试题 04.05. 合法二叉搜索树](https://leetcode.cn/problems/legal-binary-search-tree-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/legal-binary-search-tree-lcci/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [面试题 04.06. 后继者](https://leetcode.cn/problems/successor-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/successor-lcci/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [面试题 04.08. 首个共同祖先](https://leetcode.cn/problems/first-common-ancestor-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/first-common-ancestor-lcci/) | 树、深度优先搜索、二叉树 | 中等 | -| [面试题 04.12. 求和路径](https://leetcode.cn/problems/paths-with-sum-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/paths-with-sum-lcci/) | 树、深度优先搜索、二叉树 | 中等 | -| [面试题 08.04. 幂集](https://leetcode.cn/problems/power-set-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/power-set-lcci/) | 位运算、数组、回溯 | 中等 | -| [面试题 08.07. 无重复字符串的排列组合](https://leetcode.cn/problems/permutation-i-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-i-lcci/) | 字符串、回溯 | 中等 | -| [面试题 08.08. 有重复字符串的排列组合](https://leetcode.cn/problems/permutation-ii-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-ii-lcci/) | 字符串、回溯 | 中等 | -| [面试题 08.09. 括号](https://leetcode.cn/problems/bracket-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/bracket-lcci/) | 字符串、动态规划、回溯 | 中等 | -| [面试题 08.10. 颜色填充](https://leetcode.cn/problems/color-fill-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/color-fill-lcci/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | -| [面试题 08.12. 八皇后](https://leetcode.cn/problems/eight-queens-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/eight-queens-lcci/) | 数组、回溯 | 困难 | -| [面试题 10.01. 合并排序的数组](https://leetcode.cn/problems/sorted-merge-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-merge-lcci/) | 数组、双指针、排序 | 简单 | -| [面试题 10.02. 变位词组](https://leetcode.cn/problems/group-anagrams-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/group-anagrams-lcci/) | 数组、哈希表、字符串、排序 | 中等 | -| [面试题 10.09. 排序矩阵查找](https://leetcode.cn/problems/sorted-matrix-search-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-matrix-search-lcci/) | 数组、二分查找、分治、矩阵 | 中等 | -| [面试题 16.02. 单词频率](https://leetcode.cn/problems/words-frequency-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/words-frequency-lcci/) | 设计、字典树、数组、哈希表、字符串 | 中等 | -| [面试题 16.05. 阶乘尾数](https://leetcode.cn/problems/factorial-zeros-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/factorial-zeros-lcci/) | 数学 | 简单 | -| [面试题 16.26. 计算器](https://leetcode.cn/problems/calculator-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/calculator-lcci/) | 栈、数学、字符串 | 中等 | -| [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci/) | 递归、数学、动态规划 | 困难 | -| [面试题 17.14. 最小K个数](https://leetcode.cn/problems/smallest-k-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/smallest-k-lcci/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| [面试题 17.15. 最长单词](https://leetcode.cn/problems/longest-word-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/longest-word-lcci/) | 字典树、数组、哈希表、字符串 | 中等 | -| [面试题 17.17. 多次搜索](https://leetcode.cn/problems/multi-search-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/multi-search-lcci/) | 字典树、数组、哈希表、字符串、字符串匹配、滑动窗口 | 中等 | +| [面试题 01.07. 旋转矩阵](https://leetcode.cn/problems/rotate-matrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/rotate-matrix-lcci.md) | 数组、数学、矩阵 | 中等 | +| [面试题 01.08. 零矩阵](https://leetcode.cn/problems/zero-matrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/zero-matrix-lcci.md) | 数组、哈希表、矩阵 | 中等 | +| [面试题 02.02. 返回倒数第 k 个节点](https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/kth-node-from-end-of-list-lcci.md) | 链表、双指针 | 简单 | +| [面试题 02.05. 链表求和](https://leetcode.cn/problems/sum-lists-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sum-lists-lcci.md) | 递归、链表、数学 | 中等 | +| [面试题 02.06. 回文链表](https://leetcode.cn/problems/palindrome-linked-list-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/palindrome-linked-list-lcci.md) | 栈、递归、链表、双指针 | 简单 | +| [面试题 02.07. 链表相交](https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci.md) | 哈希表、链表、双指针 | 简单 | +| [面试题 02.08. 环路检测](https://leetcode.cn/problems/linked-list-cycle-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/linked-list-cycle-lcci.md) | 哈希表、链表、双指针 | 中等 | +| [面试题 03.02. 栈的最小值](https://leetcode.cn/problems/min-stack-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/min-stack-lcci.md) | 栈、设计 | 简单 | +| [面试题 03.04. 化栈为队](https://leetcode.cn/problems/implement-queue-using-stacks-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/implement-queue-using-stacks-lcci.md) | 栈、设计、队列 | 简单 | +| [面试题 04.02. 最小高度树](https://leetcode.cn/problems/minimum-height-tree-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/minimum-height-tree-lcci.md) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | +| [面试题 04.05. 合法二叉搜索树](https://leetcode.cn/problems/legal-binary-search-tree-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/legal-binary-search-tree-lcci.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [面试题 04.06. 后继者](https://leetcode.cn/problems/successor-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/successor-lcci.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [面试题 04.08. 首个共同祖先](https://leetcode.cn/problems/first-common-ancestor-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/first-common-ancestor-lcci.md) | 树、深度优先搜索、二叉树 | 中等 | +| [面试题 04.12. 求和路径](https://leetcode.cn/problems/paths-with-sum-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/paths-with-sum-lcci.md) | 树、深度优先搜索、二叉树 | 中等 | +| [面试题 08.04. 幂集](https://leetcode.cn/problems/power-set-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/power-set-lcci.md) | 位运算、数组、回溯 | 中等 | +| [面试题 08.07. 无重复字符串的排列组合](https://leetcode.cn/problems/permutation-i-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-i-lcci.md) | 字符串、回溯 | 中等 | +| [面试题 08.08. 有重复字符串的排列组合](https://leetcode.cn/problems/permutation-ii-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-ii-lcci.md) | 字符串、回溯 | 中等 | +| [面试题 08.09. 括号](https://leetcode.cn/problems/bracket-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/bracket-lcci.md) | 字符串、动态规划、回溯 | 中等 | +| [面试题 08.10. 颜色填充](https://leetcode.cn/problems/color-fill-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/color-fill-lcci.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | +| [面试题 08.12. 八皇后](https://leetcode.cn/problems/eight-queens-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/eight-queens-lcci.md) | 数组、回溯 | 困难 | +| [面试题 10.01. 合并排序的数组](https://leetcode.cn/problems/sorted-merge-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-merge-lcci.md) | 数组、双指针、排序 | 简单 | +| [面试题 10.02. 变位词组](https://leetcode.cn/problems/group-anagrams-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/group-anagrams-lcci.md) | 数组、哈希表、字符串、排序 | 中等 | +| [面试题 10.09. 排序矩阵查找](https://leetcode.cn/problems/sorted-matrix-search-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-matrix-search-lcci.md) | 数组、二分查找、分治、矩阵 | 中等 | +| [面试题 16.02. 单词频率](https://leetcode.cn/problems/words-frequency-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/words-frequency-lcci.md) | 设计、字典树、数组、哈希表、字符串 | 中等 | +| [面试题 16.05. 阶乘尾数](https://leetcode.cn/problems/factorial-zeros-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/factorial-zeros-lcci.md) | 数学 | 简单 | +| [面试题 16.26. 计算器](https://leetcode.cn/problems/calculator-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/calculator-lcci.md) | 栈、数学、字符串 | 中等 | +| [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci.md) | 递归、数学、动态规划 | 困难 | +| [面试题 17.14. 最小K个数](https://leetcode.cn/problems/smallest-k-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/smallest-k-lcci.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [面试题 17.15. 最长单词](https://leetcode.cn/problems/longest-word-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/longest-word-lcci.md) | 字典树、数组、哈希表、字符串 | 中等 | +| [面试题 17.17. 多次搜索](https://leetcode.cn/problems/multi-search-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/multi-search-lcci.md) | 字典树、数组、哈希表、字符串、字符串匹配、滑动窗口 | 中等 | ### LCR 系列 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [LCR 001. 两数相除](https://leetcode.cn/problems/xoh6Oh/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xoh6Oh/) | 数学 | 简单 | -| [LCR 002. 二进制求和](https://leetcode.cn/problems/JFETK5/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/JFETK5/) | 位运算、数学、字符串、模拟 | 简单 | -| [LCR 003. 比特位计数](https://leetcode.cn/problems/w3tCBm/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w3tCBm/) | 位运算、动态规划 | 简单 | -| [LCR 004. 只出现一次的数字 II](https://leetcode.cn/problems/WGki4K/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WGki4K/) | 位运算、数组 | 中等 | -| [LCR 005. 最大单词长度乘积](https://leetcode.cn/problems/aseY1I/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aseY1I/) | 位运算、数组、字符串 | 中等 | -| [LCR 006. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/kLl5u1/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kLl5u1/) | 数组、双指针、二分查找 | 简单 | -| [LCR 007. 三数之和](https://leetcode.cn/problems/1fGaJU/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/1fGaJU/) | 数组、双指针、排序 | 中等 | -| [LCR 008. 长度最小的子数组](https://leetcode.cn/problems/2VG8Kg/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2VG8Kg/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| [LCR 009. 乘积小于 K 的子数组](https://leetcode.cn/problems/ZVAVXX/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZVAVXX/) | 数组、滑动窗口 | 中等 | -| [LCR 010. 和为 K 的子数组](https://leetcode.cn/problems/QTMn0o/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QTMn0o/) | 数组、哈希表、前缀和 | 中等 | -| [LCR 011. 连续数组](https://leetcode.cn/problems/A1NYOS/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/A1NYOS/) | 数组、哈希表、前缀和 | 中等 | -| [LCR 012. 寻找数组的中心下标](https://leetcode.cn/problems/tvdfij/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/tvdfij/) | 数组、前缀和 | 简单 | -| [LCR 013. 二维区域和检索 - 矩阵不可变](https://leetcode.cn/problems/O4NDxx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/O4NDxx/) | 设计、数组、矩阵、前缀和 | 中等 | -| [LCR 016. 无重复字符的最长子串](https://leetcode.cn/problems/wtcaE1/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/wtcaE1/) | 哈希表、字符串、滑动窗口 | 中等 | -| [LCR 017. 最小覆盖子串](https://leetcode.cn/problems/M1oyTv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M1oyTv/) | 哈希表、字符串、滑动窗口 | 困难 | -| [LCR 018. 验证回文串](https://leetcode.cn/problems/XltzEq/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XltzEq/) | 双指针、字符串 | 简单 | -| [LCR 019. 验证回文串 II](https://leetcode.cn/problems/RQku0D/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/RQku0D/) | 贪心、双指针、字符串 | 简单 | -| [LCR 020. 回文子串](https://leetcode.cn/problems/a7VOhD/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/a7VOhD/) | 字符串、动态规划 | 中等 | -| [LCR 021. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/SLwz0R/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SLwz0R/) | 链表、双指针 | 中等 | -| [LCR 022. 环形链表 II](https://leetcode.cn/problems/c32eOV/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/c32eOV/) | 哈希表、链表、双指针 | 中等 | -| [LCR 023. 相交链表](https://leetcode.cn/problems/3u1WK4/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3u1WK4/) | 哈希表、链表、双指针 | 简单 | -| [LCR 024. 反转链表](https://leetcode.cn/problems/UHnkqh/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UHnkqh/) | 递归、链表 | 简单 | -| [LCR 025. 两数相加 II](https://leetcode.cn/problems/lMSNwu/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lMSNwu/) | 栈、链表、数学 | 中等 | -| [LCR 026. 重排链表](https://leetcode.cn/problems/LGjMqU/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LGjMqU/) | 栈、递归、链表、双指针 | 中等 | -| [LCR 027. 回文链表](https://leetcode.cn/problems/aMhZSa/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aMhZSa/) | 栈、递归、链表、双指针 | 简单 | -| [LCR 028. 扁平化多级双向链表](https://leetcode.cn/problems/Qv1Da2/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Qv1Da2/) | 深度优先搜索、链表、双向链表 | 中等 | -| [LCR 029. 循环有序列表的插入](https://leetcode.cn/problems/4ueAj6/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4ueAj6/) | 链表 | 中等 | -| [LCR 030. O(1) 时间插入、删除和获取随机元素](https://leetcode.cn/problems/FortPu/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/FortPu/) | 设计、数组、哈希表、数学、随机化 | 中等 | -| [LCR 031. LRU 缓存](https://leetcode.cn/problems/OrIXps/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/OrIXps/) | 设计、哈希表、链表、双向链表 | 中等 | -| [LCR 032. 有效的字母异位词](https://leetcode.cn/problems/dKk3P7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dKk3P7/) | 哈希表、字符串、排序 | 简单 | -| [LCR 033. 字母异位词分组](https://leetcode.cn/problems/sfvd7V/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/sfvd7V/) | 数组、哈希表、字符串、排序 | 中等 | -| [LCR 034. 验证外星语词典](https://leetcode.cn/problems/lwyVBB/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lwyVBB/) | 数组、哈希表、字符串 | 简单 | -| [LCR 035. 最小时间差](https://leetcode.cn/problems/569nqc/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/569nqc/) | 数组、数学、字符串、排序 | 中等 | -| [LCR 036. 逆波兰表达式求值](https://leetcode.cn/problems/8Zf90G/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/8Zf90G/) | 栈、数组、数学 | 中等 | -| [LCR 037. 行星碰撞](https://leetcode.cn/problems/XagZNi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XagZNi/) | 栈、数组、模拟 | 中等 | -| [LCR 038. 每日温度](https://leetcode.cn/problems/iIQa4I/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iIQa4I/) | 栈、数组、单调栈 | 中等 | -| [LCR 039. 柱状图中最大的矩形](https://leetcode.cn/problems/0ynMMM/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0ynMMM/) | 栈、数组、单调栈 | 困难 | -| [LCR 041. 数据流中的移动平均值](https://leetcode.cn/problems/qIsx9U/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qIsx9U/) | 设计、队列、数组、数据流 | 简单 | -| [LCR 042. 最近的请求次数](https://leetcode.cn/problems/H8086Q/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/H8086Q/) | 设计、队列、数据流 | 简单 | -| [LCR 043. 完全二叉树插入器](https://leetcode.cn/problems/NaqhDT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NaqhDT/) | 树、广度优先搜索、设计、二叉树 | 中等 | -| [LCR 044. 在每个树行中找最大值](https://leetcode.cn/problems/hPov7L/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hPov7L/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [LCR 045. 找树左下角的值](https://leetcode.cn/problems/LwUNpT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LwUNpT/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [LCR 046. 二叉树的右视图](https://leetcode.cn/problems/WNC0Lk/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WNC0Lk/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [LCR 047. 二叉树剪枝](https://leetcode.cn/problems/pOCWxh/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/pOCWxh/) | 树、深度优先搜索、二叉树 | 中等 | -| [LCR 048. 二叉树的序列化与反序列化](https://leetcode.cn/problems/h54YBf/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/h54YBf/) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | -| [LCR 049. 求根节点到叶节点数字之和](https://leetcode.cn/problems/3Etpl5/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3Etpl5/) | 树、深度优先搜索、二叉树 | 中等 | -| [LCR 050. 路径总和 III](https://leetcode.cn/problems/6eUYwP/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/6eUYwP/) | 树、深度优先搜索、二叉树 | 中等 | -| [LCR 051. 二叉树中的最大路径和](https://leetcode.cn/problems/jC7MId/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jC7MId/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [LCR 052. 递增顺序搜索树](https://leetcode.cn/problems/NYBBNL/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NYBBNL/) | 栈、树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| [LCR 053. 二叉搜索树中的中序后继](https://leetcode.cn/problems/P5rCT8/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/P5rCT8/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [LCR 054. 把二叉搜索树转换为累加树](https://leetcode.cn/problems/w6cpku/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w6cpku/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [LCR 055. 二叉搜索树迭代器](https://leetcode.cn/problems/kTOapQ/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kTOapQ/) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | -| [LCR 056. 两数之和 IV - 输入二叉搜索树](https://leetcode.cn/problems/opLdQZ/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/opLdQZ/) | 数组、滑动窗口 | 简单 | -| [LCR 057. 存在重复元素 III](https://leetcode.cn/problems/7WqeDu/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WqeDu/) | 数组、桶排序、有序集合、排序、滑动窗口 | 中等 | -| [LCR 059. 数据流中的第 K 大元素](https://leetcode.cn/problems/jBjn9C/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jBjn9C/) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | -| [LCR 060. 前 K 个高频元素](https://leetcode.cn/problems/g5c51o/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/g5c51o/) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | -| [LCR 062. 实现 Trie (前缀树)](https://leetcode.cn/problems/QC3q1f/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QC3q1f/) | 设计、字典树、哈希表、字符串 | 中等 | -| [LCR 063. 单词替换](https://leetcode.cn/problems/UhWRSj/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UhWRSj/) | 字典树、数组、哈希表、字符串 | 中等 | -| [LCR 064. 实现一个魔法字典](https://leetcode.cn/problems/US1pGT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/US1pGT/) | 深度优先搜索、设计、字典树、哈希表、字符串 | 中等 | -| [LCR 065. 单词的压缩编码](https://leetcode.cn/problems/iSwD2y/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iSwD2y/) | 字典树、数组、哈希表、字符串 | 中等 | -| [LCR 066. 键值映射](https://leetcode.cn/problems/z1R5dt/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/z1R5dt/) | 设计、字典树、哈希表、字符串 | 中等 | -| [LCR 067. 数组中两个数的最大异或值](https://leetcode.cn/problems/ms70jA/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ms70jA/) | 位运算、字典树、数组、哈希表 | 中等 | -| [LCR 068. 搜索插入位置](https://leetcode.cn/problems/N6YdxV/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/N6YdxV/) | 数组、二分查找 | 简单 | -| [LCR 072. x 的平方根](https://leetcode.cn/problems/jJ0w9p/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jJ0w9p/) | 数学、二分查找 | 简单 | -| [LCR 073. 爱吃香蕉的狒狒](https://leetcode.cn/problems/nZZqjQ/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/nZZqjQ/) | 数组、二分查找 | 中等 | -| [LCR 074. 合并区间](https://leetcode.cn/problems/SsGoHC/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SsGoHC/) | 数组、排序 | 中等 | -| [LCR 075. 数组的相对排序](https://leetcode.cn/problems/0H97ZC/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0H97ZC/) | 数组、哈希表、计数排序、排序 | 简单 | -| [LCR 076. 数组中的第 K 个最大元素](https://leetcode.cn/problems/xx4gT2/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xx4gT2/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| [LCR 077. 排序链表](https://leetcode.cn/problems/7WHec2/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WHec2/) | 链表、双指针、分治、排序、归并排序 | 中等 | -| [LCR 078. 合并 K 个升序链表](https://leetcode.cn/problems/vvXgSW/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vvXgSW/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| [LCR 079. 子集](https://leetcode.cn/problems/TVdhkn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/TVdhkn/) | 位运算、数组、回溯 | 中等 | -| [LCR 080. 组合](https://leetcode.cn/problems/uUsW3B/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/uUsW3B/) | 数组、回溯 | 中等 | -| [LCR 081. 组合总和](https://leetcode.cn/problems/Ygoe9J/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Ygoe9J/) | 数组、回溯 | 中等 | -| [LCR 082. 组合总和 II](https://leetcode.cn/problems/4sjJUc/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4sjJUc/) | 数组、回溯 | 中等 | -| [LCR 083. 全排列](https://leetcode.cn/problems/VvJkup/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/VvJkup/) | 数组、回溯 | 中等 | -| [LCR 084. 全排列 II](https://leetcode.cn/problems/7p8L0Z/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7p8L0Z/) | 数组、回溯 | 中等 | -| [LCR 085. 括号生成](https://leetcode.cn/problems/IDBivT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/IDBivT/) | 字符串、动态规划、回溯 | 中等 | -| [LCR 086. 分割回文串](https://leetcode.cn/problems/M99OJA/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M99OJA/) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | -| [LCR 087. 复原 IP 地址](https://leetcode.cn/problems/0on3uN/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0on3uN/) | 字符串、回溯 | 中等 | -| [LCR 088. 使用最小花费爬楼梯](https://leetcode.cn/problems/GzCJIP/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/GzCJIP/) | 数组、动态规划 | 简单 | -| [LCR 089. 打家劫舍](https://leetcode.cn/problems/Gu0c2T/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Gu0c2T/) | 数组、动态规划 | 中等 | -| [LCR 090. 打家劫舍 II](https://leetcode.cn/problems/PzWKhm/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/PzWKhm/) | 数组、动态规划 | 中等 | -| [LCR 093. 最长的斐波那契子序列的长度](https://leetcode.cn/problems/Q91FMA/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Q91FMA/) | 数组、哈希表、动态规划 | 中等 | -| [LCR 095. 最长公共子序列](https://leetcode.cn/problems/qJnOS7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qJnOS7/) | 字符串、动态规划 | 中等 | -| [LCR 097. 不同的子序列](https://leetcode.cn/problems/21dk04/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/21dk04/) | 字符串、动态规划 | 困难 | -| [LCR 098. 不同路径](https://leetcode.cn/problems/2AoeFn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2AoeFn/) | 数学、动态规划、组合数学 | 中等 | -| [LCR 101. 分割等和子集](https://leetcode.cn/problems/NUPfPr/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NUPfPr/) | 数学、字符串、模拟 | 简单 | -| [LCR 102. 目标和](https://leetcode.cn/problems/YaVDxD/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/YaVDxD/) | 数组、动态规划、回溯 | 中等 | -| [LCR 103. 零钱兑换](https://leetcode.cn/problems/gaM7Ch/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gaM7Ch/) | 广度优先搜索、数组、动态规划 | 中等 | -| [LCR 104. 组合总和 Ⅳ](https://leetcode.cn/problems/D0F0SV/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/D0F0SV/) | 数组、动态规划 | 中等 | -| [LCR 105. 岛屿的最大面积](https://leetcode.cn/problems/ZL6zAn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZL6zAn/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [LCR 106. 判断二分图](https://leetcode.cn/problems/vEAB3K/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vEAB3K/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [LCR 107. 01 矩阵](https://leetcode.cn/problems/2bCMpM/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2bCMpM/) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | -| [LCR 108. 单词接龙](https://leetcode.cn/problems/om3reC/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/om3reC/) | 广度优先搜索、哈希表、字符串 | 困难 | -| [LCR 109. 打开转盘锁](https://leetcode.cn/problems/zlDJc7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zlDJc7/) | 广度优先搜索、数组、哈希表、字符串 | 中等 | -| [LCR 111. 除法求值](https://leetcode.cn/problems/vlzXQL/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vlzXQL/) | 深度优先搜索、广度优先搜索、并查集、图、数组、最短路 | 中等 | -| [LCR 112. 矩阵中的最长递增路径](https://leetcode.cn/problems/fpTFWP/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fpTFWP/) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | -| [LCR 113. 课程表 II](https://leetcode.cn/problems/QA2IGt/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QA2IGt/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [LCR 116. 省份数量](https://leetcode.cn/problems/bLyHh0/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bLyHh0/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [LCR 118. 冗余连接](https://leetcode.cn/problems/7LpjUW/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7LpjUW/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [LCR 119. 最长连续序列](https://leetcode.cn/problems/WhsWhI/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WhsWhI/) | 并查集、数组、哈希表 | 中等 | -| [LCR 120. 寻找文件副本](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | 数组、哈希表、排序 | 简单 | -| [LCR 121. 寻找目标值 - 二维数组](https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) | 数组、二分查找、分治、矩阵 | 中等 | -| [LCR 122. 路径加密](https://leetcode.cn/problems/ti-huan-kong-ge-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ti-huan-kong-ge-lcof/) | 字符串 | 简单 | -| [LCR 123. 图书整理 I](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | 栈、递归、链表、双指针 | 简单 | -| [LCR 124. 推理二叉树](https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhong-jian-er-cha-shu-lcof/) | 树、数组、哈希表、分治、二叉树 | 中等 | -| [LCR 125. 图书整理 II](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | 栈、设计、队列 | 简单 | -| [LCR 126. 斐波那契数](https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fei-bo-na-qi-shu-lie-lcof/) | 记忆化搜索、数学、动态规划 | 简单 | -| [LCR 127. 跳跃训练](https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qing-wa-tiao-tai-jie-wen-ti-lcof/) | 记忆化搜索、数学、动态规划 | 简单 | -| [LCR 128. 库存管理 I](https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) | 数组、二分查找 | 简单 | -| [LCR 129. 字母迷宫](https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ju-zhen-zhong-de-lu-jing-lcof/) | 数组、字符串、回溯、矩阵 | 中等 | -| [LCR 130. 衣橱整理](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | -| [LCR 131. 砍竹子 I](https://leetcode.cn/problems/jian-sheng-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jian-sheng-zi-lcof/) | 数学、动态规划 | 中等 | -| [LCR 133. 位 1 的个数](https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-jin-zhi-zhong-1de-ge-shu-lcof/) | 位运算 | 简单 | -| [LCR 134. Pow(x, n)](https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zhi-de-zheng-shu-ci-fang-lcof/) | 递归、数学 | 中等 | -| [LCR 135. 报数](https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) | 数组、数学 | 简单 | -| [LCR 136. 删除链表的节点](https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shan-chu-lian-biao-de-jie-dian-lcof/) | 链表 | 简单 | -| [LCR 139. 训练计划 I](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | 数组、双指针、排序 | 简单 | -| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | 链表、双指针 | 简单 | -| [LCR 141. 训练计划 III](https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-lian-biao-lcof/) | 递归、链表 | 简单 | -| [LCR 142. 训练计划 IV](https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) | 递归、链表 | 简单 | -| [LCR 143. 子结构判断](https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-de-zi-jie-gou-lcof/) | 树、深度优先搜索、二叉树 | 中等 | -| [LCR 144. 翻转二叉树](https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-jing-xiang-lcof/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [LCR 145. 判断对称二叉树](https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-cheng-de-er-cha-shu-lcof/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [LCR 146. 螺旋遍历二维数组](https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shun-shi-zhen-da-yin-ju-zhen-lcof/) | 数组、矩阵、模拟 | 简单 | -| [LCR 147. 最小栈](https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bao-han-minhan-shu-de-zhan-lcof/) | 栈、设计 | 简单 | -| [LCR 148. 验证图书取出顺序](https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) | 栈、数组、模拟 | 中等 | -| [LCR 149. 彩灯装饰记录 I](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) | 树、广度优先搜索、二叉树 | 中等 | -| [LCR 150. 彩灯装饰记录 II](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) | 树、广度优先搜索、二叉树 | 简单 | -| [LCR 151. 彩灯装饰记录 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | 树、广度优先搜索、二叉树 | 中等 | -| [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 | -| [LCR 153. 二叉树中和为目标值的路径](https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) | 树、深度优先搜索、回溯、二叉树 | 中等 | -| [LCR 154. 复杂链表的复制](https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fu-za-lian-biao-de-fu-zhi-lcof/) | 哈希表、链表 | 中等 | -| [LCR 155. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | -| [LCR 156. 序列化与反序列化二叉树](https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xu-lie-hua-er-cha-shu-lcof/) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | -| [LCR 157. 套餐内商品的排列顺序](https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zi-fu-chuan-de-pai-lie-lcof/) | 字符串、回溯 | 中等 | -| [LCR 158. 库存管理 II](https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) | 数组、哈希表、分治、计数、排序 | 简单 | -| [LCR 159. 库存管理 III](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof/) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | -| [LCR 160. 数据流中的中位数](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | -| [LCR 161. 连续天数的最高销售额](https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) | 数组、分治、动态规划 | 简单 | -| [LCR 163. 找到第 k 位数字](https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) | 数学、二分查找 | 中等 | -| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | 贪心、字符串、排序 | 中等 | -| [LCR 165. 解密数字](https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) | 字符串、动态规划 | 中等 | -| [LCR 166. 珠宝的最高价值](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/li-wu-de-zui-da-jie-zhi-lcof/) | 数组、动态规划、矩阵 | 中等 | -| [LCR 167. 招式拆解 I](https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) | 哈希表、字符串、滑动窗口 | 中等 | -| [LCR 168. 丑数](https://leetcode.cn/problems/chou-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/chou-shu-lcof/) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | -| [LCR 169. 招式拆解 II](https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) | 队列、哈希表、字符串、计数 | 简单 | -| [LCR 170. 交易逆序对的总数](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | -| [LCR 171. 训练计划 V](https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) | 哈希表、链表、双指针 | 简单 | -| [LCR 172. 统计目标成绩的出现次数](https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) | 数组、二分查找 | 简单 | -| [LCR 173. 点名](https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/que-shi-de-shu-zi-lcof/) | 位运算、数组、哈希表、数学、二分查找 | 简单 | -| [LCR 174. 寻找二叉搜索树中的目标节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| [LCR 175. 计算二叉树的深度](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-shen-du-lcof/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [LCR 176. 判断是否为平衡二叉树](https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ping-heng-er-cha-shu-lcof/) | 树、深度优先搜索、二叉树 | 简单 | -| [LCR 177. 撞色搭配](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) | 位运算、数组 | 中等 | -| [LCR 179. 查找总价格为目标值的两个商品](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-liang-ge-shu-zi-lcof/) | 数组、双指针、二分查找 | 简单 | -| [LCR 180. 文件组合](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | 数学、双指针、枚举 | 简单 | -| [LCR 181. 字符串中的单词反转](https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-dan-ci-shun-xu-lcof/) | 双指针、字符串 | 简单 | -| [LCR 182. 动态口令](https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zuo-xuan-zhuan-zi-fu-chuan-lcof/) | 数学、双指针、字符串 | 简单 | -| [LCR 183. 望远镜中最高的海拔](https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | -| [LCR 184. 设计自助结算系统](https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-lie-de-zui-da-zhi-lcof/) | 设计、队列、单调队列 | 中等 | -| [LCR 186. 文物朝代判断](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof/) | 数组、排序 | 简单 | -| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | 递归、数学 | 简单 | -| [LCR 188. 买卖芯片的最佳时机](https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gu-piao-de-zui-da-li-run-lcof/) | 数组、动态规划 | 中等 | -| [LCR 189. 设计机械累加器](https://leetcode.cn/problems/qiu-12n-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qiu-12n-lcof/) | 位运算、递归、脑筋急转弯 | 中等 | -| [LCR 190. 加密运算](https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) | 位运算、数学 | 简单 | -| [LCR 191. 按规则计算统计结果](https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gou-jian-cheng-ji-shu-zu-lcof/) | 数组、前缀和 | 中等 | -| [LCR 192. 把字符串转换成整数 (atoi)](https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) | 字符串 | 中等 | -| [LCR 193. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| [LCR 194. 二叉树的最近公共祖先](https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | 树、深度优先搜索、二叉树 | 简单 | +| [LCR 001. 两数相除](https://leetcode.cn/problems/xoh6Oh/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xoh6Oh.md) | 数学 | 简单 | +| [LCR 002. 二进制求和](https://leetcode.cn/problems/JFETK5/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/JFETK5.md) | 位运算、数学、字符串、模拟 | 简单 | +| [LCR 003. 比特位计数](https://leetcode.cn/problems/w3tCBm/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w3tCBm.md) | 位运算、动态规划 | 简单 | +| [LCR 004. 只出现一次的数字 II](https://leetcode.cn/problems/WGki4K/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WGki4K.md) | 位运算、数组 | 中等 | +| [LCR 005. 最大单词长度乘积](https://leetcode.cn/problems/aseY1I/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aseY1I.md) | 位运算、数组、字符串 | 中等 | +| [LCR 006. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/kLl5u1/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kLl5u1.md) | 数组、双指针、二分查找 | 简单 | +| [LCR 007. 三数之和](https://leetcode.cn/problems/1fGaJU/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/1fGaJU.md) | 数组、双指针、排序 | 中等 | +| [LCR 008. 长度最小的子数组](https://leetcode.cn/problems/2VG8Kg/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2VG8Kg.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [LCR 009. 乘积小于 K 的子数组](https://leetcode.cn/problems/ZVAVXX/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZVAVXX.md) | 数组、滑动窗口 | 中等 | +| [LCR 010. 和为 K 的子数组](https://leetcode.cn/problems/QTMn0o/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QTMn0o.md) | 数组、哈希表、前缀和 | 中等 | +| [LCR 011. 连续数组](https://leetcode.cn/problems/A1NYOS/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/A1NYOS.md) | 数组、哈希表、前缀和 | 中等 | +| [LCR 012. 寻找数组的中心下标](https://leetcode.cn/problems/tvdfij/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/tvdfij.md) | 数组、前缀和 | 简单 | +| [LCR 013. 二维区域和检索 - 矩阵不可变](https://leetcode.cn/problems/O4NDxx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/O4NDxx.md) | 设计、数组、矩阵、前缀和 | 中等 | +| [LCR 016. 无重复字符的最长子串](https://leetcode.cn/problems/wtcaE1/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/wtcaE1.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [LCR 017. 最小覆盖子串](https://leetcode.cn/problems/M1oyTv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M1oyTv.md) | 哈希表、字符串、滑动窗口 | 困难 | +| [LCR 018. 验证回文串](https://leetcode.cn/problems/XltzEq/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XltzEq.md) | 双指针、字符串 | 简单 | +| [LCR 019. 验证回文串 II](https://leetcode.cn/problems/RQku0D/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/RQku0D.md) | 贪心、双指针、字符串 | 简单 | +| [LCR 020. 回文子串](https://leetcode.cn/problems/a7VOhD/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/a7VOhD.md) | 字符串、动态规划 | 中等 | +| [LCR 021. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/SLwz0R/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SLwz0R.md) | 链表、双指针 | 中等 | +| [LCR 022. 环形链表 II](https://leetcode.cn/problems/c32eOV/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/c32eOV.md) | 哈希表、链表、双指针 | 中等 | +| [LCR 023. 相交链表](https://leetcode.cn/problems/3u1WK4/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3u1WK4.md) | 哈希表、链表、双指针 | 简单 | +| [LCR 024. 反转链表](https://leetcode.cn/problems/UHnkqh/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UHnkqh.md) | 递归、链表 | 简单 | +| [LCR 025. 两数相加 II](https://leetcode.cn/problems/lMSNwu/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lMSNwu.md) | 栈、链表、数学 | 中等 | +| [LCR 026. 重排链表](https://leetcode.cn/problems/LGjMqU/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LGjMqU.md) | 栈、递归、链表、双指针 | 中等 | +| [LCR 027. 回文链表](https://leetcode.cn/problems/aMhZSa/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aMhZSa.md) | 栈、递归、链表、双指针 | 简单 | +| [LCR 028. 扁平化多级双向链表](https://leetcode.cn/problems/Qv1Da2/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Qv1Da2.md) | 深度优先搜索、链表、双向链表 | 中等 | +| [LCR 029. 循环有序列表的插入](https://leetcode.cn/problems/4ueAj6/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4ueAj6.md) | 链表 | 中等 | +| [LCR 030. O(1) 时间插入、删除和获取随机元素](https://leetcode.cn/problems/FortPu/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/FortPu.md) | 设计、数组、哈希表、数学、随机化 | 中等 | +| [LCR 031. LRU 缓存](https://leetcode.cn/problems/OrIXps/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/OrIXps.md) | 设计、哈希表、链表、双向链表 | 中等 | +| [LCR 032. 有效的字母异位词](https://leetcode.cn/problems/dKk3P7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dKk3P7.md) | 哈希表、字符串、排序 | 简单 | +| [LCR 033. 字母异位词分组](https://leetcode.cn/problems/sfvd7V/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/sfvd7V.md) | 数组、哈希表、字符串、排序 | 中等 | +| [LCR 034. 验证外星语词典](https://leetcode.cn/problems/lwyVBB/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lwyVBB.md) | 数组、哈希表、字符串 | 简单 | +| [LCR 035. 最小时间差](https://leetcode.cn/problems/569nqc/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/569nqc.md) | 数组、数学、字符串、排序 | 中等 | +| [LCR 036. 逆波兰表达式求值](https://leetcode.cn/problems/8Zf90G/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/8Zf90G.md) | 栈、数组、数学 | 中等 | +| [LCR 037. 行星碰撞](https://leetcode.cn/problems/XagZNi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XagZNi.md) | 栈、数组、模拟 | 中等 | +| [LCR 038. 每日温度](https://leetcode.cn/problems/iIQa4I/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iIQa4I.md) | 栈、数组、单调栈 | 中等 | +| [LCR 039. 柱状图中最大的矩形](https://leetcode.cn/problems/0ynMMM/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0ynMMM.md) | 栈、数组、单调栈 | 困难 | +| [LCR 041. 数据流中的移动平均值](https://leetcode.cn/problems/qIsx9U/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qIsx9U.md) | 设计、队列、数组、数据流 | 简单 | +| [LCR 042. 最近的请求次数](https://leetcode.cn/problems/H8086Q/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/H8086Q.md) | 设计、队列、数据流 | 简单 | +| [LCR 043. 完全二叉树插入器](https://leetcode.cn/problems/NaqhDT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NaqhDT.md) | 树、广度优先搜索、设计、二叉树 | 中等 | +| [LCR 044. 在每个树行中找最大值](https://leetcode.cn/problems/hPov7L/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hPov7L.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [LCR 045. 找树左下角的值](https://leetcode.cn/problems/LwUNpT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LwUNpT.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [LCR 046. 二叉树的右视图](https://leetcode.cn/problems/WNC0Lk/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WNC0Lk.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [LCR 047. 二叉树剪枝](https://leetcode.cn/problems/pOCWxh/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/pOCWxh.md) | 树、深度优先搜索、二叉树 | 中等 | +| [LCR 048. 二叉树的序列化与反序列化](https://leetcode.cn/problems/h54YBf/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/h54YBf.md) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | +| [LCR 049. 求根节点到叶节点数字之和](https://leetcode.cn/problems/3Etpl5/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3Etpl5.md) | 树、深度优先搜索、二叉树 | 中等 | +| [LCR 050. 路径总和 III](https://leetcode.cn/problems/6eUYwP/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/6eUYwP.md) | 树、深度优先搜索、二叉树 | 中等 | +| [LCR 051. 二叉树中的最大路径和](https://leetcode.cn/problems/jC7MId/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jC7MId.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [LCR 052. 递增顺序搜索树](https://leetcode.cn/problems/NYBBNL/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NYBBNL.md) | 栈、树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [LCR 053. 二叉搜索树中的中序后继](https://leetcode.cn/problems/P5rCT8/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/P5rCT8.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [LCR 054. 把二叉搜索树转换为累加树](https://leetcode.cn/problems/w6cpku/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w6cpku.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [LCR 055. 二叉搜索树迭代器](https://leetcode.cn/problems/kTOapQ/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kTOapQ.md) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | +| [LCR 056. 两数之和 IV - 输入二叉搜索树](https://leetcode.cn/problems/opLdQZ/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/opLdQZ.md) | 数组、滑动窗口 | 简单 | +| [LCR 057. 存在重复元素 III](https://leetcode.cn/problems/7WqeDu/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WqeDu.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 中等 | +| [LCR 059. 数据流中的第 K 大元素](https://leetcode.cn/problems/jBjn9C/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jBjn9C.md) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | +| [LCR 060. 前 K 个高频元素](https://leetcode.cn/problems/g5c51o/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/g5c51o.md) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | +| [LCR 062. 实现 Trie (前缀树)](https://leetcode.cn/problems/QC3q1f/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QC3q1f.md) | 设计、字典树、哈希表、字符串 | 中等 | +| [LCR 063. 单词替换](https://leetcode.cn/problems/UhWRSj/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UhWRSj.md) | 字典树、数组、哈希表、字符串 | 中等 | +| [LCR 064. 实现一个魔法字典](https://leetcode.cn/problems/US1pGT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/US1pGT.md) | 深度优先搜索、设计、字典树、哈希表、字符串 | 中等 | +| [LCR 065. 单词的压缩编码](https://leetcode.cn/problems/iSwD2y/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iSwD2y.md) | 字典树、数组、哈希表、字符串 | 中等 | +| [LCR 066. 键值映射](https://leetcode.cn/problems/z1R5dt/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/z1R5dt.md) | 设计、字典树、哈希表、字符串 | 中等 | +| [LCR 067. 数组中两个数的最大异或值](https://leetcode.cn/problems/ms70jA/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ms70jA.md) | 位运算、字典树、数组、哈希表 | 中等 | +| [LCR 068. 搜索插入位置](https://leetcode.cn/problems/N6YdxV/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/N6YdxV.md) | 数组、二分查找 | 简单 | +| [LCR 072. x 的平方根](https://leetcode.cn/problems/jJ0w9p/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jJ0w9p.md) | 数学、二分查找 | 简单 | +| [LCR 073. 爱吃香蕉的狒狒](https://leetcode.cn/problems/nZZqjQ/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/nZZqjQ.md) | 数组、二分查找 | 中等 | +| [LCR 074. 合并区间](https://leetcode.cn/problems/SsGoHC/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SsGoHC.md) | 数组、排序 | 中等 | +| [LCR 075. 数组的相对排序](https://leetcode.cn/problems/0H97ZC/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0H97ZC.md) | 数组、哈希表、计数排序、排序 | 简单 | +| [LCR 076. 数组中的第 K 个最大元素](https://leetcode.cn/problems/xx4gT2/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xx4gT2.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [LCR 077. 排序链表](https://leetcode.cn/problems/7WHec2/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WHec2.md) | 链表、双指针、分治、排序、归并排序 | 中等 | +| [LCR 078. 合并 K 个升序链表](https://leetcode.cn/problems/vvXgSW/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vvXgSW.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [LCR 079. 子集](https://leetcode.cn/problems/TVdhkn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/TVdhkn.md) | 位运算、数组、回溯 | 中等 | +| [LCR 080. 组合](https://leetcode.cn/problems/uUsW3B/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/uUsW3B.md) | 数组、回溯 | 中等 | +| [LCR 081. 组合总和](https://leetcode.cn/problems/Ygoe9J/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Ygoe9J.md) | 数组、回溯 | 中等 | +| [LCR 082. 组合总和 II](https://leetcode.cn/problems/4sjJUc/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4sjJUc.md) | 数组、回溯 | 中等 | +| [LCR 083. 全排列](https://leetcode.cn/problems/VvJkup/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/VvJkup.md) | 数组、回溯 | 中等 | +| [LCR 084. 全排列 II](https://leetcode.cn/problems/7p8L0Z/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7p8L0Z.md) | 数组、回溯 | 中等 | +| [LCR 085. 括号生成](https://leetcode.cn/problems/IDBivT/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/IDBivT.md) | 字符串、动态规划、回溯 | 中等 | +| [LCR 086. 分割回文串](https://leetcode.cn/problems/M99OJA/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M99OJA.md) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | +| [LCR 087. 复原 IP 地址](https://leetcode.cn/problems/0on3uN/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0on3uN.md) | 字符串、回溯 | 中等 | +| [LCR 088. 使用最小花费爬楼梯](https://leetcode.cn/problems/GzCJIP/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/GzCJIP.md) | 数组、动态规划 | 简单 | +| [LCR 089. 打家劫舍](https://leetcode.cn/problems/Gu0c2T/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Gu0c2T.md) | 数组、动态规划 | 中等 | +| [LCR 090. 打家劫舍 II](https://leetcode.cn/problems/PzWKhm/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/PzWKhm.md) | 数组、动态规划 | 中等 | +| [LCR 093. 最长的斐波那契子序列的长度](https://leetcode.cn/problems/Q91FMA/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Q91FMA.md) | 数组、哈希表、动态规划 | 中等 | +| [LCR 095. 最长公共子序列](https://leetcode.cn/problems/qJnOS7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qJnOS7.md) | 字符串、动态规划 | 中等 | +| [LCR 097. 不同的子序列](https://leetcode.cn/problems/21dk04/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/21dk04.md) | 字符串、动态规划 | 困难 | +| [LCR 098. 不同路径](https://leetcode.cn/problems/2AoeFn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2AoeFn.md) | 数学、动态规划、组合数学 | 中等 | +| [LCR 101. 分割等和子集](https://leetcode.cn/problems/NUPfPr/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NUPfPr.md) | 数学、字符串、模拟 | 简单 | +| [LCR 102. 目标和](https://leetcode.cn/problems/YaVDxD/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/YaVDxD.md) | 数组、动态规划、回溯 | 中等 | +| [LCR 103. 零钱兑换](https://leetcode.cn/problems/gaM7Ch/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gaM7Ch.md) | 广度优先搜索、数组、动态规划 | 中等 | +| [LCR 104. 组合总和 Ⅳ](https://leetcode.cn/problems/D0F0SV/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/D0F0SV.md) | 数组、动态规划 | 中等 | +| [LCR 105. 岛屿的最大面积](https://leetcode.cn/problems/ZL6zAn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZL6zAn.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [LCR 106. 判断二分图](https://leetcode.cn/problems/vEAB3K/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vEAB3K.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [LCR 107. 01 矩阵](https://leetcode.cn/problems/2bCMpM/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2bCMpM.md) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | +| [LCR 108. 单词接龙](https://leetcode.cn/problems/om3reC/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/om3reC.md) | 广度优先搜索、哈希表、字符串 | 困难 | +| [LCR 109. 打开转盘锁](https://leetcode.cn/problems/zlDJc7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zlDJc7.md) | 广度优先搜索、数组、哈希表、字符串 | 中等 | +| [LCR 111. 除法求值](https://leetcode.cn/problems/vlzXQL/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vlzXQL.md) | 深度优先搜索、广度优先搜索、并查集、图、数组、最短路 | 中等 | +| [LCR 112. 矩阵中的最长递增路径](https://leetcode.cn/problems/fpTFWP/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fpTFWP.md) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | +| [LCR 113. 课程表 II](https://leetcode.cn/problems/QA2IGt/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QA2IGt.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [LCR 116. 省份数量](https://leetcode.cn/problems/bLyHh0/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bLyHh0.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [LCR 118. 冗余连接](https://leetcode.cn/problems/7LpjUW/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7LpjUW.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [LCR 119. 最长连续序列](https://leetcode.cn/problems/WhsWhI/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WhsWhI.md) | 并查集、数组、哈希表 | 中等 | +| [LCR 120. 寻找文件副本](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof.md) | 数组、哈希表、排序 | 简单 | +| [LCR 121. 寻找目标值 - 二维数组](https://leetcode.cn/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-wei-shu-zu-zhong-de-cha-zhao-lcof.md) | 数组、二分查找、分治、矩阵 | 中等 | +| [LCR 122. 路径加密](https://leetcode.cn/problems/ti-huan-kong-ge-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ti-huan-kong-ge-lcof.md) | 字符串 | 简单 | +| [LCR 123. 图书整理 I](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof.md) | 栈、递归、链表、双指针 | 简单 | +| [LCR 124. 推理二叉树](https://leetcode.cn/problems/zhong-jian-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhong-jian-er-cha-shu-lcof.md) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [LCR 125. 图书整理 II](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof.md) | 栈、设计、队列 | 简单 | +| [LCR 126. 斐波那契数](https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fei-bo-na-qi-shu-lie-lcof.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [LCR 127. 跳跃训练](https://leetcode.cn/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qing-wa-tiao-tai-jie-wen-ti-lcof.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [LCR 128. 库存管理 I](https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof.md) | 数组、二分查找 | 简单 | +| [LCR 129. 字母迷宫](https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ju-zhen-zhong-de-lu-jing-lcof.md) | 数组、字符串、回溯、矩阵 | 中等 | +| [LCR 130. 衣橱整理](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof.md) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | +| [LCR 131. 砍竹子 I](https://leetcode.cn/problems/jian-sheng-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jian-sheng-zi-lcof.md) | 数学、动态规划 | 中等 | +| [LCR 133. 位 1 的个数](https://leetcode.cn/problems/er-jin-zhi-zhong-1de-ge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-jin-zhi-zhong-1de-ge-shu-lcof.md) | 位运算 | 简单 | +| [LCR 134. Pow(x, n)](https://leetcode.cn/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zhi-de-zheng-shu-ci-fang-lcof.md) | 递归、数学 | 中等 | +| [LCR 135. 报数](https://leetcode.cn/problems/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof.md) | 数组、数学 | 简单 | +| [LCR 136. 删除链表的节点](https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shan-chu-lian-biao-de-jie-dian-lcof.md) | 链表 | 简单 | +| [LCR 139. 训练计划 I](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof.md) | 数组、双指针、排序 | 简单 | +| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof.md) | 链表、双指针 | 简单 | +| [LCR 141. 训练计划 III](https://leetcode.cn/problems/fan-zhuan-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-lian-biao-lcof.md) | 递归、链表 | 简单 | +| [LCR 142. 训练计划 IV](https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-bing-liang-ge-pai-xu-de-lian-biao-lcof.md) | 递归、链表 | 简单 | +| [LCR 143. 子结构判断](https://leetcode.cn/problems/shu-de-zi-jie-gou-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-de-zi-jie-gou-lcof.md) | 树、深度优先搜索、二叉树 | 中等 | +| [LCR 144. 翻转二叉树](https://leetcode.cn/problems/er-cha-shu-de-jing-xiang-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-jing-xiang-lcof.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 145. 判断对称二叉树](https://leetcode.cn/problems/dui-cheng-de-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-cheng-de-er-cha-shu-lcof.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 146. 螺旋遍历二维数组](https://leetcode.cn/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shun-shi-zhen-da-yin-ju-zhen-lcof.md) | 数组、矩阵、模拟 | 简单 | +| [LCR 147. 最小栈](https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bao-han-minhan-shu-de-zhan-lcof.md) | 栈、设计 | 简单 | +| [LCR 148. 验证图书取出顺序](https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhan-de-ya-ru-dan-chu-xu-lie-lcof.md) | 栈、数组、模拟 | 中等 | +| [LCR 149. 彩灯装饰记录 I](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-lcof.md) | 树、广度优先搜索、二叉树 | 中等 | +| [LCR 150. 彩灯装饰记录 II](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof.md) | 树、广度优先搜索、二叉树 | 简单 | +| [LCR 151. 彩灯装饰记录 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof.md) | 树、广度优先搜索、二叉树 | 中等 | +| [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof.md) | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 | +| [LCR 153. 二叉树中和为目标值的路径](https://leetcode.cn/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof.md) | 树、深度优先搜索、回溯、二叉树 | 中等 | +| [LCR 154. 复杂链表的复制](https://leetcode.cn/problems/fu-za-lian-biao-de-fu-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fu-za-lian-biao-de-fu-zhi-lcof.md) | 哈希表、链表 | 中等 | +| [LCR 155. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof.md) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | +| [LCR 156. 序列化与反序列化二叉树](https://leetcode.cn/problems/xu-lie-hua-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xu-lie-hua-er-cha-shu-lcof.md) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | +| [LCR 157. 套餐内商品的排列顺序](https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zi-fu-chuan-de-pai-lie-lcof.md) | 字符串、回溯 | 中等 | +| [LCR 158. 库存管理 II](https://leetcode.cn/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof.md) | 数组、哈希表、分治、计数、排序 | 简单 | +| [LCR 159. 库存管理 III](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof.md) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | +| [LCR 160. 数据流中的中位数](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-ju-liu-zhong-de-zhong-wei-shu-lcof.md) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | +| [LCR 161. 连续天数的最高销售额](https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-xu-zi-shu-zu-de-zui-da-he-lcof.md) | 数组、分治、动态规划 | 简单 | +| [LCR 163. 找到第 k 位数字](https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof.md) | 数学、二分查找 | 中等 | +| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof.md) | 贪心、字符串、排序 | 中等 | +| [LCR 165. 解密数字](https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof.md) | 字符串、动态规划 | 中等 | +| [LCR 166. 珠宝的最高价值](https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/li-wu-de-zui-da-jie-zhi-lcof.md) | 数组、动态规划、矩阵 | 中等 | +| [LCR 167. 招式拆解 I](https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [LCR 168. 丑数](https://leetcode.cn/problems/chou-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/chou-shu-lcof.md) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | +| [LCR 169. 招式拆解 II](https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof.md) | 队列、哈希表、字符串、计数 | 简单 | +| [LCR 170. 交易逆序对的总数](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | +| [LCR 171. 训练计划 V](https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof.md) | 哈希表、链表、双指针 | 简单 | +| [LCR 172. 统计目标成绩的出现次数](https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof.md) | 数组、二分查找 | 简单 | +| [LCR 173. 点名](https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/que-shi-de-shu-zi-lcof.md) | 位运算、数组、哈希表、数学、二分查找 | 简单 | +| [LCR 174. 寻找二叉搜索树中的目标节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [LCR 175. 计算二叉树的深度](https://leetcode.cn/problems/er-cha-shu-de-shen-du-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-shen-du-lcof.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 176. 判断是否为平衡二叉树](https://leetcode.cn/problems/ping-heng-er-cha-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ping-heng-er-cha-shu-lcof.md) | 树、深度优先搜索、二叉树 | 简单 | +| [LCR 177. 撞色搭配](https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof.md) | 位运算、数组 | 中等 | +| [LCR 179. 查找总价格为目标值的两个商品](https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-liang-ge-shu-zi-lcof.md) | 数组、双指针、二分查找 | 简单 | +| [LCR 180. 文件组合](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof.md) | 数学、双指针、枚举 | 简单 | +| [LCR 181. 字符串中的单词反转](https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-dan-ci-shun-xu-lcof.md) | 双指针、字符串 | 简单 | +| [LCR 182. 动态口令](https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zuo-xuan-zhuan-zi-fu-chuan-lcof.md) | 数学、双指针、字符串 | 简单 | +| [LCR 183. 望远镜中最高的海拔](https://leetcode.cn/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hua-dong-chuang-kou-de-zui-da-zhi-lcof.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [LCR 184. 设计自助结算系统](https://leetcode.cn/problems/dui-lie-de-zui-da-zhi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-lie-de-zui-da-zhi-lcof.md) | 设计、队列、单调队列 | 中等 | +| [LCR 186. 文物朝代判断](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof.md) | 数组、排序 | 简单 | +| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof.md) | 递归、数学 | 简单 | +| [LCR 188. 买卖芯片的最佳时机](https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gu-piao-de-zui-da-li-run-lcof.md) | 数组、动态规划 | 中等 | +| [LCR 189. 设计机械累加器](https://leetcode.cn/problems/qiu-12n-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qiu-12n-lcof.md) | 位运算、递归、脑筋急转弯 | 中等 | +| [LCR 190. 加密运算](https://leetcode.cn/problems/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof.md) | 位运算、数学 | 简单 | +| [LCR 191. 按规则计算统计结果](https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gou-jian-cheng-ji-shu-zu-lcof.md) | 数组、前缀和 | 中等 | +| [LCR 192. 把字符串转换成整数 (atoi)](https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof.md) | 字符串 | 中等 | +| [LCR 193. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [LCR 194. 二叉树的最近公共祖先](https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof.md) | 树、深度优先搜索、二叉树 | 简单 | diff --git a/docs/00_preface/00_06_categories_list.md b/docs/00_preface/00_06_categories_list.md index 8231a0c8..63d7c625 100644 --- a/docs/00_preface/00_06_categories_list.md +++ b/docs/00_preface/00_06_categories_list.md @@ -8,23 +8,23 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0189. 轮转数组](https://leetcode.cn/problems/rotate-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array/) | 数组、数学、双指针 | 中等 | -| [0066. 加一](https://leetcode.cn/problems/plus-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/plus-one/) | 数组、数学 | 简单 | -| [0724. 寻找数组的中心下标](https://leetcode.cn/problems/find-pivot-index/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-pivot-index/) | 数组、前缀和 | 简单 | -| [0485. 最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones/) | 数组 | 简单 | -| [0238. 除自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-except-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/product-of-array-except-self/) | 数组、前缀和 | 中等 | +| [0189. 轮转数组](https://leetcode.cn/problems/rotate-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array.md) | 数组、数学、双指针 | 中等 | +| [0066. 加一](https://leetcode.cn/problems/plus-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/plus-one.md) | 数组、数学 | 简单 | +| [0724. 寻找数组的中心下标](https://leetcode.cn/problems/find-pivot-index/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-pivot-index.md) | 数组、前缀和 | 简单 | +| [0485. 最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones.md) | 数组 | 简单 | +| [0238. 除自身以外数组的乘积](https://leetcode.cn/problems/product-of-array-except-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/product-of-array-except-self.md) | 数组、前缀和 | 中等 | #### 二维数组题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0498. 对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse/) | 数组、矩阵、模拟 | 中等 | -| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image/) | 数组、数学、矩阵 | 中等 | -| [0073. 矩阵置零](https://leetcode.cn/problems/set-matrix-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/set-matrix-zeroes/) | 数组、哈希表、矩阵 | 中等 | -| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix/) | 数组、矩阵、模拟 | 中等 | -| [0059. 螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii/) | 数组、矩阵、模拟 | 中等 | -| [0289. 生命游戏](https://leetcode.cn/problems/game-of-life/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/game-of-life/) | 数组、矩阵、模拟 | 中等 | +| [0498. 对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse.md) | 数组、矩阵、模拟 | 中等 | +| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image.md) | 数组、数学、矩阵 | 中等 | +| [0073. 矩阵置零](https://leetcode.cn/problems/set-matrix-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/set-matrix-zeroes.md) | 数组、哈希表、矩阵 | 中等 | +| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix.md) | 数组、矩阵、模拟 | 中等 | +| [0059. 螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii.md) | 数组、矩阵、模拟 | 中等 | +| [0289. 生命游戏](https://leetcode.cn/problems/game-of-life/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/game-of-life.md) | 数组、矩阵、模拟 | 中等 | ### 排序算法题目 @@ -33,94 +33,94 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | 贪心、字符串、排序 | 中等 | -| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | +| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof.md) | 贪心、字符串、排序 | 中等 | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes.md) | 数组、双指针 | 简单 | #### 选择排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | #### 插入排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) | 数组、双指针、排序 | 中等 | +| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors.md) | 数组、双指针、排序 | 中等 | #### 希尔排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0506. 相对名次](https://leetcode.cn/problems/relative-ranks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/relative-ranks/) | 数组、排序、堆(优先队列) | 简单 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0506. 相对名次](https://leetcode.cn/problems/relative-ranks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/relative-ranks.md) | 数组、排序、堆(优先队列) | 简单 | #### 归并排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | -| [LCR 170. 交易逆序对的总数](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | -| [0315. 计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array.md) | 数组、双指针、排序 | 简单 | +| [LCR 170. 交易逆序对的总数](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | +| [0315. 计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | #### 快速排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) | 数组、哈希表、分治、计数、排序 | 简单 | #### 堆排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| [LCR 159. 库存管理 III](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof/) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [LCR 159. 库存管理 III](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof.md) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | #### 计数排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [1122. 数组的相对排序](https://leetcode.cn/problems/relative-sort-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/relative-sort-array/) | 数组、哈希表、计数排序、排序 | 简单 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [1122. 数组的相对排序](https://leetcode.cn/problems/relative-sort-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/relative-sort-array.md) | 数组、哈希表、计数排序、排序 | 简单 | #### 桶排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii/) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | -| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap/) | 数组、桶排序、基数排序、排序 | 中等 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | +| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap.md) | 数组、桶排序、基数排序、排序 | 中等 | #### 基数排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap/) | 数组、桶排序、基数排序、排序 | 中等 | -| [0561. 数组拆分](https://leetcode.cn/problems/array-partition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition/) | 贪心、数组、计数排序、排序 | 简单 | +| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap.md) | 数组、桶排序、基数排序、排序 | 中等 | +| [0561. 数组拆分](https://leetcode.cn/problems/array-partition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition.md) | 贪心、数组、计数排序、排序 | 简单 | #### 其他排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0217. 存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate/) | 数组、哈希表、排序 | 简单 | -| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | -| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | -| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number/) | 贪心、数组、字符串、排序 | 中等 | -| [0384. 打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array/) | 设计、数组、数学、随机化 | 中等 | -| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | 贪心、字符串、排序 | 中等 | +| [0217. 存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate.md) | 数组、哈希表、排序 | 简单 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) | 位运算、数组 | 简单 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals.md) | 数组、排序 | 中等 | +| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number.md) | 贪心、数组、字符串、排序 | 中等 | +| [0384. 打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array.md) | 设计、数组、数学、随机化 | 中等 | +| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof.md) | 贪心、字符串、排序 | 中等 | ### 二分查找题目 @@ -129,54 +129,54 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search/) | 数组、二分查找 | 简单 | -| [0374. 猜数字大小](https://leetcode.cn/problems/guess-number-higher-or-lower/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower/) | 二分查找、交互 | 简单 | -| [0035. 搜索插入位置](https://leetcode.cn/problems/search-insert-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-insert-position/) | 数组、二分查找 | 简单 | -| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array/) | 数组、二分查找 | 中等 | -| [0167. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted/) | 数组、双指针、二分查找 | 中等 | -| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | -| [0154. 寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii/) | 数组、二分查找 | 困难 | -| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | -| [0081. 搜索旋转排序数组 II](https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array-ii/) | 数组、二分查找 | 中等 | -| [0278. 第一个错误的版本](https://leetcode.cn/problems/first-bad-version/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/first-bad-version/) | 二分查找、交互 | 简单 | -| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element/) | 数组、二分查找 | 中等 | -| [0852. 山脉数组的峰顶索引](https://leetcode.cn/problems/peak-index-in-a-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/peak-index-in-a-mountain-array/) | 数组、二分查找 | 中等 | -| [1095. 山脉数组中查找目标值](https://leetcode.cn/problems/find-in-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-in-mountain-array/) | 数组、二分查找、交互 | 困难 | -| [0744. 寻找比目标字母大的最小字母](https://leetcode.cn/problems/find-smallest-letter-greater-than-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-smallest-letter-greater-than-target/) | 数组、二分查找 | 简单 | -| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | -| [0074. 搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix/) | 数组、二分查找、矩阵 | 中等 | -| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii/) | 数组、二分查找、分治、矩阵 | 中等 | +| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search.md) | 数组、二分查找 | 简单 | +| [0374. 猜数字大小](https://leetcode.cn/problems/guess-number-higher-or-lower/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower.md) | 二分查找、交互 | 简单 | +| [0035. 搜索插入位置](https://leetcode.cn/problems/search-insert-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-insert-position.md) | 数组、二分查找 | 简单 | +| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array.md) | 数组、二分查找 | 中等 | +| [0167. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted.md) | 数组、双指针、二分查找 | 中等 | +| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array.md) | 数组、二分查找 | 中等 | +| [0154. 寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii.md) | 数组、二分查找 | 困难 | +| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array.md) | 数组、二分查找 | 中等 | +| [0081. 搜索旋转排序数组 II](https://leetcode.cn/problems/search-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array-ii.md) | 数组、二分查找 | 中等 | +| [0278. 第一个错误的版本](https://leetcode.cn/problems/first-bad-version/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/first-bad-version.md) | 二分查找、交互 | 简单 | +| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element.md) | 数组、二分查找 | 中等 | +| [0852. 山脉数组的峰顶索引](https://leetcode.cn/problems/peak-index-in-a-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/peak-index-in-a-mountain-array.md) | 数组、二分查找 | 中等 | +| [1095. 山脉数组中查找目标值](https://leetcode.cn/problems/find-in-mountain-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-in-mountain-array.md) | 数组、二分查找、交互 | 困难 | +| [0744. 寻找比目标字母大的最小字母](https://leetcode.cn/problems/find-smallest-letter-greater-than-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-smallest-letter-greater-than-target.md) | 数组、二分查找 | 简单 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays.md) | 数组、二分查找、分治 | 困难 | +| [0074. 搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix.md) | 数组、二分查找、矩阵 | 中等 | +| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii.md) | 数组、二分查找、分治、矩阵 | 中等 | #### 二分答案题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx/) | 数学、二分查找 | 简单 | -| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number/) | 位运算、数组、双指针、二分查找 | 中等 | -| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) | 递归、数学 | 中等 | -| [0367. 有效的完全平方数](https://leetcode.cn/problems/valid-perfect-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/valid-perfect-square/) | 数学、二分查找 | 简单 | -| [1300. 转变数组后最接近目标值的数组和](https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target/) | 数组、二分查找、排序 | 中等 | -| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit/) | 数学、二分查找 | 中等 | +| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx.md) | 数学、二分查找 | 简单 | +| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number.md) | 位运算、数组、双指针、二分查找 | 中等 | +| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n.md) | 递归、数学 | 中等 | +| [0367. 有效的完全平方数](https://leetcode.cn/problems/valid-perfect-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/valid-perfect-square.md) | 数学、二分查找 | 简单 | +| [1300. 转变数组后最接近目标值的数组和](https://leetcode.cn/problems/sum-of-mutated-array-closest-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target.md) | 数组、二分查找、排序 | 中等 | +| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit.md) | 数学、二分查找 | 中等 | #### 复杂的二分查找问题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0875. 爱吃香蕉的珂珂](https://leetcode.cn/problems/koko-eating-bananas/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/koko-eating-bananas/) | 数组、二分查找 | 中等 | -| [0410. 分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum/) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | -| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| [0658. 找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements/) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | -| [0270. 最接近的二叉搜索树值](https://leetcode.cn/problems/closest-binary-search-tree-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/closest-binary-search-tree-value/) | 树、深度优先搜索、二叉搜索树、二分查找、二叉树 | 简单 | -| [0702. 搜索长度未知的有序数组](https://leetcode.cn/problems/search-in-a-sorted-array-of-unknown-size/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size/) | 数组、二分查找、交互 | 中等 | -| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number/) | 位运算、数组、双指针、二分查找 | 中等 | -| [0719. 找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance/) | 数组、双指针、二分查找、排序 | 困难 | -| [0259. 较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller/) | 数组、双指针、二分查找、排序 | 中等 | -| [1011. 在 D 天内送达包裹的能力](https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days/) | 数组、二分查找 | 中等 | -| [1482. 制作 m 束花所需的最少天数](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets/) | 数组、二分查找 | 中等 | +| [0875. 爱吃香蕉的珂珂](https://leetcode.cn/problems/koko-eating-bananas/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/koko-eating-bananas.md) | 数组、二分查找 | 中等 | +| [0410. 分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum.md) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | +| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0658. 找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements.md) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | +| [0270. 最接近的二叉搜索树值](https://leetcode.cn/problems/closest-binary-search-tree-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/closest-binary-search-tree-value.md) | 树、深度优先搜索、二叉搜索树、二分查找、二叉树 | 简单 | +| [0702. 搜索长度未知的有序数组](https://leetcode.cn/problems/search-in-a-sorted-array-of-unknown-size/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size.md) | 数组、二分查找、交互 | 中等 | +| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number.md) | 位运算、数组、双指针、二分查找 | 中等 | +| [0719. 找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance.md) | 数组、双指针、二分查找、排序 | 困难 | +| [0259. 较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller.md) | 数组、双指针、二分查找、排序 | 中等 | +| [1011. 在 D 天内送达包裹的能力](https://leetcode.cn/problems/capacity-to-ship-packages-within-d-days/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days.md) | 数组、二分查找 | 中等 | +| [1482. 制作 m 束花所需的最少天数](https://leetcode.cn/problems/minimum-number-of-days-to-make-m-bouquets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets.md) | 数组、二分查找 | 中等 | ### 双指针题目 @@ -185,52 +185,52 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0167. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted/) | 数组、双指针、二分查找 | 中等 | -| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) | 双指针、字符串 | 简单 | -| [0345. 反转字符串中的元音字母](https://leetcode.cn/problems/reverse-vowels-of-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-vowels-of-a-string/) | 双指针、字符串 | 简单 | -| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) | 双指针、字符串 | 简单 | -| [0011. 盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water/) | 贪心、数组、双指针 | 中等 | -| [0611. 有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number/) | 贪心、数组、双指针、二分查找、排序 | 中等 | -| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | -| [0016. 最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest/) | 数组、双指针、排序 | 中等 | -| [0018. 四数之和](https://leetcode.cn/problems/4sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum/) | 数组、双指针、排序 | 中等 | -| [0259. 较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller/) | 数组、双指针、二分查找、排序 | 中等 | -| [0658. 找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements/) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | -| [1099. 小于 K 的两数之和](https://leetcode.cn/problems/two-sum-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-sum-less-than-k/) | 数组、双指针、二分查找、排序 | 简单 | -| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) | 数组、双指针、排序 | 中等 | -| [0360. 有序转化数组](https://leetcode.cn/problems/sort-transformed-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sort-transformed-array/) | 数组、数学、双指针、排序 | 中等 | -| [0977. 有序数组的平方](https://leetcode.cn/problems/squares-of-a-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/squares-of-a-sorted-array/) | 数组、双指针、排序 | 简单 | -| [0881. 救生艇](https://leetcode.cn/problems/boats-to-save-people/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/boats-to-save-people/) | 贪心、数组、双指针、排序 | 中等 | -| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) | 栈、数组、双指针、动态规划、单调栈 | 困难 | -| [0443. 压缩字符串](https://leetcode.cn/problems/string-compression/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression/) | 双指针、字符串 | 中等 | +| [0167. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted.md) | 数组、双指针、二分查找 | 中等 | +| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string.md) | 双指针、字符串 | 简单 | +| [0345. 反转字符串中的元音字母](https://leetcode.cn/problems/reverse-vowels-of-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-vowels-of-a-string.md) | 双指针、字符串 | 简单 | +| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome.md) | 双指针、字符串 | 简单 | +| [0011. 盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water.md) | 贪心、数组、双指针 | 中等 | +| [0611. 有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number.md) | 贪心、数组、双指针、二分查找、排序 | 中等 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum.md) | 数组、双指针、排序 | 中等 | +| [0016. 最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest.md) | 数组、双指针、排序 | 中等 | +| [0018. 四数之和](https://leetcode.cn/problems/4sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum.md) | 数组、双指针、排序 | 中等 | +| [0259. 较小的三数之和](https://leetcode.cn/problems/3sum-smaller/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller.md) | 数组、双指针、二分查找、排序 | 中等 | +| [0658. 找到 K 个最接近的元素](https://leetcode.cn/problems/find-k-closest-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements.md) | 数组、双指针、二分查找、排序、滑动窗口、堆(优先队列) | 中等 | +| [1099. 小于 K 的两数之和](https://leetcode.cn/problems/two-sum-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-sum-less-than-k.md) | 数组、双指针、二分查找、排序 | 简单 | +| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors.md) | 数组、双指针、排序 | 中等 | +| [0360. 有序转化数组](https://leetcode.cn/problems/sort-transformed-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sort-transformed-array.md) | 数组、数学、双指针、排序 | 中等 | +| [0977. 有序数组的平方](https://leetcode.cn/problems/squares-of-a-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/squares-of-a-sorted-array.md) | 数组、双指针、排序 | 简单 | +| [0881. 救生艇](https://leetcode.cn/problems/boats-to-save-people/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/boats-to-save-people.md) | 贪心、数组、双指针、排序 | 中等 | +| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | +| [0443. 压缩字符串](https://leetcode.cn/problems/string-compression/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression.md) | 双指针、字符串 | 中等 | #### 快慢指针题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0026. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array/) | 数组、双指针 | 简单 | -| [0080. 删除有序数组中的重复项 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii/) | 数组、双指针 | 中等 | -| [0027. 移除元素](https://leetcode.cn/problems/remove-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-element/) | 数组、双指针 | 简单 | -| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | -| [0845. 数组中的最长山脉](https://leetcode.cn/problems/longest-mountain-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/longest-mountain-in-array/) | 数组、双指针、动态规划、枚举 | 中等 | -| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | -| [0719. 找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance/) | 数组、双指针、二分查找、排序 | 困难 | -| [0334. 递增的三元子序列](https://leetcode.cn/problems/increasing-triplet-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/increasing-triplet-subsequence/) | 贪心、数组 | 中等 | -| [0978. 最长湍流子数组](https://leetcode.cn/problems/longest-turbulent-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/longest-turbulent-subarray/) | 数组、动态规划、滑动窗口 | 中等 | -| [LCR 139. 训练计划 I](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | 数组、双指针、排序 | 简单 | +| [0026. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array.md) | 数组、双指针 | 简单 | +| [0080. 删除有序数组中的重复项 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii.md) | 数组、双指针 | 中等 | +| [0027. 移除元素](https://leetcode.cn/problems/remove-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-element.md) | 数组、双指针 | 简单 | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes.md) | 数组、双指针 | 简单 | +| [0845. 数组中的最长山脉](https://leetcode.cn/problems/longest-mountain-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/longest-mountain-in-array.md) | 数组、双指针、动态规划、枚举 | 中等 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array.md) | 数组、双指针、排序 | 简单 | +| [0719. 找出第 K 小的数对距离](https://leetcode.cn/problems/find-k-th-smallest-pair-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance.md) | 数组、双指针、二分查找、排序 | 困难 | +| [0334. 递增的三元子序列](https://leetcode.cn/problems/increasing-triplet-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/increasing-triplet-subsequence.md) | 贪心、数组 | 中等 | +| [0978. 最长湍流子数组](https://leetcode.cn/problems/longest-turbulent-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/longest-turbulent-subarray.md) | 数组、动态规划、滑动窗口 | 中等 | +| [LCR 139. 训练计划 I](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof.md) | 数组、双指针、排序 | 简单 | #### 分离双指针题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| [0925. 长按键入](https://leetcode.cn/problems/long-pressed-name/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/long-pressed-name/) | 双指针、字符串 | 简单 | -| [0844. 比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/backspace-string-compare/) | 栈、双指针、字符串、模拟 | 简单 | -| [1229. 安排会议日程](https://leetcode.cn/problems/meeting-scheduler/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/meeting-scheduler/) | 数组、双指针、排序 | 中等 | -| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | -| [0392. 判断子序列](https://leetcode.cn/problems/is-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/is-subsequence/) | 双指针、字符串、动态规划 | 简单 | +| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0925. 长按键入](https://leetcode.cn/problems/long-pressed-name/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/long-pressed-name.md) | 双指针、字符串 | 简单 | +| [0844. 比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/backspace-string-compare.md) | 栈、双指针、字符串、模拟 | 简单 | +| [1229. 安排会议日程](https://leetcode.cn/problems/meeting-scheduler/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/meeting-scheduler.md) | 数组、双指针、排序 | 中等 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings.md) | 数学、字符串、模拟 | 简单 | +| [0392. 判断子序列](https://leetcode.cn/problems/is-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/is-subsequence.md) | 双指针、字符串、动态规划 | 简单 | ### 滑动窗口题目 @@ -239,50 +239,50 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1343. 大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | 数组、滑动窗口 | 中等 | -| [0643. 子数组最大平均数 I](https://leetcode.cn/problems/maximum-average-subarray-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-average-subarray-i/) | 数组、滑动窗口 | 简单 | -| [1052. 爱生气的书店老板](https://leetcode.cn/problems/grumpy-bookstore-owner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/grumpy-bookstore-owner/) | 数组、滑动窗口 | 中等 | -| [1423. 可获得的最大点数](https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards/) | 数组、前缀和、滑动窗口 | 中等 | -| [1456. 定长子串中元音的最大数目](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length/) | 字符串、滑动窗口 | 中等 | -| [0567. 字符串的排列](https://leetcode.cn/problems/permutation-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/permutation-in-string/) | 哈希表、双指针、字符串、滑动窗口 | 中等 | -| [1100. 长度为 K 的无重复字符子串](https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [1151. 最少交换次数来组合所有的 1](https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together/) | 数组、滑动窗口 | 中等 | -| [1176. 健身计划评估](https://leetcode.cn/problems/diet-plan-performance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/diet-plan-performance/) | 数组、滑动窗口 | 简单 | -| [0438. 找到字符串中所有字母异位词](https://leetcode.cn/problems/find-all-anagrams-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-anagrams-in-a-string/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0995. K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips/) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | -| [0683. K 个关闭的灯泡](https://leetcode.cn/problems/k-empty-slots/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/k-empty-slots/) | 树状数组、线段树、队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 困难 | -| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii/) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | -| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | -| [0480. 滑动窗口中位数](https://leetcode.cn/problems/sliding-window-median/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sliding-window-median/) | 数组、哈希表、滑动窗口、堆(优先队列) | 困难 | +| [1343. 大小为 K 且平均值大于等于阈值的子数组数目](https://leetcode.cn/problems/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.md) | 数组、滑动窗口 | 中等 | +| [0643. 子数组最大平均数 I](https://leetcode.cn/problems/maximum-average-subarray-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-average-subarray-i.md) | 数组、滑动窗口 | 简单 | +| [1052. 爱生气的书店老板](https://leetcode.cn/problems/grumpy-bookstore-owner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/grumpy-bookstore-owner.md) | 数组、滑动窗口 | 中等 | +| [1423. 可获得的最大点数](https://leetcode.cn/problems/maximum-points-you-can-obtain-from-cards/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards.md) | 数组、前缀和、滑动窗口 | 中等 | +| [1456. 定长子串中元音的最大数目](https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length.md) | 字符串、滑动窗口 | 中等 | +| [0567. 字符串的排列](https://leetcode.cn/problems/permutation-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/permutation-in-string.md) | 哈希表、双指针、字符串、滑动窗口 | 中等 | +| [1100. 长度为 K 的无重复字符子串](https://leetcode.cn/problems/find-k-length-substrings-with-no-repeated-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [1151. 最少交换次数来组合所有的 1](https://leetcode.cn/problems/minimum-swaps-to-group-all-1s-together/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together.md) | 数组、滑动窗口 | 中等 | +| [1176. 健身计划评估](https://leetcode.cn/problems/diet-plan-performance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/diet-plan-performance.md) | 数组、滑动窗口 | 简单 | +| [0438. 找到字符串中所有字母异位词](https://leetcode.cn/problems/find-all-anagrams-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-anagrams-in-a-string.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0995. K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips.md) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | +| [0683. K 个关闭的灯泡](https://leetcode.cn/problems/k-empty-slots/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/k-empty-slots.md) | 树状数组、线段树、队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0480. 滑动窗口中位数](https://leetcode.cn/problems/sliding-window-median/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sliding-window-median.md) | 数组、哈希表、滑动窗口、堆(优先队列) | 困难 | #### 不定长度窗口题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0674. 最长连续递增序列](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-continuous-increasing-subsequence/) | 数组 | 简单 | -| [0485. 最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones/) | 数组 | 简单 | -| [0487. 最大连续1的个数 II](https://leetcode.cn/problems/max-consecutive-ones-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones-ii/) | 数组、动态规划、滑动窗口 | 中等 | -| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring/) | 哈希表、字符串、滑动窗口 | 困难 | -| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| [1004. 最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| [1658. 将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero/) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | -| [0424. 替换后的最长重复字符](https://leetcode.cn/problems/longest-repeating-character-replacement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-repeating-character-replacement/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [1695. 删除子数组的最大得分](https://leetcode.cn/problems/maximum-erasure-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-erasure-value/) | 数组、哈希表、滑动窗口 | 中等 | -| [1208. 尽可能使字符串相等](https://leetcode.cn/problems/get-equal-substrings-within-budget/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/get-equal-substrings-within-budget/) | 字符串、二分查找、前缀和、滑动窗口 | 中等 | -| [1493. 删掉一个元素以后全为 1 的最长子数组](https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element/) | 数组、动态规划、滑动窗口 | 中等 | -| [0727. 最小窗口子序列](https://leetcode.cn/problems/minimum-window-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-window-subsequence/) | 字符串、动态规划、滑动窗口 | 困难 | -| [0159. 至多包含两个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0340. 至多包含 K 个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0795. 区间子数组个数](https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum/) | 数组、双指针 | 中等 | -| [0992. K 个不同整数的子数组](https://leetcode.cn/problems/subarrays-with-k-different-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarrays-with-k-different-integers/) | 数组、哈希表、计数、滑动窗口 | 困难 | -| [0713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/subarray-product-less-than-k/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| [0904. 水果成篮](https://leetcode.cn/problems/fruit-into-baskets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/fruit-into-baskets/) | 数组、哈希表、滑动窗口 | 中等 | -| [1358. 包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0467. 环绕字符串中唯一的子字符串](https://leetcode.cn/problems/unique-substrings-in-wraparound-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/unique-substrings-in-wraparound-string/) | 字符串、动态规划 | 中等 | -| [1438. 绝对差不超过限制的最长连续子数组](https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | 队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 中等 | +| [0674. 最长连续递增序列](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-continuous-increasing-subsequence.md) | 数组 | 简单 | +| [0485. 最大连续 1 的个数](https://leetcode.cn/problems/max-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones.md) | 数组 | 简单 | +| [0487. 最大连续1的个数 II](https://leetcode.cn/problems/max-consecutive-ones-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones-ii.md) | 数组、动态规划、滑动窗口 | 中等 | +| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring.md) | 哈希表、字符串、滑动窗口 | 困难 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [1004. 最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [1658. 将 x 减到 0 的最小操作数](https://leetcode.cn/problems/minimum-operations-to-reduce-x-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero.md) | 数组、哈希表、二分查找、前缀和、滑动窗口 | 中等 | +| [0424. 替换后的最长重复字符](https://leetcode.cn/problems/longest-repeating-character-replacement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-repeating-character-replacement.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [1695. 删除子数组的最大得分](https://leetcode.cn/problems/maximum-erasure-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-erasure-value.md) | 数组、哈希表、滑动窗口 | 中等 | +| [1208. 尽可能使字符串相等](https://leetcode.cn/problems/get-equal-substrings-within-budget/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/get-equal-substrings-within-budget.md) | 字符串、二分查找、前缀和、滑动窗口 | 中等 | +| [1493. 删掉一个元素以后全为 1 的最长子数组](https://leetcode.cn/problems/longest-subarray-of-1s-after-deleting-one-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element.md) | 数组、动态规划、滑动窗口 | 中等 | +| [0727. 最小窗口子序列](https://leetcode.cn/problems/minimum-window-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-window-subsequence.md) | 字符串、动态规划、滑动窗口 | 困难 | +| [0159. 至多包含两个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-two-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0340. 至多包含 K 个不同字符的最长子串](https://leetcode.cn/problems/longest-substring-with-at-most-k-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0795. 区间子数组个数](https://leetcode.cn/problems/number-of-subarrays-with-bounded-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum.md) | 数组、双指针 | 中等 | +| [0992. K 个不同整数的子数组](https://leetcode.cn/problems/subarrays-with-k-different-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarrays-with-k-different-integers.md) | 数组、哈希表、计数、滑动窗口 | 困难 | +| [0713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/subarray-product-less-than-k.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0904. 水果成篮](https://leetcode.cn/problems/fruit-into-baskets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/fruit-into-baskets.md) | 数组、哈希表、滑动窗口 | 中等 | +| [1358. 包含所有三种字符的子字符串数目](https://leetcode.cn/problems/number-of-substrings-containing-all-three-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0467. 环绕字符串中唯一的子字符串](https://leetcode.cn/problems/unique-substrings-in-wraparound-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/unique-substrings-in-wraparound-string.md) | 字符串、动态规划 | 中等 | +| [1438. 绝对差不超过限制的最长连续子数组](https://leetcode.cn/problems/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit.md) | 队列、数组、有序集合、滑动窗口、单调队列、堆(优先队列) | 中等 | ## 第 2 章 链表 @@ -291,43 +291,43 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0707. 设计链表](https://leetcode.cn/problems/design-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-linked-list/) | 设计、链表 | 中等 | -| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list/) | 链表 | 简单 | -| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii/) | 链表、双指针 | 中等 | -| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | -| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | -| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group/) | 递归、链表 | 困难 | -| [0203. 移除链表元素](https://leetcode.cn/problems/remove-linked-list-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/remove-linked-list-elements/) | 递归、链表 | 简单 | -| [0328. 奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list/) | 链表 | 中等 | -| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list/) | 栈、递归、链表、双指针 | 简单 | -| [0430. 扁平化多级双向链表](https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list/) | 深度优先搜索、链表、双向链表 | 中等 | -| [0138. 随机链表的复制](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer/) | 哈希表、链表 | 中等 | -| [0061. 旋转链表](https://leetcode.cn/problems/rotate-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list/) | 链表、双指针 | 中等 | +| [0707. 设计链表](https://leetcode.cn/problems/design-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-linked-list.md) | 设计、链表 | 中等 | +| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list.md) | 链表 | 简单 | +| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii.md) | 链表、双指针 | 中等 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list.md) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii.md) | 链表 | 中等 | +| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group.md) | 递归、链表 | 困难 | +| [0203. 移除链表元素](https://leetcode.cn/problems/remove-linked-list-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/remove-linked-list-elements.md) | 递归、链表 | 简单 | +| [0328. 奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list.md) | 链表 | 中等 | +| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list.md) | 栈、递归、链表、双指针 | 简单 | +| [0430. 扁平化多级双向链表](https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list.md) | 深度优先搜索、链表、双向链表 | 中等 | +| [0138. 随机链表的复制](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer.md) | 哈希表、链表 | 中等 | +| [0061. 旋转链表](https://leetcode.cn/problems/rotate-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list.md) | 链表、双指针 | 中等 | ### 链表排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list/) | 链表、双指针、分治、排序、归并排序 | 中等 | -| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | -| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| [0147. 对链表进行插入排序](https://leetcode.cn/problems/insertion-sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/insertion-sort-list/) | 链表、排序 | 中等 | +| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md) | 链表、双指针、分治、排序、归并排序 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists.md) | 递归、链表 | 简单 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0147. 对链表进行插入排序](https://leetcode.cn/problems/insertion-sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/insertion-sort-list.md) | 链表、排序 | 中等 | ### 链表双指针题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle/) | 哈希表、链表、双指针 | 简单 | -| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii/) | 哈希表、链表、双指针 | 中等 | -| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists/) | 哈希表、链表、双指针 | 简单 | -| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list/) | 链表、双指针 | 中等 | -| [0876. 链表的中间结点](https://leetcode.cn/problems/middle-of-the-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/middle-of-the-linked-list/) | 链表、双指针 | 简单 | -| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | 链表、双指针 | 简单 | -| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list/) | 栈、递归、链表、双指针 | 中等 | -| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers/) | 递归、链表、数学 | 中等 | -| [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii/) | 栈、链表、数学 | 中等 | +| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle.md) | 哈希表、链表、双指针 | 简单 | +| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii.md) | 哈希表、链表、双指针 | 中等 | +| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists.md) | 哈希表、链表、双指针 | 简单 | +| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list.md) | 链表、双指针 | 中等 | +| [0876. 链表的中间结点](https://leetcode.cn/problems/middle-of-the-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/middle-of-the-linked-list.md) | 链表、双指针 | 简单 | +| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof.md) | 链表、双指针 | 简单 | +| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list.md) | 栈、递归、链表、双指针 | 中等 | +| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers.md) | 递归、链表、数学 | 中等 | +| [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii.md) | 栈、链表、数学 | 中等 | ## 第 3 章 堆栈、队列、哈希表 @@ -336,96 +336,96 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1047. 删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string/) | 栈、字符串 | 简单 | -| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack/) | 栈、设计 | 中等 | -| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses/) | 栈、字符串 | 简单 | -| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii/) | 栈、数学、字符串 | 中等 | -| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) | 栈、数组、单调栈 | 中等 | -| [0150. 逆波兰表达式求值](https://leetcode.cn/problems/evaluate-reverse-polish-notation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/evaluate-reverse-polish-notation/) | 栈、数组、数学 | 中等 | -| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks/) | 栈、设计、队列 | 简单 | -| [LCR 125. 图书整理 II](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | 栈、设计、队列 | 简单 | -| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string/) | 栈、递归、字符串 | 中等 | -| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | -| [0946. 验证栈序列](https://leetcode.cn/problems/validate-stack-sequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/validate-stack-sequences/) | 栈、数组、模拟 | 中等 | -| [LCR 123. 图书整理 I](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | 栈、递归、链表、双指针 | 简单 | -| [0071. 简化路径](https://leetcode.cn/problems/simplify-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/simplify-path/) | 栈、字符串 | 中等 | +| [1047. 删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string.md) | 栈、字符串 | 简单 | +| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack.md) | 栈、设计 | 中等 | +| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses.md) | 栈、字符串 | 简单 | +| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii.md) | 栈、数学、字符串 | 中等 | +| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures.md) | 栈、数组、单调栈 | 中等 | +| [0150. 逆波兰表达式求值](https://leetcode.cn/problems/evaluate-reverse-polish-notation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/evaluate-reverse-polish-notation.md) | 栈、数组、数学 | 中等 | +| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks.md) | 栈、设计、队列 | 简单 | +| [LCR 125. 图书整理 II](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof.md) | 栈、设计、队列 | 简单 | +| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string.md) | 栈、递归、字符串 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses.md) | 栈、字符串、动态规划 | 困难 | +| [0946. 验证栈序列](https://leetcode.cn/problems/validate-stack-sequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/validate-stack-sequences.md) | 栈、数组、模拟 | 中等 | +| [LCR 123. 图书整理 I](https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof.md) | 栈、递归、链表、双指针 | 简单 | +| [0071. 简化路径](https://leetcode.cn/problems/simplify-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/simplify-path.md) | 栈、字符串 | 中等 | ### 单调栈 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) | 栈、数组、单调栈 | 中等 | -| [0496. 下一个更大元素 I](https://leetcode.cn/problems/next-greater-element-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/next-greater-element-i/) | 栈、数组、哈希表、单调栈 | 简单 | -| [0503. 下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii/) | 栈、数组、单调栈 | 中等 | -| [0901. 股票价格跨度](https://leetcode.cn/problems/online-stock-span/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/online-stock-span/) | 栈、设计、数据流、单调栈 | 中等 | -| [0084. 柱状图中最大的矩形](https://leetcode.cn/problems/largest-rectangle-in-histogram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/largest-rectangle-in-histogram/) | 栈、数组、单调栈 | 困难 | -| [0316. 去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/remove-duplicate-letters/) | 栈、贪心、字符串、单调栈 | 中等 | -| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) | 栈、数组、双指针、动态规划、单调栈 | 困难 | -| [0085. 最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximal-rectangle/) | 栈、数组、动态规划、矩阵、单调栈 | 困难 | -| [0862. 和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k/) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures.md) | 栈、数组、单调栈 | 中等 | +| [0496. 下一个更大元素 I](https://leetcode.cn/problems/next-greater-element-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/next-greater-element-i.md) | 栈、数组、哈希表、单调栈 | 简单 | +| [0503. 下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii.md) | 栈、数组、单调栈 | 中等 | +| [0901. 股票价格跨度](https://leetcode.cn/problems/online-stock-span/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/online-stock-span.md) | 栈、设计、数据流、单调栈 | 中等 | +| [0084. 柱状图中最大的矩形](https://leetcode.cn/problems/largest-rectangle-in-histogram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/largest-rectangle-in-histogram.md) | 栈、数组、单调栈 | 困难 | +| [0316. 去除重复字母](https://leetcode.cn/problems/remove-duplicate-letters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/remove-duplicate-letters.md) | 栈、贪心、字符串、单调栈 | 中等 | +| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | +| [0085. 最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximal-rectangle.md) | 栈、数组、动态规划、矩阵、单调栈 | 困难 | +| [0862. 和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k.md) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | ### 队列基础题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0622. 设计循环队列](https://leetcode.cn/problems/design-circular-queue/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-circular-queue/) | 设计、队列、数组、链表 | 中等 | -| [0346. 数据流中的移动平均值](https://leetcode.cn/problems/moving-average-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/moving-average-from-data-stream/) | 设计、队列、数组、数据流 | 简单 | -| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues/) | 栈、设计、队列 | 简单 | +| [0622. 设计循环队列](https://leetcode.cn/problems/design-circular-queue/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-circular-queue.md) | 设计、队列、数组、链表 | 中等 | +| [0346. 数据流中的移动平均值](https://leetcode.cn/problems/moving-average-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/moving-average-from-data-stream.md) | 设计、队列、数组、数据流 | 简单 | +| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues.md) | 栈、设计、队列 | 简单 | ### 优先队列题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0703. 数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream/) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | -| [0347. 前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements/) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | -| [0451. 根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency/) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | -| [0973. 最接近原点的 K 个点](https://leetcode.cn/problems/k-closest-points-to-origin/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/k-closest-points-to-origin/) | 几何、数组、数学、分治、快速选择、排序、堆(优先队列) | 中等 | -| [1296. 划分数组为连续数字的集合](https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers/) | 贪心、数组、哈希表、排序 | 中等 | -| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | -| [0295. 数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream/) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | -| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| [0218. 天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem/) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | +| [0703. 数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream.md) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | +| [0347. 前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements.md) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | +| [0451. 根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency.md) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | +| [0973. 最接近原点的 K 个点](https://leetcode.cn/problems/k-closest-points-to-origin/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/k-closest-points-to-origin.md) | 几何、数组、数学、分治、快速选择、排序、堆(优先队列) | 中等 | +| [1296. 划分数组为连续数字的集合](https://leetcode.cn/problems/divide-array-in-sets-of-k-consecutive-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers.md) | 贪心、数组、哈希表、排序 | 中等 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0295. 数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream.md) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0218. 天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem.md) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | ### 哈希表题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0705. 设计哈希集合](https://leetcode.cn/problems/design-hashset/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashset/) | 设计、数组、哈希表、链表、哈希函数 | 简单 | -| [0706. 设计哈希映射](https://leetcode.cn/problems/design-hashmap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashmap/) | 设计、数组、哈希表、链表、哈希函数 | 简单 | -| [0217. 存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate/) | 数组、哈希表、排序 | 简单 | -| [0219. 存在重复元素 II](https://leetcode.cn/problems/contains-duplicate-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-ii/) | 数组、哈希表、滑动窗口 | 简单 | -| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii/) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | -| [1941. 检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences/) | 哈希表、字符串、计数 | 简单 | -| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | -| [0383. 赎金信](https://leetcode.cn/problems/ransom-note/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/ransom-note/) | 哈希表、字符串、计数 | 简单 | -| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | -| [0036. 有效的数独](https://leetcode.cn/problems/valid-sudoku/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-sudoku/) | 数组、哈希表、矩阵 | 中等 | -| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | -| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | -| [0018. 四数之和](https://leetcode.cn/problems/4sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum/) | 数组、双指针、排序 | 中等 | -| [0454. 四数相加 II](https://leetcode.cn/problems/4sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/4sum-ii/) | 数组、哈希表 | 中等 | -| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive/) | 数组、哈希表 | 困难 | -| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | -| [0202. 快乐数](https://leetcode.cn/problems/happy-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/happy-number/) | 哈希表、数学、双指针 | 简单 | -| [0242. 有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram/) | 哈希表、字符串、排序 | 简单 | -| [0205. 同构字符串](https://leetcode.cn/problems/isomorphic-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/isomorphic-strings/) | 哈希表、字符串 | 简单 | -| [0442. 数组中重复的数据](https://leetcode.cn/problems/find-all-duplicates-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-duplicates-in-an-array/) | 数组、哈希表 | 中等 | -| [LCR 186. 文物朝代判断](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof/) | 数组、排序 | 简单 | -| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | -| [LCR 120. 寻找文件副本](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | 数组、哈希表、排序 | 简单 | -| [0451. 根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency/) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | -| [0049. 字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams/) | 数组、哈希表、字符串、排序 | 中等 | -| [0599. 两个列表的最小索引总和](https://leetcode.cn/problems/minimum-index-sum-of-two-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-index-sum-of-two-lists/) | 数组、哈希表、字符串 | 简单 | -| [0387. 字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/first-unique-character-in-a-string/) | 队列、哈希表、字符串、计数 | 简单 | -| [0447. 回旋镖的数量](https://leetcode.cn/problems/number-of-boomerangs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/number-of-boomerangs/) | 数组、哈希表、数学 | 中等 | -| [0149. 直线上最多的点数](https://leetcode.cn/problems/max-points-on-a-line/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/max-points-on-a-line/) | 几何、数组、哈希表、数学 | 困难 | -| [0359. 日志速率限制器](https://leetcode.cn/problems/logger-rate-limiter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/logger-rate-limiter/) | 设计、哈希表、数据流 | 简单 | -| [0811. 子域名访问计数](https://leetcode.cn/problems/subdomain-visit-count/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/subdomain-visit-count/) | 数组、哈希表、字符串、计数 | 中等 | +| [0705. 设计哈希集合](https://leetcode.cn/problems/design-hashset/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashset.md) | 设计、数组、哈希表、链表、哈希函数 | 简单 | +| [0706. 设计哈希映射](https://leetcode.cn/problems/design-hashmap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashmap.md) | 设计、数组、哈希表、链表、哈希函数 | 简单 | +| [0217. 存在重复元素](https://leetcode.cn/problems/contains-duplicate/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate.md) | 数组、哈希表、排序 | 简单 | +| [0219. 存在重复元素 II](https://leetcode.cn/problems/contains-duplicate-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-ii.md) | 数组、哈希表、滑动窗口 | 简单 | +| [0220. 存在重复元素 III](https://leetcode.cn/problems/contains-duplicate-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii.md) | 数组、桶排序、有序集合、排序、滑动窗口 | 困难 | +| [1941. 检查是否所有字符出现次数相同](https://leetcode.cn/problems/check-if-all-characters-have-equal-number-of-occurrences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences.md) | 哈希表、字符串、计数 | 简单 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) | 位运算、数组 | 简单 | +| [0383. 赎金信](https://leetcode.cn/problems/ransom-note/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/ransom-note.md) | 哈希表、字符串、计数 | 简单 | +| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0350. 两个数组的交集 II](https://leetcode.cn/problems/intersection-of-two-arrays-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0036. 有效的数独](https://leetcode.cn/problems/valid-sudoku/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-sudoku.md) | 数组、哈希表、矩阵 | 中等 | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum.md) | 数组、哈希表 | 简单 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum.md) | 数组、双指针、排序 | 中等 | +| [0018. 四数之和](https://leetcode.cn/problems/4sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum.md) | 数组、双指针、排序 | 中等 | +| [0454. 四数相加 II](https://leetcode.cn/problems/4sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/4sum-ii.md) | 数组、哈希表 | 中等 | +| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive.md) | 数组、哈希表 | 困难 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence.md) | 并查集、数组、哈希表 | 中等 | +| [0202. 快乐数](https://leetcode.cn/problems/happy-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/happy-number.md) | 哈希表、数学、双指针 | 简单 | +| [0242. 有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram.md) | 哈希表、字符串、排序 | 简单 | +| [0205. 同构字符串](https://leetcode.cn/problems/isomorphic-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/isomorphic-strings.md) | 哈希表、字符串 | 简单 | +| [0442. 数组中重复的数据](https://leetcode.cn/problems/find-all-duplicates-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-duplicates-in-an-array.md) | 数组、哈希表 | 中等 | +| [LCR 186. 文物朝代判断](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof.md) | 数组、排序 | 简单 | +| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | +| [LCR 120. 寻找文件副本](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof.md) | 数组、哈希表、排序 | 简单 | +| [0451. 根据字符出现频率排序](https://leetcode.cn/problems/sort-characters-by-frequency/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency.md) | 哈希表、字符串、桶排序、计数、排序、堆(优先队列) | 中等 | +| [0049. 字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams.md) | 数组、哈希表、字符串、排序 | 中等 | +| [0599. 两个列表的最小索引总和](https://leetcode.cn/problems/minimum-index-sum-of-two-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-index-sum-of-two-lists.md) | 数组、哈希表、字符串 | 简单 | +| [0387. 字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/first-unique-character-in-a-string.md) | 队列、哈希表、字符串、计数 | 简单 | +| [0447. 回旋镖的数量](https://leetcode.cn/problems/number-of-boomerangs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/number-of-boomerangs.md) | 数组、哈希表、数学 | 中等 | +| [0149. 直线上最多的点数](https://leetcode.cn/problems/max-points-on-a-line/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/max-points-on-a-line.md) | 几何、数组、哈希表、数学 | 困难 | +| [0359. 日志速率限制器](https://leetcode.cn/problems/logger-rate-limiter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/logger-rate-limiter.md) | 设计、哈希表、数据流 | 简单 | +| [0811. 子域名访问计数](https://leetcode.cn/problems/subdomain-visit-count/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/subdomain-visit-count.md) | 数组、哈希表、字符串、计数 | 中等 | ## 第 4 章 字符串 @@ -434,47 +434,47 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) | 双指针、字符串 | 简单 | -| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) | 双指针、字符串、动态规划 | 中等 | -| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) | 双指针、字符串 | 简单 | -| [0557. 反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii/) | 双指针、字符串 | 简单 | -| [0049. 字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams/) | 数组、哈希表、字符串、排序 | 中等 | -| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | -| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string/) | 双指针、字符串 | 中等 | -| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings/) | 数学、字符串、模拟 | 中等 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | +| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome.md) | 双指针、字符串 | 简单 | +| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring.md) | 双指针、字符串、动态规划 | 中等 | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string.md) | 双指针、字符串 | 简单 | +| [0557. 反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii.md) | 双指针、字符串 | 简单 | +| [0049. 字母异位词分组](https://leetcode.cn/problems/group-anagrams/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams.md) | 数组、哈希表、字符串、排序 | 中等 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings.md) | 数学、字符串、模拟 | 简单 | +| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string.md) | 双指针、字符串 | 中等 | +| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings.md) | 数学、字符串、模拟 | 中等 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | ### 单模式串匹配题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0028. 找出字符串中第一个匹配项的下标](https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string/) | 双指针、字符串、字符串匹配 | 简单 | -| [0459. 重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern/) | 字符串、字符串匹配 | 简单 | -| [0686. 重复叠加字符串匹配](https://leetcode.cn/problems/repeated-string-match/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match/) | 字符串、字符串匹配 | 中等 | -| [1668. 最大重复子字符串](https://leetcode.cn/problems/maximum-repeating-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-repeating-substring/) | 字符串、动态规划、字符串匹配 | 简单 | -| [0796. 旋转字符串](https://leetcode.cn/problems/rotate-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string/) | 字符串、字符串匹配 | 简单 | -| [1408. 数组中的字符串匹配](https://leetcode.cn/problems/string-matching-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array/) | 数组、字符串、字符串匹配 | 简单 | -| [2156. 查找给定哈希值的子串](https://leetcode.cn/problems/find-substring-with-given-hash-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value/) | 字符串、滑动窗口、哈希函数、滚动哈希 | 困难 | +| [0028. 找出字符串中第一个匹配项的下标](https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md) | 双指针、字符串、字符串匹配 | 简单 | +| [0459. 重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern.md) | 字符串、字符串匹配 | 简单 | +| [0686. 重复叠加字符串匹配](https://leetcode.cn/problems/repeated-string-match/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match.md) | 字符串、字符串匹配 | 中等 | +| [1668. 最大重复子字符串](https://leetcode.cn/problems/maximum-repeating-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-repeating-substring.md) | 字符串、动态规划、字符串匹配 | 简单 | +| [0796. 旋转字符串](https://leetcode.cn/problems/rotate-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string.md) | 字符串、字符串匹配 | 简单 | +| [1408. 数组中的字符串匹配](https://leetcode.cn/problems/string-matching-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array.md) | 数组、字符串、字符串匹配 | 简单 | +| [2156. 查找给定哈希值的子串](https://leetcode.cn/problems/find-substring-with-given-hash-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value.md) | 字符串、滑动窗口、哈希函数、滚动哈希 | 困难 | ### 字典树题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0208. 实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree/) | 设计、字典树、哈希表、字符串 | 中等 | -| [0677. 键值映射](https://leetcode.cn/problems/map-sum-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/map-sum-pairs/) | 设计、字典树、哈希表、字符串 | 中等 | -| [0648. 单词替换](https://leetcode.cn/problems/replace-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/replace-words/) | 字典树、数组、哈希表、字符串 | 中等 | -| [0642. 设计搜索自动补全系统](https://leetcode.cn/problems/design-search-autocomplete-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-search-autocomplete-system/) | 深度优先搜索、设计、字典树、字符串、数据流、排序、堆(优先队列) | 困难 | -| [0211. 添加与搜索单词 - 数据结构设计](https://leetcode.cn/problems/design-add-and-search-words-data-structure/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/design-add-and-search-words-data-structure/) | 深度优先搜索、设计、字典树、字符串 | 中等 | -| [0421. 数组中两个数的最大异或值](https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array/) | 位运算、字典树、数组、哈希表 | 中等 | -| [0212. 单词搜索 II](https://leetcode.cn/problems/word-search-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-search-ii/) | 字典树、数组、字符串、回溯、矩阵 | 困难 | -| [0425. 单词方块](https://leetcode.cn/problems/word-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/word-squares/) | 字典树、数组、字符串、回溯 | 困难 | -| [0336. 回文对](https://leetcode.cn/problems/palindrome-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/palindrome-pairs/) | 字典树、数组、哈希表、字符串 | 困难 | -| [1023. 驼峰式匹配](https://leetcode.cn/problems/camelcase-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/camelcase-matching/) | 字典树、数组、双指针、字符串、字符串匹配 | 中等 | -| [0676. 实现一个魔法字典](https://leetcode.cn/problems/implement-magic-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/implement-magic-dictionary/) | 深度优先搜索、设计、字典树、哈希表、字符串 | 中等 | -| [0440. 字典序的第K小数字](https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/k-th-smallest-in-lexicographical-order/) | 字典树 | 困难 | +| [0208. 实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree.md) | 设计、字典树、哈希表、字符串 | 中等 | +| [0677. 键值映射](https://leetcode.cn/problems/map-sum-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/map-sum-pairs.md) | 设计、字典树、哈希表、字符串 | 中等 | +| [0648. 单词替换](https://leetcode.cn/problems/replace-words/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/replace-words.md) | 字典树、数组、哈希表、字符串 | 中等 | +| [0642. 设计搜索自动补全系统](https://leetcode.cn/problems/design-search-autocomplete-system/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-search-autocomplete-system.md) | 深度优先搜索、设计、字典树、字符串、数据流、排序、堆(优先队列) | 困难 | +| [0211. 添加与搜索单词 - 数据结构设计](https://leetcode.cn/problems/design-add-and-search-words-data-structure/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/design-add-and-search-words-data-structure.md) | 深度优先搜索、设计、字典树、字符串 | 中等 | +| [0421. 数组中两个数的最大异或值](https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array.md) | 位运算、字典树、数组、哈希表 | 中等 | +| [0212. 单词搜索 II](https://leetcode.cn/problems/word-search-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-search-ii.md) | 字典树、数组、字符串、回溯、矩阵 | 困难 | +| [0425. 单词方块](https://leetcode.cn/problems/word-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/word-squares.md) | 字典树、数组、字符串、回溯 | 困难 | +| [0336. 回文对](https://leetcode.cn/problems/palindrome-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/palindrome-pairs.md) | 字典树、数组、哈希表、字符串 | 困难 | +| [1023. 驼峰式匹配](https://leetcode.cn/problems/camelcase-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/camelcase-matching.md) | 字典树、数组、双指针、字符串、字符串匹配 | 中等 | +| [0676. 实现一个魔法字典](https://leetcode.cn/problems/implement-magic-dictionary/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/implement-magic-dictionary.md) | 深度优先搜索、设计、字典树、哈希表、字符串 | 中等 | +| [0440. 字典序的第K小数字](https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/k-th-smallest-in-lexicographical-order.md) | 字典树 | 困难 | ## 第 5 章 树 @@ -483,55 +483,55 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | -| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | -| [0107. 二叉树的层序遍历 II](https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal-ii/) | 树、广度优先搜索、二叉树 | 中等 | -| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii/) | 树、深度优先搜索、回溯、二叉树 | 中等 | -| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree/) | 树、深度优先搜索、二叉树 | 中等 | -| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | -| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0116. 填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node/) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | -| [0117. 填充每个节点的下一个右侧节点指针 II](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii/) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | -| [0297. 二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree/) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | -| [0114. 二叉树展开为链表](https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/flatten-binary-tree-to-linked-list/) | 栈、树、深度优先搜索、链表、二叉树 | 中等 | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0107. 二叉树的层序遍历 II](https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal-ii.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii.md) | 树、深度优先搜索、回溯、二叉树 | 中等 | +| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree.md) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0116. 填充每个节点的下一个右侧节点指针](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node.md) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | +| [0117. 填充每个节点的下一个右侧节点指针 II](https://leetcode.cn/problems/populating-next-right-pointers-in-each-node-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii.md) | 树、深度优先搜索、广度优先搜索、链表、二叉树 | 中等 | +| [0297. 二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree.md) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | +| [0114. 二叉树展开为链表](https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/flatten-binary-tree-to-linked-list.md) | 栈、树、深度优先搜索、链表、二叉树 | 中等 | ### 二叉树的还原题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | -| [0106. 从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | -| [0889. 根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal.md) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0106. 从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal.md) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0889. 根据前序和后序遍历构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal.md) | 树、数组、哈希表、分治、二叉树 | 中等 | ### 二叉搜索树题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [0173. 二叉搜索树迭代器](https://leetcode.cn/problems/binary-search-tree-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-search-tree-iterator/) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | -| [0700. 二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-binary-search-tree/) | 树、二叉搜索树、二叉树 | 简单 | -| [0701. 二叉搜索树中的插入操作](https://leetcode.cn/problems/insert-into-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-binary-search-tree/) | 树、二叉搜索树、二叉树 | 中等 | -| [0450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst/) | 树、二叉搜索树、二叉树 | 中等 | -| [0703. 数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream/) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | -| [LCR 174. 寻找二叉搜索树中的目标节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| [0230. 二叉搜索树中第 K 小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-smallest-element-in-a-bst/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [0235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [0426. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list/) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | -| [0108. 将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree/) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | -| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | +| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0173. 二叉搜索树迭代器](https://leetcode.cn/problems/binary-search-tree-iterator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-search-tree-iterator.md) | 栈、树、设计、二叉搜索树、二叉树、迭代器 | 中等 | +| [0700. 二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-binary-search-tree.md) | 树、二叉搜索树、二叉树 | 简单 | +| [0701. 二叉搜索树中的插入操作](https://leetcode.cn/problems/insert-into-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-binary-search-tree.md) | 树、二叉搜索树、二叉树 | 中等 | +| [0450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst.md) | 树、二叉搜索树、二叉树 | 中等 | +| [0703. 数据流中的第 K 大元素](https://leetcode.cn/problems/kth-largest-element-in-a-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream.md) | 树、设计、二叉搜索树、二叉树、数据流、堆(优先队列) | 简单 | +| [LCR 174. 寻找二叉搜索树中的目标节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0230. 二叉搜索树中第 K 小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-smallest-element-in-a-bst.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0426. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list.md) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | +| [0108. 将有序数组转换为二叉搜索树](https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree.md) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | +| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree.md) | 树、深度优先搜索、二叉树 | 简单 | ### 线段树题目 @@ -540,72 +540,72 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0303. 区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable/) | 设计、数组、前缀和 | 简单 | -| [0307. 区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable/) | 设计、树状数组、线段树、数组 | 中等 | -| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes/) | 数组、二分查找、动态规划、排序 | 困难 | +| [0303. 区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable.md) | 设计、数组、前缀和 | 简单 | +| [0307. 区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable.md) | 设计、树状数组、线段树、数组 | 中等 | +| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes.md) | 数组、二分查找、动态规划、排序 | 困难 | #### 区间更新题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0370. 区间加法](https://leetcode.cn/problems/range-addition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-addition/) | 数组、前缀和 | 中等 | -| [1109. 航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings/) | 数组、前缀和 | 中等 | -| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time/) | 数组 | 简单 | -| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) | 树状数组、线段树、数组、动态规划 | 中等 | -| [1310. 子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray/) | 位运算、数组、前缀和 | 中等 | -| [1851. 包含每个查询的最小区间](https://leetcode.cn/problems/minimum-interval-to-include-each-query/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-interval-to-include-each-query/) | 数组、二分查找、排序、扫描线、堆(优先队列) | 困难 | +| [0370. 区间加法](https://leetcode.cn/problems/range-addition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-addition.md) | 数组、前缀和 | 中等 | +| [1109. 航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings.md) | 数组、前缀和 | 中等 | +| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time.md) | 数组 | 简单 | +| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence.md) | 树状数组、线段树、数组、动态规划 | 中等 | +| [1310. 子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray.md) | 位运算、数组、前缀和 | 中等 | +| [1851. 包含每个查询的最小区间](https://leetcode.cn/problems/minimum-interval-to-include-each-query/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-interval-to-include-each-query.md) | 数组、二分查找、排序、扫描线、堆(优先队列) | 困难 | #### 区间合并题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0729. 我的日程安排表 I](https://leetcode.cn/problems/my-calendar-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-i/) | 设计、线段树、数组、二分查找、有序集合 | 中等 | -| [0731. 我的日程安排表 II](https://leetcode.cn/problems/my-calendar-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-ii/) | 设计、线段树、数组、二分查找、有序集合、前缀和 | 中等 | -| [0732. 我的日程安排表 III](https://leetcode.cn/problems/my-calendar-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-iii/) | 设计、线段树、二分查找、有序集合、前缀和 | 困难 | +| [0729. 我的日程安排表 I](https://leetcode.cn/problems/my-calendar-i/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-i.md) | 设计、线段树、数组、二分查找、有序集合 | 中等 | +| [0731. 我的日程安排表 II](https://leetcode.cn/problems/my-calendar-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-ii.md) | 设计、线段树、数组、二分查找、有序集合、前缀和 | 中等 | +| [0732. 我的日程安排表 III](https://leetcode.cn/problems/my-calendar-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-iii.md) | 设计、线段树、二分查找、有序集合、前缀和 | 困难 | #### 扫描线问题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0218. 天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem/) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | -| [0391. 完美矩形](https://leetcode.cn/problems/perfect-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/perfect-rectangle/) | 数组、扫描线 | 困难 | -| [0850. 矩形面积 II](https://leetcode.cn/problems/rectangle-area-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-area-ii/) | 线段树、数组、有序集合、扫描线 | 困难 | +| [0218. 天际线问题](https://leetcode.cn/problems/the-skyline-problem/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem.md) | 树状数组、线段树、数组、分治、有序集合、扫描线、堆(优先队列) | 困难 | +| [0391. 完美矩形](https://leetcode.cn/problems/perfect-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/perfect-rectangle.md) | 数组、扫描线 | 困难 | +| [0850. 矩形面积 II](https://leetcode.cn/problems/rectangle-area-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-area-ii.md) | 线段树、数组、有序集合、扫描线 | 困难 | ### 树状数组题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0303. 区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable/) | 设计、数组、前缀和 | 简单 | -| [0307. 区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable/) | 设计、树状数组、线段树、数组 | 中等 | -| [0315. 计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | -| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time/) | 数组 | 简单 | -| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes/) | 数组、二分查找、动态规划、排序 | 困难 | -| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) | 树状数组、线段树、数组、动态规划 | 中等 | -| [1310. 子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray/) | 位运算、数组、前缀和 | 中等 | -| [1893. 检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered/) | 数组、哈希表、前缀和 | 简单 | +| [0303. 区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable.md) | 设计、数组、前缀和 | 简单 | +| [0307. 区域和检索 - 数组可修改](https://leetcode.cn/problems/range-sum-query-mutable/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable.md) | 设计、树状数组、线段树、数组 | 中等 | +| [0315. 计算右侧小于当前元素的个数](https://leetcode.cn/problems/count-of-smaller-numbers-after-self/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | +| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time.md) | 数组 | 简单 | +| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes.md) | 数组、二分查找、动态规划、排序 | 困难 | +| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence.md) | 树状数组、线段树、数组、动态规划 | 中等 | +| [1310. 子数组异或查询](https://leetcode.cn/problems/xor-queries-of-a-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray.md) | 位运算、数组、前缀和 | 中等 | +| [1893. 检查是否区域内所有整数都被覆盖](https://leetcode.cn/problems/check-if-all-the-integers-in-a-range-are-covered/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered.md) | 数组、哈希表、前缀和 | 简单 | ### 并查集题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0990. 等式方程的可满足性](https://leetcode.cn/problems/satisfiability-of-equality-equations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/satisfiability-of-equality-equations/) | 并查集、图、数组、字符串 | 中等 | -| [0547. 省份数量](https://leetcode.cn/problems/number-of-provinces/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/number-of-provinces/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0684. 冗余连接](https://leetcode.cn/problems/redundant-connection/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [1319. 连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-operations-to-make-network-connected/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0765. 情侣牵手](https://leetcode.cn/problems/couples-holding-hands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/couples-holding-hands/) | 贪心、深度优先搜索、广度优先搜索、并查集、图 | 困难 | -| [0399. 除法求值](https://leetcode.cn/problems/evaluate-division/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/evaluate-division/) | 深度优先搜索、广度优先搜索、并查集、图、数组、字符串、最短路 | 中等 | -| [0959. 由斜杠划分区域](https://leetcode.cn/problems/regions-cut-by-slashes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/regions-cut-by-slashes/) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、矩阵 | 中等 | -| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | -| [0778. 水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | -| [1202. 交换字符串中的元素](https://leetcode.cn/problems/smallest-string-with-swaps/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/smallest-string-with-swaps/) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、字符串、排序 | 中等 | -| [0947. 移除最多的同行或同列石头](https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column/) | 深度优先搜索、并查集、图、哈希表 | 中等 | -| [0803. 打砖块](https://leetcode.cn/problems/bricks-falling-when-hit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bricks-falling-when-hit/) | 并查集、数组、矩阵 | 困难 | -| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | +| [0990. 等式方程的可满足性](https://leetcode.cn/problems/satisfiability-of-equality-equations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/satisfiability-of-equality-equations.md) | 并查集、图、数组、字符串 | 中等 | +| [0547. 省份数量](https://leetcode.cn/problems/number-of-provinces/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/number-of-provinces.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0684. 冗余连接](https://leetcode.cn/problems/redundant-connection/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [1319. 连通网络的操作次数](https://leetcode.cn/problems/number-of-operations-to-make-network-connected/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-operations-to-make-network-connected.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0765. 情侣牵手](https://leetcode.cn/problems/couples-holding-hands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/couples-holding-hands.md) | 贪心、深度优先搜索、广度优先搜索、并查集、图 | 困难 | +| [0399. 除法求值](https://leetcode.cn/problems/evaluate-division/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/evaluate-division.md) | 深度优先搜索、广度优先搜索、并查集、图、数组、字符串、最短路 | 中等 | +| [0959. 由斜杠划分区域](https://leetcode.cn/problems/regions-cut-by-slashes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/regions-cut-by-slashes.md) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、矩阵 | 中等 | +| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | +| [0778. 水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | +| [1202. 交换字符串中的元素](https://leetcode.cn/problems/smallest-string-with-swaps/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/smallest-string-with-swaps.md) | 深度优先搜索、广度优先搜索、并查集、数组、哈希表、字符串、排序 | 中等 | +| [0947. 移除最多的同行或同列石头](https://leetcode.cn/problems/most-stones-removed-with-same-row-or-column/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column.md) | 深度优先搜索、并查集、图、哈希表 | 中等 | +| [0803. 打砖块](https://leetcode.cn/problems/bricks-falling-when-hit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bricks-falling-when-hit.md) | 并查集、数组、矩阵 | 困难 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence.md) | 并查集、数组、哈希表 | 中等 | ## 第 6 章 图论 @@ -614,134 +614,134 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0797. 所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target/) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | -| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0133. 克隆图](https://leetcode.cn/problems/clone-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph/) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | -| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum/) | 数组、动态规划、回溯 | 中等 | -| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0589. N 叉树的前序遍历](https://leetcode.cn/problems/n-ary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-preorder-traversal/) | 栈、树、深度优先搜索 | 简单 | -| [0590. N 叉树的后序遍历](https://leetcode.cn/problems/n-ary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-postorder-traversal/) | 栈、树、深度优先搜索 | 简单 | -| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | -| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | -| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0841. 钥匙和房间](https://leetcode.cn/problems/keys-and-rooms/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/keys-and-rooms/) | 深度优先搜索、广度优先搜索、图 | 中等 | -| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers/) | 树、深度优先搜索、二叉树 | 中等 | -| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0684. 冗余连接](https://leetcode.cn/problems/redundant-connection/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0802. 找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [0785. 判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0886. 可能的二分法](https://leetcode.cn/problems/possible-bipartition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/possible-bipartition/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [0130. 被围绕的区域](https://leetcode.cn/problems/surrounded-regions/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/surrounded-regions/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0417. 太平洋大西洋水流问题](https://leetcode.cn/problems/pacific-atlantic-water-flow/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/pacific-atlantic-water-flow/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | -| [1020. 飞地的数量](https://leetcode.cn/problems/number-of-enclaves/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/number-of-enclaves/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [1254. 统计封闭岛屿的数目](https://leetcode.cn/problems/number-of-closed-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/number-of-closed-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [1034. 边界着色](https://leetcode.cn/problems/coloring-a-border/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/coloring-a-border/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | -| [LCR 130. 衣橱整理](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | -| [0529. 扫雷游戏](https://leetcode.cn/problems/minesweeper/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minesweeper/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | +| [0797. 所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target.md) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0133. 克隆图](https://leetcode.cn/problems/clone-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph.md) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | +| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum.md) | 数组、动态规划、回溯 | 中等 | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0589. N 叉树的前序遍历](https://leetcode.cn/problems/n-ary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-preorder-traversal.md) | 栈、树、深度优先搜索 | 简单 | +| [0590. N 叉树的后序遍历](https://leetcode.cn/problems/n-ary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-postorder-traversal.md) | 栈、树、深度优先搜索 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree.md) | 树、深度优先搜索、二叉树 | 简单 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree.md) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0841. 钥匙和房间](https://leetcode.cn/problems/keys-and-rooms/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/keys-and-rooms.md) | 深度优先搜索、广度优先搜索、图 | 中等 | +| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0684. 冗余连接](https://leetcode.cn/problems/redundant-connection/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0802. 找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0785. 判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0886. 可能的二分法](https://leetcode.cn/problems/possible-bipartition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/possible-bipartition.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0130. 被围绕的区域](https://leetcode.cn/problems/surrounded-regions/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/surrounded-regions.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0417. 太平洋大西洋水流问题](https://leetcode.cn/problems/pacific-atlantic-water-flow/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/pacific-atlantic-water-flow.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | +| [1020. 飞地的数量](https://leetcode.cn/problems/number-of-enclaves/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/number-of-enclaves.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [1254. 统计封闭岛屿的数目](https://leetcode.cn/problems/number-of-closed-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/number-of-closed-islands.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [1034. 边界着色](https://leetcode.cn/problems/coloring-a-border/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/coloring-a-border.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | +| [LCR 130. 衣橱整理](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof.md) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | +| [0529. 扫雷游戏](https://leetcode.cn/problems/minesweeper/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minesweeper.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | ### 图的广度优先搜索题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0797. 所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target/) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | -| [0286. 墙与门](https://leetcode.cn/problems/walls-and-gates/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/walls-and-gates/) | 广度优先搜索、数组、矩阵 | 中等 | -| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0752. 打开转盘锁](https://leetcode.cn/problems/open-the-lock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/open-the-lock/) | 广度优先搜索、数组、哈希表、字符串 | 中等 | -| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares/) | 广度优先搜索、数学、动态规划 | 中等 | -| [0133. 克隆图](https://leetcode.cn/problems/clone-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph/) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | -| [0733. 图像渲染](https://leetcode.cn/problems/flood-fill/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/flood-fill/) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | -| [0542. 01 矩阵](https://leetcode.cn/problems/01-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/01-matrix/) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | -| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | -| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | -| [LCR 130. 衣橱整理](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | -| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | -| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [LCR 151. 彩灯装饰记录 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | 树、广度优先搜索、二叉树 | 中等 | +| [0797. 所有可能的路径](https://leetcode.cn/problems/all-paths-from-source-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target.md) | 深度优先搜索、广度优先搜索、图、回溯 | 中等 | +| [0286. 墙与门](https://leetcode.cn/problems/walls-and-gates/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/walls-and-gates.md) | 广度优先搜索、数组、矩阵 | 中等 | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0752. 打开转盘锁](https://leetcode.cn/problems/open-the-lock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/open-the-lock.md) | 广度优先搜索、数组、哈希表、字符串 | 中等 | +| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares.md) | 广度优先搜索、数学、动态规划 | 中等 | +| [0133. 克隆图](https://leetcode.cn/problems/clone-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph.md) | 深度优先搜索、广度优先搜索、图、哈希表 | 中等 | +| [0733. 图像渲染](https://leetcode.cn/problems/flood-fill/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/flood-fill.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | +| [0542. 01 矩阵](https://leetcode.cn/problems/01-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/01-matrix.md) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change.md) | 广度优先搜索、数组、动态规划 | 中等 | +| [0323. 无向图中连通分量的数目](https://leetcode.cn/problems/number-of-connected-components-in-an-undirected-graph/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [LCR 130. 衣橱整理](https://leetcode.cn/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof.md) | 深度优先搜索、广度优先搜索、动态规划 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree.md) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 151. 彩灯装饰记录 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof.md) | 树、广度优先搜索、二叉树 | 中等 | ### 图的拓扑排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0207. 课程表](https://leetcode.cn/problems/course-schedule/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [0210. 课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [1136. 并行课程](https://leetcode.cn/problems/parallel-courses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/parallel-courses/) | 图、拓扑排序 | 中等 | -| [2050. 并行课程 III](https://leetcode.cn/problems/parallel-courses-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/parallel-courses-iii/) | 图、拓扑排序、数组、动态规划 | 困难 | -| [0802. 找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [0851. 喧闹和富有](https://leetcode.cn/problems/loud-and-rich/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/loud-and-rich/) | 深度优先搜索、图、拓扑排序、数组 | 中等 | +| [0207. 课程表](https://leetcode.cn/problems/course-schedule/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0210. 课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [1136. 并行课程](https://leetcode.cn/problems/parallel-courses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/parallel-courses.md) | 图、拓扑排序 | 中等 | +| [2050. 并行课程 III](https://leetcode.cn/problems/parallel-courses-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/parallel-courses-iii.md) | 图、拓扑排序、数组、动态规划 | 困难 | +| [0802. 找到最终的安全状态](https://leetcode.cn/problems/find-eventual-safe-states/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0851. 喧闹和富有](https://leetcode.cn/problems/loud-and-rich/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/loud-and-rich.md) | 深度优先搜索、图、拓扑排序、数组 | 中等 | ### 图的最小生成树题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1584. 连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/min-cost-to-connect-all-points/) | 并查集、图、数组、最小生成树 | 中等 | -| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | -| [0778. 水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | +| [1584. 连接所有点的最小费用](https://leetcode.cn/problems/min-cost-to-connect-all-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/min-cost-to-connect-all-points.md) | 并查集、图、数组、最小生成树 | 中等 | +| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | +| [0778. 水位上升的泳池中游泳](https://leetcode.cn/problems/swim-in-rising-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 困难 | ### 单源最短路径题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0407. 接雨水 II](https://leetcode.cn/problems/trapping-rain-water-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/trapping-rain-water-ii/) | 广度优先搜索、数组、矩阵、堆(优先队列) | 困难 | -| [0743. 网络延迟时间](https://leetcode.cn/problems/network-delay-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/network-delay-time/) | 深度优先搜索、广度优先搜索、图、最短路、堆(优先队列) | 中等 | -| [0787. K 站中转内最便宜的航班](https://leetcode.cn/problems/cheapest-flights-within-k-stops/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/cheapest-flights-within-k-stops/) | 深度优先搜索、广度优先搜索、图、动态规划、最短路、堆(优先队列) | 中等 | -| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort/) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | -| [1786. 从第一个节点出发到最后一个节点的受限路径数](https://leetcode.cn/problems/number-of-restricted-paths-from-first-to-last-node/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/number-of-restricted-paths-from-first-to-last-node/) | 图、拓扑排序、动态规划、最短路、堆(优先队列) | 中等 | +| [0407. 接雨水 II](https://leetcode.cn/problems/trapping-rain-water-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/trapping-rain-water-ii.md) | 广度优先搜索、数组、矩阵、堆(优先队列) | 困难 | +| [0743. 网络延迟时间](https://leetcode.cn/problems/network-delay-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/network-delay-time.md) | 深度优先搜索、广度优先搜索、图、最短路、堆(优先队列) | 中等 | +| [0787. K 站中转内最便宜的航班](https://leetcode.cn/problems/cheapest-flights-within-k-stops/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/cheapest-flights-within-k-stops.md) | 深度优先搜索、广度优先搜索、图、动态规划、最短路、堆(优先队列) | 中等 | +| [1631. 最小体力消耗路径](https://leetcode.cn/problems/path-with-minimum-effort/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort.md) | 深度优先搜索、广度优先搜索、并查集、数组、二分查找、矩阵、堆(优先队列) | 中等 | +| [1786. 从第一个节点出发到最后一个节点的受限路径数](https://leetcode.cn/problems/number-of-restricted-paths-from-first-to-last-node/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/number-of-restricted-paths-from-first-to-last-node.md) | 图、拓扑排序、动态规划、最短路、堆(优先队列) | 中等 | ### 多源最短路径题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0815. 公交路线](https://leetcode.cn/problems/bus-routes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bus-routes/) | 广度优先搜索、数组、哈希表 | 困难 | -| [1162. 地图分析](https://leetcode.cn/problems/as-far-from-land-as-possible/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/as-far-from-land-as-possible/) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | +| [0815. 公交路线](https://leetcode.cn/problems/bus-routes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bus-routes.md) | 广度优先搜索、数组、哈希表 | 困难 | +| [1162. 地图分析](https://leetcode.cn/problems/as-far-from-land-as-possible/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/as-far-from-land-as-possible.md) | 广度优先搜索、数组、动态规划、矩阵 | 中等 | ### 次短路径题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [2045. 到达目的地的第二短时间](https://leetcode.cn/problems/second-minimum-time-to-reach-destination/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/second-minimum-time-to-reach-destination/) | 广度优先搜索、图、最短路 | 困难 | +| [2045. 到达目的地的第二短时间](https://leetcode.cn/problems/second-minimum-time-to-reach-destination/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/second-minimum-time-to-reach-destination.md) | 广度优先搜索、图、最短路 | 困难 | ### 差分约束系统 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0995. K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips/) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | -| [1109. 航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings/) | 数组、前缀和 | 中等 | +| [0995. K 连续位的最小翻转次数](https://leetcode.cn/problems/minimum-number-of-k-consecutive-bit-flips/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips.md) | 位运算、队列、数组、前缀和、滑动窗口 | 困难 | +| [1109. 航班预订统计](https://leetcode.cn/problems/corporate-flight-bookings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings.md) | 数组、前缀和 | 中等 | ### 二分图基础题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0785. 判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite/) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | +| [0785. 判断二分图](https://leetcode.cn/problems/is-graph-bipartite/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite.md) | 深度优先搜索、广度优先搜索、并查集、图 | 中等 | ### 二分图最大匹配题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [LCP 04. 覆盖](https://leetcode.cn/problems/broken-board-dominoes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCP/broken-board-dominoes/) | 位运算、图、数组、动态规划、状态压缩 | 困难 | -| [1947. 最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| [1595. 连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | +| [LCP 04. 覆盖](https://leetcode.cn/problems/broken-board-dominoes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCP/broken-board-dominoes.md) | 位运算、图、数组、动态规划、状态压缩 | 困难 | +| [1947. 最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1595. 连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | ## 第 7 章 基础算法 @@ -750,126 +750,126 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | -| [0204. 计数质数](https://leetcode.cn/problems/count-primes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-primes/) | 数组、数学、枚举、数论 | 中等 | -| [1925. 统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-square-sum-triples/) | 数学、枚举 | 简单 | -| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time/) | 数组 | 简单 | -| [1620. 网络信号最好的坐标](https://leetcode.cn/problems/coordinate-with-maximum-network-quality/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/coordinate-with-maximum-network-quality/) | 数组、枚举 | 中等 | -| [LCR 180. 文件组合](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | 数学、双指针、枚举 | 简单 | -| [0800. 相似 RGB 颜色](https://leetcode.cn/problems/similar-rgb-color/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/similar-rgb-color/) | 数学、字符串、枚举 | 简单 | -| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | -| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k/) | 数组、哈希表、前缀和 | 中等 | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum.md) | 数组、哈希表 | 简单 | +| [0204. 计数质数](https://leetcode.cn/problems/count-primes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-primes.md) | 数组、数学、枚举、数论 | 中等 | +| [1925. 统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-square-sum-triples.md) | 数学、枚举 | 简单 | +| [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time.md) | 数组 | 简单 | +| [1620. 网络信号最好的坐标](https://leetcode.cn/problems/coordinate-with-maximum-network-quality/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/coordinate-with-maximum-network-quality.md) | 数组、枚举 | 中等 | +| [LCR 180. 文件组合](https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof.md) | 数学、双指针、枚举 | 简单 | +| [0800. 相似 RGB 颜色](https://leetcode.cn/problems/similar-rgb-color/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/similar-rgb-color.md) | 数学、字符串、枚举 | 简单 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square.md) | 数组、动态规划、矩阵 | 中等 | +| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k.md) | 数组、哈希表、前缀和 | 中等 | ### 递归算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) | 双指针、字符串 | 简单 | -| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs/) | 递归、链表 | 中等 | -| [0118. 杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle/) | 数组、动态规划 | 简单 | -| [0119. 杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii/) | 数组、动态规划 | 简单 | -| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | -| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | -| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | -| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | -| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) | 递归、数学 | 中等 | -| [0779. 第K个语法符号](https://leetcode.cn/problems/k-th-symbol-in-grammar/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/k-th-symbol-in-grammar/) | 位运算、递归、数学 | 中等 | -| [0095. 不同的二叉搜索树 II](https://leetcode.cn/problems/unique-binary-search-trees-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees-ii/) | 树、二叉搜索树、动态规划、回溯、二叉树 | 中等 | -| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | 递归、数学 | 简单 | +| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string.md) | 双指针、字符串 | 简单 | +| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs.md) | 递归、链表 | 中等 | +| [0118. 杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle.md) | 数组、动态规划 | 简单 | +| [0119. 杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii.md) | 数组、动态规划 | 简单 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list.md) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii.md) | 链表 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists.md) | 递归、链表 | 简单 | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n.md) | 递归、数学 | 中等 | +| [0779. 第K个语法符号](https://leetcode.cn/problems/k-th-symbol-in-grammar/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/k-th-symbol-in-grammar.md) | 位运算、递归、数学 | 中等 | +| [0095. 不同的二叉搜索树 II](https://leetcode.cn/problems/unique-binary-search-trees-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees-ii.md) | 树、二叉搜索树、动态规划、回溯、二叉树 | 中等 | +| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof.md) | 递归、数学 | 简单 | ### 分治算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | -| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | -| [0241. 为运算表达式设计优先级](https://leetcode.cn/problems/different-ways-to-add-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/different-ways-to-add-parentheses/) | 递归、记忆化搜索、数学、字符串、动态规划 | 中等 | -| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | -| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) | 递归、数学 | 中等 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | -| [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays.md) | 数组、二分查找、分治 | 困难 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) | 数组、分治、动态规划 | 中等 | +| [0241. 为运算表达式设计优先级](https://leetcode.cn/problems/different-ways-to-add-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/different-ways-to-add-parentheses.md) | 递归、记忆化搜索、数学、字符串、动态规划 | 中等 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) | 数组、哈希表、分治、计数、排序 | 简单 | +| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n.md) | 递归、数学 | 中等 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | +| [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof.md) | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 | ### 回溯算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations/) | 数组、回溯 | 中等 | -| [0047. 全排列 II](https://leetcode.cn/problems/permutations-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii/) | 数组、回溯、排序 | 中等 | -| [0037. 解数独](https://leetcode.cn/problems/sudoku-solver/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver/) | 数组、哈希表、回溯、矩阵 | 困难 | -| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses/) | 字符串、动态规划、回溯 | 中等 | -| [0017. 电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/letter-combinations-of-a-phone-number/) | 哈希表、字符串、回溯 | 中等 | -| [0784. 字母大小写全排列](https://leetcode.cn/problems/letter-case-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/letter-case-permutation/) | 位运算、字符串、回溯 | 中等 | -| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum/) | 数组、回溯 | 中等 | -| [0040. 组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii/) | 数组、回溯 | 中等 | -| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | -| [0090. 子集 II](https://leetcode.cn/problems/subsets-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii/) | 位运算、数组、回溯 | 中等 | -| [0473. 火柴拼正方形](https://leetcode.cn/problems/matchsticks-to-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/matchsticks-to-square/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| [1593. 拆分字符串使唯一子字符串的数目最大](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings/) | 哈希表、字符串、回溯 | 中等 | -| [1079. 活字印刷](https://leetcode.cn/problems/letter-tile-possibilities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/letter-tile-possibilities/) | 哈希表、字符串、回溯、计数 | 中等 | -| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses/) | 字符串、回溯 | 中等 | -| [0079. 单词搜索](https://leetcode.cn/problems/word-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search/) | 深度优先搜索、数组、字符串、回溯、矩阵 | 中等 | -| [0679. 24 点游戏](https://leetcode.cn/problems/24-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/24-game/) | 数组、数学、回溯 | 困难 | +| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations.md) | 数组、回溯 | 中等 | +| [0047. 全排列 II](https://leetcode.cn/problems/permutations-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii.md) | 数组、回溯、排序 | 中等 | +| [0037. 解数独](https://leetcode.cn/problems/sudoku-solver/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver.md) | 数组、哈希表、回溯、矩阵 | 困难 | +| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses.md) | 字符串、动态规划、回溯 | 中等 | +| [0017. 电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/letter-combinations-of-a-phone-number.md) | 哈希表、字符串、回溯 | 中等 | +| [0784. 字母大小写全排列](https://leetcode.cn/problems/letter-case-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/letter-case-permutation.md) | 位运算、字符串、回溯 | 中等 | +| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum.md) | 数组、回溯 | 中等 | +| [0040. 组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii.md) | 数组、回溯 | 中等 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets.md) | 位运算、数组、回溯 | 中等 | +| [0090. 子集 II](https://leetcode.cn/problems/subsets-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii.md) | 位运算、数组、回溯 | 中等 | +| [0473. 火柴拼正方形](https://leetcode.cn/problems/matchsticks-to-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/matchsticks-to-square.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1593. 拆分字符串使唯一子字符串的数目最大](https://leetcode.cn/problems/split-a-string-into-the-max-number-of-unique-substrings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings.md) | 哈希表、字符串、回溯 | 中等 | +| [1079. 活字印刷](https://leetcode.cn/problems/letter-tile-possibilities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/letter-tile-possibilities.md) | 哈希表、字符串、回溯、计数 | 中等 | +| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses.md) | 字符串、回溯 | 中等 | +| [0079. 单词搜索](https://leetcode.cn/problems/word-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search.md) | 深度优先搜索、数组、字符串、回溯、矩阵 | 中等 | +| [0679. 24 点游戏](https://leetcode.cn/problems/24-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/24-game.md) | 数组、数学、回溯 | 困难 | ### 贪心算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0455. 分发饼干](https://leetcode.cn/problems/assign-cookies/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/assign-cookies/) | 贪心、数组、双指针、排序 | 简单 | -| [0860. 柠檬水找零](https://leetcode.cn/problems/lemonade-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/lemonade-change/) | 贪心、数组 | 简单 | -| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | -| [0435. 无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-overlapping-intervals/) | 贪心、数组、动态规划、排序 | 中等 | -| [0452. 用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons/) | 贪心、数组、排序 | 中等 | -| [0055. 跳跃游戏](https://leetcode.cn/problems/jump-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game/) | 贪心、数组、动态规划 | 中等 | -| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii/) | 贪心、数组、动态规划 | 中等 | -| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) | 贪心、数组、动态规划 | 中等 | -| [0561. 数组拆分](https://leetcode.cn/problems/array-partition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition/) | 贪心、数组、计数排序、排序 | 简单 | -| [1710. 卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-units-on-a-truck/) | 贪心、数组、排序 | 简单 | -| [1217. 玩筹码](https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position/) | 贪心、数组、数学 | 简单 | -| [1247. 交换字符使得字符串相同](https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal/) | 贪心、数学、字符串 | 中等 | -| [1400. 构造 K 个回文字符串](https://leetcode.cn/problems/construct-k-palindrome-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/construct-k-palindrome-strings/) | 贪心、哈希表、字符串、计数 | 中等 | -| [0921. 使括号有效的最少添加](https://leetcode.cn/problems/minimum-add-to-make-parentheses-valid/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid/) | 栈、贪心、字符串 | 中等 | -| [1029. 两地调度](https://leetcode.cn/problems/two-city-scheduling/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-city-scheduling/) | 贪心、数组、排序 | 中等 | -| [1605. 给定行和列的和求可行矩阵](https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums/) | 贪心、数组、矩阵 | 中等 | -| [0135. 分发糖果](https://leetcode.cn/problems/candy/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy/) | 贪心、数组 | 困难 | -| [0134. 加油站](https://leetcode.cn/problems/gas-station/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station/) | 贪心、数组 | 中等 | -| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | -| [0376. 摆动序列](https://leetcode.cn/problems/wiggle-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-subsequence/) | 贪心、数组、动态规划 | 中等 | -| [0738. 单调递增的数字](https://leetcode.cn/problems/monotone-increasing-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/monotone-increasing-digits/) | 贪心、数学 | 中等 | -| [0402. 移掉 K 位数字](https://leetcode.cn/problems/remove-k-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/remove-k-digits/) | 栈、贪心、字符串、单调栈 | 中等 | -| [0861. 翻转矩阵后的得分](https://leetcode.cn/problems/score-after-flipping-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/score-after-flipping-matrix/) | 贪心、位运算、数组、矩阵 | 中等 | -| [0670. 最大交换](https://leetcode.cn/problems/maximum-swap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-swap/) | 贪心、数学 | 中等 | +| [0455. 分发饼干](https://leetcode.cn/problems/assign-cookies/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/assign-cookies.md) | 贪心、数组、双指针、排序 | 简单 | +| [0860. 柠檬水找零](https://leetcode.cn/problems/lemonade-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/lemonade-change.md) | 贪心、数组 | 简单 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals.md) | 数组、排序 | 中等 | +| [0435. 无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-overlapping-intervals.md) | 贪心、数组、动态规划、排序 | 中等 | +| [0452. 用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons.md) | 贪心、数组、排序 | 中等 | +| [0055. 跳跃游戏](https://leetcode.cn/problems/jump-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game.md) | 贪心、数组、动态规划 | 中等 | +| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii.md) | 贪心、数组、动态规划 | 中等 | +| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii.md) | 贪心、数组、动态规划 | 中等 | +| [0561. 数组拆分](https://leetcode.cn/problems/array-partition/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition.md) | 贪心、数组、计数排序、排序 | 简单 | +| [1710. 卡车上的最大单元数](https://leetcode.cn/problems/maximum-units-on-a-truck/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-units-on-a-truck.md) | 贪心、数组、排序 | 简单 | +| [1217. 玩筹码](https://leetcode.cn/problems/minimum-cost-to-move-chips-to-the-same-position/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position.md) | 贪心、数组、数学 | 简单 | +| [1247. 交换字符使得字符串相同](https://leetcode.cn/problems/minimum-swaps-to-make-strings-equal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal.md) | 贪心、数学、字符串 | 中等 | +| [1400. 构造 K 个回文字符串](https://leetcode.cn/problems/construct-k-palindrome-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/construct-k-palindrome-strings.md) | 贪心、哈希表、字符串、计数 | 中等 | +| [0921. 使括号有效的最少添加](https://leetcode.cn/problems/minimum-add-to-make-parentheses-valid/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid.md) | 栈、贪心、字符串 | 中等 | +| [1029. 两地调度](https://leetcode.cn/problems/two-city-scheduling/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-city-scheduling.md) | 贪心、数组、排序 | 中等 | +| [1605. 给定行和列的和求可行矩阵](https://leetcode.cn/problems/find-valid-matrix-given-row-and-column-sums/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums.md) | 贪心、数组、矩阵 | 中等 | +| [0135. 分发糖果](https://leetcode.cn/problems/candy/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy.md) | 贪心、数组 | 困难 | +| [0134. 加油站](https://leetcode.cn/problems/gas-station/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station.md) | 贪心、数组 | 中等 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) | 数组、分治、动态规划 | 中等 | +| [0376. 摆动序列](https://leetcode.cn/problems/wiggle-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-subsequence.md) | 贪心、数组、动态规划 | 中等 | +| [0738. 单调递增的数字](https://leetcode.cn/problems/monotone-increasing-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/monotone-increasing-digits.md) | 贪心、数学 | 中等 | +| [0402. 移掉 K 位数字](https://leetcode.cn/problems/remove-k-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/remove-k-digits.md) | 栈、贪心、字符串、单调栈 | 中等 | +| [0861. 翻转矩阵后的得分](https://leetcode.cn/problems/score-after-flipping-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/score-after-flipping-matrix.md) | 贪心、位运算、数组、矩阵 | 中等 | +| [0670. 最大交换](https://leetcode.cn/problems/maximum-swap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-swap.md) | 贪心、数学 | 中等 | ### 位运算题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0504. 七进制数](https://leetcode.cn/problems/base-7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7/) | 数学 | 简单 | -| [0405. 数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal/) | 位运算、数学 | 简单 | -| [0190. 颠倒二进制位](https://leetcode.cn/problems/reverse-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-bits/) | 位运算、分治 | 简单 | -| [1009. 十进制整数的反码](https://leetcode.cn/problems/complement-of-base-10-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/complement-of-base-10-integer/) | 位运算 | 简单 | -| [0191. 位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits/) | 位运算、分治 | 简单 | -| [0371. 两整数之和](https://leetcode.cn/problems/sum-of-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sum-of-two-integers/) | 位运算、数学 | 中等 | -| [0089. 格雷编码](https://leetcode.cn/problems/gray-code/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/gray-code/) | 位运算、数学、回溯 | 中等 | -| [0201. 数字范围按位与](https://leetcode.cn/problems/bitwise-and-of-numbers-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/bitwise-and-of-numbers-range/) | 位运算 | 中等 | -| [0338. 比特位计数](https://leetcode.cn/problems/counting-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits/) | 位运算、动态规划 | 简单 | -| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | -| [0137. 只出现一次的数字 II](https://leetcode.cn/problems/single-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number-ii/) | 位运算、数组 | 中等 | -| [0260. 只出现一次的数字 III](https://leetcode.cn/problems/single-number-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/single-number-iii/) | 位运算、数组 | 中等 | -| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | -| [1349. 参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| [0645. 错误的集合](https://leetcode.cn/problems/set-mismatch/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/set-mismatch/) | 位运算、数组、哈希表、排序 | 简单 | -| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | -| [0090. 子集 II](https://leetcode.cn/problems/subsets-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii/) | 位运算、数组、回溯 | 中等 | +| [0504. 七进制数](https://leetcode.cn/problems/base-7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7.md) | 数学 | 简单 | +| [0405. 数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal.md) | 位运算、数学 | 简单 | +| [0190. 颠倒二进制位](https://leetcode.cn/problems/reverse-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-bits.md) | 位运算、分治 | 简单 | +| [1009. 十进制整数的反码](https://leetcode.cn/problems/complement-of-base-10-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/complement-of-base-10-integer.md) | 位运算 | 简单 | +| [0191. 位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits.md) | 位运算、分治 | 简单 | +| [0371. 两整数之和](https://leetcode.cn/problems/sum-of-two-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sum-of-two-integers.md) | 位运算、数学 | 中等 | +| [0089. 格雷编码](https://leetcode.cn/problems/gray-code/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/gray-code.md) | 位运算、数学、回溯 | 中等 | +| [0201. 数字范围按位与](https://leetcode.cn/problems/bitwise-and-of-numbers-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/bitwise-and-of-numbers-range.md) | 位运算 | 中等 | +| [0338. 比特位计数](https://leetcode.cn/problems/counting-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits.md) | 位运算、动态规划 | 简单 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) | 位运算、数组 | 简单 | +| [0137. 只出现一次的数字 II](https://leetcode.cn/problems/single-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number-ii.md) | 位运算、数组 | 中等 | +| [0260. 只出现一次的数字 III](https://leetcode.cn/problems/single-number-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/single-number-iii.md) | 位运算、数组 | 中等 | +| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | +| [1349. 参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | +| [0645. 错误的集合](https://leetcode.cn/problems/set-mismatch/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/set-mismatch.md) | 位运算、数组、哈希表、排序 | 简单 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets.md) | 位运算、数组、回溯 | 中等 | +| [0090. 子集 II](https://leetcode.cn/problems/subsets-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii.md) | 位运算、数组、回溯 | 中等 | ## 第 8 章 动态规划 @@ -878,24 +878,24 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | -| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) | 数学、动态规划、组合数学 | 中等 | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths.md) | 数学、动态规划、组合数学 | 中等 | ### 记忆化搜索题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number/) | 记忆化搜索、数学、动态规划 | 简单 | -| [0375. 猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii/) | 数学、动态规划、博弈 | 中等 | -| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum/) | 数组、动态规划、回溯 | 中等 | -| [0576. 出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths/) | 动态规划 | 中等 | -| [0087. 扰乱字符串](https://leetcode.cn/problems/scramble-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/scramble-string/) | 字符串、动态规划 | 困难 | -| [0403. 青蛙过河](https://leetcode.cn/problems/frog-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump/) | 数组、动态规划 | 困难 | -| [0552. 学生出勤记录 II](https://leetcode.cn/problems/student-attendance-record-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/student-attendance-record-ii/) | 动态规划 | 困难 | -| [0913. 猫和老鼠](https://leetcode.cn/problems/cat-and-mouse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/cat-and-mouse/) | 图、拓扑排序、记忆化搜索、数学、动态规划、博弈 | 困难 | -| [0329. 矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix/) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | +| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [0375. 猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii.md) | 数学、动态规划、博弈 | 中等 | +| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum.md) | 数组、动态规划、回溯 | 中等 | +| [0576. 出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths.md) | 动态规划 | 中等 | +| [0087. 扰乱字符串](https://leetcode.cn/problems/scramble-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/scramble-string.md) | 字符串、动态规划 | 困难 | +| [0403. 青蛙过河](https://leetcode.cn/problems/frog-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump.md) | 数组、动态规划 | 困难 | +| [0552. 学生出勤记录 II](https://leetcode.cn/problems/student-attendance-record-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/student-attendance-record-ii.md) | 动态规划 | 困难 | +| [0913. 猫和老鼠](https://leetcode.cn/problems/cat-and-mouse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/cat-and-mouse.md) | 图、拓扑排序、记忆化搜索、数学、动态规划、博弈 | 困难 | +| [0329. 矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix.md) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | ### 线性 DP 题目 @@ -904,93 +904,93 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence/) | 数组、二分查找、动态规划 | 中等 | -| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) | 树状数组、线段树、数组、动态规划 | 中等 | -| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes/) | 数组、二分查找、动态规划、排序 | 困难 | -| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | -| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray/) | 数组、动态规划 | 中等 | -| [0918. 环形子数组的最大和](https://leetcode.cn/problems/maximum-sum-circular-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/maximum-sum-circular-subarray/) | 队列、数组、分治、动态规划、单调队列 | 中等 | -| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber/) | 数组、动态规划 | 中等 | -| [0213. 打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii/) | 数组、动态规划 | 中等 | -| [0740. 删除并获得点数](https://leetcode.cn/problems/delete-and-earn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/delete-and-earn/) | 数组、哈希表、动态规划 | 中等 | -| [1388. 3n 块披萨](https://leetcode.cn/problems/pizza-with-3n-slices/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/pizza-with-3n-slices/) | 贪心、数组、动态规划、堆(优先队列) | 困难 | -| [0873. 最长的斐波那契子序列的长度](https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence/) | 数组、哈希表、动态规划 | 中等 | -| [1027. 最长等差数列](https://leetcode.cn/problems/longest-arithmetic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/longest-arithmetic-subsequence/) | 数组、哈希表、二分查找、动态规划 | 中等 | -| [1055. 形成字符串的最短路径](https://leetcode.cn/problems/shortest-way-to-form-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/shortest-way-to-form-string/) | 贪心、双指针、字符串、二分查找 | 中等 | -| [0368. 最大整除子集](https://leetcode.cn/problems/largest-divisible-subset/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/largest-divisible-subset/) | 数组、数学、动态规划、排序 | 中等 | -| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | -| [0413. 等差数列划分](https://leetcode.cn/problems/arithmetic-slices/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/arithmetic-slices/) | 数组、动态规划、滑动窗口 | 中等 | -| [0091. 解码方法](https://leetcode.cn/problems/decode-ways/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways/) | 字符串、动态规划 | 中等 | -| [0639. 解码方法 II](https://leetcode.cn/problems/decode-ways-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/decode-ways-ii/) | 字符串、动态规划 | 困难 | -| [0132. 分割回文串 II](https://leetcode.cn/problems/palindrome-partitioning-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/palindrome-partitioning-ii/) | 字符串、动态规划 | 困难 | -| [1220. 统计元音字母序列的数目](https://leetcode.cn/problems/count-vowels-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/count-vowels-permutation/) | 动态规划 | 困难 | -| [0338. 比特位计数](https://leetcode.cn/problems/counting-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits/) | 位运算、动态规划 | 简单 | -| [0801. 使序列递增的最小交换次数](https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing/) | 数组、动态规划 | 困难 | -| [0871. 最低加油次数](https://leetcode.cn/problems/minimum-number-of-refueling-stops/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-number-of-refueling-stops/) | 贪心、数组、动态规划、堆(优先队列) | 困难 | -| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii/) | 贪心、数组、动态规划 | 中等 | -| [0813. 最大平均值和的分组](https://leetcode.cn/problems/largest-sum-of-averages/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/largest-sum-of-averages/) | 数组、动态规划、前缀和 | 中等 | -| [0887. 鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop/) | 数学、二分查找、动态规划 | 困难 | -| [0256. 粉刷房子](https://leetcode.cn/problems/paint-house/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/paint-house/) | 数组、动态规划 | 中等 | -| [0265. 粉刷房子 II](https://leetcode.cn/problems/paint-house-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/paint-house-ii/) | 数组、动态规划 | 困难 | -| [1473. 粉刷房子 III](https://leetcode.cn/problems/paint-house-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/paint-house-iii/) | 数组、动态规划 | 困难 | -| [0975. 奇偶跳](https://leetcode.cn/problems/odd-even-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/odd-even-jump/) | 栈、数组、动态规划、有序集合、单调栈 | 困难 | -| [0403. 青蛙过河](https://leetcode.cn/problems/frog-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump/) | 数组、动态规划 | 困难 | -| [1478. 安排邮筒](https://leetcode.cn/problems/allocate-mailboxes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/allocate-mailboxes/) | 数组、数学、动态规划、排序 | 困难 | -| [1230. 抛掷硬币](https://leetcode.cn/problems/toss-strange-coins/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/toss-strange-coins/) | 数组、数学、动态规划、概率与统计 | 中等 | -| [0410. 分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum/) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | -| [1751. 最多可以参加的会议数目 II](https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-events-that-can-be-attended-ii/) | 数组、二分查找、动态规划、排序 | 困难 | -| [1787. 使所有区间的异或结果为零](https://leetcode.cn/problems/make-the-xor-of-all-segments-equal-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/make-the-xor-of-all-segments-equal-to-zero/) | 位运算、数组、动态规划 | 困难 | -| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock/) | 数组、动态规划 | 简单 | -| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) | 贪心、数组、动态规划 | 中等 | -| [0123. 买卖股票的最佳时机 III](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii/) | 数组、动态规划 | 困难 | -| [0188. 买卖股票的最佳时机 IV](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv/) | 数组、动态规划 | 困难 | -| [0309. 买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown/) | 数组、动态规划 | 中等 | -| [0714. 买卖股票的最佳时机含手续费](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee/) | 贪心、数组、动态规划 | 中等 | +| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence.md) | 数组、二分查找、动态规划 | 中等 | +| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence.md) | 树状数组、线段树、数组、动态规划 | 中等 | +| [0354. 俄罗斯套娃信封问题](https://leetcode.cn/problems/russian-doll-envelopes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes.md) | 数组、二分查找、动态规划、排序 | 困难 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) | 数组、分治、动态规划 | 中等 | +| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray.md) | 数组、动态规划 | 中等 | +| [0918. 环形子数组的最大和](https://leetcode.cn/problems/maximum-sum-circular-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/maximum-sum-circular-subarray.md) | 队列、数组、分治、动态规划、单调队列 | 中等 | +| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber.md) | 数组、动态规划 | 中等 | +| [0213. 打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii.md) | 数组、动态规划 | 中等 | +| [0740. 删除并获得点数](https://leetcode.cn/problems/delete-and-earn/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/delete-and-earn.md) | 数组、哈希表、动态规划 | 中等 | +| [1388. 3n 块披萨](https://leetcode.cn/problems/pizza-with-3n-slices/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/pizza-with-3n-slices.md) | 贪心、数组、动态规划、堆(优先队列) | 困难 | +| [0873. 最长的斐波那契子序列的长度](https://leetcode.cn/problems/length-of-longest-fibonacci-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence.md) | 数组、哈希表、动态规划 | 中等 | +| [1027. 最长等差数列](https://leetcode.cn/problems/longest-arithmetic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/longest-arithmetic-subsequence.md) | 数组、哈希表、二分查找、动态规划 | 中等 | +| [1055. 形成字符串的最短路径](https://leetcode.cn/problems/shortest-way-to-form-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/shortest-way-to-form-string.md) | 贪心、双指针、字符串、二分查找 | 中等 | +| [0368. 最大整除子集](https://leetcode.cn/problems/largest-divisible-subset/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/largest-divisible-subset.md) | 数组、数学、动态规划、排序 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses.md) | 栈、字符串、动态规划 | 困难 | +| [0413. 等差数列划分](https://leetcode.cn/problems/arithmetic-slices/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/arithmetic-slices.md) | 数组、动态规划、滑动窗口 | 中等 | +| [0091. 解码方法](https://leetcode.cn/problems/decode-ways/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways.md) | 字符串、动态规划 | 中等 | +| [0639. 解码方法 II](https://leetcode.cn/problems/decode-ways-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/decode-ways-ii.md) | 字符串、动态规划 | 困难 | +| [0132. 分割回文串 II](https://leetcode.cn/problems/palindrome-partitioning-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/palindrome-partitioning-ii.md) | 字符串、动态规划 | 困难 | +| [1220. 统计元音字母序列的数目](https://leetcode.cn/problems/count-vowels-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/count-vowels-permutation.md) | 动态规划 | 困难 | +| [0338. 比特位计数](https://leetcode.cn/problems/counting-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits.md) | 位运算、动态规划 | 简单 | +| [0801. 使序列递增的最小交换次数](https://leetcode.cn/problems/minimum-swaps-to-make-sequences-increasing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing.md) | 数组、动态规划 | 困难 | +| [0871. 最低加油次数](https://leetcode.cn/problems/minimum-number-of-refueling-stops/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-number-of-refueling-stops.md) | 贪心、数组、动态规划、堆(优先队列) | 困难 | +| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii.md) | 贪心、数组、动态规划 | 中等 | +| [0813. 最大平均值和的分组](https://leetcode.cn/problems/largest-sum-of-averages/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/largest-sum-of-averages.md) | 数组、动态规划、前缀和 | 中等 | +| [0887. 鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop.md) | 数学、二分查找、动态规划 | 困难 | +| [0256. 粉刷房子](https://leetcode.cn/problems/paint-house/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/paint-house.md) | 数组、动态规划 | 中等 | +| [0265. 粉刷房子 II](https://leetcode.cn/problems/paint-house-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/paint-house-ii.md) | 数组、动态规划 | 困难 | +| [1473. 粉刷房子 III](https://leetcode.cn/problems/paint-house-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/paint-house-iii.md) | 数组、动态规划 | 困难 | +| [0975. 奇偶跳](https://leetcode.cn/problems/odd-even-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/odd-even-jump.md) | 栈、数组、动态规划、有序集合、单调栈 | 困难 | +| [0403. 青蛙过河](https://leetcode.cn/problems/frog-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump.md) | 数组、动态规划 | 困难 | +| [1478. 安排邮筒](https://leetcode.cn/problems/allocate-mailboxes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/allocate-mailboxes.md) | 数组、数学、动态规划、排序 | 困难 | +| [1230. 抛掷硬币](https://leetcode.cn/problems/toss-strange-coins/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/toss-strange-coins.md) | 数组、数学、动态规划、概率与统计 | 中等 | +| [0410. 分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum.md) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | +| [1751. 最多可以参加的会议数目 II](https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-events-that-can-be-attended-ii.md) | 数组、二分查找、动态规划、排序 | 困难 | +| [1787. 使所有区间的异或结果为零](https://leetcode.cn/problems/make-the-xor-of-all-segments-equal-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/make-the-xor-of-all-segments-equal-to-zero.md) | 位运算、数组、动态规划 | 困难 | +| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock.md) | 数组、动态规划 | 简单 | +| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii.md) | 贪心、数组、动态规划 | 中等 | +| [0123. 买卖股票的最佳时机 III](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii.md) | 数组、动态规划 | 困难 | +| [0188. 买卖股票的最佳时机 IV](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv.md) | 数组、动态规划 | 困难 | +| [0309. 买卖股票的最佳时机含冷冻期](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-cooldown/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown.md) | 数组、动态规划 | 中等 | +| [0714. 买卖股票的最佳时机含手续费](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee.md) | 贪心、数组、动态规划 | 中等 | #### 双串线性 DP 问题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence/) | 字符串、动态规划 | 中等 | -| [0712. 两个字符串的最小ASCII删除和](https://leetcode.cn/problems/minimum-ascii-delete-sum-for-two-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-ascii-delete-sum-for-two-strings/) | 字符串、动态规划 | 中等 | -| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| [0583. 两个字符串的删除操作](https://leetcode.cn/problems/delete-operation-for-two-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/delete-operation-for-two-strings/) | 字符串、动态规划 | 中等 | -| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance/) | 字符串、动态规划 | 中等 | -| [0044. 通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching/) | 贪心、递归、字符串、动态规划 | 困难 | -| [0010. 正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching/) | 递归、字符串、动态规划 | 困难 | -| [0097. 交错字符串](https://leetcode.cn/problems/interleaving-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/interleaving-string/) | 字符串、动态规划 | 中等 | -| [0115. 不同的子序列](https://leetcode.cn/problems/distinct-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/distinct-subsequences/) | 字符串、动态规划 | 困难 | -| [0087. 扰乱字符串](https://leetcode.cn/problems/scramble-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/scramble-string/) | 字符串、动态规划 | 困难 | +| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence.md) | 字符串、动态规划 | 中等 | +| [0712. 两个字符串的最小ASCII删除和](https://leetcode.cn/problems/minimum-ascii-delete-sum-for-two-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-ascii-delete-sum-for-two-strings.md) | 字符串、动态规划 | 中等 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0583. 两个字符串的删除操作](https://leetcode.cn/problems/delete-operation-for-two-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/delete-operation-for-two-strings.md) | 字符串、动态规划 | 中等 | +| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance.md) | 字符串、动态规划 | 中等 | +| [0044. 通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching.md) | 贪心、递归、字符串、动态规划 | 困难 | +| [0010. 正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching.md) | 递归、字符串、动态规划 | 困难 | +| [0097. 交错字符串](https://leetcode.cn/problems/interleaving-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/interleaving-string.md) | 字符串、动态规划 | 中等 | +| [0115. 不同的子序列](https://leetcode.cn/problems/distinct-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/distinct-subsequences.md) | 字符串、动态规划 | 困难 | +| [0087. 扰乱字符串](https://leetcode.cn/problems/scramble-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/scramble-string.md) | 字符串、动态规划 | 困难 | #### 矩阵线性 DP 问题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0118. 杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle/) | 数组、动态规划 | 简单 | -| [0119. 杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii/) | 数组、动态规划 | 简单 | -| [0120. 三角形最小路径和](https://leetcode.cn/problems/triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle/) | 数组、动态规划 | 中等 | -| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum/) | 数组、动态规划、矩阵 | 中等 | -| [0174. 地下城游戏](https://leetcode.cn/problems/dungeon-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/dungeon-game/) | 数组、动态规划、矩阵 | 困难 | -| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | -| [0931. 下降路径最小和](https://leetcode.cn/problems/minimum-falling-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-falling-path-sum/) | 数组、动态规划、矩阵 | 中等 | -| [0576. 出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths/) | 动态规划 | 中等 | -| [0085. 最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximal-rectangle/) | 栈、数组、动态规划、矩阵、单调栈 | 困难 | -| [0363. 矩形区域不超过 K 的最大数值和](https://leetcode.cn/problems/max-sum-of-rectangle-no-larger-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/max-sum-of-rectangle-no-larger-than-k/) | 数组、二分查找、矩阵、有序集合、前缀和 | 困难 | -| [面试题 17.24. 最大子矩阵](https://leetcode.cn/problems/max-submatrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/max-submatrix-lcci/) | 数组、动态规划、矩阵、前缀和 | 困难 | -| [1444. 切披萨的方案数](https://leetcode.cn/problems/number-of-ways-of-cutting-a-pizza/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-ways-of-cutting-a-pizza/) | 记忆化搜索、数组、动态规划、矩阵、前缀和 | 困难 | +| [0118. 杨辉三角](https://leetcode.cn/problems/pascals-triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle.md) | 数组、动态规划 | 简单 | +| [0119. 杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii.md) | 数组、动态规划 | 简单 | +| [0120. 三角形最小路径和](https://leetcode.cn/problems/triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle.md) | 数组、动态规划 | 中等 | +| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum.md) | 数组、动态规划、矩阵 | 中等 | +| [0174. 地下城游戏](https://leetcode.cn/problems/dungeon-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/dungeon-game.md) | 数组、动态规划、矩阵 | 困难 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square.md) | 数组、动态规划、矩阵 | 中等 | +| [0931. 下降路径最小和](https://leetcode.cn/problems/minimum-falling-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-falling-path-sum.md) | 数组、动态规划、矩阵 | 中等 | +| [0576. 出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths.md) | 动态规划 | 中等 | +| [0085. 最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximal-rectangle.md) | 栈、数组、动态规划、矩阵、单调栈 | 困难 | +| [0363. 矩形区域不超过 K 的最大数值和](https://leetcode.cn/problems/max-sum-of-rectangle-no-larger-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/max-sum-of-rectangle-no-larger-than-k.md) | 数组、二分查找、矩阵、有序集合、前缀和 | 困难 | +| [面试题 17.24. 最大子矩阵](https://leetcode.cn/problems/max-submatrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/max-submatrix-lcci.md) | 数组、动态规划、矩阵、前缀和 | 困难 | +| [1444. 切披萨的方案数](https://leetcode.cn/problems/number-of-ways-of-cutting-a-pizza/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-ways-of-cutting-a-pizza.md) | 记忆化搜索、数组、动态规划、矩阵、前缀和 | 困难 | #### 无串线性 DP 问题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number/) | 记忆化搜索、数学、动态规划 | 简单 | -| [0650. 两个键的键盘](https://leetcode.cn/problems/2-keys-keyboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/2-keys-keyboard/) | 数学、动态规划 | 中等 | -| [0264. 丑数 II](https://leetcode.cn/problems/ugly-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number-ii/) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | -| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares/) | 广度优先搜索、数学、动态规划 | 中等 | -| [0343. 整数拆分](https://leetcode.cn/problems/integer-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break/) | 数学、动态规划 | 中等 | +| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [0650. 两个键的键盘](https://leetcode.cn/problems/2-keys-keyboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/2-keys-keyboard.md) | 数学、动态规划 | 中等 | +| [0264. 丑数 II](https://leetcode.cn/problems/ugly-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number-ii.md) | 哈希表、数学、动态规划、堆(优先队列) | 中等 | +| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares.md) | 广度优先搜索、数学、动态规划 | 中等 | +| [0343. 整数拆分](https://leetcode.cn/problems/integer-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break.md) | 数学、动态规划 | 中等 | ### 背包问题题目 @@ -999,22 +999,22 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0416. 分割等和子集](https://leetcode.cn/problems/partition-equal-subset-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/partition-equal-subset-sum/) | 数组、动态规划 | 中等 | -| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum/) | 数组、动态规划、回溯 | 中等 | -| [1049. 最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/last-stone-weight-ii/) | 数组、动态规划 | 中等 | +| [0416. 分割等和子集](https://leetcode.cn/problems/partition-equal-subset-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/partition-equal-subset-sum.md) | 数组、动态规划 | 中等 | +| [0494. 目标和](https://leetcode.cn/problems/target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum.md) | 数组、动态规划、回溯 | 中等 | +| [1049. 最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/last-stone-weight-ii.md) | 数组、动态规划 | 中等 | #### 完全背包问题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares/) | 广度优先搜索、数学、动态规划 | 中等 | -| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | -| [0518. 零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii/) | 数组、动态规划 | 中等 | -| [0139. 单词拆分](https://leetcode.cn/problems/word-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break/) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | -| [0377. 组合总和 Ⅳ](https://leetcode.cn/problems/combination-sum-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/combination-sum-iv/) | 数组、动态规划 | 中等 | -| [0638. 大礼包](https://leetcode.cn/problems/shopping-offers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/shopping-offers/) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | -| [1449. 数位成本和为目标值的最大数字](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target/) | 数组、动态规划 | 困难 | +| [0279. 完全平方数](https://leetcode.cn/problems/perfect-squares/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares.md) | 广度优先搜索、数学、动态规划 | 中等 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change.md) | 广度优先搜索、数组、动态规划 | 中等 | +| [0518. 零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii.md) | 数组、动态规划 | 中等 | +| [0139. 单词拆分](https://leetcode.cn/problems/word-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break.md) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | +| [0377. 组合总和 Ⅳ](https://leetcode.cn/problems/combination-sum-iv/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/combination-sum-iv.md) | 数组、动态规划 | 中等 | +| [0638. 大礼包](https://leetcode.cn/problems/shopping-offers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/shopping-offers.md) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | +| [1449. 数位成本和为目标值的最大数字](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target.md) | 数组、动态规划 | 困难 | #### 多重背包问题 @@ -1023,37 +1023,37 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1155. 掷骰子等于目标和的方法数](https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum/) | 动态规划 | 中等 | -| [2585. 获得分数的方法数](https://leetcode.cn/problems/number-of-ways-to-earn-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/number-of-ways-to-earn-points/) | 数组、动态规划 | 困难 | +| [1155. 掷骰子等于目标和的方法数](https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum.md) | 动态规划 | 中等 | +| [2585. 获得分数的方法数](https://leetcode.cn/problems/number-of-ways-to-earn-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/number-of-ways-to-earn-points.md) | 数组、动态规划 | 困难 | #### 多维背包问题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0474. 一和零](https://leetcode.cn/problems/ones-and-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/ones-and-zeroes/) | 数组、字符串、动态规划 | 中等 | -| [0879. 盈利计划](https://leetcode.cn/problems/profitable-schemes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/profitable-schemes/) | 数组、动态规划 | 困难 | -| [1995. 统计特殊四元组](https://leetcode.cn/problems/count-special-quadruplets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-special-quadruplets/) | 数组、哈希表、枚举 | 简单 | +| [0474. 一和零](https://leetcode.cn/problems/ones-and-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/ones-and-zeroes.md) | 数组、字符串、动态规划 | 中等 | +| [0879. 盈利计划](https://leetcode.cn/problems/profitable-schemes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/profitable-schemes.md) | 数组、动态规划 | 困难 | +| [1995. 统计特殊四元组](https://leetcode.cn/problems/count-special-quadruplets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-special-quadruplets.md) | 数组、哈希表、枚举 | 简单 | ### 区间 DP 题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0486. 预测赢家](https://leetcode.cn/problems/predict-the-winner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/predict-the-winner/) | 递归、数组、数学、动态规划、博弈 | 中等 | -| [0312. 戳气球](https://leetcode.cn/problems/burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/burst-balloons/) | 数组、动态规划 | 困难 | -| [0877. 石子游戏](https://leetcode.cn/problems/stone-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/stone-game/) | 数组、数学、动态规划、博弈 | 中等 | -| [1000. 合并石头的最低成本](https://leetcode.cn/problems/minimum-cost-to-merge-stones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-cost-to-merge-stones/) | 数组、动态规划、前缀和 | 困难 | -| [1547. 切棍子的最小成本](https://leetcode.cn/problems/minimum-cost-to-cut-a-stick/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick/) | 数组、动态规划、排序 | 困难 | -| [0664. 奇怪的打印机](https://leetcode.cn/problems/strange-printer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/strange-printer/) | 字符串、动态规划 | 困难 | -| [1039. 多边形三角剖分的最低得分](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-score-triangulation-of-polygon/) | 数组、动态规划 | 中等 | -| [0546. 移除盒子](https://leetcode.cn/problems/remove-boxes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/remove-boxes/) | 记忆化搜索、数组、动态规划 | 困难 | -| [0375. 猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii/) | 数学、动态规划、博弈 | 中等 | -| [0678. 有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string/) | 栈、贪心、字符串、动态规划 | 中等 | -| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) | 双指针、字符串、动态规划 | 中等 | -| [0516. 最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence/) | 字符串、动态规划 | 中等 | -| [0730. 统计不同回文子序列](https://leetcode.cn/problems/count-different-palindromic-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/count-different-palindromic-subsequences/) | 字符串、动态规划 | 困难 | -| [2104. 子数组范围和](https://leetcode.cn/problems/sum-of-subarray-ranges/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/sum-of-subarray-ranges/) | 栈、数组、单调栈 | 中等 | +| [0486. 预测赢家](https://leetcode.cn/problems/predict-the-winner/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/predict-the-winner.md) | 递归、数组、数学、动态规划、博弈 | 中等 | +| [0312. 戳气球](https://leetcode.cn/problems/burst-balloons/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/burst-balloons.md) | 数组、动态规划 | 困难 | +| [0877. 石子游戏](https://leetcode.cn/problems/stone-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/stone-game.md) | 数组、数学、动态规划、博弈 | 中等 | +| [1000. 合并石头的最低成本](https://leetcode.cn/problems/minimum-cost-to-merge-stones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-cost-to-merge-stones.md) | 数组、动态规划、前缀和 | 困难 | +| [1547. 切棍子的最小成本](https://leetcode.cn/problems/minimum-cost-to-cut-a-stick/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick.md) | 数组、动态规划、排序 | 困难 | +| [0664. 奇怪的打印机](https://leetcode.cn/problems/strange-printer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/strange-printer.md) | 字符串、动态规划 | 困难 | +| [1039. 多边形三角剖分的最低得分](https://leetcode.cn/problems/minimum-score-triangulation-of-polygon/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-score-triangulation-of-polygon.md) | 数组、动态规划 | 中等 | +| [0546. 移除盒子](https://leetcode.cn/problems/remove-boxes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/remove-boxes.md) | 记忆化搜索、数组、动态规划 | 困难 | +| [0375. 猜数字大小 II](https://leetcode.cn/problems/guess-number-higher-or-lower-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii.md) | 数学、动态规划、博弈 | 中等 | +| [0678. 有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string.md) | 栈、贪心、字符串、动态规划 | 中等 | +| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring.md) | 双指针、字符串、动态规划 | 中等 | +| [0516. 最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence.md) | 字符串、动态规划 | 中等 | +| [0730. 统计不同回文子序列](https://leetcode.cn/problems/count-different-palindromic-subsequences/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/count-different-palindromic-subsequences.md) | 字符串、动态规划 | 困难 | +| [2104. 子数组范围和](https://leetcode.cn/problems/sum-of-subarray-ranges/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/sum-of-subarray-ranges.md) | 栈、数组、单调栈 | 中等 | ### 树形 DP 题目 @@ -1062,105 +1062,105 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | -| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [1245. 树的直径](https://leetcode.cn/problems/tree-diameter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/tree-diameter/) | 树、深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [2246. 相邻字符不同的最长路径](https://leetcode.cn/problems/longest-path-with-different-adjacent-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/longest-path-with-different-adjacent-characters/) | 树、深度优先搜索、图、拓扑排序、数组、字符串 | 困难 | -| [0687. 最长同值路径](https://leetcode.cn/problems/longest-univalue-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-univalue-path/) | 树、深度优先搜索、二叉树 | 中等 | -| [0337. 打家劫舍 III](https://leetcode.cn/problems/house-robber-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/house-robber-iii/) | 树、深度优先搜索、动态规划、二叉树 | 中等 | -| [0333. 最大二叉搜索子树](https://leetcode.cn/problems/largest-bst-subtree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/largest-bst-subtree/) | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 中等 | -| [1617. 统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities/) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | -| [2538. 最大价值和与最小价值和的差值](https://leetcode.cn/problems/difference-between-maximum-and-minimum-price-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum/) | 树、深度优先搜索、数组、动态规划 | 困难 | -| [1569. 将子数组重新排序得到同一个二叉搜索树的方案数](https://leetcode.cn/problems/number-of-ways-to-reorder-array-to-get-same-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/number-of-ways-to-reorder-array-to-get-same-bst/) | 树、并查集、二叉搜索树、记忆化搜索、数组、数学、分治、动态规划、二叉树、组合数学 | 困难 | -| [1372. 二叉树中的最长交错路径](https://leetcode.cn/problems/longest-zigzag-path-in-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/longest-zigzag-path-in-a-binary-tree/) | 树、深度优先搜索、动态规划、二叉树 | 中等 | -| [1373. 二叉搜索子树的最大键值和](https://leetcode.cn/problems/maximum-sum-bst-in-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-sum-bst-in-binary-tree/) | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 困难 | -| [0968. 监控二叉树](https://leetcode.cn/problems/binary-tree-cameras/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/binary-tree-cameras/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [1273. 删除树节点](https://leetcode.cn/problems/delete-tree-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/delete-tree-nodes/) | 树、深度优先搜索、广度优先搜索、数组 | 中等 | -| [1519. 子树中标签相同的节点数](https://leetcode.cn/problems/number-of-nodes-in-the-sub-tree-with-the-same-label/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/number-of-nodes-in-the-sub-tree-with-the-same-label/) | 树、深度优先搜索、广度优先搜索、哈希表、计数 | 中等 | +| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree.md) | 树、深度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [1245. 树的直径](https://leetcode.cn/problems/tree-diameter/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/tree-diameter.md) | 树、深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [2246. 相邻字符不同的最长路径](https://leetcode.cn/problems/longest-path-with-different-adjacent-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/longest-path-with-different-adjacent-characters.md) | 树、深度优先搜索、图、拓扑排序、数组、字符串 | 困难 | +| [0687. 最长同值路径](https://leetcode.cn/problems/longest-univalue-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-univalue-path.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0337. 打家劫舍 III](https://leetcode.cn/problems/house-robber-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/house-robber-iii.md) | 树、深度优先搜索、动态规划、二叉树 | 中等 | +| [0333. 最大二叉搜索子树](https://leetcode.cn/problems/largest-bst-subtree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/largest-bst-subtree.md) | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 中等 | +| [1617. 统计子树中城市之间最大距离](https://leetcode.cn/problems/count-subtrees-with-max-distance-between-cities/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities.md) | 位运算、树、动态规划、状态压缩、枚举 | 困难 | +| [2538. 最大价值和与最小价值和的差值](https://leetcode.cn/problems/difference-between-maximum-and-minimum-price-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum.md) | 树、深度优先搜索、数组、动态规划 | 困难 | +| [1569. 将子数组重新排序得到同一个二叉搜索树的方案数](https://leetcode.cn/problems/number-of-ways-to-reorder-array-to-get-same-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/number-of-ways-to-reorder-array-to-get-same-bst.md) | 树、并查集、二叉搜索树、记忆化搜索、数组、数学、分治、动态规划、二叉树、组合数学 | 困难 | +| [1372. 二叉树中的最长交错路径](https://leetcode.cn/problems/longest-zigzag-path-in-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/longest-zigzag-path-in-a-binary-tree.md) | 树、深度优先搜索、动态规划、二叉树 | 中等 | +| [1373. 二叉搜索子树的最大键值和](https://leetcode.cn/problems/maximum-sum-bst-in-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-sum-bst-in-binary-tree.md) | 树、深度优先搜索、二叉搜索树、动态规划、二叉树 | 困难 | +| [0968. 监控二叉树](https://leetcode.cn/problems/binary-tree-cameras/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/binary-tree-cameras.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [1273. 删除树节点](https://leetcode.cn/problems/delete-tree-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/delete-tree-nodes.md) | 树、深度优先搜索、广度优先搜索、数组 | 中等 | +| [1519. 子树中标签相同的节点数](https://leetcode.cn/problems/number-of-nodes-in-the-sub-tree-with-the-same-label/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/number-of-nodes-in-the-sub-tree-with-the-same-label.md) | 树、深度优先搜索、广度优先搜索、哈希表、计数 | 中等 | #### 不定根的树形 DP 题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0310. 最小高度树](https://leetcode.cn/problems/minimum-height-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/minimum-height-trees/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [0834. 树中距离之和](https://leetcode.cn/problems/sum-of-distances-in-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/sum-of-distances-in-tree/) | 树、深度优先搜索、图、动态规划 | 困难 | -| [2581. 统计可能的树根数目](https://leetcode.cn/problems/count-number-of-possible-root-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/count-number-of-possible-root-nodes/) | 树、深度优先搜索、数组、哈希表、动态规划 | 困难 | +| [0310. 最小高度树](https://leetcode.cn/problems/minimum-height-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/minimum-height-trees.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0834. 树中距离之和](https://leetcode.cn/problems/sum-of-distances-in-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/sum-of-distances-in-tree.md) | 树、深度优先搜索、图、动态规划 | 困难 | +| [2581. 统计可能的树根数目](https://leetcode.cn/problems/count-number-of-possible-root-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/count-number-of-possible-root-nodes.md) | 树、深度优先搜索、数组、哈希表、动态规划 | 困难 | ### 状态压缩 DP 题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1879. 两个数组最小的异或值之和](https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays/) | 位运算、数组、动态规划、状态压缩 | 困难 | -| [2172. 数组的最大与和](https://leetcode.cn/problems/maximum-and-sum-of-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/maximum-and-sum-of-array/) | 位运算、数组、动态规划、状态压缩 | 困难 | -| [1947. 最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| [1595. 连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| [1494. 并行课程 II](https://leetcode.cn/problems/parallel-courses-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/parallel-courses-ii/) | 位运算、图、动态规划、状态压缩 | 困难 | -| [1655. 分配重复整数](https://leetcode.cn/problems/distribute-repeating-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/distribute-repeating-integers/) | 位运算、数组、动态规划、回溯、状态压缩 | 困难 | -| [1986. 完成任务的最少工作时间段](https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| [1434. 每个人戴不同帽子的方案数](https://leetcode.cn/problems/number-of-ways-to-wear-different-hats-to-each-other/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-ways-to-wear-different-hats-to-each-other/) | 位运算、数组、动态规划、状态压缩 | 困难 | -| [1799. N 次操作后的最大分数和](https://leetcode.cn/problems/maximize-score-after-n-operations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximize-score-after-n-operations/) | 位运算、数组、数学、动态规划、回溯、状态压缩、数论 | 困难 | -| [1681. 最小不兼容性](https://leetcode.cn/problems/minimum-incompatibility/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-incompatibility/) | 位运算、数组、动态规划、状态压缩 | 困难 | -| [0526. 优美的排列](https://leetcode.cn/problems/beautiful-arrangement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/beautiful-arrangement/) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | -| [0351. 安卓系统手势解锁](https://leetcode.cn/problems/android-unlock-patterns/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/android-unlock-patterns/) | 位运算、动态规划、回溯、状态压缩 | 中等 | -| [0464. 我能赢吗](https://leetcode.cn/problems/can-i-win/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/can-i-win/) | 位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 | 中等 | -| [0847. 访问所有节点的最短路径](https://leetcode.cn/problems/shortest-path-visiting-all-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-path-visiting-all-nodes/) | 位运算、广度优先搜索、图、动态规划、状态压缩 | 困难 | -| [0638. 大礼包](https://leetcode.cn/problems/shopping-offers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/shopping-offers/) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | -| [1994. 好子集的数目](https://leetcode.cn/problems/the-number-of-good-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/the-number-of-good-subsets/) | 位运算、数组、数学、动态规划、状态压缩 | 困难 | -| [1349. 参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam/) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | -| [0698. 划分为k个相等的子集](https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/partition-to-k-equal-sum-subsets/) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | -| [0943. 最短超级串](https://leetcode.cn/problems/find-the-shortest-superstring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/find-the-shortest-superstring/) | 位运算、数组、字符串、动态规划、状态压缩 | 困难 | -| [0691. 贴纸拼词](https://leetcode.cn/problems/stickers-to-spell-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/stickers-to-spell-word/) | 位运算、记忆化搜索、数组、哈希表、字符串、动态规划、回溯、状态压缩 | 困难 | -| [0982. 按位与为零的三元组](https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero/) | 位运算、数组、哈希表 | 困难 | +| [1879. 两个数组最小的异或值之和](https://leetcode.cn/problems/minimum-xor-sum-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays.md) | 位运算、数组、动态规划、状态压缩 | 困难 | +| [2172. 数组的最大与和](https://leetcode.cn/problems/maximum-and-sum-of-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/maximum-and-sum-of-array.md) | 位运算、数组、动态规划、状态压缩 | 困难 | +| [1947. 最大兼容性评分和](https://leetcode.cn/problems/maximum-compatibility-score-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1595. 连通两组点的最小成本](https://leetcode.cn/problems/minimum-cost-to-connect-two-groups-of-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | +| [1494. 并行课程 II](https://leetcode.cn/problems/parallel-courses-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/parallel-courses-ii.md) | 位运算、图、动态规划、状态压缩 | 困难 | +| [1655. 分配重复整数](https://leetcode.cn/problems/distribute-repeating-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/distribute-repeating-integers.md) | 位运算、数组、动态规划、回溯、状态压缩 | 困难 | +| [1986. 完成任务的最少工作时间段](https://leetcode.cn/problems/minimum-number-of-work-sessions-to-finish-the-tasks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [1434. 每个人戴不同帽子的方案数](https://leetcode.cn/problems/number-of-ways-to-wear-different-hats-to-each-other/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-ways-to-wear-different-hats-to-each-other.md) | 位运算、数组、动态规划、状态压缩 | 困难 | +| [1799. N 次操作后的最大分数和](https://leetcode.cn/problems/maximize-score-after-n-operations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximize-score-after-n-operations.md) | 位运算、数组、数学、动态规划、回溯、状态压缩、数论 | 困难 | +| [1681. 最小不兼容性](https://leetcode.cn/problems/minimum-incompatibility/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-incompatibility.md) | 位运算、数组、动态规划、状态压缩 | 困难 | +| [0526. 优美的排列](https://leetcode.cn/problems/beautiful-arrangement/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/beautiful-arrangement.md) | 位运算、数组、动态规划、回溯、状态压缩 | 中等 | +| [0351. 安卓系统手势解锁](https://leetcode.cn/problems/android-unlock-patterns/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/android-unlock-patterns.md) | 位运算、动态规划、回溯、状态压缩 | 中等 | +| [0464. 我能赢吗](https://leetcode.cn/problems/can-i-win/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/can-i-win.md) | 位运算、记忆化搜索、数学、动态规划、状态压缩、博弈 | 中等 | +| [0847. 访问所有节点的最短路径](https://leetcode.cn/problems/shortest-path-visiting-all-nodes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-path-visiting-all-nodes.md) | 位运算、广度优先搜索、图、动态规划、状态压缩 | 困难 | +| [0638. 大礼包](https://leetcode.cn/problems/shopping-offers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/shopping-offers.md) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | +| [1994. 好子集的数目](https://leetcode.cn/problems/the-number-of-good-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/the-number-of-good-subsets.md) | 位运算、数组、数学、动态规划、状态压缩 | 困难 | +| [1349. 参加考试的最大学生数](https://leetcode.cn/problems/maximum-students-taking-exam/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam.md) | 位运算、数组、动态规划、状态压缩、矩阵 | 困难 | +| [0698. 划分为k个相等的子集](https://leetcode.cn/problems/partition-to-k-equal-sum-subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/partition-to-k-equal-sum-subsets.md) | 位运算、记忆化搜索、数组、动态规划、回溯、状态压缩 | 中等 | +| [0943. 最短超级串](https://leetcode.cn/problems/find-the-shortest-superstring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/find-the-shortest-superstring.md) | 位运算、数组、字符串、动态规划、状态压缩 | 困难 | +| [0691. 贴纸拼词](https://leetcode.cn/problems/stickers-to-spell-word/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/stickers-to-spell-word.md) | 位运算、记忆化搜索、数组、哈希表、字符串、动态规划、回溯、状态压缩 | 困难 | +| [0982. 按位与为零的三元组](https://leetcode.cn/problems/triples-with-bitwise-and-equal-to-zero/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero.md) | 位运算、数组、哈希表 | 困难 | ### 计数 DP 题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) | 数学、动态规划、组合数学 | 中等 | -| [0063. 不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii/) | 数组、动态规划、矩阵 | 中等 | -| [0343. 整数拆分](https://leetcode.cn/problems/integer-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break/) | 数学、动态规划 | 中等 | -| [0096. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees/) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | -| [1259. 不相交的握手](https://leetcode.cn/problems/handshakes-that-dont-cross/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/handshakes-that-dont-cross/) | 数学、动态规划 | 困难 | -| [0790. 多米诺和托米诺平铺](https://leetcode.cn/problems/domino-and-tromino-tiling/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/domino-and-tromino-tiling/) | 动态规划 | 中等 | -| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | -| [0746. 使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/min-cost-climbing-stairs/) | 数组、动态规划 | 简单 | -| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number/) | 记忆化搜索、数学、动态规划 | 简单 | +| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths.md) | 数学、动态规划、组合数学 | 中等 | +| [0063. 不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii.md) | 数组、动态规划、矩阵 | 中等 | +| [0343. 整数拆分](https://leetcode.cn/problems/integer-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break.md) | 数学、动态规划 | 中等 | +| [0096. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees.md) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | +| [1259. 不相交的握手](https://leetcode.cn/problems/handshakes-that-dont-cross/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/handshakes-that-dont-cross.md) | 数学、动态规划 | 困难 | +| [0790. 多米诺和托米诺平铺](https://leetcode.cn/problems/domino-and-tromino-tiling/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/domino-and-tromino-tiling.md) | 动态规划 | 中等 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [0746. 使用最小花费爬楼梯](https://leetcode.cn/problems/min-cost-climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/min-cost-climbing-stairs.md) | 数组、动态规划 | 简单 | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [1137. 第 N 个泰波那契数](https://leetcode.cn/problems/n-th-tribonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number.md) | 记忆化搜索、数学、动态规划 | 简单 | ### 数位 DP 题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [2376. 统计特殊整数](https://leetcode.cn/problems/count-special-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2300-2399/count-special-integers/) | 数学、动态规划 | 困难 | -| [0357. 统计各位数字都不同的数字个数](https://leetcode.cn/problems/count-numbers-with-unique-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-numbers-with-unique-digits/) | 数学、动态规划、回溯 | 中等 | -| [1012. 至少有 1 位重复的数字](https://leetcode.cn/problems/numbers-with-repeated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/numbers-with-repeated-digits/) | 数学、动态规划 | 困难 | -| [0902. 最大为 N 的数字组合](https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/numbers-at-most-n-given-digit-set/) | 数组、数学、字符串、二分查找、动态规划 | 困难 | -| [0788. 旋转数字](https://leetcode.cn/problems/rotated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotated-digits/) | 数学、动态规划 | 中等 | -| [0600. 不含连续1的非负整数](https://leetcode.cn/problems/non-negative-integers-without-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones/) | 动态规划 | 困难 | -| [0233. 数字 1 的个数](https://leetcode.cn/problems/number-of-digit-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-digit-one/) | 递归、数学、动态规划 | 困难 | -| [2719. 统计整数数目](https://leetcode.cn/problems/count-of-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/count-of-integers/) | 数学、字符串、动态规划 | 困难 | -| [0248. 中心对称数 III](https://leetcode.cn/problems/strobogrammatic-number-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/strobogrammatic-number-iii/) | 递归、数组、字符串 | 困难 | -| [1088. 易混淆数 II](https://leetcode.cn/problems/confusing-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/confusing-number-ii/) | 数学、回溯 | 困难 | -| [1067. 范围内的数字计数](https://leetcode.cn/problems/digit-count-in-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/digit-count-in-range/) | 数学、动态规划 | 困难 | -| [1742. 盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-balls-in-a-box/) | 哈希表、数学、计数 | 简单 | -| [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci/) | 递归、数学、动态规划 | 困难 | +| [2376. 统计特殊整数](https://leetcode.cn/problems/count-special-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2300-2399/count-special-integers.md) | 数学、动态规划 | 困难 | +| [0357. 统计各位数字都不同的数字个数](https://leetcode.cn/problems/count-numbers-with-unique-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-numbers-with-unique-digits.md) | 数学、动态规划、回溯 | 中等 | +| [1012. 至少有 1 位重复的数字](https://leetcode.cn/problems/numbers-with-repeated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/numbers-with-repeated-digits.md) | 数学、动态规划 | 困难 | +| [0902. 最大为 N 的数字组合](https://leetcode.cn/problems/numbers-at-most-n-given-digit-set/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/numbers-at-most-n-given-digit-set.md) | 数组、数学、字符串、二分查找、动态规划 | 困难 | +| [0788. 旋转数字](https://leetcode.cn/problems/rotated-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotated-digits.md) | 数学、动态规划 | 中等 | +| [0600. 不含连续1的非负整数](https://leetcode.cn/problems/non-negative-integers-without-consecutive-ones/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones.md) | 动态规划 | 困难 | +| [0233. 数字 1 的个数](https://leetcode.cn/problems/number-of-digit-one/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-digit-one.md) | 递归、数学、动态规划 | 困难 | +| [2719. 统计整数数目](https://leetcode.cn/problems/count-of-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/count-of-integers.md) | 数学、字符串、动态规划 | 困难 | +| [0248. 中心对称数 III](https://leetcode.cn/problems/strobogrammatic-number-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/strobogrammatic-number-iii.md) | 递归、数组、字符串 | 困难 | +| [1088. 易混淆数 II](https://leetcode.cn/problems/confusing-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/confusing-number-ii.md) | 数学、回溯 | 困难 | +| [1067. 范围内的数字计数](https://leetcode.cn/problems/digit-count-in-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/digit-count-in-range.md) | 数学、动态规划 | 困难 | +| [1742. 盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-balls-in-a-box.md) | 哈希表、数学、计数 | 简单 | +| [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci.md) | 递归、数学、动态规划 | 困难 | ### 概率 DP 题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0688. 骑士在棋盘上的概率](https://leetcode.cn/problems/knight-probability-in-chessboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/knight-probability-in-chessboard/) | 动态规划 | 中等 | -| [0808. 分汤](https://leetcode.cn/problems/soup-servings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/soup-servings/) | 数学、动态规划、概率与统计 | 中等 | -| [0837. 新 21 点](https://leetcode.cn/problems/new-21-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/new-21-game/) | 数学、动态规划、滑动窗口、概率与统计 | 中等 | -| [1230. 抛掷硬币](https://leetcode.cn/problems/toss-strange-coins/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/toss-strange-coins/) | 数组、数学、动态规划、概率与统计 | 中等 | -| [1467. 两个盒子中球的颜色数相同的概率](https://leetcode.cn/problems/probability-of-a-two-boxes-having-the-same-number-of-distinct-balls/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/probability-of-a-two-boxes-having-the-same-number-of-distinct-balls/) | 数组、数学、动态规划、回溯、组合数学、概率与统计 | 困难 | -| [1227. 飞机座位分配概率](https://leetcode.cn/problems/airplane-seat-assignment-probability/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/airplane-seat-assignment-probability/) | 脑筋急转弯、数学、动态规划、概率与统计 | 中等 | -| [1377. T 秒后青蛙的位置](https://leetcode.cn/problems/frog-position-after-t-seconds/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/frog-position-after-t-seconds/) | 树、深度优先搜索、广度优先搜索、图 | 困难 | -| [LCR 185. 统计结果概率](https://leetcode.cn/problems/nge-tou-zi-de-dian-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/nge-tou-zi-de-dian-shu-lcof/) | 数学、动态规划、概率与统计 | 中等 | +| [0688. 骑士在棋盘上的概率](https://leetcode.cn/problems/knight-probability-in-chessboard/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/knight-probability-in-chessboard.md) | 动态规划 | 中等 | +| [0808. 分汤](https://leetcode.cn/problems/soup-servings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/soup-servings.md) | 数学、动态规划、概率与统计 | 中等 | +| [0837. 新 21 点](https://leetcode.cn/problems/new-21-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/new-21-game.md) | 数学、动态规划、滑动窗口、概率与统计 | 中等 | +| [1230. 抛掷硬币](https://leetcode.cn/problems/toss-strange-coins/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/toss-strange-coins.md) | 数组、数学、动态规划、概率与统计 | 中等 | +| [1467. 两个盒子中球的颜色数相同的概率](https://leetcode.cn/problems/probability-of-a-two-boxes-having-the-same-number-of-distinct-balls/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/probability-of-a-two-boxes-having-the-same-number-of-distinct-balls.md) | 数组、数学、动态规划、回溯、组合数学、概率与统计 | 困难 | +| [1227. 飞机座位分配概率](https://leetcode.cn/problems/airplane-seat-assignment-probability/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/airplane-seat-assignment-probability.md) | 脑筋急转弯、数学、动态规划、概率与统计 | 中等 | +| [1377. T 秒后青蛙的位置](https://leetcode.cn/problems/frog-position-after-t-seconds/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/frog-position-after-t-seconds.md) | 树、深度优先搜索、广度优先搜索、图 | 困难 | +| [LCR 185. 统计结果概率](https://leetcode.cn/problems/nge-tou-zi-de-dian-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/nge-tou-zi-de-dian-shu-lcof.md) | 数学、动态规划、概率与统计 | 中等 | diff --git a/docs/00_preface/00_07_interview_100_list.md b/docs/00_preface/00_07_interview_100_list.md index 70c8bfba..7476a928 100644 --- a/docs/00_preface/00_07_interview_100_list.md +++ b/docs/00_preface/00_07_interview_100_list.md @@ -6,8 +6,8 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix/) | 数组、矩阵、模拟 | 中等 | -| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image/) | 数组、数学、矩阵 | 中等 | +| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix.md) | 数组、矩阵、模拟 | 中等 | +| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image.md) | 数组、数学、矩阵 | 中等 | ### 排序算法题目 @@ -16,61 +16,61 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | #### 希尔排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | #### 归并排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array.md) | 数组、双指针、排序 | 简单 | #### 快速排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) | 数组、哈希表、分治、计数、排序 | 简单 | #### 堆排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | #### 计数排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | #### 桶排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | #### 其他排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | -| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | -| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number/) | 贪心、数组、字符串、排序 | 中等 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) | 位运算、数组 | 简单 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals.md) | 数组、排序 | 中等 | +| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number.md) | 贪心、数组、字符串、排序 | 中等 | ### 二分查找题目 @@ -79,20 +79,20 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search/) | 数组、二分查找 | 简单 | -| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array/) | 数组、二分查找 | 中等 | -| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | -| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | -| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element/) | 数组、二分查找 | 中等 | -| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | -| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii/) | 数组、二分查找、分治、矩阵 | 中等 | +| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search.md) | 数组、二分查找 | 简单 | +| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array.md) | 数组、二分查找 | 中等 | +| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array.md) | 数组、二分查找 | 中等 | +| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array.md) | 数组、二分查找 | 中等 | +| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element.md) | 数组、二分查找 | 中等 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays.md) | 数组、二分查找、分治 | 困难 | +| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii.md) | 数组、二分查找、分治、矩阵 | 中等 | #### 二分答案题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx/) | 数学、二分查找 | 简单 | +| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx.md) | 数学、二分查找 | 简单 | ### 双指针题目 @@ -101,22 +101,22 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum.md) | 数组、双指针、排序 | 中等 | #### 快慢指针题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | -| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes.md) | 数组、双指针 | 简单 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array.md) | 数组、双指针、排序 | 简单 | #### 分离双指针题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings.md) | 数学、字符串、模拟 | 简单 | ### 滑动窗口题目 @@ -125,16 +125,16 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | #### 不定长度窗口题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring/) | 哈希表、字符串、滑动窗口 | 困难 | -| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring.md) | 哈希表、字符串、滑动窗口 | 困难 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | ## 第 2 章 链表 @@ -143,34 +143,34 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list/) | 链表 | 简单 | -| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii/) | 链表、双指针 | 中等 | -| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | -| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | -| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group/) | 递归、链表 | 困难 | -| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list/) | 栈、递归、链表、双指针 | 简单 | +| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list.md) | 链表 | 简单 | +| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii.md) | 链表、双指针 | 中等 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list.md) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii.md) | 链表 | 中等 | +| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group.md) | 递归、链表 | 困难 | +| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list.md) | 栈、递归、链表、双指针 | 简单 | ### 链表排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list/) | 链表、双指针、分治、排序、归并排序 | 中等 | -| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | -| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md) | 链表、双指针、分治、排序、归并排序 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists.md) | 递归、链表 | 简单 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | ### 链表双指针题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle/) | 哈希表、链表、双指针 | 简单 | -| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii/) | 哈希表、链表、双指针 | 中等 | -| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists/) | 哈希表、链表、双指针 | 简单 | -| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list/) | 链表、双指针 | 中等 | -| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | 链表、双指针 | 简单 | -| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list/) | 栈、递归、链表、双指针 | 中等 | -| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers/) | 递归、链表、数学 | 中等 | +| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle.md) | 哈希表、链表、双指针 | 简单 | +| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii.md) | 哈希表、链表、双指针 | 中等 | +| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists.md) | 哈希表、链表、双指针 | 简单 | +| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list.md) | 链表、双指针 | 中等 | +| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof.md) | 链表、双指针 | 简单 | +| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list.md) | 栈、递归、链表、双指针 | 中等 | +| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers.md) | 递归、链表、数学 | 中等 | ## 第 3 章 堆栈、队列、哈希表 @@ -179,45 +179,45 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack/) | 栈、设计 | 中等 | -| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses/) | 栈、字符串 | 简单 | -| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii/) | 栈、数学、字符串 | 中等 | -| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks/) | 栈、设计、队列 | 简单 | -| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string/) | 栈、递归、字符串 | 中等 | -| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | +| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack.md) | 栈、设计 | 中等 | +| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses.md) | 栈、字符串 | 简单 | +| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii.md) | 栈、数学、字符串 | 中等 | +| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks.md) | 栈、设计、队列 | 简单 | +| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string.md) | 栈、递归、字符串 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses.md) | 栈、字符串、动态规划 | 困难 | ### 单调栈 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) | 栈、数组、双指针、动态规划、单调栈 | 困难 | +| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | ### 队列基础题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues/) | 栈、设计、队列 | 简单 | +| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues.md) | 栈、设计、队列 | 简单 | ### 优先队列题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | ### 哈希表题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | -| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | -| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive/) | 数组、哈希表 | 困难 | -| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | -| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum.md) | 数组、哈希表 | 简单 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum.md) | 数组、双指针、排序 | 中等 | +| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive.md) | 数组、哈希表 | 困难 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence.md) | 并查集、数组、哈希表 | 中等 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) | 位运算、数组 | 简单 | ## 第 4 章 字符串 @@ -226,12 +226,12 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) | 双指针、字符串、动态规划 | 中等 | -| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | -| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string/) | 双指针、字符串 | 中等 | -| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings/) | 数学、字符串、模拟 | 中等 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring.md) | 双指针、字符串、动态规划 | 中等 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings.md) | 数学、字符串、模拟 | 简单 | +| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string.md) | 双指针、字符串 | 中等 | +| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings.md) | 数学、字符串、模拟 | 中等 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | ## 第 5 章 树 @@ -240,40 +240,40 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | -| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | -| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree/) | 树、深度优先搜索、二叉树 | 中等 | -| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii/) | 树、深度优先搜索、回溯、二叉树 | 中等 | -| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii.md) | 树、深度优先搜索、回溯、二叉树 | 中等 | +| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | ### 二叉树的还原题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal.md) | 树、数组、哈希表、分治、二叉树 | 中等 | ### 二叉搜索树题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | +| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree.md) | 树、深度优先搜索、二叉树 | 简单 | ### 并查集题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence.md) | 并查集、数组、哈希表 | 中等 | ## 第 6 章 图论 @@ -282,25 +282,25 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers/) | 树、深度优先搜索、二叉树 | 中等 | -| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | -| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree.md) | 树、深度优先搜索、二叉树 | 简单 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | ### 图的广度优先搜索题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | -| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change.md) | 广度优先搜索、数组、动态规划 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | ## 第 7 章 基础算法 @@ -309,61 +309,61 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | -| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | -| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum.md) | 数组、哈希表 | 简单 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets.md) | 位运算、数组、回溯 | 中等 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square.md) | 数组、动态规划、矩阵 | 中等 | ### 递归算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs/) | 递归、链表 | 中等 | -| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | -| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | -| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | -| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | -| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs.md) | 递归、链表 | 中等 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list.md) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii.md) | 链表 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists.md) | 递归、链表 | 简单 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | ### 分治算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | -| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | -| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) | 数组、分治、动态规划 | 中等 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays.md) | 数组、二分查找、分治 | 困难 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) | 数组、哈希表、分治、计数、排序 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | ### 回溯算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations/) | 数组、回溯 | 中等 | -| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses/) | 字符串、动态规划、回溯 | 中等 | -| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | -| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum/) | 数组、回溯 | 中等 | -| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses/) | 字符串、回溯 | 中等 | +| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations.md) | 数组、回溯 | 中等 | +| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses.md) | 字符串、动态规划、回溯 | 中等 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets.md) | 位运算、数组、回溯 | 中等 | +| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum.md) | 数组、回溯 | 中等 | +| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses.md) | 字符串、回溯 | 中等 | ### 贪心算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | -| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | -| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) | 贪心、数组、动态规划 | 中等 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) | 数组、分治、动态规划 | 中等 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals.md) | 数组、排序 | 中等 | +| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii.md) | 贪心、数组、动态规划 | 中等 | ### 位运算题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) | 位运算、数组 | 简单 | ## 第 8 章 动态规划 @@ -372,19 +372,19 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | -| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock/) | 数组、动态规划 | 简单 | -| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | -| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence/) | 数组、二分查找、动态规划 | 中等 | -| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence/) | 字符串、动态规划 | 中等 | -| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum/) | 数组、动态规划、矩阵 | 中等 | -| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance/) | 字符串、动态规划 | 中等 | -| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | -| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | -| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) | 数学、动态规划、组合数学 | 中等 | -| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray/) | 数组、动态规划 | 中等 | -| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber/) | 数组、动态规划 | 中等 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock.md) | 数组、动态规划 | 简单 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change.md) | 广度优先搜索、数组、动态规划 | 中等 | +| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence.md) | 数组、二分查找、动态规划 | 中等 | +| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence.md) | 字符串、动态规划 | 中等 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum.md) | 数组、动态规划、矩阵 | 中等 | +| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance.md) | 字符串、动态规划 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses.md) | 栈、字符串、动态规划 | 困难 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square.md) | 数组、动态规划、矩阵 | 中等 | +| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths.md) | 数学、动态规划、组合数学 | 中等 | +| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray.md) | 数组、动态规划 | 中等 | +| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber.md) | 数组、动态规划 | 中等 | ## 补充题目 @@ -393,24 +393,24 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0146. LRU 缓存](https://leetcode.cn/problems/lru-cache/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/lru-cache/) | 设计、哈希表、链表、双向链表 | 中等 | +| [0146. LRU 缓存](https://leetcode.cn/problems/lru-cache/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/lru-cache.md) | 设计、哈希表、链表、双向链表 | 中等 | #### 模拟题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0008. 字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi/) | 字符串 | 中等 | -| [0165. 比较版本号](https://leetcode.cn/problems/compare-version-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/compare-version-numbers/) | 双指针、字符串 | 中等 | -| [0468. 验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address/) | 字符串 | 中等 | +| [0008. 字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi.md) | 字符串 | 中等 | +| [0165. 比较版本号](https://leetcode.cn/problems/compare-version-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/compare-version-numbers.md) | 双指针、字符串 | 中等 | +| [0468. 验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address.md) | 字符串 | 中等 | #### 思维锻炼题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0031. 下一个排列](https://leetcode.cn/problems/next-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/next-permutation/) | 数组、双指针 | 中等 | -| [0470. 用 Rand7() 实现 Rand10()](https://leetcode.cn/problems/implement-rand10-using-rand7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/implement-rand10-using-rand7/) | 数学、拒绝采样、概率与统计、随机化 | 中等 | +| [0031. 下一个排列](https://leetcode.cn/problems/next-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/next-permutation.md) | 数组、双指针 | 中等 | +| [0470. 用 Rand7() 实现 Rand10()](https://leetcode.cn/problems/implement-rand10-using-rand7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/implement-rand10-using-rand7.md) | 数学、拒绝采样、概率与统计、随机化 | 中等 | diff --git a/docs/00_preface/00_08_interview_200_list.md b/docs/00_preface/00_08_interview_200_list.md index c59ebaba..e389bb52 100644 --- a/docs/00_preface/00_08_interview_200_list.md +++ b/docs/00_preface/00_08_interview_200_list.md @@ -6,11 +6,11 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0189. 轮转数组](https://leetcode.cn/problems/rotate-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array/) | 数组、数学、双指针 | 中等 | -| [0498. 对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse/) | 数组、矩阵、模拟 | 中等 | -| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image/) | 数组、数学、矩阵 | 中等 | -| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix/) | 数组、矩阵、模拟 | 中等 | -| [0059. 螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii/) | 数组、矩阵、模拟 | 中等 | +| [0189. 轮转数组](https://leetcode.cn/problems/rotate-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array.md) | 数组、数学、双指针 | 中等 | +| [0498. 对角线遍历](https://leetcode.cn/problems/diagonal-traverse/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse.md) | 数组、矩阵、模拟 | 中等 | +| [0048. 旋转图像](https://leetcode.cn/problems/rotate-image/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image.md) | 数组、数学、矩阵 | 中等 | +| [0054. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix.md) | 数组、矩阵、模拟 | 中等 | +| [0059. 螺旋矩阵 II](https://leetcode.cn/problems/spiral-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii.md) | 数组、矩阵、模拟 | 中等 | ### 排序算法题目 @@ -19,86 +19,86 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes.md) | 数组、双指针 | 简单 | #### 选择排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | #### 插入排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) | 数组、双指针、排序 | 中等 | +| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors.md) | 数组、双指针、排序 | 中等 | #### 希尔排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | #### 归并排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | -| [LCR 170. 交易逆序对的总数](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof/) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array.md) | 数组、双指针、排序 | 简单 | +| [LCR 170. 交易逆序对的总数](https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md) | 树状数组、线段树、数组、二分查找、分治、有序集合、归并排序 | 困难 | #### 快速排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) | 数组、哈希表、分治、计数、排序 | 简单 | #### 堆排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | -| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| [LCR 159. 库存管理 III](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof/) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0215. 数组中的第K个最大元素](https://leetcode.cn/problems/kth-largest-element-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [LCR 159. 库存管理 III](https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof.md) | 数组、分治、快速选择、排序、堆(优先队列) | 简单 | #### 计数排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | #### 桶排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | +| [0912. 排序数组](https://leetcode.cn/problems/sort-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) | 数组、分治、桶排序、计数排序、基数排序、排序、堆(优先队列)、归并排序 | 中等 | #### 基数排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap/) | 数组、桶排序、基数排序、排序 | 中等 | +| [0164. 最大间距](https://leetcode.cn/problems/maximum-gap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap.md) | 数组、桶排序、基数排序、排序 | 中等 | #### 其他排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | -| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | -| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number/) | 贪心、数组、字符串、排序 | 中等 | -| [0384. 打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array/) | 设计、数组、数学、随机化 | 中等 | -| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | 贪心、字符串、排序 | 中等 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) | 位运算、数组 | 简单 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals.md) | 数组、排序 | 中等 | +| [0179. 最大数](https://leetcode.cn/problems/largest-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number.md) | 贪心、数组、字符串、排序 | 中等 | +| [0384. 打乱数组](https://leetcode.cn/problems/shuffle-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array.md) | 设计、数组、数学、随机化 | 中等 | +| [LCR 164. 破解闯关密码](https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof.md) | 贪心、字符串、排序 | 中等 | ### 二分查找题目 @@ -107,33 +107,33 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search/) | 数组、二分查找 | 简单 | -| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array/) | 数组、二分查找 | 中等 | -| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | -| [0154. 寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii/) | 数组、二分查找 | 困难 | -| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array/) | 数组、二分查找 | 中等 | -| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element/) | 数组、二分查找 | 中等 | -| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | -| [0074. 搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix/) | 数组、二分查找、矩阵 | 中等 | -| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii/) | 数组、二分查找、分治、矩阵 | 中等 | +| [0704. 二分查找](https://leetcode.cn/problems/binary-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search.md) | 数组、二分查找 | 简单 | +| [0034. 在排序数组中查找元素的第一个和最后一个位置](https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array.md) | 数组、二分查找 | 中等 | +| [0153. 寻找旋转排序数组中的最小值](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array.md) | 数组、二分查找 | 中等 | +| [0154. 寻找旋转排序数组中的最小值 II](https://leetcode.cn/problems/find-minimum-in-rotated-sorted-array-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii.md) | 数组、二分查找 | 困难 | +| [0033. 搜索旋转排序数组](https://leetcode.cn/problems/search-in-rotated-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array.md) | 数组、二分查找 | 中等 | +| [0162. 寻找峰值](https://leetcode.cn/problems/find-peak-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element.md) | 数组、二分查找 | 中等 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays.md) | 数组、二分查找、分治 | 困难 | +| [0074. 搜索二维矩阵](https://leetcode.cn/problems/search-a-2d-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix.md) | 数组、二分查找、矩阵 | 中等 | +| [0240. 搜索二维矩阵 II](https://leetcode.cn/problems/search-a-2d-matrix-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii.md) | 数组、二分查找、分治、矩阵 | 中等 | #### 二分答案题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx/) | 数学、二分查找 | 简单 | -| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number/) | 位运算、数组、双指针、二分查找 | 中等 | -| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) | 递归、数学 | 中等 | -| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit/) | 数学、二分查找 | 中等 | +| [0069. x 的平方根](https://leetcode.cn/problems/sqrtx/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx.md) | 数学、二分查找 | 简单 | +| [0287. 寻找重复数](https://leetcode.cn/problems/find-the-duplicate-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number.md) | 位运算、数组、双指针、二分查找 | 中等 | +| [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n.md) | 递归、数学 | 中等 | +| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit.md) | 数学、二分查找 | 中等 | #### 复杂的二分查找问题 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays/) | 数组、哈希表、双指针、二分查找、排序 | 简单 | +| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0349. 两个数组的交集](https://leetcode.cn/problems/intersection-of-two-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays.md) | 数组、哈希表、双指针、二分查找、排序 | 简单 | ### 双指针题目 @@ -142,30 +142,30 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0611. 有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number/) | 贪心、数组、双指针、二分查找、排序 | 中等 | -| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | -| [0016. 最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest/) | 数组、双指针、排序 | 中等 | -| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) | 双指针、字符串 | 简单 | -| [0011. 盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water/) | 贪心、数组、双指针 | 中等 | -| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) | 数组、双指针、排序 | 中等 | -| [LCR 139. 训练计划 I](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | 数组、双指针、排序 | 简单 | -| [0443. 压缩字符串](https://leetcode.cn/problems/string-compression/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression/) | 双指针、字符串 | 中等 | +| [0611. 有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number.md) | 贪心、数组、双指针、二分查找、排序 | 中等 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum.md) | 数组、双指针、排序 | 中等 | +| [0016. 最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest.md) | 数组、双指针、排序 | 中等 | +| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome.md) | 双指针、字符串 | 简单 | +| [0011. 盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water.md) | 贪心、数组、双指针 | 中等 | +| [0075. 颜色分类](https://leetcode.cn/problems/sort-colors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors.md) | 数组、双指针、排序 | 中等 | +| [LCR 139. 训练计划 I](https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof.md) | 数组、双指针、排序 | 简单 | +| [0443. 压缩字符串](https://leetcode.cn/problems/string-compression/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression.md) | 双指针、字符串 | 中等 | #### 快慢指针题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0026. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array/) | 数组、双指针 | 简单 | -| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) | 数组、双指针 | 简单 | -| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) | 数组、双指针、排序 | 简单 | +| [0026. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array.md) | 数组、双指针 | 简单 | +| [0283. 移动零](https://leetcode.cn/problems/move-zeroes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes.md) | 数组、双指针 | 简单 | +| [0088. 合并两个有序数组](https://leetcode.cn/problems/merge-sorted-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array.md) | 数组、双指针、排序 | 简单 | #### 分离双指针题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings.md) | 数学、字符串、模拟 | 简单 | ### 滑动窗口题目 @@ -174,19 +174,19 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | #### 不定长度窗口题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring/) | 哈希表、字符串、滑动窗口 | 困难 | -| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | -| [0862. 和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k/) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | -| [1004. 最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii/) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0076. 最小覆盖子串](https://leetcode.cn/problems/minimum-window-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring.md) | 哈希表、字符串、滑动窗口 | 困难 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | +| [0862. 和至少为 K 的最短子数组](https://leetcode.cn/problems/shortest-subarray-with-sum-at-least-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k.md) | 队列、数组、二分查找、前缀和、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [1004. 最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii.md) | 数组、二分查找、前缀和、滑动窗口 | 中等 | ## 02. 链表 @@ -195,38 +195,38 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list/) | 链表 | 简单 | -| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii/) | 链表、双指针 | 中等 | -| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | -| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | -| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group/) | 递归、链表 | 困难 | -| [0328. 奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list/) | 链表 | 中等 | -| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list/) | 栈、递归、链表、双指针 | 简单 | -| [0138. 随机链表的复制](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer/) | 哈希表、链表 | 中等 | -| [0061. 旋转链表](https://leetcode.cn/problems/rotate-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list/) | 链表、双指针 | 中等 | +| [0083. 删除排序链表中的重复元素](https://leetcode.cn/problems/remove-duplicates-from-sorted-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list.md) | 链表 | 简单 | +| [0082. 删除排序链表中的重复元素 II](https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii.md) | 链表、双指针 | 中等 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list.md) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii.md) | 链表 | 中等 | +| [0025. K 个一组翻转链表](https://leetcode.cn/problems/reverse-nodes-in-k-group/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group.md) | 递归、链表 | 困难 | +| [0328. 奇偶链表](https://leetcode.cn/problems/odd-even-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list.md) | 链表 | 中等 | +| [0234. 回文链表](https://leetcode.cn/problems/palindrome-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list.md) | 栈、递归、链表、双指针 | 简单 | +| [0138. 随机链表的复制](https://leetcode.cn/problems/copy-list-with-random-pointer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer.md) | 哈希表、链表 | 中等 | +| [0061. 旋转链表](https://leetcode.cn/problems/rotate-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list.md) | 链表、双指针 | 中等 | ### 链表排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list/) | 链表、双指针、分治、排序、归并排序 | 中等 | -| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | -| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0148. 排序链表](https://leetcode.cn/problems/sort-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md) | 链表、双指针、分治、排序、归并排序 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists.md) | 递归、链表 | 简单 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | ### 链表双指针题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle/) | 哈希表、链表、双指针 | 简单 | -| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii/) | 哈希表、链表、双指针 | 中等 | -| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists/) | 哈希表、链表、双指针 | 简单 | -| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list/) | 链表、双指针 | 中等 | -| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | 链表、双指针 | 简单 | -| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list/) | 栈、递归、链表、双指针 | 中等 | -| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers/) | 递归、链表、数学 | 中等 | -| [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii/) | 栈、链表、数学 | 中等 | +| [0141. 环形链表](https://leetcode.cn/problems/linked-list-cycle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle.md) | 哈希表、链表、双指针 | 简单 | +| [0142. 环形链表 II](https://leetcode.cn/problems/linked-list-cycle-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii.md) | 哈希表、链表、双指针 | 中等 | +| [0160. 相交链表](https://leetcode.cn/problems/intersection-of-two-linked-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists.md) | 哈希表、链表、双指针 | 简单 | +| [0019. 删除链表的倒数第 N 个结点](https://leetcode.cn/problems/remove-nth-node-from-end-of-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list.md) | 链表、双指针 | 中等 | +| [LCR 140. 训练计划 II](https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof.md) | 链表、双指针 | 简单 | +| [0143. 重排链表](https://leetcode.cn/problems/reorder-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list.md) | 栈、递归、链表、双指针 | 中等 | +| [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers.md) | 递归、链表、数学 | 中等 | +| [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii.md) | 栈、链表、数学 | 中等 | ## 第 3 章 堆栈、队列、哈希表 @@ -235,60 +235,60 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [1047. 删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string/) | 栈、字符串 | 简单 | -| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack/) | 栈、设计 | 中等 | -| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses/) | 栈、字符串 | 简单 | -| [0224. 基本计算器](https://leetcode.cn/problems/basic-calculator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator/) | 栈、递归、数学、字符串 | 困难 | -| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii/) | 栈、数学、字符串 | 中等 | -| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks/) | 栈、设计、队列 | 简单 | -| [LCR 125. 图书整理 II](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | 栈、设计、队列 | 简单 | -| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string/) | 栈、递归、字符串 | 中等 | -| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | -| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) | 栈、数组、单调栈 | 中等 | -| [0071. 简化路径](https://leetcode.cn/problems/simplify-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/simplify-path/) | 栈、字符串 | 中等 | +| [1047. 删除字符串中的所有相邻重复项](https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string.md) | 栈、字符串 | 简单 | +| [0155. 最小栈](https://leetcode.cn/problems/min-stack/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack.md) | 栈、设计 | 中等 | +| [0020. 有效的括号](https://leetcode.cn/problems/valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses.md) | 栈、字符串 | 简单 | +| [0224. 基本计算器](https://leetcode.cn/problems/basic-calculator/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator.md) | 栈、递归、数学、字符串 | 困难 | +| [0227. 基本计算器 II](https://leetcode.cn/problems/basic-calculator-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii.md) | 栈、数学、字符串 | 中等 | +| [0232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks.md) | 栈、设计、队列 | 简单 | +| [LCR 125. 图书整理 II](https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof.md) | 栈、设计、队列 | 简单 | +| [0394. 字符串解码](https://leetcode.cn/problems/decode-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string.md) | 栈、递归、字符串 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses.md) | 栈、字符串、动态规划 | 困难 | +| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures.md) | 栈、数组、单调栈 | 中等 | +| [0071. 简化路径](https://leetcode.cn/problems/simplify-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/simplify-path.md) | 栈、字符串 | 中等 | ### 单调栈 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) | 栈、数组、单调栈 | 中等 | -| [0503. 下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii/) | 栈、数组、单调栈 | 中等 | -| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) | 栈、数组、双指针、动态规划、单调栈 | 困难 | -| [0085. 最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximal-rectangle/) | 栈、数组、动态规划、矩阵、单调栈 | 困难 | +| [0739. 每日温度](https://leetcode.cn/problems/daily-temperatures/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures.md) | 栈、数组、单调栈 | 中等 | +| [0503. 下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii.md) | 栈、数组、单调栈 | 中等 | +| [0042. 接雨水](https://leetcode.cn/problems/trapping-rain-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water.md) | 栈、数组、双指针、动态规划、单调栈 | 困难 | +| [0085. 最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximal-rectangle.md) | 栈、数组、动态规划、矩阵、单调栈 | 困难 | ### 队列基础题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues/) | 栈、设计、队列 | 简单 | +| [0225. 用队列实现栈](https://leetcode.cn/problems/implement-stack-using-queues/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues.md) | 栈、设计、队列 | 简单 | ### 优先队列题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0347. 前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements/) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | -| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | -| [0295. 数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream/) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | -| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0347. 前 K 个高频元素](https://leetcode.cn/problems/top-k-frequent-elements/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements.md) | 数组、哈希表、分治、桶排序、计数、快速选择、排序、堆(优先队列) | 中等 | +| [0239. 滑动窗口最大值](https://leetcode.cn/problems/sliding-window-maximum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum.md) | 队列、数组、滑动窗口、单调队列、堆(优先队列) | 困难 | +| [0295. 数据流的中位数](https://leetcode.cn/problems/find-median-from-data-stream/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream.md) | 设计、双指针、数据流、排序、堆(优先队列) | 困难 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | ### 哈希表题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | -| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) | 数组、双指针、排序 | 中等 | -| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive/) | 数组、哈希表 | 困难 | -| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | -| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | -| [0242. 有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram/) | 哈希表、字符串、排序 | 简单 | -| [0442. 数组中重复的数据](https://leetcode.cn/problems/find-all-duplicates-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-duplicates-in-an-array/) | 数组、哈希表 | 中等 | -| [LCR 186. 文物朝代判断](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof/) | 数组、排序 | 简单 | -| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | -| [LCR 120. 寻找文件副本](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | 数组、哈希表、排序 | 简单 | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum.md) | 数组、哈希表 | 简单 | +| [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum.md) | 数组、双指针、排序 | 中等 | +| [0041. 缺失的第一个正数](https://leetcode.cn/problems/first-missing-positive/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive.md) | 数组、哈希表 | 困难 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence.md) | 并查集、数组、哈希表 | 中等 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) | 位运算、数组 | 简单 | +| [0242. 有效的字母异位词](https://leetcode.cn/problems/valid-anagram/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram.md) | 哈希表、字符串、排序 | 简单 | +| [0442. 数组中重复的数据](https://leetcode.cn/problems/find-all-duplicates-in-an-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-duplicates-in-an-array.md) | 数组、哈希表 | 中等 | +| [LCR 186. 文物朝代判断](https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof.md) | 数组、排序 | 简单 | +| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | +| [LCR 120. 寻找文件副本](https://leetcode.cn/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof.md) | 数组、哈希表、排序 | 简单 | ## 第 4 章 字符串 @@ -297,30 +297,30 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) | 双指针、字符串 | 简单 | -| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) | 双指针、字符串、动态规划 | 中等 | -| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) | 哈希表、字符串、滑动窗口 | 中等 | -| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) | 双指针、字符串 | 简单 | -| [0557. 反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii/) | 双指针、字符串 | 简单 | -| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) | 数学、字符串、模拟 | 简单 | -| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string/) | 双指针、字符串 | 中等 | -| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings/) | 数学、字符串、模拟 | 中等 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | +| [0125. 验证回文串](https://leetcode.cn/problems/valid-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome.md) | 双指针、字符串 | 简单 | +| [0005. 最长回文子串](https://leetcode.cn/problems/longest-palindromic-substring/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring.md) | 双指针、字符串、动态规划 | 中等 | +| [0003. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters.md) | 哈希表、字符串、滑动窗口 | 中等 | +| [0344. 反转字符串](https://leetcode.cn/problems/reverse-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string.md) | 双指针、字符串 | 简单 | +| [0557. 反转字符串中的单词 III](https://leetcode.cn/problems/reverse-words-in-a-string-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii.md) | 双指针、字符串 | 简单 | +| [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings.md) | 数学、字符串、模拟 | 简单 | +| [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string.md) | 双指针、字符串 | 中等 | +| [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings.md) | 数学、字符串、模拟 | 中等 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | ### 单模式串匹配题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0459. 重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern/) | 字符串、字符串匹配 | 简单 | +| [0459. 重复的子字符串](https://leetcode.cn/problems/repeated-substring-pattern/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern.md) | 字符串、字符串匹配 | 简单 | ### 字典树题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0208. 实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree/) | 设计、字典树、哈希表、字符串 | 中等 | -| [0440. 字典序的第K小数字](https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/k-th-smallest-in-lexicographical-order/) | 字典树 | 困难 | +| [0208. 实现 Trie (前缀树)](https://leetcode.cn/problems/implement-trie-prefix-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree.md) | 设计、字典树、哈希表、字符串 | 中等 | +| [0440. 字典序的第K小数字](https://leetcode.cn/problems/k-th-smallest-in-lexicographical-order/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/k-th-smallest-in-lexicographical-order.md) | 字典树 | 困难 | ## 第 5 章 树 @@ -329,52 +329,52 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | -| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal/) | 树、广度优先搜索、二叉树 | 中等 | -| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii/) | 树、深度优先搜索、回溯、二叉树 | 中等 | -| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree/) | 树、深度优先搜索、二叉树 | 中等 | -| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | -| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0297. 二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree/) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | -| [0114. 二叉树展开为链表](https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/flatten-binary-tree-to-linked-list/) | 栈、树、深度优先搜索、链表、二叉树 | 中等 | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0102. 二叉树的层序遍历](https://leetcode.cn/problems/binary-tree-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0103. 二叉树的锯齿形层序遍历](https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0101. 对称二叉树](https://leetcode.cn/problems/symmetric-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0112. 路径总和](https://leetcode.cn/problems/path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0113. 路径总和 II](https://leetcode.cn/problems/path-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii.md) | 树、深度优先搜索、回溯、二叉树 | 中等 | +| [0236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree.md) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0297. 二叉树的序列化与反序列化](https://leetcode.cn/problems/serialize-and-deserialize-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree.md) | 树、深度优先搜索、广度优先搜索、设计、字符串、二叉树 | 困难 | +| [0114. 二叉树展开为链表](https://leetcode.cn/problems/flatten-binary-tree-to-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/flatten-binary-tree-to-linked-list.md) | 栈、树、深度优先搜索、链表、二叉树 | 中等 | ### 二叉树的还原题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | -| [0106. 从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal/) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0105. 从前序与中序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal.md) | 树、数组、哈希表、分治、二叉树 | 中等 | +| [0106. 从中序与后序遍历序列构造二叉树](https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal.md) | 树、数组、哈希表、分治、二叉树 | 中等 | ### 二叉搜索树题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [0450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst/) | 树、二叉搜索树、二叉树 | 中等 | -| [LCR 174. 寻找二叉搜索树中的目标节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | -| [0230. 二叉搜索树中第 K 小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-smallest-element-in-a-bst/) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [0426. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list/) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | -| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | +| [0098. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0450. 删除二叉搜索树中的节点](https://leetcode.cn/problems/delete-node-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst.md) | 树、二叉搜索树、二叉树 | 中等 | +| [LCR 174. 寻找二叉搜索树中的目标节点](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | +| [0230. 二叉搜索树中第 K 小的元素](https://leetcode.cn/problems/kth-smallest-element-in-a-bst/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-smallest-element-in-a-bst.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [0426. 将二叉搜索树转化为排序的双向链表](https://leetcode.cn/problems/convert-binary-search-tree-to-sorted-doubly-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list.md) | 栈、树、深度优先搜索、二叉搜索树、链表、二叉树、双向链表 | 中等 | +| [0110. 平衡二叉树](https://leetcode.cn/problems/balanced-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree.md) | 树、深度优先搜索、二叉树 | 简单 | ### 并查集题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) | 并查集、数组、哈希表 | 中等 | +| [0128. 最长连续序列](https://leetcode.cn/problems/longest-consecutive-sequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence.md) | 并查集、数组、哈希表 | 中等 | ## 第 6 章 图论 @@ -383,43 +383,43 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) | 栈、树、深度优先搜索、二叉树 | 简单 | -| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers/) | 树、深度优先搜索、二叉树 | 中等 | -| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) | 树、深度优先搜索、二叉树 | 简单 | -| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | -| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0695. 岛屿的最大面积](https://leetcode.cn/problems/max-area-of-island/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-preorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0094. 二叉树的中序遍历](https://leetcode.cn/problems/binary-tree-inorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0145. 二叉树的后序遍历](https://leetcode.cn/problems/binary-tree-postorder-traversal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal.md) | 栈、树、深度优先搜索、二叉树 | 简单 | +| [0129. 求根节点到叶节点数字之和](https://leetcode.cn/problems/sum-root-to-leaf-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers.md) | 树、深度优先搜索、二叉树 | 中等 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0543. 二叉树的直径](https://leetcode.cn/problems/diameter-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree.md) | 树、深度优先搜索、二叉树 | 简单 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree.md) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | ### 图的广度优先搜索题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | -| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | -| [0207. 课程表](https://leetcode.cn/problems/course-schedule/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | -| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) | 树、广度优先搜索、二叉树 | 中等 | -| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree/) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | -| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [LCR 151. 彩灯装饰记录 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | 树、广度优先搜索、二叉树 | 中等 | +| [0200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands.md) | 深度优先搜索、广度优先搜索、并查集、数组、矩阵 | 中等 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change.md) | 广度优先搜索、数组、动态规划 | 中等 | +| [0207. 课程表](https://leetcode.cn/problems/course-schedule/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0199. 二叉树的右视图](https://leetcode.cn/problems/binary-tree-right-side-view/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | +| [0958. 二叉树的完全性检验](https://leetcode.cn/problems/check-completeness-of-a-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree.md) | 树、广度优先搜索、二叉树 | 中等 | +| [0572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subtree-of-another-tree.md) | 树、深度优先搜索、二叉树、字符串匹配、哈希函数 | 简单 | +| [0100. 相同的树](https://leetcode.cn/problems/same-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 151. 彩灯装饰记录 III](https://leetcode.cn/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof.md) | 树、广度优先搜索、二叉树 | 中等 | ### 图的拓扑排序题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0210. 课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii/) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | +| [0210. 课程表 II](https://leetcode.cn/problems/course-schedule-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii.md) | 深度优先搜索、广度优先搜索、图、拓扑排序 | 中等 | ## 第 7 章 基础算法 @@ -428,77 +428,77 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) | 数组、哈希表 | 简单 | -| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | -| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | -| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k/) | 数组、哈希表、前缀和 | 中等 | +| [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum.md) | 数组、哈希表 | 简单 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets.md) | 位运算、数组、回溯 | 中等 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square.md) | 数组、动态规划、矩阵 | 中等 | +| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k.md) | 数组、哈希表、前缀和 | 中等 | ### 递归算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs/) | 递归、链表 | 中等 | -| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) | 递归、链表 | 简单 | -| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) | 链表 | 中等 | -| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) | 递归、链表 | 简单 | -| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | -| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) | 树、深度优先搜索、动态规划、二叉树 | 困难 | -| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | 递归、数学 | 简单 | +| [0024. 两两交换链表中的节点](https://leetcode.cn/problems/swap-nodes-in-pairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs.md) | 递归、链表 | 中等 | +| [0206. 反转链表](https://leetcode.cn/problems/reverse-linked-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list.md) | 递归、链表 | 简单 | +| [0092. 反转链表 II](https://leetcode.cn/problems/reverse-linked-list-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii.md) | 链表 | 中等 | +| [0021. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists.md) | 递归、链表 | 简单 | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [0104. 二叉树的最大深度](https://leetcode.cn/problems/maximum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [0124. 二叉树中的最大路径和](https://leetcode.cn/problems/binary-tree-maximum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) | 树、深度优先搜索、动态规划、二叉树 | 困难 | +| [0226. 翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | +| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof.md) | 递归、数学 | 简单 | ### 分治算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) | 数组、二分查找、分治 | 困难 | -| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) | 链表、分治、堆(优先队列)、归并排序 | 困难 | -| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | -| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) | 数组、哈希表、分治、计数、排序 | 简单 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) | 字典树、字符串 | 简单 | -| [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 | +| [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays.md) | 数组、二分查找、分治 | 困难 | +| [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) | 数组、分治、动态规划 | 中等 | +| [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) | 数组、哈希表、分治、计数、排序 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | +| [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof.md) | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 | ### 回溯算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations/) | 数组、回溯 | 中等 | -| [0047. 全排列 II](https://leetcode.cn/problems/permutations-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii/) | 数组、回溯、排序 | 中等 | -| [0037. 解数独](https://leetcode.cn/problems/sudoku-solver/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver/) | 数组、哈希表、回溯、矩阵 | 困难 | -| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses/) | 字符串、动态规划、回溯 | 中等 | -| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) | 位运算、数组、回溯 | 中等 | -| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum/) | 数组、回溯 | 中等 | -| [0040. 组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii/) | 数组、回溯 | 中等 | -| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses/) | 字符串、回溯 | 中等 | -| [0079. 单词搜索](https://leetcode.cn/problems/word-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search/) | 深度优先搜索、数组、字符串、回溯、矩阵 | 中等 | -| [0679. 24 点游戏](https://leetcode.cn/problems/24-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/24-game/) | 数组、数学、回溯 | 困难 | +| [0046. 全排列](https://leetcode.cn/problems/permutations/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations.md) | 数组、回溯 | 中等 | +| [0047. 全排列 II](https://leetcode.cn/problems/permutations-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii.md) | 数组、回溯、排序 | 中等 | +| [0037. 解数独](https://leetcode.cn/problems/sudoku-solver/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver.md) | 数组、哈希表、回溯、矩阵 | 困难 | +| [0022. 括号生成](https://leetcode.cn/problems/generate-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses.md) | 字符串、动态规划、回溯 | 中等 | +| [0078. 子集](https://leetcode.cn/problems/subsets/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets.md) | 位运算、数组、回溯 | 中等 | +| [0039. 组合总和](https://leetcode.cn/problems/combination-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum.md) | 数组、回溯 | 中等 | +| [0040. 组合总和 II](https://leetcode.cn/problems/combination-sum-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii.md) | 数组、回溯 | 中等 | +| [0093. 复原 IP 地址](https://leetcode.cn/problems/restore-ip-addresses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses.md) | 字符串、回溯 | 中等 | +| [0079. 单词搜索](https://leetcode.cn/problems/word-search/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search.md) | 深度优先搜索、数组、字符串、回溯、矩阵 | 中等 | +| [0679. 24 点游戏](https://leetcode.cn/problems/24-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/24-game.md) | 数组、数学、回溯 | 困难 | ### 贪心算法题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) | 数组、分治、动态规划 | 中等 | -| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) | 数组、排序 | 中等 | -| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) | 贪心、数组、动态规划 | 中等 | -| [0055. 跳跃游戏](https://leetcode.cn/problems/jump-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game/) | 贪心、数组、动态规划 | 中等 | -| [0402. 移掉 K 位数字](https://leetcode.cn/problems/remove-k-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/remove-k-digits/) | 栈、贪心、字符串、单调栈 | 中等 | -| [0135. 分发糖果](https://leetcode.cn/problems/candy/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy/) | 贪心、数组 | 困难 | -| [0134. 加油站](https://leetcode.cn/problems/gas-station/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station/) | 贪心、数组 | 中等 | -| [0670. 最大交换](https://leetcode.cn/problems/maximum-swap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-swap/) | 贪心、数学 | 中等 | +| [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) | 数组、分治、动态规划 | 中等 | +| [0056. 合并区间](https://leetcode.cn/problems/merge-intervals/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals.md) | 数组、排序 | 中等 | +| [0122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii.md) | 贪心、数组、动态规划 | 中等 | +| [0055. 跳跃游戏](https://leetcode.cn/problems/jump-game/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game.md) | 贪心、数组、动态规划 | 中等 | +| [0402. 移掉 K 位数字](https://leetcode.cn/problems/remove-k-digits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/remove-k-digits.md) | 栈、贪心、字符串、单调栈 | 中等 | +| [0135. 分发糖果](https://leetcode.cn/problems/candy/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy.md) | 贪心、数组 | 困难 | +| [0134. 加油站](https://leetcode.cn/problems/gas-station/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station.md) | 贪心、数组 | 中等 | +| [0670. 最大交换](https://leetcode.cn/problems/maximum-swap/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-swap.md) | 贪心、数学 | 中等 | ### 位运算题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) | 位运算、数组 | 简单 | -| [0191. 位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits/) | 位运算、分治 | 简单 | -| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | +| [0136. 只出现一次的数字](https://leetcode.cn/problems/single-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) | 位运算、数组 | 简单 | +| [0191. 位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits.md) | 位运算、分治 | 简单 | +| [0268. 丢失的数字](https://leetcode.cn/problems/missing-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number.md) | 位运算、数组、哈希表、数学、二分查找、排序 | 简单 | ## 第 8 章 动态规划 @@ -507,42 +507,42 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) | 记忆化搜索、数学、动态规划 | 简单 | -| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) | 递归、记忆化搜索、数学、动态规划 | 简单 | -| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock/) | 数组、动态规划 | 简单 | -| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) | 广度优先搜索、数组、动态规划 | 中等 | -| [0518. 零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii/) | 数组、动态规划 | 中等 | -| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence/) | 数组、二分查找、动态规划 | 中等 | -| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence/) | 字符串、动态规划 | 中等 | -| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | -| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum/) | 数组、动态规划、矩阵 | 中等 | -| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance/) | 字符串、动态规划 | 中等 | -| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) | 栈、字符串、动态规划 | 困难 | -| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) | 数组、动态规划、矩阵 | 中等 | -| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) | 数学、动态规划、组合数学 | 中等 | -| [0063. 不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii/) | 数组、动态规划、矩阵 | 中等 | -| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray/) | 数组、动态规划 | 中等 | -| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber/) | 数组、动态规划 | 中等 | -| [0213. 打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii/) | 数组、动态规划 | 中等 | -| [0091. 解码方法](https://leetcode.cn/problems/decode-ways/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways/) | 字符串、动态规划 | 中等 | -| [0010. 正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching/) | 递归、字符串、动态规划 | 困难 | -| [0678. 有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string/) | 栈、贪心、字符串、动态规划 | 中等 | -| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii/) | 贪心、数组、动态规划 | 中等 | -| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) | 树状数组、线段树、数组、动态规划 | 中等 | -| [0139. 单词拆分](https://leetcode.cn/problems/word-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break/) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | -| [0044. 通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching/) | 贪心、递归、字符串、动态规划 | 困难 | -| [0120. 三角形最小路径和](https://leetcode.cn/problems/triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle/) | 数组、动态规划 | 中等 | -| [0096. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees/) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | -| [0887. 鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop/) | 数学、二分查找、动态规划 | 困难 | -| [0097. 交错字符串](https://leetcode.cn/problems/interleaving-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/interleaving-string/) | 字符串、动态规划 | 中等 | -| [0516. 最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence/) | 字符串、动态规划 | 中等 | +| [0070. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs.md) | 记忆化搜索、数学、动态规划 | 简单 | +| [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | +| [0121. 买卖股票的最佳时机](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock.md) | 数组、动态规划 | 简单 | +| [0322. 零钱兑换](https://leetcode.cn/problems/coin-change/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change.md) | 广度优先搜索、数组、动态规划 | 中等 | +| [0518. 零钱兑换 II](https://leetcode.cn/problems/coin-change-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii.md) | 数组、动态规划 | 中等 | +| [0300. 最长递增子序列](https://leetcode.cn/problems/longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence.md) | 数组、二分查找、动态规划 | 中等 | +| [1143. 最长公共子序列](https://leetcode.cn/problems/longest-common-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence.md) | 字符串、动态规划 | 中等 | +| [0718. 最长重复子数组](https://leetcode.cn/problems/maximum-length-of-repeated-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md) | 数组、二分查找、动态规划、滑动窗口、哈希函数、滚动哈希 | 中等 | +| [0064. 最小路径和](https://leetcode.cn/problems/minimum-path-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum.md) | 数组、动态规划、矩阵 | 中等 | +| [0072. 编辑距离](https://leetcode.cn/problems/edit-distance/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance.md) | 字符串、动态规划 | 中等 | +| [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses.md) | 栈、字符串、动态规划 | 困难 | +| [0221. 最大正方形](https://leetcode.cn/problems/maximal-square/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square.md) | 数组、动态规划、矩阵 | 中等 | +| [0062. 不同路径](https://leetcode.cn/problems/unique-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths.md) | 数学、动态规划、组合数学 | 中等 | +| [0063. 不同路径 II](https://leetcode.cn/problems/unique-paths-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii.md) | 数组、动态规划、矩阵 | 中等 | +| [0152. 乘积最大子数组](https://leetcode.cn/problems/maximum-product-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray.md) | 数组、动态规划 | 中等 | +| [0198. 打家劫舍](https://leetcode.cn/problems/house-robber/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber.md) | 数组、动态规划 | 中等 | +| [0213. 打家劫舍 II](https://leetcode.cn/problems/house-robber-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii.md) | 数组、动态规划 | 中等 | +| [0091. 解码方法](https://leetcode.cn/problems/decode-ways/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways.md) | 字符串、动态规划 | 中等 | +| [0010. 正则表达式匹配](https://leetcode.cn/problems/regular-expression-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching.md) | 递归、字符串、动态规划 | 困难 | +| [0678. 有效的括号字符串](https://leetcode.cn/problems/valid-parenthesis-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string.md) | 栈、贪心、字符串、动态规划 | 中等 | +| [0045. 跳跃游戏 II](https://leetcode.cn/problems/jump-game-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii.md) | 贪心、数组、动态规划 | 中等 | +| [0673. 最长递增子序列的个数](https://leetcode.cn/problems/number-of-longest-increasing-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence.md) | 树状数组、线段树、数组、动态规划 | 中等 | +| [0139. 单词拆分](https://leetcode.cn/problems/word-break/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break.md) | 字典树、记忆化搜索、数组、哈希表、字符串、动态规划 | 中等 | +| [0044. 通配符匹配](https://leetcode.cn/problems/wildcard-matching/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching.md) | 贪心、递归、字符串、动态规划 | 困难 | +| [0120. 三角形最小路径和](https://leetcode.cn/problems/triangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle.md) | 数组、动态规划 | 中等 | +| [0096. 不同的二叉搜索树](https://leetcode.cn/problems/unique-binary-search-trees/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees.md) | 树、二叉搜索树、数学、动态规划、二叉树 | 中等 | +| [0887. 鸡蛋掉落](https://leetcode.cn/problems/super-egg-drop/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop.md) | 数学、二分查找、动态规划 | 困难 | +| [0097. 交错字符串](https://leetcode.cn/problems/interleaving-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/interleaving-string.md) | 字符串、动态规划 | 中等 | +| [0516. 最长回文子序列](https://leetcode.cn/problems/longest-palindromic-subsequence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence.md) | 字符串、动态规划 | 中等 | ### 记忆化搜索题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0329. 矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix/) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | +| [0329. 矩阵中的最长递增路径](https://leetcode.cn/problems/longest-increasing-path-in-a-matrix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix.md) | 深度优先搜索、广度优先搜索、图、拓扑排序、记忆化搜索、数组、动态规划、矩阵 | 困难 | ## 补充题目 @@ -551,45 +551,45 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0146. LRU 缓存](https://leetcode.cn/problems/lru-cache/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/lru-cache/) | 设计、哈希表、链表、双向链表 | 中等 | -| [0460. LFU 缓存](https://leetcode.cn/problems/lfu-cache/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/lfu-cache/) | 设计、哈希表、链表、双向链表 | 困难 | +| [0146. LRU 缓存](https://leetcode.cn/problems/lru-cache/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/lru-cache.md) | 设计、哈希表、链表、双向链表 | 中等 | +| [0460. LFU 缓存](https://leetcode.cn/problems/lfu-cache/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/lfu-cache.md) | 设计、哈希表、链表、双向链表 | 困难 | #### 数学题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0007. 整数反转](https://leetcode.cn/problems/reverse-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-integer/) | 数学 | 中等 | -| [0009. 回文数](https://leetcode.cn/problems/palindrome-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/palindrome-number/) | 数学 | 简单 | -| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | 递归、数学 | 简单 | -| [0168. Excel 表列名称](https://leetcode.cn/problems/excel-sheet-column-title/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-title/) | 数学、字符串 | 简单 | -| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit/) | 数学、二分查找 | 中等 | +| [0007. 整数反转](https://leetcode.cn/problems/reverse-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-integer.md) | 数学 | 中等 | +| [0009. 回文数](https://leetcode.cn/problems/palindrome-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/palindrome-number.md) | 数学 | 简单 | +| [LCR 187. 破冰游戏](https://leetcode.cn/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof.md) | 递归、数学 | 简单 | +| [0168. Excel 表列名称](https://leetcode.cn/problems/excel-sheet-column-title/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-title.md) | 数学、字符串 | 简单 | +| [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit.md) | 数学、二分查找 | 中等 | #### 模拟题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0008. 字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi/) | 字符串 | 中等 | -| [0165. 比较版本号](https://leetcode.cn/problems/compare-version-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/compare-version-numbers/) | 双指针、字符串 | 中等 | -| [0468. 验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address/) | 字符串 | 中等 | -| [0086. 分隔链表](https://leetcode.cn/problems/partition-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/partition-list/) | 链表、双指针 | 中等 | +| [0008. 字符串转换整数 (atoi)](https://leetcode.cn/problems/string-to-integer-atoi/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi.md) | 字符串 | 中等 | +| [0165. 比较版本号](https://leetcode.cn/problems/compare-version-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/compare-version-numbers.md) | 双指针、字符串 | 中等 | +| [0468. 验证IP地址](https://leetcode.cn/problems/validate-ip-address/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address.md) | 字符串 | 中等 | +| [0086. 分隔链表](https://leetcode.cn/problems/partition-list/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/partition-list.md) | 链表、双指针 | 中等 | #### 前缀和 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k/) | 数组、哈希表、前缀和 | 中等 | +| [0560. 和为 K 的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k.md) | 数组、哈希表、前缀和 | 中等 | #### 思维锻炼题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0031. 下一个排列](https://leetcode.cn/problems/next-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/next-permutation/) | 数组、双指针 | 中等 | -| [0556. 下一个更大元素 III](https://leetcode.cn/problems/next-greater-element-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-iii/) | 数学、双指针、字符串 | 中等 | -| [0470. 用 Rand7() 实现 Rand10()](https://leetcode.cn/problems/implement-rand10-using-rand7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/implement-rand10-using-rand7/) | 数学、拒绝采样、概率与统计、随机化 | 中等 | +| [0031. 下一个排列](https://leetcode.cn/problems/next-permutation/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/next-permutation.md) | 数组、双指针 | 中等 | +| [0556. 下一个更大元素 III](https://leetcode.cn/problems/next-greater-element-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-iii.md) | 数学、双指针、字符串 | 中等 | +| [0470. 用 Rand7() 实现 Rand10()](https://leetcode.cn/problems/implement-rand10-using-rand7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/implement-rand10-using-rand7.md) | 数学、拒绝采样、概率与统计、随机化 | 中等 | diff --git a/docs/solutions/0001-0099/index.md b/docs/solutions/0001-0099/index.md index 5de0373a..b5de5604 100644 --- a/docs/solutions/0001-0099/index.md +++ b/docs/solutions/0001-0099/index.md @@ -1,88 +1,88 @@ ## 本章内容 -- [0001. 两数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum/) -- [0002. 两数相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers/) -- [0003. 无重复字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters/) -- [0004. 寻找两个正序数组的中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays/) -- [0005. 最长回文子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring/) -- [0007. 整数反转](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-integer/) -- [0008. 字符串转换整数 (atoi)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi/) -- [0009. 回文数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/palindrome-number/) -- [0010. 正则表达式匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching/) -- [0011. 盛最多水的容器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water/) -- [0012. 整数转罗马数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/integer-to-roman/) -- [0013. 罗马数字转整数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/roman-to-integer/) -- [0014. 最长公共前缀](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix/) -- [0015. 三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum/) -- [0016. 最接近的三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest/) -- [0017. 电话号码的字母组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/letter-combinations-of-a-phone-number/) -- [0018. 四数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum/) -- [0019. 删除链表的倒数第 N 个结点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list/) -- [0020. 有效的括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses/) -- [0021. 合并两个有序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists/) -- [0022. 括号生成](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses/) -- [0023. 合并 K 个升序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists/) -- [0024. 两两交换链表中的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs/) -- [0025. K 个一组翻转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group/) -- [0026. 删除有序数组中的重复项](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array/) -- [0027. 移除元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-element/) -- [0028. 找出字符串中第一个匹配项的下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string/) -- [0029. 两数相除](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/divide-two-integers/) -- [0032. 最长有效括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses/) -- [0033. 搜索旋转排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array/) -- [0034. 在排序数组中查找元素的第一个和最后一个位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array/) -- [0035. 搜索插入位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-insert-position/) -- [0036. 有效的数独](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-sudoku/) -- [0037. 解数独](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver/) -- [0038. 外观数列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/count-and-say/) -- [0039. 组合总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum/) -- [0040. 组合总和 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii/) -- [0041. 缺失的第一个正数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive/) -- [0042. 接雨水](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water/) -- [0043. 字符串相乘](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings/) -- [0044. 通配符匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching/) -- [0045. 跳跃游戏 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii/) -- [0046. 全排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations/) -- [0047. 全排列 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii/) -- [0048. 旋转图像](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image/) -- [0049. 字母异位词分组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams/) -- [0050. Pow(x, n)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n/) -- [0051. N 皇后](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens/) -- [0052. N 皇后 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens-ii/) -- [0053. 最大子数组和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray/) -- [0054. 螺旋矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix/) -- [0055. 跳跃游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game/) -- [0056. 合并区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals/) -- [0058. 最后一个单词的长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/length-of-last-word/) -- [0059. 螺旋矩阵 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii/) -- [0061. 旋转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list/) -- [0062. 不同路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths/) -- [0063. 不同路径 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii/) -- [0064. 最小路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum/) -- [0066. 加一](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/plus-one/) -- [0067. 二进制求和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-binary/) -- [0069. x 的平方根](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx/) -- [0070. 爬楼梯](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs/) -- [0072. 编辑距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance/) -- [0073. 矩阵置零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/set-matrix-zeroes/) -- [0074. 搜索二维矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix/) -- [0075. 颜色分类](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors/) -- [0076. 最小覆盖子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring/) -- [0077. 组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combinations/) -- [0078. 子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets/) -- [0079. 单词搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search/) -- [0080. 删除有序数组中的重复项 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii/) -- [0081. 搜索旋转排序数组 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array-ii/) -- [0082. 删除排序链表中的重复元素 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii/) -- [0083. 删除排序链表中的重复元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list/) -- [0084. 柱状图中最大的矩形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/largest-rectangle-in-histogram/) -- [0088. 合并两个有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array/) -- [0089. 格雷编码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/gray-code/) -- [0090. 子集 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii/) -- [0091. 解码方法](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways/) -- [0092. 反转链表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii/) -- [0093. 复原 IP 地址](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses/) -- [0094. 二叉树的中序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal/) -- [0095. 不同的二叉搜索树 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees-ii/) -- [0096. 不同的二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees/) -- [0098. 验证二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree/) +- [0001. 两数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum.md) +- [0002. 两数相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers.md) +- [0003. 无重复字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-substring-without-repeating-characters.md) +- [0004. 寻找两个正序数组的中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays.md) +- [0005. 最长回文子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring.md) +- [0007. 整数反转](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-integer.md) +- [0008. 字符串转换整数 (atoi)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/string-to-integer-atoi.md) +- [0009. 回文数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/palindrome-number.md) +- [0010. 正则表达式匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/regular-expression-matching.md) +- [0011. 盛最多水的容器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water.md) +- [0012. 整数转罗马数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/integer-to-roman.md) +- [0013. 罗马数字转整数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/roman-to-integer.md) +- [0014. 最长公共前缀](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) +- [0015. 三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum.md) +- [0016. 最接近的三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest.md) +- [0017. 电话号码的字母组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/letter-combinations-of-a-phone-number.md) +- [0018. 四数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/4sum.md) +- [0019. 删除链表的倒数第 N 个结点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list.md) +- [0020. 有效的括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses.md) +- [0021. 合并两个有序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists.md) +- [0022. 括号生成](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses.md) +- [0023. 合并 K 个升序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) +- [0024. 两两交换链表中的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/swap-nodes-in-pairs.md) +- [0025. K 个一组翻转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-nodes-in-k-group.md) +- [0026. 删除有序数组中的重复项](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array.md) +- [0027. 移除元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-element.md) +- [0028. 找出字符串中第一个匹配项的下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md) +- [0029. 两数相除](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/divide-two-integers.md) +- [0032. 最长有效括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses.md) +- [0033. 搜索旋转排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array.md) +- [0034. 在排序数组中查找元素的第一个和最后一个位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-first-and-last-position-of-element-in-sorted-array.md) +- [0035. 搜索插入位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-insert-position.md) +- [0036. 有效的数独](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-sudoku.md) +- [0037. 解数独](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sudoku-solver.md) +- [0038. 外观数列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/count-and-say.md) +- [0039. 组合总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum.md) +- [0040. 组合总和 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii.md) +- [0041. 缺失的第一个正数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/first-missing-positive.md) +- [0042. 接雨水](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/trapping-rain-water.md) +- [0043. 字符串相乘](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings.md) +- [0044. 通配符匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/wildcard-matching.md) +- [0045. 跳跃游戏 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii.md) +- [0046. 全排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations.md) +- [0047. 全排列 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii.md) +- [0048. 旋转图像](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image.md) +- [0049. 字母异位词分组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/group-anagrams.md) +- [0050. Pow(x, n)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n.md) +- [0051. N 皇后](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens.md) +- [0052. N 皇后 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/n-queens-ii.md) +- [0053. 最大子数组和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) +- [0054. 螺旋矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix.md) +- [0055. 跳跃游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game.md) +- [0056. 合并区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-intervals.md) +- [0058. 最后一个单词的长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/length-of-last-word.md) +- [0059. 螺旋矩阵 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix-ii.md) +- [0061. 旋转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-list.md) +- [0062. 不同路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths.md) +- [0063. 不同路径 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii.md) +- [0064. 最小路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum.md) +- [0066. 加一](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/plus-one.md) +- [0067. 二进制求和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-binary.md) +- [0069. x 的平方根](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx.md) +- [0070. 爬楼梯](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs.md) +- [0072. 编辑距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance.md) +- [0073. 矩阵置零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/set-matrix-zeroes.md) +- [0074. 搜索二维矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-a-2d-matrix.md) +- [0075. 颜色分类](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sort-colors.md) +- [0076. 最小覆盖子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-window-substring.md) +- [0077. 组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combinations.md) +- [0078. 子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets.md) +- [0079. 单词搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search.md) +- [0080. 删除有序数组中的重复项 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii.md) +- [0081. 搜索旋转排序数组 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array-ii.md) +- [0082. 删除排序链表中的重复元素 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list-ii.md) +- [0083. 删除排序链表中的重复元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-list.md) +- [0084. 柱状图中最大的矩形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/largest-rectangle-in-histogram.md) +- [0088. 合并两个有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array.md) +- [0089. 格雷编码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/gray-code.md) +- [0090. 子集 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii.md) +- [0091. 解码方法](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/decode-ways.md) +- [0092. 反转链表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii.md) +- [0093. 复原 IP 地址](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/restore-ip-addresses.md) +- [0094. 二叉树的中序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal.md) +- [0095. 不同的二叉搜索树 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees-ii.md) +- [0096. 不同的二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-binary-search-trees.md) +- [0098. 验证二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree.md) diff --git a/docs/solutions/0100-0199/index.md b/docs/solutions/0100-0199/index.md index 5ec07d8f..61dcf2cf 100644 --- a/docs/solutions/0100-0199/index.md +++ b/docs/solutions/0100-0199/index.md @@ -1,72 +1,72 @@ ## 本章内容 -- [0100. 相同的树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree/) -- [0101. 对称二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree/) -- [0102. 二叉树的层序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal/) -- [0103. 二叉树的锯齿形层序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal/) -- [0104. 二叉树的最大深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree/) -- [0105. 从前序与中序遍历序列构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal/) -- [0106. 从中序与后序遍历序列构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal/) -- [0107. 二叉树的层序遍历 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal-ii/) -- [0108. 将有序数组转换为二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree/) -- [0110. 平衡二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree/) -- [0111. 二叉树的最小深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree/) -- [0112. 路径总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum/) -- [0113. 路径总和 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii/) -- [0115. 不同的子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/distinct-subsequences/) -- [0116. 填充每个节点的下一个右侧节点指针](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node/) -- [0117. 填充每个节点的下一个右侧节点指针 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii/) -- [0118. 杨辉三角](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle/) -- [0119. 杨辉三角 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii/) -- [0120. 三角形最小路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle/) -- [0121. 买卖股票的最佳时机](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock/) -- [0122. 买卖股票的最佳时机 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii/) -- [0123. 买卖股票的最佳时机 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii/) -- [0124. 二叉树中的最大路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum/) -- [0125. 验证回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome/) -- [0127. 单词接龙](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-ladder/) -- [0128. 最长连续序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence/) -- [0129. 求根节点到叶节点数字之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers/) -- [0130. 被围绕的区域](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/surrounded-regions/) -- [0131. 分割回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/palindrome-partitioning/) -- [0133. 克隆图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph/) -- [0134. 加油站](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station/) -- [0135. 分发糖果](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy/) -- [0136. 只出现一次的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number/) -- [0137. 只出现一次的数字 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number-ii/) -- [0138. 随机链表的复制](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer/) -- [0139. 单词拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break/) -- [0140. 单词拆分 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break-ii/) -- [0141. 环形链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle/) -- [0142. 环形链表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii/) -- [0143. 重排链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list/) -- [0144. 二叉树的前序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal/) -- [0145. 二叉树的后序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal/) -- [0147. 对链表进行插入排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/insertion-sort-list/) -- [0148. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list/) -- [0149. 直线上最多的点数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/max-points-on-a-line/) -- [0150. 逆波兰表达式求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/evaluate-reverse-polish-notation/) -- [0151. 反转字符串中的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string/) -- [0152. 乘积最大子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray/) -- [0153. 寻找旋转排序数组中的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array/) -- [0154. 寻找旋转排序数组中的最小值 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii/) -- [0155. 最小栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack/) -- [0159. 至多包含两个不同字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters/) -- [0160. 相交链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists/) -- [0162. 寻找峰值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element/) -- [0164. 最大间距](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap/) -- [0166. 分数到小数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/fraction-to-recurring-decimal/) -- [0167. 两数之和 II - 输入有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted/) -- [0168. Excel 表列名称](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-title/) -- [0169. 多数元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element/) -- [0170. 两数之和 III - 数据结构设计](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-iii-data-structure-design/) -- [0171. Excel 表列序号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-number/) -- [0172. 阶乘后的零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/factorial-trailing-zeroes/) -- [0173. 二叉搜索树迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-search-tree-iterator/) -- [0179. 最大数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number/) -- [0188. 买卖股票的最佳时机 IV](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv/) -- [0189. 轮转数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array/) -- [0190. 颠倒二进制位](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-bits/) -- [0191. 位1的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits/) -- [0198. 打家劫舍](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber/) -- [0199. 二叉树的右视图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view/) +- [0100. 相同的树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/same-tree.md) +- [0101. 对称二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/symmetric-tree.md) +- [0102. 二叉树的层序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal.md) +- [0103. 二叉树的锯齿形层序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-zigzag-level-order-traversal.md) +- [0104. 二叉树的最大深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree.md) +- [0105. 从前序与中序遍历序列构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal.md) +- [0106. 从中序与后序遍历序列构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal.md) +- [0107. 二叉树的层序遍历 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal-ii.md) +- [0108. 将有序数组转换为二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree.md) +- [0110. 平衡二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/balanced-binary-tree.md) +- [0111. 二叉树的最小深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree.md) +- [0112. 路径总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum.md) +- [0113. 路径总和 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum-ii.md) +- [0115. 不同的子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/distinct-subsequences.md) +- [0116. 填充每个节点的下一个右侧节点指针](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node.md) +- [0117. 填充每个节点的下一个右侧节点指针 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/populating-next-right-pointers-in-each-node-ii.md) +- [0118. 杨辉三角](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle.md) +- [0119. 杨辉三角 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/pascals-triangle-ii.md) +- [0120. 三角形最小路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/triangle.md) +- [0121. 买卖股票的最佳时机](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock.md) +- [0122. 买卖股票的最佳时机 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-ii.md) +- [0123. 买卖股票的最佳时机 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iii.md) +- [0124. 二叉树中的最大路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-maximum-path-sum.md) +- [0125. 验证回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome.md) +- [0127. 单词接龙](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-ladder.md) +- [0128. 最长连续序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-consecutive-sequence.md) +- [0129. 求根节点到叶节点数字之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sum-root-to-leaf-numbers.md) +- [0130. 被围绕的区域](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/surrounded-regions.md) +- [0131. 分割回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/palindrome-partitioning.md) +- [0133. 克隆图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph.md) +- [0134. 加油站](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/gas-station.md) +- [0135. 分发糖果](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy.md) +- [0136. 只出现一次的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) +- [0137. 只出现一次的数字 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number-ii.md) +- [0138. 随机链表的复制](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer.md) +- [0139. 单词拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break.md) +- [0140. 单词拆分 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/word-break-ii.md) +- [0141. 环形链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle.md) +- [0142. 环形链表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii.md) +- [0143. 重排链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reorder-list.md) +- [0144. 二叉树的前序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal.md) +- [0145. 二叉树的后序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal.md) +- [0147. 对链表进行插入排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/insertion-sort-list.md) +- [0148. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md) +- [0149. 直线上最多的点数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/max-points-on-a-line.md) +- [0150. 逆波兰表达式求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/evaluate-reverse-polish-notation.md) +- [0151. 反转字符串中的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string.md) +- [0152. 乘积最大子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-product-subarray.md) +- [0153. 寻找旋转排序数组中的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array.md) +- [0154. 寻找旋转排序数组中的最小值 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array-ii.md) +- [0155. 最小栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack.md) +- [0159. 至多包含两个不同字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/longest-substring-with-at-most-two-distinct-characters.md) +- [0160. 相交链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/intersection-of-two-linked-lists.md) +- [0162. 寻找峰值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-peak-element.md) +- [0164. 最大间距](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap.md) +- [0166. 分数到小数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/fraction-to-recurring-decimal.md) +- [0167. 两数之和 II - 输入有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted.md) +- [0168. Excel 表列名称](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-title.md) +- [0169. 多数元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) +- [0170. 两数之和 III - 数据结构设计](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-iii-data-structure-design.md) +- [0171. Excel 表列序号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/excel-sheet-column-number.md) +- [0172. 阶乘后的零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/factorial-trailing-zeroes.md) +- [0173. 二叉搜索树迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-search-tree-iterator.md) +- [0179. 最大数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/largest-number.md) +- [0188. 买卖股票的最佳时机 IV](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/best-time-to-buy-and-sell-stock-iv.md) +- [0189. 轮转数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array.md) +- [0190. 颠倒二进制位](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-bits.md) +- [0191. 位1的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits.md) +- [0198. 打家劫舍](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber.md) +- [0199. 二叉树的右视图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-right-side-view.md) diff --git a/docs/solutions/0200-0299/index.md b/docs/solutions/0200-0299/index.md index 74bd0ceb..ebd58d96 100644 --- a/docs/solutions/0200-0299/index.md +++ b/docs/solutions/0200-0299/index.md @@ -1,60 +1,60 @@ ## 本章内容 -- [0200. 岛屿数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands/) -- [0201. 数字范围按位与](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/bitwise-and-of-numbers-range/) -- [0202. 快乐数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/happy-number/) -- [0203. 移除链表元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/remove-linked-list-elements/) -- [0204. 计数质数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-primes/) -- [0205. 同构字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/isomorphic-strings/) -- [0206. 反转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list/) -- [0207. 课程表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule/) -- [0208. 实现 Trie (前缀树)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree/) -- [0209. 长度最小的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum/) -- [0210. 课程表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii/) -- [0211. 添加与搜索单词 - 数据结构设计](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/design-add-and-search-words-data-structure/) -- [0212. 单词搜索 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-search-ii/) -- [0213. 打家劫舍 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii/) -- [0215. 数组中的第K个最大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array/) -- [0217. 存在重复元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate/) -- [0218. 天际线问题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem/) -- [0219. 存在重复元素 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-ii/) -- [0220. 存在重复元素 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii/) -- [0221. 最大正方形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square/) -- [0222. 完全二叉树的节点个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-complete-tree-nodes/) -- [0223. 矩形面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/rectangle-area/) -- [0225. 用队列实现栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues/) -- [0226. 翻转二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree/) -- [0227. 基本计算器 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii/) -- [0231. 2 的幂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/power-of-two/) -- [0232. 用栈实现队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks/) -- [0233. 数字 1 的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-digit-one/) -- [0234. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list/) -- [0235. 二叉搜索树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree/) -- [0236. 二叉树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree/) -- [0237. 删除链表中的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/delete-node-in-a-linked-list/) -- [0238. 除自身以外数组的乘积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/product-of-array-except-self/) -- [0239. 滑动窗口最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum/) -- [0240. 搜索二维矩阵 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii/) -- [0241. 为运算表达式设计优先级](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/different-ways-to-add-parentheses/) -- [0242. 有效的字母异位词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram/) -- [0249. 移位字符串分组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/group-shifted-strings/) -- [0257. 二叉树的所有路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/binary-tree-paths/) -- [0258. 各位相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/add-digits/) -- [0259. 较小的三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller/) -- [0260. 只出现一次的数字 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/single-number-iii/) -- [0263. 丑数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number/) -- [0264. 丑数 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number-ii/) -- [0268. 丢失的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number/) -- [0270. 最接近的二叉搜索树值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/closest-binary-search-tree-value/) -- [0278. 第一个错误的版本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/first-bad-version/) -- [0279. 完全平方数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares/) -- [0283. 移动零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes/) -- [0285. 二叉搜索树中的中序后继](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/inorder-successor-in-bst/) -- [0286. 墙与门](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/walls-and-gates/) -- [0287. 寻找重复数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number/) -- [0288. 单词的唯一缩写](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/unique-word-abbreviation/) -- [0289. 生命游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/game-of-life/) -- [0290. 单词规律](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-pattern/) -- [0292. Nim 游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/nim-game/) -- [0295. 数据流的中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream/) -- [0297. 二叉树的序列化与反序列化](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree/) +- [0200. 岛屿数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands.md) +- [0201. 数字范围按位与](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/bitwise-and-of-numbers-range.md) +- [0202. 快乐数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/happy-number.md) +- [0203. 移除链表元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/remove-linked-list-elements.md) +- [0204. 计数质数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-primes.md) +- [0205. 同构字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/isomorphic-strings.md) +- [0206. 反转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list.md) +- [0207. 课程表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule.md) +- [0208. 实现 Trie (前缀树)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree.md) +- [0209. 长度最小的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/minimum-size-subarray-sum.md) +- [0210. 课程表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii.md) +- [0211. 添加与搜索单词 - 数据结构设计](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/design-add-and-search-words-data-structure.md) +- [0212. 单词搜索 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-search-ii.md) +- [0213. 打家劫舍 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii.md) +- [0215. 数组中的第K个最大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) +- [0217. 存在重复元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate.md) +- [0218. 天际线问题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/the-skyline-problem.md) +- [0219. 存在重复元素 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-ii.md) +- [0220. 存在重复元素 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii.md) +- [0221. 最大正方形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square.md) +- [0222. 完全二叉树的节点个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-complete-tree-nodes.md) +- [0223. 矩形面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/rectangle-area.md) +- [0225. 用队列实现栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues.md) +- [0226. 翻转二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree.md) +- [0227. 基本计算器 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii.md) +- [0231. 2 的幂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/power-of-two.md) +- [0232. 用栈实现队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-queue-using-stacks.md) +- [0233. 数字 1 的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-digit-one.md) +- [0234. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list.md) +- [0235. 二叉搜索树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree.md) +- [0236. 二叉树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-tree.md) +- [0237. 删除链表中的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/delete-node-in-a-linked-list.md) +- [0238. 除自身以外数组的乘积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/product-of-array-except-self.md) +- [0239. 滑动窗口最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/sliding-window-maximum.md) +- [0240. 搜索二维矩阵 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/search-a-2d-matrix-ii.md) +- [0241. 为运算表达式设计优先级](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/different-ways-to-add-parentheses.md) +- [0242. 有效的字母异位词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/valid-anagram.md) +- [0249. 移位字符串分组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/group-shifted-strings.md) +- [0257. 二叉树的所有路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/binary-tree-paths.md) +- [0258. 各位相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/add-digits.md) +- [0259. 较小的三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/3sum-smaller.md) +- [0260. 只出现一次的数字 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/single-number-iii.md) +- [0263. 丑数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number.md) +- [0264. 丑数 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/ugly-number-ii.md) +- [0268. 丢失的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/missing-number.md) +- [0270. 最接近的二叉搜索树值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/closest-binary-search-tree-value.md) +- [0278. 第一个错误的版本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/first-bad-version.md) +- [0279. 完全平方数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares.md) +- [0283. 移动零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes.md) +- [0285. 二叉搜索树中的中序后继](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/inorder-successor-in-bst.md) +- [0286. 墙与门](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/walls-and-gates.md) +- [0287. 寻找重复数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-the-duplicate-number.md) +- [0288. 单词的唯一缩写](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/unique-word-abbreviation.md) +- [0289. 生命游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/game-of-life.md) +- [0290. 单词规律](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/word-pattern.md) +- [0292. Nim 游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/nim-game.md) +- [0295. 数据流的中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/find-median-from-data-stream.md) +- [0297. 二叉树的序列化与反序列化](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/serialize-and-deserialize-binary-tree.md) diff --git a/docs/solutions/0300-0399/index.md b/docs/solutions/0300-0399/index.md index 685909be..6bd837d2 100644 --- a/docs/solutions/0300-0399/index.md +++ b/docs/solutions/0300-0399/index.md @@ -1,56 +1,56 @@ ## 本章内容 -- [0300. 最长递增子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence/) -- [0303. 区域和检索 - 数组不可变](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable/) -- [0304. 二维区域和检索 - 矩阵不可变](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-2d-immutable/) -- [0307. 区域和检索 - 数组可修改](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable/) -- [0309. 买卖股票的最佳时机含冷冻期](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown/) -- [0310. 最小高度树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/minimum-height-trees/) -- [0312. 戳气球](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/burst-balloons/) -- [0315. 计算右侧小于当前元素的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self/) -- [0316. 去除重复字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/remove-duplicate-letters/) -- [0318. 最大单词长度乘积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/maximum-product-of-word-lengths/) -- [0322. 零钱兑换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change/) -- [0323. 无向图中连通分量的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph/) -- [0324. 摆动排序 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-sort-ii/) -- [0326. 3 的幂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-three/) -- [0328. 奇偶链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list/) -- [0329. 矩阵中的最长递增路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix/) -- [0334. 递增的三元子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/increasing-triplet-subsequence/) -- [0336. 回文对](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/palindrome-pairs/) -- [0337. 打家劫舍 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/house-robber-iii/) -- [0338. 比特位计数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits/) -- [0340. 至多包含 K 个不同字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters/) -- [0341. 扁平化嵌套列表迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/flatten-nested-list-iterator/) -- [0342. 4的幂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-four/) -- [0343. 整数拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break/) -- [0344. 反转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string/) -- [0345. 反转字符串中的元音字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-vowels-of-a-string/) -- [0346. 数据流中的移动平均值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/moving-average-from-data-stream/) -- [0347. 前 K 个高频元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements/) -- [0349. 两个数组的交集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays/) -- [0350. 两个数组的交集 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii/) -- [0351. 安卓系统手势解锁](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/android-unlock-patterns/) -- [0354. 俄罗斯套娃信封问题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes/) -- [0357. 统计各位数字都不同的数字个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-numbers-with-unique-digits/) -- [0359. 日志速率限制器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/logger-rate-limiter/) -- [0360. 有序转化数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sort-transformed-array/) -- [0367. 有效的完全平方数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/valid-perfect-square/) -- [0370. 区间加法](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-addition/) -- [0371. 两整数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sum-of-two-integers/) -- [0374. 猜数字大小](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower/) -- [0375. 猜数字大小 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii/) -- [0376. 摆动序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-subsequence/) -- [0377. 组合总和 Ⅳ](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/combination-sum-iv/) -- [0378. 有序矩阵中第 K 小的元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/kth-smallest-element-in-a-sorted-matrix/) -- [0380. O(1) 时间插入、删除和获取随机元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/insert-delete-getrandom-o1/) -- [0383. 赎金信](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/ransom-note/) -- [0384. 打乱数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array/) -- [0386. 字典序排数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/lexicographical-numbers/) -- [0387. 字符串中的第一个唯一字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/first-unique-character-in-a-string/) -- [0389. 找不同](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/find-the-difference/) -- [0391. 完美矩形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/perfect-rectangle/) -- [0392. 判断子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/is-subsequence/) -- [0394. 字符串解码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string/) -- [0395. 至少有 K 个重复字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-least-k-repeating-characters/) -- [0399. 除法求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/evaluate-division/) +- [0300. 最长递增子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence.md) +- [0303. 区域和检索 - 数组不可变](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-immutable.md) +- [0304. 二维区域和检索 - 矩阵不可变](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-2d-immutable.md) +- [0307. 区域和检索 - 数组可修改](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-sum-query-mutable.md) +- [0309. 买卖股票的最佳时机含冷冻期](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/best-time-to-buy-and-sell-stock-with-cooldown.md) +- [0310. 最小高度树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/minimum-height-trees.md) +- [0312. 戳气球](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/burst-balloons.md) +- [0315. 计算右侧小于当前元素的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self.md) +- [0316. 去除重复字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/remove-duplicate-letters.md) +- [0318. 最大单词长度乘积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/maximum-product-of-word-lengths.md) +- [0322. 零钱兑换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change.md) +- [0323. 无向图中连通分量的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/number-of-connected-components-in-an-undirected-graph.md) +- [0324. 摆动排序 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-sort-ii.md) +- [0326. 3 的幂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-three.md) +- [0328. 奇偶链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list.md) +- [0329. 矩阵中的最长递增路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-path-in-a-matrix.md) +- [0334. 递增的三元子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/increasing-triplet-subsequence.md) +- [0336. 回文对](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/palindrome-pairs.md) +- [0337. 打家劫舍 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/house-robber-iii.md) +- [0338. 比特位计数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/counting-bits.md) +- [0340. 至多包含 K 个不同字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-most-k-distinct-characters.md) +- [0341. 扁平化嵌套列表迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/flatten-nested-list-iterator.md) +- [0342. 4的幂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/power-of-four.md) +- [0343. 整数拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break.md) +- [0344. 反转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string.md) +- [0345. 反转字符串中的元音字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-vowels-of-a-string.md) +- [0346. 数据流中的移动平均值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/moving-average-from-data-stream.md) +- [0347. 前 K 个高频元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements.md) +- [0349. 两个数组的交集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays.md) +- [0350. 两个数组的交集 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii.md) +- [0351. 安卓系统手势解锁](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/android-unlock-patterns.md) +- [0354. 俄罗斯套娃信封问题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/russian-doll-envelopes.md) +- [0357. 统计各位数字都不同的数字个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-numbers-with-unique-digits.md) +- [0359. 日志速率限制器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/logger-rate-limiter.md) +- [0360. 有序转化数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sort-transformed-array.md) +- [0367. 有效的完全平方数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/valid-perfect-square.md) +- [0370. 区间加法](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/range-addition.md) +- [0371. 两整数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/sum-of-two-integers.md) +- [0374. 猜数字大小](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower.md) +- [0375. 猜数字大小 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower-ii.md) +- [0376. 摆动序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/wiggle-subsequence.md) +- [0377. 组合总和 Ⅳ](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/combination-sum-iv.md) +- [0378. 有序矩阵中第 K 小的元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/kth-smallest-element-in-a-sorted-matrix.md) +- [0380. O(1) 时间插入、删除和获取随机元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/insert-delete-getrandom-o1.md) +- [0383. 赎金信](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/ransom-note.md) +- [0384. 打乱数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/shuffle-an-array.md) +- [0386. 字典序排数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/lexicographical-numbers.md) +- [0387. 字符串中的第一个唯一字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/first-unique-character-in-a-string.md) +- [0389. 找不同](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/find-the-difference.md) +- [0391. 完美矩形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/perfect-rectangle.md) +- [0392. 判断子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/is-subsequence.md) +- [0394. 字符串解码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string.md) +- [0395. 至少有 K 个重复字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-substring-with-at-least-k-repeating-characters.md) +- [0399. 除法求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/evaluate-division.md) diff --git a/docs/solutions/0400-0499/index.md b/docs/solutions/0400-0499/index.md index 5e9b7cbe..8b26bf6f 100644 --- a/docs/solutions/0400-0499/index.md +++ b/docs/solutions/0400-0499/index.md @@ -1,47 +1,47 @@ ## 本章内容 -- [0400. 第 N 位数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit/) -- [0403. 青蛙过河](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump/) -- [0404. 左叶子之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sum-of-left-leaves/) -- [0405. 数字转换为十六进制数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal/) -- [0406. 根据身高重建队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/queue-reconstruction-by-height/) -- [0409. 最长回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-palindrome/) -- [0410. 分割数组的最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum/) -- [0412. Fizz Buzz](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/fizz-buzz/) -- [0415. 字符串相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings/) -- [0416. 分割等和子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/partition-equal-subset-sum/) -- [0417. 太平洋大西洋水流问题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/pacific-atlantic-water-flow/) -- [0421. 数组中两个数的最大异或值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array/) -- [0424. 替换后的最长重复字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-repeating-character-replacement/) -- [0425. 单词方块](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/word-squares/) -- [0426. 将二叉搜索树转化为排序的双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list/) -- [0428. 序列化和反序列化 N 叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/serialize-and-deserialize-n-ary-tree/) -- [0429. N 叉树的层序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/n-ary-tree-level-order-traversal/) -- [0430. 扁平化多级双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list/) -- [0435. 无重叠区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-overlapping-intervals/) -- [0437. 路径总和 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/path-sum-iii/) -- [0438. 找到字符串中所有字母异位词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-anagrams-in-a-string/) -- [0443. 压缩字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression/) -- [0445. 两数相加 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii/) -- [0447. 回旋镖的数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/number-of-boomerangs/) -- [0450. 删除二叉搜索树中的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst/) -- [0451. 根据字符出现频率排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency/) -- [0452. 用最少数量的箭引爆气球](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons/) -- [0454. 四数相加 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/4sum-ii/) -- [0455. 分发饼干](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/assign-cookies/) -- [0459. 重复的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern/) -- [0461. 汉明距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/hamming-distance/) -- [0463. 岛屿的周长](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/island-perimeter/) -- [0464. 我能赢吗](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/can-i-win/) -- [0467. 环绕字符串中唯一的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/unique-substrings-in-wraparound-string/) -- [0468. 验证IP地址](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address/) -- [0473. 火柴拼正方形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/matchsticks-to-square/) -- [0474. 一和零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/ones-and-zeroes/) -- [0480. 滑动窗口中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sliding-window-median/) -- [0485. 最大连续 1 的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones/) -- [0486. 预测赢家](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/predict-the-winner/) -- [0487. 最大连续1的个数 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones-ii/) -- [0491. 非递减子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-decreasing-subsequences/) -- [0494. 目标和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum/) -- [0496. 下一个更大元素 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/next-greater-element-i/) -- [0498. 对角线遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse/) +- [0400. 第 N 位数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit.md) +- [0403. 青蛙过河](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump.md) +- [0404. 左叶子之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sum-of-left-leaves.md) +- [0405. 数字转换为十六进制数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal.md) +- [0406. 根据身高重建队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/queue-reconstruction-by-height.md) +- [0409. 最长回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-palindrome.md) +- [0410. 分割数组的最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum.md) +- [0412. Fizz Buzz](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/fizz-buzz.md) +- [0415. 字符串相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings.md) +- [0416. 分割等和子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/partition-equal-subset-sum.md) +- [0417. 太平洋大西洋水流问题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/pacific-atlantic-water-flow.md) +- [0421. 数组中两个数的最大异或值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/maximum-xor-of-two-numbers-in-an-array.md) +- [0424. 替换后的最长重复字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-repeating-character-replacement.md) +- [0425. 单词方块](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/word-squares.md) +- [0426. 将二叉搜索树转化为排序的双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-binary-search-tree-to-sorted-doubly-linked-list.md) +- [0428. 序列化和反序列化 N 叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/serialize-and-deserialize-n-ary-tree.md) +- [0429. N 叉树的层序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/n-ary-tree-level-order-traversal.md) +- [0430. 扁平化多级双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/flatten-a-multilevel-doubly-linked-list.md) +- [0435. 无重叠区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-overlapping-intervals.md) +- [0437. 路径总和 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/path-sum-iii.md) +- [0438. 找到字符串中所有字母异位词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/find-all-anagrams-in-a-string.md) +- [0443. 压缩字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/string-compression.md) +- [0445. 两数相加 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii.md) +- [0447. 回旋镖的数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/number-of-boomerangs.md) +- [0450. 删除二叉搜索树中的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst.md) +- [0451. 根据字符出现频率排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency.md) +- [0452. 用最少数量的箭引爆气球](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons.md) +- [0454. 四数相加 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/4sum-ii.md) +- [0455. 分发饼干](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/assign-cookies.md) +- [0459. 重复的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern.md) +- [0461. 汉明距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/hamming-distance.md) +- [0463. 岛屿的周长](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/island-perimeter.md) +- [0464. 我能赢吗](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/can-i-win.md) +- [0467. 环绕字符串中唯一的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/unique-substrings-in-wraparound-string.md) +- [0468. 验证IP地址](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/validate-ip-address.md) +- [0473. 火柴拼正方形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/matchsticks-to-square.md) +- [0474. 一和零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/ones-and-zeroes.md) +- [0480. 滑动窗口中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sliding-window-median.md) +- [0485. 最大连续 1 的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones.md) +- [0486. 预测赢家](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/predict-the-winner.md) +- [0487. 最大连续1的个数 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/max-consecutive-ones-ii.md) +- [0491. 非递减子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-decreasing-subsequences.md) +- [0494. 目标和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum.md) +- [0496. 下一个更大元素 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/next-greater-element-i.md) +- [0498. 对角线遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse.md) diff --git a/docs/solutions/0500-0599/index.md b/docs/solutions/0500-0599/index.md index 6ae4c0cb..04bdf8a7 100644 --- a/docs/solutions/0500-0599/index.md +++ b/docs/solutions/0500-0599/index.md @@ -1,30 +1,30 @@ ## 本章内容 -- [0501. 二叉搜索树中的众数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-mode-in-binary-search-tree/) -- [0503. 下一个更大元素 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii/) -- [0504. 七进制数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7/) -- [0506. 相对名次](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/relative-ranks/) -- [0509. 斐波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number/) -- [0513. 找树左下角的值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-bottom-left-tree-value/) -- [0515. 在每个树行中找最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-largest-value-in-each-tree-row/) -- [0516. 最长回文子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence/) -- [0518. 零钱兑换 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii/) -- [0525. 连续数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/contiguous-array/) -- [0526. 优美的排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/beautiful-arrangement/) -- [0530. 二叉搜索树的最小绝对差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-absolute-difference-in-bst/) -- [0538. 把二叉搜索树转换为累加树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/convert-bst-to-greater-tree/) -- [0539. 最小时间差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-time-difference/) -- [0542. 01 矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/01-matrix/) -- [0543. 二叉树的直径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree/) -- [0546. 移除盒子](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/remove-boxes/) -- [0547. 省份数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/number-of-provinces/) -- [0557. 反转字符串中的单词 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii/) -- [0560. 和为 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k/) -- [0561. 数组拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition/) -- [0567. 字符串的排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/permutation-in-string/) -- [0575. 分糖果](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/distribute-candies/) -- [0576. 出界的路径数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths/) -- [0583. 两个字符串的删除操作](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/delete-operation-for-two-strings/) -- [0589. N 叉树的前序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-preorder-traversal/) -- [0590. N 叉树的后序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-postorder-traversal/) -- [0599. 两个列表的最小索引总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-index-sum-of-two-lists/) +- [0501. 二叉搜索树中的众数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-mode-in-binary-search-tree.md) +- [0503. 下一个更大元素 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii.md) +- [0504. 七进制数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7.md) +- [0506. 相对名次](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/relative-ranks.md) +- [0509. 斐波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number.md) +- [0513. 找树左下角的值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-bottom-left-tree-value.md) +- [0515. 在每个树行中找最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-largest-value-in-each-tree-row.md) +- [0516. 最长回文子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence.md) +- [0518. 零钱兑换 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/coin-change-ii.md) +- [0525. 连续数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/contiguous-array.md) +- [0526. 优美的排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/beautiful-arrangement.md) +- [0530. 二叉搜索树的最小绝对差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-absolute-difference-in-bst.md) +- [0538. 把二叉搜索树转换为累加树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/convert-bst-to-greater-tree.md) +- [0539. 最小时间差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-time-difference.md) +- [0542. 01 矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/01-matrix.md) +- [0543. 二叉树的直径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/diameter-of-binary-tree.md) +- [0546. 移除盒子](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/remove-boxes.md) +- [0547. 省份数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/number-of-provinces.md) +- [0557. 反转字符串中的单词 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii.md) +- [0560. 和为 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/subarray-sum-equals-k.md) +- [0561. 数组拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition.md) +- [0567. 字符串的排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/permutation-in-string.md) +- [0575. 分糖果](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/distribute-candies.md) +- [0576. 出界的路径数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths.md) +- [0583. 两个字符串的删除操作](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/delete-operation-for-two-strings.md) +- [0589. N 叉树的前序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-preorder-traversal.md) +- [0590. N 叉树的后序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/n-ary-tree-postorder-traversal.md) +- [0599. 两个列表的最小索引总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minimum-index-sum-of-two-lists.md) diff --git a/docs/solutions/0600-0699/index.md b/docs/solutions/0600-0699/index.md index d4143c6e..28cf22ed 100644 --- a/docs/solutions/0600-0699/index.md +++ b/docs/solutions/0600-0699/index.md @@ -1,38 +1,38 @@ ## 本章内容 -- [0600. 不含连续1的非负整数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones/) -- [0611. 有效三角形的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number/) -- [0616. 给字符串添加加粗标签](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/add-bold-tag-in-string/) -- [0617. 合并二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/merge-two-binary-trees/) -- [0621. 任务调度器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/task-scheduler/) -- [0622. 设计循环队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-circular-queue/) -- [0633. 平方数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/sum-of-square-numbers/) -- [0639. 解码方法 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/decode-ways-ii/) -- [0642. 设计搜索自动补全系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-search-autocomplete-system/) -- [0643. 子数组最大平均数 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-average-subarray-i/) -- [0647. 回文子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/palindromic-substrings/) -- [0648. 单词替换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/replace-words/) -- [0650. 两个键的键盘](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/2-keys-keyboard/) -- [0652. 寻找重复的子树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-duplicate-subtrees/) -- [0653. 两数之和 IV - 输入二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/two-sum-iv-input-is-a-bst/) -- [0654. 最大二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-binary-tree/) -- [0658. 找到 K 个最接近的元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements/) -- [0662. 二叉树最大宽度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree/) -- [0664. 奇怪的打印机](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/strange-printer/) -- [0665. 非递减数列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-decreasing-array/) -- [0669. 修剪二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/trim-a-binary-search-tree/) -- [0673. 最长递增子序列的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence/) -- [0674. 最长连续递增序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-continuous-increasing-subsequence/) -- [0676. 实现一个魔法字典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/implement-magic-dictionary/) -- [0677. 键值映射](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/map-sum-pairs/) -- [0678. 有效的括号字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string/) -- [0680. 验证回文串 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-palindrome-ii/) -- [0683. K 个关闭的灯泡](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/k-empty-slots/) -- [0684. 冗余连接](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection/) -- [0686. 重复叠加字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match/) -- [0687. 最长同值路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-univalue-path/) -- [0688. 骑士在棋盘上的概率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/knight-probability-in-chessboard/) -- [0690. 员工的重要性](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/employee-importance/) -- [0691. 贴纸拼词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/stickers-to-spell-word/) -- [0695. 岛屿的最大面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island/) -- [0698. 划分为k个相等的子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/partition-to-k-equal-sum-subsets/) +- [0600. 不含连续1的非负整数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-negative-integers-without-consecutive-ones.md) +- [0611. 有效三角形的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-triangle-number.md) +- [0616. 给字符串添加加粗标签](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/add-bold-tag-in-string.md) +- [0617. 合并二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/merge-two-binary-trees.md) +- [0621. 任务调度器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/task-scheduler.md) +- [0622. 设计循环队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-circular-queue.md) +- [0633. 平方数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/sum-of-square-numbers.md) +- [0639. 解码方法 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/decode-ways-ii.md) +- [0642. 设计搜索自动补全系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-search-autocomplete-system.md) +- [0643. 子数组最大平均数 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-average-subarray-i.md) +- [0647. 回文子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/palindromic-substrings.md) +- [0648. 单词替换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/replace-words.md) +- [0650. 两个键的键盘](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/2-keys-keyboard.md) +- [0652. 寻找重复的子树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-duplicate-subtrees.md) +- [0653. 两数之和 IV - 输入二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/two-sum-iv-input-is-a-bst.md) +- [0654. 最大二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-binary-tree.md) +- [0658. 找到 K 个最接近的元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/find-k-closest-elements.md) +- [0662. 二叉树最大宽度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree.md) +- [0664. 奇怪的打印机](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/strange-printer.md) +- [0665. 非递减数列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/non-decreasing-array.md) +- [0669. 修剪二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/trim-a-binary-search-tree.md) +- [0673. 最长递增子序列的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/number-of-longest-increasing-subsequence.md) +- [0674. 最长连续递增序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-continuous-increasing-subsequence.md) +- [0676. 实现一个魔法字典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/implement-magic-dictionary.md) +- [0677. 键值映射](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/map-sum-pairs.md) +- [0678. 有效的括号字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-parenthesis-string.md) +- [0680. 验证回文串 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/valid-palindrome-ii.md) +- [0683. K 个关闭的灯泡](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/k-empty-slots.md) +- [0684. 冗余连接](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection.md) +- [0686. 重复叠加字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match.md) +- [0687. 最长同值路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-univalue-path.md) +- [0688. 骑士在棋盘上的概率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/knight-probability-in-chessboard.md) +- [0690. 员工的重要性](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/employee-importance.md) +- [0691. 贴纸拼词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/stickers-to-spell-word.md) +- [0695. 岛屿的最大面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island.md) +- [0698. 划分为k个相等的子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/partition-to-k-equal-sum-subsets.md) diff --git a/docs/solutions/0700-0799/index.md b/docs/solutions/0700-0799/index.md index 118b4ef9..9697d8e8 100644 --- a/docs/solutions/0700-0799/index.md +++ b/docs/solutions/0700-0799/index.md @@ -1,44 +1,44 @@ ## 本章内容 -- [0700. 二叉搜索树中的搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-binary-search-tree/) -- [0701. 二叉搜索树中的插入操作](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-binary-search-tree/) -- [0702. 搜索长度未知的有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size/) -- [0703. 数据流中的第 K 大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream/) -- [0704. 二分查找](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search/) -- [0705. 设计哈希集合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashset/) -- [0706. 设计哈希映射](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashmap/) -- [0707. 设计链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-linked-list/) -- [0708. 循环有序列表的插入](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-sorted-circular-linked-list/) -- [0709. 转换成小写字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/to-lower-case/) -- [0713. 乘积小于 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/subarray-product-less-than-k/) -- [0714. 买卖股票的最佳时机含手续费](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee/) -- [0715. Range 模块](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/range-module/) -- [0718. 最长重复子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray/) -- [0719. 找出第 K 小的数对距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance/) -- [0720. 词典中最长的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/longest-word-in-dictionary/) -- [0724. 寻找数组的中心下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-pivot-index/) -- [0727. 最小窗口子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-window-subsequence/) -- [0729. 我的日程安排表 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-i/) -- [0731. 我的日程安排表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-ii/) -- [0732. 我的日程安排表 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-iii/) -- [0733. 图像渲染](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/flood-fill/) -- [0735. 小行星碰撞](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/asteroid-collision/) -- [0738. 单调递增的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/monotone-increasing-digits/) -- [0739. 每日温度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures/) -- [0744. 寻找比目标字母大的最小字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-smallest-letter-greater-than-target/) -- [0746. 使用最小花费爬楼梯](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/min-cost-climbing-stairs/) -- [0752. 打开转盘锁](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/open-the-lock/) -- [0758. 字符串中的加粗单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/bold-words-in-string/) -- [0763. 划分字母区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/partition-labels/) -- [0765. 情侣牵手](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/couples-holding-hands/) -- [0766. 托普利茨矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/toeplitz-matrix/) -- [0771. 宝石与石头](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/jewels-and-stones/) -- [0778. 水位上升的泳池中游泳](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water/) -- [0779. 第K个语法符号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/k-th-symbol-in-grammar/) -- [0783. 二叉搜索树节点最小距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-distance-between-bst-nodes/) -- [0784. 字母大小写全排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/letter-case-permutation/) -- [0785. 判断二分图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite/) -- [0788. 旋转数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotated-digits/) -- [0795. 区间子数组个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum/) -- [0796. 旋转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string/) -- [0797. 所有可能的路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target/) +- [0700. 二叉搜索树中的搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-binary-search-tree.md) +- [0701. 二叉搜索树中的插入操作](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-binary-search-tree.md) +- [0702. 搜索长度未知的有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-sorted-array-of-unknown-size.md) +- [0703. 数据流中的第 K 大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/kth-largest-element-in-a-stream.md) +- [0704. 二分查找](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search.md) +- [0705. 设计哈希集合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashset.md) +- [0706. 设计哈希映射](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashmap.md) +- [0707. 设计链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-linked-list.md) +- [0708. 循环有序列表的插入](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-sorted-circular-linked-list.md) +- [0709. 转换成小写字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/to-lower-case.md) +- [0713. 乘积小于 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/subarray-product-less-than-k.md) +- [0714. 买卖股票的最佳时机含手续费](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/best-time-to-buy-and-sell-stock-with-transaction-fee.md) +- [0715. Range 模块](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/range-module.md) +- [0718. 最长重复子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md) +- [0719. 找出第 K 小的数对距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-k-th-smallest-pair-distance.md) +- [0720. 词典中最长的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/longest-word-in-dictionary.md) +- [0724. 寻找数组的中心下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-pivot-index.md) +- [0727. 最小窗口子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-window-subsequence.md) +- [0729. 我的日程安排表 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-i.md) +- [0731. 我的日程安排表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-ii.md) +- [0732. 我的日程安排表 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-iii.md) +- [0733. 图像渲染](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/flood-fill.md) +- [0735. 小行星碰撞](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/asteroid-collision.md) +- [0738. 单调递增的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/monotone-increasing-digits.md) +- [0739. 每日温度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures.md) +- [0744. 寻找比目标字母大的最小字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-smallest-letter-greater-than-target.md) +- [0746. 使用最小花费爬楼梯](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/min-cost-climbing-stairs.md) +- [0752. 打开转盘锁](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/open-the-lock.md) +- [0758. 字符串中的加粗单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/bold-words-in-string.md) +- [0763. 划分字母区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/partition-labels.md) +- [0765. 情侣牵手](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/couples-holding-hands.md) +- [0766. 托普利茨矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/toeplitz-matrix.md) +- [0771. 宝石与石头](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/jewels-and-stones.md) +- [0778. 水位上升的泳池中游泳](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water.md) +- [0779. 第K个语法符号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/k-th-symbol-in-grammar.md) +- [0783. 二叉搜索树节点最小距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/minimum-distance-between-bst-nodes.md) +- [0784. 字母大小写全排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/letter-case-permutation.md) +- [0785. 判断二分图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite.md) +- [0788. 旋转数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotated-digits.md) +- [0795. 区间子数组个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/number-of-subarrays-with-bounded-maximum.md) +- [0796. 旋转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string.md) +- [0797. 所有可能的路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/all-paths-from-source-to-target.md) diff --git a/docs/solutions/0800-0899/index.md b/docs/solutions/0800-0899/index.md index 45e6a0b5..21ad6d7e 100644 --- a/docs/solutions/0800-0899/index.md +++ b/docs/solutions/0800-0899/index.md @@ -1,43 +1,43 @@ ## 本章内容 -- [0800. 相似 RGB 颜色](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/similar-rgb-color/) -- [0801. 使序列递增的最小交换次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing/) -- [0802. 找到最终的安全状态](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states/) -- [0803. 打砖块](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bricks-falling-when-hit/) -- [0804. 唯一摩尔斯密码词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/unique-morse-code-words/) -- [0806. 写字符串需要的行数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/number-of-lines-to-write-string/) -- [0811. 子域名访问计数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/subdomain-visit-count/) -- [0814. 二叉树剪枝](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-tree-pruning/) -- [0819. 最常见的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/most-common-word/) -- [0820. 单词的压缩编码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/short-encoding-of-words/) -- [0821. 字符的最短距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-distance-to-a-character/) -- [0824. 山羊拉丁文](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/goat-latin/) -- [0830. 较大分组的位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/positions-of-large-groups/) -- [0832. 翻转图像](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/flipping-an-image/) -- [0834. 树中距离之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/sum-of-distances-in-tree/) -- [0836. 矩形重叠](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-overlap/) -- [0841. 钥匙和房间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/keys-and-rooms/) -- [0844. 比较含退格的字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/backspace-string-compare/) -- [0845. 数组中的最长山脉](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/longest-mountain-in-array/) -- [0846. 一手顺子](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/hand-of-straights/) -- [0847. 访问所有节点的最短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-path-visiting-all-nodes/) -- [0850. 矩形面积 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-area-ii/) -- [0851. 喧闹和富有](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/loud-and-rich/) -- [0852. 山脉数组的峰顶索引](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/peak-index-in-a-mountain-array/) -- [0860. 柠檬水找零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/lemonade-change/) -- [0861. 翻转矩阵后的得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/score-after-flipping-matrix/) -- [0862. 和至少为 K 的最短子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k/) -- [0867. 转置矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/transpose-matrix/) -- [0868. 二进制间距](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-gap/) -- [0872. 叶子相似的树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/leaf-similar-trees/) -- [0873. 最长的斐波那契子序列的长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence/) -- [0875. 爱吃香蕉的珂珂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/koko-eating-bananas/) -- [0876. 链表的中间结点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/middle-of-the-linked-list/) -- [0877. 石子游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/stone-game/) -- [0881. 救生艇](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/boats-to-save-people/) -- [0884. 两句话中的不常见单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/uncommon-words-from-two-sentences/) -- [0886. 可能的二分法](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/possible-bipartition/) -- [0887. 鸡蛋掉落](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop/) -- [0889. 根据前序和后序遍历构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal/) -- [0892. 三维形体的表面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/surface-area-of-3d-shapes/) -- [0897. 递增顺序搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/increasing-order-search-tree/) +- [0800. 相似 RGB 颜色](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/similar-rgb-color.md) +- [0801. 使序列递增的最小交换次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/minimum-swaps-to-make-sequences-increasing.md) +- [0802. 找到最终的安全状态](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states.md) +- [0803. 打砖块](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bricks-falling-when-hit.md) +- [0804. 唯一摩尔斯密码词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/unique-morse-code-words.md) +- [0806. 写字符串需要的行数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/number-of-lines-to-write-string.md) +- [0811. 子域名访问计数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/subdomain-visit-count.md) +- [0814. 二叉树剪枝](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-tree-pruning.md) +- [0819. 最常见的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/most-common-word.md) +- [0820. 单词的压缩编码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/short-encoding-of-words.md) +- [0821. 字符的最短距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-distance-to-a-character.md) +- [0824. 山羊拉丁文](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/goat-latin.md) +- [0830. 较大分组的位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/positions-of-large-groups.md) +- [0832. 翻转图像](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/flipping-an-image.md) +- [0834. 树中距离之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/sum-of-distances-in-tree.md) +- [0836. 矩形重叠](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-overlap.md) +- [0841. 钥匙和房间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/keys-and-rooms.md) +- [0844. 比较含退格的字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/backspace-string-compare.md) +- [0845. 数组中的最长山脉](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/longest-mountain-in-array.md) +- [0846. 一手顺子](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/hand-of-straights.md) +- [0847. 访问所有节点的最短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-path-visiting-all-nodes.md) +- [0850. 矩形面积 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/rectangle-area-ii.md) +- [0851. 喧闹和富有](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/loud-and-rich.md) +- [0852. 山脉数组的峰顶索引](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/peak-index-in-a-mountain-array.md) +- [0860. 柠檬水找零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/lemonade-change.md) +- [0861. 翻转矩阵后的得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/score-after-flipping-matrix.md) +- [0862. 和至少为 K 的最短子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/shortest-subarray-with-sum-at-least-k.md) +- [0867. 转置矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/transpose-matrix.md) +- [0868. 二进制间距](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/binary-gap.md) +- [0872. 叶子相似的树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/leaf-similar-trees.md) +- [0873. 最长的斐波那契子序列的长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence.md) +- [0875. 爱吃香蕉的珂珂](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/koko-eating-bananas.md) +- [0876. 链表的中间结点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/middle-of-the-linked-list.md) +- [0877. 石子游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/stone-game.md) +- [0881. 救生艇](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/boats-to-save-people.md) +- [0884. 两句话中的不常见单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/uncommon-words-from-two-sentences.md) +- [0886. 可能的二分法](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/possible-bipartition.md) +- [0887. 鸡蛋掉落](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/super-egg-drop.md) +- [0889. 根据前序和后序遍历构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal.md) +- [0892. 三维形体的表面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/surface-area-of-3d-shapes.md) +- [0897. 递增顺序搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/increasing-order-search-tree.md) diff --git a/docs/solutions/0900-0999/index.md b/docs/solutions/0900-0999/index.md index cb55b18d..3904cd2a 100644 --- a/docs/solutions/0900-0999/index.md +++ b/docs/solutions/0900-0999/index.md @@ -1,33 +1,33 @@ ## 本章内容 -- [0900. RLE 迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/rle-iterator/) -- [0901. 股票价格跨度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/online-stock-span/) -- [0902. 最大为 N 的数字组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/numbers-at-most-n-given-digit-set/) -- [0904. 水果成篮](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/fruit-into-baskets/) -- [0908. 最小差值 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/smallest-range-i/) -- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array/) -- [0918. 环形子数组的最大和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/maximum-sum-circular-subarray/) -- [0919. 完全二叉树插入器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/complete-binary-tree-inserter/) -- [0921. 使括号有效的最少添加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid/) -- [0925. 长按键入](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/long-pressed-name/) -- [0932. 漂亮数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/beautiful-array/) -- [0933. 最近的请求次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/number-of-recent-calls/) -- [0935. 骑士拨号器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/knight-dialer/) -- [0938. 二叉搜索树的范围和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/range-sum-of-bst/) -- [0946. 验证栈序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/validate-stack-sequences/) -- [0947. 移除最多的同行或同列石头](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column/) -- [0953. 验证外星语词典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/verifying-an-alien-dictionary/) -- [0958. 二叉树的完全性检验](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree/) -- [0959. 由斜杠划分区域](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/regions-cut-by-slashes/) -- [0968. 监控二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/binary-tree-cameras/) -- [0973. 最接近原点的 K 个点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/k-closest-points-to-origin/) -- [0974. 和可被 K 整除的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarray-sums-divisible-by-k/) -- [0976. 三角形的最大周长](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/largest-perimeter-triangle/) -- [0977. 有序数组的平方](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/squares-of-a-sorted-array/) -- [0978. 最长湍流子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/longest-turbulent-subarray/) -- [0982. 按位与为零的三元组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero/) -- [0990. 等式方程的可满足性](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/satisfiability-of-equality-equations/) -- [0992. K 个不同整数的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarrays-with-k-different-integers/) -- [0993. 二叉树的堂兄弟节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/cousins-in-binary-tree/) -- [0995. K 连续位的最小翻转次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips/) -- [0999. 可以被一步捕获的棋子数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/available-captures-for-rook/) +- [0900. RLE 迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/rle-iterator.md) +- [0901. 股票价格跨度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/online-stock-span.md) +- [0902. 最大为 N 的数字组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/numbers-at-most-n-given-digit-set.md) +- [0904. 水果成篮](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/fruit-into-baskets.md) +- [0908. 最小差值 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/smallest-range-i.md) +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) +- [0918. 环形子数组的最大和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/maximum-sum-circular-subarray.md) +- [0919. 完全二叉树插入器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/complete-binary-tree-inserter.md) +- [0921. 使括号有效的最少添加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-add-to-make-parentheses-valid.md) +- [0925. 长按键入](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/long-pressed-name.md) +- [0932. 漂亮数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/beautiful-array.md) +- [0933. 最近的请求次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/number-of-recent-calls.md) +- [0935. 骑士拨号器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/knight-dialer.md) +- [0938. 二叉搜索树的范围和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/range-sum-of-bst.md) +- [0946. 验证栈序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/validate-stack-sequences.md) +- [0947. 移除最多的同行或同列石头](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column.md) +- [0953. 验证外星语词典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/verifying-an-alien-dictionary.md) +- [0958. 二叉树的完全性检验](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/check-completeness-of-a-binary-tree.md) +- [0959. 由斜杠划分区域](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/regions-cut-by-slashes.md) +- [0968. 监控二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/binary-tree-cameras.md) +- [0973. 最接近原点的 K 个点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/k-closest-points-to-origin.md) +- [0974. 和可被 K 整除的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarray-sums-divisible-by-k.md) +- [0976. 三角形的最大周长](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/largest-perimeter-triangle.md) +- [0977. 有序数组的平方](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/squares-of-a-sorted-array.md) +- [0978. 最长湍流子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/longest-turbulent-subarray.md) +- [0982. 按位与为零的三元组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/triples-with-bitwise-and-equal-to-zero.md) +- [0990. 等式方程的可满足性](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/satisfiability-of-equality-equations.md) +- [0992. K 个不同整数的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/subarrays-with-k-different-integers.md) +- [0993. 二叉树的堂兄弟节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/cousins-in-binary-tree.md) +- [0995. K 连续位的最小翻转次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips.md) +- [0999. 可以被一步捕获的棋子数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/available-captures-for-rook.md) diff --git a/docs/solutions/1000-1099/index.md b/docs/solutions/1000-1099/index.md index f4483e2b..009d52e9 100644 --- a/docs/solutions/1000-1099/index.md +++ b/docs/solutions/1000-1099/index.md @@ -1,34 +1,34 @@ ## 本章内容 -- [1000. 合并石头的最低成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-cost-to-merge-stones/) -- [1002. 查找共用字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-common-characters/) -- [1004. 最大连续1的个数 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii/) -- [1005. K 次取反后最大化的数组和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/maximize-sum-of-array-after-k-negations/) -- [1008. 前序遍历构造二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/construct-binary-search-tree-from-preorder-traversal/) -- [1009. 十进制整数的反码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/complement-of-base-10-integer/) -- [1011. 在 D 天内送达包裹的能力](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days/) -- [1012. 至少有 1 位重复的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/numbers-with-repeated-digits/) -- [1014. 最佳观光组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/best-sightseeing-pair/) -- [1020. 飞地的数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/number-of-enclaves/) -- [1021. 删除最外层的括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-outermost-parentheses/) -- [1023. 驼峰式匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/camelcase-matching/) -- [1025. 除数博弈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/divisor-game/) -- [1028. 从先序遍历还原二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/recover-a-tree-from-preorder-traversal/) -- [1029. 两地调度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-city-scheduling/) -- [1034. 边界着色](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/coloring-a-border/) -- [1035. 不相交的线](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/uncrossed-lines/) -- [1037. 有效的回旋镖](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/valid-boomerang/) -- [1038. 从二叉搜索树到更大和树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/binary-search-tree-to-greater-sum-tree/) -- [1039. 多边形三角剖分的最低得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-score-triangulation-of-polygon/) -- [1041. 困于环中的机器人](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/robot-bounded-in-circle/) -- [1047. 删除字符串中的所有相邻重复项](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string/) -- [1049. 最后一块石头的重量 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/last-stone-weight-ii/) -- [1051. 高度检查器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/height-checker/) -- [1052. 爱生气的书店老板](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/grumpy-bookstore-owner/) -- [1065. 字符串的索引对](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/index-pairs-of-a-string/) -- [1079. 活字印刷](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/letter-tile-possibilities/) -- [1081. 不同字符的最小子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/smallest-subsequence-of-distinct-characters/) -- [1089. 复写零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/duplicate-zeros/) -- [1091. 二进制矩阵中的最短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/shortest-path-in-binary-matrix/) -- [1095. 山脉数组中查找目标值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-in-mountain-array/) -- [1099. 小于 K 的两数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-sum-less-than-k/) +- [1000. 合并石头的最低成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-cost-to-merge-stones.md) +- [1002. 查找共用字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-common-characters.md) +- [1004. 最大连续1的个数 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii.md) +- [1005. K 次取反后最大化的数组和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/maximize-sum-of-array-after-k-negations.md) +- [1008. 前序遍历构造二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/construct-binary-search-tree-from-preorder-traversal.md) +- [1009. 十进制整数的反码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/complement-of-base-10-integer.md) +- [1011. 在 D 天内送达包裹的能力](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days.md) +- [1012. 至少有 1 位重复的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/numbers-with-repeated-digits.md) +- [1014. 最佳观光组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/best-sightseeing-pair.md) +- [1020. 飞地的数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/number-of-enclaves.md) +- [1021. 删除最外层的括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-outermost-parentheses.md) +- [1023. 驼峰式匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/camelcase-matching.md) +- [1025. 除数博弈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/divisor-game.md) +- [1028. 从先序遍历还原二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/recover-a-tree-from-preorder-traversal.md) +- [1029. 两地调度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-city-scheduling.md) +- [1034. 边界着色](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/coloring-a-border.md) +- [1035. 不相交的线](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/uncrossed-lines.md) +- [1037. 有效的回旋镖](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/valid-boomerang.md) +- [1038. 从二叉搜索树到更大和树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/binary-search-tree-to-greater-sum-tree.md) +- [1039. 多边形三角剖分的最低得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/minimum-score-triangulation-of-polygon.md) +- [1041. 困于环中的机器人](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/robot-bounded-in-circle.md) +- [1047. 删除字符串中的所有相邻重复项](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/remove-all-adjacent-duplicates-in-string.md) +- [1049. 最后一块石头的重量 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/last-stone-weight-ii.md) +- [1051. 高度检查器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/height-checker.md) +- [1052. 爱生气的书店老板](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/grumpy-bookstore-owner.md) +- [1065. 字符串的索引对](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/index-pairs-of-a-string.md) +- [1079. 活字印刷](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/letter-tile-possibilities.md) +- [1081. 不同字符的最小子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/smallest-subsequence-of-distinct-characters.md) +- [1089. 复写零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/duplicate-zeros.md) +- [1091. 二进制矩阵中的最短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/shortest-path-in-binary-matrix.md) +- [1095. 山脉数组中查找目标值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/find-in-mountain-array.md) +- [1099. 小于 K 的两数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/two-sum-less-than-k.md) diff --git a/docs/solutions/1100-1199/index.md b/docs/solutions/1100-1199/index.md index 61306bac..4b5bcd0f 100644 --- a/docs/solutions/1100-1199/index.md +++ b/docs/solutions/1100-1199/index.md @@ -1,16 +1,16 @@ ## 本章内容 -- [1100. 长度为 K 的无重复字符子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters/) -- [1103. 分糖果 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distribute-candies-to-people/) -- [1108. IP 地址无效化](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/defanging-an-ip-address/) -- [1109. 航班预订统计](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings/) -- [1110. 删点成林](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/delete-nodes-and-return-forest/) -- [1122. 数组的相对排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/relative-sort-array/) -- [1136. 并行课程](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/parallel-courses/) -- [1137. 第 N 个泰波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number/) -- [1143. 最长公共子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence/) -- [1151. 最少交换次数来组合所有的 1](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together/) -- [1155. 掷骰子等于目标和的方法数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum/) -- [1161. 最大层内元素和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/maximum-level-sum-of-a-binary-tree/) -- [1176. 健身计划评估](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/diet-plan-performance/) -- [1184. 公交站间的距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distance-between-bus-stops/) +- [1100. 长度为 K 的无重复字符子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/find-k-length-substrings-with-no-repeated-characters.md) +- [1103. 分糖果 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distribute-candies-to-people.md) +- [1108. IP 地址无效化](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/defanging-an-ip-address.md) +- [1109. 航班预订统计](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings.md) +- [1110. 删点成林](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/delete-nodes-and-return-forest.md) +- [1122. 数组的相对排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/relative-sort-array.md) +- [1136. 并行课程](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/parallel-courses.md) +- [1137. 第 N 个泰波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number.md) +- [1143. 最长公共子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence.md) +- [1151. 最少交换次数来组合所有的 1](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/minimum-swaps-to-group-all-1s-together.md) +- [1155. 掷骰子等于目标和的方法数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum.md) +- [1161. 最大层内元素和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/maximum-level-sum-of-a-binary-tree.md) +- [1176. 健身计划评估](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/diet-plan-performance.md) +- [1184. 公交站间的距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/distance-between-bus-stops.md) diff --git a/docs/solutions/1200-1299/index.md b/docs/solutions/1200-1299/index.md index f5518028..80fddc7e 100644 --- a/docs/solutions/1200-1299/index.md +++ b/docs/solutions/1200-1299/index.md @@ -1,18 +1,18 @@ ## 本章内容 -- [1202. 交换字符串中的元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/smallest-string-with-swaps/) -- [1208. 尽可能使字符串相等](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/get-equal-substrings-within-budget/) -- [1217. 玩筹码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position/) -- [1220. 统计元音字母序列的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/count-vowels-permutation/) -- [1227. 飞机座位分配概率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/airplane-seat-assignment-probability/) -- [1229. 安排会议日程](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/meeting-scheduler/) -- [1232. 缀点成线](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/check-if-it-is-a-straight-line/) -- [1245. 树的直径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/tree-diameter/) -- [1247. 交换字符使得字符串相同](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal/) -- [1253. 重构 2 行二进制矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/reconstruct-a-2-row-binary-matrix/) -- [1254. 统计封闭岛屿的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/number-of-closed-islands/) -- [1261. 在受污染的二叉树中查找元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/find-elements-in-a-contaminated-binary-tree/) -- [1266. 访问所有点的最小时间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-time-visiting-all-points/) -- [1268. 搜索推荐系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/search-suggestions-system/) -- [1281. 整数的各位积和之差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/subtract-the-product-and-sum-of-digits-of-an-integer/) -- [1296. 划分数组为连续数字的集合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers/) +- [1202. 交换字符串中的元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/smallest-string-with-swaps.md) +- [1208. 尽可能使字符串相等](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/get-equal-substrings-within-budget.md) +- [1217. 玩筹码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-cost-to-move-chips-to-the-same-position.md) +- [1220. 统计元音字母序列的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/count-vowels-permutation.md) +- [1227. 飞机座位分配概率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/airplane-seat-assignment-probability.md) +- [1229. 安排会议日程](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/meeting-scheduler.md) +- [1232. 缀点成线](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/check-if-it-is-a-straight-line.md) +- [1245. 树的直径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/tree-diameter.md) +- [1247. 交换字符使得字符串相同](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-swaps-to-make-strings-equal.md) +- [1253. 重构 2 行二进制矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/reconstruct-a-2-row-binary-matrix.md) +- [1254. 统计封闭岛屿的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/number-of-closed-islands.md) +- [1261. 在受污染的二叉树中查找元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/find-elements-in-a-contaminated-binary-tree.md) +- [1266. 访问所有点的最小时间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/minimum-time-visiting-all-points.md) +- [1268. 搜索推荐系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/search-suggestions-system.md) +- [1281. 整数的各位积和之差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/subtract-the-product-and-sum-of-digits-of-an-integer.md) +- [1296. 划分数组为连续数字的集合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/divide-array-in-sets-of-k-consecutive-numbers.md) diff --git a/docs/solutions/1300-1399/index.md b/docs/solutions/1300-1399/index.md index 967f46ae..041f59ce 100644 --- a/docs/solutions/1300-1399/index.md +++ b/docs/solutions/1300-1399/index.md @@ -1,17 +1,17 @@ ## 本章内容 -- [1300. 转变数组后最接近目标值的数组和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target/) -- [1305. 两棵二叉搜索树中的所有元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/all-elements-in-two-binary-search-trees/) -- [1310. 子数组异或查询](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray/) -- [1313. 解压缩编码列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/decompress-run-length-encoded-list/) -- [1317. 将整数转换为两个无零整数的和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/convert-integer-to-the-sum-of-two-no-zero-integers/) -- [1319. 连通网络的操作次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-operations-to-make-network-connected/) -- [1324. 竖直打印单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/print-words-vertically/) -- [1338. 数组大小减半](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/reduce-array-size-to-the-half/) -- [1343. 大小为 K 且平均值大于等于阈值的子数组数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold/) -- [1344. 时钟指针的夹角](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/angle-between-hands-of-a-clock/) -- [1347. 制造字母异位词的最小步骤数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/minimum-number-of-steps-to-make-two-strings-anagram/) -- [1349. 参加考试的最大学生数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam/) -- [1358. 包含所有三种字符的子字符串数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters/) -- [1362. 最接近的因数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/closest-divisors/) -- [1381. 设计一个支持增量操作的栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/design-a-stack-with-increment-operation/) +- [1300. 转变数组后最接近目标值的数组和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/sum-of-mutated-array-closest-to-target.md) +- [1305. 两棵二叉搜索树中的所有元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/all-elements-in-two-binary-search-trees.md) +- [1310. 子数组异或查询](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/xor-queries-of-a-subarray.md) +- [1313. 解压缩编码列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/decompress-run-length-encoded-list.md) +- [1317. 将整数转换为两个无零整数的和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/convert-integer-to-the-sum-of-two-no-zero-integers.md) +- [1319. 连通网络的操作次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-operations-to-make-network-connected.md) +- [1324. 竖直打印单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/print-words-vertically.md) +- [1338. 数组大小减半](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/reduce-array-size-to-the-half.md) +- [1343. 大小为 K 且平均值大于等于阈值的子数组数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-sub-arrays-of-size-k-and-average-greater-than-or-equal-to-threshold.md) +- [1344. 时钟指针的夹角](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/angle-between-hands-of-a-clock.md) +- [1347. 制造字母异位词的最小步骤数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/minimum-number-of-steps-to-make-two-strings-anagram.md) +- [1349. 参加考试的最大学生数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/maximum-students-taking-exam.md) +- [1358. 包含所有三种字符的子字符串数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/number-of-substrings-containing-all-three-characters.md) +- [1362. 最接近的因数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/closest-divisors.md) +- [1381. 设计一个支持增量操作的栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1300-1399/design-a-stack-with-increment-operation.md) diff --git a/docs/solutions/1400-1499/index.md b/docs/solutions/1400-1499/index.md index 94b8c200..f6c0e4b4 100644 --- a/docs/solutions/1400-1499/index.md +++ b/docs/solutions/1400-1499/index.md @@ -1,20 +1,20 @@ ## 本章内容 -- [1400. 构造 K 个回文字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/construct-k-palindrome-strings/) -- [1408. 数组中的字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array/) -- [1422. 分割字符串的最大得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-score-after-splitting-a-string/) -- [1423. 可获得的最大点数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards/) -- [1438. 绝对差不超过限制的最长连续子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit/) -- [1446. 连续字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/consecutive-characters/) -- [1447. 最简分数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/simplified-fractions/) -- [1449. 数位成本和为目标值的最大数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target/) -- [1450. 在既定时间做作业的学生人数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time/) -- [1451. 重新排列句子中的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/rearrange-words-in-a-sentence/) -- [1456. 定长子串中元音的最大数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length/) -- [1476. 子矩形查询](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/subrectangle-queries/) -- [1480. 一维数组的动态和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/running-sum-of-1d-array/) -- [1482. 制作 m 束花所需的最少天数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets/) -- [1486. 数组异或操作](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/xor-operation-in-an-array/) -- [1491. 去掉最低工资和最高工资后的工资平均值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/average-salary-excluding-the-minimum-and-maximum-salary/) -- [1493. 删掉一个元素以后全为 1 的最长子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element/) -- [1496. 判断路径是否相交](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/path-crossing/) +- [1400. 构造 K 个回文字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/construct-k-palindrome-strings.md) +- [1408. 数组中的字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array.md) +- [1422. 分割字符串的最大得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-score-after-splitting-a-string.md) +- [1423. 可获得的最大点数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-points-you-can-obtain-from-cards.md) +- [1438. 绝对差不超过限制的最长连续子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-continuous-subarray-with-absolute-diff-less-than-or-equal-to-limit.md) +- [1446. 连续字符](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/consecutive-characters.md) +- [1447. 最简分数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/simplified-fractions.md) +- [1449. 数位成本和为目标值的最大数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target.md) +- [1450. 在既定时间做作业的学生人数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time.md) +- [1451. 重新排列句子中的单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/rearrange-words-in-a-sentence.md) +- [1456. 定长子串中元音的最大数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/maximum-number-of-vowels-in-a-substring-of-given-length.md) +- [1476. 子矩形查询](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/subrectangle-queries.md) +- [1480. 一维数组的动态和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/running-sum-of-1d-array.md) +- [1482. 制作 m 束花所需的最少天数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/minimum-number-of-days-to-make-m-bouquets.md) +- [1486. 数组异或操作](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/xor-operation-in-an-array.md) +- [1491. 去掉最低工资和最高工资后的工资平均值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/average-salary-excluding-the-minimum-and-maximum-salary.md) +- [1493. 删掉一个元素以后全为 1 的最长子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/longest-subarray-of-1s-after-deleting-one-element.md) +- [1496. 判断路径是否相交](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/path-crossing.md) diff --git a/docs/solutions/1500-1599/index.md b/docs/solutions/1500-1599/index.md index f7590fb3..e1361df0 100644 --- a/docs/solutions/1500-1599/index.md +++ b/docs/solutions/1500-1599/index.md @@ -1,15 +1,15 @@ ## 本章内容 -- [1502. 判断能否形成等差数列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/can-make-arithmetic-progression-from-sequence/) -- [1507. 转变日期格式](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/reformat-date/) -- [1523. 在区间范围内统计奇数数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-odd-numbers-in-an-interval-range/) -- [1534. 统计好三元组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-good-triplets/) -- [1547. 切棍子的最小成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick/) -- [1551. 使数组中所有元素相等的最小操作数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-operations-to-make-array-equal/) -- [1556. 千位分隔数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/thousand-separator/) -- [1561. 你可以获得的最大硬币数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-number-of-coins-you-can-get/) -- [1567. 乘积为正数的最长子数组长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-length-of-subarray-with-positive-product/) -- [1582. 二进制矩阵中的特殊位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/special-positions-in-a-binary-matrix/) -- [1584. 连接所有点的最小费用](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/min-cost-to-connect-all-points/) -- [1593. 拆分字符串使唯一子字符串的数目最大](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings/) -- [1595. 连通两组点的最小成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points/) +- [1502. 判断能否形成等差数列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/can-make-arithmetic-progression-from-sequence.md) +- [1507. 转变日期格式](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/reformat-date.md) +- [1523. 在区间范围内统计奇数数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-odd-numbers-in-an-interval-range.md) +- [1534. 统计好三元组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/count-good-triplets.md) +- [1547. 切棍子的最小成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick.md) +- [1551. 使数组中所有元素相等的最小操作数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-operations-to-make-array-equal.md) +- [1556. 千位分隔数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/thousand-separator.md) +- [1561. 你可以获得的最大硬币数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-number-of-coins-you-can-get.md) +- [1567. 乘积为正数的最长子数组长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/maximum-length-of-subarray-with-positive-product.md) +- [1582. 二进制矩阵中的特殊位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/special-positions-in-a-binary-matrix.md) +- [1584. 连接所有点的最小费用](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/min-cost-to-connect-all-points.md) +- [1593. 拆分字符串使唯一子字符串的数目最大](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/split-a-string-into-the-max-number-of-unique-substrings.md) +- [1595. 连通两组点的最小成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points.md) diff --git a/docs/solutions/1600-1699/index.md b/docs/solutions/1600-1699/index.md index 36ebacab..88784af4 100644 --- a/docs/solutions/1600-1699/index.md +++ b/docs/solutions/1600-1699/index.md @@ -1,15 +1,15 @@ ## 本章内容 -- [1603. 设计停车系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/design-parking-system/) -- [1605. 给定行和列的和求可行矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums/) -- [1614. 括号的最大嵌套深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-nesting-depth-of-the-parentheses/) -- [1617. 统计子树中城市之间最大距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities/) -- [1631. 最小体力消耗路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort/) -- [1641. 统计字典序元音字符串的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-sorted-vowel-strings/) -- [1646. 获取生成数组中的最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/get-maximum-in-generated-array/) -- [1647. 字符频次唯一的最小删除次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-deletions-to-make-character-frequencies-unique/) -- [1657. 确定两个字符串是否接近](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/determine-if-two-strings-are-close/) -- [1658. 将 x 减到 0 的最小操作数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero/) -- [1672. 最富有客户的资产总量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/richest-customer-wealth/) -- [1695. 删除子数组的最大得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-erasure-value/) -- [1698. 字符串的不同子字符串个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/number-of-distinct-substrings-in-a-string/) +- [1603. 设计停车系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/design-parking-system.md) +- [1605. 给定行和列的和求可行矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/find-valid-matrix-given-row-and-column-sums.md) +- [1614. 括号的最大嵌套深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-nesting-depth-of-the-parentheses.md) +- [1617. 统计子树中城市之间最大距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities.md) +- [1631. 最小体力消耗路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort.md) +- [1641. 统计字典序元音字符串的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-sorted-vowel-strings.md) +- [1646. 获取生成数组中的最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/get-maximum-in-generated-array.md) +- [1647. 字符频次唯一的最小删除次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-deletions-to-make-character-frequencies-unique.md) +- [1657. 确定两个字符串是否接近](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/determine-if-two-strings-are-close.md) +- [1658. 将 x 减到 0 的最小操作数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/minimum-operations-to-reduce-x-to-zero.md) +- [1672. 最富有客户的资产总量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/richest-customer-wealth.md) +- [1695. 删除子数组的最大得分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/maximum-erasure-value.md) +- [1698. 字符串的不同子字符串个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/number-of-distinct-substrings-in-a-string.md) diff --git a/docs/solutions/1700-1799/index.md b/docs/solutions/1700-1799/index.md index 59b404f6..032c55e2 100644 --- a/docs/solutions/1700-1799/index.md +++ b/docs/solutions/1700-1799/index.md @@ -1,13 +1,13 @@ ## 本章内容 -- [1710. 卡车上的最大单元数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-units-on-a-truck/) -- [1716. 计算力扣银行的钱](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/calculate-money-in-leetcode-bank/) -- [1720. 解码异或后的数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/decode-xored-array/) -- [1726. 同积元组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/tuple-with-same-product/) -- [1736. 替换隐藏数字得到的最晚时间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/latest-time-by-replacing-hidden-digits/) -- [1742. 盒子中小球的最大数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-balls-in-a-box/) -- [1749. 任意子数组和的绝对值的最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-absolute-sum-of-any-subarray/) -- [1763. 最长的美好子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/longest-nice-substring/) -- [1779. 找到最近的有相同 X 或 Y 坐标的点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-nearest-point-that-has-the-same-x-or-y-coordinate/) -- [1790. 仅执行一次字符串交换能否使两个字符串相等](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/check-if-one-string-swap-can-make-strings-equal/) -- [1791. 找出星型图的中心节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-center-of-star-graph/) +- [1710. 卡车上的最大单元数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-units-on-a-truck.md) +- [1716. 计算力扣银行的钱](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/calculate-money-in-leetcode-bank.md) +- [1720. 解码异或后的数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/decode-xored-array.md) +- [1726. 同积元组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/tuple-with-same-product.md) +- [1736. 替换隐藏数字得到的最晚时间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/latest-time-by-replacing-hidden-digits.md) +- [1742. 盒子中小球的最大数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-balls-in-a-box.md) +- [1749. 任意子数组和的绝对值的最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-absolute-sum-of-any-subarray.md) +- [1763. 最长的美好子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/longest-nice-substring.md) +- [1779. 找到最近的有相同 X 或 Y 坐标的点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-nearest-point-that-has-the-same-x-or-y-coordinate.md) +- [1790. 仅执行一次字符串交换能否使两个字符串相等](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/check-if-one-string-swap-can-make-strings-equal.md) +- [1791. 找出星型图的中心节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/find-center-of-star-graph.md) diff --git a/docs/solutions/1800-1899/index.md b/docs/solutions/1800-1899/index.md index 4ceb27d1..e7e943c0 100644 --- a/docs/solutions/1800-1899/index.md +++ b/docs/solutions/1800-1899/index.md @@ -1,13 +1,13 @@ ## 本章内容 -- [1822. 数组元素积的符号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sign-of-the-product-of-an-array/) -- [1827. 最少操作使数组递增](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-operations-to-make-the-array-increasing/) -- [1833. 雪糕的最大数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/maximum-ice-cream-bars/) -- [1844. 将所有数字用字符替换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/replace-all-digits-with-characters/) -- [1858. 包含所有前缀的最长单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/longest-word-with-all-prefixes/) -- [1859. 将句子排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sorting-the-sentence/) -- [1876. 长度为三且各字符不同的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/substrings-of-size-three-with-distinct-characters/) -- [1877. 数组中最大数对和的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimize-maximum-pair-sum-in-array/) -- [1879. 两个数组最小的异或值之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays/) -- [1893. 检查是否区域内所有整数都被覆盖](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered/) -- [1897. 重新分配字符使所有字符串都相等](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/redistribute-characters-to-make-all-strings-equal/) +- [1822. 数组元素积的符号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sign-of-the-product-of-an-array.md) +- [1827. 最少操作使数组递增](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-operations-to-make-the-array-increasing.md) +- [1833. 雪糕的最大数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/maximum-ice-cream-bars.md) +- [1844. 将所有数字用字符替换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/replace-all-digits-with-characters.md) +- [1858. 包含所有前缀的最长单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/longest-word-with-all-prefixes.md) +- [1859. 将句子排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sorting-the-sentence.md) +- [1876. 长度为三且各字符不同的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/substrings-of-size-three-with-distinct-characters.md) +- [1877. 数组中最大数对和的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimize-maximum-pair-sum-in-array.md) +- [1879. 两个数组最小的异或值之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays.md) +- [1893. 检查是否区域内所有整数都被覆盖](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/check-if-all-the-integers-in-a-range-are-covered.md) +- [1897. 重新分配字符使所有字符串都相等](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/redistribute-characters-to-make-all-strings-equal.md) diff --git a/docs/solutions/1900-1999/index.md b/docs/solutions/1900-1999/index.md index 68445636..16d32f62 100644 --- a/docs/solutions/1900-1999/index.md +++ b/docs/solutions/1900-1999/index.md @@ -1,14 +1,14 @@ ## 本章内容 -- [1903. 字符串中的最大奇数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/largest-odd-number-in-string/) -- [1921. 消灭怪物的最大数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/eliminate-maximum-number-of-monsters/) -- [1925. 统计平方和三元组的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-square-sum-triples/) -- [1929. 数组串联](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/concatenation-of-array/) -- [1930. 长度为 3 的不同回文子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/unique-length-3-palindromic-subsequences/) -- [1936. 新增的最少台阶数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/add-minimum-number-of-rungs/) -- [1941. 检查是否所有字符出现次数相同](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences/) -- [1947. 最大兼容性评分和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum/) -- [1984. 学生分数的最小差值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-difference-between-highest-and-lowest-of-k-scores/) -- [1986. 完成任务的最少工作时间段](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks/) -- [1991. 找到数组的中间位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/find-the-middle-index-in-array/) -- [1994. 好子集的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/the-number-of-good-subsets/) +- [1903. 字符串中的最大奇数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/largest-odd-number-in-string.md) +- [1921. 消灭怪物的最大数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/eliminate-maximum-number-of-monsters.md) +- [1925. 统计平方和三元组的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-square-sum-triples.md) +- [1929. 数组串联](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/concatenation-of-array.md) +- [1930. 长度为 3 的不同回文子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/unique-length-3-palindromic-subsequences.md) +- [1936. 新增的最少台阶数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/add-minimum-number-of-rungs.md) +- [1941. 检查是否所有字符出现次数相同](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/check-if-all-characters-have-equal-number-of-occurrences.md) +- [1947. 最大兼容性评分和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum.md) +- [1984. 学生分数的最小差值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-difference-between-highest-and-lowest-of-k-scores.md) +- [1986. 完成任务的最少工作时间段](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/minimum-number-of-work-sessions-to-finish-the-tasks.md) +- [1991. 找到数组的中间位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/find-the-middle-index-in-array.md) +- [1994. 好子集的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/the-number-of-good-subsets.md) diff --git a/docs/solutions/2000-2099/index.md b/docs/solutions/2000-2099/index.md index 3cde4cdb..e3a63edb 100644 --- a/docs/solutions/2000-2099/index.md +++ b/docs/solutions/2000-2099/index.md @@ -1,5 +1,5 @@ ## 本章内容 -- [2011. 执行操作后的变量值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/final-value-of-variable-after-performing-operations/) -- [2023. 连接后等于目标字符串的字符串对](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/number-of-pairs-of-strings-with-concatenation-equal-to-target/) -- [2050. 并行课程 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/parallel-courses-iii/) +- [2011. 执行操作后的变量值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/final-value-of-variable-after-performing-operations.md) +- [2023. 连接后等于目标字符串的字符串对](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/number-of-pairs-of-strings-with-concatenation-equal-to-target.md) +- [2050. 并行课程 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/parallel-courses-iii.md) diff --git a/docs/solutions/2100-2199/index.md b/docs/solutions/2100-2199/index.md index 4435613e..91ab61f0 100644 --- a/docs/solutions/2100-2199/index.md +++ b/docs/solutions/2100-2199/index.md @@ -1,4 +1,4 @@ ## 本章内容 -- [2156. 查找给定哈希值的子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value/) -- [2172. 数组的最大与和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/maximum-and-sum-of-array/) +- [2156. 查找给定哈希值的子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value.md) +- [2172. 数组的最大与和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/maximum-and-sum-of-array.md) diff --git a/docs/solutions/2200-2299/index.md b/docs/solutions/2200-2299/index.md index b9afd718..ce4a5920 100644 --- a/docs/solutions/2200-2299/index.md +++ b/docs/solutions/2200-2299/index.md @@ -1,6 +1,6 @@ ## 本章内容 -- [2235. 两整数相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/add-two-integers/) -- [2246. 相邻字符不同的最长路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/longest-path-with-different-adjacent-characters/) -- [2249. 统计圆内格点数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-lattice-points-inside-a-circle/) -- [2276. 统计区间中的整数数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-integers-in-intervals/) +- [2235. 两整数相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/add-two-integers.md) +- [2246. 相邻字符不同的最长路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/longest-path-with-different-adjacent-characters.md) +- [2249. 统计圆内格点数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-lattice-points-inside-a-circle.md) +- [2276. 统计区间中的整数数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-integers-in-intervals.md) diff --git a/docs/solutions/2300-2399/index.md b/docs/solutions/2300-2399/index.md index 5d14aa66..19cffb9a 100644 --- a/docs/solutions/2300-2399/index.md +++ b/docs/solutions/2300-2399/index.md @@ -1,3 +1,3 @@ ## 本章内容 -- [2376. 统计特殊整数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2300-2399/count-special-integers/) +- [2376. 统计特殊整数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2300-2399/count-special-integers.md) diff --git a/docs/solutions/2400-2499/index.md b/docs/solutions/2400-2499/index.md index e28005cc..a5b8d945 100644 --- a/docs/solutions/2400-2499/index.md +++ b/docs/solutions/2400-2499/index.md @@ -1,3 +1,3 @@ ## 本章内容 -- [2427. 公因子的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2400-2499/number-of-common-factors/) +- [2427. 公因子的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2400-2499/number-of-common-factors.md) diff --git a/docs/solutions/2500-2599/index.md b/docs/solutions/2500-2599/index.md index 0314e0ad..7a1ae3c8 100644 --- a/docs/solutions/2500-2599/index.md +++ b/docs/solutions/2500-2599/index.md @@ -1,4 +1,4 @@ ## 本章内容 -- [2538. 最大价值和与最小价值和的差值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum/) -- [2585. 获得分数的方法数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/number-of-ways-to-earn-points/) +- [2538. 最大价值和与最小价值和的差值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/difference-between-maximum-and-minimum-price-sum.md) +- [2585. 获得分数的方法数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/number-of-ways-to-earn-points.md) diff --git a/docs/solutions/2700-2799/index.md b/docs/solutions/2700-2799/index.md index a4b5a5c4..24b33ddd 100644 --- a/docs/solutions/2700-2799/index.md +++ b/docs/solutions/2700-2799/index.md @@ -1,3 +1,3 @@ ## 本章内容 -- [2719. 统计整数数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/count-of-integers/) +- [2719. 统计整数数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/count-of-integers.md) diff --git a/docs/solutions/Interviews/index.md b/docs/solutions/Interviews/index.md index b1ec96c9..9075fd7f 100644 --- a/docs/solutions/Interviews/index.md +++ b/docs/solutions/Interviews/index.md @@ -1,32 +1,32 @@ ## 本章内容 -- [面试题 01.07. 旋转矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/rotate-matrix-lcci/) -- [面试题 01.08. 零矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/zero-matrix-lcci/) -- [面试题 02.02. 返回倒数第 k 个节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/kth-node-from-end-of-list-lcci/) -- [面试题 02.05. 链表求和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sum-lists-lcci/) -- [面试题 02.06. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/palindrome-linked-list-lcci/) -- [面试题 02.07. 链表相交](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci/) -- [面试题 02.08. 环路检测](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/linked-list-cycle-lcci/) -- [面试题 03.02. 栈的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/min-stack-lcci/) -- [面试题 03.04. 化栈为队](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/implement-queue-using-stacks-lcci/) -- [面试题 04.02. 最小高度树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/minimum-height-tree-lcci/) -- [面试题 04.05. 合法二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/legal-binary-search-tree-lcci/) -- [面试题 04.06. 后继者](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/successor-lcci/) -- [面试题 04.08. 首个共同祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/first-common-ancestor-lcci/) -- [面试题 04.12. 求和路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/paths-with-sum-lcci/) -- [面试题 08.04. 幂集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/power-set-lcci/) -- [面试题 08.07. 无重复字符串的排列组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-i-lcci/) -- [面试题 08.08. 有重复字符串的排列组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-ii-lcci/) -- [面试题 08.09. 括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/bracket-lcci/) -- [面试题 08.10. 颜色填充](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/color-fill-lcci/) -- [面试题 08.12. 八皇后](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/eight-queens-lcci/) -- [面试题 10.01. 合并排序的数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-merge-lcci/) -- [面试题 10.02. 变位词组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/group-anagrams-lcci/) -- [面试题 10.09. 排序矩阵查找](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-matrix-search-lcci/) -- [面试题 16.02. 单词频率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/words-frequency-lcci/) -- [面试题 16.05. 阶乘尾数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/factorial-zeros-lcci/) -- [面试题 16.26. 计算器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/calculator-lcci/) -- [面试题 17.06. 2出现的次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci/) -- [面试题 17.14. 最小K个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/smallest-k-lcci/) -- [面试题 17.15. 最长单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/longest-word-lcci/) -- [面试题 17.17. 多次搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/multi-search-lcci/) +- [面试题 01.07. 旋转矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/rotate-matrix-lcci.md) +- [面试题 01.08. 零矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/zero-matrix-lcci.md) +- [面试题 02.02. 返回倒数第 k 个节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/kth-node-from-end-of-list-lcci.md) +- [面试题 02.05. 链表求和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sum-lists-lcci.md) +- [面试题 02.06. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/palindrome-linked-list-lcci.md) +- [面试题 02.07. 链表相交](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci.md) +- [面试题 02.08. 环路检测](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/linked-list-cycle-lcci.md) +- [面试题 03.02. 栈的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/min-stack-lcci.md) +- [面试题 03.04. 化栈为队](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/implement-queue-using-stacks-lcci.md) +- [面试题 04.02. 最小高度树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/minimum-height-tree-lcci.md) +- [面试题 04.05. 合法二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/legal-binary-search-tree-lcci.md) +- [面试题 04.06. 后继者](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/successor-lcci.md) +- [面试题 04.08. 首个共同祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/first-common-ancestor-lcci.md) +- [面试题 04.12. 求和路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/paths-with-sum-lcci.md) +- [面试题 08.04. 幂集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/power-set-lcci.md) +- [面试题 08.07. 无重复字符串的排列组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-i-lcci.md) +- [面试题 08.08. 有重复字符串的排列组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-ii-lcci.md) +- [面试题 08.09. 括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/bracket-lcci.md) +- [面试题 08.10. 颜色填充](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/color-fill-lcci.md) +- [面试题 08.12. 八皇后](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/eight-queens-lcci.md) +- [面试题 10.01. 合并排序的数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-merge-lcci.md) +- [面试题 10.02. 变位词组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/group-anagrams-lcci.md) +- [面试题 10.09. 排序矩阵查找](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-matrix-search-lcci.md) +- [面试题 16.02. 单词频率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/words-frequency-lcci.md) +- [面试题 16.05. 阶乘尾数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/factorial-zeros-lcci.md) +- [面试题 16.26. 计算器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/calculator-lcci.md) +- [面试题 17.06. 2出现的次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci.md) +- [面试题 17.14. 最小K个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/smallest-k-lcci.md) +- [面试题 17.15. 最长单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/longest-word-lcci.md) +- [面试题 17.17. 多次搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/multi-search-lcci.md) diff --git a/docs/solutions/LCR/index.md b/docs/solutions/LCR/index.md index 4191eaf3..0abc9de6 100644 --- a/docs/solutions/LCR/index.md +++ b/docs/solutions/LCR/index.md @@ -1,172 +1,172 @@ ## 本章内容 -- [LCR 001. 两数相除](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xoh6Oh/) -- [LCR 002. 二进制求和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/JFETK5/) -- [LCR 003. 比特位计数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w3tCBm/) -- [LCR 004. 只出现一次的数字 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WGki4K/) -- [LCR 005. 最大单词长度乘积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aseY1I/) -- [LCR 006. 两数之和 II - 输入有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kLl5u1/) -- [LCR 007. 三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/1fGaJU/) -- [LCR 008. 长度最小的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2VG8Kg/) -- [LCR 009. 乘积小于 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZVAVXX/) -- [LCR 010. 和为 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QTMn0o/) -- [LCR 011. 连续数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/A1NYOS/) -- [LCR 012. 寻找数组的中心下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/tvdfij/) -- [LCR 013. 二维区域和检索 - 矩阵不可变](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/O4NDxx/) -- [LCR 016. 无重复字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/wtcaE1/) -- [LCR 017. 最小覆盖子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M1oyTv/) -- [LCR 018. 验证回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XltzEq/) -- [LCR 019. 验证回文串 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/RQku0D/) -- [LCR 020. 回文子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/a7VOhD/) -- [LCR 021. 删除链表的倒数第 N 个结点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SLwz0R/) -- [LCR 022. 环形链表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/c32eOV/) -- [LCR 023. 相交链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3u1WK4/) -- [LCR 024. 反转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UHnkqh/) -- [LCR 025. 两数相加 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lMSNwu/) -- [LCR 026. 重排链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LGjMqU/) -- [LCR 027. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aMhZSa/) -- [LCR 028. 扁平化多级双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Qv1Da2/) -- [LCR 029. 循环有序列表的插入](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4ueAj6/) -- [LCR 030. O(1) 时间插入、删除和获取随机元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/FortPu/) -- [LCR 031. LRU 缓存](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/OrIXps/) -- [LCR 032. 有效的字母异位词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dKk3P7/) -- [LCR 033. 字母异位词分组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/sfvd7V/) -- [LCR 034. 验证外星语词典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lwyVBB/) -- [LCR 035. 最小时间差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/569nqc/) -- [LCR 036. 逆波兰表达式求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/8Zf90G/) -- [LCR 037. 行星碰撞](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XagZNi/) -- [LCR 038. 每日温度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iIQa4I/) -- [LCR 039. 柱状图中最大的矩形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0ynMMM/) -- [LCR 041. 数据流中的移动平均值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qIsx9U/) -- [LCR 042. 最近的请求次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/H8086Q/) -- [LCR 043. 完全二叉树插入器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NaqhDT/) -- [LCR 044. 在每个树行中找最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hPov7L/) -- [LCR 045. 找树左下角的值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LwUNpT/) -- [LCR 046. 二叉树的右视图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WNC0Lk/) -- [LCR 047. 二叉树剪枝](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/pOCWxh/) -- [LCR 048. 二叉树的序列化与反序列化](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/h54YBf/) -- [LCR 049. 求根节点到叶节点数字之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3Etpl5/) -- [LCR 050. 路径总和 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/6eUYwP/) -- [LCR 051. 二叉树中的最大路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jC7MId/) -- [LCR 052. 递增顺序搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NYBBNL/) -- [LCR 053. 二叉搜索树中的中序后继](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/P5rCT8/) -- [LCR 054. 把二叉搜索树转换为累加树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w6cpku/) -- [LCR 055. 二叉搜索树迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kTOapQ/) -- [LCR 056. 两数之和 IV - 输入二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/opLdQZ/) -- [LCR 057. 存在重复元素 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WqeDu/) -- [LCR 059. 数据流中的第 K 大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jBjn9C/) -- [LCR 060. 前 K 个高频元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/g5c51o/) -- [LCR 062. 实现 Trie (前缀树)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QC3q1f/) -- [LCR 063. 单词替换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UhWRSj/) -- [LCR 064. 实现一个魔法字典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/US1pGT/) -- [LCR 065. 单词的压缩编码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iSwD2y/) -- [LCR 066. 键值映射](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/z1R5dt/) -- [LCR 067. 数组中两个数的最大异或值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ms70jA/) -- [LCR 068. 搜索插入位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/N6YdxV/) -- [LCR 072. x 的平方根](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jJ0w9p/) -- [LCR 073. 爱吃香蕉的狒狒](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/nZZqjQ/) -- [LCR 074. 合并区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SsGoHC/) -- [LCR 075. 数组的相对排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0H97ZC/) -- [LCR 076. 数组中的第 K 个最大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xx4gT2/) -- [LCR 077. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WHec2/) -- [LCR 078. 合并 K 个升序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vvXgSW/) -- [LCR 079. 子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/TVdhkn/) -- [LCR 080. 组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/uUsW3B/) -- [LCR 081. 组合总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Ygoe9J/) -- [LCR 082. 组合总和 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4sjJUc/) -- [LCR 083. 全排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/VvJkup/) -- [LCR 084. 全排列 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7p8L0Z/) -- [LCR 085. 括号生成](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/IDBivT/) -- [LCR 086. 分割回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M99OJA/) -- [LCR 087. 复原 IP 地址](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0on3uN/) -- [LCR 088. 使用最小花费爬楼梯](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/GzCJIP/) -- [LCR 089. 打家劫舍](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Gu0c2T/) -- [LCR 090. 打家劫舍 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/PzWKhm/) -- [LCR 093. 最长的斐波那契子序列的长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Q91FMA/) -- [LCR 095. 最长公共子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qJnOS7/) -- [LCR 097. 不同的子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/21dk04/) -- [LCR 098. 不同路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2AoeFn/) -- [LCR 101. 分割等和子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NUPfPr/) -- [LCR 102. 目标和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/YaVDxD/) -- [LCR 103. 零钱兑换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gaM7Ch/) -- [LCR 104. 组合总和 Ⅳ](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/D0F0SV/) -- [LCR 105. 岛屿的最大面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZL6zAn/) -- [LCR 106. 判断二分图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vEAB3K/) -- [LCR 107. 01 矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2bCMpM/) -- [LCR 108. 单词接龙](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/om3reC/) -- [LCR 109. 打开转盘锁](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zlDJc7/) -- [LCR 111. 除法求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vlzXQL/) -- [LCR 112. 矩阵中的最长递增路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fpTFWP/) -- [LCR 113. 课程表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QA2IGt/) -- [LCR 116. 省份数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bLyHh0/) -- [LCR 118. 冗余连接](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7LpjUW/) -- [LCR 119. 最长连续序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WhsWhI/) -- [LCR 120. 寻找文件副本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/) -- [LCR 121. 寻找目标值 - 二维数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-wei-shu-zu-zhong-de-cha-zhao-lcof/) -- [LCR 122. 路径加密](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ti-huan-kong-ge-lcof/) -- [LCR 123. 图书整理 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof/) -- [LCR 124. 推理二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhong-jian-er-cha-shu-lcof/) -- [LCR 125. 图书整理 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/) -- [LCR 126. 斐波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fei-bo-na-qi-shu-lie-lcof/) -- [LCR 127. 跳跃训练](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qing-wa-tiao-tai-jie-wen-ti-lcof/) -- [LCR 128. 库存管理 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/) -- [LCR 129. 字母迷宫](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ju-zhen-zhong-de-lu-jing-lcof/) -- [LCR 130. 衣橱整理](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof/) -- [LCR 131. 砍竹子 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jian-sheng-zi-lcof/) -- [LCR 133. 位 1 的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-jin-zhi-zhong-1de-ge-shu-lcof/) -- [LCR 134. Pow(x, n)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zhi-de-zheng-shu-ci-fang-lcof/) -- [LCR 135. 报数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof/) -- [LCR 136. 删除链表的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shan-chu-lian-biao-de-jie-dian-lcof/) -- [LCR 139. 训练计划 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/) -- [LCR 140. 训练计划 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/) -- [LCR 141. 训练计划 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-lian-biao-lcof/) -- [LCR 142. 训练计划 IV](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/) -- [LCR 143. 子结构判断](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-de-zi-jie-gou-lcof/) -- [LCR 144. 翻转二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-jing-xiang-lcof/) -- [LCR 145. 判断对称二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-cheng-de-er-cha-shu-lcof/) -- [LCR 146. 螺旋遍历二维数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shun-shi-zhen-da-yin-ju-zhen-lcof/) -- [LCR 147. 最小栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bao-han-minhan-shu-de-zhan-lcof/) -- [LCR 148. 验证图书取出顺序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhan-de-ya-ru-dan-chu-xu-lie-lcof/) -- [LCR 149. 彩灯装饰记录 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/) -- [LCR 150. 彩灯装饰记录 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/) -- [LCR 151. 彩灯装饰记录 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/) -- [LCR 152. 验证二叉搜索树的后序遍历序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) -- [LCR 153. 二叉树中和为目标值的路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/) -- [LCR 154. 复杂链表的复制](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fu-za-lian-biao-de-fu-zhi-lcof/) -- [LCR 155. 将二叉搜索树转化为排序的双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof/) -- [LCR 156. 序列化与反序列化二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xu-lie-hua-er-cha-shu-lcof/) -- [LCR 157. 套餐内商品的排列顺序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zi-fu-chuan-de-pai-lie-lcof/) -- [LCR 158. 库存管理 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof/) -- [LCR 159. 库存管理 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof/) -- [LCR 160. 数据流中的中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/) -- [LCR 161. 连续天数的最高销售额](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-xu-zi-shu-zu-de-zui-da-he-lcof/) -- [LCR 163. 找到第 k 位数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/) -- [LCR 164. 破解闯关密码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/) -- [LCR 165. 解密数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof/) -- [LCR 166. 珠宝的最高价值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/li-wu-de-zui-da-jie-zhi-lcof/) -- [LCR 167. 招式拆解 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/) -- [LCR 168. 丑数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/chou-shu-lcof/) -- [LCR 169. 招式拆解 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/) -- [LCR 170. 交易逆序对的总数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof/) -- [LCR 171. 训练计划 V](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/) -- [LCR 172. 统计目标成绩的出现次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/) -- [LCR 173. 点名](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/que-shi-de-shu-zi-lcof/) -- [LCR 174. 寻找二叉搜索树中的目标节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/) -- [LCR 175. 计算二叉树的深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-shen-du-lcof/) -- [LCR 176. 判断是否为平衡二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ping-heng-er-cha-shu-lcof/) -- [LCR 177. 撞色搭配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/) -- [LCR 179. 查找总价格为目标值的两个商品](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-liang-ge-shu-zi-lcof/) -- [LCR 180. 文件组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/) -- [LCR 181. 字符串中的单词反转](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-dan-ci-shun-xu-lcof/) -- [LCR 182. 动态口令](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zuo-xuan-zhuan-zi-fu-chuan-lcof/) -- [LCR 183. 望远镜中最高的海拔](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hua-dong-chuang-kou-de-zui-da-zhi-lcof/) -- [LCR 184. 设计自助结算系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-lie-de-zui-da-zhi-lcof/) -- [LCR 186. 文物朝代判断](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof/) -- [LCR 187. 破冰游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof/) -- [LCR 188. 买卖芯片的最佳时机](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gu-piao-de-zui-da-li-run-lcof/) -- [LCR 189. 设计机械累加器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qiu-12n-lcof/) -- [LCR 190. 加密运算](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof/) -- [LCR 191. 按规则计算统计结果](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gou-jian-cheng-ji-shu-zu-lcof/) -- [LCR 192. 把字符串转换成整数 (atoi)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/) -- [LCR 193. 二叉搜索树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/) -- [LCR 194. 二叉树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) +- [LCR 001. 两数相除](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xoh6Oh.md) +- [LCR 002. 二进制求和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/JFETK5.md) +- [LCR 003. 比特位计数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w3tCBm.md) +- [LCR 004. 只出现一次的数字 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WGki4K.md) +- [LCR 005. 最大单词长度乘积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aseY1I.md) +- [LCR 006. 两数之和 II - 输入有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kLl5u1.md) +- [LCR 007. 三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/1fGaJU.md) +- [LCR 008. 长度最小的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2VG8Kg.md) +- [LCR 009. 乘积小于 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZVAVXX.md) +- [LCR 010. 和为 K 的子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QTMn0o.md) +- [LCR 011. 连续数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/A1NYOS.md) +- [LCR 012. 寻找数组的中心下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/tvdfij.md) +- [LCR 013. 二维区域和检索 - 矩阵不可变](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/O4NDxx.md) +- [LCR 016. 无重复字符的最长子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/wtcaE1.md) +- [LCR 017. 最小覆盖子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M1oyTv.md) +- [LCR 018. 验证回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XltzEq.md) +- [LCR 019. 验证回文串 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/RQku0D.md) +- [LCR 020. 回文子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/a7VOhD.md) +- [LCR 021. 删除链表的倒数第 N 个结点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SLwz0R.md) +- [LCR 022. 环形链表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/c32eOV.md) +- [LCR 023. 相交链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3u1WK4.md) +- [LCR 024. 反转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UHnkqh.md) +- [LCR 025. 两数相加 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lMSNwu.md) +- [LCR 026. 重排链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LGjMqU.md) +- [LCR 027. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/aMhZSa.md) +- [LCR 028. 扁平化多级双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Qv1Da2.md) +- [LCR 029. 循环有序列表的插入](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4ueAj6.md) +- [LCR 030. O(1) 时间插入、删除和获取随机元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/FortPu.md) +- [LCR 031. LRU 缓存](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/OrIXps.md) +- [LCR 032. 有效的字母异位词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dKk3P7.md) +- [LCR 033. 字母异位词分组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/sfvd7V.md) +- [LCR 034. 验证外星语词典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lwyVBB.md) +- [LCR 035. 最小时间差](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/569nqc.md) +- [LCR 036. 逆波兰表达式求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/8Zf90G.md) +- [LCR 037. 行星碰撞](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/XagZNi.md) +- [LCR 038. 每日温度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iIQa4I.md) +- [LCR 039. 柱状图中最大的矩形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0ynMMM.md) +- [LCR 041. 数据流中的移动平均值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qIsx9U.md) +- [LCR 042. 最近的请求次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/H8086Q.md) +- [LCR 043. 完全二叉树插入器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NaqhDT.md) +- [LCR 044. 在每个树行中找最大值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hPov7L.md) +- [LCR 045. 找树左下角的值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/LwUNpT.md) +- [LCR 046. 二叉树的右视图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WNC0Lk.md) +- [LCR 047. 二叉树剪枝](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/pOCWxh.md) +- [LCR 048. 二叉树的序列化与反序列化](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/h54YBf.md) +- [LCR 049. 求根节点到叶节点数字之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/3Etpl5.md) +- [LCR 050. 路径总和 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/6eUYwP.md) +- [LCR 051. 二叉树中的最大路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jC7MId.md) +- [LCR 052. 递增顺序搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NYBBNL.md) +- [LCR 053. 二叉搜索树中的中序后继](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/P5rCT8.md) +- [LCR 054. 把二叉搜索树转换为累加树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/w6cpku.md) +- [LCR 055. 二叉搜索树迭代器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/kTOapQ.md) +- [LCR 056. 两数之和 IV - 输入二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/opLdQZ.md) +- [LCR 057. 存在重复元素 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WqeDu.md) +- [LCR 059. 数据流中的第 K 大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jBjn9C.md) +- [LCR 060. 前 K 个高频元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/g5c51o.md) +- [LCR 062. 实现 Trie (前缀树)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QC3q1f.md) +- [LCR 063. 单词替换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/UhWRSj.md) +- [LCR 064. 实现一个魔法字典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/US1pGT.md) +- [LCR 065. 单词的压缩编码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/iSwD2y.md) +- [LCR 066. 键值映射](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/z1R5dt.md) +- [LCR 067. 数组中两个数的最大异或值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ms70jA.md) +- [LCR 068. 搜索插入位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/N6YdxV.md) +- [LCR 072. x 的平方根](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jJ0w9p.md) +- [LCR 073. 爱吃香蕉的狒狒](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/nZZqjQ.md) +- [LCR 074. 合并区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/SsGoHC.md) +- [LCR 075. 数组的相对排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0H97ZC.md) +- [LCR 076. 数组中的第 K 个最大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xx4gT2.md) +- [LCR 077. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7WHec2.md) +- [LCR 078. 合并 K 个升序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vvXgSW.md) +- [LCR 079. 子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/TVdhkn.md) +- [LCR 080. 组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/uUsW3B.md) +- [LCR 081. 组合总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Ygoe9J.md) +- [LCR 082. 组合总和 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/4sjJUc.md) +- [LCR 083. 全排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/VvJkup.md) +- [LCR 084. 全排列 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7p8L0Z.md) +- [LCR 085. 括号生成](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/IDBivT.md) +- [LCR 086. 分割回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/M99OJA.md) +- [LCR 087. 复原 IP 地址](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/0on3uN.md) +- [LCR 088. 使用最小花费爬楼梯](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/GzCJIP.md) +- [LCR 089. 打家劫舍](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Gu0c2T.md) +- [LCR 090. 打家劫舍 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/PzWKhm.md) +- [LCR 093. 最长的斐波那契子序列的长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/Q91FMA.md) +- [LCR 095. 最长公共子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qJnOS7.md) +- [LCR 097. 不同的子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/21dk04.md) +- [LCR 098. 不同路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2AoeFn.md) +- [LCR 101. 分割等和子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/NUPfPr.md) +- [LCR 102. 目标和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/YaVDxD.md) +- [LCR 103. 零钱兑换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gaM7Ch.md) +- [LCR 104. 组合总和 Ⅳ](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/D0F0SV.md) +- [LCR 105. 岛屿的最大面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ZL6zAn.md) +- [LCR 106. 判断二分图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vEAB3K.md) +- [LCR 107. 01 矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/2bCMpM.md) +- [LCR 108. 单词接龙](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/om3reC.md) +- [LCR 109. 打开转盘锁](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zlDJc7.md) +- [LCR 111. 除法求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/vlzXQL.md) +- [LCR 112. 矩阵中的最长递增路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fpTFWP.md) +- [LCR 113. 课程表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/QA2IGt.md) +- [LCR 116. 省份数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bLyHh0.md) +- [LCR 118. 冗余连接](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/7LpjUW.md) +- [LCR 119. 最长连续序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/WhsWhI.md) +- [LCR 120. 寻找文件副本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-zhong-fu-de-shu-zi-lcof.md) +- [LCR 121. 寻找目标值 - 二维数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-wei-shu-zu-zhong-de-cha-zhao-lcof.md) +- [LCR 122. 路径加密](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ti-huan-kong-ge-lcof.md) +- [LCR 123. 图书整理 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-wei-dao-tou-da-yin-lian-biao-lcof.md) +- [LCR 124. 推理二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhong-jian-er-cha-shu-lcof.md) +- [LCR 125. 图书整理 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yong-liang-ge-zhan-shi-xian-dui-lie-lcof.md) +- [LCR 126. 斐波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fei-bo-na-qi-shu-lie-lcof.md) +- [LCR 127. 跳跃训练](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qing-wa-tiao-tai-jie-wen-ti-lcof.md) +- [LCR 128. 库存管理 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof.md) +- [LCR 129. 字母迷宫](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ju-zhen-zhong-de-lu-jing-lcof.md) +- [LCR 130. 衣橱整理](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof.md) +- [LCR 131. 砍竹子 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/jian-sheng-zi-lcof.md) +- [LCR 133. 位 1 的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-jin-zhi-zhong-1de-ge-shu-lcof.md) +- [LCR 134. Pow(x, n)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zhi-de-zheng-shu-ci-fang-lcof.md) +- [LCR 135. 报数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/da-yin-cong-1dao-zui-da-de-nwei-shu-lcof.md) +- [LCR 136. 删除链表的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shan-chu-lian-biao-de-jie-dian-lcof.md) +- [LCR 139. 训练计划 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof.md) +- [LCR 140. 训练计划 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof.md) +- [LCR 141. 训练计划 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-lian-biao-lcof.md) +- [LCR 142. 训练计划 IV](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-bing-liang-ge-pai-xu-de-lian-biao-lcof.md) +- [LCR 143. 子结构判断](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-de-zi-jie-gou-lcof.md) +- [LCR 144. 翻转二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-jing-xiang-lcof.md) +- [LCR 145. 判断对称二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-cheng-de-er-cha-shu-lcof.md) +- [LCR 146. 螺旋遍历二维数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shun-shi-zhen-da-yin-ju-zhen-lcof.md) +- [LCR 147. 最小栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bao-han-minhan-shu-de-zhan-lcof.md) +- [LCR 148. 验证图书取出顺序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zhan-de-ya-ru-dan-chu-xu-lie-lcof.md) +- [LCR 149. 彩灯装饰记录 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-lcof.md) +- [LCR 150. 彩灯装饰记录 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof.md) +- [LCR 151. 彩灯装饰记录 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof.md) +- [LCR 152. 验证二叉搜索树的后序遍历序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof.md) +- [LCR 153. 二叉树中和为目标值的路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof.md) +- [LCR 154. 复杂链表的复制](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fu-za-lian-biao-de-fu-zhi-lcof.md) +- [LCR 155. 将二叉搜索树转化为排序的双向链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-yu-shuang-xiang-lian-biao-lcof.md) +- [LCR 156. 序列化与反序列化二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/xu-lie-hua-er-cha-shu-lcof.md) +- [LCR 157. 套餐内商品的排列顺序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zi-fu-chuan-de-pai-lie-lcof.md) +- [LCR 158. 库存管理 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof.md) +- [LCR 159. 库存管理 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof.md) +- [LCR 160. 数据流中的中位数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-ju-liu-zhong-de-zhong-wei-shu-lcof.md) +- [LCR 161. 连续天数的最高销售额](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/lian-xu-zi-shu-zu-de-zui-da-he-lcof.md) +- [LCR 163. 找到第 k 位数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof.md) +- [LCR 164. 破解闯关密码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof.md) +- [LCR 165. 解密数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof.md) +- [LCR 166. 珠宝的最高价值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/li-wu-de-zui-da-jie-zhi-lcof.md) +- [LCR 167. 招式拆解 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof.md) +- [LCR 168. 丑数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/chou-shu-lcof.md) +- [LCR 169. 招式拆解 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof.md) +- [LCR 170. 交易逆序对的总数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md) +- [LCR 171. 训练计划 V](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof.md) +- [LCR 172. 统计目标成绩的出现次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof.md) +- [LCR 173. 点名](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/que-shi-de-shu-zi-lcof.md) +- [LCR 174. 寻找二叉搜索树中的目标节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof.md) +- [LCR 175. 计算二叉树的深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-shen-du-lcof.md) +- [LCR 176. 判断是否为平衡二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ping-heng-er-cha-shu-lcof.md) +- [LCR 177. 撞色搭配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof.md) +- [LCR 179. 查找总价格为目标值的两个商品](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-liang-ge-shu-zi-lcof.md) +- [LCR 180. 文件组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof.md) +- [LCR 181. 字符串中的单词反转](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/fan-zhuan-dan-ci-shun-xu-lcof.md) +- [LCR 182. 动态口令](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zuo-xuan-zhuan-zi-fu-chuan-lcof.md) +- [LCR 183. 望远镜中最高的海拔](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/hua-dong-chuang-kou-de-zui-da-zhi-lcof.md) +- [LCR 184. 设计自助结算系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/dui-lie-de-zui-da-zhi-lcof.md) +- [LCR 186. 文物朝代判断](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-ke-pai-zhong-de-shun-zi-lcof.md) +- [LCR 187. 破冰游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof.md) +- [LCR 188. 买卖芯片的最佳时机](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gu-piao-de-zui-da-li-run-lcof.md) +- [LCR 189. 设计机械累加器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/qiu-12n-lcof.md) +- [LCR 190. 加密运算](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/bu-yong-jia-jian-cheng-chu-zuo-jia-fa-lcof.md) +- [LCR 191. 按规则计算统计结果](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/gou-jian-cheng-ji-shu-zu-lcof.md) +- [LCR 192. 把字符串转换成整数 (atoi)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof.md) +- [LCR 193. 二叉搜索树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof.md) +- [LCR 194. 二叉树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof.md) From 5ce698d0f8d2ccdc1dd84c9306e1bc326f522b70 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 17 Jun 2025 22:05:07 +0800 Subject: [PATCH 145/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/00_preface/00_04_leetcode_guide.md | 5 ++ docs/00_preface/index.md | 2 +- docs/01_array/01_01_array_basic.md | 11 +++ docs/01_array/01_03_array_bubble_sort.md | 7 ++ docs/01_array/01_04_array_selection_sort.md | 6 +- docs/01_array/01_05_array_insertion_sort.md | 6 +- docs/01_array/01_06_array_shell_sort.md | 6 +- docs/01_array/01_07_array_merge_sort.md | 6 +- docs/01_array/01_08_array_quick_sort.md | 4 ++ docs/01_array/01_09_array_heap_sort.md | 6 +- docs/01_array/01_10_array_counting_sort.md | 6 +- docs/01_array/01_11_array_bucket_sort.md | 6 +- docs/01_array/01_12_array_radix_sort.md | 6 +- docs/01_array/01_13_array_binary_search_01.md | 6 +- docs/01_array/01_14_array_binary_search_02.md | 4 ++ docs/01_array/01_15_array_two_pointers.md | 4 ++ docs/01_array/01_16_array_sliding_window.md | 4 ++ .../02_linked_list/02_01_linked_list_basic.md | 4 ++ .../02_03_linked_list_bubble_sort.md | 10 +-- .../02_04_linked_list_selection_sort.md | 68 ++++++++++--------- .../02_05_linked_list_insertion_sort.md | 28 ++++---- .../02_06_linked_list_merge_sort.md | 32 +++++---- .../02_07_linked_list_quick_sort.md | 18 +++-- .../02_08_linked_list_counting_sort.md | 25 ++++--- .../02_09_linked_list_bucket_sort.md | 8 ++- .../02_10_linked_list_radix_sort.md | 26 ++++--- .../02_11_linked_list_two_pointers.md | 3 + .../03_01_stack_basic.md | 4 ++ .../03_02_monotone_stack.md | 4 ++ .../03_03_queue_basic.md | 4 ++ .../03_04_priority_queue.md | 4 ++ .../03_06_hash_table.md | 4 ++ docs/04_string/04_01_string_basic.md | 4 ++ docs/04_string/04_03_string_brute_force.md | 4 ++ docs/04_string/04_04_string_rabin_karp.md | 4 ++ docs/04_string/04_05_string_kmp.md | 4 ++ docs/04_string/04_06_string_boyer_moore.md | 4 ++ docs/04_string/04_07_string_horspool.md | 4 ++ docs/04_string/04_08_string_sunday.md | 4 ++ .../04_09_string_multi_pattern_matching.md | 1 + docs/04_string/04_10_trie.md | 4 ++ docs/05_tree/05_02_binary_tree_traverse.md | 4 ++ docs/05_tree/05_03_binary_tree_reduction.md | 4 ++ docs/05_tree/05_04_binary_search_tree.md | 4 ++ docs/05_tree/05_05_segment_tree_01.md | 4 ++ docs/05_tree/05_06_segment_tree_02.md | 4 ++ docs/05_tree/05_07_binary_indexed_tree.md | 4 ++ docs/05_tree/05_08_union_find.md | 4 ++ docs/06_graph/06_03_graph_dfs.md | 4 ++ docs/06_graph/06_04_graph_bfs.md | 4 ++ .../06_05_graph_topological_sorting.md | 4 ++ .../06_06_graph_minimum_spanning_tree.md | 6 +- docs/06_graph/06_07_graph_shortest_path_01.md | 4 ++ docs/06_graph/06_08_graph_shortest_path_02.md | 4 ++ .../06_09_graph_multi_source_shortest_path.md | 4 ++ .../06_10_graph_the_second_shortest_path.md | 6 +- ..._graph_system_of_difference_constraints.md | 6 +- docs/06_graph/06_12_graph_bipartite_basic.md | 6 +- .../06_13_graph_bipartite_matching.md | 4 ++ .../07_01_enumeration_algorithm.md | 6 +- .../07_algorithm/07_02_recursive_algorithm.md | 4 ++ .../07_03_divide_and_conquer_algorithm.md | 4 ++ .../07_04_backtracking_algorithm.md | 4 ++ docs/07_algorithm/07_05_greedy_algorithm.md | 4 ++ docs/07_algorithm/07_06_bit_operation.md | 4 ++ .../08_01_dynamic_programming_basic.md | 4 ++ .../08_02_memoization_search.md | 4 ++ .../08_03_linear_dp_01.md | 5 ++ .../08_04_linear_dp_02.md | 5 ++ .../08_05_knapsack_problem_01.md | 5 ++ .../08_06_knapsack_problem_02.md | 4 ++ .../08_07_knapsack_problem_03.md | 4 ++ .../08_08_knapsack_problem_04.md | 5 ++ .../08_09_knapsack_problem_05.md | 1 + .../08_10_interval_dp.md | 6 +- docs/08_dynamic_programming/08_11_tree_dp.md | 4 ++ .../08_12_state_compression_dp.md | 4 ++ .../08_13_counting_dp.md | 4 ++ docs/08_dynamic_programming/08_14_digit_dp.md | 4 ++ .../08_15_probability_dp.md | 4 +- 80 files changed, 427 insertions(+), 112 deletions(-) diff --git a/docs/00_preface/00_04_leetcode_guide.md b/docs/00_preface/00_04_leetcode_guide.md index f33cb1d5..eff9a0ce 100644 --- a/docs/00_preface/00_04_leetcode_guide.md +++ b/docs/00_preface/00_04_leetcode_guide.md @@ -280,6 +280,11 @@ LeetCode 是一个在线编程练习平台,主要用于提升算法和编程 刷题需要坚持和重复练习。按专题分类刷题效果更好,可以巩固知识点。写解题报告有助于加深理解。 +## 练习题目 + +- [2235. 两整数相加](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/2200-2299/add-two-integers.md) +- [1929. 数组串联](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/1900-1999/concatenation-of-array.md) + ## 参考资料 - 【文章】[What is LeetCode? - Quora](https://www.quora.com/What-is-Leetcode) diff --git a/docs/00_preface/index.md b/docs/00_preface/index.md index ff1033fc..0e04c4df 100644 --- a/docs/00_preface/index.md +++ b/docs/00_preface/index.md @@ -1,6 +1,6 @@ # 本章内容 -- [0.1 关于本书](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_01_about_the_book.md) +- [0.1 前言](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_01_preface.md) - [0.2 算法与数据结构](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_02_data_structures_algorithms.md) - [0.3 算法复杂度](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_03_algorithm_complexity.md) - [0.4 LeetCode 入门与攻略](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_04_leetcode_guide.md) diff --git a/docs/01_array/01_01_array_basic.md b/docs/01_array/01_01_array_basic.md index 40fbdbb9..a667c45a 100644 --- a/docs/01_array/01_01_array_basic.md +++ b/docs/01_array/01_01_array_basic.md @@ -234,6 +234,17 @@ print(arr) 不同编程语言中数组的实现可能不同。C/C++ 的数组严格使用连续内存,Java 和 Python 的数组灵活性更高。 +## 4. 练习题目 + +- [0066. 加一](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/plus-one.md) +- [0724. 寻找数组的中心下标](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0700-0799/find-pivot-index.md) +- [0189. 轮转数组](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0100-0199/rotate-array.md) +- [0048. 旋转图像](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/rotate-image.md) +- [0054. 螺旋矩阵](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/spiral-matrix.md) +- [0498. 对角线遍历](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0400-0499/diagonal-traverse.md) + +- [数组基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%95%B0%E7%BB%84%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【文章】[数据结构中的数组和不同语言中数组的区别 - CSDN 博客](https://blog.csdn.net/sinat_14913533/article/details/102763573) diff --git a/docs/01_array/01_03_array_bubble_sort.md b/docs/01_array/01_03_array_bubble_sort.md index 0c626ab7..f4c261ad 100644 --- a/docs/01_array/01_03_array_bubble_sort.md +++ b/docs/01_array/01_03_array_bubble_sort.md @@ -107,6 +107,13 @@ class Solution: 冒泡排序容易实现,但效率较低。在实际应用中,通常选择更高效的排序算法处理大规模数据。 +## 练习题目 + +- [0283. 移动零](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0200-0299/move-zeroes.md)(冒泡排序会超时,仅作练习) +- [0912. 排序数组](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0900-0999/sort-an-array.md)(冒泡排序会超时,仅作练习) + +- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【文章】[11.3. 冒泡排序 - Hello 算法](https://www.hello-algo.com/chapter_sorting/bubble_sort/) \ No newline at end of file diff --git a/docs/01_array/01_04_array_selection_sort.md b/docs/01_array/01_04_array_selection_sort.md index 32b9e70b..a2d3147a 100644 --- a/docs/01_array/01_04_array_selection_sort.md +++ b/docs/01_array/01_04_array_selection_sort.md @@ -90,4 +90,8 @@ class Solution: 选择排序的时间复杂度是 $O(n^2)$,因为它需要进行 $ \frac{n(n−1)}{2}$ 次比较。空间复杂度是 $O(1)$,因为它只需要常数级的额外空间。选择排序是不稳定的排序算法,因为在交换过程中可能改变相等元素的相对顺序。 -选择排序适合小规模数据的排序。它的优点是实现简单,不需要额外空间。缺点是效率较低,不适合大规模数据。 \ No newline at end of file +选择排序适合小规模数据的排序。它的优点是实现简单,不需要额外空间。缺点是效率较低,不适合大规模数据。 + +## 练习题目 + +- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_05_array_insertion_sort.md b/docs/01_array/01_05_array_insertion_sort.md index a87b3457..a07c943d 100644 --- a/docs/01_array/01_05_array_insertion_sort.md +++ b/docs/01_array/01_05_array_insertion_sort.md @@ -65,4 +65,8 @@ class Solution: 插入排序的时间复杂度取决于数据的初始顺序。最好的情况是数组已经有序,时间复杂度为 $O(n)$。最坏的情况是数组完全逆序,时间复杂度为 $O(n^2)$。平均时间复杂度也是 $O(n^2)$。空间复杂度是 $O(1)$,因为排序是在原地进行的。 -插入排序是稳定的排序算法,因为它不会改变相等元素的相对顺序。这个算法适合小规模数据或基本有序的数据排序。对于大规模数据,插入排序的效率不如快速排序等更高级的算法。 \ No newline at end of file +插入排序是稳定的排序算法,因为它不会改变相等元素的相对顺序。这个算法适合小规模数据或基本有序的数据排序。对于大规模数据,插入排序的效率不如快速排序等更高级的算法。 + +## 练习题目 + +- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_06_array_shell_sort.md b/docs/01_array/01_06_array_shell_sort.md index e56db6e5..e06f5b2d 100644 --- a/docs/01_array/01_06_array_shell_sort.md +++ b/docs/01_array/01_06_array_shell_sort.md @@ -94,4 +94,8 @@ class Solution: 希尔排序的时间复杂度取决于间隔序列的选择。使用常见的间隔序列时,时间复杂度在 $O(n \log n)$ 到 $O(n^2)$ 之间。空间复杂度是 $O(1)$,因为排序是在原地进行的。 -希尔排序是不稳定的排序算法,因为在不同的子数组排序过程中,相等元素的相对顺序可能改变。希尔排序适合中等规模的数据排序,比简单插入排序更快,但比快速排序等高级算法稍慢。 \ No newline at end of file +希尔排序是不稳定的排序算法,因为在不同的子数组排序过程中,相等元素的相对顺序可能改变。希尔排序适合中等规模的数据排序,比简单插入排序更快,但比快速排序等高级算法稍慢。 + +## 练习题目 + +- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_07_array_merge_sort.md b/docs/01_array/01_07_array_merge_sort.md index 82138688..8d6d87f6 100644 --- a/docs/01_array/01_07_array_merge_sort.md +++ b/docs/01_array/01_07_array_merge_sort.md @@ -81,4 +81,8 @@ class Solution: 归并排序的时间复杂度是 $O(n \log n)$,这是因为它需要 $\log n$ 次分解,每次合并需要 $O(n)$ 时间。空间复杂度是 $O(n)$,因为合并过程需要额外的存储空间。 -归并排序是稳定的排序算法,在合并过程中相等元素的相对顺序不会改变。它适合处理大规模数据,但需要额外的存储空间是其缺点。归并排序常用于外部排序场景。 \ No newline at end of file +归并排序是稳定的排序算法,在合并过程中相等元素的相对顺序不会改变。它适合处理大规模数据,但需要额外的存储空间是其缺点。归并排序常用于外部排序场景。 + +## 练习题目 + +- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_08_array_quick_sort.md b/docs/01_array/01_08_array_quick_sort.md index ecbc4586..84448d67 100644 --- a/docs/01_array/01_08_array_quick_sort.md +++ b/docs/01_array/01_08_array_quick_sort.md @@ -144,6 +144,10 @@ class Solution: 快速排序在实际应用中很常见,是许多编程语言内置排序函数的实现基础。它的效率通常比其他 $O(n \log n)$ 算法更高,因为它的常数因子较小。 +## 练习题目 + +- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【文章】[快速排序 - OI Wiki](https://oi-wiki.org/basic/quick-sort/) diff --git a/docs/01_array/01_09_array_heap_sort.md b/docs/01_array/01_09_array_heap_sort.md index 1b503353..44be8995 100644 --- a/docs/01_array/01_09_array_heap_sort.md +++ b/docs/01_array/01_09_array_heap_sort.md @@ -376,4 +376,8 @@ print(Solution().sortArray([10, 25, 6, 8, 7, 1, 20, 23, 16, 19, 17, 3, 18, 14])) 堆排序的时间复杂度为 $O(n \log n)$。构建初始堆需要 $O(n)$ 时间,每次调整堆需要 $O(\log n)$ 时间,共进行 $n$ 次调整。空间复杂度为 $O(1)$,因为排序是原地进行的。 -堆排序是不稳定的排序算法,因为在调整堆的过程中可能改变相等元素的相对顺序。它的优势在于不需要额外空间,适合处理大规模数据。但相比快速排序,堆排序的常数因子较大,实际应用中可能稍慢。 \ No newline at end of file +堆排序是不稳定的排序算法,因为在调整堆的过程中可能改变相等元素的相对顺序。它的优势在于不需要额外空间,适合处理大规模数据。但相比快速排序,堆排序的常数因子较大,实际应用中可能稍慢。 + +## 练习题目 + +- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_10_array_counting_sort.md b/docs/01_array/01_10_array_counting_sort.md index bed4c181..c4ee168d 100644 --- a/docs/01_array/01_10_array_counting_sort.md +++ b/docs/01_array/01_10_array_counting_sort.md @@ -68,4 +68,8 @@ class Solution: 计数排序的时间复杂度是 $O(n + k)$,其中 $n$ 是元素个数,$k$ 是数值范围。空间复杂度是 $O(k)$。当 $k$ 值较小时效率很高,但当数值范围很大时会消耗较多内存。 -计数排序适合整数排序,不适合字符串等复杂数据。它是稳定的排序算法,能保持相等元素的原始顺序。在实际应用中,计数排序常用于数据范围不大的整数排序场景。 \ No newline at end of file +计数排序适合整数排序,不适合字符串等复杂数据。它是稳定的排序算法,能保持相等元素的原始顺序。在实际应用中,计数排序常用于数据范围不大的整数排序场景。 + +## 练习题目 + +- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_11_array_bucket_sort.md b/docs/01_array/01_11_array_bucket_sort.md index 6b6fbfe3..a24fc22a 100644 --- a/docs/01_array/01_11_array_bucket_sort.md +++ b/docs/01_array/01_11_array_bucket_sort.md @@ -71,4 +71,8 @@ class Solution: 桶排序的时间复杂度接近 $O(n)$,在数据分布均匀时效率很高。空间复杂度是 $O(n + m)$,需要额外存储桶。排序的稳定性取决于桶内使用的排序算法。 -桶排序适合数据分布均匀的情况,当数据集中在少数桶时会降低效率。实际应用中常用于外部排序和处理大数据量的场景。合理设置桶的数量和范围对性能很重要。 \ No newline at end of file +桶排序适合数据分布均匀的情况,当数据集中在少数桶时会降低效率。实际应用中常用于外部排序和处理大数据量的场景。合理设置桶的数量和范围对性能很重要。 + +## 练习题目 + +- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_12_array_radix_sort.md b/docs/01_array/01_12_array_radix_sort.md index a32a95e2..280a15bd 100644 --- a/docs/01_array/01_12_array_radix_sort.md +++ b/docs/01_array/01_12_array_radix_sort.md @@ -62,4 +62,8 @@ class Solution: 基数排序的时间复杂度是 $O(n \times k)$,$n$ 是元素数量,$k$ 是最大位数。空间复杂度是 $O(n + k)$。它是稳定的排序算法,能保持相同数字的相对顺序。 -基数排序适合处理位数不多的整数排序。当数字范围很大但位数较少时效率较高。实际应用中常用于电话号码、身份证号等固定位数数据的排序。 \ No newline at end of file +基数排序适合处理位数不多的整数排序。当数字范围很大但位数较少时效率较高。实际应用中常用于电话号码、身份证号等固定位数数据的排序。 + +## 练习题目 + +- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_13_array_binary_search_01.md b/docs/01_array/01_13_array_binary_search_01.md index 71e3e878..80ffa955 100644 --- a/docs/01_array/01_13_array_binary_search_01.md +++ b/docs/01_array/01_13_array_binary_search_01.md @@ -154,4 +154,8 @@ class Solution: 二分查找的时间复杂度是 $O(\log n)$,比顺序查找的 $O(n)$ 更快。它的空间复杂度是 $O(1)$,因为它不需要额外的存储空间。 -二分查找的思想是减而治之,通过排除不可能的区域来缩小搜索范围。这种方法在有序数据集中非常有效,可以显著提高搜索效率。 \ No newline at end of file +二分查找的思想是减而治之,通过排除不可能的区域来缩小搜索范围。这种方法在有序数据集中非常有效,可以显著提高搜索效率。 + +## 练习题目 + +- [二分查找题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_14_array_binary_search_02.md b/docs/01_array/01_14_array_binary_search_02.md index 22407dc3..c8e88121 100644 --- a/docs/01_array/01_14_array_binary_search_02.md +++ b/docs/01_array/01_14_array_binary_search_02.md @@ -256,6 +256,10 @@ class Solution: 掌握这些细节能更灵活地应用二分查找,避免常见错误。 +## 练习题目 + +- [二分查找题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【博文】[Learning-Algorithms-with-Leetcode - 第 3.1 节 二分查找算法](https://www.yuque.com/liweiwei1419/algo/wkmtx4) diff --git a/docs/01_array/01_15_array_two_pointers.md b/docs/01_array/01_15_array_two_pointers.md index 7bdc22ae..fae0e4b2 100644 --- a/docs/01_array/01_15_array_two_pointers.md +++ b/docs/01_array/01_15_array_two_pointers.md @@ -493,6 +493,10 @@ class Solution: 双指针算法能有效降低时间复杂度,通常将暴力解法的 $O(n^2)$ 优化为 $O(n)$。关键在于利用数据的有序性或问题的单调性,通过指针移动排除不可能的情况,减少不必要的计算。掌握双指针技巧能高效解决许多数组和链表问题。 +## 练习题目 + +- [双指针题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8F%8C%E6%8C%87%E9%92%88%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【博文】[双指针算法之快慢指针 (yanyusoul.com)](https://yanyusoul.com/blog/cs/algorithms_fast-slow-points/) diff --git a/docs/01_array/01_16_array_sliding_window.md b/docs/01_array/01_16_array_sliding_window.md index fc42368c..aed66205 100644 --- a/docs/01_array/01_16_array_sliding_window.md +++ b/docs/01_array/01_16_array_sliding_window.md @@ -275,6 +275,10 @@ class Solution: 掌握滑动窗口算法能高效解决许多子区间相关问题。 +## 练习题目 + +- [滑动窗口题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【答案】[TCP 协议的滑动窗口具体是怎样控制流量的? - 知乎](https://www.zhihu.com/question/32255109/answer/68558623) diff --git a/docs/02_linked_list/02_01_linked_list_basic.md b/docs/02_linked_list/02_01_linked_list_basic.md index 9ac1ab5e..8b2d1d77 100644 --- a/docs/02_linked_list/02_01_linked_list_basic.md +++ b/docs/02_linked_list/02_01_linked_list_basic.md @@ -359,6 +359,10 @@ def removeInside(self, index): - 链表进行尾部插入、尾部删除操作的时间复杂度是 $O(n)$。 - 链表在普通情况下进行插入、删除元素操作的时间复杂度为 $O(n)$。 +## 练习题目 + +- [链表经典题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E7%BB%8F%E5%85%B8%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【文章】[链表理论基础 - 代码随想录](https://programmercarl.com/链表理论基础.html#链表理论基础) diff --git a/docs/02_linked_list/02_03_linked_list_bubble_sort.md b/docs/02_linked_list/02_03_linked_list_bubble_sort.md index 451e495b..8d8aa916 100644 --- a/docs/02_linked_list/02_03_linked_list_bubble_sort.md +++ b/docs/02_linked_list/02_03_linked_list_bubble_sort.md @@ -1,13 +1,9 @@ ## 1. 链表冒泡排序算法描述 1. 使用三个指针 `node_i`、`node_j` 和 `tail`。其中 `node_i` 用于控制外循环次数,循环次数为链节点个数(链表长度)。`node_j` 和 `tail` 用于控制内循环次数和循环结束位置。 - 2. 排序开始前,将 `node_i` 、`node_j` 置于头节点位置。`tail` 指向链表末尾,即 `None`。 - 3. 比较链表中相邻两个元素 `node_j.val` 与 `node_j.next.val` 的值大小,如果 `node_j.val > node_j.next.val`,则值相互交换。否则不发生交换。然后向右移动 `node_j` 指针,直到 `node_j.next == tail` 时停止。 - 4. 一次循环之后,将 `tail` 移动到 `node_j` 所在位置。相当于 `tail` 向左移动了一位。此时 `tail` 节点右侧为链表中最大的链节点。 - 5. 然后移动 `node_i` 节点,并将 `node_j` 置于头节点位置。然后重复第 3、4 步操作。 6. 直到 `node_i` 节点移动到链表末尾停止,排序结束。 7. 返回链表的头节点 `head`。 @@ -48,4 +44,8 @@ class Solution: 这个算法的时间复杂度是 $O(n^2)$,因为需要进行两层循环。空间复杂度是 $O(1)$,因为只使用了固定数量的指针变量,没有使用额外空间。 -链表冒泡排序适合小规模数据排序。对于大规模数据,其他排序算法可能更高效。实现时需要注意指针移动和节点交换的操作。 \ No newline at end of file +链表冒泡排序适合小规模数据排序。对于大规模数据,其他排序算法可能更高效。实现时需要注意指针移动和节点交换的操作。 + +## 练习题目 + +- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_04_linked_list_selection_sort.md b/docs/02_linked_list/02_04_linked_list_selection_sort.md index 47ce6c3e..6946799b 100644 --- a/docs/02_linked_list/02_04_linked_list_selection_sort.md +++ b/docs/02_linked_list/02_04_linked_list_selection_sort.md @@ -1,40 +1,44 @@ ## 1. 链表选择排序算法描述 - 1. 使用两个指针 `node_i`、`node_j`。`node_i` 既可以用于控制外循环次数,又可以作为当前未排序链表的第一个链节点位置。 - 2. 使用 `min_node` 记录当前未排序链表中值最小的链节点。 - 3. 每一趟排序开始时,先令 `min_node = node_i`(即暂时假设链表中 `node_i` 节点为值最小的节点,经过比较后再确定最小值节点位置)。 - 4. 然后依次比较未排序链表中 `node_j.val` 与 `min_node.val` 的值大小。如果 `node_j.val < min_node.val`,则更新 `min_node` 为 `node_j`。 - 5. 这一趟排序结束时,未排序链表中最小值节点为 `min_node`,如果 `node_i != min_node`,则将 `node_i` 与 `min_node` 值进行交换。如果 `node_i == min_node`,则不用交换。 - 6. 排序结束后,继续向右移动 `node_i`,重复上述步骤,在剩余未排序链表中寻找最小的链节点,并与 `node_i` 进行比较和交换,直到 `node_i == None` 或者 `node_i.next == None` 时,停止排序。 - 7. 返回链表的头节点 `head`。 +1. 使用两个指针 `node_i`、`node_j`。`node_i` 既可以用于控制外循环次数,又可以作为当前未排序链表的第一个链节点位置。 +2. 使用 `min_node` 记录当前未排序链表中值最小的链节点。 +3. 每一趟排序开始时,先令 `min_node = node_i`(即暂时假设链表中 `node_i` 节点为值最小的节点,经过比较后再确定最小值节点位置)。 +4. 然后依次比较未排序链表中 `node_j.val` 与 `min_node.val` 的值大小。如果 `node_j.val < min_node.val`,则更新 `min_node` 为 `node_j`。 +5. 这一趟排序结束时,未排序链表中最小值节点为 `min_node`,如果 `node_i != min_node`,则将 `node_i` 与 `min_node` 值进行交换。如果 `node_i == min_node`,则不用交换。 +6. 排序结束后,继续向右移动 `node_i`,重复上述步骤,在剩余未排序链表中寻找最小的链节点,并与 `node_i` 进行比较和交换,直到 `node_i == None` 或者 `node_i.next == None` 时,停止排序。 +7. 返回链表的头节点 `head`。 ## 2. 链表选择排序实现代码 - ```python - class Solution: - def sectionSort(self, head: ListNode): - node_i = head - # node_i 为当前未排序链表的第一个链节点 - while node_i and node_i.next: - # min_node 为未排序链表中的值最小节点 - min_node = node_i - node_j = node_i.next - while node_j: - if node_j.val < min_node.val: - min_node = node_j - node_j = node_j.next - # 交换值最小节点与未排序链表中第一个节点的值 - if node_i != min_node: - node_i.val, min_node.val = min_node.val, node_i.val - node_i = node_i.next - - return head - - def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: - return self.sectionSort(head) - ``` +```python +class Solution: + def sectionSort(self, head: ListNode): + node_i = head + # node_i 为当前未排序链表的第一个链节点 + while node_i and node_i.next: + # min_node 为未排序链表中的值最小节点 + min_node = node_i + node_j = node_i.next + while node_j: + if node_j.val < min_node.val: + min_node = node_j + node_j = node_j.next + # 交换值最小节点与未排序链表中第一个节点的值 + if node_i != min_node: + node_i.val, min_node.val = min_node.val, node_i.val + node_i = node_i.next + + return head + + def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: + return self.sectionSort(head) +``` ## 3. 链表选择排序算法复杂度分析 - - **时间复杂度**:$O(n^2)$。 - - **空间复杂度**:$O(1)$。 +- **时间复杂度**:$O(n^2)$。 +- **空间复杂度**:$O(1)$。 + +## 练习题目 + +- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_05_linked_list_insertion_sort.md b/docs/02_linked_list/02_05_linked_list_insertion_sort.md index 097f8cd5..12ab3574 100644 --- a/docs/02_linked_list/02_05_linked_list_insertion_sort.md +++ b/docs/02_linked_list/02_05_linked_list_insertion_sort.md @@ -2,20 +2,20 @@ ## 1. 链表插入排序算法描述 - 1. 先使用哑节点 `dummy_head` 构造一个指向 `head` 的指针,使得可以从 `head` 开始遍历。 - 2. 维护 `sorted_list` 为链表的已排序部分的最后一个节点,初始时,`sorted_list = head`。 - 3. 维护 `prev` 为插入元素位置的前一个节点,维护 `cur` 为待插入元素。初始时,`prev = head`,`cur = head.next`。 - 4. 比较 `sorted_list` 和 `cur` 的节点值。 +1. 先使用哑节点 `dummy_head` 构造一个指向 `head` 的指针,使得可以从 `head` 开始遍历。 +2. 维护 `sorted_list` 为链表的已排序部分的最后一个节点,初始时,`sorted_list = head`。 +3. 维护 `prev` 为插入元素位置的前一个节点,维护 `cur` 为待插入元素。初始时,`prev = head`,`cur = head.next`。 +4. 比较 `sorted_list` 和 `cur` 的节点值。 - - 如果 `sorted_list.val <= cur.val`,说明 `cur` 应该插入到 `sorted_list` 之后,则将 `sorted_list` 后移一位。 - - 如果 `sorted_list.val > cur.val`,说明 `cur` 应该插入到 `head` 与 `sorted_list` 之间。则使用 `prev` 从 `head` 开始遍历,直到找到插入 `cur` 的位置的前一个节点位置。然后将 `cur` 插入。 + - 如果 `sorted_list.val <= cur.val`,说明 `cur` 应该插入到 `sorted_list` 之后,则将 `sorted_list` 后移一位。 + - 如果 `sorted_list.val > cur.val`,说明 `cur` 应该插入到 `head` 与 `sorted_list` 之间。则使用 `prev` 从 `head` 开始遍历,直到找到插入 `cur` 的位置的前一个节点位置。然后将 `cur` 插入。 - 5. 令 `cur = sorted_list.next`,此时 `cur` 为下一个待插入元素。 - 6. 重复 4、5 步骤,直到 `cur` 遍历结束为空。返回 `dummy_head` 的下一个节点。 +5. 令 `cur = sorted_list.next`,此时 `cur` 为下一个待插入元素。 +6. 重复 4、5 步骤,直到 `cur` 遍历结束为空。返回 `dummy_head` 的下一个节点。 ## 2. 链表插入排序实现代码 - ```python +```python class Solution: def insertionSort(self, head: ListNode): if not head or not head.next: @@ -44,9 +44,13 @@ class Solution: def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: return self.insertionSort(head) - ``` +``` ## 3. 链表插入排序算法复杂度分析 - - **时间复杂度**:$O(n^2)$。 - - **空间复杂度**:$O(1)$。 +- **时间复杂度**:$O(n^2)$。 +- **空间复杂度**:$O(1)$。 + +## 练习题目 + +- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_06_linked_list_merge_sort.md b/docs/02_linked_list/02_06_linked_list_merge_sort.md index a8f49a21..0c63db55 100644 --- a/docs/02_linked_list/02_06_linked_list_merge_sort.md +++ b/docs/02_linked_list/02_06_linked_list_merge_sort.md @@ -1,19 +1,19 @@ ## 1. 链表归并排序算法描述 - 1. **分割环节**:找到链表中心链节点,从中心节点将链表断开,并递归进行分割。 - 1. 使用快慢指针 `fast = head.next`、`slow = head`,让 `fast` 每次移动 `2` 步,`slow` 移动 `1` 步,移动到链表末尾,从而找到链表中心链节点,即 `slow`。 - 2. 从中心位置将链表从中心位置分为左右两个链表 `left_head` 和 `right_head`,并从中心位置将其断开,即 `slow.next = None`。 - 3. 对左右两个链表分别进行递归分割,直到每个链表中只包含一个链节点。 - 2. **归并环节**:将递归后的链表进行两两归并,完成一遍后每个子链表长度加倍。重复进行归并操作,直到得到完整的链表。 - 1. 使用哑节点 `dummy_head` 构造一个头节点,并使用 `cur` 指向 `dummy_head` 用于遍历。 - 2. 比较两个链表头节点 `left` 和 `right` 的值大小。将较小的头节点加入到合并后的链表中,并向后移动该链表的头节点指针。 - 3. 然后重复上一步操作,直到两个链表中出现链表为空的情况。 - 4. 将剩余链表插入到合并后的链表中。 - 5. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为合并后的头节点返回。 +1. **分割环节**:找到链表中心链节点,从中心节点将链表断开,并递归进行分割。 + 1. 使用快慢指针 `fast = head.next`、`slow = head`,让 `fast` 每次移动 `2` 步,`slow` 移动 `1` 步,移动到链表末尾,从而找到链表中心链节点,即 `slow`。 + 2. 从中心位置将链表从中心位置分为左右两个链表 `left_head` 和 `right_head`,并从中心位置将其断开,即 `slow.next = None`。 + 3. 对左右两个链表分别进行递归分割,直到每个链表中只包含一个链节点。 +2. **归并环节**:将递归后的链表进行两两归并,完成一遍后每个子链表长度加倍。重复进行归并操作,直到得到完整的链表。 + 1. 使用哑节点 `dummy_head` 构造一个头节点,并使用 `cur` 指向 `dummy_head` 用于遍历。 + 2. 比较两个链表头节点 `left` 和 `right` 的值大小。将较小的头节点加入到合并后的链表中,并向后移动该链表的头节点指针。 + 3. 然后重复上一步操作,直到两个链表中出现链表为空的情况。 + 4. 将剩余链表插入到合并后的链表中。 + 5. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为合并后的头节点返回。 ## 2. 链表归并排序实现代码 - ```python +```python class Solution: def merge(self, left, right): # 归并环节 @@ -55,9 +55,13 @@ class Solution: def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: return self.mergeSort(head) - ``` +``` ## 3. 链表归并排序算法复杂度分析 - - **时间复杂度**:$O(n \times \log_2n)$。 - - **空间复杂度**:$O(1)$。 +- **时间复杂度**:$O(n \times \log_2n)$。 +- **空间复杂度**:$O(1)$。 + +## 练习题目 + +- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_07_linked_list_quick_sort.md b/docs/02_linked_list/02_07_linked_list_quick_sort.md index bf01a2c4..d61d9bed 100644 --- a/docs/02_linked_list/02_07_linked_list_quick_sort.md +++ b/docs/02_linked_list/02_07_linked_list_quick_sort.md @@ -1,12 +1,12 @@ ## 1. 链表快速排序算法描述 - 1. 从链表中找到一个基准值 `pivot`,这里以头节点为基准值。 - 2. 然后通过快慢指针 `node_i`、`node_j` 在链表中移动,使得 `node_i` 之前的节点值都小于基准值,`node_i` 之后的节点值都大于基准值。从而把数组拆分为左右两个部分。 - 3. 再对左右两个部分分别重复第二步,直到各个部分只有一个节点,则排序结束。 +1. 从链表中找到一个基准值 `pivot`,这里以头节点为基准值。 +2. 然后通过快慢指针 `node_i`、`node_j` 在链表中移动,使得 `node_i` 之前的节点值都小于基准值,`node_i` 之后的节点值都大于基准值。从而把数组拆分为左右两个部分。 +3. 再对左右两个部分分别重复第二步,直到各个部分只有一个节点,则排序结束。 ## 2. 链表快速排序实现代码 - ```python +```python class Solution: def partition(self, left: ListNode, right: ListNode): # 左闭右开,区间没有元素或者只有一个元素,直接返回第一个节点 @@ -41,9 +41,13 @@ class Solution: if not head or not head.next: return head return self.quickSort(head, None) - ``` +``` ## 3. 链表快速排序算法复杂度分析 - - **时间复杂度**:$O(n \times \log_2n)$。 - - **空间复杂度**:$O(1)$。 +- **时间复杂度**:$O(n \times \log_2n)$。 +- **空间复杂度**:$O(1)$。 + +## 练习题目 + +- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_08_linked_list_counting_sort.md b/docs/02_linked_list/02_08_linked_list_counting_sort.md index c4ce4173..41b70bf9 100644 --- a/docs/02_linked_list/02_08_linked_list_counting_sort.md +++ b/docs/02_linked_list/02_08_linked_list_counting_sort.md @@ -1,16 +1,16 @@ ## 1. 链表计数排序算法描述 - 1. 使用 `cur` 指针遍历一遍链表。找出链表中最大值 `list_max` 和最小值 `list_min`。 - 2. 使用数组 `counts` 存储节点出现次数。 - 3. 再次使用 `cur` 指针遍历一遍链表。将链表中每个值为 `cur.val` 的节点出现次数,存入数组对应第 `cur.val - list_min` 项中。 - 4. 反向填充目标链表: - 1. 建立一个哑节点 `dummy_head`,作为链表的头节点。使用 `cur` 指针指向 `dummy_head`。 - 2. 从小到大遍历一遍数组 `counts`。对于每个 `counts[i] != 0` 的元素建立一个链节点,值为 `i + list_min`,将其插入到 `cur.next` 上。并向右移动 `cur`。同时 `counts[i] -= 1`。直到 `counts[i] == 0` 后继续向后遍历数组 `counts`。 - 5. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为新链表的头节点返回。 +1. 使用 `cur` 指针遍历一遍链表。找出链表中最大值 `list_max` 和最小值 `list_min`。 +2. 使用数组 `counts` 存储节点出现次数。 +3. 再次使用 `cur` 指针遍历一遍链表。将链表中每个值为 `cur.val` 的节点出现次数,存入数组对应第 `cur.val - list_min` 项中。 +4. 反向填充目标链表: + 1. 建立一个哑节点 `dummy_head`,作为链表的头节点。使用 `cur` 指针指向 `dummy_head`。 + 2. 从小到大遍历一遍数组 `counts`。对于每个 `counts[i] != 0` 的元素建立一个链节点,值为 `i + list_min`,将其插入到 `cur.next` 上。并向右移动 `cur`。同时 `counts[i] -= 1`。直到 `counts[i] == 0` 后继续向后遍历数组 `counts`。 +5. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为新链表的头节点返回。 ## 2. 链表计数排序代码实现 - ```python +```python class Solution: def countingSort(self, head: ListNode): if not head: @@ -45,10 +45,13 @@ class Solution: def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: return self.countingSort(head) - ``` +``` ## 3. 链表计数排序算法复杂度分析 - - **时间复杂度**:$O(n + k)$,其中 $k$ 代表待排序链表中所有元素的值域。 - - **空间复杂度**:$O(k)$。 +- **时间复杂度**:$O(n + k)$,其中 $k$ 代表待排序链表中所有元素的值域。 +- **空间复杂度**:$O(k)$。 +## 练习题目 + +- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_09_linked_list_bucket_sort.md b/docs/02_linked_list/02_09_linked_list_bucket_sort.md index 35309252..f51b6c1d 100644 --- a/docs/02_linked_list/02_09_linked_list_bucket_sort.md +++ b/docs/02_linked_list/02_09_linked_list_bucket_sort.md @@ -107,5 +107,9 @@ class Solution: ## 3. 链表桶排序算法复杂度分析 - - **时间复杂度**:$O(n)$。 - - **空间复杂度**:$O(n + m)$。$m$ 为桶的个数。 +- **时间复杂度**:$O(n)$。 +- **空间复杂度**:$O(n + m)$。$m$ 为桶的个数。 + +## 练习题目 + +- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_10_linked_list_radix_sort.md b/docs/02_linked_list/02_10_linked_list_radix_sort.md index 4cf8e73a..328563af 100644 --- a/docs/02_linked_list/02_10_linked_list_radix_sort.md +++ b/docs/02_linked_list/02_10_linked_list_radix_sort.md @@ -1,16 +1,16 @@ ## 1. 链表基数排序算法描述 - 1. 使用 `cur` 指针遍历链表,获取节点值位数最长的位数 `size`。 - 2. 从个位到高位遍历位数。因为 `0` ~ `9` 共有 `10` 位数字,所以建立 `10` 个桶。 - 3. 以每个节点对应位数上的数字为索引,将节点值放入到对应桶中。 - 4. 建立一个哑节点 `dummy_head`,作为链表的头节点。使用 `cur` 指针指向 `dummy_head`。 - 5. 将桶中元素依次取出,并根据元素值建立链表节点,并插入到新的链表后面。从而生成新的链表。 - 6. 之后依次以十位,百位,…,直到最大值元素的最高位处值为索引,放入到对应桶中,并生成新的链表,最终完成排序。 - 7. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为新链表的头节点返回。 +1. 使用 `cur` 指针遍历链表,获取节点值位数最长的位数 `size`。 +2. 从个位到高位遍历位数。因为 `0` ~ `9` 共有 `10` 位数字,所以建立 `10` 个桶。 +3. 以每个节点对应位数上的数字为索引,将节点值放入到对应桶中。 +4. 建立一个哑节点 `dummy_head`,作为链表的头节点。使用 `cur` 指针指向 `dummy_head`。 +5. 将桶中元素依次取出,并根据元素值建立链表节点,并插入到新的链表后面。从而生成新的链表。 +6. 之后依次以十位,百位,…,直到最大值元素的最高位处值为索引,放入到对应桶中,并生成新的链表,最终完成排序。 +7. 将哑节点 `dummy_dead` 的下一个链节点 `dummy_head.next` 作为新链表的头节点返回。 ## 2. 链表基数排序代码实现 - ```python +```python class Solution: def radixSort(self, head: ListNode): # 计算位数最长的位数 @@ -44,9 +44,13 @@ class Solution: def sortList(self, head: Optional[ListNode]) -> Optional[ListNode]: return self.radixSort(head) - ``` +``` ## 3. 链表基数排序算法复杂度分析 - - **时间复杂度**:$O(n \times k)$。其中 $n$ 是待排序元素的个数,$k$ 是数字位数。$k$ 的大小取决于数字位的选择(十进制位、二进制位)和待排序元素所属数据类型全集的大小。 - - **空间复杂度**:$O(n + k)$。 +- **时间复杂度**:$O(n \times k)$。其中 $n$ 是待排序元素的个数,$k$ 是数字位数。$k$ 的大小取决于数字位的选择(十进制位、二进制位)和待排序元素所属数据类型全集的大小。 +- **空间复杂度**:$O(n + k)$。 + +## 练习题目 + +- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_11_linked_list_two_pointers.md b/docs/02_linked_list/02_11_linked_list_two_pointers.md index 95028f79..bb6b2e10 100644 --- a/docs/02_linked_list/02_11_linked_list_two_pointers.md +++ b/docs/02_linked_list/02_11_linked_list_two_pointers.md @@ -407,3 +407,6 @@ class Solution: - **时间复杂度**:$O(n)$。 - **空间复杂度**:$O(1)$。 +## 练习题目 + +- [链表双指针题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E5%8F%8C%E6%8C%87%E9%92%88%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/03_stack_queue_hash_table/03_01_stack_basic.md b/docs/03_stack_queue_hash_table/03_01_stack_basic.md index ae4d37c9..d2497f49 100644 --- a/docs/03_stack_queue_hash_table/03_01_stack_basic.md +++ b/docs/03_stack_queue_hash_table/03_01_stack_basic.md @@ -348,6 +348,10 @@ class Solution: - **时间复杂度**:$O(n)$。 - **空间复杂度**:$O(n)$。 +## 练习题目 + +- [堆栈基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%A0%86%E6%A0%88%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】数据结构与算法 Python 语言描述 - 裘宗燕 著 diff --git a/docs/03_stack_queue_hash_table/03_02_monotone_stack.md b/docs/03_stack_queue_hash_table/03_02_monotone_stack.md index 70699198..01ed415d 100644 --- a/docs/03_stack_queue_hash_table/03_02_monotone_stack.md +++ b/docs/03_stack_queue_hash_table/03_02_monotone_stack.md @@ -268,6 +268,10 @@ class Solution: - **时间复杂度**:$O(n)$。 - **空间复杂度**:$O(n)$。 +## 练习题目 + +- [单调栈题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E8%B0%83%E6%A0%88) + ## 参考资料 - 【博文】[动画:什么是单调栈?_- 吴师兄学编程](https://www.cxyxiaowu.com/450.html) diff --git a/docs/03_stack_queue_hash_table/03_03_queue_basic.md b/docs/03_stack_queue_hash_table/03_03_queue_basic.md index 7529aa10..ad581a16 100644 --- a/docs/03_stack_queue_hash_table/03_03_queue_basic.md +++ b/docs/03_stack_queue_hash_table/03_03_queue_basic.md @@ -327,6 +327,10 @@ class Queue: - 比如说一个带有多终端的计算机系统,当有多个用户需要各自运行各自的程序时,就分别通过终端向操作系统提出占用 CPU 的请求。操作系统通常按照每个请求在时间上的先后顺序将它们排成一个队列,每次把 CPU 分配给队头请求的用户使用;当相应的程序运行结束或用完规定的时间间隔之后,将其退出队列,再把 CPU 分配给新的队头请求的用户使用。这样既能满足多用户的请求,又能使 CPU 正常运行。 - 再比如 Linux 中的环形缓存、高性能队列 Disruptor,都用到了循环并发队列。iOS 多线程中的 GCD、NSOperationQueue 都用到了队列结构。 +## 练习题目 + +- [队列基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%98%9F%E5%88%97%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】数据结构与算法 Python 语言描述 - 裘宗燕 著 diff --git a/docs/03_stack_queue_hash_table/03_04_priority_queue.md b/docs/03_stack_queue_hash_table/03_04_priority_queue.md index e5edcfc6..ccdd2686 100644 --- a/docs/03_stack_queue_hash_table/03_04_priority_queue.md +++ b/docs/03_stack_queue_hash_table/03_04_priority_queue.md @@ -391,6 +391,10 @@ class Solution: - **时间复杂度**:$O(n \times \log n)$。 - **空间复杂度**:$O(n)$。 +## 练习题目 + +- [优先队列题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BC%98%E5%85%88%E9%98%9F%E5%88%97%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【博文】[浅入浅出数据结构(15)—— 优先队列(堆) - NSpt - 博客园](https://www.cnblogs.com/mm93/p/7481782.html) diff --git a/docs/03_stack_queue_hash_table/03_06_hash_table.md b/docs/03_stack_queue_hash_table/03_06_hash_table.md index d1f3d06f..abc39dce 100644 --- a/docs/03_stack_queue_hash_table/03_06_hash_table.md +++ b/docs/03_stack_queue_hash_table/03_06_hash_table.md @@ -153,6 +153,10 @@ $343246_{13} = 3 \times 13^5 + 4 \times 13^4 + 3 \times 13^3 + 2 \times 13^2 + 4 - 常用的哈希函数方法有:直接定址法、除留余数法、平方取中法、基数转换法、数字分析法、折叠法、随机数法、乘积法、点积法等。 - 常用的哈希冲突的解决方法有两种:开放地址法和链地址法。 +## 练习题目 + +- [哈希表题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%93%88%E5%B8%8C%E8%A1%A8%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【博文】[哈希算法及 python 字典的实现 – Tim's Path](https://xiaoxubeii.github.io/articles/hash/) diff --git a/docs/04_string/04_01_string_basic.md b/docs/04_string/04_01_string_basic.md index ea4b95d2..12e00158 100644 --- a/docs/04_string/04_01_string_basic.md +++ b/docs/04_string/04_01_string_basic.md @@ -179,6 +179,10 @@ ASCII 编码可以解决以英语为主的语言,可是无法满足中文编 所以学习多模式匹配算法,重点是要掌握 **「字典树」** 和 **「AC 自动机算法」** 。 +## 练习题目 + +- [字符串基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】数据结构(C 语言版)- 严蔚敏 著 diff --git a/docs/04_string/04_03_string_brute_force.md b/docs/04_string/04_03_string_brute_force.md index 384d407b..4daafa39 100644 --- a/docs/04_string/04_03_string_brute_force.md +++ b/docs/04_string/04_03_string_brute_force.md @@ -45,6 +45,10 @@ BF 算法非常简单,容易理解,但其效率很低。主要是因为在 在一般情况下,根据等概率原则,平均搜索次数为 $\frac{(n + m)}{2}$,所以 Brute Force 算法的平均时间复杂度为 $O(n \times m)$。 +## 练习题目 + +- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】数据结构与算法 Python 语言描述 - 裘宗燕 著 diff --git a/docs/04_string/04_04_string_rabin_karp.md b/docs/04_string/04_04_string_rabin_karp.md index 9df54f97..5600761d 100644 --- a/docs/04_string/04_04_string_rabin_karp.md +++ b/docs/04_string/04_04_string_rabin_karp.md @@ -96,6 +96,10 @@ RK 算法可以看做是 BF 算法的一种改进。在 BF 算法中,每一个 但是如果存在冲突的情况下,算法的效率会降低。最坏情况是每一次比较模式串的哈希值和子串的哈希值时都相等,但是每一次都会出现冲突,那么每一次都需要验证模式串和子串每个字符是否完全相同,那么总的比较次数就是 $m \times (n - m + 1)$,时间复杂度就会退化为 $O(m \times n)$。 +## 练习题目 + +- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】数据结构与算法 Python 语言描述 - 裘宗燕 著 diff --git a/docs/04_string/04_05_string_kmp.md b/docs/04_string/04_05_string_kmp.md index 56b3bf3e..abc82ee6 100644 --- a/docs/04_string/04_05_string_kmp.md +++ b/docs/04_string/04_05_string_kmp.md @@ -144,6 +144,10 @@ print(kmp("ababbbbaaabbbaaa", "bbbb")) - KMP 算法在匹配阶段,是根据前缀表不断调整匹配的位置,文本串的下标 $i$ 并没有进行回退,可以看出匹配阶段的时间复杂度是 $O(n)$,其中 $n$ 是文本串 $T$ 的长度。 - 所以 KMP 整个算法的时间复杂度是 $O(n + m)$,相对于朴素匹配算法的 $O(n \times m)$ 的时间复杂度,KMP 算法的效率有了很大的提升。 +## 练习题目 + +- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】柔性字符串匹配 - 中科院计算所网络信息安全研究组 译 diff --git a/docs/04_string/04_06_string_boyer_moore.md b/docs/04_string/04_06_string_boyer_moore.md index d12149b9..d8ea0967 100644 --- a/docs/04_string/04_06_string_boyer_moore.md +++ b/docs/04_string/04_06_string_boyer_moore.md @@ -323,6 +323,10 @@ print(boyerMoore("", "")) - BM 算法在搜索阶段最差情况是文本串 $T$ 中有多个重复的字符,并且模式串 $p$ 中有 $m - 1$ 个相同字符前加一个不同的字符组成。这时的时间复杂度为 $O(m * n)$。 - 当模式串 $p$ 是非周期性的,在最坏情况下,BM 算法最多需要进行 $3 * n$ 次字符比较操作。 +## 练习题目 + +- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】柔性字符串匹配 - 中科院计算所网络信息安全研究组 译 diff --git a/docs/04_string/04_07_string_horspool.md b/docs/04_string/04_07_string_horspool.md index fa272ee8..d15ef07d 100644 --- a/docs/04_string/04_07_string_horspool.md +++ b/docs/04_string/04_07_string_horspool.md @@ -96,6 +96,10 @@ print(horspool("abbcfdddbddcaddebc", "bcf")) - Horspool 算法在平均情况下的时间复杂度为 $O(n)$,但是在最坏情况下时间复杂度会退化为 $O(n * m)$。 +## 练习题目 + +- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】柔性字符串匹配 - 中科院计算所网络信息安全研究组 译 diff --git a/docs/04_string/04_08_string_sunday.md b/docs/04_string/04_08_string_sunday.md index 984b72c8..cbcb64fd 100644 --- a/docs/04_string/04_08_string_sunday.md +++ b/docs/04_string/04_08_string_sunday.md @@ -101,3 +101,7 @@ print(sunday("abbcfdddbddcaddebc", "bcf")) - 【书籍】柔性字符串匹配 - 中科院计算所网络信息安全研究组 译 - 【博文】[字符串模式匹配算法:BM、Horspool、Sunday、KMP、KR、AC算法 - schips - 博客园](https://www.cnblogs.com/schips/p/11098041.html) - 【博文】[字符串匹配——Sunday 算法 - Switch 的博客 - CSDN 博客](https://blog.csdn.net/q547550831/article/details/51860017) + +## 练习题目 + +- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/04_string/04_09_string_multi_pattern_matching.md b/docs/04_string/04_09_string_multi_pattern_matching.md index 7092fe67..1be10179 100644 --- a/docs/04_string/04_09_string_multi_pattern_matching.md +++ b/docs/04_string/04_09_string_multi_pattern_matching.md @@ -80,3 +80,4 @@ AC 自动机的主要应用: - 分词 - 命名实体识别 - 文本摘要 + diff --git a/docs/04_string/04_10_trie.md b/docs/04_string/04_10_trie.md index fd1ecfa0..2a959cdb 100644 --- a/docs/04_string/04_10_trie.md +++ b/docs/04_string/04_10_trie.md @@ -212,6 +212,10 @@ class Trie: # 字典树 - **最长公共前缀问题**:利用字典树求解多个字符串的最长公共前缀问题。将⼤量字符串都存储到⼀棵字典树上时, 可以快速得到某些字符串的公共前缀。对所有字符串都建⽴字典树,两个串的最长公共前缀的长度就是它们所在节点最近公共祖先的长度,于是转变为最近公共祖先问题。 - **字符串排序**:利⽤字典树进⾏串排序。例如,给定多个互不相同的仅由⼀个单词构成的英⽂名,将它们按字典序从⼩到⼤输出。采⽤数组⽅式创建字典树,字典树中每个节点的所有⼦节点都是按照其字母⼤⼩排序的。然后对字典树进⾏先序遍历,输出的相应字符串就是按字典序排序的结果。 +## 练习题目 + +- [字典树题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%AD%97%E5%85%B8%E6%A0%91%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】算法训练营 陈小玉 著 diff --git a/docs/05_tree/05_02_binary_tree_traverse.md b/docs/05_tree/05_02_binary_tree_traverse.md index 5a2b2ccc..48bfee7e 100644 --- a/docs/05_tree/05_02_binary_tree_traverse.md +++ b/docs/05_tree/05_02_binary_tree_traverse.md @@ -307,6 +307,10 @@ class Solution: return order ``` +## 练习题目 + +- [二叉树的遍历题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%81%8D%E5%8E%86%E9%A2%98%E7%9B%AE) + ## 参考资料 1. 【书籍】数据结构教程 第 3 版 - 唐发根 著 diff --git a/docs/05_tree/05_03_binary_tree_reduction.md b/docs/05_tree/05_03_binary_tree_reduction.md index ebe67db4..aa8ae7d9 100644 --- a/docs/05_tree/05_03_binary_tree_reduction.md +++ b/docs/05_tree/05_03_binary_tree_reduction.md @@ -159,6 +159,10 @@ class Solution: return createTree(preorder, postorder, len(preorder)) ``` +## 练习题目 + +- [二叉树的还原题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BF%98%E5%8E%9F%E9%A2%98%E7%9B%AE) + ## 参考资料 1. 【书籍】数据结构教程 第 3 版 - 唐发根 著 diff --git a/docs/05_tree/05_04_binary_search_tree.md b/docs/05_tree/05_04_binary_search_tree.md index 3764b423..36aa3d4c 100644 --- a/docs/05_tree/05_04_binary_search_tree.md +++ b/docs/05_tree/05_04_binary_search_tree.md @@ -189,6 +189,10 @@ class Solution: return root.right ``` +## 练习题目 + +- [二叉搜索树题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】算法训练营 陈小玉 著 diff --git a/docs/05_tree/05_05_segment_tree_01.md b/docs/05_tree/05_05_segment_tree_01.md index afe7c1b3..14047e44 100644 --- a/docs/05_tree/05_05_segment_tree_01.md +++ b/docs/05_tree/05_05_segment_tree_01.md @@ -325,6 +325,10 @@ class SegmentTree: self.tree[index].lazy_tag = None # 更新当前节点的懒惰标记 ``` +## 练习题目 + +- [线段树题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E7%BA%BF%E6%AE%B5%E6%A0%91%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】ACM-ICPC 程序设计系列 - 算法设计与实现 - 陈宇 吴昊 主编 diff --git a/docs/05_tree/05_06_segment_tree_02.md b/docs/05_tree/05_06_segment_tree_02.md index 04c6fa98..cf9cae8c 100644 --- a/docs/05_tree/05_06_segment_tree_02.md +++ b/docs/05_tree/05_06_segment_tree_02.md @@ -187,6 +187,10 @@ class SegmentTree: node.lazy_tag = None # 更新当前节点的懒惰标记 ``` +## 练习题目 + +- [线段树题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E7%BA%BF%E6%AE%B5%E6%A0%91%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】ACM-ICPC 程序设计系列 - 算法设计与实现 - 陈宇 吴昊 主编 diff --git a/docs/05_tree/05_07_binary_indexed_tree.md b/docs/05_tree/05_07_binary_indexed_tree.md index fa4ae282..758b3f4f 100644 --- a/docs/05_tree/05_07_binary_indexed_tree.md +++ b/docs/05_tree/05_07_binary_indexed_tree.md @@ -22,6 +22,10 @@ ### 4.3 求逆序对数 +## 练习题目 + +- [树状数组题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%A0%91%E7%8A%B6%E6%95%B0%E7%BB%84%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】ACM-ICPC 程序设计系列 - 算法设计与实现 - 陈宇 吴昊 主编 diff --git a/docs/05_tree/05_08_union_find.md b/docs/05_tree/05_08_union_find.md index 54351d57..508337c5 100644 --- a/docs/05_tree/05_08_union_find.md +++ b/docs/05_tree/05_08_union_find.md @@ -561,6 +561,10 @@ class Solution: return len(res) ``` +## 练习题目 + +- [并查集题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%B9%B6%E6%9F%A5%E9%9B%86%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【博文】[并查集 - OI Wiki](https://oi-wiki.org/ds/dsu/) diff --git a/docs/06_graph/06_03_graph_dfs.md b/docs/06_graph/06_03_graph_dfs.md index 19e365f0..fca48a23 100644 --- a/docs/06_graph/06_03_graph_dfs.md +++ b/docs/06_graph/06_03_graph_dfs.md @@ -324,6 +324,10 @@ class Solution: - **时间复杂度**:$O(n)$。其中 $n$ 为图中节点数量。 - **空间复杂度**:$O(n)$。 +## 练习题目 + +- [图的深度优先搜索题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【文章】[深度优先搜索 - LeetBook - 力扣(LeetCode)](https://leetcode.cn/leetbook/read/dfs/egx6xc/) diff --git a/docs/06_graph/06_04_graph_bfs.md b/docs/06_graph/06_04_graph_bfs.md index 85410ed6..ce718e4c 100644 --- a/docs/06_graph/06_04_graph_bfs.md +++ b/docs/06_graph/06_04_graph_bfs.md @@ -269,6 +269,10 @@ class Solution: - **时间复杂度**:$O(n \times m)$,其中 $m$ 和 $n$ 分别为行数和列数。 - **空间复杂度**:$O(n \times m)$。 +## 练习题目 + +- [图的广度优先搜索题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【文章】[广度优先搜索 - LeetBook - 力扣(LeetCode)](https://leetcode.cn/leetbook/read/bfs/e69rh1/) diff --git a/docs/06_graph/06_05_graph_topological_sorting.md b/docs/06_graph/06_05_graph_topological_sorting.md index 1827ab2f..2a72c826 100644 --- a/docs/06_graph/06_05_graph_topological_sorting.md +++ b/docs/06_graph/06_05_graph_topological_sorting.md @@ -344,3 +344,7 @@ class Solution: - **时间复杂度**:$O(n + m)$,其中 $n$ 是图中节点数目,$m$ 是图中边数目。 - **空间复杂度**:$O(n + m)$。 + +## 练习题目 + +- [拓扑排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%8B%93%E6%89%91%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_06_graph_minimum_spanning_tree.md b/docs/06_graph/06_06_graph_minimum_spanning_tree.md index 18a83e2c..2e08faab 100644 --- a/docs/06_graph/06_06_graph_minimum_spanning_tree.md +++ b/docs/06_graph/06_06_graph_minimum_spanning_tree.md @@ -208,4 +208,8 @@ Kruskal 算法的时间复杂度主要取决于以下几个因素: 因此,Kruskal 算法的总体时间复杂度为: - 时间复杂度:$O(E \log E)$,其中 $E$ 是图中的边数。 -- 空间复杂度:$O(V)$,其中 $V$ 是图中的顶点数,主要用于存储并查集数据结构。 \ No newline at end of file +- 空间复杂度:$O(V)$,其中 $V$ 是图中的顶点数,主要用于存储并查集数据结构。 + +## 练习题目 + +- [图的最小生成树题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%9C%80%E5%B0%8F%E7%94%9F%E6%88%90%E6%A0%91%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_07_graph_shortest_path_01.md b/docs/06_graph/06_07_graph_shortest_path_01.md index ecb599ad..6227e419 100644 --- a/docs/06_graph/06_07_graph_shortest_path_01.md +++ b/docs/06_graph/06_07_graph_shortest_path_01.md @@ -202,3 +202,7 @@ for i in range(1, n + 1): - **空间复杂度**:$O(V)$ - 需要存储距离数组,大小为 $O(V)$。 - 优先队列在最坏情况下可能存储所有节点,大小为 $O(V)$。 + +## 练习题目 + +- [单源最短路径题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_08_graph_shortest_path_02.md b/docs/06_graph/06_08_graph_shortest_path_02.md index c5c1bf4e..4dad32f2 100644 --- a/docs/06_graph/06_08_graph_shortest_path_02.md +++ b/docs/06_graph/06_08_graph_shortest_path_02.md @@ -159,3 +159,7 @@ def spfa(graph, n, source): - 需要存储距离数组,大小为 $O(V)$ - 需要存储队列和访问数组,大小为 $O(V)$ - 因此总空间复杂度为 $O(V)$ + +## 练习题目 + +- [单源最短路径题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_09_graph_multi_source_shortest_path.md b/docs/06_graph/06_09_graph_multi_source_shortest_path.md index 46ee8248..8aaadbda 100644 --- a/docs/06_graph/06_09_graph_multi_source_shortest_path.md +++ b/docs/06_graph/06_09_graph_multi_source_shortest_path.md @@ -200,3 +200,7 @@ def johnson(graph, n): - 需要存储距离矩阵,大小为 $O(V^2)$ - 需要存储重新赋权后的图,大小为 $O(E)$ - 因此总空间复杂度为 $O(V^2)$ + +## 练习题目 + +- [多源最短路径题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_10_graph_the_second_shortest_path.md b/docs/06_graph/06_10_graph_the_second_shortest_path.md index 2dbb28dd..5567b2c3 100644 --- a/docs/06_graph/06_10_graph_the_second_shortest_path.md +++ b/docs/06_graph/06_10_graph_the_second_shortest_path.md @@ -128,4 +128,8 @@ print(f"次短路径长度: {result}") 1. 次短路径必须严格大于最短路径。 2. 如果不存在次短路径,返回 $-1$。 3. 图中可能存在负权边,此时需要使用 Bellman-Ford 算法的变体。 -4. 对于无向图,需要将每条边都加入两次。 \ No newline at end of file +4. 对于无向图,需要将每条边都加入两次。 + +## 练习题目 + +- [次短路径题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%AC%A1%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_11_graph_system_of_difference_constraints.md b/docs/06_graph/06_11_graph_system_of_difference_constraints.md index 11f169fe..4e1a57ec 100644 --- a/docs/06_graph/06_11_graph_system_of_difference_constraints.md +++ b/docs/06_graph/06_11_graph_system_of_difference_constraints.md @@ -117,4 +117,8 @@ def solve_difference_constraints(n, constraints): 1. 差分约束系统可能有多个解 2. 如果存在负环,则无解 3. 实际应用中需要注意数值精度问题 -4. 对于大规模问题,可以考虑使用其他优化算法 \ No newline at end of file +4. 对于大规模问题,可以考虑使用其他优化算法 + +## 练习题目 + +- [差分约束系统题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%B7%AE%E5%88%86%E7%BA%A6%E6%9D%9F%E7%B3%BB%E7%BB%9F) \ No newline at end of file diff --git a/docs/06_graph/06_12_graph_bipartite_basic.md b/docs/06_graph/06_12_graph_bipartite_basic.md index 8007df93..9931130b 100644 --- a/docs/06_graph/06_12_graph_bipartite_basic.md +++ b/docs/06_graph/06_12_graph_bipartite_basic.md @@ -69,4 +69,8 @@ def is_bipartite(graph): 1. 在实现二分图算法时,需要注意图的表示方式(邻接表或邻接矩阵) 2. 对于大规模图,需要考虑算法的空间复杂度 3. 在实际应用中,可能需要根据具体问题对基本算法进行优化 -4. 处理有向图时,需要先将其转换为无向图再判断是否为二分图 \ No newline at end of file +4. 处理有向图时,需要先将其转换为无向图再判断是否为二分图 + +## 练习题目 + +- [二分图基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E5%9B%BE%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_13_graph_bipartite_matching.md b/docs/06_graph/06_13_graph_bipartite_matching.md index 19cb4031..a0ffd2ea 100644 --- a/docs/06_graph/06_13_graph_bipartite_matching.md +++ b/docs/06_graph/06_13_graph_bipartite_matching.md @@ -275,3 +275,7 @@ def max_flow_bipartite_matching(graph, left_size, right_size): - 优点:可以处理更复杂的问题,如带权匹配 - 缺点:实现复杂,常数较大 - 适用场景:带权匹配,复杂约束条件 + +## 练习题目 + +- [二分图最大匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E5%9B%BE%E6%9C%80%E5%A4%A7%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/07_algorithm/07_01_enumeration_algorithm.md b/docs/07_algorithm/07_01_enumeration_algorithm.md index dbd4679f..34589605 100644 --- a/docs/07_algorithm/07_01_enumeration_algorithm.md +++ b/docs/07_algorithm/07_01_enumeration_algorithm.md @@ -277,4 +277,8 @@ class Solution: ##### 思路 1:复杂度分析 - **时间复杂度**:$O(n^2)$。 -- **空间复杂度**:$O(1)$。 \ No newline at end of file +- **空间复杂度**:$O(1)$。 + +## 练习题目 + +- [枚举算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%9E%9A%E4%B8%BE%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/07_algorithm/07_02_recursive_algorithm.md b/docs/07_algorithm/07_02_recursive_algorithm.md index 2884b423..a663b729 100644 --- a/docs/07_algorithm/07_02_recursive_algorithm.md +++ b/docs/07_algorithm/07_02_recursive_algorithm.md @@ -315,6 +315,10 @@ class Solution: - **时间复杂度**:$O(n)$,其中 $n$ 是二叉树的节点数目。 - **空间复杂度**:$O(n)$。递归函数需要用到栈空间,栈空间取决于递归深度,最坏情况下递归深度为 $n$,所以空间复杂度为 $O(n)$。 +## 练习题目 + +- [递归算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%80%92%E5%BD%92%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】算法竞赛入门经典:训练指南 - 刘汝佳,陈锋 著 diff --git a/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md b/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md index 574ba248..102524ce 100644 --- a/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md +++ b/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md @@ -246,6 +246,10 @@ class Solution: return left if nums[left] == target else -1 ``` +## 练习题目 + +- [分治算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E6%B2%BB%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【书籍】趣学算法 - 陈小玉 著 diff --git a/docs/07_algorithm/07_04_backtracking_algorithm.md b/docs/07_algorithm/07_04_backtracking_algorithm.md index 30283949..29b61bd3 100644 --- a/docs/07_algorithm/07_04_backtracking_algorithm.md +++ b/docs/07_algorithm/07_04_backtracking_algorithm.md @@ -397,6 +397,10 @@ class Solution: - **时间复杂度**:$O(n!)$,其中 $n$ 是皇后数量。 - **空间复杂度**:$O(n^2)$,其中 $n$ 是皇后数量。递归调用层数不会超过 $n$,每个棋盘的空间复杂度为 $O(n^2)$,所以空间复杂度为 $O(n^2)$。 +## 练习题目 + +- [回溯算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%9B%9E%E6%BA%AF%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【题解】[回溯算法入门级详解 + 练习(持续更新) - 全排列 - 力扣](https://leetcode.cn/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liweiw/) diff --git a/docs/07_algorithm/07_05_greedy_algorithm.md b/docs/07_algorithm/07_05_greedy_algorithm.md index d735adc7..1dbc9c70 100644 --- a/docs/07_algorithm/07_05_greedy_algorithm.md +++ b/docs/07_algorithm/07_05_greedy_algorithm.md @@ -231,6 +231,10 @@ class Solution: - **时间复杂度**:$O(n \times \log n)$,其中 $n$ 是区间的数量。 - **空间复杂度**:$O(\log n)$。 +## 练习题目 + +- [贪心算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【博文】[贪心 - OI Wiki](https://oi-wiki.org/basic/greedy/) diff --git a/docs/07_algorithm/07_06_bit_operation.md b/docs/07_algorithm/07_06_bit_operation.md index 2966ebbe..c8036426 100644 --- a/docs/07_algorithm/07_06_bit_operation.md +++ b/docs/07_algorithm/07_06_bit_operation.md @@ -310,6 +310,10 @@ class Solution: return sub_sets # 返回所有子集 ``` +## 练习题目 + +- [位运算题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BD%8D%E8%BF%90%E7%AE%97%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【博文】[Python 中的按位运算符 |【生长吧!Python!】- 云社区 - 华为云](https://bbs.huaweicloud.com/blogs/280901) diff --git a/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md b/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md index f1480280..122ed57f 100644 --- a/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md +++ b/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md @@ -384,6 +384,10 @@ class Solution: - **时间复杂度**:$O(m \times n)$。初始条件赋值的时间复杂度为 $O(m + n)$,两重循环遍历的时间复杂度为 $O(m \times n)$,所以总体时间复杂度为 $O(m \times n)$。 - **空间复杂度**:$O(m \times n)$。用到了二维数组保存状态,所以总体空间复杂度为 $O(m \times n)$。因为 $dp[i][j]$ 的状态只依赖于上方值 $dp[i - 1][j]$ 和左侧值 $dp[i][j - 1]$,而我们在进行遍历时的顺序刚好是从上至下、从左到右。所以我们可以使用长度为 $n$ 的一维数组来保存状态,从而将空间复杂度优化到 $O(n)$。 +## 题目练习 + +- [动态规划基础题目](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【文章】[动态规划基础 - OI Wiki](https://oi-wiki.org/dp/basic/) diff --git a/docs/08_dynamic_programming/08_02_memoization_search.md b/docs/08_dynamic_programming/08_02_memoization_search.md index fdfb05a0..d05a5b91 100644 --- a/docs/08_dynamic_programming/08_02_memoization_search.md +++ b/docs/08_dynamic_programming/08_02_memoization_search.md @@ -277,6 +277,10 @@ class Solution: - **时间复杂度**:$O(n)$。 - **空间复杂度**:$O(n)$。 +## 题目练习 + +- [记忆化搜索题目](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E8%AE%B0%E5%BF%86%E5%8C%96%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) + ## 参考资料 1. 【文章】[记忆化搜索 - OI Wiki](https://oi-wiki.org/dp/memo/) diff --git a/docs/08_dynamic_programming/08_03_linear_dp_01.md b/docs/08_dynamic_programming/08_03_linear_dp_01.md index 2d63f589..5815ddce 100644 --- a/docs/08_dynamic_programming/08_03_linear_dp_01.md +++ b/docs/08_dynamic_programming/08_03_linear_dp_01.md @@ -739,6 +739,11 @@ class Solution: - **时间复杂度**:$O(n \times m)$,其中 $n$、$m$ 分别是字符串 $word1$、$word2$ 的长度。两重循环遍历的时间复杂度是 $O(n \times m)$,所以总的时间复杂度为 $O(n \times m)$。 - **空间复杂度**:$O(n \times m)$。用到了二维数组保存状态,所以总体空间复杂度为 $O(n \times m)$。 +## 题目练习 + +- [单串线性 DP 问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) +- [双串线性 DP 问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8F%8C%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) + ## 参考资料 - 【书籍】算法竞赛进阶指南 diff --git a/docs/08_dynamic_programming/08_04_linear_dp_02.md b/docs/08_dynamic_programming/08_04_linear_dp_02.md index 209222d9..18ceacfc 100644 --- a/docs/08_dynamic_programming/08_04_linear_dp_02.md +++ b/docs/08_dynamic_programming/08_04_linear_dp_02.md @@ -370,6 +370,11 @@ class Solution: - **时间复杂度**:$O(n \sqrt{n})$。外层循环遍历的时间复杂度是 $O(n)$,内层循环遍历的时间复杂度是 $O(\sqrt{n})$,所以总体时间复杂度为 $O(n \sqrt{n})$。 - **空间复杂度**:$O(n)$。用到了一维数组保存状态,所以总体空间复杂度为 $O(n)$。 +## 题目练习 + +- [矩阵线性 DP 问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E7%9F%A9%E9%98%B5%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) +- [矩阵线性 DP 问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%97%A0%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) + ## 参考资料 - 【书籍】算法竞赛进阶指南 diff --git a/docs/08_dynamic_programming/08_05_knapsack_problem_01.md b/docs/08_dynamic_programming/08_05_knapsack_problem_01.md index 71e90168..f30c0d2d 100644 --- a/docs/08_dynamic_programming/08_05_knapsack_problem_01.md +++ b/docs/08_dynamic_programming/08_05_knapsack_problem_01.md @@ -262,6 +262,11 @@ class Solution: - **时间复杂度**:$O(n \times target)$,其中 $n$ 为数组 $nums$ 的元素个数,$target$ 是整个数组元素和的一半。 - **空间复杂度**:$O(target)$。 +## 练习题目 + +- [0-1 背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) + + ## 参考资料 - 【资料】[背包九讲 - 崔添翼](https://github.com/tianyicui/pack) diff --git a/docs/08_dynamic_programming/08_06_knapsack_problem_02.md b/docs/08_dynamic_programming/08_06_knapsack_problem_02.md index 5563041b..eea57684 100644 --- a/docs/08_dynamic_programming/08_06_knapsack_problem_02.md +++ b/docs/08_dynamic_programming/08_06_knapsack_problem_02.md @@ -236,6 +236,10 @@ class Solution: - **时间复杂度**:$O(n \times W)$,其中 $n$ 为物品种类数量,$W$ 为背包的载重上限。 - **空间复杂度**:$O(W)$。 +## 练习题目 + +- [完全背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) + ## 参考资料 - 【资料】[背包九讲 - 崔添翼](https://github.com/tianyicui/pack) diff --git a/docs/08_dynamic_programming/08_07_knapsack_problem_03.md b/docs/08_dynamic_programming/08_07_knapsack_problem_03.md index d2a8762e..5f20fff7 100644 --- a/docs/08_dynamic_programming/08_07_knapsack_problem_03.md +++ b/docs/08_dynamic_programming/08_07_knapsack_problem_03.md @@ -204,6 +204,10 @@ class Solution: - **时间复杂度**:$O(W \times \sum \log_2{count[i]})$,其中 $W$ 为背包的载重上限,$count[i]$ 是第 $i$ 种物品的数量。 - **空间复杂度**:$O(W)$。 +## 练习题目 + +- [多重背包题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) + ## 参考资料 - 【资料】[背包九讲 - 崔添翼](https://github.com/tianyicui/pack) diff --git a/docs/08_dynamic_programming/08_08_knapsack_problem_04.md b/docs/08_dynamic_programming/08_08_knapsack_problem_04.md index 96b2bd7c..0e03ef3a 100644 --- a/docs/08_dynamic_programming/08_08_knapsack_problem_04.md +++ b/docs/08_dynamic_programming/08_08_knapsack_problem_04.md @@ -322,6 +322,11 @@ class Solution: - **时间复杂度**:$O(n \times W \times V)$,其中 $n$ 为物品分组数量,$W$ 为背包的载重上限,$V$ 为背包的容量上限。 - **空间复杂度**:$O(W \times V)$。 +## 练习题目 + +- [分组背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) +- [多维背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E7%BB%B4%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) + ## 参考资料 - 【资料】[背包九讲 - 崔添翼](https://github.com/tianyicui/pack) diff --git a/docs/08_dynamic_programming/08_09_knapsack_problem_05.md b/docs/08_dynamic_programming/08_09_knapsack_problem_05.md index 37e198e1..af0d35ba 100644 --- a/docs/08_dynamic_programming/08_09_knapsack_problem_05.md +++ b/docs/08_dynamic_programming/08_09_knapsack_problem_05.md @@ -318,6 +318,7 @@ class Solution: - **时间复杂度**:$O(n \times W)$,其中 $n$ 为物品种类数量,$W$ 为背包的载重上限。 - **空间复杂度**:$O(n \times W)$。 + ## 参考资料 - 【资料】[背包九讲 - 崔添翼](https://github.com/tianyicui/pack) diff --git a/docs/08_dynamic_programming/08_10_interval_dp.md b/docs/08_dynamic_programming/08_10_interval_dp.md index 2cf479c7..aa481ce9 100644 --- a/docs/08_dynamic_programming/08_10_interval_dp.md +++ b/docs/08_dynamic_programming/08_10_interval_dp.md @@ -377,4 +377,8 @@ class Solution: ##### 思路 1:复杂度分析 - **时间复杂度**:$O(m^3)$,其中 $m$ 为数组 $cuts$ 的元素个数。 -- **空间复杂度**:$O(m^2)$。 \ No newline at end of file +- **空间复杂度**:$O(m^2)$。 + +## 练习题目 + +- [区间 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8C%BA%E9%97%B4-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/08_dynamic_programming/08_11_tree_dp.md b/docs/08_dynamic_programming/08_11_tree_dp.md index d638ffc9..3be119d9 100644 --- a/docs/08_dynamic_programming/08_11_tree_dp.md +++ b/docs/08_dynamic_programming/08_11_tree_dp.md @@ -392,6 +392,10 @@ class Solution: - **时间复杂度**:$O(n)$。 - **空间复杂度**:$O(n)$。 +## 练习题目 + +- [树形 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E7%8A%B6%E6%80%81%E5%8E%8B%E7%BC%A9-dp-%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【题解】[C++ 容易理解的换根动态规划解法 - 最小高度树](https://leetcode.cn/problems/minimum-height-trees/solution/c-huan-gen-by-vclip-sa84/) diff --git a/docs/08_dynamic_programming/08_12_state_compression_dp.md b/docs/08_dynamic_programming/08_12_state_compression_dp.md index 74ccfd64..bf7b792e 100644 --- a/docs/08_dynamic_programming/08_12_state_compression_dp.md +++ b/docs/08_dynamic_programming/08_12_state_compression_dp.md @@ -321,3 +321,7 @@ class Solution: - **时间复杂度**:$O(2^m \times m)$,其中 $m = 2 \times numSlots$。 - **空间复杂度**:$O(2^m)$。 + +## 练习题目 + +- [状态压缩 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E7%8A%B6%E6%80%81%E5%8E%8B%E7%BC%A9-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/08_dynamic_programming/08_13_counting_dp.md b/docs/08_dynamic_programming/08_13_counting_dp.md index 98dcb5da..f5a47df4 100644 --- a/docs/08_dynamic_programming/08_13_counting_dp.md +++ b/docs/08_dynamic_programming/08_13_counting_dp.md @@ -201,3 +201,7 @@ class Solution: - **时间复杂度**:$O(n^2)$。 - **空间复杂度**:$O(n)$。 + +## 练习题目 + +- [计数 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%95%B0%E4%BD%8D-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/08_dynamic_programming/08_14_digit_dp.md b/docs/08_dynamic_programming/08_14_digit_dp.md index 54baf941..93ca076d 100644 --- a/docs/08_dynamic_programming/08_14_digit_dp.md +++ b/docs/08_dynamic_programming/08_14_digit_dp.md @@ -366,6 +366,10 @@ class Solution: - **时间复杂度**:$O(\log n)$。 - **空间复杂度**:$O(\log n)$。 +## 练习题目 + +- [数位 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%95%B0%E4%BD%8D-dp-%E9%A2%98%E7%9B%AE) + ## 参考资料 - 【文章】[AcWing 1081. 度的数量【数位DP基本概念+数位DP记忆化搜索】](https://www.acwing.com/solution/content/66855/) diff --git a/docs/08_dynamic_programming/08_15_probability_dp.md b/docs/08_dynamic_programming/08_15_probability_dp.md index b1165944..f0bb2b5e 100644 --- a/docs/08_dynamic_programming/08_15_probability_dp.md +++ b/docs/08_dynamic_programming/08_15_probability_dp.md @@ -62,9 +62,9 @@ - 其中 $dp[i]$ 对应全概率公式中的 $E(Y)$,$p[i][j]$ 对应了 $P(x_j)$,$dp[j]$ 则对应了 $E(Y \text{ | } x_j)$。 -## 3. 概率 DP 的应用 +## 练习题目 -### 3.1 +- [概率 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%A6%82%E7%8E%87-dp-%E9%A2%98%E7%9B%AE) ## 参考资料 From 0b9aa2c38dca7c9c9cf6c0ea2ffd575cdd997dd0 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 17 Jun 2025 22:14:31 +0800 Subject: [PATCH 146/158] =?UTF-8?q?=E8=A1=A5=E5=85=85=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E4=BB=8B=E7=BB=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 21 +++++++++++---------- docs/README.md | 21 +++++++++++---------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index c2ea60c9..da6f8d48 100644 --- a/README.md +++ b/README.md @@ -24,16 +24,17 @@ 本书采用算法与数据结构相结合的方法,把内容分为如下几个主要部分: -- **序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 -- **第 1 章 数组**:讲解数组的基本概念、数组的基本操作。 -- **第 2 章 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。 -- **第 3 章 堆栈、队列、哈希表**:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 -- **第 4 章 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。 -- **第 5 章 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。 -- **第 6 章 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。 -- **第 7 章 基础算法**:介绍基本的算法思想。包括枚举、递归、分治、回溯、贪心以及位运算。 -- **第 8 章 动态规划**:介绍动态规划的基础知识、各种动态规划题型的解法。 -- **题目解析**:讲解 LeetCode 上刷过的所有题目,可按照对应题号进行检索和学习。 +- **0. 序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 +- **1. 数组**:讲解数组的基本概念、数组的基本操作。 +- **2. 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。 +- **3. 堆栈、队列、哈希表**:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 +- **4. 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。 +- **5. 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。 +- **6. 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。 +- **7. 基础算法**:介绍基本的算法思想。包括枚举、递归、分治、回溯、贪心以及位运算。 +- **8. 动态规划**:介绍动态规划的基础知识、各种动态规划题型的解法。 +- **9. 附加内容**:作为全书的扩展模块。 +- **10. 题目解析**:讲解 LeetCode 上刷过的所有题目,可按照对应题号进行检索和学习。 ### 1.4 使用说明 diff --git a/docs/README.md b/docs/README.md index c2ea60c9..da6f8d48 100644 --- a/docs/README.md +++ b/docs/README.md @@ -24,16 +24,17 @@ 本书采用算法与数据结构相结合的方法,把内容分为如下几个主要部分: -- **序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 -- **第 1 章 数组**:讲解数组的基本概念、数组的基本操作。 -- **第 2 章 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。 -- **第 3 章 堆栈、队列、哈希表**:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 -- **第 4 章 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。 -- **第 5 章 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。 -- **第 6 章 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。 -- **第 7 章 基础算法**:介绍基本的算法思想。包括枚举、递归、分治、回溯、贪心以及位运算。 -- **第 8 章 动态规划**:介绍动态规划的基础知识、各种动态规划题型的解法。 -- **题目解析**:讲解 LeetCode 上刷过的所有题目,可按照对应题号进行检索和学习。 +- **0. 序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 +- **1. 数组**:讲解数组的基本概念、数组的基本操作。 +- **2. 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。 +- **3. 堆栈、队列、哈希表**:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 +- **4. 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。 +- **5. 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。 +- **6. 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。 +- **7. 基础算法**:介绍基本的算法思想。包括枚举、递归、分治、回溯、贪心以及位运算。 +- **8. 动态规划**:介绍动态规划的基础知识、各种动态规划题型的解法。 +- **9. 附加内容**:作为全书的扩展模块。 +- **10. 题目解析**:讲解 LeetCode 上刷过的所有题目,可按照对应题号进行检索和学习。 ### 1.4 使用说明 From a130e434295bcda2de1c36f0ebcf3f18e84789e4 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 17 Jun 2025 22:45:34 +0800 Subject: [PATCH 147/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/00_preface/00_04_leetcode_guide.md | 10 +++--- docs/00_preface/index.md | 16 +++++----- docs/01_array/01_01_array_basic.md | 16 +++++----- docs/01_array/01_03_array_bubble_sort.md | 6 ++-- docs/01_array/01_04_array_selection_sort.md | 2 +- docs/01_array/01_05_array_insertion_sort.md | 2 +- docs/01_array/01_06_array_shell_sort.md | 2 +- docs/01_array/01_07_array_merge_sort.md | 2 +- docs/01_array/01_08_array_quick_sort.md | 2 +- docs/01_array/01_09_array_heap_sort.md | 2 +- docs/01_array/01_10_array_counting_sort.md | 2 +- docs/01_array/01_11_array_bucket_sort.md | 2 +- docs/01_array/01_12_array_radix_sort.md | 2 +- docs/01_array/01_13_array_binary_search_01.md | 2 +- docs/01_array/01_14_array_binary_search_02.md | 2 +- docs/01_array/01_15_array_two_pointers.md | 2 +- docs/01_array/01_16_array_sliding_window.md | 2 +- docs/01_array/index.md | 32 +++++++++---------- .../02_linked_list/02_01_linked_list_basic.md | 2 +- .../02_03_linked_list_bubble_sort.md | 2 +- .../02_04_linked_list_selection_sort.md | 2 +- .../02_05_linked_list_insertion_sort.md | 2 +- .../02_06_linked_list_merge_sort.md | 2 +- .../02_07_linked_list_quick_sort.md | 2 +- .../02_08_linked_list_counting_sort.md | 2 +- .../02_09_linked_list_bucket_sort.md | 2 +- .../02_10_linked_list_radix_sort.md | 2 +- .../02_11_linked_list_two_pointers.md | 2 +- docs/02_linked_list/index.md | 22 ++++++------- .../03_01_stack_basic.md | 2 +- .../03_02_monotone_stack.md | 2 +- .../03_03_queue_basic.md | 2 +- .../03_04_priority_queue.md | 2 +- .../03_06_hash_table.md | 2 +- docs/03_stack_queue_hash_table/index.md | 12 +++---- docs/04_string/04_01_string_basic.md | 2 +- docs/04_string/04_03_string_brute_force.md | 2 +- docs/04_string/04_04_string_rabin_karp.md | 2 +- docs/04_string/04_05_string_kmp.md | 2 +- docs/04_string/04_06_string_boyer_moore.md | 2 +- docs/04_string/04_07_string_horspool.md | 2 +- docs/04_string/04_08_string_sunday.md | 2 +- docs/04_string/04_10_trie.md | 2 +- docs/04_string/index.md | 24 +++++++------- docs/05_tree/05_02_binary_tree_traverse.md | 2 +- docs/05_tree/05_03_binary_tree_reduction.md | 2 +- docs/05_tree/05_04_binary_search_tree.md | 2 +- docs/05_tree/05_05_segment_tree_01.md | 2 +- docs/05_tree/05_06_segment_tree_02.md | 2 +- docs/05_tree/05_07_binary_indexed_tree.md | 2 +- docs/05_tree/05_08_union_find.md | 2 +- docs/05_tree/index.md | 16 +++++----- docs/06_graph/06_03_graph_dfs.md | 2 +- docs/06_graph/06_04_graph_bfs.md | 2 +- .../06_05_graph_topological_sorting.md | 2 +- .../06_06_graph_minimum_spanning_tree.md | 2 +- docs/06_graph/06_07_graph_shortest_path_01.md | 2 +- docs/06_graph/06_08_graph_shortest_path_02.md | 2 +- .../06_09_graph_multi_source_shortest_path.md | 2 +- .../06_10_graph_the_second_shortest_path.md | 2 +- ..._graph_system_of_difference_constraints.md | 2 +- docs/06_graph/06_12_graph_bipartite_basic.md | 2 +- .../06_13_graph_bipartite_matching.md | 2 +- docs/06_graph/index.md | 26 +++++++-------- .../07_01_enumeration_algorithm.md | 2 +- .../07_algorithm/07_02_recursive_algorithm.md | 2 +- .../07_03_divide_and_conquer_algorithm.md | 2 +- .../07_04_backtracking_algorithm.md | 2 +- docs/07_algorithm/07_05_greedy_algorithm.md | 2 +- docs/07_algorithm/07_06_bit_operation.md | 2 +- docs/07_algorithm/index.md | 12 +++---- .../08_01_dynamic_programming_basic.md | 2 +- .../08_02_memoization_search.md | 2 +- .../08_03_linear_dp_01.md | 4 +-- .../08_04_linear_dp_02.md | 4 +-- .../08_05_knapsack_problem_01.md | 2 +- .../08_06_knapsack_problem_02.md | 2 +- .../08_07_knapsack_problem_03.md | 2 +- .../08_08_knapsack_problem_04.md | 4 +-- .../08_10_interval_dp.md | 2 +- docs/08_dynamic_programming/08_11_tree_dp.md | 2 +- .../08_12_state_compression_dp.md | 2 +- .../08_13_counting_dp.md | 2 +- docs/08_dynamic_programming/08_14_digit_dp.md | 2 +- .../08_15_probability_dp.md | 2 +- docs/08_dynamic_programming/index.md | 30 ++++++++--------- 86 files changed, 188 insertions(+), 188 deletions(-) diff --git a/docs/00_preface/00_04_leetcode_guide.md b/docs/00_preface/00_04_leetcode_guide.md index eff9a0ce..dec8242d 100644 --- a/docs/00_preface/00_04_leetcode_guide.md +++ b/docs/00_preface/00_04_leetcode_guide.md @@ -183,15 +183,15 @@ LeetCode 的题目序号并不是按照难易程度进行排序的,所以除 或者直接按照我整理的分类刷题列表进行刷题: -- 刷题列表(GitHub 版)链接:[点击打开「GitHub 版分类刷题列表」](https://github.com/itcharge/AlgoNote/blob/main/Contents/00.Introduction/05.Categories-List.md) +- 刷题列表(GitHub 版)链接:[点击打开「GitHub 版分类刷题列表」](https://github.com/ITCharge/AlgoNote/tree/main/Contents/00.Introduction/05.Categories-List.md) - 刷题列表(网页版)链接:[点击打开「网页版分类刷题列表」](https://algo.itcharge.cn/00.Introduction/05.Categories-List/) 正在准备面试、没有太多时间刷题的小伙伴,可以按照我总结的「LeetCode 面试最常考 100 题」、「LeetCode 面试最常考 200 题」进行刷题。 > **说明**:「LeetCode 面试最常考 100 题」、「LeetCode 面试最常考 200 题」是笔者根据「[CodeTop 企业题库](https://codetop.cc/home)」按频度从高到低进行筛选,并且去除了一部分 LeetCode 上没有的题目和重复题目后得到的题目清单。 -- 「LeetCode 面试最常考 100 题(GitHub 版)」链接:[点击打开「LeetCode 面试最常考 100 题(GitHub 版)」](https://github.com/itcharge/AlgoNote/blob/main/Contents/00.Introduction/06.Interview-100-List.md) -- 「LeetCode 面试最常考 200 题(GitHub 版)」链接:[点击打开「LeetCode 面试最常考 200 题(GitHub 版)」](https://github.com/itcharge/AlgoNote/blob/main/Contents/00.Introduction/07.Interview-200-List.md) +- 「LeetCode 面试最常考 100 题(GitHub 版)」链接:[点击打开「LeetCode 面试最常考 100 题(GitHub 版)」](https://github.com/ITCharge/AlgoNote/tree/main/Contents/00.Introduction/06.Interview-100-List.md) +- 「LeetCode 面试最常考 200 题(GitHub 版)」链接:[点击打开「LeetCode 面试最常考 200 题(GitHub 版)」](https://github.com/ITCharge/AlgoNote/tree/main/Contents/00.Introduction/07.Interview-200-List.md) --- @@ -282,8 +282,8 @@ LeetCode 是一个在线编程练习平台,主要用于提升算法和编程 ## 练习题目 -- [2235. 两整数相加](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/2200-2299/add-two-integers.md) -- [1929. 数组串联](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/1900-1999/concatenation-of-array.md) +- [2235. 两整数相加](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/add-two-integers.md) +- [1929. 数组串联](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/concatenation-of-array.md) ## 参考资料 diff --git a/docs/00_preface/index.md b/docs/00_preface/index.md index 0e04c4df..e640b2da 100644 --- a/docs/00_preface/index.md +++ b/docs/00_preface/index.md @@ -1,10 +1,10 @@ # 本章内容 -- [0.1 前言](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_01_preface.md) -- [0.2 算法与数据结构](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_02_data_structures_algorithms.md) -- [0.3 算法复杂度](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_03_algorithm_complexity.md) -- [0.4 LeetCode 入门与攻略](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_04_leetcode_guide.md) -- [0.5 LeetCode 题解(字典序排序,850+ 道题解)](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_05_solutions_list.md) -- [0.6 LeetCode 题解(按分类排序,推荐刷题列表 ★★★)](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md) -- [0.7 LeetCode 面试最常考 100 题(按分类排序)](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_07_interview_100_list.md) -- [0.8 LeetCode 面试最常考 200 题(按分类排序)](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_08_interview_200_list.md) \ No newline at end of file +- [0.1 前言](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_01_preface.md) +- [0.2 算法与数据结构](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_02_data_structures_algorithms.md) +- [0.3 算法复杂度](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_03_algorithm_complexity.md) +- [0.4 LeetCode 入门与攻略](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_04_leetcode_guide.md) +- [0.5 LeetCode 题解(字典序排序,850+ 道题解)](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_05_solutions_list.md) +- [0.6 LeetCode 题解(按分类排序,推荐刷题列表 ★★★)](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md) +- [0.7 LeetCode 面试最常考 100 题(按分类排序)](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_07_interview_100_list.md) +- [0.8 LeetCode 面试最常考 200 题(按分类排序)](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_08_interview_200_list.md) \ No newline at end of file diff --git a/docs/01_array/01_01_array_basic.md b/docs/01_array/01_01_array_basic.md index a667c45a..2ab3d233 100644 --- a/docs/01_array/01_01_array_basic.md +++ b/docs/01_array/01_01_array_basic.md @@ -236,14 +236,14 @@ print(arr) ## 4. 练习题目 -- [0066. 加一](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/plus-one.md) -- [0724. 寻找数组的中心下标](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0700-0799/find-pivot-index.md) -- [0189. 轮转数组](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0100-0199/rotate-array.md) -- [0048. 旋转图像](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/rotate-image.md) -- [0054. 螺旋矩阵](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/spiral-matrix.md) -- [0498. 对角线遍历](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0400-0499/diagonal-traverse.md) - -- [数组基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%95%B0%E7%BB%84%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) +- [0066. 加一](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/plus-one.md) +- [0724. 寻找数组的中心下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/find-pivot-index.md) +- [0189. 轮转数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/rotate-array.md) +- [0048. 旋转图像](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/rotate-image.md) +- [0054. 螺旋矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/spiral-matrix.md) +- [0498. 对角线遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/diagonal-traverse.md) + +- [数组基础题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%95%B0%E7%BB%84%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/01_array/01_03_array_bubble_sort.md b/docs/01_array/01_03_array_bubble_sort.md index f4c261ad..660e971c 100644 --- a/docs/01_array/01_03_array_bubble_sort.md +++ b/docs/01_array/01_03_array_bubble_sort.md @@ -109,10 +109,10 @@ class Solution: ## 练习题目 -- [0283. 移动零](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0200-0299/move-zeroes.md)(冒泡排序会超时,仅作练习) -- [0912. 排序数组](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0900-0999/sort-an-array.md)(冒泡排序会超时,仅作练习) +- [0283. 移动零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes.md)(冒泡排序会超时,仅作练习) +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md)(冒泡排序会超时,仅作练习) -- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) +- [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/01_array/01_04_array_selection_sort.md b/docs/01_array/01_04_array_selection_sort.md index a2d3147a..c58fdb4e 100644 --- a/docs/01_array/01_04_array_selection_sort.md +++ b/docs/01_array/01_04_array_selection_sort.md @@ -94,4 +94,4 @@ class Solution: ## 练习题目 -- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_05_array_insertion_sort.md b/docs/01_array/01_05_array_insertion_sort.md index a07c943d..59a83238 100644 --- a/docs/01_array/01_05_array_insertion_sort.md +++ b/docs/01_array/01_05_array_insertion_sort.md @@ -69,4 +69,4 @@ class Solution: ## 练习题目 -- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_06_array_shell_sort.md b/docs/01_array/01_06_array_shell_sort.md index e06f5b2d..3737a079 100644 --- a/docs/01_array/01_06_array_shell_sort.md +++ b/docs/01_array/01_06_array_shell_sort.md @@ -98,4 +98,4 @@ class Solution: ## 练习题目 -- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_07_array_merge_sort.md b/docs/01_array/01_07_array_merge_sort.md index 8d6d87f6..545af79f 100644 --- a/docs/01_array/01_07_array_merge_sort.md +++ b/docs/01_array/01_07_array_merge_sort.md @@ -85,4 +85,4 @@ class Solution: ## 练习题目 -- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_08_array_quick_sort.md b/docs/01_array/01_08_array_quick_sort.md index 84448d67..862a22d9 100644 --- a/docs/01_array/01_08_array_quick_sort.md +++ b/docs/01_array/01_08_array_quick_sort.md @@ -146,7 +146,7 @@ class Solution: ## 练习题目 -- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) +- [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/01_array/01_09_array_heap_sort.md b/docs/01_array/01_09_array_heap_sort.md index 44be8995..d8134ccc 100644 --- a/docs/01_array/01_09_array_heap_sort.md +++ b/docs/01_array/01_09_array_heap_sort.md @@ -380,4 +380,4 @@ print(Solution().sortArray([10, 25, 6, 8, 7, 1, 20, 23, 16, 19, 17, 3, 18, 14])) ## 练习题目 -- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_10_array_counting_sort.md b/docs/01_array/01_10_array_counting_sort.md index c4ee168d..0515ea49 100644 --- a/docs/01_array/01_10_array_counting_sort.md +++ b/docs/01_array/01_10_array_counting_sort.md @@ -72,4 +72,4 @@ class Solution: ## 练习题目 -- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_11_array_bucket_sort.md b/docs/01_array/01_11_array_bucket_sort.md index a24fc22a..b1784808 100644 --- a/docs/01_array/01_11_array_bucket_sort.md +++ b/docs/01_array/01_11_array_bucket_sort.md @@ -75,4 +75,4 @@ class Solution: ## 练习题目 -- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_12_array_radix_sort.md b/docs/01_array/01_12_array_radix_sort.md index 280a15bd..1633f966 100644 --- a/docs/01_array/01_12_array_radix_sort.md +++ b/docs/01_array/01_12_array_radix_sort.md @@ -66,4 +66,4 @@ class Solution: ## 练习题目 -- [排序算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_13_array_binary_search_01.md b/docs/01_array/01_13_array_binary_search_01.md index 80ffa955..70f38392 100644 --- a/docs/01_array/01_13_array_binary_search_01.md +++ b/docs/01_array/01_13_array_binary_search_01.md @@ -158,4 +158,4 @@ class Solution: ## 练习题目 -- [二分查找题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [二分查找题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_14_array_binary_search_02.md b/docs/01_array/01_14_array_binary_search_02.md index c8e88121..8a8682a9 100644 --- a/docs/01_array/01_14_array_binary_search_02.md +++ b/docs/01_array/01_14_array_binary_search_02.md @@ -258,7 +258,7 @@ class Solution: ## 练习题目 -- [二分查找题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E9%A2%98%E7%9B%AE) +- [二分查找题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/01_array/01_15_array_two_pointers.md b/docs/01_array/01_15_array_two_pointers.md index fae0e4b2..bd95a07e 100644 --- a/docs/01_array/01_15_array_two_pointers.md +++ b/docs/01_array/01_15_array_two_pointers.md @@ -495,7 +495,7 @@ class Solution: ## 练习题目 -- [双指针题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8F%8C%E6%8C%87%E9%92%88%E9%A2%98%E7%9B%AE) +- [双指针题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8F%8C%E6%8C%87%E9%92%88%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/01_array/01_16_array_sliding_window.md b/docs/01_array/01_16_array_sliding_window.md index aed66205..567ca086 100644 --- a/docs/01_array/01_16_array_sliding_window.md +++ b/docs/01_array/01_16_array_sliding_window.md @@ -277,7 +277,7 @@ class Solution: ## 练习题目 -- [滑动窗口题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E9%A2%98%E7%9B%AE) +- [滑动窗口题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/01_array/index.md b/docs/01_array/index.md index 36fcd3de..0117cdf2 100644 --- a/docs/01_array/index.md +++ b/docs/01_array/index.md @@ -1,18 +1,18 @@ ## 本章内容 -- [1.1 数组基础](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_01_array_basic.md) -- [1.2 数组排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_02_array_sort.md) -- [1.3 数组冒泡排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_03_array_bubble_sort.md) -- [1.4 数组选择排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_04_array_selection_sort.md) -- [1.5 数组插入排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array//01_05_array_insertion_sort.md) -- [1.6 数组希尔排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_06_array_shell_sort.md) -- [1.7 数组归并排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_07_array_merge_sort.md) -- [1.8 数组快速排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_08_array_quick_sort.md) -- [1.9 数组堆排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_09_array_heap_sort.md) -- [1.10 数组计数排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_10_array_counting_sort.md) -- [1.11 数组桶排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_11_array_bucket_sort.md) -- [1.12 数组基数排序](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_12_array_radix_sort.md) -- [1.13 数组二分查找(一)](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_13_array_binary_search_01.md) -- [1.14 数组二分查找(二)](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_14_array_binary_search_02.md) -- [1.15 数组双指针](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_15_array_two_pointers.md) -- [1.16 数组滑动窗口](https://github.com/itcharge/AlgoNote/blob/main/docs/01_array/01_16_array_sliding_window.md) \ No newline at end of file +- [1.1 数组基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_01_array_basic.md) +- [1.2 数组排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_02_array_sort.md) +- [1.3 数组冒泡排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_03_array_bubble_sort.md) +- [1.4 数组选择排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_04_array_selection_sort.md) +- [1.5 数组插入排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array//01_05_array_insertion_sort.md) +- [1.6 数组希尔排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_06_array_shell_sort.md) +- [1.7 数组归并排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_07_array_merge_sort.md) +- [1.8 数组快速排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_08_array_quick_sort.md) +- [1.9 数组堆排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_09_array_heap_sort.md) +- [1.10 数组计数排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_10_array_counting_sort.md) +- [1.11 数组桶排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_11_array_bucket_sort.md) +- [1.12 数组基数排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_12_array_radix_sort.md) +- [1.13 数组二分查找(一)](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_13_array_binary_search_01.md) +- [1.14 数组二分查找(二)](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_14_array_binary_search_02.md) +- [1.15 数组双指针](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_15_array_two_pointers.md) +- [1.16 数组滑动窗口](https://github.com/ITCharge/AlgoNote/tree/main/docs/01_array/01_16_array_sliding_window.md) \ No newline at end of file diff --git a/docs/02_linked_list/02_01_linked_list_basic.md b/docs/02_linked_list/02_01_linked_list_basic.md index 8b2d1d77..8fe03bfa 100644 --- a/docs/02_linked_list/02_01_linked_list_basic.md +++ b/docs/02_linked_list/02_01_linked_list_basic.md @@ -361,7 +361,7 @@ def removeInside(self, index): ## 练习题目 -- [链表经典题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E7%BB%8F%E5%85%B8%E9%A2%98%E7%9B%AE) +- [链表经典题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E7%BB%8F%E5%85%B8%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/02_linked_list/02_03_linked_list_bubble_sort.md b/docs/02_linked_list/02_03_linked_list_bubble_sort.md index 8d8aa916..13938287 100644 --- a/docs/02_linked_list/02_03_linked_list_bubble_sort.md +++ b/docs/02_linked_list/02_03_linked_list_bubble_sort.md @@ -48,4 +48,4 @@ class Solution: ## 练习题目 -- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_04_linked_list_selection_sort.md b/docs/02_linked_list/02_04_linked_list_selection_sort.md index 6946799b..8fb608cf 100644 --- a/docs/02_linked_list/02_04_linked_list_selection_sort.md +++ b/docs/02_linked_list/02_04_linked_list_selection_sort.md @@ -41,4 +41,4 @@ class Solution: ## 练习题目 -- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_05_linked_list_insertion_sort.md b/docs/02_linked_list/02_05_linked_list_insertion_sort.md index 12ab3574..46b62f96 100644 --- a/docs/02_linked_list/02_05_linked_list_insertion_sort.md +++ b/docs/02_linked_list/02_05_linked_list_insertion_sort.md @@ -53,4 +53,4 @@ class Solution: ## 练习题目 -- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_06_linked_list_merge_sort.md b/docs/02_linked_list/02_06_linked_list_merge_sort.md index 0c63db55..b9f621c7 100644 --- a/docs/02_linked_list/02_06_linked_list_merge_sort.md +++ b/docs/02_linked_list/02_06_linked_list_merge_sort.md @@ -64,4 +64,4 @@ class Solution: ## 练习题目 -- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_07_linked_list_quick_sort.md b/docs/02_linked_list/02_07_linked_list_quick_sort.md index d61d9bed..17c16c7f 100644 --- a/docs/02_linked_list/02_07_linked_list_quick_sort.md +++ b/docs/02_linked_list/02_07_linked_list_quick_sort.md @@ -50,4 +50,4 @@ class Solution: ## 练习题目 -- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_08_linked_list_counting_sort.md b/docs/02_linked_list/02_08_linked_list_counting_sort.md index 41b70bf9..1fa8311f 100644 --- a/docs/02_linked_list/02_08_linked_list_counting_sort.md +++ b/docs/02_linked_list/02_08_linked_list_counting_sort.md @@ -54,4 +54,4 @@ class Solution: ## 练习题目 -- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_09_linked_list_bucket_sort.md b/docs/02_linked_list/02_09_linked_list_bucket_sort.md index f51b6c1d..8ae6f8e3 100644 --- a/docs/02_linked_list/02_09_linked_list_bucket_sort.md +++ b/docs/02_linked_list/02_09_linked_list_bucket_sort.md @@ -112,4 +112,4 @@ class Solution: ## 练习题目 -- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_10_linked_list_radix_sort.md b/docs/02_linked_list/02_10_linked_list_radix_sort.md index 328563af..8ff70d47 100644 --- a/docs/02_linked_list/02_10_linked_list_radix_sort.md +++ b/docs/02_linked_list/02_10_linked_list_radix_sort.md @@ -53,4 +53,4 @@ class Solution: ## 练习题目 -- [链表排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_11_linked_list_two_pointers.md b/docs/02_linked_list/02_11_linked_list_two_pointers.md index bb6b2e10..1bedb559 100644 --- a/docs/02_linked_list/02_11_linked_list_two_pointers.md +++ b/docs/02_linked_list/02_11_linked_list_two_pointers.md @@ -409,4 +409,4 @@ class Solution: ## 练习题目 -- [链表双指针题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E5%8F%8C%E6%8C%87%E9%92%88%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [链表双指针题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E5%8F%8C%E6%8C%87%E9%92%88%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/index.md b/docs/02_linked_list/index.md index 50ef2cfb..9e76ebae 100644 --- a/docs/02_linked_list/index.md +++ b/docs/02_linked_list/index.md @@ -1,13 +1,13 @@ ## 本章内容 -- [2.1 链表基础](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_01_linked_list_basic.md) -- [2.2 链表排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_02_linked_list_sort.md) -- [2.3 链表冒泡排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_03_linked_list_bubble_sort.md) -- [2.4 链表选择排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_04_linked_list_selection_sort.md) -- [2.5 链表插入排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_05_linked_list_insertion_sort.md) -- [2.6 链表归并排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_06_linked_list_merge_sort.md) -- [2.7 链表快速排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_07_linked_list_quick_sort.md) -- [2.8 链表计数排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_08_linked_list_counting_sort.md) -- [2.9 链表桶排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_09_linked_list_bucket_sort.md) -- [2.10 链表基数排序](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_10_linked_list_radix_sort.md) -- [2.11 链表双指针](https://github.com/itcharge/AlgoNote/blob/main/docs/02_linked_list/02_11_linked_list_two_pointers.md) +- [2.1 链表基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/02_linked_list/02_01_linked_list_basic.md) +- [2.2 链表排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/02_linked_list/02_02_linked_list_sort.md) +- [2.3 链表冒泡排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/02_linked_list/02_03_linked_list_bubble_sort.md) +- [2.4 链表选择排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/02_linked_list/02_04_linked_list_selection_sort.md) +- [2.5 链表插入排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/02_linked_list/02_05_linked_list_insertion_sort.md) +- [2.6 链表归并排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/02_linked_list/02_06_linked_list_merge_sort.md) +- [2.7 链表快速排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/02_linked_list/02_07_linked_list_quick_sort.md) +- [2.8 链表计数排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/02_linked_list/02_08_linked_list_counting_sort.md) +- [2.9 链表桶排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/02_linked_list/02_09_linked_list_bucket_sort.md) +- [2.10 链表基数排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/02_linked_list/02_10_linked_list_radix_sort.md) +- [2.11 链表双指针](https://github.com/ITCharge/AlgoNote/tree/main/docs/02_linked_list/02_11_linked_list_two_pointers.md) diff --git a/docs/03_stack_queue_hash_table/03_01_stack_basic.md b/docs/03_stack_queue_hash_table/03_01_stack_basic.md index d2497f49..c1e02c3b 100644 --- a/docs/03_stack_queue_hash_table/03_01_stack_basic.md +++ b/docs/03_stack_queue_hash_table/03_01_stack_basic.md @@ -350,7 +350,7 @@ class Solution: ## 练习题目 -- [堆栈基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%A0%86%E6%A0%88%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) +- [堆栈基础题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%A0%86%E6%A0%88%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/03_02_monotone_stack.md b/docs/03_stack_queue_hash_table/03_02_monotone_stack.md index 01ed415d..8d6db4b7 100644 --- a/docs/03_stack_queue_hash_table/03_02_monotone_stack.md +++ b/docs/03_stack_queue_hash_table/03_02_monotone_stack.md @@ -270,7 +270,7 @@ class Solution: ## 练习题目 -- [单调栈题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E8%B0%83%E6%A0%88) +- [单调栈题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E8%B0%83%E6%A0%88) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/03_03_queue_basic.md b/docs/03_stack_queue_hash_table/03_03_queue_basic.md index ad581a16..835a6779 100644 --- a/docs/03_stack_queue_hash_table/03_03_queue_basic.md +++ b/docs/03_stack_queue_hash_table/03_03_queue_basic.md @@ -329,7 +329,7 @@ class Queue: ## 练习题目 -- [队列基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%98%9F%E5%88%97%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) +- [队列基础题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%98%9F%E5%88%97%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/03_04_priority_queue.md b/docs/03_stack_queue_hash_table/03_04_priority_queue.md index ccdd2686..9ef6ed69 100644 --- a/docs/03_stack_queue_hash_table/03_04_priority_queue.md +++ b/docs/03_stack_queue_hash_table/03_04_priority_queue.md @@ -393,7 +393,7 @@ class Solution: ## 练习题目 -- [优先队列题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BC%98%E5%85%88%E9%98%9F%E5%88%97%E9%A2%98%E7%9B%AE) +- [优先队列题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BC%98%E5%85%88%E9%98%9F%E5%88%97%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/03_06_hash_table.md b/docs/03_stack_queue_hash_table/03_06_hash_table.md index abc39dce..302b2200 100644 --- a/docs/03_stack_queue_hash_table/03_06_hash_table.md +++ b/docs/03_stack_queue_hash_table/03_06_hash_table.md @@ -155,7 +155,7 @@ $343246_{13} = 3 \times 13^5 + 4 \times 13^4 + 3 \times 13^3 + 2 \times 13^2 + 4 ## 练习题目 -- [哈希表题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%93%88%E5%B8%8C%E8%A1%A8%E9%A2%98%E7%9B%AE) +- [哈希表题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%93%88%E5%B8%8C%E8%A1%A8%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/index.md b/docs/03_stack_queue_hash_table/index.md index eef67253..06565851 100644 --- a/docs/03_stack_queue_hash_table/index.md +++ b/docs/03_stack_queue_hash_table/index.md @@ -1,8 +1,8 @@ ## 本章内容 -- [3.1 堆栈基础](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_01_stack_basic.md) -- [3.2 单调栈](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_02_monotone_stack.md) -- [3.3 队列基础](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_03_queue_basic.md) -- [3.4 优先队列](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_04_priority_queue.md) -- [3.5 双端队列](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_05_bidirectional_queue.md) -- [3.6 哈希表](https://github.com/itcharge/AlgoNote/blob/main/docs/03_stack_queue_hash_table/03_06_hash_table.md) \ No newline at end of file +- [3.1 堆栈基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_01_stack_basic.md) +- [3.2 单调栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_02_monotone_stack.md) +- [3.3 队列基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_03_queue_basic.md) +- [3.4 优先队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_04_priority_queue.md) +- [3.5 双端队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_05_bidirectional_queue.md) +- [3.6 哈希表](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_06_hash_table.md) \ No newline at end of file diff --git a/docs/04_string/04_01_string_basic.md b/docs/04_string/04_01_string_basic.md index 12e00158..62a47516 100644 --- a/docs/04_string/04_01_string_basic.md +++ b/docs/04_string/04_01_string_basic.md @@ -181,7 +181,7 @@ ASCII 编码可以解决以英语为主的语言,可是无法满足中文编 ## 练习题目 -- [字符串基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) +- [字符串基础题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_03_string_brute_force.md b/docs/04_string/04_03_string_brute_force.md index 4daafa39..88964803 100644 --- a/docs/04_string/04_03_string_brute_force.md +++ b/docs/04_string/04_03_string_brute_force.md @@ -47,7 +47,7 @@ BF 算法非常简单,容易理解,但其效率很低。主要是因为在 ## 练习题目 -- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) +- [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_04_string_rabin_karp.md b/docs/04_string/04_04_string_rabin_karp.md index 5600761d..0a6bcb1b 100644 --- a/docs/04_string/04_04_string_rabin_karp.md +++ b/docs/04_string/04_04_string_rabin_karp.md @@ -98,7 +98,7 @@ RK 算法可以看做是 BF 算法的一种改进。在 BF 算法中,每一个 ## 练习题目 -- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) +- [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_05_string_kmp.md b/docs/04_string/04_05_string_kmp.md index abc82ee6..cd120ce3 100644 --- a/docs/04_string/04_05_string_kmp.md +++ b/docs/04_string/04_05_string_kmp.md @@ -146,7 +146,7 @@ print(kmp("ababbbbaaabbbaaa", "bbbb")) ## 练习题目 -- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) +- [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_06_string_boyer_moore.md b/docs/04_string/04_06_string_boyer_moore.md index d8ea0967..78315d49 100644 --- a/docs/04_string/04_06_string_boyer_moore.md +++ b/docs/04_string/04_06_string_boyer_moore.md @@ -325,7 +325,7 @@ print(boyerMoore("", "")) ## 练习题目 -- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) +- [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_07_string_horspool.md b/docs/04_string/04_07_string_horspool.md index d15ef07d..33a5938f 100644 --- a/docs/04_string/04_07_string_horspool.md +++ b/docs/04_string/04_07_string_horspool.md @@ -98,7 +98,7 @@ print(horspool("abbcfdddbddcaddebc", "bcf")) ## 练习题目 -- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) +- [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_08_string_sunday.md b/docs/04_string/04_08_string_sunday.md index cbcb64fd..fc1c4ae7 100644 --- a/docs/04_string/04_08_string_sunday.md +++ b/docs/04_string/04_08_string_sunday.md @@ -104,4 +104,4 @@ print(sunday("abbcfdddbddcaddebc", "bcf")) ## 练习题目 -- [单模式串匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/04_string/04_10_trie.md b/docs/04_string/04_10_trie.md index 2a959cdb..657dfd6f 100644 --- a/docs/04_string/04_10_trie.md +++ b/docs/04_string/04_10_trie.md @@ -214,7 +214,7 @@ class Trie: # 字典树 ## 练习题目 -- [字典树题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%AD%97%E5%85%B8%E6%A0%91%E9%A2%98%E7%9B%AE) +- [字典树题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%AD%97%E5%85%B8%E6%A0%91%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/index.md b/docs/04_string/index.md index dc59f620..831e5155 100644 --- a/docs/04_string/index.md +++ b/docs/04_string/index.md @@ -1,14 +1,14 @@ ## 本章内容 -- [4.1 字符串基础](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_01_string_basic.md) -- [4.2 单模式串匹配](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_02_string_single_pattern_matching.md) -- [4.3 Brute Force 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_03_string_brute_force.md) -- [4.4 Rabin Karp 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_04_string_rabin_karp.md) -- [4.5 KMP 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_05_string_kmp.md) -- [4.6 Boyer Moore 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_06_string_boyer_moore.md) -- [4.7 Horspool 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_07_string_horspool.md) -- [4.8 Sunday 算法](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_08_string_sunday.md) -- [4.9 多模式串匹配](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_09_string_multi_pattern_matching.md) -- [4.10 字典树](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_10_trie.md) -- [4.11 AC 自动机](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_11_ac_automaton.md) -- [4.12 后缀数组](https://github.com/itcharge/AlgoNote/blob/main/docs/04_string/04_12_suffix_array.md) +- [4.1 字符串基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_01_string_basic.md) +- [4.2 单模式串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_02_string_single_pattern_matching.md) +- [4.3 Brute Force 算法](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_03_string_brute_force.md) +- [4.4 Rabin Karp 算法](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_04_string_rabin_karp.md) +- [4.5 KMP 算法](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_05_string_kmp.md) +- [4.6 Boyer Moore 算法](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_06_string_boyer_moore.md) +- [4.7 Horspool 算法](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_07_string_horspool.md) +- [4.8 Sunday 算法](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_08_string_sunday.md) +- [4.9 多模式串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_09_string_multi_pattern_matching.md) +- [4.10 字典树](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_10_trie.md) +- [4.11 AC 自动机](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_11_ac_automaton.md) +- [4.12 后缀数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/04_string/04_12_suffix_array.md) diff --git a/docs/05_tree/05_02_binary_tree_traverse.md b/docs/05_tree/05_02_binary_tree_traverse.md index 48bfee7e..18bee4dd 100644 --- a/docs/05_tree/05_02_binary_tree_traverse.md +++ b/docs/05_tree/05_02_binary_tree_traverse.md @@ -309,7 +309,7 @@ class Solution: ## 练习题目 -- [二叉树的遍历题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%81%8D%E5%8E%86%E9%A2%98%E7%9B%AE) +- [二叉树的遍历题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%81%8D%E5%8E%86%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/05_tree/05_03_binary_tree_reduction.md b/docs/05_tree/05_03_binary_tree_reduction.md index aa8ae7d9..5dfdd559 100644 --- a/docs/05_tree/05_03_binary_tree_reduction.md +++ b/docs/05_tree/05_03_binary_tree_reduction.md @@ -161,7 +161,7 @@ class Solution: ## 练习题目 -- [二叉树的还原题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BF%98%E5%8E%9F%E9%A2%98%E7%9B%AE) +- [二叉树的还原题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BF%98%E5%8E%9F%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/05_tree/05_04_binary_search_tree.md b/docs/05_tree/05_04_binary_search_tree.md index 36aa3d4c..3b05db9e 100644 --- a/docs/05_tree/05_04_binary_search_tree.md +++ b/docs/05_tree/05_04_binary_search_tree.md @@ -191,7 +191,7 @@ class Solution: ## 练习题目 -- [二叉搜索树题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E9%A2%98%E7%9B%AE) +- [二叉搜索树题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/05_tree/05_05_segment_tree_01.md b/docs/05_tree/05_05_segment_tree_01.md index 14047e44..3b2d22bc 100644 --- a/docs/05_tree/05_05_segment_tree_01.md +++ b/docs/05_tree/05_05_segment_tree_01.md @@ -327,7 +327,7 @@ class SegmentTree: ## 练习题目 -- [线段树题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E7%BA%BF%E6%AE%B5%E6%A0%91%E9%A2%98%E7%9B%AE) +- [线段树题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E7%BA%BF%E6%AE%B5%E6%A0%91%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/05_tree/05_06_segment_tree_02.md b/docs/05_tree/05_06_segment_tree_02.md index cf9cae8c..7851b63f 100644 --- a/docs/05_tree/05_06_segment_tree_02.md +++ b/docs/05_tree/05_06_segment_tree_02.md @@ -189,7 +189,7 @@ class SegmentTree: ## 练习题目 -- [线段树题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E7%BA%BF%E6%AE%B5%E6%A0%91%E9%A2%98%E7%9B%AE) +- [线段树题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E7%BA%BF%E6%AE%B5%E6%A0%91%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/05_tree/05_07_binary_indexed_tree.md b/docs/05_tree/05_07_binary_indexed_tree.md index 758b3f4f..82638306 100644 --- a/docs/05_tree/05_07_binary_indexed_tree.md +++ b/docs/05_tree/05_07_binary_indexed_tree.md @@ -24,7 +24,7 @@ ## 练习题目 -- [树状数组题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%A0%91%E7%8A%B6%E6%95%B0%E7%BB%84%E9%A2%98%E7%9B%AE) +- [树状数组题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%A0%91%E7%8A%B6%E6%95%B0%E7%BB%84%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/05_tree/05_08_union_find.md b/docs/05_tree/05_08_union_find.md index 508337c5..9ba774f4 100644 --- a/docs/05_tree/05_08_union_find.md +++ b/docs/05_tree/05_08_union_find.md @@ -563,7 +563,7 @@ class Solution: ## 练习题目 -- [并查集题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%B9%B6%E6%9F%A5%E9%9B%86%E9%A2%98%E7%9B%AE) +- [并查集题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%B9%B6%E6%9F%A5%E9%9B%86%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/05_tree/index.md b/docs/05_tree/index.md index 9ddb2c7a..80ec4609 100644 --- a/docs/05_tree/index.md +++ b/docs/05_tree/index.md @@ -1,10 +1,10 @@ ## 本章内容 -- [5.1 树与二叉树基础](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_01_tree_basic.md) -- [5.2 二叉树的遍历](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_02_binary_tree_traverse.md) -- [5.3 二叉树的还原](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_03_binary_tree_reduction.md) -- [5.4 二叉搜索树](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_04_binary_search_tree.md) -- [5.5 线段树(一)](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_05_segment_tree_01.md) -- [5.6 线段树(二)](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_06_segment_tree_02.md) -- [5.7 树状数组](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_07_binary_indexed_tree.md) -- [5.8 并查集](https://github.com/itcharge/AlgoNote/blob/main/docs/05_tree/05_08_union_find.md) \ No newline at end of file +- [5.1 树与二叉树基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/05_tree/05_01_tree_basic.md) +- [5.2 二叉树的遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/05_tree/05_02_binary_tree_traverse.md) +- [5.3 二叉树的还原](https://github.com/ITCharge/AlgoNote/tree/main/docs/05_tree/05_03_binary_tree_reduction.md) +- [5.4 二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/05_tree/05_04_binary_search_tree.md) +- [5.5 线段树(一)](https://github.com/ITCharge/AlgoNote/tree/main/docs/05_tree/05_05_segment_tree_01.md) +- [5.6 线段树(二)](https://github.com/ITCharge/AlgoNote/tree/main/docs/05_tree/05_06_segment_tree_02.md) +- [5.7 树状数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/05_tree/05_07_binary_indexed_tree.md) +- [5.8 并查集](https://github.com/ITCharge/AlgoNote/tree/main/docs/05_tree/05_08_union_find.md) \ No newline at end of file diff --git a/docs/06_graph/06_03_graph_dfs.md b/docs/06_graph/06_03_graph_dfs.md index fca48a23..db8adafd 100644 --- a/docs/06_graph/06_03_graph_dfs.md +++ b/docs/06_graph/06_03_graph_dfs.md @@ -326,7 +326,7 @@ class Solution: ## 练习题目 -- [图的深度优先搜索题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) +- [图的深度优先搜索题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/06_graph/06_04_graph_bfs.md b/docs/06_graph/06_04_graph_bfs.md index ce718e4c..8d3023ff 100644 --- a/docs/06_graph/06_04_graph_bfs.md +++ b/docs/06_graph/06_04_graph_bfs.md @@ -271,7 +271,7 @@ class Solution: ## 练习题目 -- [图的广度优先搜索题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) +- [图的广度优先搜索题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/06_graph/06_05_graph_topological_sorting.md b/docs/06_graph/06_05_graph_topological_sorting.md index 2a72c826..e99435c4 100644 --- a/docs/06_graph/06_05_graph_topological_sorting.md +++ b/docs/06_graph/06_05_graph_topological_sorting.md @@ -347,4 +347,4 @@ class Solution: ## 练习题目 -- [拓扑排序题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%8B%93%E6%89%91%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [拓扑排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%8B%93%E6%89%91%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_06_graph_minimum_spanning_tree.md b/docs/06_graph/06_06_graph_minimum_spanning_tree.md index 2e08faab..e07e7449 100644 --- a/docs/06_graph/06_06_graph_minimum_spanning_tree.md +++ b/docs/06_graph/06_06_graph_minimum_spanning_tree.md @@ -212,4 +212,4 @@ Kruskal 算法的时间复杂度主要取决于以下几个因素: ## 练习题目 -- [图的最小生成树题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%9C%80%E5%B0%8F%E7%94%9F%E6%88%90%E6%A0%91%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [图的最小生成树题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%9C%80%E5%B0%8F%E7%94%9F%E6%88%90%E6%A0%91%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_07_graph_shortest_path_01.md b/docs/06_graph/06_07_graph_shortest_path_01.md index 6227e419..2989d1eb 100644 --- a/docs/06_graph/06_07_graph_shortest_path_01.md +++ b/docs/06_graph/06_07_graph_shortest_path_01.md @@ -205,4 +205,4 @@ for i in range(1, n + 1): ## 练习题目 -- [单源最短路径题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [单源最短路径题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_08_graph_shortest_path_02.md b/docs/06_graph/06_08_graph_shortest_path_02.md index 4dad32f2..28199d5d 100644 --- a/docs/06_graph/06_08_graph_shortest_path_02.md +++ b/docs/06_graph/06_08_graph_shortest_path_02.md @@ -162,4 +162,4 @@ def spfa(graph, n, source): ## 练习题目 -- [单源最短路径题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [单源最短路径题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_09_graph_multi_source_shortest_path.md b/docs/06_graph/06_09_graph_multi_source_shortest_path.md index 8aaadbda..dbad8913 100644 --- a/docs/06_graph/06_09_graph_multi_source_shortest_path.md +++ b/docs/06_graph/06_09_graph_multi_source_shortest_path.md @@ -203,4 +203,4 @@ def johnson(graph, n): ## 练习题目 -- [多源最短路径题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [多源最短路径题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_10_graph_the_second_shortest_path.md b/docs/06_graph/06_10_graph_the_second_shortest_path.md index 5567b2c3..6274033d 100644 --- a/docs/06_graph/06_10_graph_the_second_shortest_path.md +++ b/docs/06_graph/06_10_graph_the_second_shortest_path.md @@ -132,4 +132,4 @@ print(f"次短路径长度: {result}") ## 练习题目 -- [次短路径题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%AC%A1%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [次短路径题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%AC%A1%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_11_graph_system_of_difference_constraints.md b/docs/06_graph/06_11_graph_system_of_difference_constraints.md index 4e1a57ec..e95a5370 100644 --- a/docs/06_graph/06_11_graph_system_of_difference_constraints.md +++ b/docs/06_graph/06_11_graph_system_of_difference_constraints.md @@ -121,4 +121,4 @@ def solve_difference_constraints(n, constraints): ## 练习题目 -- [差分约束系统题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%B7%AE%E5%88%86%E7%BA%A6%E6%9D%9F%E7%B3%BB%E7%BB%9F) \ No newline at end of file +- [差分约束系统题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%B7%AE%E5%88%86%E7%BA%A6%E6%9D%9F%E7%B3%BB%E7%BB%9F) \ No newline at end of file diff --git a/docs/06_graph/06_12_graph_bipartite_basic.md b/docs/06_graph/06_12_graph_bipartite_basic.md index 9931130b..43377af5 100644 --- a/docs/06_graph/06_12_graph_bipartite_basic.md +++ b/docs/06_graph/06_12_graph_bipartite_basic.md @@ -73,4 +73,4 @@ def is_bipartite(graph): ## 练习题目 -- [二分图基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E5%9B%BE%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [二分图基础题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E5%9B%BE%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_13_graph_bipartite_matching.md b/docs/06_graph/06_13_graph_bipartite_matching.md index a0ffd2ea..562cdc8b 100644 --- a/docs/06_graph/06_13_graph_bipartite_matching.md +++ b/docs/06_graph/06_13_graph_bipartite_matching.md @@ -278,4 +278,4 @@ def max_flow_bipartite_matching(graph, left_size, right_size): ## 练习题目 -- [二分图最大匹配题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E5%9B%BE%E6%9C%80%E5%A4%A7%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [二分图最大匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E5%9B%BE%E6%9C%80%E5%A4%A7%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/index.md b/docs/06_graph/index.md index 4bbb8266..1957ead9 100644 --- a/docs/06_graph/index.md +++ b/docs/06_graph/index.md @@ -1,15 +1,15 @@ ## 本章内容 -- [6.1 图的定义和分类](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_01_graph_basic.md) -- [6.2 图的存储结构和问题应用](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_02_graph_structure.md) -- [图的深度优先搜索](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_03_graph_dfs.md) -- [图的广度优先搜索](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_04_graph_bfs.md) -- [图的拓扑排序](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_05_graph_topological_sorting.md) -- [图的最小生成树](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_06_graph_minimum_spanning_tree.md) -- [单源最短路径(一)](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_07_graph_shortest_path_01.md) -- [单源最短路径(二)](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_08_graph_shortest_path_02.md) -- [多源最短路径](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_09_graph_multi_source_shortest_path.md) -- [次短路径](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_10_graph_the_second_shortest_path.md) -- [差分约束系统](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_11_graph_system_of_difference_constraints.md) -- [二分图基础](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_12_graph_bipartite_basic.md) -- [二分图最大匹配](https://github.com/itcharge/AlgoNote/blob/main/docs/06_graph/06_13_graph_bipartite_matching.md) +- [6.1 图的定义和分类](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_01_graph_basic.md) +- [6.2 图的存储结构和问题应用](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_02_graph_structure.md) +- [图的深度优先搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_03_graph_dfs.md) +- [图的广度优先搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_04_graph_bfs.md) +- [图的拓扑排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_05_graph_topological_sorting.md) +- [图的最小生成树](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_06_graph_minimum_spanning_tree.md) +- [单源最短路径(一)](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_07_graph_shortest_path_01.md) +- [单源最短路径(二)](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_08_graph_shortest_path_02.md) +- [多源最短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_09_graph_multi_source_shortest_path.md) +- [次短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_10_graph_the_second_shortest_path.md) +- [差分约束系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_11_graph_system_of_difference_constraints.md) +- [二分图基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_12_graph_bipartite_basic.md) +- [二分图最大匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_13_graph_bipartite_matching.md) diff --git a/docs/07_algorithm/07_01_enumeration_algorithm.md b/docs/07_algorithm/07_01_enumeration_algorithm.md index 34589605..f791c42c 100644 --- a/docs/07_algorithm/07_01_enumeration_algorithm.md +++ b/docs/07_algorithm/07_01_enumeration_algorithm.md @@ -281,4 +281,4 @@ class Solution: ## 练习题目 -- [枚举算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%9E%9A%E4%B8%BE%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [枚举算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%9E%9A%E4%B8%BE%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/07_algorithm/07_02_recursive_algorithm.md b/docs/07_algorithm/07_02_recursive_algorithm.md index a663b729..46e4548d 100644 --- a/docs/07_algorithm/07_02_recursive_algorithm.md +++ b/docs/07_algorithm/07_02_recursive_algorithm.md @@ -317,7 +317,7 @@ class Solution: ## 练习题目 -- [递归算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%80%92%E5%BD%92%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) +- [递归算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%80%92%E5%BD%92%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md b/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md index 102524ce..6377477a 100644 --- a/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md +++ b/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md @@ -248,7 +248,7 @@ class Solution: ## 练习题目 -- [分治算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E6%B2%BB%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) +- [分治算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E6%B2%BB%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/07_algorithm/07_04_backtracking_algorithm.md b/docs/07_algorithm/07_04_backtracking_algorithm.md index 29b61bd3..7b18ed3d 100644 --- a/docs/07_algorithm/07_04_backtracking_algorithm.md +++ b/docs/07_algorithm/07_04_backtracking_algorithm.md @@ -399,7 +399,7 @@ class Solution: ## 练习题目 -- [回溯算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%9B%9E%E6%BA%AF%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) +- [回溯算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%9E%E6%BA%AF%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/07_algorithm/07_05_greedy_algorithm.md b/docs/07_algorithm/07_05_greedy_algorithm.md index 1dbc9c70..6b33e470 100644 --- a/docs/07_algorithm/07_05_greedy_algorithm.md +++ b/docs/07_algorithm/07_05_greedy_algorithm.md @@ -233,7 +233,7 @@ class Solution: ## 练习题目 -- [贪心算法题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) +- [贪心算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/07_algorithm/07_06_bit_operation.md b/docs/07_algorithm/07_06_bit_operation.md index c8036426..f9c67ff6 100644 --- a/docs/07_algorithm/07_06_bit_operation.md +++ b/docs/07_algorithm/07_06_bit_operation.md @@ -312,7 +312,7 @@ class Solution: ## 练习题目 -- [位运算题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E4%BD%8D%E8%BF%90%E7%AE%97%E9%A2%98%E7%9B%AE) +- [位运算题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BD%8D%E8%BF%90%E7%AE%97%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/07_algorithm/index.md b/docs/07_algorithm/index.md index 7e6a67f5..1e2d7463 100644 --- a/docs/07_algorithm/index.md +++ b/docs/07_algorithm/index.md @@ -1,8 +1,8 @@ ## 本章内容 -- [7.1 枚举算法](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_01_enumeration_algorithm.md) -- [7.2 递归算法](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_02_recursive_algorithm.md) -- [7.3 分治算法](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md) -- [7.4 回溯算法](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_04_backtracking_algorithm.md) -- [7.5 贪心算法](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_05_greedy_algorithm.md) -- [7.6 位运算](https://github.com/itcharge/AlgoNote/blob/main/docs/07_algorithm/07_06_bit_operation.md) +- [7.1 枚举算法](https://github.com/ITCharge/AlgoNote/tree/main/docs/07_algorithm/07_01_enumeration_algorithm.md) +- [7.2 递归算法](https://github.com/ITCharge/AlgoNote/tree/main/docs/07_algorithm/07_02_recursive_algorithm.md) +- [7.3 分治算法](https://github.com/ITCharge/AlgoNote/tree/main/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md) +- [7.4 回溯算法](https://github.com/ITCharge/AlgoNote/tree/main/docs/07_algorithm/07_04_backtracking_algorithm.md) +- [7.5 贪心算法](https://github.com/ITCharge/AlgoNote/tree/main/docs/07_algorithm/07_05_greedy_algorithm.md) +- [7.6 位运算](https://github.com/ITCharge/AlgoNote/tree/main/docs/07_algorithm/07_06_bit_operation.md) diff --git a/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md b/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md index 122ed57f..00fd10d4 100644 --- a/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md +++ b/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md @@ -386,7 +386,7 @@ class Solution: ## 题目练习 -- [动态规划基础题目](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) +- [动态规划基础题目](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_02_memoization_search.md b/docs/08_dynamic_programming/08_02_memoization_search.md index d05a5b91..3143d118 100644 --- a/docs/08_dynamic_programming/08_02_memoization_search.md +++ b/docs/08_dynamic_programming/08_02_memoization_search.md @@ -279,7 +279,7 @@ class Solution: ## 题目练习 -- [记忆化搜索题目](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E8%AE%B0%E5%BF%86%E5%8C%96%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) +- [记忆化搜索题目](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E8%AE%B0%E5%BF%86%E5%8C%96%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_03_linear_dp_01.md b/docs/08_dynamic_programming/08_03_linear_dp_01.md index 5815ddce..af6483e1 100644 --- a/docs/08_dynamic_programming/08_03_linear_dp_01.md +++ b/docs/08_dynamic_programming/08_03_linear_dp_01.md @@ -741,8 +741,8 @@ class Solution: ## 题目练习 -- [单串线性 DP 问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) -- [双串线性 DP 问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8F%8C%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) +- [单串线性 DP 问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) +- [双串线性 DP 问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8F%8C%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_04_linear_dp_02.md b/docs/08_dynamic_programming/08_04_linear_dp_02.md index 18ceacfc..b74395cf 100644 --- a/docs/08_dynamic_programming/08_04_linear_dp_02.md +++ b/docs/08_dynamic_programming/08_04_linear_dp_02.md @@ -372,8 +372,8 @@ class Solution: ## 题目练习 -- [矩阵线性 DP 问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E7%9F%A9%E9%98%B5%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) -- [矩阵线性 DP 问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%97%A0%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) +- [矩阵线性 DP 问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E7%9F%A9%E9%98%B5%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) +- [矩阵线性 DP 问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%97%A0%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_05_knapsack_problem_01.md b/docs/08_dynamic_programming/08_05_knapsack_problem_01.md index f30c0d2d..ea0d76c0 100644 --- a/docs/08_dynamic_programming/08_05_knapsack_problem_01.md +++ b/docs/08_dynamic_programming/08_05_knapsack_problem_01.md @@ -264,7 +264,7 @@ class Solution: ## 练习题目 -- [0-1 背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) +- [0-1 背包问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_06_knapsack_problem_02.md b/docs/08_dynamic_programming/08_06_knapsack_problem_02.md index eea57684..4ec3534a 100644 --- a/docs/08_dynamic_programming/08_06_knapsack_problem_02.md +++ b/docs/08_dynamic_programming/08_06_knapsack_problem_02.md @@ -238,7 +238,7 @@ class Solution: ## 练习题目 -- [完全背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) +- [完全背包问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_07_knapsack_problem_03.md b/docs/08_dynamic_programming/08_07_knapsack_problem_03.md index 5f20fff7..10edb99b 100644 --- a/docs/08_dynamic_programming/08_07_knapsack_problem_03.md +++ b/docs/08_dynamic_programming/08_07_knapsack_problem_03.md @@ -206,7 +206,7 @@ class Solution: ## 练习题目 -- [多重背包题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) +- [多重背包题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_08_knapsack_problem_04.md b/docs/08_dynamic_programming/08_08_knapsack_problem_04.md index 0e03ef3a..59fde6a5 100644 --- a/docs/08_dynamic_programming/08_08_knapsack_problem_04.md +++ b/docs/08_dynamic_programming/08_08_knapsack_problem_04.md @@ -324,8 +324,8 @@ class Solution: ## 练习题目 -- [分组背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) -- [多维背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E7%BB%B4%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) +- [分组背包问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) +- [多维背包问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E7%BB%B4%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_10_interval_dp.md b/docs/08_dynamic_programming/08_10_interval_dp.md index aa481ce9..2d62e25a 100644 --- a/docs/08_dynamic_programming/08_10_interval_dp.md +++ b/docs/08_dynamic_programming/08_10_interval_dp.md @@ -381,4 +381,4 @@ class Solution: ## 练习题目 -- [区间 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8C%BA%E9%97%B4-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [区间 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8C%BA%E9%97%B4-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/08_dynamic_programming/08_11_tree_dp.md b/docs/08_dynamic_programming/08_11_tree_dp.md index 3be119d9..8b9e682e 100644 --- a/docs/08_dynamic_programming/08_11_tree_dp.md +++ b/docs/08_dynamic_programming/08_11_tree_dp.md @@ -394,7 +394,7 @@ class Solution: ## 练习题目 -- [树形 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E7%8A%B6%E6%80%81%E5%8E%8B%E7%BC%A9-dp-%E9%A2%98%E7%9B%AE) +- [树形 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E7%8A%B6%E6%80%81%E5%8E%8B%E7%BC%A9-dp-%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_12_state_compression_dp.md b/docs/08_dynamic_programming/08_12_state_compression_dp.md index bf7b792e..da531d88 100644 --- a/docs/08_dynamic_programming/08_12_state_compression_dp.md +++ b/docs/08_dynamic_programming/08_12_state_compression_dp.md @@ -324,4 +324,4 @@ class Solution: ## 练习题目 -- [状态压缩 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E7%8A%B6%E6%80%81%E5%8E%8B%E7%BC%A9-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [状态压缩 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E7%8A%B6%E6%80%81%E5%8E%8B%E7%BC%A9-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/08_dynamic_programming/08_13_counting_dp.md b/docs/08_dynamic_programming/08_13_counting_dp.md index f5a47df4..926fc816 100644 --- a/docs/08_dynamic_programming/08_13_counting_dp.md +++ b/docs/08_dynamic_programming/08_13_counting_dp.md @@ -204,4 +204,4 @@ class Solution: ## 练习题目 -- [计数 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%95%B0%E4%BD%8D-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [计数 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%95%B0%E4%BD%8D-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/08_dynamic_programming/08_14_digit_dp.md b/docs/08_dynamic_programming/08_14_digit_dp.md index 93ca076d..23e7ceed 100644 --- a/docs/08_dynamic_programming/08_14_digit_dp.md +++ b/docs/08_dynamic_programming/08_14_digit_dp.md @@ -368,7 +368,7 @@ class Solution: ## 练习题目 -- [数位 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%95%B0%E4%BD%8D-dp-%E9%A2%98%E7%9B%AE) +- [数位 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%95%B0%E4%BD%8D-dp-%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_15_probability_dp.md b/docs/08_dynamic_programming/08_15_probability_dp.md index f0bb2b5e..66a09526 100644 --- a/docs/08_dynamic_programming/08_15_probability_dp.md +++ b/docs/08_dynamic_programming/08_15_probability_dp.md @@ -64,7 +64,7 @@ ## 练习题目 -- [概率 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E6%A6%82%E7%8E%87-dp-%E9%A2%98%E7%9B%AE) +- [概率 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%A6%82%E7%8E%87-dp-%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/index.md b/docs/08_dynamic_programming/index.md index c3cb7f3a..a029dc20 100644 --- a/docs/08_dynamic_programming/index.md +++ b/docs/08_dynamic_programming/index.md @@ -1,17 +1,17 @@ ## 本章内容 -- [8.1 动态规划基础](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md) -- [8.2 记忆化搜索](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md) -- [8.3 线性 DP(一)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md) -- [8.4 线性 DP(二)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md) -- [8.5 背包问题知识(一)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md) -- [8.6 背包问题知识(二)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md) -- [8.7 背包问题知识(三)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md) -- [8.8 背包问题知识(四)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md) -- [8.9 背包问题知识(五)](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md) -- [8.10 区间 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/05.Interval-DP/01.Interval-DP.md) -- [8.11 树形 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md) -- [8.12 状态压缩 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md) -- [8.13 计数 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md) -- [8.14 数位 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md) -- [8.15 概率 DP](https://github.com/itcharge/AlgoNote/blob/main/Contents/10.Dynamic-Programming/10.Probability-DP/01.Probability-DP.md) +- [8.1 动态规划基础](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/01.Dynamic-Programming-Basic/01.Dynamic-Programming-Basic.md) +- [8.2 记忆化搜索](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/02.Memoization/01.Memoization.md) +- [8.3 线性 DP(一)](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/03.Linear-DP/01.Linear-DP-01.md) +- [8.4 线性 DP(二)](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/03.Linear-DP/02.Linear-DP-02.md) +- [8.5 背包问题知识(一)](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/01.Knapsack-Problem-01.md) +- [8.6 背包问题知识(二)](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/02.Knapsack-Problem-02.md) +- [8.7 背包问题知识(三)](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/03.Knapsack-Problem-03.md) +- [8.8 背包问题知识(四)](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/04.Knapsack-Problem-04.md) +- [8.9 背包问题知识(五)](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/04.Knapsack-Problem/05.Knapsack-Problem-05.md) +- [8.10 区间 DP](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/05.Interval-DP/01.Interval-DP.md) +- [8.11 树形 DP](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/06.Tree-DP/01.Tree-DP.md) +- [8.12 状态压缩 DP](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/07.State-DP/01.State-DP.md) +- [8.13 计数 DP](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/08.Counting-DP/01.Counting-DP.md) +- [8.14 数位 DP](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/09.Digit-DP/01.Digit-DP.md) +- [8.15 概率 DP](https://github.com/ITCharge/AlgoNote/tree/main/Contents/10.Dynamic-Programming/10.Probability-DP/01.Probability-DP.md) From 1488c7dfade0a679458e63ec44a07ee0c6f1f8e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E8=B6=85?= Date: Wed, 18 Jun 2025 09:44:20 +0800 Subject: [PATCH 148/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/00_preface/00_06_categories_list.md | 18 +++++++-------- docs/00_preface/00_07_interview_100_list.md | 4 ++-- docs/00_preface/00_08_interview_200_list.md | 4 ++-- .../02_linked_list/02_01_linked_list_basic.md | 2 +- .../03_02_monotone_stack.md | 2 +- ..._graph_system_of_difference_constraints.md | 2 +- docs/06_graph/index.md | 22 +++++++++---------- .../08_05_knapsack_problem_01.md | 2 +- .../08_06_knapsack_problem_02.md | 2 +- .../08_07_knapsack_problem_03.md | 2 +- .../08_08_knapsack_problem_04.md | 4 ++-- 11 files changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/00_preface/00_06_categories_list.md b/docs/00_preface/00_06_categories_list.md index 63d7c625..bc069d61 100644 --- a/docs/00_preface/00_06_categories_list.md +++ b/docs/00_preface/00_06_categories_list.md @@ -287,7 +287,7 @@ ## 第 2 章 链表 -### 链表经典题目 +### 链表基础题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -351,7 +351,7 @@ | [0071. 简化路径](https://leetcode.cn/problems/simplify-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/simplify-path.md) | 栈、字符串 | 中等 | -### 单调栈 +### 单调栈题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -566,7 +566,7 @@ | [0732. 我的日程安排表 III](https://leetcode.cn/problems/my-calendar-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/my-calendar-iii.md) | 设计、线段树、二分查找、有序集合、前缀和 | 困难 | -#### 扫描线问题 +#### 扫描线问题题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -720,7 +720,7 @@ | [2045. 到达目的地的第二短时间](https://leetcode.cn/problems/second-minimum-time-to-reach-destination/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/second-minimum-time-to-reach-destination.md) | 广度优先搜索、图、最短路 | 困难 | -### 差分约束系统 +### 差分约束系统题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -995,7 +995,7 @@ ### 背包问题题目 -#### 0-1 背包问题 +#### 0-1 背包问题题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -1004,7 +1004,7 @@ | [1049. 最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/last-stone-weight-ii.md) | 数组、动态规划 | 中等 | -#### 完全背包问题 +#### 完全背包问题题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -1017,9 +1017,9 @@ | [1449. 数位成本和为目标值的最大数字](https://leetcode.cn/problems/form-largest-integer-with-digits-that-add-up-to-target/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/form-largest-integer-with-digits-that-add-up-to-target.md) | 数组、动态规划 | 困难 | -#### 多重背包问题 +#### 多重背包问题题目 -#### 分组背包问题 +#### 分组背包问题题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -1027,7 +1027,7 @@ | [2585. 获得分数的方法数](https://leetcode.cn/problems/number-of-ways-to-earn-points/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/number-of-ways-to-earn-points.md) | 数组、动态规划 | 困难 | -#### 多维背包问题 +#### 多维背包问题题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | diff --git a/docs/00_preface/00_07_interview_100_list.md b/docs/00_preface/00_07_interview_100_list.md index 7476a928..e58d7ed8 100644 --- a/docs/00_preface/00_07_interview_100_list.md +++ b/docs/00_preface/00_07_interview_100_list.md @@ -139,7 +139,7 @@ ## 第 2 章 链表 -### 链表经典题目 +### 链表基础题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -187,7 +187,7 @@ | [0032. 最长有效括号](https://leetcode.cn/problems/longest-valid-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-valid-parentheses.md) | 栈、字符串、动态规划 | 困难 | -### 单调栈 +### 单调栈题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | diff --git a/docs/00_preface/00_08_interview_200_list.md b/docs/00_preface/00_08_interview_200_list.md index e389bb52..df7f81e1 100644 --- a/docs/00_preface/00_08_interview_200_list.md +++ b/docs/00_preface/00_08_interview_200_list.md @@ -191,7 +191,7 @@ ## 02. 链表 -### 链表经典题目 +### 链表基础题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -248,7 +248,7 @@ | [0071. 简化路径](https://leetcode.cn/problems/simplify-path/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/simplify-path.md) | 栈、字符串 | 中等 | -### 单调栈 +### 单调栈题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | diff --git a/docs/02_linked_list/02_01_linked_list_basic.md b/docs/02_linked_list/02_01_linked_list_basic.md index 8fe03bfa..ea045f88 100644 --- a/docs/02_linked_list/02_01_linked_list_basic.md +++ b/docs/02_linked_list/02_01_linked_list_basic.md @@ -361,7 +361,7 @@ def removeInside(self, index): ## 练习题目 -- [链表经典题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E7%BB%8F%E5%85%B8%E9%A2%98%E7%9B%AE) +- [链表基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/03_02_monotone_stack.md b/docs/03_stack_queue_hash_table/03_02_monotone_stack.md index 8d6db4b7..8b045dc9 100644 --- a/docs/03_stack_queue_hash_table/03_02_monotone_stack.md +++ b/docs/03_stack_queue_hash_table/03_02_monotone_stack.md @@ -270,7 +270,7 @@ class Solution: ## 练习题目 -- [单调栈题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E8%B0%83%E6%A0%88) +- [单调栈题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E8%B0%83%E6%A0%88%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/06_graph/06_11_graph_system_of_difference_constraints.md b/docs/06_graph/06_11_graph_system_of_difference_constraints.md index e95a5370..13e64d6d 100644 --- a/docs/06_graph/06_11_graph_system_of_difference_constraints.md +++ b/docs/06_graph/06_11_graph_system_of_difference_constraints.md @@ -121,4 +121,4 @@ def solve_difference_constraints(n, constraints): ## 练习题目 -- [差分约束系统题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%B7%AE%E5%88%86%E7%BA%A6%E6%9D%9F%E7%B3%BB%E7%BB%9F) \ No newline at end of file +- [差分约束系统题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%B7%AE%E5%88%86%E7%BA%A6%E6%9D%9F%E7%B3%BB%E7%BB%9F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/index.md b/docs/06_graph/index.md index 1957ead9..4dc6ed5f 100644 --- a/docs/06_graph/index.md +++ b/docs/06_graph/index.md @@ -2,14 +2,14 @@ - [6.1 图的定义和分类](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_01_graph_basic.md) - [6.2 图的存储结构和问题应用](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_02_graph_structure.md) -- [图的深度优先搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_03_graph_dfs.md) -- [图的广度优先搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_04_graph_bfs.md) -- [图的拓扑排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_05_graph_topological_sorting.md) -- [图的最小生成树](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_06_graph_minimum_spanning_tree.md) -- [单源最短路径(一)](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_07_graph_shortest_path_01.md) -- [单源最短路径(二)](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_08_graph_shortest_path_02.md) -- [多源最短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_09_graph_multi_source_shortest_path.md) -- [次短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_10_graph_the_second_shortest_path.md) -- [差分约束系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_11_graph_system_of_difference_constraints.md) -- [二分图基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_12_graph_bipartite_basic.md) -- [二分图最大匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_13_graph_bipartite_matching.md) +- [6.3 图的深度优先搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_03_graph_dfs.md) +- [6.4 图的广度优先搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_04_graph_bfs.md) +- [6.5 图的拓扑排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_05_graph_topological_sorting.md) +- [6.6 图的最小生成树](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_06_graph_minimum_spanning_tree.md) +- [6.7 单源最短路径(一)](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_07_graph_shortest_path_01.md) +- [6.8 单源最短路径(二)](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_08_graph_shortest_path_02.md) +- [6.9 多源最短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_09_graph_multi_source_shortest_path.md) +- [6.10 次短路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_10_graph_the_second_shortest_path.md) +- [6.11 差分约束系统](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_11_graph_system_of_difference_constraints.md) +- [6.12 二分图基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_12_graph_bipartite_basic.md) +- [6.13 二分图最大匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_13_graph_bipartite_matching.md) diff --git a/docs/08_dynamic_programming/08_05_knapsack_problem_01.md b/docs/08_dynamic_programming/08_05_knapsack_problem_01.md index ea0d76c0..37b3fc87 100644 --- a/docs/08_dynamic_programming/08_05_knapsack_problem_01.md +++ b/docs/08_dynamic_programming/08_05_knapsack_problem_01.md @@ -264,7 +264,7 @@ class Solution: ## 练习题目 -- [0-1 背包问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) +- [0-1 背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_06_knapsack_problem_02.md b/docs/08_dynamic_programming/08_06_knapsack_problem_02.md index 4ec3534a..cff37a91 100644 --- a/docs/08_dynamic_programming/08_06_knapsack_problem_02.md +++ b/docs/08_dynamic_programming/08_06_knapsack_problem_02.md @@ -238,7 +238,7 @@ class Solution: ## 练习题目 -- [完全背包问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) +- [完全背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_07_knapsack_problem_03.md b/docs/08_dynamic_programming/08_07_knapsack_problem_03.md index 10edb99b..975c5e90 100644 --- a/docs/08_dynamic_programming/08_07_knapsack_problem_03.md +++ b/docs/08_dynamic_programming/08_07_knapsack_problem_03.md @@ -206,7 +206,7 @@ class Solution: ## 练习题目 -- [多重背包题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) +- [多重背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E9%87%8D%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_08_knapsack_problem_04.md b/docs/08_dynamic_programming/08_08_knapsack_problem_04.md index 59fde6a5..24a09d02 100644 --- a/docs/08_dynamic_programming/08_08_knapsack_problem_04.md +++ b/docs/08_dynamic_programming/08_08_knapsack_problem_04.md @@ -324,8 +324,8 @@ class Solution: ## 练习题目 -- [分组背包问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) -- [多维背包问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E7%BB%B4%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98) +- [分组背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) +- [多维背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E7%BB%B4%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) ## 参考资料 From 7301ed3e2867c321369fd3febd8c8abfce44b7a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E8=B6=85?= Date: Wed, 18 Jun 2025 13:32:53 +0800 Subject: [PATCH 149/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- docs/00_preface/00_06_categories_list.md | 8 +-- docs/00_preface/00_07_interview_100_list.md | 8 +-- docs/00_preface/00_08_interview_200_list.md | 8 +-- .../02_linked_list/02_01_linked_list_basic.md | 2 +- .../03_01_stack_basic.md | 72 +++++++++---------- .../03_02_monotone_stack.md | 2 +- docs/03_stack_queue_hash_table/index.md | 2 +- docs/06_graph/06_03_graph_dfs.md | 2 +- docs/06_graph/06_04_graph_bfs.md | 2 +- ..._graph_system_of_difference_constraints.md | 2 +- docs/06_graph/index.md | 4 +- .../08_05_knapsack_problem_01.md | 2 +- .../08_06_knapsack_problem_02.md | 2 +- .../08_07_knapsack_problem_03.md | 2 +- .../08_08_knapsack_problem_04.md | 4 +- docs/README.md | 2 +- docs/others/update_time.md | 2 +- docs/solutions/0001-0099/spiral-matrix-ii.md | 2 +- docs/solutions/0001-0099/spiral-matrix.md | 2 +- 20 files changed, 66 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index da6f8d48..752473e7 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ - **0. 序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 - **1. 数组**:讲解数组的基本概念、数组的基本操作。 - **2. 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。 -- **3. 堆栈、队列、哈希表**:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 +- **3. 栈、队列、哈希表**:详细介绍栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 - **4. 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。 - **5. 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。 - **6. 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。 diff --git a/docs/00_preface/00_06_categories_list.md b/docs/00_preface/00_06_categories_list.md index bc069d61..da67cccf 100644 --- a/docs/00_preface/00_06_categories_list.md +++ b/docs/00_preface/00_06_categories_list.md @@ -330,9 +330,9 @@ | [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii.md) | 栈、链表、数学 | 中等 | -## 第 3 章 堆栈、队列、哈希表 +## 第 3 章 栈、队列、哈希表 -### 堆栈基础题目 +### 栈基础题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -610,7 +610,7 @@ ## 第 6 章 图论 -### 图的深度优先搜索题目 +### 深度优先搜索题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -649,7 +649,7 @@ | [0529. 扫雷游戏](https://leetcode.cn/problems/minesweeper/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/minesweeper.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 中等 | -### 图的广度优先搜索题目 +### 广度优先搜索题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | diff --git a/docs/00_preface/00_07_interview_100_list.md b/docs/00_preface/00_07_interview_100_list.md index e58d7ed8..f9cc743a 100644 --- a/docs/00_preface/00_07_interview_100_list.md +++ b/docs/00_preface/00_07_interview_100_list.md @@ -173,9 +173,9 @@ | [0002. 两数相加](https://leetcode.cn/problems/add-two-numbers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/add-two-numbers.md) | 递归、链表、数学 | 中等 | -## 第 3 章 堆栈、队列、哈希表 +## 第 3 章 栈、队列、哈希表 -### 堆栈基础题目 +### 栈基础题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -278,7 +278,7 @@ ## 第 6 章 图论 -### 图的深度优先搜索题目 +### 深度优先搜索题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -293,7 +293,7 @@ | [0662. 二叉树最大宽度](https://leetcode.cn/problems/maximum-width-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-width-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | -### 图的广度优先搜索题目 +### 广度优先搜索题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | diff --git a/docs/00_preface/00_08_interview_200_list.md b/docs/00_preface/00_08_interview_200_list.md index df7f81e1..7662fb1f 100644 --- a/docs/00_preface/00_08_interview_200_list.md +++ b/docs/00_preface/00_08_interview_200_list.md @@ -229,9 +229,9 @@ | [0445. 两数相加 II](https://leetcode.cn/problems/add-two-numbers-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-two-numbers-ii.md) | 栈、链表、数学 | 中等 | -## 第 3 章 堆栈、队列、哈希表 +## 第 3 章 栈、队列、哈希表 -### 堆栈基础题目 +### 栈基础题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -379,7 +379,7 @@ ## 第 6 章 图论 -### 图的深度优先搜索题目 +### 深度优先搜索题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | @@ -399,7 +399,7 @@ | [0111. 二叉树的最小深度](https://leetcode.cn/problems/minimum-depth-of-binary-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/minimum-depth-of-binary-tree.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -### 图的广度优先搜索题目 +### 广度优先搜索题目 | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | diff --git a/docs/02_linked_list/02_01_linked_list_basic.md b/docs/02_linked_list/02_01_linked_list_basic.md index ea045f88..ef485db7 100644 --- a/docs/02_linked_list/02_01_linked_list_basic.md +++ b/docs/02_linked_list/02_01_linked_list_basic.md @@ -361,7 +361,7 @@ def removeInside(self, index): ## 练习题目 -- [链表基础题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) +- [链表基础题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/03_01_stack_basic.md b/docs/03_stack_queue_hash_table/03_01_stack_basic.md index c1e02c3b..0c7e8fad 100644 --- a/docs/03_stack_queue_hash_table/03_01_stack_basic.md +++ b/docs/03_stack_queue_hash_table/03_01_stack_basic.md @@ -1,15 +1,15 @@ -## 1. 堆栈简介 +## 1. 栈简介 -> **堆栈(Stack)**:简称为栈。一种线性表数据结构,是一种只允许在表的一端进行插入和删除操作的线性表。 +> **栈(Stack)**:也叫做「堆栈」,是一种线性表数据结构,是一种只允许在表的一端进行插入和删除操作的线性表。 我们把栈中允许插入和删除的一端称为 **「栈顶(top)」**;另一端则称为 **「栈底(bottom)」**。当表中没有任何数据元素时,称之为 **「空栈」**。 -堆栈有两种基本操作:**「插入操作」** 和 **「删除操作」**。 +栈有两种基本操作:**「插入操作」** 和 **「删除操作」**。 - 栈的插入操作又称为「入栈」或者「进栈」。 - 栈的删除操作又称为「出栈」或者「退栈」。 -![堆栈结构](https://qcdn.itcharge.cn/images/202405092243204.png) +![栈结构](https://qcdn.itcharge.cn/images/202405092243204.png) 简单来说,栈是一种 **「后进先出(Last In First Out)」** 的线性表,简称为 **「LIFO 结构」**。 @@ -21,28 +21,28 @@ - 第二个方面是 **「后进先出原则」**。 -根据堆栈的定义,每次删除的总是堆栈中当前的栈顶元素,即最后进入堆栈的元素。而在进栈时,最先进入堆栈的元素一定在栈底,最后进入堆栈的元素一定在栈顶。也就是说,元素进入堆栈或者退出退栈是按照「后进先出(Last In First Out)」的原则进行的。 +根据栈的定义,每次删除的总是栈中当前的栈顶元素,即最后进入栈的元素。而在进栈时,最先进入栈的元素一定在栈底,最后进入栈的元素一定在栈顶。也就是说,元素进入栈或者退出退栈是按照「后进先出(Last In First Out)」的原则进行的。 -## 2. 堆栈的顺序存储与链式存储 +## 2. 栈的顺序存储与链式存储 和线性表类似,栈有两种存储表示方法:**「顺序栈」** 和 **「链式栈」**。 -- **「顺序栈」**:即堆栈的顺序存储结构。利用一组地址连续的存储单元依次存放自栈底到栈顶的元素,同时使用指针 $top$ 指示栈顶元素在顺序栈中的位置。 -- **「链式栈」**:即堆栈的链式存储结构。利用单链表的方式来实现堆栈。栈中元素按照插入顺序依次插入到链表的第一个节点之前,并使用栈顶指针 $top$ 指示栈顶元素,$top$ 永远指向链表的头节点位置。 +- **「顺序栈」**:即栈的顺序存储结构。利用一组地址连续的存储单元依次存放自栈底到栈顶的元素,同时使用指针 $top$ 指示栈顶元素在顺序栈中的位置。 +- **「链式栈」**:即栈的链式存储结构。利用单链表的方式来实现栈。栈中元素按照插入顺序依次插入到链表的第一个节点之前,并使用栈顶指针 $top$ 指示栈顶元素,$top$ 永远指向链表的头节点位置。 -在描述堆栈的顺序存储与链式存储具体实现之前,我们先来看看堆栈具有哪些基本操作。 +在描述栈的顺序存储与链式存储具体实现之前,我们先来看看栈具有哪些基本操作。 -### 2.1 堆栈的基本操作 +### 2.1 栈的基本操作 栈作为一种线性表来说,理论上应该具备线性表所有的操作特性,但由于「后进先出」的特殊性,所以针对栈的操作进行了一些变化。尤其是插入操作和删除操作,改为了入栈(push)和出栈(pop)。 -堆栈的基本操作如下: +栈的基本操作如下: - **初始化空栈**:创建一个空栈,定义栈的大小 $size$,以及栈顶元素指针 $top$。 -- **判断栈是否为空**:当堆栈为空时,返回 $True$。当堆栈不为空时,返回 $False$。一般只用于栈中删除操作和获取当前栈顶元素操作中。 +- **判断栈是否为空**:当栈为空时,返回 $True$。当栈不为空时,返回 $False$。一般只用于栈中删除操作和获取当前栈顶元素操作中。 -- **判断栈是否已满**:当堆栈已满时,返回 $True$,当堆栈未满时,返回 $False$。一般只用于顺序栈中插入元素和获取当前栈顶元素操作中。 +- **判断栈是否已满**:当栈已满时,返回 $True$,当栈未满时,返回 $False$。一般只用于顺序栈中插入元素和获取当前栈顶元素操作中。 - **插入元素(进栈、入栈)**:相当于在线性表最后元素后面插入一个新的数据元素。并改变栈顶指针 $top$ 的指向位置。 @@ -51,24 +51,24 @@ 接下来我们来看一下栈的顺序存储与链式存储两种不同的实现方式。 -### 2.2 堆栈的顺序存储实现 +### 2.2 栈的顺序存储实现 -堆栈最简单的实现方式就是借助于一个数组来描述堆栈的顺序存储结构。在 Python 中我们可以借助列表 $list$ 来实现。这种采用顺序存储结构的堆栈也被称为 **「顺序栈」**。 +栈最简单的实现方式就是借助于一个数组来描述栈的顺序存储结构。在 Python 中我们可以借助列表 $list$ 来实现。这种采用顺序存储结构的栈也被称为 **「顺序栈」**。 -#### 2.2.1 堆栈的顺序存储基本描述 +#### 2.2.1 栈的顺序存储基本描述 -![堆栈的顺序存储](https://qcdn.itcharge.cn/images/202405092243306.png) +![栈的顺序存储](https://qcdn.itcharge.cn/images/202405092243306.png) 我们约定 $self.top$ 指向栈顶元素所在位置。 - **初始化空栈**:使用列表创建一个空栈,定义栈的大小 $self.size$,并令栈顶元素指针 $self.top$ 指向 $-1$,即 $self.top = -1$。 -- **判断栈是否为空**:当 $self.top == -1$ 时,说明堆栈为空,返回 $True$,否则返回 $False$。 -- **判断栈是否已满**:当 $self.top == self.size - 1$,说明堆栈已满,返回 $True$,否则返回返回 $False$。 -- **插入元素(进栈、入栈)**:先判断堆栈是否已满,已满直接抛出异常。如果堆栈未满,则在 $self.stack$ 末尾插入新的数据元素,并令 $self.top$ 向右移动 $1$ 位。 -- **删除元素(出栈、退栈)**:先判断堆栈是否为空,为空直接抛出异常。如果堆栈不为空,则删除 $self.stack$ 末尾的数据元素,并令 $self.top$ 向左移动 $1$ 位。 -- **获取栈顶元素**:先判断堆栈是否为空,为空直接抛出异常。不为空则返回 $self.top$ 指向的栈顶元素,即 $self.stack[self.top]$。 +- **判断栈是否为空**:当 $self.top == -1$ 时,说明栈为空,返回 $True$,否则返回 $False$。 +- **判断栈是否已满**:当 $self.top == self.size - 1$,说明栈已满,返回 $True$,否则返回返回 $False$。 +- **插入元素(进栈、入栈)**:先判断栈是否已满,已满直接抛出异常。如果栈未满,则在 $self.stack$ 末尾插入新的数据元素,并令 $self.top$ 向右移动 $1$ 位。 +- **删除元素(出栈、退栈)**:先判断栈是否为空,为空直接抛出异常。如果栈不为空,则删除 $self.stack$ 末尾的数据元素,并令 $self.top$ 向左移动 $1$ 位。 +- **获取栈顶元素**:先判断栈是否为空,为空直接抛出异常。不为空则返回 $self.top$ 指向的栈顶元素,即 $self.stack[self.top]$。 -#### 2.2.2 堆栈的顺序存储实现代码 +#### 2.2.2 栈的顺序存储实现代码 ```python class Stack: @@ -110,23 +110,23 @@ class Stack: return self.stack[self.top] ``` -### 2.3 堆栈的链式存储实现 +### 2.3 栈的链式存储实现 -堆栈的顺序存储结构保留着顺序存储分配空间的固有缺陷,即在栈满或者其他需要重新调整存储空间时需要移动大量元素。为此,堆栈可以采用链式存储方式来实现。在 Python 中我们通过构造链表节点 $Node$ 的方式来实现。这种采用链式存储结构的堆栈也被称为 **「链式栈」**。 +栈的顺序存储结构保留着顺序存储分配空间的固有缺陷,即在栈满或者其他需要重新调整存储空间时需要移动大量元素。为此,栈可以采用链式存储方式来实现。在 Python 中我们通过构造链表节点 $Node$ 的方式来实现。这种采用链式存储结构的栈也被称为 **「链式栈」**。 -![堆栈的链式存储](https://qcdn.itcharge.cn/images/202405092243367.png) +![栈的链式存储](https://qcdn.itcharge.cn/images/202405092243367.png) -#### 2.3.1 堆栈的链式存储基本描述 +#### 2.3.1 栈的链式存储基本描述 我们约定 $self.top$ 指向栈顶元素所在位置。 - **初始化空栈**:使用列表创建一个空栈,并令栈顶元素指针 $self.top$ 指向 $None$,即 $self.top = None$。 -- **判断栈是否为空**:当 $self.top == None$ 时,说明堆栈为空,返回 $True$,否则返回 $False$。 +- **判断栈是否为空**:当 $self.top == None$ 时,说明栈为空,返回 $True$,否则返回 $False$。 - **插入元素(进栈、入栈)**:创建值为 $value$ 的链表节点,插入到链表头节点之前,并令栈顶指针 $self.top$ 指向新的头节点。 -- **删除元素(出栈、退栈)**:先判断堆栈是否为空,为空直接抛出异常。如果堆栈不为空,则先使用变量 $cur$ 存储当前栈顶指针 $self.top$ 指向的头节点,然后令 $self.top$ 沿着链表移动 $1$ 位,然后再删除之前保存的 $cur$ 节点。 -- **获取栈顶元素**:先判断堆栈是否为空,为空直接抛出异常。不为空则返回 $self.top$ 指向的栈顶节点的值,即 $self.top.value$。 +- **删除元素(出栈、退栈)**:先判断栈是否为空,为空直接抛出异常。如果栈不为空,则先使用变量 $cur$ 存储当前栈顶指针 $self.top$ 指向的头节点,然后令 $self.top$ 沿着链表移动 $1$ 位,然后再删除之前保存的 $cur$ 节点。 +- **获取栈顶元素**:先判断栈是否为空,为空直接抛出异常。不为空则返回 $self.top$ 指向的栈顶节点的值,即 $self.top.value$。 -#### 2.3.2 堆栈的链式存储实现代码 +#### 2.3.2 栈的链式存储实现代码 ```python class Node: @@ -166,13 +166,13 @@ class Stack: return self.top.value ``` -## 3. 堆栈的应用 +## 3. 栈的应用 -堆栈是算法和程序中最常用的辅助结构,其的应用十分广泛。堆栈基本应用于两个方面: +栈是算法和程序中最常用的辅助结构,其的应用十分广泛。栈基本应用于两个方面: -- 使用堆栈可以很方便的保存和取用信息,因此长被用作算法和程序中的辅助存储结构,临时保存信息,供后面操作中使用。 +- 使用栈可以很方便的保存和取用信息,因此长被用作算法和程序中的辅助存储结构,临时保存信息,供后面操作中使用。 - 例如:操作系统中的函数调用栈,浏览器中的前进、后退功能。 -- 堆栈的后进先出规则,可以保证特定的存取顺序。 +- 栈的后进先出规则,可以保证特定的存取顺序。 - 例如:翻转一组元素的顺序、铁路列车车辆调度。 下面我们来讲解一下栈应用的典型例子。 @@ -350,7 +350,7 @@ class Solution: ## 练习题目 -- [堆栈基础题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%A0%86%E6%A0%88%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) +- [栈基础题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%A0%88%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/03_02_monotone_stack.md b/docs/03_stack_queue_hash_table/03_02_monotone_stack.md index 8b045dc9..bbddc024 100644 --- a/docs/03_stack_queue_hash_table/03_02_monotone_stack.md +++ b/docs/03_stack_queue_hash_table/03_02_monotone_stack.md @@ -270,7 +270,7 @@ class Solution: ## 练习题目 -- [单调栈题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E8%B0%83%E6%A0%88%E9%A2%98%E7%9B%AE) +- [单调栈题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E8%B0%83%E6%A0%88%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/index.md b/docs/03_stack_queue_hash_table/index.md index 06565851..ee936ab3 100644 --- a/docs/03_stack_queue_hash_table/index.md +++ b/docs/03_stack_queue_hash_table/index.md @@ -1,6 +1,6 @@ ## 本章内容 -- [3.1 堆栈基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_01_stack_basic.md) +- [3.1 栈基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_01_stack_basic.md) - [3.2 单调栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_02_monotone_stack.md) - [3.3 队列基础](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_03_queue_basic.md) - [3.4 优先队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/03_stack_queue_hash_table/03_04_priority_queue.md) diff --git a/docs/06_graph/06_03_graph_dfs.md b/docs/06_graph/06_03_graph_dfs.md index db8adafd..9f698380 100644 --- a/docs/06_graph/06_03_graph_dfs.md +++ b/docs/06_graph/06_03_graph_dfs.md @@ -326,7 +326,7 @@ class Solution: ## 练习题目 -- [图的深度优先搜索题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) +- [深度优先搜索题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/06_graph/06_04_graph_bfs.md b/docs/06_graph/06_04_graph_bfs.md index 8d3023ff..c7eeef70 100644 --- a/docs/06_graph/06_04_graph_bfs.md +++ b/docs/06_graph/06_04_graph_bfs.md @@ -271,7 +271,7 @@ class Solution: ## 练习题目 -- [图的广度优先搜索题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) +- [广度优先搜索题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/06_graph/06_11_graph_system_of_difference_constraints.md b/docs/06_graph/06_11_graph_system_of_difference_constraints.md index 13e64d6d..646ad729 100644 --- a/docs/06_graph/06_11_graph_system_of_difference_constraints.md +++ b/docs/06_graph/06_11_graph_system_of_difference_constraints.md @@ -121,4 +121,4 @@ def solve_difference_constraints(n, constraints): ## 练习题目 -- [差分约束系统题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%B7%AE%E5%88%86%E7%BA%A6%E6%9D%9F%E7%B3%BB%E7%BB%9F%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [差分约束系统题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%B7%AE%E5%88%86%E7%BA%A6%E6%9D%9F%E7%B3%BB%E7%BB%9F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/index.md b/docs/06_graph/index.md index 4dc6ed5f..249691cd 100644 --- a/docs/06_graph/index.md +++ b/docs/06_graph/index.md @@ -2,8 +2,8 @@ - [6.1 图的定义和分类](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_01_graph_basic.md) - [6.2 图的存储结构和问题应用](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_02_graph_structure.md) -- [6.3 图的深度优先搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_03_graph_dfs.md) -- [6.4 图的广度优先搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_04_graph_bfs.md) +- [6.3 深度优先搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_03_graph_dfs.md) +- [6.4 广度优先搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_04_graph_bfs.md) - [6.5 图的拓扑排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_05_graph_topological_sorting.md) - [6.6 图的最小生成树](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_06_graph_minimum_spanning_tree.md) - [6.7 单源最短路径(一)](https://github.com/ITCharge/AlgoNote/tree/main/docs/06_graph/06_07_graph_shortest_path_01.md) diff --git a/docs/08_dynamic_programming/08_05_knapsack_problem_01.md b/docs/08_dynamic_programming/08_05_knapsack_problem_01.md index 37b3fc87..47117f74 100644 --- a/docs/08_dynamic_programming/08_05_knapsack_problem_01.md +++ b/docs/08_dynamic_programming/08_05_knapsack_problem_01.md @@ -264,7 +264,7 @@ class Solution: ## 练习题目 -- [0-1 背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) +- [0-1 背包问题题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_06_knapsack_problem_02.md b/docs/08_dynamic_programming/08_06_knapsack_problem_02.md index cff37a91..586ff242 100644 --- a/docs/08_dynamic_programming/08_06_knapsack_problem_02.md +++ b/docs/08_dynamic_programming/08_06_knapsack_problem_02.md @@ -238,7 +238,7 @@ class Solution: ## 练习题目 -- [完全背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) +- [完全背包问题题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_07_knapsack_problem_03.md b/docs/08_dynamic_programming/08_07_knapsack_problem_03.md index 975c5e90..51a3231f 100644 --- a/docs/08_dynamic_programming/08_07_knapsack_problem_03.md +++ b/docs/08_dynamic_programming/08_07_knapsack_problem_03.md @@ -206,7 +206,7 @@ class Solution: ## 练习题目 -- [多重背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E9%87%8D%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) +- [多重背包问题题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E9%87%8D%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_08_knapsack_problem_04.md b/docs/08_dynamic_programming/08_08_knapsack_problem_04.md index 24a09d02..5bcadfea 100644 --- a/docs/08_dynamic_programming/08_08_knapsack_problem_04.md +++ b/docs/08_dynamic_programming/08_08_knapsack_problem_04.md @@ -324,8 +324,8 @@ class Solution: ## 练习题目 -- [分组背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) -- [多维背包问题题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E7%BB%B4%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) +- [分组背包问题题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) +- [多维背包问题题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E7%BB%B4%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/README.md b/docs/README.md index da6f8d48..752473e7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -27,7 +27,7 @@ - **0. 序言**:介绍数据结构与算法的基础知识、算法复杂度、LeetCode 的入门和攻略,为后面的学习打好基础。 - **1. 数组**:讲解数组的基本概念、数组的基本操作。 - **2. 链表**:讲解链表的基本概念、操作和应用,包括单链表、双向链表、循环链表等。 -- **3. 堆栈、队列、哈希表**:详细介绍堆栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 +- **3. 栈、队列、哈希表**:详细介绍栈、队列、哈希表这三种数据结构,包括它们的基本概念、实现方式、应用场景以及相关的经典算法题。 - **4. 字符串**:讲解字符串的基本操作、单字符串匹配算法、多字符串匹配算法,以及字符串相关的经典算法题。 - **5. 树结构**:介绍树的基本概念、二叉树、二叉搜索树、线段树、树状数组、并查集等数据结构。 - **6. 图论**:讲解图的基本概念、表示方法、遍历算法和经典应用。 diff --git a/docs/others/update_time.md b/docs/others/update_time.md index 9d252961..16ec7759 100644 --- a/docs/others/update_time.md +++ b/docs/others/update_time.md @@ -109,7 +109,7 @@ - 2022-12-12 完成「链表双指针」相关内容 - 2022-12-10 完成「链表排序」相关内容 - 2022-12-04 完成「队列基础知识」相关内容 -- 2022-12-04 完成「堆栈基础知识」相关内容 +- 2022-12-04 完成「栈基础知识」相关内容 ## 2021-11 diff --git a/docs/solutions/0001-0099/spiral-matrix-ii.md b/docs/solutions/0001-0099/spiral-matrix-ii.md index d6efabe7..b61ba7f4 100644 --- a/docs/solutions/0001-0099/spiral-matrix-ii.md +++ b/docs/solutions/0001-0099/spiral-matrix-ii.md @@ -20,7 +20,7 @@ 这道题跟「[54. 螺旋矩阵](https://leetcode.cn/problems/spiral-matrix/)」思路是一样的。 1. 构建一个 $n \times n$ 大小的数组 $matrix$ 存储答案。然后定义一下上、下、左、右的边界。 -2. 然后按照逆时针的顺序从边界上依次给数组 $matrix$ 相应位置赋值。 +2. 然后按照顺时针的顺序从边界上依次给数组 $matrix$ 相应位置赋值。 3. 当访问完当前边界之后,要更新一下边界位置,缩小范围,方便下一轮进行访问。 4. 最后返回 $matrix$。 diff --git a/docs/solutions/0001-0099/spiral-matrix.md b/docs/solutions/0001-0099/spiral-matrix.md index 36303602..b1dcba57 100644 --- a/docs/solutions/0001-0099/spiral-matrix.md +++ b/docs/solutions/0001-0099/spiral-matrix.md @@ -45,7 +45,7 @@ ### 思路 1:模拟 1. 使用数组 $ans$ 存储答案。然后定义一下上、下、左、右的边界。 -2. 然后按照逆时针的顺序从边界上依次访问元素。 +2. 然后按照顺时针的顺序从边界上依次访问元素。 3. 当访问完当前边界之后,要更新一下边界位置,缩小范围,方便下一轮进行访问。 4. 最后返回答案数组 $ans$。 From a13e70f5bfbbd6b2162ec5cdfed4d57e6b0ed3f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E8=B6=85?= Date: Wed, 18 Jun 2025 18:08:18 +0800 Subject: [PATCH 150/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=8C=E5=90=8E?= =?UTF-8?q?=E7=BC=80=E6=95=B0=E7=BB=84=E3=80=8D=E7=9B=B8=E5=85=B3=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/04_string/04_12_suffix_array.md | 136 +++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) diff --git a/docs/04_string/04_12_suffix_array.md b/docs/04_string/04_12_suffix_array.md index e69de29b..71b35211 100644 --- a/docs/04_string/04_12_suffix_array.md +++ b/docs/04_string/04_12_suffix_array.md @@ -0,0 +1,136 @@ +## 1. 后缀数组简介 + +> **后缀数组(Suffix Array)**:是一种高效处理字符串后缀相关问题的数据结构。它将字符串的所有后缀按字典序排序,并记录每个后缀在原串中的起始位置,便于实现高效的子串查找、最长重复子串、最长公共子串等操作。 + +后缀数组常与 **LCP(Longest Common Prefix)数组** 配合使用,进一步提升字符串处理的效率。 + +--- + +## 2. 基本原理与定义 + +给定一个长度为 $n$ 的字符串 $S$,其后缀数组 $SA$ 是一个长度为 $n$ 的整数数组,$SA[i]$ 表示 $S$ 的第 $i$ 小后缀在原串中的起始下标。 + +例如: + +> $S = "banana"$ +> +> $S$ 的所有后缀及其下标: +> - 0: banana +> - 1: anana +> - 2: nana +> - 3: ana +> - 4: na +> - 5: a +> +> 按字典序排序后: +> 1. a (5) +> 2. ana (3) +> 3. anana (1) +> 4. banana (0) +> 5. na (4) +> 6. nana (2) +> +> 所以 $SA = [5, 3, 1, 0, 4, 2]$ + +--- + +## 3. 后缀数组的构建方法 + +后缀数组的构建有多种方法,常见的有: + +- **朴素排序法**:直接生成所有后缀并排序,时间复杂度 $O(n^2 \log n)$,适合短串。 +- **倍增算法**:利用基数排序思想,时间复杂度 $O(n \log n)$。 +- **DC3/Skew 算法**:线性时间 $O(n)$ 构建,适合大数据量。 + +### 3.1 朴素法(适合理解原理) + +```python +# 朴素法构建后缀数组 +S = "banana" +suffixes = [(S[i:], i) for i in range(len(S))] +suffixes.sort() +SA = [idx for (suf, idx) in suffixes] +print(SA) # 输出: [5, 3, 1, 0, 4, 2] +``` + +### 3.2 倍增算法(常用高效实现) + +```python +def build_suffix_array(s): + n = len(s) + k = 1 + rank = [ord(c) for c in s] + tmp = [0] * n + sa = list(range(n)) + while True: + sa.sort(key=lambda x: (rank[x], rank[x + k] if x + k < n else -1)) + tmp[sa[0]] = 0 + for i in range(1, n): + tmp[sa[i]] = tmp[sa[i-1]] + \ + ((rank[sa[i]] != rank[sa[i-1]]) or + (rank[sa[i]+k] if sa[i]+k < n else -1) != (rank[sa[i-1]+k] if sa[i-1]+k < n else -1)) + rank = tmp[:] + if rank[sa[-1]] == n-1: + break + k <<= 1 + return sa + +# 示例 +S = "banana" +print(build_suffix_array(S)) # 输出: [5, 3, 1, 0, 4, 2] +``` + +--- + +## 4. LCP(最长公共前缀)数组 + +> **LCP 数组**:LCP[i] 表示 $SA[i]$ 和 $SA[i-1]$ 所指向的两个后缀的最长公共前缀长度。 + +LCP 数组常用于: +- 快速查找最长重复子串 +- 计算不同子串个数 +- 字符串压缩等 + +### LCP 数组的构建 + +```python +def build_lcp(s, sa): + n = len(s) + rank = [0] * n + for i in range(n): + rank[sa[i]] = i + h = 0 + lcp = [0] * n + for i in range(n): + if rank[i] == 0: + lcp[0] = 0 + else: + j = sa[rank[i] - 1] + while i + h < n and j + h < n and s[i + h] == s[j + h]: + h += 1 + lcp[rank[i]] = h + if h > 0: + h -= 1 + return lcp + +# 示例 +S = "banana" +SA = build_suffix_array(S) +LCP = build_lcp(S, SA) +print(LCP) # 输出: [0, 1, 3, 0, 0, 2] +``` + +## 5. 算法复杂度分析 + +- **朴素法**:$O(n^2 \log n)$ +- **倍增法**:$O(n \log n)$ +- **DC3/Skew**:$O(n)$ +- **LCP 构建**:$O(n)$ + +## 参考资料 + +- 《算法竞赛进阶指南》—— 胡策 +- 《算法竞赛入门经典》—— 刘汝佳 +- [OI Wiki - 后缀数组](https://oi-wiki.org/string/sa/) + + From 3f0fa3a1e0dc5301c8fb87fc8bab2292a4f2b5c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E8=B6=85?= Date: Wed, 25 Jun 2025 16:38:18 +0800 Subject: [PATCH 151/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=8C=E5=8D=95?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=B8=B2=E5=8C=B9=E9=85=8D=E3=80=8D=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../04_02_string_single_pattern_matching.md | 143 ++++++++++++++++++ 1 file changed, 143 insertions(+) diff --git a/docs/04_string/04_02_string_single_pattern_matching.md b/docs/04_string/04_02_string_single_pattern_matching.md index e69de29b..050b313b 100644 --- a/docs/04_string/04_02_string_single_pattern_matching.md +++ b/docs/04_string/04_02_string_single_pattern_matching.md @@ -0,0 +1,143 @@ +## 1. 单模式串匹配概述 + +> **单模式串匹配**:是指在文本串 $T$ 中查找一个模式串 $p$ 的所有出现位置的问题。这是字符串匹配中最基础、最经典的问题。 +> +> - **问题定义**:给定一个长度为 $n$ 的文本串 $T$ 和一个长度为 $m$ 的模式串 $p$,找出模式串 $p$ 在文本串 $T$ 中所有出现的位置。 + +### 1.1 问题描述 + +单模式串匹配问题是字符串匹配的基础问题,其形式化定义如下: + +- **输入**:文本串 $T = T[0...n-1]$,模式串 $p = p[0...m-1]$ +- **输出**:所有满足 $T[i...i+m-1] = p[0...m-1]$ 的位置 $i$ +- **目标**:高效地找到所有匹配位置 + +### 1.2 应用场景 + +单模式串匹配在计算机科学和实际应用中有广泛的应用: + +- **文本编辑器**:查找和替换功能 +- **生物信息学**:DNA序列匹配 +- **网络安全**:入侵检测系统中的模式识别 +- **数据挖掘**:文本挖掘和信息检索 +- **编译原理**:词法分析中的关键字识别 + +## 2. 单模式串匹配算法分类 + +根据算法的核心思想和复杂度,单模式串匹配算法可以分为以下几类: + +### 2.1 朴素算法 + +**Brute Force 算法(暴力匹配算法)** +- **时间复杂度**:$O(n \times m)$ +- **空间复杂度**:$O(1)$ +- **特点**:简单直观,但效率较低 +- **适用场景**:模式串较短或对性能要求不高的场景 + +### 2.2 基于哈希的算法 + +**Rabin Karp 算法** +- **时间复杂度**:平均 $O(n + m)$,最坏 $O(n \times m)$ +- **空间复杂度**:$O(1)$ +- **特点**:使用滚动哈希,平均性能较好 +- **适用场景**:需要处理多个模式串或对哈希冲突不敏感的场景 + +### 2.3 基于有限状态机的算法 + +**KMP 算法(Knuth-Morris-Pratt 算法)** +- **时间复杂度**:$O(n + m)$ +- **空间复杂度**:$O(m)$ +- **特点**:利用失配信息避免重复比较 +- **适用场景**:对性能要求较高的场景 + +### 2.4 基于启发式规则的算法 + +**Boyer Moore 算法** +- **时间复杂度**:平均 $O(n/m)$,最坏 $O(n \times m)$ +- **空间复杂度**:$O(k)$($k$ 为字符集大小) +- **特点**:从右到左比较,跳跃能力强 +- **适用场景**:模式串较长,字符集较小的场景 + +**Horspool 算法** +- **时间复杂度**:平均 $O(n)$,最坏 $O(n \times m)$ +- **空间复杂度**:$O(k)$ +- **特点**:BM算法的简化版本,实现简单 +- **适用场景**:需要简单实现的场景 + +**Sunday 算法** +- **时间复杂度**:平均 $O(n)$,最坏 $O(n \times m)$ +- **空间复杂度**:$O(k)$ +- **特点**:从左到右比较,跳跃能力强 +- **适用场景**:需要从左到右匹配的场景 + +## 3. 算法复杂度对比 + +| 算法 | 预处理时间 | 匹配时间 | 空间复杂度 | 特点 | +|------|------------|----------|------------|------| +| Brute Force | $O(1)$ | $O(n \times m)$ | $O(1)$ | 简单直观 | +| Rabin Karp | $O(m)$ | 平均 $O(n)$,最坏 $O(n \times m)$ | $O(1)$ | 滚动哈希 | +| KMP | $O(m)$ | $O(n)$ | $O(m)$ | 失配信息 | +| Boyer Moore | $O(m + k)$ | 平均 $O(n/m)$,最坏 $O(n \times m)$ | $O(k)$ | 启发式跳跃 | +| Horspool | $O(m + k)$ | 平均 $O(n)$,最坏 $O(n \times m)$ | $O(k)$ | BM简化版 | +| Sunday | $O(m + k)$ | 平均 $O(n)$,最坏 $O(n \times m)$ | $O(k)$ | 从左到右 | + +## 4. 算法选择策略 + +### 4.1 根据应用场景选择 + +- **简单应用**:选择 Brute Force 算法,代码简单,易于理解和维护 +- **一般应用**:选择 KMP 算法,性能稳定,实现相对简单 +- **高性能应用**:选择 Boyer Moore 算法,平均性能最优 +- **多模式串应用**:选择 Rabin Karp 算法,易于扩展到多模式串 + +### 4.2 根据数据特征选择 + +- **模式串较短($m < 10$)**:Brute Force 算法足够 +- **模式串较长($m > 50$)**:Boyer Moore 算法优势明显 +- **字符集较小**:Boyer Moore、Horspool、Sunday 算法效果好 +- **字符集较大**:KMP 算法更稳定 + +### 4.3 根据实现复杂度选择 + +- **快速原型**:Brute Force 或 Horspool 算法 +- **生产环境**:KMP 或 Boyer Moore 算法 +- **教学演示**:Brute Force 或 KMP 算法 + +## 5. 实际应用中的考虑 + +### 5.1 内存使用 + +- **嵌入式系统**:选择空间复杂度低的算法 +- **大规模文本处理**:考虑算法的缓存友好性 + +### 5.2 预处理开销 + +- **一次性匹配**:预处理开销相对不重要 +- **多次匹配**:预处理开销分摊后影响较小 + +### 5.3 字符集特性 + +- **ASCII 字符**:所有算法都适用 +- **Unicode 字符**:需要考虑字符编码问题 +- **二进制数据**:需要特殊处理 + +## 6. 总结 + +单模式串匹配是字符串算法的基础问题,不同的算法各有优缺点: + +- **Brute Force**:最简单,适合学习和简单应用 +- **Rabin Karp**:适合多模式串和哈希应用 +- **KMP**:理论最优,实际应用广泛 +- **Boyer Moore**:平均性能最优,适合长模式串 +- **Horspool/Sunday**:BM的简化版本,实现简单 + +## 练习题目 + +- [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) + +## 参考资料 + +- 【书籍】算法导论 - Thomas H. Cormen 等著 +- 【书籍】柔性字符串匹配 - 中科院计算所网络信息安全研究组 译 +- 【文章】[字符串匹配基础(上)- 数据结构与算法之美 - 极客时间](https://time.geekbang.org/column/article/71187) +- 【文章】[字符串匹配算法总结 - 阮一峰的网络日志](http://www.ruanyifeng.com/blog/2013/05/boyer-moore_string_search_algorithm.html) From 1467513aede5d0b4956705e1fb76b0d260d92e27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E8=B6=85?= Date: Wed, 25 Jun 2025 16:38:41 +0800 Subject: [PATCH 152/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E3=80=8CAC=20?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=9C=BA=E3=80=8D=E7=9B=B8=E5=85=B3=E5=86=85?= =?UTF-8?q?=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/04_string/04_11_ac_automaton.md | 113 ++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 2 deletions(-) diff --git a/docs/04_string/04_11_ac_automaton.md b/docs/04_string/04_11_ac_automaton.md index 73663069..fd2d3550 100644 --- a/docs/04_string/04_11_ac_automaton.md +++ b/docs/04_string/04_11_ac_automaton.md @@ -18,10 +18,119 @@ AC 自动机的构造有 3 个步骤: ### 2.1 构造一棵字典树(Trie) -首先我们需要建立一棵字典树。 +首先我们需要建立一棵字典树。字典树是一种树形数据结构,用于高效地存储和检索字符串集合。每个节点代表一个字符,从根节点到某个节点的路径上的字符连接起来,就是该节点对应的字符串。 + +对于给定的 5 个单词,构造的字典树如下: + +``` + root + / \ + s h + / \ | + a h e + / / \ \ + y e r r +``` ### 2.2 构造失配指针 +失配指针(fail pointer)是 AC 自动机的核心。当在字典树中匹配失败时,失配指针指向另一个节点,该节点对应的字符串是当前节点对应字符串的最长后缀。 + +失配指针的构造过程: +1. 根节点的失配指针指向空 +2. 对于每个节点,其失配指针指向其父节点的失配指针指向的节点的对应子节点 +3. 如果对应子节点不存在,则继续沿着失配指针向上查找 + ### 2.3 扫描文本串 -## 3. AC 自动机的应用 \ No newline at end of file +扫描文本串的过程: +1. 从根节点开始,按照文本串的字符顺序在字典树中移动 +2. 如果当前字符匹配成功,继续移动到下一个字符 +3. 如果当前字符匹配失败,通过失配指针跳转到另一个节点继续匹配 +4. 当到达某个单词的结束节点时,说明找到了一个匹配的单词 + +## 3. AC 自动机的应用 + +AC 自动机在以下场景中有着广泛的应用: + +1. **多模式字符串匹配**:在文本中查找多个模式串 +2. **敏感词过滤**:检测文本中是否包含敏感词 +3. **DNA序列分析**:在生物信息学中用于DNA序列的模式匹配 +4. **网络入侵检测**:检测网络数据包中的恶意模式 +5. **拼写检查**:检查文本中的拼写错误 + +## 4. AC 自动机的实现 + +### 4.1 时间复杂度 + +- 构建字典树:O(Σ|P|),其中 P 是所有模式串的集合 +- 构建失配指针:O(Σ|P|) +- 文本串匹配:O(n + k),其中 n 是文本串长度,k 是匹配的模式串数量 + +### 4.2 空间复杂度 + +- O(Σ|P|),其中 Σ 是字符集大小 + +## 5. 代码实现 + +```python +class TrieNode: + def __init__(self): + self.children = {} # 子节点 + self.fail = None # 失配指针 + self.is_end = False # 是否是单词结尾 + self.word = "" # 存储完整的单词 + +class AC_Automaton: + def __init__(self): + self.root = TrieNode() + + def add_word(self, word): + node = self.root + for char in word: + if char not in node.children: + node.children[char] = TrieNode() + node = node.children[char] + node.is_end = True + node.word = word + + def build_fail_pointers(self): + queue = [] + # 将根节点的子节点的失配指针指向根节点 + for char, node in self.root.children.items(): + node.fail = self.root + queue.append(node) + + # 广度优先搜索构建失配指针 + while queue: + current = queue.pop(0) + for char, child in current.children.items(): + fail = current.fail + while fail and char not in fail.children: + fail = fail.fail + child.fail = fail.children[char] if fail else self.root + queue.append(child) + + def search(self, text): + result = [] + current = self.root + + for char in text: + while current is not self.root and char not in current.children: + current = current.fail + if char in current.children: + current = current.children[char] + + # 检查当前节点是否是某个单词的结尾 + temp = current + while temp is not self.root: + if temp.is_end: + result.append(temp.word) + temp = temp.fail + + return result +``` + +## 6. 总结 + +AC 自动机是一种高效的多模式匹配算法,它通过结合字典树和 KMP 算法的思想,实现了在文本串中快速查找多个模式串的功能。虽然其实现相对复杂,但在需要多模式匹配的场景下,AC 自动机提供了最优的时间复杂度。 \ No newline at end of file From c61a0ad051f587848acff9307908bbaae669e854 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E8=B6=85?= Date: Wed, 25 Jun 2025 16:39:02 +0800 Subject: [PATCH 153/158] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20LaTeX=20=E5=85=AC?= =?UTF-8?q?=E5=BC=8F=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/05_tree/05_05_segment_tree_01.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/05_tree/05_05_segment_tree_01.md b/docs/05_tree/05_05_segment_tree_01.md index 3b2d22bc..09789901 100644 --- a/docs/05_tree/05_05_segment_tree_01.md +++ b/docs/05_tree/05_05_segment_tree_01.md @@ -142,8 +142,8 @@ class SegmentTree: 1. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 完全覆盖了当前节点所在区间 $[left, right]$ ,即 $left \ge q\underline{\hspace{0.5em}}left$ 并且 $right \le q\underline{\hspace{0.5em}}right$,则返回该节点的区间值。 2. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与当前节点所在区间 $[left, right]$ 毫无关系,即 $right < q\underline{\hspace{0.5em}}left$ 或者 $left > q\underline{\hspace{0.5em}}right$,则返回 $0$。 3. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与当前节点所在区间有交集,则: - 1. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与左子节点所在区间 $[left, mid]$ 有交集,即 $q\underline{\hspace{0.5em}}left \le mid$,则在当前节点的左子树中进行查询并保存查询结果 $res_\underline{\hspace{0.5em}}left$。 - 2. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与右子节点所在区间 $[mid + 1, right]$ 有交集,即 $q\underline{\hspace{0.5em}}right > mid$,则在当前节点的右子树中进行查询并保存查询结果 $res_\underline{\hspace{0.5em}}right$。 + 1. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与左子节点所在区间 $[left, mid]$ 有交集,即 $q\underline{\hspace{0.5em}}left \le mid$,则在当前节点的左子树中进行查询并保存查询结果 $res\underline{\hspace{0.5em}}left$。 + 2. 如果区间 $[q\underline{\hspace{0.5em}}left, q\underline{\hspace{0.5em}}right]$ 与右子节点所在区间 $[mid + 1, right]$ 有交集,即 $q\underline{\hspace{0.5em}}right > mid$,则在当前节点的右子树中进行查询并保存查询结果 $res\underline{\hspace{0.5em}}right$。 3. 最后返回左右子树元素区间值的聚合计算结果。 线段树的区间查询代码如下: From 8a81c34f3bb8a394f1329e809b95e847a0fa8094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E8=B6=85?= Date: Wed, 25 Jun 2025 16:40:18 +0800 Subject: [PATCH 154/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=AF=8F=E4=B8=AA?= =?UTF-8?q?=E7=AB=A0=E8=8A=82=E4=B8=AD=E6=8E=A8=E8=8D=90=E7=BB=83=E4=B9=A0?= =?UTF-8?q?=E9=A2=98=E7=9B=AE=E7=9B=B8=E5=85=B3=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/01_array/01_03_array_bubble_sort.md | 2 +- docs/01_array/01_04_array_selection_sort.md | 2 + docs/01_array/01_05_array_insertion_sort.md | 2 + docs/01_array/01_06_array_shell_sort.md | 3 + docs/01_array/01_07_array_merge_sort.md | 7 + docs/01_array/01_08_array_quick_sort.md | 3 + docs/01_array/01_09_array_heap_sort.md | 4 + docs/01_array/01_10_array_counting_sort.md | 3 + docs/01_array/01_11_array_bucket_sort.md | 4 + docs/01_array/01_12_array_radix_sort.md | 4 + docs/01_array/01_13_array_binary_search_01.md | 5 + docs/01_array/01_14_array_binary_search_02.md | 6 + docs/01_array/01_15_array_two_pointers.md | 7 + docs/01_array/01_16_array_sliding_window.md | 6 +- .../02_linked_list/02_01_linked_list_basic.md | 7 + .../02_03_linked_list_bubble_sort.md | 2 + .../02_04_linked_list_selection_sort.md | 2 + .../02_05_linked_list_insertion_sort.md | 3 + .../02_06_linked_list_merge_sort.md | 4 + .../02_07_linked_list_quick_sort.md | 2 + .../02_08_linked_list_counting_sort.md | 2 + .../02_09_linked_list_bucket_sort.md | 2 + .../02_11_linked_list_two_pointers.md | 4 + .../03_01_stack_basic.md | 7 + .../03_02_monotone_stack.md | 4 + .../03_03_queue_basic.md | 4 + .../03_04_priority_queue.md | 4 + .../03_06_hash_table.md | 7 + docs/04_string/04_01_string_basic.md | 5 + docs/04_string/04_03_string_brute_force.md | 7 + docs/04_string/04_04_string_rabin_karp.md | 7 + docs/04_string/04_05_string_kmp.md | 7 + docs/04_string/04_06_string_boyer_moore.md | 7 + docs/04_string/04_07_string_horspool.md | 7 + docs/04_string/04_08_string_sunday.md | 7 + .../04_09_string_multi_pattern_matching.md | 21 -- docs/04_string/04_10_trie.md | 7 + docs/05_tree/05_02_binary_tree_traverse.md | 7 + docs/05_tree/05_03_binary_tree_reduction.md | 4 + docs/05_tree/05_04_binary_search_tree.md | 7 + docs/05_tree/05_07_binary_indexed_tree.md | 224 +++++++++++++++++- docs/05_tree/05_08_union_find.md | 7 + docs/06_graph/06_03_graph_dfs.md | 10 + docs/06_graph/06_04_graph_bfs.md | 7 + .../06_05_graph_topological_sorting.md | 4 + .../06_06_graph_minimum_spanning_tree.md | 4 + docs/06_graph/06_07_graph_shortest_path_01.md | 4 + docs/06_graph/06_08_graph_shortest_path_02.md | 4 + .../06_09_graph_multi_source_shortest_path.md | 3 + .../06_10_graph_the_second_shortest_path.md | 2 + ..._graph_system_of_difference_constraints.md | 3 + docs/06_graph/06_12_graph_bipartite_basic.md | 2 + .../06_13_graph_bipartite_matching.md | 4 + .../07_01_enumeration_algorithm.md | 7 + .../07_algorithm/07_02_recursive_algorithm.md | 7 + .../07_03_divide_and_conquer_algorithm.md | 7 + .../07_04_backtracking_algorithm.md | 10 + docs/07_algorithm/07_05_greedy_algorithm.md | 10 + docs/07_algorithm/07_06_bit_operation.md | 7 + .../08_01_dynamic_programming_basic.md | 4 + .../08_02_memoization_search.md | 5 + .../08_03_linear_dp_01.md | 7 + .../08_04_linear_dp_02.md | 7 + .../08_05_knapsack_problem_01.md | 4 + .../08_06_knapsack_problem_02.md | 5 + .../08_08_knapsack_problem_04.md | 3 + .../08_10_interval_dp.md | 9 +- docs/08_dynamic_programming/08_11_tree_dp.md | 4 + .../08_12_state_compression_dp.md | 4 + .../08_13_counting_dp.md | 5 + docs/08_dynamic_programming/08_14_digit_dp.md | 4 + .../08_15_probability_dp.md | 3 + 72 files changed, 559 insertions(+), 36 deletions(-) diff --git a/docs/01_array/01_03_array_bubble_sort.md b/docs/01_array/01_03_array_bubble_sort.md index 660e971c..d1153069 100644 --- a/docs/01_array/01_03_array_bubble_sort.md +++ b/docs/01_array/01_03_array_bubble_sort.md @@ -109,8 +109,8 @@ class Solution: ## 练习题目 -- [0283. 移动零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes.md)(冒泡排序会超时,仅作练习) - [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md)(冒泡排序会超时,仅作练习) +- [0283. 移动零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/move-zeroes.md)(冒泡排序会超时,仅作练习) - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) diff --git a/docs/01_array/01_04_array_selection_sort.md b/docs/01_array/01_04_array_selection_sort.md index c58fdb4e..b3e48d63 100644 --- a/docs/01_array/01_04_array_selection_sort.md +++ b/docs/01_array/01_04_array_selection_sort.md @@ -94,4 +94,6 @@ class Solution: ## 练习题目 +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md)(选择排序会超时,仅作练习) + - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_05_array_insertion_sort.md b/docs/01_array/01_05_array_insertion_sort.md index 59a83238..8ab06c9b 100644 --- a/docs/01_array/01_05_array_insertion_sort.md +++ b/docs/01_array/01_05_array_insertion_sort.md @@ -69,4 +69,6 @@ class Solution: ## 练习题目 +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md)(插入排序会超时,仅作练习) + - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_06_array_shell_sort.md b/docs/01_array/01_06_array_shell_sort.md index 3737a079..656b8c39 100644 --- a/docs/01_array/01_06_array_shell_sort.md +++ b/docs/01_array/01_06_array_shell_sort.md @@ -98,4 +98,7 @@ class Solution: ## 练习题目 +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) +- [0506. 相对名次](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0500-0599/relative-ranks.md) + - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_07_array_merge_sort.md b/docs/01_array/01_07_array_merge_sort.md index 545af79f..f114dca8 100644 --- a/docs/01_array/01_07_array_merge_sort.md +++ b/docs/01_array/01_07_array_merge_sort.md @@ -85,4 +85,11 @@ class Solution: ## 练习题目 + +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) +- [0088. 合并两个有序数组](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/merge-sorted-array.md) +- [LCR 170. 交易逆序对的总数](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md) +- [0315. 计算右侧小于当前元素的个数](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self.md) + + - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_08_array_quick_sort.md b/docs/01_array/01_08_array_quick_sort.md index 862a22d9..eefa24e9 100644 --- a/docs/01_array/01_08_array_quick_sort.md +++ b/docs/01_array/01_08_array_quick_sort.md @@ -146,6 +146,9 @@ class Solution: ## 练习题目 +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) +- [0169. 多数元素](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0100-0199/majority-element.md) + - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/01_array/01_09_array_heap_sort.md b/docs/01_array/01_09_array_heap_sort.md index d8134ccc..a8a3f2da 100644 --- a/docs/01_array/01_09_array_heap_sort.md +++ b/docs/01_array/01_09_array_heap_sort.md @@ -380,4 +380,8 @@ print(Solution().sortArray([10, 25, 6, 8, 7, 1, 20, 23, 16, 19, 17, 3, 18, 14])) ## 练习题目 +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) +- [0215. 数组中的第K个最大元素](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) +- [LCR 159. 库存管理 III](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof.md) + - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_10_array_counting_sort.md b/docs/01_array/01_10_array_counting_sort.md index 0515ea49..6cf1edd0 100644 --- a/docs/01_array/01_10_array_counting_sort.md +++ b/docs/01_array/01_10_array_counting_sort.md @@ -72,4 +72,7 @@ class Solution: ## 练习题目 +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) +- [1122. 数组的相对排序](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/1100-1199/relative-sort-array.md) + - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_11_array_bucket_sort.md b/docs/01_array/01_11_array_bucket_sort.md index b1784808..13606a37 100644 --- a/docs/01_array/01_11_array_bucket_sort.md +++ b/docs/01_array/01_11_array_bucket_sort.md @@ -75,4 +75,8 @@ class Solution: ## 练习题目 +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) +- [0220. 存在重复元素 III](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0200-0299/contains-duplicate-iii.md) +- [0164. 最大间距](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0100-0199/maximum-gap.md) + - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_12_array_radix_sort.md b/docs/01_array/01_12_array_radix_sort.md index 1633f966..7cbf17e2 100644 --- a/docs/01_array/01_12_array_radix_sort.md +++ b/docs/01_array/01_12_array_radix_sort.md @@ -66,4 +66,8 @@ class Solution: ## 练习题目 +- [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) +- [0164. 最大间距](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0100-0199/maximum-gap.md) +- [0561. 数组拆分](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0500-0599/array-partition.md) + - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_13_array_binary_search_01.md b/docs/01_array/01_13_array_binary_search_01.md index 70f38392..b3d4cee6 100644 --- a/docs/01_array/01_13_array_binary_search_01.md +++ b/docs/01_array/01_13_array_binary_search_01.md @@ -158,4 +158,9 @@ class Solution: ## 练习题目 +- [0704. 二分查找](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0700-0799/binary-search.md) +- [0374. 猜数字大小](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0300-0399/guess-number-higher-or-lower.md) +- [0035. 搜索插入位置](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/search-insert-position.md) +- [0167. 两数之和 II - 输入有序数组](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted.md) + - [二分查找题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_14_array_binary_search_02.md b/docs/01_array/01_14_array_binary_search_02.md index 8a8682a9..aa7aeed8 100644 --- a/docs/01_array/01_14_array_binary_search_02.md +++ b/docs/01_array/01_14_array_binary_search_02.md @@ -258,6 +258,12 @@ class Solution: ## 练习题目 +- [0278. 第一个错误的版本](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0200-0299/first-bad-version.md) +- [0069. x 的平方根](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/sqrtx.md) +- [1011. 在 D 天内送达包裹的能力](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days.md) +- [0033. 搜索旋转排序数组](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/search-in-rotated-sorted-array.md) +- [0153. 寻找旋转排序数组中的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array.md) + - [二分查找题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/01_array/01_15_array_two_pointers.md b/docs/01_array/01_15_array_two_pointers.md index bd95a07e..827ec418 100644 --- a/docs/01_array/01_15_array_two_pointers.md +++ b/docs/01_array/01_15_array_two_pointers.md @@ -495,6 +495,13 @@ class Solution: ## 练习题目 +- [0344. 反转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string.md) +- [0345. 反转字符串中的元音字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-vowels-of-a-string.md) +- [0015. 三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum.md) +- [0027. 移除元素](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/remove-element.md) +- [0080. 删除有序数组中的重复项 II](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii.md) +- [0925. 长按键入](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/long-pressed-name.md) + - [双指针题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8F%8C%E6%8C%87%E9%92%88%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/01_array/01_16_array_sliding_window.md b/docs/01_array/01_16_array_sliding_window.md index 567ca086..addc58ed 100644 --- a/docs/01_array/01_16_array_sliding_window.md +++ b/docs/01_array/01_16_array_sliding_window.md @@ -143,7 +143,7 @@ class Solution: ##### 思路 1:复杂度分析 - **时间复杂度**:$O(n)$。 -- **空间复杂度**:$O(n)$。 +- **空间复杂度**:$O(1)$。 ## 4. 不定长度滑动窗口 @@ -277,6 +277,10 @@ class Solution: ## 练习题目 +- [0643. 子数组最大平均数 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/maximum-average-subarray-i.md) +- [0674. 最长连续递增序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-continuous-increasing-subsequence.md) +- [1004. 最大连续1的个数 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/max-consecutive-ones-iii.md) + - [滑动窗口题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/02_linked_list/02_01_linked_list_basic.md b/docs/02_linked_list/02_01_linked_list_basic.md index ef485db7..c88cf04a 100644 --- a/docs/02_linked_list/02_01_linked_list_basic.md +++ b/docs/02_linked_list/02_01_linked_list_basic.md @@ -361,6 +361,13 @@ def removeInside(self, index): ## 练习题目 +- [0707. 设计链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-linked-list.md) +- [0206. 反转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list.md) +- [0203. 移除链表元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/remove-linked-list-elements.md) +- [0328. 奇偶链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/odd-even-linked-list.md) +- [0234. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/palindrome-linked-list.md) +- [0138. 随机链表的复制](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/copy-list-with-random-pointer.md) + - [链表基础题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/02_linked_list/02_03_linked_list_bubble_sort.md b/docs/02_linked_list/02_03_linked_list_bubble_sort.md index 13938287..4e55fcc8 100644 --- a/docs/02_linked_list/02_03_linked_list_bubble_sort.md +++ b/docs/02_linked_list/02_03_linked_list_bubble_sort.md @@ -48,4 +48,6 @@ class Solution: ## 练习题目 +- [0148. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md)(链表冒泡排序会超时,仅做练习) + - [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_04_linked_list_selection_sort.md b/docs/02_linked_list/02_04_linked_list_selection_sort.md index 8fb608cf..33d53773 100644 --- a/docs/02_linked_list/02_04_linked_list_selection_sort.md +++ b/docs/02_linked_list/02_04_linked_list_selection_sort.md @@ -41,4 +41,6 @@ class Solution: ## 练习题目 +- [0148. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md)(链表选择排序会超时,仅做练习) + - [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_05_linked_list_insertion_sort.md b/docs/02_linked_list/02_05_linked_list_insertion_sort.md index 46b62f96..4041a6d0 100644 --- a/docs/02_linked_list/02_05_linked_list_insertion_sort.md +++ b/docs/02_linked_list/02_05_linked_list_insertion_sort.md @@ -53,4 +53,7 @@ class Solution: ## 练习题目 +- [0148. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md)(链表插入排序会超时,仅做练习) +- [0147. 对链表进行插入排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/insertion-sort-list.md) + - [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_06_linked_list_merge_sort.md b/docs/02_linked_list/02_06_linked_list_merge_sort.md index b9f621c7..3a3a4edd 100644 --- a/docs/02_linked_list/02_06_linked_list_merge_sort.md +++ b/docs/02_linked_list/02_06_linked_list_merge_sort.md @@ -64,4 +64,8 @@ class Solution: ## 练习题目 +- [0148. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md) +- [0021. 合并两个有序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-two-sorted-lists.md) +- [0023. 合并 K 个升序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) + - [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_07_linked_list_quick_sort.md b/docs/02_linked_list/02_07_linked_list_quick_sort.md index 17c16c7f..ad7c755f 100644 --- a/docs/02_linked_list/02_07_linked_list_quick_sort.md +++ b/docs/02_linked_list/02_07_linked_list_quick_sort.md @@ -50,4 +50,6 @@ class Solution: ## 练习题目 +- [0148. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md)(链表快速排序会超时,仅做练习) + - [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_08_linked_list_counting_sort.md b/docs/02_linked_list/02_08_linked_list_counting_sort.md index 1fa8311f..146e40b8 100644 --- a/docs/02_linked_list/02_08_linked_list_counting_sort.md +++ b/docs/02_linked_list/02_08_linked_list_counting_sort.md @@ -54,4 +54,6 @@ class Solution: ## 练习题目 +- [0148. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md) + - [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_09_linked_list_bucket_sort.md b/docs/02_linked_list/02_09_linked_list_bucket_sort.md index 8ae6f8e3..15f00c61 100644 --- a/docs/02_linked_list/02_09_linked_list_bucket_sort.md +++ b/docs/02_linked_list/02_09_linked_list_bucket_sort.md @@ -112,4 +112,6 @@ class Solution: ## 练习题目 +- [0148. 排序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/sort-list.md) + - [链表排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/02_linked_list/02_11_linked_list_two_pointers.md b/docs/02_linked_list/02_11_linked_list_two_pointers.md index 1bedb559..5163347c 100644 --- a/docs/02_linked_list/02_11_linked_list_two_pointers.md +++ b/docs/02_linked_list/02_11_linked_list_two_pointers.md @@ -409,4 +409,8 @@ class Solution: ## 练习题目 +- [0141. 环形链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle.md) +- [0142. 环形链表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/linked-list-cycle-ii.md) +- [0019. 删除链表的倒数第 N 个结点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-nth-node-from-end-of-list.md) + - [链表双指针题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%93%BE%E8%A1%A8%E5%8F%8C%E6%8C%87%E9%92%88%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/03_stack_queue_hash_table/03_01_stack_basic.md b/docs/03_stack_queue_hash_table/03_01_stack_basic.md index 0c7e8fad..6b081616 100644 --- a/docs/03_stack_queue_hash_table/03_01_stack_basic.md +++ b/docs/03_stack_queue_hash_table/03_01_stack_basic.md @@ -350,6 +350,13 @@ class Solution: ## 练习题目 +- [0155. 最小栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/min-stack.md) +- [0020. 有效的括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-parentheses.md) +- [0227. 基本计算器 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/basic-calculator-ii.md) +- [0150. 逆波兰表达式求值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/evaluate-reverse-polish-notation.md) +- [0394. 字符串解码](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/decode-string.md) +- [0946. 验证栈序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/validate-stack-sequences.md) + - [栈基础题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%A0%88%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/03_02_monotone_stack.md b/docs/03_stack_queue_hash_table/03_02_monotone_stack.md index bbddc024..4fc4b9be 100644 --- a/docs/03_stack_queue_hash_table/03_02_monotone_stack.md +++ b/docs/03_stack_queue_hash_table/03_02_monotone_stack.md @@ -270,6 +270,10 @@ class Solution: ## 练习题目 +- [0496. 下一个更大元素 I](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/next-greater-element-i.md) +- [0739. 每日温度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/daily-temperatures.md) +- [0316. 去除重复字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/remove-duplicate-letters.md) + - [单调栈题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E8%B0%83%E6%A0%88%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/03_03_queue_basic.md b/docs/03_stack_queue_hash_table/03_03_queue_basic.md index 835a6779..ad0f9319 100644 --- a/docs/03_stack_queue_hash_table/03_03_queue_basic.md +++ b/docs/03_stack_queue_hash_table/03_03_queue_basic.md @@ -329,6 +329,10 @@ class Queue: ## 练习题目 +- [0622. 设计循环队列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/design-circular-queue.md) +- [0346. 数据流中的移动平均值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/moving-average-from-data-stream.md) +- [0225. 用队列实现栈](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-stack-using-queues.md) + - [队列基础题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%98%9F%E5%88%97%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/03_04_priority_queue.md b/docs/03_stack_queue_hash_table/03_04_priority_queue.md index 9ef6ed69..4a6d48a4 100644 --- a/docs/03_stack_queue_hash_table/03_04_priority_queue.md +++ b/docs/03_stack_queue_hash_table/03_04_priority_queue.md @@ -393,6 +393,10 @@ class Solution: ## 练习题目 +- [0215. 数组中的第K个最大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) +- [0347. 前 K 个高频元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/top-k-frequent-elements.md) +- [0451. 根据字符出现频率排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sort-characters-by-frequency.md) + - [优先队列题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BC%98%E5%85%88%E9%98%9F%E5%88%97%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/03_stack_queue_hash_table/03_06_hash_table.md b/docs/03_stack_queue_hash_table/03_06_hash_table.md index 302b2200..8bac1355 100644 --- a/docs/03_stack_queue_hash_table/03_06_hash_table.md +++ b/docs/03_stack_queue_hash_table/03_06_hash_table.md @@ -155,6 +155,13 @@ $343246_{13} = 3 \times 13^5 + 4 \times 13^4 + 3 \times 13^3 + 2 \times 13^2 + 4 ## 练习题目 +- [0217. 存在重复元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate.md) +- [0219. 存在重复元素 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-ii.md) +- [0036. 有效的数独](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/valid-sudoku.md) +- [0349. 两个数组的交集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays.md) +- [0350. 两个数组的交集 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/intersection-of-two-arrays-ii.md) +- [0706. 设计哈希映射](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/design-hashmap.md) + - [哈希表题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%93%88%E5%B8%8C%E8%A1%A8%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_01_string_basic.md b/docs/04_string/04_01_string_basic.md index 62a47516..6a50e756 100644 --- a/docs/04_string/04_01_string_basic.md +++ b/docs/04_string/04_01_string_basic.md @@ -181,6 +181,11 @@ ASCII 编码可以解决以英语为主的语言,可是无法满足中文编 ## 练习题目 +- [0125. 验证回文串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/valid-palindrome.md) +- [0344. 反转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string.md) +- [0557. 反转字符串中的单词 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/reverse-words-in-a-string-iii.md) + + - [字符串基础题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_03_string_brute_force.md b/docs/04_string/04_03_string_brute_force.md index 88964803..d90bd989 100644 --- a/docs/04_string/04_03_string_brute_force.md +++ b/docs/04_string/04_03_string_brute_force.md @@ -47,6 +47,13 @@ BF 算法非常简单,容易理解,但其效率很低。主要是因为在 ## 练习题目 +- [0028. 找出字符串中第一个匹配项的下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md) +- [0459. 重复的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern.md) +- [0686. 重复叠加字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match.md) +- [0796. 旋转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string.md) +- [1408. 数组中的字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array.md) +- [2156. 查找给定哈希值的子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value.md) + - [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_04_string_rabin_karp.md b/docs/04_string/04_04_string_rabin_karp.md index 0a6bcb1b..f7cbf381 100644 --- a/docs/04_string/04_04_string_rabin_karp.md +++ b/docs/04_string/04_04_string_rabin_karp.md @@ -98,6 +98,13 @@ RK 算法可以看做是 BF 算法的一种改进。在 BF 算法中,每一个 ## 练习题目 +- [0028. 找出字符串中第一个匹配项的下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md) +- [0459. 重复的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern.md) +- [0686. 重复叠加字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match.md) +- [0796. 旋转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string.md) +- [1408. 数组中的字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array.md) +- [2156. 查找给定哈希值的子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value.md) + - [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_05_string_kmp.md b/docs/04_string/04_05_string_kmp.md index cd120ce3..cfc3f9c9 100644 --- a/docs/04_string/04_05_string_kmp.md +++ b/docs/04_string/04_05_string_kmp.md @@ -146,6 +146,13 @@ print(kmp("ababbbbaaabbbaaa", "bbbb")) ## 练习题目 +- [0028. 找出字符串中第一个匹配项的下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md) +- [0459. 重复的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern.md) +- [0686. 重复叠加字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match.md) +- [0796. 旋转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string.md) +- [1408. 数组中的字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array.md) +- [2156. 查找给定哈希值的子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value.md) + - [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_06_string_boyer_moore.md b/docs/04_string/04_06_string_boyer_moore.md index 78315d49..4588486a 100644 --- a/docs/04_string/04_06_string_boyer_moore.md +++ b/docs/04_string/04_06_string_boyer_moore.md @@ -325,6 +325,13 @@ print(boyerMoore("", "")) ## 练习题目 +- [0028. 找出字符串中第一个匹配项的下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md) +- [0459. 重复的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern.md) +- [0686. 重复叠加字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match.md) +- [0796. 旋转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string.md) +- [1408. 数组中的字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array.md) +- [2156. 查找给定哈希值的子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value.md) + - [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_07_string_horspool.md b/docs/04_string/04_07_string_horspool.md index 33a5938f..33554449 100644 --- a/docs/04_string/04_07_string_horspool.md +++ b/docs/04_string/04_07_string_horspool.md @@ -98,6 +98,13 @@ print(horspool("abbcfdddbddcaddebc", "bcf")) ## 练习题目 +- [0028. 找出字符串中第一个匹配项的下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md) +- [0459. 重复的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern.md) +- [0686. 重复叠加字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match.md) +- [0796. 旋转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string.md) +- [1408. 数组中的字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array.md) +- [2156. 查找给定哈希值的子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value.md) + - [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/04_string/04_08_string_sunday.md b/docs/04_string/04_08_string_sunday.md index fc1c4ae7..0bb79d8d 100644 --- a/docs/04_string/04_08_string_sunday.md +++ b/docs/04_string/04_08_string_sunday.md @@ -104,4 +104,11 @@ print(sunday("abbcfdddbddcaddebc", "bcf")) ## 练习题目 +- [0028. 找出字符串中第一个匹配项的下标](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/find-the-index-of-the-first-occurrence-in-a-string.md) +- [0459. 重复的子字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/repeated-substring-pattern.md) +- [0686. 重复叠加字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/repeated-string-match.md) +- [0796. 旋转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotate-string.md) +- [1408. 数组中的字符串匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/string-matching-in-an-array.md) +- [2156. 查找给定哈希值的子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2100-2199/find-substring-with-given-hash-value.md) + - [单模式串匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%A8%A1%E5%BC%8F%E4%B8%B2%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/04_string/04_09_string_multi_pattern_matching.md b/docs/04_string/04_09_string_multi_pattern_matching.md index 1be10179..943a9cf6 100644 --- a/docs/04_string/04_09_string_multi_pattern_matching.md +++ b/docs/04_string/04_09_string_multi_pattern_matching.md @@ -60,24 +60,3 @@ AC 自动机的主要应用: - n 为文本串长度 - m 为模式串长度 - k 为所有模式串的总长度 - -## 4. 应用场景 - -1. 文本搜索和过滤 - - 敏感词过滤 - - 关键词提取 - - 文本分类 - -2. 生物信息学 - - DNA 序列匹配 - - 蛋白质序列分析 - -3. 网络安全 - - 入侵检测 - - 病毒特征码匹配 - -4. 自然语言处理 - - 分词 - - 命名实体识别 - - 文本摘要 - diff --git a/docs/04_string/04_10_trie.md b/docs/04_string/04_10_trie.md index 657dfd6f..9ef8e618 100644 --- a/docs/04_string/04_10_trie.md +++ b/docs/04_string/04_10_trie.md @@ -214,6 +214,13 @@ class Trie: # 字典树 ## 练习题目 +- [0208. 实现 Trie (前缀树)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/implement-trie-prefix-tree.md) +- [0677. 键值映射](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/map-sum-pairs.md) +- [1023. 驼峰式匹配](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/camelcase-matching.md) +- [0211. 添加与搜索单词 - 数据结构设计](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/design-add-and-search-words-data-structure.md) +- [0648. 单词替换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/replace-words.md) +- [0676. 实现一个魔法字典](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/implement-magic-dictionary.md) + - [字典树题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%AD%97%E5%85%B8%E6%A0%91%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/05_tree/05_02_binary_tree_traverse.md b/docs/05_tree/05_02_binary_tree_traverse.md index 18bee4dd..b22704a2 100644 --- a/docs/05_tree/05_02_binary_tree_traverse.md +++ b/docs/05_tree/05_02_binary_tree_traverse.md @@ -309,6 +309,13 @@ class Solution: ## 练习题目 +- [0144. 二叉树的前序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-preorder-traversal.md) +- [0094. 二叉树的中序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/binary-tree-inorder-traversal.md) +- [0145. 二叉树的后序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-postorder-traversal.md) +- [0102. 二叉树的层序遍历](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/binary-tree-level-order-traversal.md) +- [0104. 二叉树的最大深度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-depth-of-binary-tree.md) +- [0112. 路径总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/path-sum.md) + - [二叉树的遍历题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%81%8D%E5%8E%86%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/05_tree/05_03_binary_tree_reduction.md b/docs/05_tree/05_03_binary_tree_reduction.md index 5dfdd559..4803395d 100644 --- a/docs/05_tree/05_03_binary_tree_reduction.md +++ b/docs/05_tree/05_03_binary_tree_reduction.md @@ -161,6 +161,10 @@ class Solution: ## 练习题目 +- [0105. 从前序与中序遍历序列构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-preorder-and-inorder-traversal.md) +- [0106. 从中序与后序遍历序列构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/construct-binary-tree-from-inorder-and-postorder-traversal.md) +- [0889. 根据前序和后序遍历构造二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/construct-binary-tree-from-preorder-and-postorder-traversal.md) + - [二叉树的还原题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BF%98%E5%8E%9F%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/05_tree/05_04_binary_search_tree.md b/docs/05_tree/05_04_binary_search_tree.md index 3b05db9e..8e97b8fa 100644 --- a/docs/05_tree/05_04_binary_search_tree.md +++ b/docs/05_tree/05_04_binary_search_tree.md @@ -191,6 +191,13 @@ class Solution: ## 练习题目 +- [0700. 二叉搜索树中的搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/search-in-a-binary-search-tree.md) +- [0701. 二叉搜索树中的插入操作](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/insert-into-a-binary-search-tree.md) +- [0450. 删除二叉搜索树中的节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/delete-node-in-a-bst.md) +- [0098. 验证二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/validate-binary-search-tree.md) +- [0108. 将有序数组转换为二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/convert-sorted-array-to-binary-search-tree.md) +- [0235. 二叉搜索树的最近公共祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/lowest-common-ancestor-of-a-binary-search-tree.md) + - [二叉搜索树题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/05_tree/05_07_binary_indexed_tree.md b/docs/05_tree/05_07_binary_indexed_tree.md index 82638306..5d1a87ad 100644 --- a/docs/05_tree/05_07_binary_indexed_tree.md +++ b/docs/05_tree/05_07_binary_indexed_tree.md @@ -6,25 +6,226 @@ ### 1.2 树状数组的原理 +树状数组的核心思想是利用二进制数的特性,将前缀和分解成多个子区间的和。具体来说: + +1. 每个节点存储的是以该节点为根的子树中所有节点的和 +2. 对于任意一个数 $x$,其二进制表示中最低位的 1 所在的位置决定了该节点在树中的层级 +3. 通过位运算可以快速找到需要更新的节点和需要求和的区间 + +例如,对于数组 $[1, 2, 3, 4, 5]$,其树状数组的结构如下: +``` + [15] + / \ + [3] [12] + / \ / \ +[1] [2] [3] [9] + / \ + [4] [5] +``` + ## 2. 树状数组的基本操作 ### 2.1 树状数组的建立 -### 2.2 树状数组的修改 - -### 2.3 树状数组的求和 - -## 4. 树状数组的常见题型 +```python +class BinaryIndexedTree: + def __init__(self, n): + self.n = n + self.tree = [0] * (n + 1) + + def lowbit(self, x): + return x & (-x) + + def build(self, arr): + for i in range(len(arr)): + self.update(i + 1, arr[i]) +``` -### 4.1 单点更新 + 区间求值 - -### 4.2 区间更新 + 单点求值 +### 2.2 树状数组的修改 -### 4.3 求逆序对数 +```python +def update(self, index, val): + while index <= self.n: + self.tree[index] += val + index += self.lowbit(index) +``` -## 练习题目 +### 2.3 树状数组的求和 -- [树状数组题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%A0%91%E7%8A%B6%E6%95%B0%E7%BB%84%E9%A2%98%E7%9B%AE) +```python +def query(self, index): + res = 0 + while index > 0: + res += self.tree[index] + index -= self.lowbit(index) + return res +``` + +## 3. 树状数组的应用 + +### 3.1 单点更新 + 区间求值 + +这是树状数组最基本的应用,可以高效地: +1. 修改某个位置的值 +2. 查询任意区间的和 + +时间复杂度: +- 单点更新:$O(\log n)$ +- 区间查询:$O(\log n)$ + +具体实现: +```python +class BinaryIndexedTree: + def __init__(self, n): + self.n = n + self.tree = [0] * (n + 1) + + def lowbit(self, x): + return x & (-x) + + def update(self, index, val): + while index <= self.n: + self.tree[index] += val + index += self.lowbit(index) + + def query(self, index): + res = 0 + while index > 0: + res += self.tree[index] + index -= self.lowbit(index) + return res + + def query_range(self, left, right): + return self.query(right) - self.query(left - 1) + +# 使用示例 +def example_single_point_update(): + # 初始化数组 [1, 2, 3, 4, 5] + arr = [1, 2, 3, 4, 5] + n = len(arr) + bit = BinaryIndexedTree(n) + + # 构建树状数组 + for i in range(n): + bit.update(i + 1, arr[i]) + + # 单点更新:将第3个元素加2 + bit.update(3, 2) # arr[2] += 2 + + # 查询区间和:查询[2,4]的和 + sum_range = bit.query_range(2, 4) + print(f"区间[2,4]的和为:{sum_range}") # 输出:区间[2,4]的和为:11 +``` + +### 3.2 区间更新 + 单点求值 + +通过差分数组的思想,可以实现: +1. 区间更新:将区间 $[l, r]$ 的所有值加上 $val$ +2. 单点查询:查询某个位置的值 + +时间复杂度: +- 区间更新:$O(\log n)$ +- 单点查询:$O(\log n)$ + +具体实现: +```python +class RangeUpdateBIT: + def __init__(self, n): + self.n = n + self.tree = [0] * (n + 1) + + def lowbit(self, x): + return x & (-x) + + def update(self, index, val): + while index <= self.n: + self.tree[index] += val + index += self.lowbit(index) + + def query(self, index): + res = 0 + while index > 0: + res += self.tree[index] + index -= self.lowbit(index) + return res + + def range_update(self, left, right, val): + # 在left位置加上val + self.update(left, val) + # 在right+1位置减去val + self.update(right + 1, -val) + +# 使用示例 +def example_range_update(): + # 初始化数组 [0, 0, 0, 0, 0] + n = 5 + bit = RangeUpdateBIT(n) + + # 区间更新:[2,4]区间所有元素加3 + bit.range_update(2, 4, 3) + + # 单点查询:查询第3个元素的值 + value = bit.query(3) + print(f"第3个元素的值为:{value}") # 输出:第3个元素的值为:3 +``` + +### 3.3 求逆序对数 + +利用树状数组可以高效求解数组中的逆序对数量: +1. 对数组进行离散化处理 +2. 从后向前遍历,统计每个数前面比它大的数的个数 +3. 将统计结果累加得到逆序对总数 + +时间复杂度:$O(n \log n)$ + +具体实现: +```python +class InversionCountBIT: + def __init__(self, n): + self.n = n + self.tree = [0] * (n + 1) + + def lowbit(self, x): + return x & (-x) + + def update(self, index, val): + while index <= self.n: + self.tree[index] += val + index += self.lowbit(index) + + def query(self, index): + res = 0 + while index > 0: + res += self.tree[index] + index -= self.lowbit(index) + return res + + def count_inversions(self, arr): + # 离散化处理 + sorted_arr = sorted(set(arr)) + rank = {val: i + 1 for i, val in enumerate(sorted_arr)} + + # 从后向前遍历,统计逆序对 + count = 0 + for i in range(len(arr) - 1, -1, -1): + # 查询当前数前面比它大的数的个数 + count += self.query(rank[arr[i]] - 1) + # 更新当前数的出现次数 + self.update(rank[arr[i]], 1) + + return count + +# 使用示例 +def example_inversion_count(): + # 测试数组 [5, 2, 6, 1, 3] + arr = [5, 2, 6, 1, 3] + n = len(arr) + bit = InversionCountBIT(n) + + # 计算逆序对数量 + inversions = bit.count_inversions(arr) + print(f"数组中的逆序对数量为:{inversions}") # 输出:数组中的逆序对数量为:6 +``` ## 参考资料 @@ -32,4 +233,3 @@ - 【书籍】算法训练营 陈小玉 著 - 【博文】[聊聊树状数组 Binary Indexed Tree - halfrost](https://halfrost.com/binary_indexed_tree/) - 【博文】[树状数组学习笔记 - AcWing](https://www.acwing.com/blog/content/80/) - diff --git a/docs/05_tree/05_08_union_find.md b/docs/05_tree/05_08_union_find.md index 9ba774f4..ce0f3a3b 100644 --- a/docs/05_tree/05_08_union_find.md +++ b/docs/05_tree/05_08_union_find.md @@ -563,6 +563,13 @@ class Solution: ## 练习题目 +- [0990. 等式方程的可满足性](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/satisfiability-of-equality-equations.md) +- [1202. 交换字符串中的元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/smallest-string-with-swaps.md) +- [0947. 移除最多的同行或同列石头](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/most-stones-removed-with-same-row-or-column.md) +- [0547. 省份数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/number-of-provinces.md) +- [0684. 冗余连接](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/redundant-connection.md) +- [0765. 情侣牵手](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/couples-holding-hands.md) + - [并查集题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%B9%B6%E6%9F%A5%E9%9B%86%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/06_graph/06_03_graph_dfs.md b/docs/06_graph/06_03_graph_dfs.md index 9f698380..f3f0634b 100644 --- a/docs/06_graph/06_03_graph_dfs.md +++ b/docs/06_graph/06_03_graph_dfs.md @@ -326,6 +326,16 @@ class Solution: ## 练习题目 +- [0200. 岛屿数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/number-of-islands.md) +- [0133. 克隆图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/clone-graph.md) +- [0494. 目标和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum.md) +- [0841. 钥匙和房间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/keys-and-rooms.md) +- [0695. 岛屿的最大面积](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/max-area-of-island.md) +- [0130. 被围绕的区域](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/surrounded-regions.md) +- [0417. 太平洋大西洋水流问题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/pacific-atlantic-water-flow.md) +- [1020. 飞地的数量](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/number-of-enclaves.md) +- [1254. 统计封闭岛屿的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/number-of-closed-islands.md) + - [深度优先搜索题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/06_graph/06_04_graph_bfs.md b/docs/06_graph/06_04_graph_bfs.md index c7eeef70..7f1e8aff 100644 --- a/docs/06_graph/06_04_graph_bfs.md +++ b/docs/06_graph/06_04_graph_bfs.md @@ -271,6 +271,13 @@ class Solution: ## 练习题目 +- [0463. 岛屿的周长](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/island-perimeter.md) +- [0752. 打开转盘锁](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/open-the-lock.md) +- [0279. 完全平方数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/perfect-squares.md) +- [0542. 01 矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/01-matrix.md) +- [0322. 零钱兑换](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/coin-change.md) +- [LCR 130. 衣橱整理](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/ji-qi-ren-de-yun-dong-fan-wei-lcof.md) + - [广度优先搜索题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%B9%BF%E5%BA%A6%E4%BC%98%E5%85%88%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/06_graph/06_05_graph_topological_sorting.md b/docs/06_graph/06_05_graph_topological_sorting.md index e99435c4..710ea820 100644 --- a/docs/06_graph/06_05_graph_topological_sorting.md +++ b/docs/06_graph/06_05_graph_topological_sorting.md @@ -347,4 +347,8 @@ class Solution: ## 练习题目 +- [0207. 课程表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule.md) +- [0210. 课程表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/course-schedule-ii.md) +- [0802. 找到最终的安全状态](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/find-eventual-safe-states.md) + - [拓扑排序题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%8B%93%E6%89%91%E6%8E%92%E5%BA%8F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_06_graph_minimum_spanning_tree.md b/docs/06_graph/06_06_graph_minimum_spanning_tree.md index e07e7449..7485f2a8 100644 --- a/docs/06_graph/06_06_graph_minimum_spanning_tree.md +++ b/docs/06_graph/06_06_graph_minimum_spanning_tree.md @@ -212,4 +212,8 @@ Kruskal 算法的时间复杂度主要取决于以下几个因素: ## 练习题目 +- [1584. 连接所有点的最小费用](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/min-cost-to-connect-all-points.md) +- [1631. 最小体力消耗路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort.md) +- [0778. 水位上升的泳池中游泳](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/swim-in-rising-water.md) + - [图的最小生成树题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%BE%E7%9A%84%E6%9C%80%E5%B0%8F%E7%94%9F%E6%88%90%E6%A0%91%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_07_graph_shortest_path_01.md b/docs/06_graph/06_07_graph_shortest_path_01.md index 2989d1eb..233593ce 100644 --- a/docs/06_graph/06_07_graph_shortest_path_01.md +++ b/docs/06_graph/06_07_graph_shortest_path_01.md @@ -205,4 +205,8 @@ for i in range(1, n + 1): ## 练习题目 +- [0743. 网络延迟时间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/network-delay-time.md) +- [0787. K 站中转内最便宜的航班](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/cheapest-flights-within-k-stops.md) +- [1631. 最小体力消耗路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort.md) + - [单源最短路径题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_08_graph_shortest_path_02.md b/docs/06_graph/06_08_graph_shortest_path_02.md index 28199d5d..8bb4c6df 100644 --- a/docs/06_graph/06_08_graph_shortest_path_02.md +++ b/docs/06_graph/06_08_graph_shortest_path_02.md @@ -162,4 +162,8 @@ def spfa(graph, n, source): ## 练习题目 +- [0743. 网络延迟时间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/network-delay-time.md) +- [0787. K 站中转内最便宜的航班](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/cheapest-flights-within-k-stops.md) +- [1631. 最小体力消耗路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/path-with-minimum-effort.md) + - [单源最短路径题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_09_graph_multi_source_shortest_path.md b/docs/06_graph/06_09_graph_multi_source_shortest_path.md index dbad8913..c0c7db58 100644 --- a/docs/06_graph/06_09_graph_multi_source_shortest_path.md +++ b/docs/06_graph/06_09_graph_multi_source_shortest_path.md @@ -203,4 +203,7 @@ def johnson(graph, n): ## 练习题目 +- [0815. 公交路线](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/bus-routes.md) +- [1162. 地图分析](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/as-far-from-land-as-possible.md) + - [多源最短路径题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E6%BA%90%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_10_graph_the_second_shortest_path.md b/docs/06_graph/06_10_graph_the_second_shortest_path.md index 6274033d..47864e21 100644 --- a/docs/06_graph/06_10_graph_the_second_shortest_path.md +++ b/docs/06_graph/06_10_graph_the_second_shortest_path.md @@ -132,4 +132,6 @@ print(f"次短路径长度: {result}") ## 练习题目 +- [2045. 到达目的地的第二短时间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2000-2099/second-minimum-time-to-reach-destination.md) + - [次短路径题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%AC%A1%E7%9F%AD%E8%B7%AF%E5%BE%84%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_11_graph_system_of_difference_constraints.md b/docs/06_graph/06_11_graph_system_of_difference_constraints.md index 646ad729..8a3b184b 100644 --- a/docs/06_graph/06_11_graph_system_of_difference_constraints.md +++ b/docs/06_graph/06_11_graph_system_of_difference_constraints.md @@ -121,4 +121,7 @@ def solve_difference_constraints(n, constraints): ## 练习题目 +- [0995. K 连续位的最小翻转次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/minimum-number-of-k-consecutive-bit-flips.md) +- [1109. 航班预订统计](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/corporate-flight-bookings.md) + - [差分约束系统题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%B7%AE%E5%88%86%E7%BA%A6%E6%9D%9F%E7%B3%BB%E7%BB%9F%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_12_graph_bipartite_basic.md b/docs/06_graph/06_12_graph_bipartite_basic.md index 43377af5..65824e5e 100644 --- a/docs/06_graph/06_12_graph_bipartite_basic.md +++ b/docs/06_graph/06_12_graph_bipartite_basic.md @@ -73,4 +73,6 @@ def is_bipartite(graph): ## 练习题目 +- [0785. 判断二分图](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/is-graph-bipartite.md) + - [二分图基础题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E5%9B%BE%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/06_graph/06_13_graph_bipartite_matching.md b/docs/06_graph/06_13_graph_bipartite_matching.md index 562cdc8b..ce29d25d 100644 --- a/docs/06_graph/06_13_graph_bipartite_matching.md +++ b/docs/06_graph/06_13_graph_bipartite_matching.md @@ -278,4 +278,8 @@ def max_flow_bipartite_matching(graph, left_size, right_size): ## 练习题目 +- [LCP 04. 覆盖](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCP/broken-board-dominoes.md) +- [1947. 最大兼容性评分和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum.md) +- [1595. 连通两组点的最小成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-connect-two-groups-of-points.md) + - [二分图最大匹配题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E5%9B%BE%E6%9C%80%E5%A4%A7%E5%8C%B9%E9%85%8D%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/07_algorithm/07_01_enumeration_algorithm.md b/docs/07_algorithm/07_01_enumeration_algorithm.md index f791c42c..bf8b5080 100644 --- a/docs/07_algorithm/07_01_enumeration_algorithm.md +++ b/docs/07_algorithm/07_01_enumeration_algorithm.md @@ -281,4 +281,11 @@ class Solution: ## 练习题目 +- [0001. 两数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum.md) +- [0204. 计数质数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-primes.md) +- [1925. 统计平方和三元组的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-square-sum-triples.md) +- [2427. 公因子的数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2400-2499/number-of-common-factors.md) +- [LCR 180. 文件组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof.md) +- [2249. 统计圆内格点数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2200-2299/count-lattice-points-inside-a-circle.md) + - [枚举算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%9E%9A%E4%B8%BE%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/07_algorithm/07_02_recursive_algorithm.md b/docs/07_algorithm/07_02_recursive_algorithm.md index 46e4548d..050e9061 100644 --- a/docs/07_algorithm/07_02_recursive_algorithm.md +++ b/docs/07_algorithm/07_02_recursive_algorithm.md @@ -317,6 +317,13 @@ class Solution: ## 练习题目 +- [0509. 斐波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number.md) +- [0070. 爬楼梯](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs.md) +- [0226. 翻转二叉树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/invert-binary-tree.md) +- [0206. 反转链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/reverse-linked-list.md) +- [0092. 反转链表 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/reverse-linked-list-ii.md) +- [0779. 第K个语法符号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/k-th-symbol-in-grammar.md) + - [递归算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E9%80%92%E5%BD%92%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md b/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md index 6377477a..fb1d8b90 100644 --- a/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md +++ b/docs/07_algorithm/07_03_divide_and_conquer_algorithm.md @@ -248,6 +248,13 @@ class Solution: ## 练习题目 +- [0050. Pow(x, n)](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n.md) +- [0169. 多数元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) +- [0053. 最大子数组和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) +- [0932. 漂亮数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/beautiful-array.md) +- [0241. 为运算表达式设计优先级](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/different-ways-to-add-parentheses.md) +- [0023. 合并 K 个升序链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) + - [分治算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E6%B2%BB%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/07_algorithm/07_04_backtracking_algorithm.md b/docs/07_algorithm/07_04_backtracking_algorithm.md index 7b18ed3d..0950bf5e 100644 --- a/docs/07_algorithm/07_04_backtracking_algorithm.md +++ b/docs/07_algorithm/07_04_backtracking_algorithm.md @@ -399,6 +399,16 @@ class Solution: ## 练习题目 +- [0046. 全排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations.md) +- [0047. 全排列 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/permutations-ii.md) +- [0022. 括号生成](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/generate-parentheses.md) +- [0017. 电话号码的字母组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/letter-combinations-of-a-phone-number.md) +- [0039. 组合总和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum.md) +- [0040. 组合总和 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/combination-sum-ii.md) +- [0078. 子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets.md) +- [0090. 子集 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/subsets-ii.md) +- [0079. 单词搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/word-search.md) + - [回溯算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%9B%9E%E6%BA%AF%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/07_algorithm/07_05_greedy_algorithm.md b/docs/07_algorithm/07_05_greedy_algorithm.md index 6b33e470..9ea54759 100644 --- a/docs/07_algorithm/07_05_greedy_algorithm.md +++ b/docs/07_algorithm/07_05_greedy_algorithm.md @@ -233,6 +233,16 @@ class Solution: ## 练习题目 +- [0455. 分发饼干](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/assign-cookies.md) +- [0860. 柠檬水找零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/lemonade-change.md) +- [0135. 分发糖果](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/candy.md) +- [0055. 跳跃游戏](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game.md) +- [0045. 跳跃游戏 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/jump-game-ii.md) +- [0881. 救生艇](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/boats-to-save-people.md) +- [0435. 无重叠区间](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/non-overlapping-intervals.md) +- [0452. 用最少数量的箭引爆气球](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/minimum-number-of-arrows-to-burst-balloons.md) +- [1710. 卡车上的最大单元数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-units-on-a-truck.md) + - [贪心算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/07_algorithm/07_06_bit_operation.md b/docs/07_algorithm/07_06_bit_operation.md index f9c67ff6..52bd9791 100644 --- a/docs/07_algorithm/07_06_bit_operation.md +++ b/docs/07_algorithm/07_06_bit_operation.md @@ -312,6 +312,13 @@ class Solution: ## 练习题目 +- [0190. 颠倒二进制位](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-bits.md) +- [0191. 位1的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits.md) +- [0201. 数字范围按位与](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/bitwise-and-of-numbers-range.md) +- [0136. 只出现一次的数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number.md) +- [0137. 只出现一次的数字 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/single-number-ii.md) +- [0260. 只出现一次的数字 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/single-number-iii.md) + - [位运算题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BD%8D%E8%BF%90%E7%AE%97%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md b/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md index 00fd10d4..4d4e4402 100644 --- a/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md +++ b/docs/08_dynamic_programming/08_01_dynamic_programming_basic.md @@ -386,6 +386,10 @@ class Solution: ## 题目练习 +- [0509. 斐波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number.md) +- [0070. 爬楼梯](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/climbing-stairs.md) +- [0062. 不同路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths.md) + - [动态规划基础题目](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E5%9F%BA%E7%A1%80%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_02_memoization_search.md b/docs/08_dynamic_programming/08_02_memoization_search.md index 3143d118..b305026f 100644 --- a/docs/08_dynamic_programming/08_02_memoization_search.md +++ b/docs/08_dynamic_programming/08_02_memoization_search.md @@ -279,6 +279,11 @@ class Solution: ## 题目练习 +- [0494. 目标和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum.md) +- [1137. 第 N 个泰波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number.md) +- [0576. 出界的路径数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths.md) + + - [记忆化搜索题目](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E8%AE%B0%E5%BF%86%E5%8C%96%E6%90%9C%E7%B4%A2%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_03_linear_dp_01.md b/docs/08_dynamic_programming/08_03_linear_dp_01.md index af6483e1..3a2e1705 100644 --- a/docs/08_dynamic_programming/08_03_linear_dp_01.md +++ b/docs/08_dynamic_programming/08_03_linear_dp_01.md @@ -741,6 +741,13 @@ class Solution: ## 题目练习 +- [0300. 最长递增子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/longest-increasing-subsequence.md) +- [0053. 最大子数组和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) +- [0198. 打家劫舍](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/house-robber.md) +- [0213. 打家劫舍 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/house-robber-ii.md) +- [0873. 最长的斐波那契子序列的长度](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/length-of-longest-fibonacci-subsequence.md) +- [1143. 最长公共子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/longest-common-subsequence.md) + - [单串线性 DP 问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8D%95%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) - [双串线性 DP 问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8F%8C%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) diff --git a/docs/08_dynamic_programming/08_04_linear_dp_02.md b/docs/08_dynamic_programming/08_04_linear_dp_02.md index b74395cf..ee77a993 100644 --- a/docs/08_dynamic_programming/08_04_linear_dp_02.md +++ b/docs/08_dynamic_programming/08_04_linear_dp_02.md @@ -372,6 +372,13 @@ class Solution: ## 题目练习 +- [0718. 最长重复子数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/maximum-length-of-repeated-subarray.md) +- [0072. 编辑距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/edit-distance.md) +- [0064. 最小路径和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/minimum-path-sum.md) +- [0221. 最大正方形](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/maximal-square.md) +- [0343. 整数拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break.md) +- [0650. 两个键的键盘](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/2-keys-keyboard.md) + - [矩阵线性 DP 问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E7%9F%A9%E9%98%B5%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) - [矩阵线性 DP 问题题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%97%A0%E4%B8%B2%E7%BA%BF%E6%80%A7-dp-%E9%97%AE%E9%A2%98) diff --git a/docs/08_dynamic_programming/08_05_knapsack_problem_01.md b/docs/08_dynamic_programming/08_05_knapsack_problem_01.md index 47117f74..bc825b04 100644 --- a/docs/08_dynamic_programming/08_05_knapsack_problem_01.md +++ b/docs/08_dynamic_programming/08_05_knapsack_problem_01.md @@ -264,6 +264,10 @@ class Solution: ## 练习题目 +- [0416. 分割等和子集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/partition-equal-subset-sum.md) +- [0494. 目标和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/target-sum.md) +- [1049. 最后一块石头的重量 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/last-stone-weight-ii.md) + - [0-1 背包问题题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#0-1-%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) diff --git a/docs/08_dynamic_programming/08_06_knapsack_problem_02.md b/docs/08_dynamic_programming/08_06_knapsack_problem_02.md index 586ff242..c6e11f91 100644 --- a/docs/08_dynamic_programming/08_06_knapsack_problem_02.md +++ b/docs/08_dynamic_programming/08_06_knapsack_problem_02.md @@ -238,6 +238,11 @@ class Solution: ## 练习题目 +- [0279. 完全平方数]() +- [0322. 零钱兑换]() +- [0518. 零钱兑换 II]() +- [0377. 组合总和 IV]() + - [完全背包问题题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_08_knapsack_problem_04.md b/docs/08_dynamic_programming/08_08_knapsack_problem_04.md index 5bcadfea..af9fee9f 100644 --- a/docs/08_dynamic_programming/08_08_knapsack_problem_04.md +++ b/docs/08_dynamic_programming/08_08_knapsack_problem_04.md @@ -324,6 +324,9 @@ class Solution: ## 练习题目 +- [1155. 掷骰子等于目标和的方法数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/number-of-dice-rolls-with-target-sum.md) +- [0474. 一和零](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/ones-and-zeroes.md) + - [分组背包问题题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) - [多维背包问题题目列表](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%A4%9A%E7%BB%B4%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98%E9%A2%98%E7%9B%AE) diff --git a/docs/08_dynamic_programming/08_10_interval_dp.md b/docs/08_dynamic_programming/08_10_interval_dp.md index 2d62e25a..179e9359 100644 --- a/docs/08_dynamic_programming/08_10_interval_dp.md +++ b/docs/08_dynamic_programming/08_10_interval_dp.md @@ -381,4 +381,11 @@ class Solution: ## 练习题目 -- [区间 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8C%BA%E9%97%B4-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [0005. 最长回文子串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-palindromic-substring.md) +- [0516. 最长回文子序列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/longest-palindromic-subsequence.md) +- [0312. 戳气球](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/burst-balloons.md) +- [0486. 预测赢家](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/predict-the-winner.md) +- [1547. 切棍子的最小成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick.md) +- [0664. 奇怪的打印机](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/strange-printer.md) + +- [区间 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8C%BA%E9%97%B4-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/08_dynamic_programming/08_11_tree_dp.md b/docs/08_dynamic_programming/08_11_tree_dp.md index 8b9e682e..8229820b 100644 --- a/docs/08_dynamic_programming/08_11_tree_dp.md +++ b/docs/08_dynamic_programming/08_11_tree_dp.md @@ -394,6 +394,10 @@ class Solution: ## 练习题目 +- [0687. 最长同值路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/longest-univalue-path.md) +- [1617. 统计子树中城市之间最大距离](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/count-subtrees-with-max-distance-between-cities.md) +- [0834. 树中距离之和]https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0800-0899/sum-of-distances-in-tree.md) + - [树形 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E7%8A%B6%E6%80%81%E5%8E%8B%E7%BC%A9-dp-%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_12_state_compression_dp.md b/docs/08_dynamic_programming/08_12_state_compression_dp.md index da531d88..2f54b02c 100644 --- a/docs/08_dynamic_programming/08_12_state_compression_dp.md +++ b/docs/08_dynamic_programming/08_12_state_compression_dp.md @@ -324,4 +324,8 @@ class Solution: ## 练习题目 +- [1879. 两个数组最小的异或值之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-xor-sum-of-two-arrays.md) +- [1947. 最大兼容性评分和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/maximum-compatibility-score-sum.md) +- [0526. 优美的排列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/beautiful-arrangement.md) + - [状态压缩 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E7%8A%B6%E6%80%81%E5%8E%8B%E7%BC%A9-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/08_dynamic_programming/08_13_counting_dp.md b/docs/08_dynamic_programming/08_13_counting_dp.md index 926fc816..0c1f9997 100644 --- a/docs/08_dynamic_programming/08_13_counting_dp.md +++ b/docs/08_dynamic_programming/08_13_counting_dp.md @@ -204,4 +204,9 @@ class Solution: ## 练习题目 +- [0063. 不同路径 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/unique-paths-ii.md) +- [0343. 整数拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/integer-break.md) +- [1137. 第 N 个泰波那契数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/n-th-tribonacci-number.md) + + - [计数 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%95%B0%E4%BD%8D-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/08_dynamic_programming/08_14_digit_dp.md b/docs/08_dynamic_programming/08_14_digit_dp.md index 23e7ceed..386283f4 100644 --- a/docs/08_dynamic_programming/08_14_digit_dp.md +++ b/docs/08_dynamic_programming/08_14_digit_dp.md @@ -368,6 +368,10 @@ class Solution: ## 练习题目 +- [0357. 统计各位数字都不同的数字个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-numbers-with-unique-digits.md) +- [0788. 旋转数字](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/rotated-digits.md) +- [2719. 统计整数数目](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/count-of-integers.md) + - [数位 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%95%B0%E4%BD%8D-dp-%E9%A2%98%E7%9B%AE) ## 参考资料 diff --git a/docs/08_dynamic_programming/08_15_probability_dp.md b/docs/08_dynamic_programming/08_15_probability_dp.md index 66a09526..3a1446de 100644 --- a/docs/08_dynamic_programming/08_15_probability_dp.md +++ b/docs/08_dynamic_programming/08_15_probability_dp.md @@ -64,6 +64,9 @@ ## 练习题目 +- [0688. 骑士在棋盘上的概率](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0600-0699/knight-probability-in-chessboard.md) +- [1227. 飞机座位分配概率](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/1200-1299/airplane-seat-assignment-probability.md) + - [概率 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%A6%82%E7%8E%87-dp-%E9%A2%98%E7%9B%AE) ## 参考资料 From 6a7ef98bd1d80753e232561f3971a6791b8cd4bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E4=B8=96=E8=B6=85?= Date: Fri, 4 Jul 2025 17:06:46 +0800 Subject: [PATCH 155/158] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/00_preface/00_04_leetcode_guide.md | 12 +++--------- docs/00_preface/00_07_interview_100_list.md | 2 +- docs/01_array/01_06_array_shell_sort.md | 2 +- docs/01_array/01_07_array_merge_sort.md | 6 +++--- docs/01_array/01_08_array_quick_sort.md | 2 +- docs/01_array/01_09_array_heap_sort.md | 4 ++-- docs/01_array/01_10_array_counting_sort.md | 2 +- docs/01_array/01_11_array_bucket_sort.md | 4 ++-- docs/01_array/01_12_array_radix_sort.md | 4 ++-- docs/01_array/01_13_array_binary_search_01.md | 8 ++++---- docs/01_array/01_14_array_binary_search_02.md | 8 ++++---- docs/01_array/01_15_array_two_pointers.md | 4 ++-- docs/08_dynamic_programming/08_10_interval_dp.md | 2 +- docs/08_dynamic_programming/08_15_probability_dp.md | 4 ++-- 14 files changed, 29 insertions(+), 35 deletions(-) diff --git a/docs/00_preface/00_04_leetcode_guide.md b/docs/00_preface/00_04_leetcode_guide.md index dec8242d..18407a0a 100644 --- a/docs/00_preface/00_04_leetcode_guide.md +++ b/docs/00_preface/00_04_leetcode_guide.md @@ -183,20 +183,14 @@ LeetCode 的题目序号并不是按照难易程度进行排序的,所以除 或者直接按照我整理的分类刷题列表进行刷题: -- 刷题列表(GitHub 版)链接:[点击打开「GitHub 版分类刷题列表」](https://github.com/ITCharge/AlgoNote/tree/main/Contents/00.Introduction/05.Categories-List.md) -- 刷题列表(网页版)链接:[点击打开「网页版分类刷题列表」](https://algo.itcharge.cn/00.Introduction/05.Categories-List/) +- LeetCode 分类刷题列表:[点击打开「LeetCode 分类刷题列表」](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md) 正在准备面试、没有太多时间刷题的小伙伴,可以按照我总结的「LeetCode 面试最常考 100 题」、「LeetCode 面试最常考 200 题」进行刷题。 > **说明**:「LeetCode 面试最常考 100 题」、「LeetCode 面试最常考 200 题」是笔者根据「[CodeTop 企业题库](https://codetop.cc/home)」按频度从高到低进行筛选,并且去除了一部分 LeetCode 上没有的题目和重复题目后得到的题目清单。 -- 「LeetCode 面试最常考 100 题(GitHub 版)」链接:[点击打开「LeetCode 面试最常考 100 题(GitHub 版)」](https://github.com/ITCharge/AlgoNote/tree/main/Contents/00.Introduction/06.Interview-100-List.md) -- 「LeetCode 面试最常考 200 题(GitHub 版)」链接:[点击打开「LeetCode 面试最常考 200 题(GitHub 版)」](https://github.com/ITCharge/AlgoNote/tree/main/Contents/00.Introduction/07.Interview-200-List.md) - ---- - -- 「LeetCode 面试最常考 100 题(网页版)」链接:[点击打开「LeetCode 面试最常考 100 题(网页版)」](https://algo.itcharge.cn/00.Introduction/06.Interview-100-List/) -- 「LeetCode 面试最常考 200 题(网页版)」链接:[点击打开「LeetCode 面试最常考 200 题(网页版)」](https://algo.itcharge.cn/00.Introduction/07.Interview-200-List/) +- 「LeetCode 面试最常考 100 题:[点击打开「LeetCode 面试最常考 100 题」](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_07_interview_100_list.md) +- 「LeetCode 面试最常考 200 题:[点击打开「LeetCode 面试最常考 200 题」](https://github.com/itcharge/AlgoNote/tree/main/docs/00_preface/00_08_interview_200_list.md) ### 3.3 LeetCode 刷题技巧 diff --git a/docs/00_preface/00_07_interview_100_list.md b/docs/00_preface/00_07_interview_100_list.md index f9cc743a..d289f01e 100644 --- a/docs/00_preface/00_07_interview_100_list.md +++ b/docs/00_preface/00_07_interview_100_list.md @@ -1,4 +1,4 @@ -# LeetCode 面试最常考 200 题(按分类排序) +# LeetCode 面试最常考 100 题(按分类排序) ## 第 1 章 数组 diff --git a/docs/01_array/01_06_array_shell_sort.md b/docs/01_array/01_06_array_shell_sort.md index 656b8c39..866ba1c4 100644 --- a/docs/01_array/01_06_array_shell_sort.md +++ b/docs/01_array/01_06_array_shell_sort.md @@ -99,6 +99,6 @@ class Solution: ## 练习题目 - [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) -- [0506. 相对名次](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0500-0599/relative-ranks.md) +- [0506. 相对名次](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/relative-ranks.md) - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_07_array_merge_sort.md b/docs/01_array/01_07_array_merge_sort.md index f114dca8..9fce7622 100644 --- a/docs/01_array/01_07_array_merge_sort.md +++ b/docs/01_array/01_07_array_merge_sort.md @@ -87,9 +87,9 @@ class Solution: - [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) -- [0088. 合并两个有序数组](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/merge-sorted-array.md) -- [LCR 170. 交易逆序对的总数](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md) -- [0315. 计算右侧小于当前元素的个数](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self.md) +- [0088. 合并两个有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-sorted-array.md) +- [LCR 170. 交易逆序对的总数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/shu-zu-zhong-de-ni-xu-dui-lcof.md) +- [0315. 计算右侧小于当前元素的个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/count-of-smaller-numbers-after-self.md) - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_08_array_quick_sort.md b/docs/01_array/01_08_array_quick_sort.md index eefa24e9..a701de70 100644 --- a/docs/01_array/01_08_array_quick_sort.md +++ b/docs/01_array/01_08_array_quick_sort.md @@ -147,7 +147,7 @@ class Solution: ## 练习题目 - [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) -- [0169. 多数元素](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0100-0199/majority-element.md) +- [0169. 多数元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) diff --git a/docs/01_array/01_09_array_heap_sort.md b/docs/01_array/01_09_array_heap_sort.md index a8a3f2da..73530b41 100644 --- a/docs/01_array/01_09_array_heap_sort.md +++ b/docs/01_array/01_09_array_heap_sort.md @@ -381,7 +381,7 @@ print(Solution().sortArray([10, 25, 6, 8, 7, 1, 20, 23, 16, 19, 17, 3, 18, 14])) ## 练习题目 - [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) -- [0215. 数组中的第K个最大元素](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) -- [LCR 159. 库存管理 III](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof.md) +- [0215. 数组中的第K个最大元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/kth-largest-element-in-an-array.md) +- [LCR 159. 库存管理 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/zui-xiao-de-kge-shu-lcof.md) - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_10_array_counting_sort.md b/docs/01_array/01_10_array_counting_sort.md index 6cf1edd0..37e8292d 100644 --- a/docs/01_array/01_10_array_counting_sort.md +++ b/docs/01_array/01_10_array_counting_sort.md @@ -73,6 +73,6 @@ class Solution: ## 练习题目 - [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) -- [1122. 数组的相对排序](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/1100-1199/relative-sort-array.md) +- [1122. 数组的相对排序](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1100-1199/relative-sort-array.md) - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_11_array_bucket_sort.md b/docs/01_array/01_11_array_bucket_sort.md index 13606a37..ed8d3d08 100644 --- a/docs/01_array/01_11_array_bucket_sort.md +++ b/docs/01_array/01_11_array_bucket_sort.md @@ -76,7 +76,7 @@ class Solution: ## 练习题目 - [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) -- [0220. 存在重复元素 III](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0200-0299/contains-duplicate-iii.md) -- [0164. 最大间距](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0100-0199/maximum-gap.md) +- [0220. 存在重复元素 III](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/contains-duplicate-iii.md) +- [0164. 最大间距](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap.md) - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_12_array_radix_sort.md b/docs/01_array/01_12_array_radix_sort.md index 7cbf17e2..f21b2783 100644 --- a/docs/01_array/01_12_array_radix_sort.md +++ b/docs/01_array/01_12_array_radix_sort.md @@ -67,7 +67,7 @@ class Solution: ## 练习题目 - [0912. 排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/sort-an-array.md) -- [0164. 最大间距](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0100-0199/maximum-gap.md) -- [0561. 数组拆分](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0500-0599/array-partition.md) +- [0164. 最大间距](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/maximum-gap.md) +- [0561. 数组拆分](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/array-partition.md) - [排序算法题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_13_array_binary_search_01.md b/docs/01_array/01_13_array_binary_search_01.md index b3d4cee6..f77ca0ac 100644 --- a/docs/01_array/01_13_array_binary_search_01.md +++ b/docs/01_array/01_13_array_binary_search_01.md @@ -158,9 +158,9 @@ class Solution: ## 练习题目 -- [0704. 二分查找](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0700-0799/binary-search.md) -- [0374. 猜数字大小](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0300-0399/guess-number-higher-or-lower.md) -- [0035. 搜索插入位置](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/search-insert-position.md) -- [0167. 两数之和 II - 输入有序数组](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted.md) +- [0704. 二分查找](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0700-0799/binary-search.md) +- [0374. 猜数字大小](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/guess-number-higher-or-lower.md) +- [0035. 搜索插入位置](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-insert-position.md) +- [0167. 两数之和 II - 输入有序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/two-sum-ii-input-array-is-sorted.md) - [二分查找题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/01_array/01_14_array_binary_search_02.md b/docs/01_array/01_14_array_binary_search_02.md index aa7aeed8..2f2cbf79 100644 --- a/docs/01_array/01_14_array_binary_search_02.md +++ b/docs/01_array/01_14_array_binary_search_02.md @@ -258,10 +258,10 @@ class Solution: ## 练习题目 -- [0278. 第一个错误的版本](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0200-0299/first-bad-version.md) -- [0069. x 的平方根](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/sqrtx.md) -- [1011. 在 D 天内送达包裹的能力](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days.md) -- [0033. 搜索旋转排序数组](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/search-in-rotated-sorted-array.md) +- [0278. 第一个错误的版本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/first-bad-version.md) +- [0069. x 的平方根](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/sqrtx.md) +- [1011. 在 D 天内送达包裹的能力](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/capacity-to-ship-packages-within-d-days.md) +- [0033. 搜索旋转排序数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/search-in-rotated-sorted-array.md) - [0153. 寻找旋转排序数组中的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/find-minimum-in-rotated-sorted-array.md) - [二分查找题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE%E9%A2%98%E7%9B%AE) diff --git a/docs/01_array/01_15_array_two_pointers.md b/docs/01_array/01_15_array_two_pointers.md index 827ec418..af319093 100644 --- a/docs/01_array/01_15_array_two_pointers.md +++ b/docs/01_array/01_15_array_two_pointers.md @@ -498,8 +498,8 @@ class Solution: - [0344. 反转字符串](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-string.md) - [0345. 反转字符串中的元音字母](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/reverse-vowels-of-a-string.md) - [0015. 三数之和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum.md) -- [0027. 移除元素](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/remove-element.md) -- [0080. 删除有序数组中的重复项 II](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii.md) +- [0027. 移除元素](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-element.md) +- [0080. 删除有序数组中的重复项 II](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/remove-duplicates-from-sorted-array-ii.md) - [0925. 长按键入](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/long-pressed-name.md) - [双指针题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8F%8C%E6%8C%87%E9%92%88%E9%A2%98%E7%9B%AE) diff --git a/docs/08_dynamic_programming/08_10_interval_dp.md b/docs/08_dynamic_programming/08_10_interval_dp.md index 179e9359..fa594b83 100644 --- a/docs/08_dynamic_programming/08_10_interval_dp.md +++ b/docs/08_dynamic_programming/08_10_interval_dp.md @@ -388,4 +388,4 @@ class Solution: - [1547. 切棍子的最小成本](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1500-1599/minimum-cost-to-cut-a-stick.md) - [0664. 奇怪的打印机](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/strange-printer.md) -- [区间 DP 题目列表](https://github.com/itcharge/AlgoNote/blob/main/docs/00_preface/00_06_categories_list.md#%E5%8C%BA%E9%97%B4-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file +- [区间 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E5%8C%BA%E9%97%B4-dp-%E9%A2%98%E7%9B%AE) \ No newline at end of file diff --git a/docs/08_dynamic_programming/08_15_probability_dp.md b/docs/08_dynamic_programming/08_15_probability_dp.md index 3a1446de..bc83084d 100644 --- a/docs/08_dynamic_programming/08_15_probability_dp.md +++ b/docs/08_dynamic_programming/08_15_probability_dp.md @@ -64,8 +64,8 @@ ## 练习题目 -- [0688. 骑士在棋盘上的概率](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/0600-0699/knight-probability-in-chessboard.md) -- [1227. 飞机座位分配概率](https://github.com/itcharge/AlgoNote/blob/main/docs/solutions/1200-1299/airplane-seat-assignment-probability.md) +- [0688. 骑士在棋盘上的概率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0600-0699/knight-probability-in-chessboard.md) +- [1227. 飞机座位分配概率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/airplane-seat-assignment-probability.md) - [概率 DP 题目列表](https://github.com/ITCharge/AlgoNote/tree/main/docs/00_preface/00_06_categories_list.md#%E6%A6%82%E7%8E%87-dp-%E9%A2%98%E7%9B%AE) From 7f75df9707621e45b0243d0a16dd696ec9ca2cc9 Mon Sep 17 00:00:00 2001 From: ITCharge Date: Mon, 14 Jul 2025 18:04:39 +0800 Subject: [PATCH 156/158] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/00_preface/00_05_solutions_list.md | 8 ++++---- docs/00_preface/00_06_categories_list.md | 11 ++++++----- docs/00_preface/00_07_interview_100_list.md | 4 ++-- docs/00_preface/00_08_interview_200_list.md | 4 ++-- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/docs/00_preface/00_05_solutions_list.md b/docs/00_preface/00_05_solutions_list.md index 8522e8cd..8d180da6 100644 --- a/docs/00_preface/00_05_solutions_list.md +++ b/docs/00_preface/00_05_solutions_list.md @@ -16,7 +16,7 @@ | [0011. 盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/container-with-most-water.md) | 贪心、数组、双指针 | 中等 | | [0012. 整数转罗马数字](https://leetcode.cn/problems/integer-to-roman/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/integer-to-roman.md) | 哈希表、数学、字符串 | 中等 | | [0013. 罗马数字转整数](https://leetcode.cn/problems/roman-to-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/roman-to-integer.md) | 哈希表、数学、字符串 | 简单 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、数组、字符串 | 简单 | | [0015. 三数之和](https://leetcode.cn/problems/3sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum.md) | 数组、双指针、排序 | 中等 | | [0016. 最接近的三数之和](https://leetcode.cn/problems/3sum-closest/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/3sum-closest.md) | 数组、双指针、排序 | 中等 | | [0017. 电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/letter-combinations-of-a-phone-number.md) | 哈希表、字符串、回溯 | 中等 | @@ -299,7 +299,7 @@ | [0400. 第 N 位数字](https://leetcode.cn/problems/nth-digit/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/nth-digit.md) | 数学、二分查找 | 中等 | | [0403. 青蛙过河](https://leetcode.cn/problems/frog-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump.md) | 数组、动态规划 | 困难 | | [0404. 左叶子之和](https://leetcode.cn/problems/sum-of-left-leaves/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/sum-of-left-leaves.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 简单 | -| [0405. 数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal.md) | 位运算、数学 | 简单 | +| [0405. 数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal.md) | 位运算、数学、字符串 | 简单 | | [0406. 根据身高重建队列](https://leetcode.cn/problems/queue-reconstruction-by-height/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/queue-reconstruction-by-height.md) | 树状数组、线段树、数组、排序 | 中等 | | [0409. 最长回文串](https://leetcode.cn/problems/longest-palindrome/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/longest-palindrome.md) | 贪心、哈希表、字符串 | 简单 | | [0410. 分割数组的最大值](https://leetcode.cn/problems/split-array-largest-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/split-array-largest-sum.md) | 贪心、数组、二分查找、动态规划、前缀和 | 困难 | @@ -349,7 +349,7 @@ | :--- | :--- | :--- | :--- | | [0501. 二叉搜索树中的众数](https://leetcode.cn/problems/find-mode-in-binary-search-tree/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-mode-in-binary-search-tree.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 简单 | | [0503. 下一个更大元素 II](https://leetcode.cn/problems/next-greater-element-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/next-greater-element-ii.md) | 栈、数组、单调栈 | 中等 | -| [0504. 七进制数](https://leetcode.cn/problems/base-7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7.md) | 数学 | 简单 | +| [0504. 七进制数](https://leetcode.cn/problems/base-7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7.md) | 数学、字符串 | 简单 | | [0506. 相对名次](https://leetcode.cn/problems/relative-ranks/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/relative-ranks.md) | 数组、排序、堆(优先队列) | 简单 | | [0509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/fibonacci-number.md) | 递归、记忆化搜索、数学、动态规划 | 简单 | | [0513. 找树左下角的值](https://leetcode.cn/problems/find-bottom-left-tree-value/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/find-bottom-left-tree-value.md) | 树、深度优先搜索、广度优先搜索、二叉树 | 中等 | @@ -739,7 +739,7 @@ | [1827. 最少操作使数组递增](https://leetcode.cn/problems/minimum-operations-to-make-the-array-increasing/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimum-operations-to-make-the-array-increasing.md) | 贪心、数组 | 简单 | | [1833. 雪糕的最大数量](https://leetcode.cn/problems/maximum-ice-cream-bars/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/maximum-ice-cream-bars.md) | 贪心、数组、计数排序、排序 | 中等 | | [1844. 将所有数字用字符替换](https://leetcode.cn/problems/replace-all-digits-with-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/replace-all-digits-with-characters.md) | 字符串 | 简单 | -| [1858. 包含所有前缀的最长单词](https://leetcode.cn/problems/longest-word-with-all-prefixes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/longest-word-with-all-prefixes.md) | 深度优先搜索、字典树 | 中等 | +| [1858. 包含所有前缀的最长单词](https://leetcode.cn/problems/longest-word-with-all-prefixes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/longest-word-with-all-prefixes.md) | 深度优先搜索、字典树、数组、字符串 | 中等 | | [1859. 将句子排序](https://leetcode.cn/problems/sorting-the-sentence/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/sorting-the-sentence.md) | 字符串、排序 | 简单 | | [1876. 长度为三且各字符不同的子字符串](https://leetcode.cn/problems/substrings-of-size-three-with-distinct-characters/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/substrings-of-size-three-with-distinct-characters.md) | 哈希表、字符串、计数、滑动窗口 | 简单 | | [1877. 数组中最大数对和的最小值](https://leetcode.cn/problems/minimize-maximum-pair-sum-in-array/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1800-1899/minimize-maximum-pair-sum-in-array.md) | 贪心、数组、双指针、排序 | 中等 | diff --git a/docs/00_preface/00_06_categories_list.md b/docs/00_preface/00_06_categories_list.md index da67cccf..6be90eb5 100644 --- a/docs/00_preface/00_06_categories_list.md +++ b/docs/00_preface/00_06_categories_list.md @@ -443,7 +443,7 @@ | [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings.md) | 数学、字符串、模拟 | 简单 | | [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string.md) | 双指针、字符串 | 中等 | | [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings.md) | 数学、字符串、模拟 | 中等 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、数组、字符串 | 简单 | ### 单模式串匹配题目 @@ -752,6 +752,7 @@ | :--- | :--- | :--- | :--- | | [0001. 两数之和](https://leetcode.cn/problems/two-sum/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/two-sum.md) | 数组、哈希表 | 简单 | | [0204. 计数质数](https://leetcode.cn/problems/count-primes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/count-primes.md) | 数组、数学、枚举、数论 | 中等 | +| [2427. 公因子的数目](https://leetcode.cn/problems/number-of-common-factors/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2400-2499/number-of-common-factors.md) | 数学、枚举、数论 | 简单 | | [1925. 统计平方和三元组的数目](https://leetcode.cn/problems/count-square-sum-triples/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1900-1999/count-square-sum-triples.md) | 数学、枚举 | 简单 | | [1450. 在既定时间做作业的学生人数](https://leetcode.cn/problems/number-of-students-doing-homework-at-a-given-time/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-students-doing-homework-at-a-given-time.md) | 数组 | 简单 | | [1620. 网络信号最好的坐标](https://leetcode.cn/problems/coordinate-with-maximum-network-quality/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1600-1699/coordinate-with-maximum-network-quality.md) | 数组、枚举 | 中等 | @@ -793,7 +794,7 @@ | [0241. 为运算表达式设计优先级](https://leetcode.cn/problems/different-ways-to-add-parentheses/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/different-ways-to-add-parentheses.md) | 递归、记忆化搜索、数学、字符串、动态规划 | 中等 | | [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) | 数组、哈希表、分治、计数、排序 | 简单 | | [0050. Pow(x, n)](https://leetcode.cn/problems/powx-n/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/powx-n.md) | 递归、数学 | 中等 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、数组、字符串 | 简单 | | [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof.md) | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 | @@ -853,8 +854,8 @@ | 标题 | 题解 | 标签 | 难度 | | :--- | :--- | :--- | :--- | -| [0504. 七进制数](https://leetcode.cn/problems/base-7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7.md) | 数学 | 简单 | -| [0405. 数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal.md) | 位运算、数学 | 简单 | +| [0504. 七进制数](https://leetcode.cn/problems/base-7/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/base-7.md) | 数学、字符串 | 简单 | +| [0405. 数字转换为十六进制数](https://leetcode.cn/problems/convert-a-number-to-hexadecimal/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/convert-a-number-to-hexadecimal.md) | 位运算、数学、字符串 | 简单 | | [0190. 颠倒二进制位](https://leetcode.cn/problems/reverse-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-bits.md) | 位运算、分治 | 简单 | | [1009. 十进制整数的反码](https://leetcode.cn/problems/complement-of-base-10-integer/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/complement-of-base-10-integer.md) | 位运算 | 简单 | | [0191. 位1的个数](https://leetcode.cn/problems/number-of-1-bits/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/number-of-1-bits.md) | 位运算、分治 | 简单 | @@ -933,7 +934,7 @@ | [0256. 粉刷房子](https://leetcode.cn/problems/paint-house/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/paint-house.md) | 数组、动态规划 | 中等 | | [0265. 粉刷房子 II](https://leetcode.cn/problems/paint-house-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0200-0299/paint-house-ii.md) | 数组、动态规划 | 困难 | | [1473. 粉刷房子 III](https://leetcode.cn/problems/paint-house-iii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/paint-house-iii.md) | 数组、动态规划 | 困难 | -| [0975. 奇偶跳](https://leetcode.cn/problems/odd-even-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/odd-even-jump.md) | 栈、数组、动态规划、有序集合、单调栈 | 困难 | +| [0975. 奇偶跳](https://leetcode.cn/problems/odd-even-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0900-0999/odd-even-jump.md) | 栈、数组、动态规划、有序集合、排序、单调栈 | 困难 | | [0403. 青蛙过河](https://leetcode.cn/problems/frog-jump/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/frog-jump.md) | 数组、动态规划 | 困难 | | [1478. 安排邮筒](https://leetcode.cn/problems/allocate-mailboxes/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/allocate-mailboxes.md) | 数组、数学、动态规划、排序 | 困难 | | [1230. 抛掷硬币](https://leetcode.cn/problems/toss-strange-coins/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1200-1299/toss-strange-coins.md) | 数组、数学、动态规划、概率与统计 | 中等 | diff --git a/docs/00_preface/00_07_interview_100_list.md b/docs/00_preface/00_07_interview_100_list.md index d289f01e..18d65b8f 100644 --- a/docs/00_preface/00_07_interview_100_list.md +++ b/docs/00_preface/00_07_interview_100_list.md @@ -231,7 +231,7 @@ | [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings.md) | 数学、字符串、模拟 | 简单 | | [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string.md) | 双指针、字符串 | 中等 | | [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings.md) | 数学、字符串、模拟 | 中等 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、数组、字符串 | 简单 | ## 第 5 章 树 @@ -336,7 +336,7 @@ | [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | | [0004. 寻找两个正序数组的中位数](https://leetcode.cn/problems/median-of-two-sorted-arrays/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/median-of-two-sorted-arrays.md) | 数组、二分查找、分治 | 困难 | | [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) | 数组、哈希表、分治、计数、排序 | 简单 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、数组、字符串 | 简单 | ### 回溯算法题目 diff --git a/docs/00_preface/00_08_interview_200_list.md b/docs/00_preface/00_08_interview_200_list.md index 7662fb1f..32360029 100644 --- a/docs/00_preface/00_08_interview_200_list.md +++ b/docs/00_preface/00_08_interview_200_list.md @@ -305,7 +305,7 @@ | [0415. 字符串相加](https://leetcode.cn/problems/add-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0400-0499/add-strings.md) | 数学、字符串、模拟 | 简单 | | [0151. 反转字符串中的单词](https://leetcode.cn/problems/reverse-words-in-a-string/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/reverse-words-in-a-string.md) | 双指针、字符串 | 中等 | | [0043. 字符串相乘](https://leetcode.cn/problems/multiply-strings/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/multiply-strings.md) | 数学、字符串、模拟 | 中等 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、数组、字符串 | 简单 | ### 单模式串匹配题目 @@ -458,7 +458,7 @@ | [0023. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/merge-k-sorted-lists.md) | 链表、分治、堆(优先队列)、归并排序 | 困难 | | [0053. 最大子数组和](https://leetcode.cn/problems/maximum-subarray/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximum-subarray.md) | 数组、分治、动态规划 | 中等 | | [0169. 多数元素](https://leetcode.cn/problems/majority-element/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0100-0199/majority-element.md) | 数组、哈希表、分治、计数、排序 | 简单 | -| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、字符串 | 简单 | +| [0014. 最长公共前缀](https://leetcode.cn/problems/longest-common-prefix/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/longest-common-prefix.md) | 字典树、数组、字符串 | 简单 | | [LCR 152. 验证二叉搜索树的后序遍历序列](https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof.md) | 栈、树、二叉搜索树、递归、数组、二叉树、单调栈 | 中等 | From 5c0e88fde0fa4bbaa0e5aedc016c8c9740ee0a9c Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 15 Jul 2025 09:13:42 +0800 Subject: [PATCH 157/158] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/solutions/Interviews/bracket-lcci.md | 45 --------- docs/solutions/Interviews/calculator-lcci.md | 66 ------------- docs/solutions/Interviews/color-fill-lcci.md | 66 ------------- .../solutions/Interviews/eight-queens-lcci.md | 77 --------------- .../Interviews/factorial-zeros-lcci.md | 33 ------- .../Interviews/first-common-ancestor-lcci.md | 61 ------------ .../Interviews/group-anagrams-lcci.md | 42 -------- .../implement-queue-using-stacks-lcci.md | 74 --------------- docs/solutions/Interviews/index.md | 32 ------- .../intersection-of-two-linked-lists-lcci.md | 54 ----------- .../kth-node-from-end-of-list-lcci.md | 38 -------- .../legal-binary-search-tree-lcci.md | 46 --------- .../Interviews/linked-list-cycle-lcci.md | 47 --------- .../solutions/Interviews/longest-word-lcci.md | 95 ------------------- docs/solutions/Interviews/min-stack-lcci.md | 59 ------------ .../Interviews/minimum-height-tree-lcci.md | 34 ------- .../solutions/Interviews/multi-search-lcci.md | 80 ---------------- .../Interviews/number-of-2s-in-range-lcci.md | 85 ----------------- .../Interviews/palindrome-linked-list-lcci.md | 32 ------- .../Interviews/paths-with-sum-lcci.md | 45 --------- .../Interviews/permutation-i-lcci.md | 46 --------- .../Interviews/permutation-ii-lcci.md | 55 ----------- docs/solutions/Interviews/power-set-lcci.md | 35 ------- .../Interviews/rotate-matrix-lcci.md | 67 ------------- docs/solutions/Interviews/smallest-k-lcci.md | 73 -------------- .../Interviews/sorted-matrix-search-lcci.md | 90 ------------------ .../solutions/Interviews/sorted-merge-lcci.md | 72 -------------- docs/solutions/Interviews/successor-lcci.md | 39 -------- docs/solutions/Interviews/sum-lists-lcci.md | 47 --------- .../Interviews/words-frequency-lcci.md | 78 --------------- docs/solutions/Interviews/zero-matrix-lcci.md | 70 -------------- 31 files changed, 1783 deletions(-) delete mode 100644 docs/solutions/Interviews/bracket-lcci.md delete mode 100644 docs/solutions/Interviews/calculator-lcci.md delete mode 100644 docs/solutions/Interviews/color-fill-lcci.md delete mode 100644 docs/solutions/Interviews/eight-queens-lcci.md delete mode 100644 docs/solutions/Interviews/factorial-zeros-lcci.md delete mode 100644 docs/solutions/Interviews/first-common-ancestor-lcci.md delete mode 100644 docs/solutions/Interviews/group-anagrams-lcci.md delete mode 100644 docs/solutions/Interviews/implement-queue-using-stacks-lcci.md delete mode 100644 docs/solutions/Interviews/index.md delete mode 100644 docs/solutions/Interviews/intersection-of-two-linked-lists-lcci.md delete mode 100644 docs/solutions/Interviews/kth-node-from-end-of-list-lcci.md delete mode 100644 docs/solutions/Interviews/legal-binary-search-tree-lcci.md delete mode 100644 docs/solutions/Interviews/linked-list-cycle-lcci.md delete mode 100644 docs/solutions/Interviews/longest-word-lcci.md delete mode 100644 docs/solutions/Interviews/min-stack-lcci.md delete mode 100644 docs/solutions/Interviews/minimum-height-tree-lcci.md delete mode 100644 docs/solutions/Interviews/multi-search-lcci.md delete mode 100644 docs/solutions/Interviews/number-of-2s-in-range-lcci.md delete mode 100644 docs/solutions/Interviews/palindrome-linked-list-lcci.md delete mode 100644 docs/solutions/Interviews/paths-with-sum-lcci.md delete mode 100644 docs/solutions/Interviews/permutation-i-lcci.md delete mode 100644 docs/solutions/Interviews/permutation-ii-lcci.md delete mode 100644 docs/solutions/Interviews/power-set-lcci.md delete mode 100644 docs/solutions/Interviews/rotate-matrix-lcci.md delete mode 100644 docs/solutions/Interviews/smallest-k-lcci.md delete mode 100644 docs/solutions/Interviews/sorted-matrix-search-lcci.md delete mode 100644 docs/solutions/Interviews/sorted-merge-lcci.md delete mode 100644 docs/solutions/Interviews/successor-lcci.md delete mode 100644 docs/solutions/Interviews/sum-lists-lcci.md delete mode 100644 docs/solutions/Interviews/words-frequency-lcci.md delete mode 100644 docs/solutions/Interviews/zero-matrix-lcci.md diff --git a/docs/solutions/Interviews/bracket-lcci.md b/docs/solutions/Interviews/bracket-lcci.md deleted file mode 100644 index afb671f1..00000000 --- a/docs/solutions/Interviews/bracket-lcci.md +++ /dev/null @@ -1,45 +0,0 @@ -# [面试题 08.09. 括号](https://leetcode.cn/problems/bracket-lcci/) - -- 标签:字符串、动态规划、回溯 -- 难度:中等 - -## 题目链接 - -- [面试题 08.09. 括号 - 力扣](https://leetcode.cn/problems/bracket-lcci/) - -## 题目大意 - -给定一个整数 `n`。 - -要求:生成所有有可能且有效的括号组合。 - -## 解题思路 - -通过回溯算法生成所有答案。为了生成的括号组合是有效的,回溯的时候,使用一个标记变量 `symbol` 来表示是否当前组合是否成对匹配。 - -如果在当前组合中增加一个 `(`,则 `symbol += 1`,如果增加一个 `)`,则 `symbol -= 1`。显然只有在 `symbol < n` 的时候,才能增加 `(`,在 `symbol > 0` 的时候,才能增加 `)`。 - -如果最终生成 `2 * n` 的括号组合,并且 `symbol == 0`,则说明当前组合是有效的,将其加入到最终答案数组中。 - -最终输出最终答案数组。 - -## 代码 - -```python -class Solution: - def generateParenthesis(self, n: int) -> List[str]: - def backtrack(parenthesis, symbol, index): - if n * 2 == index: - if symbol == 0: - parentheses.append(parenthesis) - else: - if symbol < n: - backtrack(parenthesis + '(', symbol + 1, index + 1) - if symbol > 0: - backtrack(parenthesis + ')', symbol - 1, index + 1) - - parentheses = list() - backtrack("", 0, 0) - return parentheses -``` - diff --git a/docs/solutions/Interviews/calculator-lcci.md b/docs/solutions/Interviews/calculator-lcci.md deleted file mode 100644 index ce90dafb..00000000 --- a/docs/solutions/Interviews/calculator-lcci.md +++ /dev/null @@ -1,66 +0,0 @@ -# [面试题 16.26. 计算器](https://leetcode.cn/problems/calculator-lcci/) - -- 标签:栈、数学、字符串 -- 难度:中等 - -## 题目链接 - -- [面试题 16.26. 计算器 - 力扣](https://leetcode.cn/problems/calculator-lcci/) - -## 题目大意 - -给定一个包含正整数、加(`+`)、减(`-`)、乘(`*`)、除(`/`)的算出表达式(括号除外)。表达式仅包含非负整数,`+`、`-`、`*`、`/` 四种运算符和空格 ` `。整数除法仅保留整数部分。 - -要求:计算其结果。 - -## 解题思路 - -计算表达式中,乘除运算优先于加减运算。我们可以先进行乘除运算,再将进行乘除运算后的整数值放入原表达式中相应位置,再依次计算加减。 - -可以考虑使用一个栈来保存进行乘除运算后的整数值。正整数直接压入栈中,负整数,则将对应整数取负号,再压入栈中。这样最终计算结果就是栈中所有元素的和。 - -具体做法: - -- 遍历字符串 s,使用变量 op 来标记数字之前的运算符,默认为 `+`。 -- 如果遇到数字,继续向后遍历,将数字进行累积,得到完整的整数 num。判断当前 op 的符号。 - - 如果 op 为 `+`,则将 num 压入栈中。 - - 如果 op 为 `-`,则将 -num 压入栈中。 - - 如果 op 为 `*`,则将栈顶元素 top 取出,计算 top * num,并将计算结果压入栈中。 - - 如果 op 为 `/`,则将栈顶元素 top 取出,计算 int(top / num),并将计算结果压入栈中。 -- 如果遇到 `+`、`-`、`*`、`/` 操作符,则更新 op。 -- 最后将栈中整数进行累加,并返回结果。 - -## 代码 - -```python -class Solution: - def calculate(self, s: str) -> int: - size = len(s) - stack = [] - op = '+' - index = 0 - while index < size: - if s[index] == ' ': - index += 1 - continue - if s[index].isdigit(): - num = ord(s[index]) - ord('0') - while index + 1 < size and s[index + 1].isdigit(): - index += 1 - num = 10 * num + ord(s[index]) - ord('0') - if op == '+': - stack.append(num) - elif op == '-': - stack.append(-num) - elif op == '*': - top = stack.pop() - stack.append(top * num) - elif op == '/': - top = stack.pop() - stack.append(int(top / num)) - elif s[index] in "+-*/": - op = s[index] - index += 1 - return sum(stack) -``` - diff --git a/docs/solutions/Interviews/color-fill-lcci.md b/docs/solutions/Interviews/color-fill-lcci.md deleted file mode 100644 index 0581382e..00000000 --- a/docs/solutions/Interviews/color-fill-lcci.md +++ /dev/null @@ -1,66 +0,0 @@ -# [面试题 08.10. 颜色填充](https://leetcode.cn/problems/color-fill-lcci/) - -- 标签:深度优先搜索、广度优先搜索、数组、矩阵 -- 难度:简单 - -## 题目链接 - -- [面试题 08.10. 颜色填充 - 力扣](https://leetcode.cn/problems/color-fill-lcci/) - -## 题目大意 - -给定一个二维整数矩阵 `image`,其中 `image[i][j]` 表示矩阵第 `i` 行、第 `j` 列上网格块的颜色值。再给定一个起始位置 `(sr, sc)`,以及一个目标颜色 `newColor`。 - -要求:对起始位置 `(sr, sc)` 所在位置周围区域填充颜色为 `newColor`。并返回填充后的图像 `image`。 - -- 周围区域:颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。 - -## 解题思路 - -深度优先搜索。使用二维数组 `visited` 标记访问过的节点。遍历上、下、左、右四个方向上的点。如果下一个点位置越界,或者当前位置与下一个点位置颜色不一样,则对该节点进行染色。 - -在遍历的过程中注意使用 `visited` 标记访问过的节点,以免重复遍历。 - -## 代码 - -```python -class Solution: - directs = [(0, 1), (0, -1), (1, 0), (-1, 0)] - - def dfs(self, image, i, j, origin_color, color, visited): - rows, cols = len(image), len(image[0]) - - for direct in self.directs: - new_i = i + direct[0] - new_j = j + direct[1] - - # 下一个位置越界,则当前点在边界,对其进行着色 - if new_i < 0 or new_i >= rows or new_j < 0 or new_j >= cols: - image[i][j] = color - continue - - # 如果访问过,则跳过 - if visited[new_i][new_j]: - continue - - # 如果下一个位置颜色与当前颜色相同,则继续搜索 - if image[new_i][new_j] == origin_color: - visited[new_i][new_j] = True - self.dfs(image, new_i, new_j, origin_color, color, visited) - # 下一个位置颜色与当前颜色不同,则当前位置为连通区域边界,对其进行着色 - else: - image[i][j] = color - - def floodFill(self, image: List[List[int]], sr: int, sc: int, newColor: int) -> List[List[int]]: - if not image: - return image - - rows, cols = len(image), len(image[0]) - visited = [[False for _ in range(cols)] for _ in range(rows)] - visited[sr][sc] = True - - self.dfs(image, sr, sc, image[sr][sc], newColor, visited) - - return image -``` - diff --git a/docs/solutions/Interviews/eight-queens-lcci.md b/docs/solutions/Interviews/eight-queens-lcci.md deleted file mode 100644 index d1447849..00000000 --- a/docs/solutions/Interviews/eight-queens-lcci.md +++ /dev/null @@ -1,77 +0,0 @@ -# [面试题 08.12. 八皇后](https://leetcode.cn/problems/eight-queens-lcci/) - -- 标签:数组、回溯 -- 难度:困难 - -## 题目链接 - -- [面试题 08.12. 八皇后 - 力扣](https://leetcode.cn/problems/eight-queens-lcci/) - -## 题目大意 - -- n 皇后问题:将 n 个皇后放置在 `n * n` 的棋盘上,并且使得皇后彼此之间不能攻击。 -- 皇后彼此不能相互攻击:指的是任何两个皇后都不能处于同一条横线、纵线或者斜线上。 - -现在给定一个整数 `n`,返回所有不同的「n 皇后问题」的解决方案。每一种解法包含一个不同的「n 皇后问题」的棋子放置方案,该方案中的 `Q` 和 `.` 分别代表了皇后和空位。 - -## 解题思路 - -经典的回溯问题。使用 `chessboard` 来表示棋盘,`Q` 代表皇后,`.` 代表空位,初始都为 `.`。然后使用 `res` 存放最终答案。 - -先定义棋盘合理情况判断方法,判断同一条横线、纵线或者斜线上是否存在两个以上的皇后。 - -再定义回溯方法,从第一行开始进行遍历。 - -- 如果当前行 `row` 等于 `n`,则当前棋盘为一个可行方案,将其拼接加入到 `res` 数组中。 -- 遍历 `[0, n]` 列元素,先验证棋盘是否可行,如果可行: - - 将当前行当前列尝试换为 `Q`。 - - 然后继续递归下一行。 - - 再将当前行回退为 `.`。 -- 最终返回 `res` 数组。 - -## 代码 - -```python -class Solution: - res = [] - def backtrack(self, n: int, row: int, chessboard: List[List[str]]): - if row == n: - temp_res = [] - for temp in chessboard: - temp_str = ''.join(temp) - temp_res.append(temp_str) - self.res.append(temp_res) - return - for col in range(n): - if self.isValid(n, row, col, chessboard): - chessboard[row][col] = 'Q' - self.backtrack(n, row + 1, chessboard) - chessboard[row][col] = '.' - - def isValid(self, n: int, row: int, col: int, chessboard: List[List[str]]): - for i in range(row): - if chessboard[i][col] == 'Q': - return False - - i, j = row - 1, col - 1 - while i >= 0 and j >= 0: - if chessboard[i][j] == 'Q': - return False - i -= 1 - j -= 1 - i, j = row - 1, col + 1 - while i >= 0 and j < n: - if chessboard[i][j] == 'Q': - return False - i -= 1 - j += 1 - - return True - - def solveNQueens(self, n: int) -> List[List[str]]: - self.res.clear() - chessboard = [['.' for _ in range(n)] for _ in range(n)] - self.backtrack(n, 0, chessboard) - return self.res -``` - diff --git a/docs/solutions/Interviews/factorial-zeros-lcci.md b/docs/solutions/Interviews/factorial-zeros-lcci.md deleted file mode 100644 index 6f3f8770..00000000 --- a/docs/solutions/Interviews/factorial-zeros-lcci.md +++ /dev/null @@ -1,33 +0,0 @@ -# [面试题 16.05. 阶乘尾数](https://leetcode.cn/problems/factorial-zeros-lcci/) - -- 标签:数学 -- 难度:简单 - -## 题目链接 - -- [面试题 16.05. 阶乘尾数 - 力扣](https://leetcode.cn/problems/factorial-zeros-lcci/) - -## 题目大意 - -给定一个整数 `n`。 - -要求:计算 `n` 的阶乘中尾随零的数量。 - -注意:$0 <= n <= 10^4$。 - -## 解题思路 - -阶乘中,末尾 `0` 的来源只有 `2 * 5`。所以尾随 `0` 的个数为 `2` 的倍数个数和 `5` 的倍数个数的最小值。又因为 `2 < 5`,`2` 的倍数个数肯定小于等于 `5` 的倍数,所以直接统计 `5` 的倍数个数即可。 - -## 代码 - -```python -class Solution: - def trailingZeroes(self, n: int) -> int: - count = 0 - while n > 0: - count += n // 5 - n = n // 5 - return count -``` - diff --git a/docs/solutions/Interviews/first-common-ancestor-lcci.md b/docs/solutions/Interviews/first-common-ancestor-lcci.md deleted file mode 100644 index f1fb498b..00000000 --- a/docs/solutions/Interviews/first-common-ancestor-lcci.md +++ /dev/null @@ -1,61 +0,0 @@ -# [面试题 04.08. 首个共同祖先](https://leetcode.cn/problems/first-common-ancestor-lcci/) - -- 标签:树、深度优先搜索、二叉树 -- 难度:中等 - -## 题目链接 - -- [面试题 04.08. 首个共同祖先 - 力扣](https://leetcode.cn/problems/first-common-ancestor-lcci/) - -## 题目大意 - -给定一个二叉树,要求找到该树中指定节点 `p`、`q` 的最近公共祖先: - -- 祖先:若节点 `p` 在节点 `node` 的左子树或右子树中,或者 `p = node`,则称 `node` 是 `p` 的祖先。 - -- 最近公共祖先:对于树的两个节点 `p`、`q`,最近公共祖先表示为一个节点 `lca_node`,满足 `lca_node` 是 `p`、`q` 的祖先且 `lca_node` 的深度尽可能大(一个节点也可以是自己的祖先)。 - -## 解题思路 - -设 `lca_node` 为节点 `p`、`q` 的最近公共祖先。则 `lca_node` 只能是下面几种情况: - -- `p`、`q` 在 `lca_node` 的子树中,且分别在 `lca_node` 的两侧子树中。 -- `p == lca_node`,且 `q` 在 `lca_node` 的左子树或右子树中。 -- `q == lca_node`,且 `p` 在 `lca_node` 的左子树或右子树中。 - -下面递归求解 `lca_node`。递归需要满足以下条件: - -- 如果 `p`、`q` 都不为空,则返回 `p`、`q` 的公共祖先。 -- 如果 `p`、`q` 只有一个存在,则返回存在的一个。 -- 如果 `p`、`q` 都不存在,则返回存在的一个。 - -具体思路为: - -- 如果当前节点 `node` 为 `None`,则说明 `p`、`q` 不在 `node` 的子树中,不可能为公共祖先,直接返回 `None`。 -- 如果当前节点 `node` 等于 `p` 或者 `q`,那么 `node` 就是 `p`、`q` 的最近公共祖先,直接返回 `node`。 -- 递归遍历左子树、右子树,并判断左右子树结果。 - - 如果左子树为空,则返回右子树。 - - 如果右子树为空,则返回左子树。 - - 如果左右子树都不为空,则说明 `p`、`q` 在当前根节点的两侧,当前根节点就是他们的最近公共祖先。 - - 如果左右子树都为空,则返回空。 - -## 代码 - -```python -class Solution: - def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode: - if root == p or root == q: - return root - - if root: - node_left = self.lowestCommonAncestor(root.left, p, q) - node_right = self.lowestCommonAncestor(root.right, p, q) - if node_left and node_right: - return root - elif not node_left: - return node_right - else: - return node_left - return None -``` - diff --git a/docs/solutions/Interviews/group-anagrams-lcci.md b/docs/solutions/Interviews/group-anagrams-lcci.md deleted file mode 100644 index ccde9231..00000000 --- a/docs/solutions/Interviews/group-anagrams-lcci.md +++ /dev/null @@ -1,42 +0,0 @@ -# [面试题 10.02. 变位词组](https://leetcode.cn/problems/group-anagrams-lcci/) - -- 标签:数组、哈希表、字符串、排序 -- 难度:中等 - -## 题目链接 - -- [面试题 10.02. 变位词组 - 力扣](https://leetcode.cn/problems/group-anagrams-lcci/) - -## 题目大意 - -给定一个字符串数组 `strs`。 - -要求:将所有变位词组合在一起。不需要考虑输出顺序。 - -- 变位词:字母相同,但排列不同的字符串。 - -## 解题思路 - -使用哈希表记录变位词。对每一个字符串进行排序,按照 `排序字符串:变位词数组` 的键值顺序进行存储。 - -最终将哈希表的值转换为对应数组返回结果。 - -## 代码 - -```python -class Solution: - def groupAnagrams(self, strs: List[str]) -> List[List[str]]: - str_dict = dict() - res = [] - for s in strs: - sort_s = str(sorted(s)) - if sort_s in str_dict: - str_dict[sort_s] += [s] - else: - str_dict[sort_s] = [s] - - for sort_s in str_dict: - res += [str_dict[sort_s]] - return res -``` - diff --git a/docs/solutions/Interviews/implement-queue-using-stacks-lcci.md b/docs/solutions/Interviews/implement-queue-using-stacks-lcci.md deleted file mode 100644 index 64993a2f..00000000 --- a/docs/solutions/Interviews/implement-queue-using-stacks-lcci.md +++ /dev/null @@ -1,74 +0,0 @@ -# [面试题 03.04. 化栈为队](https://leetcode.cn/problems/implement-queue-using-stacks-lcci/) - -- 标签:栈、设计、队列 -- 难度:简单 - -## 题目链接 - -- [面试题 03.04. 化栈为队 - 力扣](https://leetcode.cn/problems/implement-queue-using-stacks-lcci/) - -## 题目大意 - -要求:实现一个 MyQueue 类,要求仅使用两个栈实现先入先出队列。 - -## 解题思路 - -使用两个栈,`inStack` 用于输入,`outStack` 用于输出。 - -- `push` 操作:将元素压入 `inStack` 中。 -- `pop` 操作:如果 `outStack` 输出栈为空,将 `inStack` 输入栈元素依次取出,按顺序压入 `outStack` 栈。这样 `outStack` 栈的元素顺序和之前 `inStack` 元素顺序相反,`outStack` 顶层元素就是要取出的队头元素,将其移出,并返回该元素。如果 `outStack` 输出栈不为空,则直接取出顶层元素。 -- `peek` 操作:和 `pop` 操作类似,只不过最后一步不需要取出顶层元素,直接将其返回即可。 -- `empty` 操作:如果 `inStack` 和 `outStack` 都为空,则队列为空,否则队列不为空。 - -## 代码 - -```python -class MyQueue: - - def __init__(self): - """ - Initialize your data structure here. - """ - self.inStack = [] - self.outStack = [] - - - def push(self, x: int) -> None: - """ - Push element x to the back of queue. - """ - self.inStack.append(x) - - - def pop(self) -> int: - """ - Removes the element from in front of queue and returns that element. - """ - if (len(self.outStack) == 0): - while (len(self.inStack) != 0): - self.outStack.append(self.inStack[-1]) - self.inStack.pop() - top = self.outStack[-1] - self.outStack.pop() - return top - - - def peek(self) -> int: - """ - Get the front element. - """ - if (len(self.outStack) == 0): - while (len(self.inStack) != 0): - self.outStack.append(self.inStack[-1]) - self.inStack.pop() - top = self.outStack[-1] - return top - - - def empty(self) -> bool: - """ - Returns whether the queue is empty. - """ - return len(self.outStack) == 0 and len(self.inStack) == 0 -``` - diff --git a/docs/solutions/Interviews/index.md b/docs/solutions/Interviews/index.md deleted file mode 100644 index 9075fd7f..00000000 --- a/docs/solutions/Interviews/index.md +++ /dev/null @@ -1,32 +0,0 @@ -## 本章内容 - -- [面试题 01.07. 旋转矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/rotate-matrix-lcci.md) -- [面试题 01.08. 零矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/zero-matrix-lcci.md) -- [面试题 02.02. 返回倒数第 k 个节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/kth-node-from-end-of-list-lcci.md) -- [面试题 02.05. 链表求和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sum-lists-lcci.md) -- [面试题 02.06. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/palindrome-linked-list-lcci.md) -- [面试题 02.07. 链表相交](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci.md) -- [面试题 02.08. 环路检测](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/linked-list-cycle-lcci.md) -- [面试题 03.02. 栈的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/min-stack-lcci.md) -- [面试题 03.04. 化栈为队](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/implement-queue-using-stacks-lcci.md) -- [面试题 04.02. 最小高度树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/minimum-height-tree-lcci.md) -- [面试题 04.05. 合法二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/legal-binary-search-tree-lcci.md) -- [面试题 04.06. 后继者](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/successor-lcci.md) -- [面试题 04.08. 首个共同祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/first-common-ancestor-lcci.md) -- [面试题 04.12. 求和路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/paths-with-sum-lcci.md) -- [面试题 08.04. 幂集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/power-set-lcci.md) -- [面试题 08.07. 无重复字符串的排列组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-i-lcci.md) -- [面试题 08.08. 有重复字符串的排列组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-ii-lcci.md) -- [面试题 08.09. 括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/bracket-lcci.md) -- [面试题 08.10. 颜色填充](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/color-fill-lcci.md) -- [面试题 08.12. 八皇后](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/eight-queens-lcci.md) -- [面试题 10.01. 合并排序的数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-merge-lcci.md) -- [面试题 10.02. 变位词组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/group-anagrams-lcci.md) -- [面试题 10.09. 排序矩阵查找](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-matrix-search-lcci.md) -- [面试题 16.02. 单词频率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/words-frequency-lcci.md) -- [面试题 16.05. 阶乘尾数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/factorial-zeros-lcci.md) -- [面试题 16.26. 计算器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/calculator-lcci.md) -- [面试题 17.06. 2出现的次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci.md) -- [面试题 17.14. 最小K个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/smallest-k-lcci.md) -- [面试题 17.15. 最长单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/longest-word-lcci.md) -- [面试题 17.17. 多次搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/multi-search-lcci.md) diff --git a/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci.md b/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci.md deleted file mode 100644 index a985f070..00000000 --- a/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci.md +++ /dev/null @@ -1,54 +0,0 @@ -# [面试题 02.07. 链表相交](https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/) - -- 标签:哈希表、链表、双指针 -- 难度:简单 - -## 题目链接 - -- [面试题 02.07. 链表相交 - 力扣](https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/) - -## 题目大意 - -给定两个链表的头节点 `headA`、`headB`。 - -要求:找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 `None` 。 - -比如:链表 A 为 `[4, 1, 8, 4, 5]`,链表 B 为 `[5, 0, 1, 8, 4, 5]`。则如下图所示,两个链表相交的起始节点为 `8`,则输出结果为 `8`。 - -![](https://assets.leetcode.com/uploads/2018/12/13/160_example_1.png) - - - - - -## 解题思路 - -如果两个链表相交,那么从相交位置开始,到结束,必有一段等长且相同的节点。假设链表 `A` 的长度为 `m`、链表 `B` 的长度为 `n`,他们的相交序列有 `k` 个,则相交情况可以如下如所示: - -![](https://qcdn.itcharge.cn/images/20210401113538.png) - -现在问题是如何找到 `m - k` 或者 `n - k` 的位置。 - -考虑将链表 `A` 的末尾拼接上链表 `B`,链表 `B` 的末尾拼接上链表 `A`。 - -然后使用两个指针 `pA` 、`pB`,分别从链表 `A`、链表 `B` 的头节点开始遍历,如果走到共同的节点,则返回该节点。 - -否则走到两个链表末尾,返回 `None`。 - -![](https://qcdn.itcharge.cn/images/20210401114100.png) - -## 代码 - -```python -class Solution: - def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: - if headA == None or headB == None: - return None - pA = headA - pB = headB - while pA != pB : - pA = pA.next if pA != None else headB - pB = pB.next if pB != None else headA - return pA -``` - diff --git a/docs/solutions/Interviews/kth-node-from-end-of-list-lcci.md b/docs/solutions/Interviews/kth-node-from-end-of-list-lcci.md deleted file mode 100644 index adec3b65..00000000 --- a/docs/solutions/Interviews/kth-node-from-end-of-list-lcci.md +++ /dev/null @@ -1,38 +0,0 @@ -# [面试题 02.02. 返回倒数第 k 个节点](https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/) - -- 标签:链表、双指针 -- 难度:简单 - -## 题目链接 - -- [面试题 02.02. 返回倒数第 k 个节点 - 力扣](https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/) - -## 题目大意 - -给定一个链表的头节点 `head`,以及一个整数 `k`。 - -要求:返回链表的倒数第 `k` 个节点的值。 - -## 解题思路 - -常规思路是遍历一遍链表,求出链表长度,再遍历一遍到对应位置,返回该位置上的节点。 - -如果用一次遍历实现的话,可以使用快慢指针。让快指针先走 `k` 步,然后快慢指针、慢指针再同时走,每次一步,这样等快指针遍历到链表尾部的时候,慢指针就刚好遍历到了倒数第 `k` 个节点位置。返回该该位置上的节点即可。 - -## 代码 - -```python -class Solution: - def kthToLast(self, head: ListNode, k: int) -> int: - slow = head - fast = head - for _ in range(k): - if fast == None: - return fast - fast = fast.next - while fast: - slow = slow.next - fast = fast.next - return slow.val -``` - diff --git a/docs/solutions/Interviews/legal-binary-search-tree-lcci.md b/docs/solutions/Interviews/legal-binary-search-tree-lcci.md deleted file mode 100644 index d78f5baf..00000000 --- a/docs/solutions/Interviews/legal-binary-search-tree-lcci.md +++ /dev/null @@ -1,46 +0,0 @@ -# [面试题 04.05. 合法二叉搜索树](https://leetcode.cn/problems/legal-binary-search-tree-lcci/) - -- 标签:树、深度优先搜索、二叉搜索树、二叉树 -- 难度:中等 - -## 题目链接 - -- [面试题 04.05. 合法二叉搜索树 - 力扣](https://leetcode.cn/problems/legal-binary-search-tree-lcci/) - -## 题目大意 - -给定一个二叉树的根节点 `root`。 - -要求:检查该二叉树是否为二叉搜索树。 - -二叉搜索树特征: - -- 节点的左子树只包含小于当前节点的数。 -- 节点的右子树只包含大于当前节点的数。 -- 所有左子树和右子树自身必须也是二叉搜索树。 - -## 解题思路 - -根据题意进行递归遍历即可。前序、中序、后序遍历都可以。 - -以前序遍历为例,递归函数为:`preorderTraversal(root, min_v, max_v)` - -前序遍历时,先判断根节点的值是否在 `(min_v, max_v)` 之间。如果不在则直接返回 `False`。在区间内,则继续递归检测左右子树是否满足,都满足才是一棵二叉搜索树。 - -递归遍历左子树的时候,要将上界 `max_v` 改为左子树的根节点值,因为左子树上所有节点的值均小于根节点的值。同理,遍历右子树的时候,要将下界 `min_v` 改为右子树的根节点值,因为右子树上所有节点的值均大于根节点。 - -## 代码 - -```python -class Solution: - def isValidBST(self, root: TreeNode) -> bool: - def preorderTraversal(root, min_v, max_v): - if root == None: - return True - if root.val >= max_v or root.val <= min_v: - return False - return preorderTraversal(root.left, min_v, root.val) and preorderTraversal(root.right, root.val, max_v) - - return preorderTraversal(root, float('-inf'), float('inf')) -``` - diff --git a/docs/solutions/Interviews/linked-list-cycle-lcci.md b/docs/solutions/Interviews/linked-list-cycle-lcci.md deleted file mode 100644 index bc98e81f..00000000 --- a/docs/solutions/Interviews/linked-list-cycle-lcci.md +++ /dev/null @@ -1,47 +0,0 @@ -# [面试题 02.08. 环路检测](https://leetcode.cn/problems/linked-list-cycle-lcci/) - -- 标签:哈希表、链表、双指针 -- 难度:中等 - -## 题目链接 - -- [面试题 02.08. 环路检测 - 力扣](https://leetcode.cn/problems/linked-list-cycle-lcci/) - -## 题目大意 - -给定一个链表的头节点 `head`。 - -要求:判断链表中是否有环,如果有环则返回入环的第一个节点,无环则返回 None。 - -## 解题思路 - -利用两个指针,一个慢指针每次前进一步,快指针每次前进两步(两步或多步效果是等价的)。如果两个指针在链表头节点以外的某一节点相遇(即相等)了,那么说明链表有环,否则,如果(快指针)到达了某个没有后继指针的节点时,那么说明没环。 - -如果有环,则再定义一个指针,和慢指针一起每次移动一步,两个指针相遇的位置即为入口节点。 - -这是因为:假设入环位置为 A,快慢指针在在 B 点相遇,则相遇时慢指针走了 $a + b$ 步,快指针走了 $a + n(b+c) + b$ 步。 - -$2(a + b) = a + n(b + c) + b$。可以推出:$a = c + (n-1)(b + c)$。 - -我们可以发现:从相遇点到入环点的距离 $c$ 加上 $n-1$ 圈的环长 $b + c$ 刚好等于从链表头部到入环点的距离。 - -## 代码 - -```python -class Solution: - def detectCycle(self, head: ListNode) -> ListNode: - fast, slow = head, head - while True: - if not fast or not fast.next: - return None - fast = fast.next.next - slow = slow.next - if fast == slow: - break - - ans = head - while ans != slow: - ans, slow = ans.next, slow.next - return ans -``` - diff --git a/docs/solutions/Interviews/longest-word-lcci.md b/docs/solutions/Interviews/longest-word-lcci.md deleted file mode 100644 index 015aab7e..00000000 --- a/docs/solutions/Interviews/longest-word-lcci.md +++ /dev/null @@ -1,95 +0,0 @@ -# [面试题 17.15. 最长单词](https://leetcode.cn/problems/longest-word-lcci/) - -- 标签:字典树、数组、哈希表、字符串 -- 难度:中等 - -## 题目链接 - -- [面试题 17.15. 最长单词 - 力扣](https://leetcode.cn/problems/longest-word-lcci/) - -## 题目大意 - -给定一组单词 `words`。 - -要求:找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。若有多个长度相同的结果,返回其中字典序最小的一项,若没有符合要求的单词则返回空字符串。 - -## 解题思路 - -先将所有单词按照长度从长到短排序,相同长度的字典序小的排在前面。然后将所有单词存入字典树中。 - -然后一重循环遍历所有单词 `word`,二重循环遍历单词中所有字符 `word[i]`。 - -如果当前遍历的字符为单词末尾,递归判断从 `i + 1` 位置开始,剩余部分是否可以切分为其他单词组合,如果可以切分,则返回当前单词 `word`。如果不可以切分,则返回空字符串 `""`。 - -## 代码 - -```python -class Trie: - - def __init__(self): - """ - Initialize your data structure here. - """ - self.children = dict() - self.isEnd = False - - - def insert(self, word: str) -> None: - """ - Inserts a word into the trie. - """ - cur = self - for ch in word: - if ch not in cur.children: - cur.children[ch] = Trie() - cur = cur.children[ch] - cur.isEnd = True - - - def search(self, word: str) -> bool: - """ - Returns if the word is in the trie. - """ - cur = self - for ch in word: - if ch not in cur.children: - return False - cur = cur.children[ch] - - return cur is not None and cur.isEnd - - def splitToWord(self, remain): - if not remain or remain == "": - return True - cur = self - for i in range(len(remain)): - ch = remain[i] - if ch not in cur.children: - return False - if cur.children[ch].isEnd and self.splitToWord(remain[i + 1:]): - return True - cur = cur.children[ch] - return False - - def dfs(self, words): - for word in words: - cur = self - size = len(word) - for i in range(size): - ch = word[i] - if i < size - 1 and cur.children[ch].isEnd and self.splitToWord(word[i+1:]): - return word - cur = cur.children[ch] - return "" - -class Solution: - def longestWord(self, words: List[str]) -> str: - words.sort(key=lambda x: (-len(x), x)) - trie_tree = Trie() - for word in words: - trie_tree.insert(word) - - ans = trie_tree.dfs(words) - return ans -``` - diff --git a/docs/solutions/Interviews/min-stack-lcci.md b/docs/solutions/Interviews/min-stack-lcci.md deleted file mode 100644 index 44a538ff..00000000 --- a/docs/solutions/Interviews/min-stack-lcci.md +++ /dev/null @@ -1,59 +0,0 @@ -# [面试题 03.02. 栈的最小值](https://leetcode.cn/problems/min-stack-lcci/) - -- 标签:栈、设计 -- 难度:简单 - -## 题目链接 - -- [面试题 03.02. 栈的最小值 - 力扣](https://leetcode.cn/problems/min-stack-lcci/) - -## 题目大意 - -设计一个「栈」,要求实现 `push` ,`pop` ,`top` ,`getMin` 操作,其中 `getMin` 要求能在常数时间内实现。 - -## 解题思路 - -使用一个栈,栈元素中除了保存当前值之外,再保存一个当前最小值。 - -- `push` 操作:如果栈不为空,则判断当前值与栈顶元素所保存的最小值,并更新当前最小值,将新元素保存到栈中。 -- `pop`操作:正常出栈 -- `top` 操作:返回栈顶元素保存的值。 -- `getMin` 操作:返回栈顶元素保存的最小值。 - -## 代码 - -```python -class MinStack: - - def __init__(self): - """ - initialize your data structure here. - """ - self.stack = [] - - class Node: - def __init__(self, x): - self.val = x - self.min = x - - def push(self, x: int) -> None: - node = self.Node(x) - if len(self.stack) == 0: - self.stack.append(node) - else: - topNode = self.stack[-1] - if node.min > topNode.min: - node.min = topNode.min - - self.stack.append(node) - - def pop(self) -> None: - self.stack.pop() - - def top(self) -> int: - return self.stack[-1].val - - def getMin(self) -> int: - return self.stack[-1].min -``` - diff --git a/docs/solutions/Interviews/minimum-height-tree-lcci.md b/docs/solutions/Interviews/minimum-height-tree-lcci.md deleted file mode 100644 index 7b22bf8f..00000000 --- a/docs/solutions/Interviews/minimum-height-tree-lcci.md +++ /dev/null @@ -1,34 +0,0 @@ -# [面试题 04.02. 最小高度树](https://leetcode.cn/problems/minimum-height-tree-lcci/) - -- 标签:树、二叉搜索树、数组、分治、二叉树 -- 难度:简单 - -## 题目链接 - -- [面试题 04.02. 最小高度树 - 力扣](https://leetcode.cn/problems/minimum-height-tree-lcci/) - -## 题目大意 - -给定一个升序的有序数组 `nums`。 - -要求:创建一棵高度最小的二叉搜索树(高度平衡的二叉搜索树)。 - -## 解题思路 - -直观上,如果把数组的中间元素当做根,那么数组左侧元素都小于根节点,右侧元素都大于根节点,且左右两侧元素个数相同,或最多相差 `1` 个。那么构建的树高度差也不会超过 `1`。所以猜想出:如果左右子树约平均,树就越平衡。这样我们就可以每次取中间元素作为当前的根节点,两侧的元素作为左右子树递归建树,左侧区间 `[L, mid - 1]` 作为左子树,右侧区间 `[mid + 1, R]` 作为右子树。 - -## 代码 - -```python -class Solution: - def sortedArrayToBST(self, nums: List[int]) -> TreeNode: - size = len(nums) - if size == 0: - return None - mid = size // 2 - root = TreeNode(nums[mid]) - root.left = Solution.sortedArrayToBST(self, nums[:mid]) - root.right = Solution.sortedArrayToBST(self, nums[mid + 1:]) - return root -``` - diff --git a/docs/solutions/Interviews/multi-search-lcci.md b/docs/solutions/Interviews/multi-search-lcci.md deleted file mode 100644 index 12891e29..00000000 --- a/docs/solutions/Interviews/multi-search-lcci.md +++ /dev/null @@ -1,80 +0,0 @@ -# [面试题 17.17. 多次搜索](https://leetcode.cn/problems/multi-search-lcci/) - -- 标签:字典树、数组、哈希表、字符串、字符串匹配、滑动窗口 -- 难度:中等 - -## 题目链接 - -- [面试题 17.17. 多次搜索 - 力扣](https://leetcode.cn/problems/multi-search-lcci/) - -## 题目大意 - -给定一个较长字符串 `big` 和一个包含较短字符串的数组 `smalls`。 - -要求:设计一个方法,根据 `smalls` 中的每一个较短字符串,对 `big` 进行搜索。输出 `smalls` 中的字符串在 `big` 里出现的所有位置 `positions`,其中 `positions[i]` 为 `smalls[i]` 出现的所有位置。 - -## 解题思路 - -构建字典树,将 `smalls` 中所有字符串存入字典树中,并在字典树中记录下插入字符串的顺序下标。 - -然后一重循环遍历 `big`,表示从第 `i` 位置开始的字符串 `big[i:]`。然后在字符串前缀中搜索对应的单词,将所有符合要求的单词插入顺序位置存入列表中,返回列表。 - -对于列表中每个单词插入下标顺序 `index` 和 `big[i:]` 来说, `i` 就是 `smalls` 中第 `index` 个字符串所对应在 `big` 中的开始位置,将其存入答案数组并返回即可。 - -## 代码 - -```python -class Trie: - - def __init__(self): - """ - Initialize your data structure here. - """ - self.children = dict() - self.isEnd = False - self.index = -1 - - - def insert(self, word: str, index: int) -> None: - """ - Inserts a word into the trie. - """ - cur = self - for ch in word: - if ch not in cur.children: - cur.children[ch] = Trie() - cur = cur.children[ch] - cur.isEnd = True - cur.index = index - - - def search(self, text: str) -> list: - """ - Returns if the word is in the trie. - """ - cur = self - res = [] - for i in range(len(text)): - ch = text[i] - if ch not in cur.children: - return res - cur = cur.children[ch] - if cur.isEnd: - res.append(cur.index) - return res - -class Solution: - def multiSearch(self, big: str, smalls: List[str]) -> List[List[int]]: - trie_tree = Trie() - for i in range(len(smalls)): - word = smalls[i] - trie_tree.insert(word, i) - - res = [[] for _ in range(len(smalls))] - - for i in range(len(big)): - for index in trie_tree.search(big[i:]): - res[index].append(i) - return res -``` - diff --git a/docs/solutions/Interviews/number-of-2s-in-range-lcci.md b/docs/solutions/Interviews/number-of-2s-in-range-lcci.md deleted file mode 100644 index 3fe09ff1..00000000 --- a/docs/solutions/Interviews/number-of-2s-in-range-lcci.md +++ /dev/null @@ -1,85 +0,0 @@ -# [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) - -- 标签:递归、数学、动态规划 -- 难度:困难 - -## 题目链接 - -- [面试题 17.06. 2出现的次数 - 力扣](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) - -## 题目大意 - -**描述**:给定一个整数 $n$。 - -**要求**:计算从 $0$ 到 $n$ (包含 $n$) 中数字 $2$ 出现的次数。 - -**说明**: - -- $n \le 10^9$。 - -**示例**: - -- 示例 1: - -```python -输入: 25 -输出: 9 -解释: (2, 12, 20, 21, 22, 23, 24, 25)(注意 22 应该算作两次) -``` - -## 解题思路 - -### 思路 1:动态规划 + 数位 DP - -将 $n$ 转换为字符串 $s$,定义递归函数 `def dfs(pos, cnt, isLimit):` 表示构造第 $pos$ 位及之后所有数位中数字 $2$ 出现的个数。接下来按照如下步骤进行递归。 - -1. 从 `dfs(0, 0, True)` 开始递归。 `dfs(0, 0, True)` 表示: - 1. 从位置 $0$ 开始构造。 - 2. 初始数字 $2$ 出现的个数为 $0$。 - 3. 开始时受到数字 $n$ 对应最高位数位的约束。 -2. 如果遇到 $pos == len(s)$,表示到达数位末尾,此时:返回数字 $2$ 出现的个数 $cnt$。 -3. 如果 $pos \ne len(s)$,则定义方案数 $ans$,令其等于 $0$,即:`ans = 0`。 -4. 如果遇到 $isNum == False$,说明之前位数没有填写数字,当前位可以跳过,这种情况下方案数等于 $pos + 1$ 位置上没有受到 $pos$ 位的约束,并且之前没有填写数字时的方案数,即:`ans = dfs(i + 1, state, False, False)`。 -5. 如果 $isNum == True$,则当前位必须填写一个数字。此时: - 1. 因为不需要考虑前导 $0$ 所以当前位数位所能选择的最小数字($minX$)为 $0$。 - 2. 根据 $isLimit$ 来决定填当前位数位所能选择的最大数字($maxX$)。 - 3. 然后根据 $[minX, maxX]$ 来枚举能够填入的数字 $d$。 - 4. 方案数累加上当前位选择 $d$ 之后的方案数,即:`ans += dfs(pos + 1, cnt + (d == 2), isLimit and d == maxX)`。 - 1. `cnt + (d == 2)` 表示之前数字 $2$ 出现的个数加上当前位为数字 $2$ 的个数。 - 2. `isLimit and d == maxX` 表示 $pos + 1$ 位受到之前位 $pos$ 位限制。 -6. 最后的方案数为 `dfs(0, 0, True)`,将其返回即可。 - -### 思路 1:代码 - -```python -class Solution: - def numberOf2sInRange(self, n: int) -> int: - # 将 n 转换为字符串 s - s = str(n) - - @cache - # pos: 第 pos 个数位 - # cnt: 之前数字 2 出现的个数。 - # isLimit: 表示是否受到选择限制。如果为真,则第 pos 位填入数字最多为 s[pos];如果为假,则最大可为 9。 - def dfs(pos, cnt, isLimit): - if pos == len(s): - return cnt - - ans = 0 - # 不需要考虑前导 0,则最小可选择数字为 0 - minX = 0 - # 如果受到选择限制,则最大可选择数字为 s[pos],否则最大可选择数字为 9。 - maxX = int(s[pos]) if isLimit else 9 - - # 枚举可选择的数字 - for d in range(minX, maxX + 1): - ans += dfs(pos + 1, cnt + (d == 2), isLimit and d == maxX) - return ans - - return dfs(0, 0, True) -``` - -### 思路 1:复杂度分析 - -- **时间复杂度**:$O(\log n)$。 -- **空间复杂度**:$O(\log n)$。 diff --git a/docs/solutions/Interviews/palindrome-linked-list-lcci.md b/docs/solutions/Interviews/palindrome-linked-list-lcci.md deleted file mode 100644 index 9907bb09..00000000 --- a/docs/solutions/Interviews/palindrome-linked-list-lcci.md +++ /dev/null @@ -1,32 +0,0 @@ -# [面试题 02.06. 回文链表](https://leetcode.cn/problems/palindrome-linked-list-lcci/) - -- 标签:栈、递归、链表、双指针 -- 难度:简单 - -## 题目链接 - -- [面试题 02.06. 回文链表 - 力扣](https://leetcode.cn/problems/palindrome-linked-list-lcci/) - -## 题目大意 - -给定一个链表的头节点 `head`。 - -要求:判断该链表是否为回文链表。 - -## 解题思路 - -利用数组,将链表元素依次存入。然后再使用两个指针,一个指向数组开始位置,一个指向数组结束位置,依次判断首尾对应元素是否相等,若都相等,则为回文链表。若不相等,则不是回文链表。 - -## 代码 - -```python -class Solution: - def isPalindrome(self, head: ListNode) -> bool: - nodes = [] - p1 = head - while p1 != None: - nodes.append(p1.val) - p1 = p1.next - return nodes == nodes[::-1] -``` - diff --git a/docs/solutions/Interviews/paths-with-sum-lcci.md b/docs/solutions/Interviews/paths-with-sum-lcci.md deleted file mode 100644 index 0cec25c8..00000000 --- a/docs/solutions/Interviews/paths-with-sum-lcci.md +++ /dev/null @@ -1,45 +0,0 @@ -# [面试题 04.12. 求和路径](https://leetcode.cn/problems/paths-with-sum-lcci/) - -- 标签:树、深度优先搜索、二叉树 -- 难度:中等 - -## 题目链接 - -- [面试题 04.12. 求和路径 - 力扣](https://leetcode.cn/problems/paths-with-sum-lcci/) - -## 题目大意 - -给定一个二叉树的根节点 `root`,和一个整数 `targetSum`。 - -要求:求出该二叉树里节点值之和等于 `targetSum` 的路径的数目。 - -- 路径:不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 - -## 解题思路 - -直观想法是: - -以每一个节点 `node` 为起始节点,向下检测延伸的路径。递归遍历每一个节点所有可能的路径,然后将这些路径数目加起来即为答案。 - -但是这样会存在许多重复计算。我们可以定义节点的前缀和来减少重复计算。 - -- 节点的前缀和:从根节点到当前节点路径上所有节点的和。 - -有了节点的前缀和,我们就可以通过前缀和来计算两节点之间的路劲和。即:`则两节点之间的路径和 = 两节点之间的前缀和之差`。 - -为了计算符合要求的路径数量,我们用哈希表存储「前缀和的节点数量」。哈希表以「当前节点的前缀和」为键,以「该前缀和的节点数量」为值。这样就能通过哈希表直接计算出符合要求的路径数量,从而累加到答案上。 - -整个算法的具体步骤如下: - -- 通过先序遍历方式递归遍历二叉树,计算每一个节点的前缀和 `cur_sum`。 -- 从哈希表中取出 `cur_sum - target_sum` 的路径数量(也就是表示存在从前缀和为 `cur_sum - target_sum` 所对应的节点到前缀和为 `cur_sum` 所对应的节点的路径个数)累加到答案 `res` 中。 -- 然后以「当前节点的前缀和」为键,以「该前缀和的节点数量」为值,存入哈希表中。 -- 递归遍历二叉树,并累加答案值。 -- 恢复哈希表「当前前缀和的节点数量」,返回答案。 - -## 代码 - -```python - -``` - diff --git a/docs/solutions/Interviews/permutation-i-lcci.md b/docs/solutions/Interviews/permutation-i-lcci.md deleted file mode 100644 index f5cd4488..00000000 --- a/docs/solutions/Interviews/permutation-i-lcci.md +++ /dev/null @@ -1,46 +0,0 @@ -# [面试题 08.07. 无重复字符串的排列组合](https://leetcode.cn/problems/permutation-i-lcci/) - -- 标签:字符串、回溯 -- 难度:中等 - -## 题目链接 - -- [面试题 08.07. 无重复字符串的排列组合 - 力扣](https://leetcode.cn/problems/permutation-i-lcci/) - -## 题目大意 - -给定一个字符串 `S`。 - -要求:打印出该字符串中字符的所有排列。可以以任意顺序返回这个字符串数组,但里边不能有重复元素。 - -## 解题思路 - -使用 `visited` 数组标记该元素在当前排列中是否被访问过。若未被访问过则将其加入排列中,并在访问后将该元素变为未访问状态。然后进行回溯遍历。 - -## 代码 - -```python -class Solution: - res = [] - path = [] - - def backtrack(self, S, visited): - if len(self.path) == len(S): - self.res.append(''.join(self.path)) - return - for i in range(len(S)): - if not visited[i]: - visited[i] = True - self.path.append(S[i]) - self.backtrack(S, visited) - self.path.pop() - visited[i] = False - - def permutation(self, S: str) -> List[str]: - self.res.clear() - self.path.clear() - visited = [False for _ in range(len(S))] - self.backtrack(S, visited) - return self.res -``` - diff --git a/docs/solutions/Interviews/permutation-ii-lcci.md b/docs/solutions/Interviews/permutation-ii-lcci.md deleted file mode 100644 index 8f9edeb5..00000000 --- a/docs/solutions/Interviews/permutation-ii-lcci.md +++ /dev/null @@ -1,55 +0,0 @@ -# [面试题 08.08. 有重复字符串的排列组合](https://leetcode.cn/problems/permutation-ii-lcci/) - -- 标签:字符串、回溯 -- 难度:中等 - -## 题目链接 - -- [面试题 08.08. 有重复字符串的排列组合 - 力扣](https://leetcode.cn/problems/permutation-ii-lcci/) - -## 题目大意 - -给定一个字符串 `s`,字符串中包含有重复字符。 - -要求:打印出该字符串中字符的所有排列。可以以任意顺序返回这个字符串数组。 - -## 解题思路 - -因为原字符串可能含有重复元素,所以在回溯的时候需要进行去重。先将字符串 `s` 转为 `list` 列表,再对列表进行排序,然后使用 `visited` 数组标记该元素在当前排列中是否被访问过。若未被访问过则将其加入排列中,并在访问后将该元素变为未访问状态。 - -然后再递归遍历下一层元素之前,增加一句语句进行判重:`if i > 0 and nums[i] == nums[i - 1] and not visited[i - 1]: continue`。 - -然后进行回溯遍历。 - -## 代码 - -```python -class Solution: - res = [] - path = [] - - def backtrack(self, ls, visited): - if len(self.path) == len(ls): - self.res.append(''.join(self.path)) - return - for i in range(len(ls)): - if i > 0 and ls[i] == ls[i - 1] and not visited[i - 1]: - continue - - if not visited[i]: - visited[i] = True - self.path.append(ls[i]) - self.backtrack(ls, visited) - self.path.pop() - visited[i] = False - - def permutation(self, S: str) -> List[str]: - self.res.clear() - self.path.clear() - ls = list(S) - ls.sort() - visited = [False for _ in range(len(S))] - self.backtrack(ls, visited) - return self.res -``` - diff --git a/docs/solutions/Interviews/power-set-lcci.md b/docs/solutions/Interviews/power-set-lcci.md deleted file mode 100644 index b6f4d166..00000000 --- a/docs/solutions/Interviews/power-set-lcci.md +++ /dev/null @@ -1,35 +0,0 @@ -# [面试题 08.04. 幂集](https://leetcode.cn/problems/power-set-lcci/) - -- 标签:位运算、数组、回溯 -- 难度:中等 - -## 题目链接 - -- [面试题 08.04. 幂集 - 力扣](https://leetcode.cn/problems/power-set-lcci/) - -## 题目大意 - -给定一个集合 `nums`,集合中不包含重复元素。 - -压枪欧秋:返回该集合的所有子集。 - -## 解题思路 - -回溯算法,遍历集合 `nums`。为了使得子集不重复,每次遍历从当前位置的下一个位置进行下一层遍历。 - -## 代码 - -```python -class Solution: - def subsets(self, nums: List[int]) -> List[List[int]]: - def backtrack(size, subset, index): - res.append(subset) - for i in range(index, size): - backtrack(size, subset + [nums[i]], i + 1) - - size = len(nums) - res = list() - backtrack(size, [], 0) - return res -``` - diff --git a/docs/solutions/Interviews/rotate-matrix-lcci.md b/docs/solutions/Interviews/rotate-matrix-lcci.md deleted file mode 100644 index 275cbe8f..00000000 --- a/docs/solutions/Interviews/rotate-matrix-lcci.md +++ /dev/null @@ -1,67 +0,0 @@ -# [面试题 01.07. 旋转矩阵](https://leetcode.cn/problems/rotate-matrix-lcci/) - -- 标签:数组、数学、矩阵 -- 难度:中等 - -## 题目链接 - -- [面试题 01.07. 旋转矩阵 - 力扣](https://leetcode.cn/problems/rotate-matrix-lcci/) - -## 题目大意 - -给定一个 `n * n` 大小的二维矩阵用来表示图像,其中每个像素的大小为 4 字节。 - -要求:设计一种算法,将图像旋转 90 度。并且要不占用额外内存空间。 - -## 解题思路 - -题目要求不占用额外内存空间,就是要在原二维矩阵上直接进行旋转操作。我们可以用翻转操作代替旋转操作。具体可以分为两步: - -1. 上下翻转。 - -2. 主对角线翻转。 - -举个例子: - -``` - 1 2 3 4 - 5 6 7 8 - 9 10 11 12 -13 14 15 16 -``` - -上下翻转后变为: - -``` -13 14 15 16 - 9 10 11 12 - 5 6 7 8 - 1 2 3 4 -``` - -在经过主对角线翻转后变为: - -``` -13 9 5 1 -14 10 6 2 -15 11 7 3 -16 12 8 4 -``` - -## 代码 - -```python -class Solution: - def rotate(self, matrix: List[List[int]]) -> None: - """ - Do not return anything, modify matrix in-place instead. - """ - size = len(matrix) - for i in range(size // 2): - for j in range(size): - matrix[i][j], matrix[size - i - 1][j] = matrix[size - i - 1][j], matrix[i][j] - for i in range(size): - for j in range(i): - matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j] -``` - diff --git a/docs/solutions/Interviews/smallest-k-lcci.md b/docs/solutions/Interviews/smallest-k-lcci.md deleted file mode 100644 index cc05a832..00000000 --- a/docs/solutions/Interviews/smallest-k-lcci.md +++ /dev/null @@ -1,73 +0,0 @@ -# [面试题 17.14. 最小K个数](https://leetcode.cn/problems/smallest-k-lcci/) - -- 标签:数组、分治、快速选择、排序、堆(优先队列) -- 难度:中等 - -## 题目链接 - -- [面试题 17.14. 最小K个数 - 力扣](https://leetcode.cn/problems/smallest-k-lcci/) - -## 题目大意 - -给定整数数组 `arr`,再给定一个整数 `k`。 - -要求:返回数组 `arr` 中最小的 `k` 个数。 - -## 解题思路 - -直接可以想到的思路是:排序后输出数组上对应的最小的 k 个数。所以问题关键在于排序方法的复杂度。 - -冒泡排序、选择排序、插入排序时间复杂度 $O(n^2)$ 太高了,解答会超时。 - -可考虑堆排序、归并排序、快速排序。本题使用堆排序。具体做法如下: - -1. 利用数组前 `k` 个元素,建立大小为 `k` 的大顶堆。 -2. 遍历数组 `[k, size - 1]` 的元素,判断其与堆顶元素关系,如果比堆顶元素小,则将其赋值给堆顶元素,再对大顶堆进行调整。 -3. 最后输出前调整过后的大顶堆的前 `k` 个元素。 - -## 代码 - -```python -class Solution: - def heapify(self, nums: [int], index: int, end: int): - left = index * 2 + 1 - right = left + 1 - while left <= end: - # 当前节点为非叶子节点 - max_index = index - if nums[left] > nums[max_index]: - max_index = left - if right <= end and nums[right] > nums[max_index]: - max_index = right - if index == max_index: - # 如果不用交换,则说明已经交换结束 - break - nums[index], nums[max_index] = nums[max_index], nums[index] - # 继续调整子树 - index = max_index - left = index * 2 + 1 - right = left + 1 - - # 初始化大顶堆 - def buildMaxHeap(self, nums: [int], k: int): - # (k-2) // 2 是最后一个非叶节点,叶节点不用调整 - for i in range((k - 2) // 2, -1, -1): - self.heapify(nums, i, k - 1) - return nums - - def smallestK(self, arr: List[int], k: int) -> List[int]: - size = len(arr) - if k <= 0 or not arr: - return [] - if size <= k: - return arr - - self.buildMaxHeap(arr, k) - for i in range(k, size): - if arr[i] < arr[0]: - arr[i], arr[0] = arr[0], arr[i] - self.heapify(arr, 0, k - 1) - - return arr[:k] -``` - diff --git a/docs/solutions/Interviews/sorted-matrix-search-lcci.md b/docs/solutions/Interviews/sorted-matrix-search-lcci.md deleted file mode 100644 index 61c554e6..00000000 --- a/docs/solutions/Interviews/sorted-matrix-search-lcci.md +++ /dev/null @@ -1,90 +0,0 @@ -# [面试题 10.09. 排序矩阵查找](https://leetcode.cn/problems/sorted-matrix-search-lcci/) - -- 标签:数组、二分查找、分治、矩阵 -- 难度:中等 - -## 题目链接 - -- [面试题 10.09. 排序矩阵查找 - 力扣](https://leetcode.cn/problems/sorted-matrix-search-lcci/) - -## 题目大意 - -给定一个 `m * n` 大小的有序整数矩阵。每一行、每一列都按升序排列。再给定一个目标值 `target`。 - -要求:判断矩阵中是否可以找到 `target`,若找到 `target`,返回 `True`,否则返回 `False`。 - -## 解题思路 - -矩阵是有序的,可以考虑使用二分搜索来进行查找。 - -迭代对角线元素,假设对角线元素的坐标为 `(row, col)`。把数组元素按对角线分为右上角部分和左下角部分。 - -则对于当前对角线元素右侧第 `row` 行、对角线元素下侧第 `col` 列进行二分查找。 - -- 如果找到目标,直接返回 `True`。 -- 如果找不到目标,则缩小范围,继续查找。 -- 直到所有对角线元素都遍历完,依旧没找到,则返回 `False`。 - -## 代码 - -```python -class Solution: - def diagonalBinarySearch(self, matrix, diagonal, target): - left = 0 - right = diagonal - while left < right: - mid = left + (right - left) // 2 - if matrix[mid][mid] < target: - left = mid + 1 - else: - right = mid - return left - - def rowBinarySearch(self, matrix, begin, cols, target): - left = begin - right = cols - while left < right: - mid = left + (right - left) // 2 - if matrix[begin][mid] < target: - left = mid + 1 - elif matrix[begin][mid] > target: - right = mid - 1 - else: - left = mid - break - return begin <= left <= cols and matrix[begin][left] == target - - def colBinarySearch(self, matrix, begin, rows, target): - left = begin + 1 - right = rows - while left < right: - mid = left + (right - left) // 2 - if matrix[mid][begin] < target: - left = mid + 1 - elif matrix[mid][begin] > target: - right = mid - 1 - else: - left = mid - break - return begin <= left <= rows and matrix[left][begin] == target - - def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: - rows = len(matrix) - if rows == 0: - return False - cols = len(matrix[0]) - if cols == 0: - return False - - min_val = min(rows, cols) - index = self.diagonalBinarySearch(matrix, min_val - 1, target) - if matrix[index][index] == target: - return True - for i in range(index + 1): - row_search = self.rowBinarySearch(matrix, i, cols - 1, target) - col_search = self.colBinarySearch(matrix, i, rows - 1, target) - if row_search or col_search: - return True - return False -``` - diff --git a/docs/solutions/Interviews/sorted-merge-lcci.md b/docs/solutions/Interviews/sorted-merge-lcci.md deleted file mode 100644 index ea05bd85..00000000 --- a/docs/solutions/Interviews/sorted-merge-lcci.md +++ /dev/null @@ -1,72 +0,0 @@ -# [面试题 10.01. 合并排序的数组](https://leetcode.cn/problems/sorted-merge-lcci/) - -- 标签:数组、双指针、排序 -- 难度:简单 - -## 题目链接 - -- [面试题 10.01. 合并排序的数组 - 力扣](https://leetcode.cn/problems/sorted-merge-lcci/) - -## 题目大意 - -**描述**:给定两个排序后的数组 `A` 和 `B`,以及 `A` 的元素数量 `m` 和 `B` 的元素数量 `n`。 `A` 的末端有足够的缓冲空间容纳 `B`。 - -**要求**:编写一个方法,将 `B` 合并入 `A` 并排序。 - -**说明**: - -- $A.length == n + m$。 - -**示例**: - -- 示例 1: - -```python -输入: -A = [1,2,3,0,0,0], m = 3 -B = [2,5,6], n = 3 - -输出: [1,2,2,3,5,6] -``` - -## 解题思路 - -### 思路 1:归并排序 - -可以利用归并排序算法的归并步骤思路。 - -1. 使用两个指针分别表示`A`、`B` 正在处理的元素下标。 -2. 对 `A`、`B` 进行归并操作,将结果存入新数组中。归并之后,再将所有元素赋值到数组 `A` 中。 - -### 思路 1:代码 - -```python -class Solution: - def merge(self, A: List[int], m: int, B: List[int], n: int) -> None: - """ - Do not return anything, modify A in-place instead. - """ - arr = [] - index_A, index_B = 0, 0 - while index_A < m and index_B < n: - if A[index_A] <= B[index_B]: - arr.append(A[index_A]) - index_A += 1 - else: - arr.append(B[index_B]) - index_B += 1 - while index_A < m: - arr.append(A[index_A]) - index_A += 1 - while index_B < n: - arr.append(B[index_B]) - index_B += 1 - for i in range(m + n): - A[i] = arr[i] -``` - -### 思路 1:复杂度分析 - -- **时间复杂度**:$O(m + n)$。 -- **空间复杂度**:$O(m + n)$。 - diff --git a/docs/solutions/Interviews/successor-lcci.md b/docs/solutions/Interviews/successor-lcci.md deleted file mode 100644 index 0576afea..00000000 --- a/docs/solutions/Interviews/successor-lcci.md +++ /dev/null @@ -1,39 +0,0 @@ -# [面试题 04.06. 后继者](https://leetcode.cn/problems/successor-lcci/) - -- 标签:树、深度优先搜索、二叉搜索树、二叉树 -- 难度:中等 - -## 题目链接 - -- [面试题 04.06. 后继者 - 力扣](https://leetcode.cn/problems/successor-lcci/) - -## 题目大意 - -给定一棵二叉搜索树的根节点 `root` 和其中一个节点 `p`。 - -要求:找出该节点在树中的中序后继,即按照中序遍历的顺序节点 `p` 的下一个节点。如果节点 `p` 没有对应的下一个节点,则返回 `None`。 - -## 解题思路 - -递归遍历,具体步骤如下: - -- 如果 `root.val` 小于等于 `p.val`,则直接从 `root` 的右子树递归查找比 `p.val` 大的节点,从而找到中序后继。 -- 如果 `root.val` 大于 `p.val`,则 `root` 有可能是中序后继,也有可能是 `root` 的左子树。则从 `root` 的左子树递归查找更接近(更小的)。如果查找的值为 `None`,则当前 `root` 就是中序后继,否则继续递归查找,从而找到中序后继。 - -## 代码 - -```python -class Solution: - def inorderSuccessor(self, root: TreeNode, p: TreeNode) -> TreeNode: - if not p or not root: - return None - - if root.val <= p.val: - node = self.inorderSuccessor(root.right, p) - else: - node = self.inorderSuccessor(root.left, p) - if not node: - node = root - return node -``` - diff --git a/docs/solutions/Interviews/sum-lists-lcci.md b/docs/solutions/Interviews/sum-lists-lcci.md deleted file mode 100644 index 7962b73d..00000000 --- a/docs/solutions/Interviews/sum-lists-lcci.md +++ /dev/null @@ -1,47 +0,0 @@ -# [面试题 02.05. 链表求和](https://leetcode.cn/problems/sum-lists-lcci/) - -- 标签:递归、链表、数学 -- 难度:中等 - -## 题目链接 - -- [面试题 02.05. 链表求和 - 力扣](https://leetcode.cn/problems/sum-lists-lcci/) - -## 题目大意 - -给定两个非空的链表 `l1` 和 `l2`,表示两个非负整数,每位数字都是按照逆序的方式存储的,每个节点存储一位数字。 - -要求:计算两个整数的和,并逆序返回表示和的链表。 - -## 解题思路 - -模拟大数加法,按位相加,将结果添加到新链表上。需要注意进位和对 `10` 取余。 - -## 代码 - -```python -class Solution: - def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: - head = curr = ListNode(0) - carry = 0 - while l1 or l2 or carry: - if l1: - num1 = l1.val - l1 = l1.next - else: - num1 = 0 - if l2: - num2 = l2.val - l2 = l2.next - else: - num2 = 0 - - sum = num1 + num2 + carry - carry = sum // 10 - - curr.next = ListNode(sum % 10) - curr = curr.next - - return head.next -``` - diff --git a/docs/solutions/Interviews/words-frequency-lcci.md b/docs/solutions/Interviews/words-frequency-lcci.md deleted file mode 100644 index 6211c194..00000000 --- a/docs/solutions/Interviews/words-frequency-lcci.md +++ /dev/null @@ -1,78 +0,0 @@ -# [面试题 16.02. 单词频率](https://leetcode.cn/problems/words-frequency-lcci/) - -- 标签:设计、字典树、数组、哈希表、字符串 -- 难度:中等 - -## 题目链接 - -- [面试题 16.02. 单词频率 - 力扣](https://leetcode.cn/problems/words-frequency-lcci/) - -## 题目大意 - -要求:设计一个方法,找出任意指定单词在一本书中的出现频率。 - -支持如下操作: - -- `WordsFrequency(book)` 构造函数,参数为字符串数组构成的一本书。 -- `get(word)` 查询指定单词在书中出现的频率。 - -## 解题思路 - -使用字典树统计单词频率。 - -构造函数时,构建一个字典树,并将所有单词存入字典树中,同时在字典树中记录并维护单词频率。 - -查询时,调用字典树查询方法,查询单词频率。 - -## 代码 - -```python -class Trie: - - def __init__(self): - """ - Initialize your data structure here. - """ - self.children = dict() - self.isEnd = False - self.count = 0 - - - def insert(self, word: str) -> None: - """ - Inserts a word into the trie. - """ - cur = self - for ch in word: - if ch not in cur.children: - cur.children[ch] = Trie() - cur = cur.children[ch] - cur.isEnd = True - cur.count += 1 - - - def search(self, word: str) -> bool: - """ - Returns if the word is in the trie. - """ - cur = self - for ch in word: - if ch not in cur.children: - return 0 - cur = cur.children[ch] - if cur and cur.isEnd: - return cur.count - return 0 - -class WordsFrequency: - - def __init__(self, book: List[str]): - self.tire_tree = Trie() - for word in book: - self.tire_tree.insert(word) - - - def get(self, word: str) -> int: - return self.tire_tree.search(word) -``` - diff --git a/docs/solutions/Interviews/zero-matrix-lcci.md b/docs/solutions/Interviews/zero-matrix-lcci.md deleted file mode 100644 index 6f9f855b..00000000 --- a/docs/solutions/Interviews/zero-matrix-lcci.md +++ /dev/null @@ -1,70 +0,0 @@ -# [面试题 01.08. 零矩阵](https://leetcode.cn/problems/zero-matrix-lcci/) - -- 标签:数组、哈希表、矩阵 -- 难度:中等 - -## 题目链接 - -- [面试题 01.08. 零矩阵 - 力扣](https://leetcode.cn/problems/zero-matrix-lcci/) - -## 题目大意 - -给定一个 `m * n` 大小的二维矩阵 `matrix`。 - -要求:编写一种算法,如果矩阵中某个元素为 `0`,增将其所在行与列清零。 - -## 解题思路 - -直观上可以使用两个数组或者集合来标记行和列出现 `0` 的情况,但更好的做法是不用开辟新的数组或集合,直接原本二维矩阵 `matrix` 的空间。使用数组原本的元素进行记录出现 0 的情况。 - -设定两个变量 `flag_row0`、`flag_col0` 来标记第一行、第一列是否出现了 `0`。 - -接下来我们使用数组第一行、第一列来标记 `0` 的情况。 - -对数组除第一行、第一列之外的每个元素进行遍历,如果某个元素出现 `0` 了,则使用数组的第一行、第一列对应位置来存储 `0` 的标记。 - -再对数组除第一行、第一列之外的每个元素进行遍历,通过对第一行、第一列的标记 0 情况,进行置为 `0` 的操作。 - -最后再根据 `flag_row0`、`flag_col0` 的标记情况,对第一行、第一列进行置为 `0` 的操作。 - -## 代码 - -```python -class Solution: - def setZeroes(self, matrix: List[List[int]]) -> None: - """ - Do not return anything, modify matrix in-place instead. - """ - rows = len(matrix) - cols = len(matrix[0]) - flag_col0 = False - flag_row0 = False - for i in range(rows): - if matrix[i][0] == 0: - flag_col0 = True - break - - for j in range(cols): - if matrix[0][j] == 0: - flag_row0 = True - break - - for i in range(1, rows): - for j in range(1, cols): - if matrix[i][j] == 0: - matrix[i][0] = matrix[0][j] = 0 - - for i in range(1, rows): - for j in range(1, cols): - if matrix[i][0] == 0 or matrix[0][j] == 0: - matrix[i][j] = 0 - - if flag_col0: - for i in range(rows): - matrix[i][0] = 0 - - if flag_row0: - for j in range(cols): - matrix[0][j] = 0 -``` - From 2f40947008ec02b3a74e7f8ace6506e19280d69c Mon Sep 17 00:00:00 2001 From: ITCharge Date: Tue, 15 Jul 2025 09:16:01 +0800 Subject: [PATCH 158/158] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E9=A2=98=E7=9B=AE?= =?UTF-8?q?=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/00_preface/00_05_solutions_list.md | 72 +++++++------- docs/00_preface/00_06_categories_list.md | 4 +- docs/solutions/index.md | 2 +- docs/solutions/interviews/bracket-lcci.md | 45 +++++++++ docs/solutions/interviews/calculator-lcci.md | 66 +++++++++++++ docs/solutions/interviews/color-fill-lcci.md | 66 +++++++++++++ .../solutions/interviews/eight-queens-lcci.md | 77 +++++++++++++++ .../interviews/factorial-zeros-lcci.md | 33 +++++++ .../interviews/first-common-ancestor-lcci.md | 61 ++++++++++++ .../interviews/group-anagrams-lcci.md | 42 ++++++++ .../implement-queue-using-stacks-lcci.md | 74 +++++++++++++++ docs/solutions/interviews/index.md | 32 +++++++ .../intersection-of-two-linked-lists-lcci.md | 54 +++++++++++ .../kth-node-from-end-of-list-lcci.md | 38 ++++++++ .../legal-binary-search-tree-lcci.md | 46 +++++++++ .../interviews/linked-list-cycle-lcci.md | 47 +++++++++ .../solutions/interviews/longest-word-lcci.md | 95 +++++++++++++++++++ docs/solutions/interviews/min-stack-lcci.md | 59 ++++++++++++ .../interviews/minimum-height-tree-lcci.md | 34 +++++++ .../solutions/interviews/multi-search-lcci.md | 80 ++++++++++++++++ .../interviews/number-of-2s-in-range-lcci.md | 85 +++++++++++++++++ .../interviews/palindrome-linked-list-lcci.md | 32 +++++++ .../interviews/paths-with-sum-lcci.md | 45 +++++++++ .../interviews/permutation-i-lcci.md | 46 +++++++++ .../interviews/permutation-ii-lcci.md | 55 +++++++++++ docs/solutions/interviews/power-set-lcci.md | 35 +++++++ .../interviews/rotate-matrix-lcci.md | 67 +++++++++++++ docs/solutions/interviews/smallest-k-lcci.md | 73 ++++++++++++++ .../interviews/sorted-matrix-search-lcci.md | 90 ++++++++++++++++++ .../solutions/interviews/sorted-merge-lcci.md | 72 ++++++++++++++ docs/solutions/interviews/successor-lcci.md | 39 ++++++++ docs/solutions/interviews/sum-lists-lcci.md | 47 +++++++++ .../interviews/words-frequency-lcci.md | 78 +++++++++++++++ docs/solutions/interviews/zero-matrix-lcci.md | 70 ++++++++++++++ 34 files changed, 1822 insertions(+), 39 deletions(-) create mode 100644 docs/solutions/interviews/bracket-lcci.md create mode 100644 docs/solutions/interviews/calculator-lcci.md create mode 100644 docs/solutions/interviews/color-fill-lcci.md create mode 100644 docs/solutions/interviews/eight-queens-lcci.md create mode 100644 docs/solutions/interviews/factorial-zeros-lcci.md create mode 100644 docs/solutions/interviews/first-common-ancestor-lcci.md create mode 100644 docs/solutions/interviews/group-anagrams-lcci.md create mode 100644 docs/solutions/interviews/implement-queue-using-stacks-lcci.md create mode 100644 docs/solutions/interviews/index.md create mode 100644 docs/solutions/interviews/intersection-of-two-linked-lists-lcci.md create mode 100644 docs/solutions/interviews/kth-node-from-end-of-list-lcci.md create mode 100644 docs/solutions/interviews/legal-binary-search-tree-lcci.md create mode 100644 docs/solutions/interviews/linked-list-cycle-lcci.md create mode 100644 docs/solutions/interviews/longest-word-lcci.md create mode 100644 docs/solutions/interviews/min-stack-lcci.md create mode 100644 docs/solutions/interviews/minimum-height-tree-lcci.md create mode 100644 docs/solutions/interviews/multi-search-lcci.md create mode 100644 docs/solutions/interviews/number-of-2s-in-range-lcci.md create mode 100644 docs/solutions/interviews/palindrome-linked-list-lcci.md create mode 100644 docs/solutions/interviews/paths-with-sum-lcci.md create mode 100644 docs/solutions/interviews/permutation-i-lcci.md create mode 100644 docs/solutions/interviews/permutation-ii-lcci.md create mode 100644 docs/solutions/interviews/power-set-lcci.md create mode 100644 docs/solutions/interviews/rotate-matrix-lcci.md create mode 100644 docs/solutions/interviews/smallest-k-lcci.md create mode 100644 docs/solutions/interviews/sorted-matrix-search-lcci.md create mode 100644 docs/solutions/interviews/sorted-merge-lcci.md create mode 100644 docs/solutions/interviews/successor-lcci.md create mode 100644 docs/solutions/interviews/sum-lists-lcci.md create mode 100644 docs/solutions/interviews/words-frequency-lcci.md create mode 100644 docs/solutions/interviews/zero-matrix-lcci.md diff --git a/docs/00_preface/00_05_solutions_list.md b/docs/00_preface/00_05_solutions_list.md index 8d180da6..9f504ed7 100644 --- a/docs/00_preface/00_05_solutions_list.md +++ b/docs/00_preface/00_05_solutions_list.md @@ -822,42 +822,6 @@ | [2719. 统计整数数目](https://leetcode.cn/problems/count-of-integers/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/count-of-integers.md) | 数学、字符串、动态规划 | 困难 | -### 面试题 - -| 标题 | 题解 | 标签 | 难度 | -| :--- | :--- | :--- | :--- | -| [面试题 01.07. 旋转矩阵](https://leetcode.cn/problems/rotate-matrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/rotate-matrix-lcci.md) | 数组、数学、矩阵 | 中等 | -| [面试题 01.08. 零矩阵](https://leetcode.cn/problems/zero-matrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/zero-matrix-lcci.md) | 数组、哈希表、矩阵 | 中等 | -| [面试题 02.02. 返回倒数第 k 个节点](https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/kth-node-from-end-of-list-lcci.md) | 链表、双指针 | 简单 | -| [面试题 02.05. 链表求和](https://leetcode.cn/problems/sum-lists-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sum-lists-lcci.md) | 递归、链表、数学 | 中等 | -| [面试题 02.06. 回文链表](https://leetcode.cn/problems/palindrome-linked-list-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/palindrome-linked-list-lcci.md) | 栈、递归、链表、双指针 | 简单 | -| [面试题 02.07. 链表相交](https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/intersection-of-two-linked-lists-lcci.md) | 哈希表、链表、双指针 | 简单 | -| [面试题 02.08. 环路检测](https://leetcode.cn/problems/linked-list-cycle-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/linked-list-cycle-lcci.md) | 哈希表、链表、双指针 | 中等 | -| [面试题 03.02. 栈的最小值](https://leetcode.cn/problems/min-stack-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/min-stack-lcci.md) | 栈、设计 | 简单 | -| [面试题 03.04. 化栈为队](https://leetcode.cn/problems/implement-queue-using-stacks-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/implement-queue-using-stacks-lcci.md) | 栈、设计、队列 | 简单 | -| [面试题 04.02. 最小高度树](https://leetcode.cn/problems/minimum-height-tree-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/minimum-height-tree-lcci.md) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | -| [面试题 04.05. 合法二叉搜索树](https://leetcode.cn/problems/legal-binary-search-tree-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/legal-binary-search-tree-lcci.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [面试题 04.06. 后继者](https://leetcode.cn/problems/successor-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/successor-lcci.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | -| [面试题 04.08. 首个共同祖先](https://leetcode.cn/problems/first-common-ancestor-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/first-common-ancestor-lcci.md) | 树、深度优先搜索、二叉树 | 中等 | -| [面试题 04.12. 求和路径](https://leetcode.cn/problems/paths-with-sum-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/paths-with-sum-lcci.md) | 树、深度优先搜索、二叉树 | 中等 | -| [面试题 08.04. 幂集](https://leetcode.cn/problems/power-set-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/power-set-lcci.md) | 位运算、数组、回溯 | 中等 | -| [面试题 08.07. 无重复字符串的排列组合](https://leetcode.cn/problems/permutation-i-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-i-lcci.md) | 字符串、回溯 | 中等 | -| [面试题 08.08. 有重复字符串的排列组合](https://leetcode.cn/problems/permutation-ii-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/permutation-ii-lcci.md) | 字符串、回溯 | 中等 | -| [面试题 08.09. 括号](https://leetcode.cn/problems/bracket-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/bracket-lcci.md) | 字符串、动态规划、回溯 | 中等 | -| [面试题 08.10. 颜色填充](https://leetcode.cn/problems/color-fill-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/color-fill-lcci.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | -| [面试题 08.12. 八皇后](https://leetcode.cn/problems/eight-queens-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/eight-queens-lcci.md) | 数组、回溯 | 困难 | -| [面试题 10.01. 合并排序的数组](https://leetcode.cn/problems/sorted-merge-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-merge-lcci.md) | 数组、双指针、排序 | 简单 | -| [面试题 10.02. 变位词组](https://leetcode.cn/problems/group-anagrams-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/group-anagrams-lcci.md) | 数组、哈希表、字符串、排序 | 中等 | -| [面试题 10.09. 排序矩阵查找](https://leetcode.cn/problems/sorted-matrix-search-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/sorted-matrix-search-lcci.md) | 数组、二分查找、分治、矩阵 | 中等 | -| [面试题 16.02. 单词频率](https://leetcode.cn/problems/words-frequency-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/words-frequency-lcci.md) | 设计、字典树、数组、哈希表、字符串 | 中等 | -| [面试题 16.05. 阶乘尾数](https://leetcode.cn/problems/factorial-zeros-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/factorial-zeros-lcci.md) | 数学 | 简单 | -| [面试题 16.26. 计算器](https://leetcode.cn/problems/calculator-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/calculator-lcci.md) | 栈、数学、字符串 | 中等 | -| [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci.md) | 递归、数学、动态规划 | 困难 | -| [面试题 17.14. 最小K个数](https://leetcode.cn/problems/smallest-k-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/smallest-k-lcci.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | -| [面试题 17.15. 最长单词](https://leetcode.cn/problems/longest-word-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/longest-word-lcci.md) | 字典树、数组、哈希表、字符串 | 中等 | -| [面试题 17.17. 多次搜索](https://leetcode.cn/problems/multi-search-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/multi-search-lcci.md) | 字典树、数组、哈希表、字符串、字符串匹配、滑动窗口 | 中等 | - - ### LCR 系列 | 标题 | 题解 | 标签 | 难度 | @@ -1034,3 +998,39 @@ | [LCR 194. 二叉树的最近公共祖先](https://leetcode.cn/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof.md) | 树、深度优先搜索、二叉树 | 简单 | +### 面试题 + +| 标题 | 题解 | 标签 | 难度 | +| :--- | :--- | :--- | :--- | +| [面试题 01.07. 旋转矩阵](https://leetcode.cn/problems/rotate-matrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/rotate-matrix-lcci.md) | 数组、数学、矩阵 | 中等 | +| [面试题 01.08. 零矩阵](https://leetcode.cn/problems/zero-matrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/zero-matrix-lcci.md) | 数组、哈希表、矩阵 | 中等 | +| [面试题 02.02. 返回倒数第 k 个节点](https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/kth-node-from-end-of-list-lcci.md) | 链表、双指针 | 简单 | +| [面试题 02.05. 链表求和](https://leetcode.cn/problems/sum-lists-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/sum-lists-lcci.md) | 递归、链表、数学 | 中等 | +| [面试题 02.06. 回文链表](https://leetcode.cn/problems/palindrome-linked-list-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/palindrome-linked-list-lcci.md) | 栈、递归、链表、双指针 | 简单 | +| [面试题 02.07. 链表相交](https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/intersection-of-two-linked-lists-lcci.md) | 哈希表、链表、双指针 | 简单 | +| [面试题 02.08. 环路检测](https://leetcode.cn/problems/linked-list-cycle-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/linked-list-cycle-lcci.md) | 哈希表、链表、双指针 | 中等 | +| [面试题 03.02. 栈的最小值](https://leetcode.cn/problems/min-stack-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/min-stack-lcci.md) | 栈、设计 | 简单 | +| [面试题 03.04. 化栈为队](https://leetcode.cn/problems/implement-queue-using-stacks-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/implement-queue-using-stacks-lcci.md) | 栈、设计、队列 | 简单 | +| [面试题 04.02. 最小高度树](https://leetcode.cn/problems/minimum-height-tree-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/minimum-height-tree-lcci.md) | 树、二叉搜索树、数组、分治、二叉树 | 简单 | +| [面试题 04.05. 合法二叉搜索树](https://leetcode.cn/problems/legal-binary-search-tree-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/legal-binary-search-tree-lcci.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [面试题 04.06. 后继者](https://leetcode.cn/problems/successor-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/successor-lcci.md) | 树、深度优先搜索、二叉搜索树、二叉树 | 中等 | +| [面试题 04.08. 首个共同祖先](https://leetcode.cn/problems/first-common-ancestor-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/first-common-ancestor-lcci.md) | 树、深度优先搜索、二叉树 | 中等 | +| [面试题 04.12. 求和路径](https://leetcode.cn/problems/paths-with-sum-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/paths-with-sum-lcci.md) | 树、深度优先搜索、二叉树 | 中等 | +| [面试题 08.04. 幂集](https://leetcode.cn/problems/power-set-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/power-set-lcci.md) | 位运算、数组、回溯 | 中等 | +| [面试题 08.07. 无重复字符串的排列组合](https://leetcode.cn/problems/permutation-i-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/permutation-i-lcci.md) | 字符串、回溯 | 中等 | +| [面试题 08.08. 有重复字符串的排列组合](https://leetcode.cn/problems/permutation-ii-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/permutation-ii-lcci.md) | 字符串、回溯 | 中等 | +| [面试题 08.09. 括号](https://leetcode.cn/problems/bracket-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/bracket-lcci.md) | 字符串、动态规划、回溯 | 中等 | +| [面试题 08.10. 颜色填充](https://leetcode.cn/problems/color-fill-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/color-fill-lcci.md) | 深度优先搜索、广度优先搜索、数组、矩阵 | 简单 | +| [面试题 08.12. 八皇后](https://leetcode.cn/problems/eight-queens-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/eight-queens-lcci.md) | 数组、回溯 | 困难 | +| [面试题 10.01. 合并排序的数组](https://leetcode.cn/problems/sorted-merge-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/sorted-merge-lcci.md) | 数组、双指针、排序 | 简单 | +| [面试题 10.02. 变位词组](https://leetcode.cn/problems/group-anagrams-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/group-anagrams-lcci.md) | 数组、哈希表、字符串、排序 | 中等 | +| [面试题 10.09. 排序矩阵查找](https://leetcode.cn/problems/sorted-matrix-search-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/sorted-matrix-search-lcci.md) | 数组、二分查找、分治、矩阵 | 中等 | +| [面试题 16.02. 单词频率](https://leetcode.cn/problems/words-frequency-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/words-frequency-lcci.md) | 设计、字典树、数组、哈希表、字符串 | 中等 | +| [面试题 16.05. 阶乘尾数](https://leetcode.cn/problems/factorial-zeros-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/factorial-zeros-lcci.md) | 数学 | 简单 | +| [面试题 16.26. 计算器](https://leetcode.cn/problems/calculator-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/calculator-lcci.md) | 栈、数学、字符串 | 中等 | +| [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/number-of-2s-in-range-lcci.md) | 递归、数学、动态规划 | 困难 | +| [面试题 17.14. 最小K个数](https://leetcode.cn/problems/smallest-k-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/smallest-k-lcci.md) | 数组、分治、快速选择、排序、堆(优先队列) | 中等 | +| [面试题 17.15. 最长单词](https://leetcode.cn/problems/longest-word-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/longest-word-lcci.md) | 字典树、数组、哈希表、字符串 | 中等 | +| [面试题 17.17. 多次搜索](https://leetcode.cn/problems/multi-search-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/multi-search-lcci.md) | 字典树、数组、哈希表、字符串、字符串匹配、滑动窗口 | 中等 | + + diff --git a/docs/00_preface/00_06_categories_list.md b/docs/00_preface/00_06_categories_list.md index 6be90eb5..8c01d8c3 100644 --- a/docs/00_preface/00_06_categories_list.md +++ b/docs/00_preface/00_06_categories_list.md @@ -979,7 +979,7 @@ | [0576. 出界的路径数](https://leetcode.cn/problems/out-of-boundary-paths/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0500-0599/out-of-boundary-paths.md) | 动态规划 | 中等 | | [0085. 最大矩形](https://leetcode.cn/problems/maximal-rectangle/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0001-0099/maximal-rectangle.md) | 栈、数组、动态规划、矩阵、单调栈 | 困难 | | [0363. 矩形区域不超过 K 的最大数值和](https://leetcode.cn/problems/max-sum-of-rectangle-no-larger-than-k/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/0300-0399/max-sum-of-rectangle-no-larger-than-k.md) | 数组、二分查找、矩阵、有序集合、前缀和 | 困难 | -| [面试题 17.24. 最大子矩阵](https://leetcode.cn/problems/max-submatrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/max-submatrix-lcci.md) | 数组、动态规划、矩阵、前缀和 | 困难 | +| [面试题 17.24. 最大子矩阵](https://leetcode.cn/problems/max-submatrix-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/max-submatrix-lcci.md) | 数组、动态规划、矩阵、前缀和 | 困难 | | [1444. 切披萨的方案数](https://leetcode.cn/problems/number-of-ways-of-cutting-a-pizza/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1400-1499/number-of-ways-of-cutting-a-pizza.md) | 记忆化搜索、数组、动态规划、矩阵、前缀和 | 困难 | @@ -1148,7 +1148,7 @@ | [1088. 易混淆数 II](https://leetcode.cn/problems/confusing-number-ii/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/confusing-number-ii.md) | 数学、回溯 | 困难 | | [1067. 范围内的数字计数](https://leetcode.cn/problems/digit-count-in-range/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1000-1099/digit-count-in-range.md) | 数学、动态规划 | 困难 | | [1742. 盒子中小球的最大数量](https://leetcode.cn/problems/maximum-number-of-balls-in-a-box/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/1700-1799/maximum-number-of-balls-in-a-box.md) | 哈希表、数学、计数 | 简单 | -| [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/number-of-2s-in-range-lcci.md) | 递归、数学、动态规划 | 困难 | +| [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) | [题解](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/number-of-2s-in-range-lcci.md) | 递归、数学、动态规划 | 困难 | ### 概率 DP 题目 diff --git a/docs/solutions/index.md b/docs/solutions/index.md index 6e892b6f..2b2745ad 100644 --- a/docs/solutions/index.md +++ b/docs/solutions/index.md @@ -27,5 +27,5 @@ - [第 2400 ~ 2499 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2400-2499/) - [第 2500 ~ 2599 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2500-2599/) - [第 2700 ~ 2799 题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/2700-2799/) -- [面试题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/Interviews/) - [LCR 系列](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/LCR/) +- [面试题](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/) diff --git a/docs/solutions/interviews/bracket-lcci.md b/docs/solutions/interviews/bracket-lcci.md new file mode 100644 index 00000000..afb671f1 --- /dev/null +++ b/docs/solutions/interviews/bracket-lcci.md @@ -0,0 +1,45 @@ +# [面试题 08.09. 括号](https://leetcode.cn/problems/bracket-lcci/) + +- 标签:字符串、动态规划、回溯 +- 难度:中等 + +## 题目链接 + +- [面试题 08.09. 括号 - 力扣](https://leetcode.cn/problems/bracket-lcci/) + +## 题目大意 + +给定一个整数 `n`。 + +要求:生成所有有可能且有效的括号组合。 + +## 解题思路 + +通过回溯算法生成所有答案。为了生成的括号组合是有效的,回溯的时候,使用一个标记变量 `symbol` 来表示是否当前组合是否成对匹配。 + +如果在当前组合中增加一个 `(`,则 `symbol += 1`,如果增加一个 `)`,则 `symbol -= 1`。显然只有在 `symbol < n` 的时候,才能增加 `(`,在 `symbol > 0` 的时候,才能增加 `)`。 + +如果最终生成 `2 * n` 的括号组合,并且 `symbol == 0`,则说明当前组合是有效的,将其加入到最终答案数组中。 + +最终输出最终答案数组。 + +## 代码 + +```python +class Solution: + def generateParenthesis(self, n: int) -> List[str]: + def backtrack(parenthesis, symbol, index): + if n * 2 == index: + if symbol == 0: + parentheses.append(parenthesis) + else: + if symbol < n: + backtrack(parenthesis + '(', symbol + 1, index + 1) + if symbol > 0: + backtrack(parenthesis + ')', symbol - 1, index + 1) + + parentheses = list() + backtrack("", 0, 0) + return parentheses +``` + diff --git a/docs/solutions/interviews/calculator-lcci.md b/docs/solutions/interviews/calculator-lcci.md new file mode 100644 index 00000000..ce90dafb --- /dev/null +++ b/docs/solutions/interviews/calculator-lcci.md @@ -0,0 +1,66 @@ +# [面试题 16.26. 计算器](https://leetcode.cn/problems/calculator-lcci/) + +- 标签:栈、数学、字符串 +- 难度:中等 + +## 题目链接 + +- [面试题 16.26. 计算器 - 力扣](https://leetcode.cn/problems/calculator-lcci/) + +## 题目大意 + +给定一个包含正整数、加(`+`)、减(`-`)、乘(`*`)、除(`/`)的算出表达式(括号除外)。表达式仅包含非负整数,`+`、`-`、`*`、`/` 四种运算符和空格 ` `。整数除法仅保留整数部分。 + +要求:计算其结果。 + +## 解题思路 + +计算表达式中,乘除运算优先于加减运算。我们可以先进行乘除运算,再将进行乘除运算后的整数值放入原表达式中相应位置,再依次计算加减。 + +可以考虑使用一个栈来保存进行乘除运算后的整数值。正整数直接压入栈中,负整数,则将对应整数取负号,再压入栈中。这样最终计算结果就是栈中所有元素的和。 + +具体做法: + +- 遍历字符串 s,使用变量 op 来标记数字之前的运算符,默认为 `+`。 +- 如果遇到数字,继续向后遍历,将数字进行累积,得到完整的整数 num。判断当前 op 的符号。 + - 如果 op 为 `+`,则将 num 压入栈中。 + - 如果 op 为 `-`,则将 -num 压入栈中。 + - 如果 op 为 `*`,则将栈顶元素 top 取出,计算 top * num,并将计算结果压入栈中。 + - 如果 op 为 `/`,则将栈顶元素 top 取出,计算 int(top / num),并将计算结果压入栈中。 +- 如果遇到 `+`、`-`、`*`、`/` 操作符,则更新 op。 +- 最后将栈中整数进行累加,并返回结果。 + +## 代码 + +```python +class Solution: + def calculate(self, s: str) -> int: + size = len(s) + stack = [] + op = '+' + index = 0 + while index < size: + if s[index] == ' ': + index += 1 + continue + if s[index].isdigit(): + num = ord(s[index]) - ord('0') + while index + 1 < size and s[index + 1].isdigit(): + index += 1 + num = 10 * num + ord(s[index]) - ord('0') + if op == '+': + stack.append(num) + elif op == '-': + stack.append(-num) + elif op == '*': + top = stack.pop() + stack.append(top * num) + elif op == '/': + top = stack.pop() + stack.append(int(top / num)) + elif s[index] in "+-*/": + op = s[index] + index += 1 + return sum(stack) +``` + diff --git a/docs/solutions/interviews/color-fill-lcci.md b/docs/solutions/interviews/color-fill-lcci.md new file mode 100644 index 00000000..0581382e --- /dev/null +++ b/docs/solutions/interviews/color-fill-lcci.md @@ -0,0 +1,66 @@ +# [面试题 08.10. 颜色填充](https://leetcode.cn/problems/color-fill-lcci/) + +- 标签:深度优先搜索、广度优先搜索、数组、矩阵 +- 难度:简单 + +## 题目链接 + +- [面试题 08.10. 颜色填充 - 力扣](https://leetcode.cn/problems/color-fill-lcci/) + +## 题目大意 + +给定一个二维整数矩阵 `image`,其中 `image[i][j]` 表示矩阵第 `i` 行、第 `j` 列上网格块的颜色值。再给定一个起始位置 `(sr, sc)`,以及一个目标颜色 `newColor`。 + +要求:对起始位置 `(sr, sc)` 所在位置周围区域填充颜色为 `newColor`。并返回填充后的图像 `image`。 + +- 周围区域:颜色相同且在上、下、左、右四个方向上存在相连情况的若干元素。 + +## 解题思路 + +深度优先搜索。使用二维数组 `visited` 标记访问过的节点。遍历上、下、左、右四个方向上的点。如果下一个点位置越界,或者当前位置与下一个点位置颜色不一样,则对该节点进行染色。 + +在遍历的过程中注意使用 `visited` 标记访问过的节点,以免重复遍历。 + +## 代码 + +```python +class Solution: + directs = [(0, 1), (0, -1), (1, 0), (-1, 0)] + + def dfs(self, image, i, j, origin_color, color, visited): + rows, cols = len(image), len(image[0]) + + for direct in self.directs: + new_i = i + direct[0] + new_j = j + direct[1] + + # 下一个位置越界,则当前点在边界,对其进行着色 + if new_i < 0 or new_i >= rows or new_j < 0 or new_j >= cols: + image[i][j] = color + continue + + # 如果访问过,则跳过 + if visited[new_i][new_j]: + continue + + # 如果下一个位置颜色与当前颜色相同,则继续搜索 + if image[new_i][new_j] == origin_color: + visited[new_i][new_j] = True + self.dfs(image, new_i, new_j, origin_color, color, visited) + # 下一个位置颜色与当前颜色不同,则当前位置为连通区域边界,对其进行着色 + else: + image[i][j] = color + + def floodFill(self, image: List[List[int]], sr: int, sc: int, newColor: int) -> List[List[int]]: + if not image: + return image + + rows, cols = len(image), len(image[0]) + visited = [[False for _ in range(cols)] for _ in range(rows)] + visited[sr][sc] = True + + self.dfs(image, sr, sc, image[sr][sc], newColor, visited) + + return image +``` + diff --git a/docs/solutions/interviews/eight-queens-lcci.md b/docs/solutions/interviews/eight-queens-lcci.md new file mode 100644 index 00000000..d1447849 --- /dev/null +++ b/docs/solutions/interviews/eight-queens-lcci.md @@ -0,0 +1,77 @@ +# [面试题 08.12. 八皇后](https://leetcode.cn/problems/eight-queens-lcci/) + +- 标签:数组、回溯 +- 难度:困难 + +## 题目链接 + +- [面试题 08.12. 八皇后 - 力扣](https://leetcode.cn/problems/eight-queens-lcci/) + +## 题目大意 + +- n 皇后问题:将 n 个皇后放置在 `n * n` 的棋盘上,并且使得皇后彼此之间不能攻击。 +- 皇后彼此不能相互攻击:指的是任何两个皇后都不能处于同一条横线、纵线或者斜线上。 + +现在给定一个整数 `n`,返回所有不同的「n 皇后问题」的解决方案。每一种解法包含一个不同的「n 皇后问题」的棋子放置方案,该方案中的 `Q` 和 `.` 分别代表了皇后和空位。 + +## 解题思路 + +经典的回溯问题。使用 `chessboard` 来表示棋盘,`Q` 代表皇后,`.` 代表空位,初始都为 `.`。然后使用 `res` 存放最终答案。 + +先定义棋盘合理情况判断方法,判断同一条横线、纵线或者斜线上是否存在两个以上的皇后。 + +再定义回溯方法,从第一行开始进行遍历。 + +- 如果当前行 `row` 等于 `n`,则当前棋盘为一个可行方案,将其拼接加入到 `res` 数组中。 +- 遍历 `[0, n]` 列元素,先验证棋盘是否可行,如果可行: + - 将当前行当前列尝试换为 `Q`。 + - 然后继续递归下一行。 + - 再将当前行回退为 `.`。 +- 最终返回 `res` 数组。 + +## 代码 + +```python +class Solution: + res = [] + def backtrack(self, n: int, row: int, chessboard: List[List[str]]): + if row == n: + temp_res = [] + for temp in chessboard: + temp_str = ''.join(temp) + temp_res.append(temp_str) + self.res.append(temp_res) + return + for col in range(n): + if self.isValid(n, row, col, chessboard): + chessboard[row][col] = 'Q' + self.backtrack(n, row + 1, chessboard) + chessboard[row][col] = '.' + + def isValid(self, n: int, row: int, col: int, chessboard: List[List[str]]): + for i in range(row): + if chessboard[i][col] == 'Q': + return False + + i, j = row - 1, col - 1 + while i >= 0 and j >= 0: + if chessboard[i][j] == 'Q': + return False + i -= 1 + j -= 1 + i, j = row - 1, col + 1 + while i >= 0 and j < n: + if chessboard[i][j] == 'Q': + return False + i -= 1 + j += 1 + + return True + + def solveNQueens(self, n: int) -> List[List[str]]: + self.res.clear() + chessboard = [['.' for _ in range(n)] for _ in range(n)] + self.backtrack(n, 0, chessboard) + return self.res +``` + diff --git a/docs/solutions/interviews/factorial-zeros-lcci.md b/docs/solutions/interviews/factorial-zeros-lcci.md new file mode 100644 index 00000000..6f3f8770 --- /dev/null +++ b/docs/solutions/interviews/factorial-zeros-lcci.md @@ -0,0 +1,33 @@ +# [面试题 16.05. 阶乘尾数](https://leetcode.cn/problems/factorial-zeros-lcci/) + +- 标签:数学 +- 难度:简单 + +## 题目链接 + +- [面试题 16.05. 阶乘尾数 - 力扣](https://leetcode.cn/problems/factorial-zeros-lcci/) + +## 题目大意 + +给定一个整数 `n`。 + +要求:计算 `n` 的阶乘中尾随零的数量。 + +注意:$0 <= n <= 10^4$。 + +## 解题思路 + +阶乘中,末尾 `0` 的来源只有 `2 * 5`。所以尾随 `0` 的个数为 `2` 的倍数个数和 `5` 的倍数个数的最小值。又因为 `2 < 5`,`2` 的倍数个数肯定小于等于 `5` 的倍数,所以直接统计 `5` 的倍数个数即可。 + +## 代码 + +```python +class Solution: + def trailingZeroes(self, n: int) -> int: + count = 0 + while n > 0: + count += n // 5 + n = n // 5 + return count +``` + diff --git a/docs/solutions/interviews/first-common-ancestor-lcci.md b/docs/solutions/interviews/first-common-ancestor-lcci.md new file mode 100644 index 00000000..f1fb498b --- /dev/null +++ b/docs/solutions/interviews/first-common-ancestor-lcci.md @@ -0,0 +1,61 @@ +# [面试题 04.08. 首个共同祖先](https://leetcode.cn/problems/first-common-ancestor-lcci/) + +- 标签:树、深度优先搜索、二叉树 +- 难度:中等 + +## 题目链接 + +- [面试题 04.08. 首个共同祖先 - 力扣](https://leetcode.cn/problems/first-common-ancestor-lcci/) + +## 题目大意 + +给定一个二叉树,要求找到该树中指定节点 `p`、`q` 的最近公共祖先: + +- 祖先:若节点 `p` 在节点 `node` 的左子树或右子树中,或者 `p = node`,则称 `node` 是 `p` 的祖先。 + +- 最近公共祖先:对于树的两个节点 `p`、`q`,最近公共祖先表示为一个节点 `lca_node`,满足 `lca_node` 是 `p`、`q` 的祖先且 `lca_node` 的深度尽可能大(一个节点也可以是自己的祖先)。 + +## 解题思路 + +设 `lca_node` 为节点 `p`、`q` 的最近公共祖先。则 `lca_node` 只能是下面几种情况: + +- `p`、`q` 在 `lca_node` 的子树中,且分别在 `lca_node` 的两侧子树中。 +- `p == lca_node`,且 `q` 在 `lca_node` 的左子树或右子树中。 +- `q == lca_node`,且 `p` 在 `lca_node` 的左子树或右子树中。 + +下面递归求解 `lca_node`。递归需要满足以下条件: + +- 如果 `p`、`q` 都不为空,则返回 `p`、`q` 的公共祖先。 +- 如果 `p`、`q` 只有一个存在,则返回存在的一个。 +- 如果 `p`、`q` 都不存在,则返回存在的一个。 + +具体思路为: + +- 如果当前节点 `node` 为 `None`,则说明 `p`、`q` 不在 `node` 的子树中,不可能为公共祖先,直接返回 `None`。 +- 如果当前节点 `node` 等于 `p` 或者 `q`,那么 `node` 就是 `p`、`q` 的最近公共祖先,直接返回 `node`。 +- 递归遍历左子树、右子树,并判断左右子树结果。 + - 如果左子树为空,则返回右子树。 + - 如果右子树为空,则返回左子树。 + - 如果左右子树都不为空,则说明 `p`、`q` 在当前根节点的两侧,当前根节点就是他们的最近公共祖先。 + - 如果左右子树都为空,则返回空。 + +## 代码 + +```python +class Solution: + def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode: + if root == p or root == q: + return root + + if root: + node_left = self.lowestCommonAncestor(root.left, p, q) + node_right = self.lowestCommonAncestor(root.right, p, q) + if node_left and node_right: + return root + elif not node_left: + return node_right + else: + return node_left + return None +``` + diff --git a/docs/solutions/interviews/group-anagrams-lcci.md b/docs/solutions/interviews/group-anagrams-lcci.md new file mode 100644 index 00000000..ccde9231 --- /dev/null +++ b/docs/solutions/interviews/group-anagrams-lcci.md @@ -0,0 +1,42 @@ +# [面试题 10.02. 变位词组](https://leetcode.cn/problems/group-anagrams-lcci/) + +- 标签:数组、哈希表、字符串、排序 +- 难度:中等 + +## 题目链接 + +- [面试题 10.02. 变位词组 - 力扣](https://leetcode.cn/problems/group-anagrams-lcci/) + +## 题目大意 + +给定一个字符串数组 `strs`。 + +要求:将所有变位词组合在一起。不需要考虑输出顺序。 + +- 变位词:字母相同,但排列不同的字符串。 + +## 解题思路 + +使用哈希表记录变位词。对每一个字符串进行排序,按照 `排序字符串:变位词数组` 的键值顺序进行存储。 + +最终将哈希表的值转换为对应数组返回结果。 + +## 代码 + +```python +class Solution: + def groupAnagrams(self, strs: List[str]) -> List[List[str]]: + str_dict = dict() + res = [] + for s in strs: + sort_s = str(sorted(s)) + if sort_s in str_dict: + str_dict[sort_s] += [s] + else: + str_dict[sort_s] = [s] + + for sort_s in str_dict: + res += [str_dict[sort_s]] + return res +``` + diff --git a/docs/solutions/interviews/implement-queue-using-stacks-lcci.md b/docs/solutions/interviews/implement-queue-using-stacks-lcci.md new file mode 100644 index 00000000..64993a2f --- /dev/null +++ b/docs/solutions/interviews/implement-queue-using-stacks-lcci.md @@ -0,0 +1,74 @@ +# [面试题 03.04. 化栈为队](https://leetcode.cn/problems/implement-queue-using-stacks-lcci/) + +- 标签:栈、设计、队列 +- 难度:简单 + +## 题目链接 + +- [面试题 03.04. 化栈为队 - 力扣](https://leetcode.cn/problems/implement-queue-using-stacks-lcci/) + +## 题目大意 + +要求:实现一个 MyQueue 类,要求仅使用两个栈实现先入先出队列。 + +## 解题思路 + +使用两个栈,`inStack` 用于输入,`outStack` 用于输出。 + +- `push` 操作:将元素压入 `inStack` 中。 +- `pop` 操作:如果 `outStack` 输出栈为空,将 `inStack` 输入栈元素依次取出,按顺序压入 `outStack` 栈。这样 `outStack` 栈的元素顺序和之前 `inStack` 元素顺序相反,`outStack` 顶层元素就是要取出的队头元素,将其移出,并返回该元素。如果 `outStack` 输出栈不为空,则直接取出顶层元素。 +- `peek` 操作:和 `pop` 操作类似,只不过最后一步不需要取出顶层元素,直接将其返回即可。 +- `empty` 操作:如果 `inStack` 和 `outStack` 都为空,则队列为空,否则队列不为空。 + +## 代码 + +```python +class MyQueue: + + def __init__(self): + """ + Initialize your data structure here. + """ + self.inStack = [] + self.outStack = [] + + + def push(self, x: int) -> None: + """ + Push element x to the back of queue. + """ + self.inStack.append(x) + + + def pop(self) -> int: + """ + Removes the element from in front of queue and returns that element. + """ + if (len(self.outStack) == 0): + while (len(self.inStack) != 0): + self.outStack.append(self.inStack[-1]) + self.inStack.pop() + top = self.outStack[-1] + self.outStack.pop() + return top + + + def peek(self) -> int: + """ + Get the front element. + """ + if (len(self.outStack) == 0): + while (len(self.inStack) != 0): + self.outStack.append(self.inStack[-1]) + self.inStack.pop() + top = self.outStack[-1] + return top + + + def empty(self) -> bool: + """ + Returns whether the queue is empty. + """ + return len(self.outStack) == 0 and len(self.inStack) == 0 +``` + diff --git a/docs/solutions/interviews/index.md b/docs/solutions/interviews/index.md new file mode 100644 index 00000000..3410fb8b --- /dev/null +++ b/docs/solutions/interviews/index.md @@ -0,0 +1,32 @@ +## 本章内容 + +- [面试题 01.07. 旋转矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/rotate-matrix-lcci.md) +- [面试题 01.08. 零矩阵](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/zero-matrix-lcci.md) +- [面试题 02.02. 返回倒数第 k 个节点](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/kth-node-from-end-of-list-lcci.md) +- [面试题 02.05. 链表求和](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/sum-lists-lcci.md) +- [面试题 02.06. 回文链表](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/palindrome-linked-list-lcci.md) +- [面试题 02.07. 链表相交](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/intersection-of-two-linked-lists-lcci.md) +- [面试题 02.08. 环路检测](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/linked-list-cycle-lcci.md) +- [面试题 03.02. 栈的最小值](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/min-stack-lcci.md) +- [面试题 03.04. 化栈为队](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/implement-queue-using-stacks-lcci.md) +- [面试题 04.02. 最小高度树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/minimum-height-tree-lcci.md) +- [面试题 04.05. 合法二叉搜索树](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/legal-binary-search-tree-lcci.md) +- [面试题 04.06. 后继者](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/successor-lcci.md) +- [面试题 04.08. 首个共同祖先](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/first-common-ancestor-lcci.md) +- [面试题 04.12. 求和路径](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/paths-with-sum-lcci.md) +- [面试题 08.04. 幂集](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/power-set-lcci.md) +- [面试题 08.07. 无重复字符串的排列组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/permutation-i-lcci.md) +- [面试题 08.08. 有重复字符串的排列组合](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/permutation-ii-lcci.md) +- [面试题 08.09. 括号](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/bracket-lcci.md) +- [面试题 08.10. 颜色填充](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/color-fill-lcci.md) +- [面试题 08.12. 八皇后](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/eight-queens-lcci.md) +- [面试题 10.01. 合并排序的数组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/sorted-merge-lcci.md) +- [面试题 10.02. 变位词组](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/group-anagrams-lcci.md) +- [面试题 10.09. 排序矩阵查找](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/sorted-matrix-search-lcci.md) +- [面试题 16.02. 单词频率](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/words-frequency-lcci.md) +- [面试题 16.05. 阶乘尾数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/factorial-zeros-lcci.md) +- [面试题 16.26. 计算器](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/calculator-lcci.md) +- [面试题 17.06. 2出现的次数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/number-of-2s-in-range-lcci.md) +- [面试题 17.14. 最小K个数](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/smallest-k-lcci.md) +- [面试题 17.15. 最长单词](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/longest-word-lcci.md) +- [面试题 17.17. 多次搜索](https://github.com/ITCharge/AlgoNote/tree/main/docs/solutions/interviews/multi-search-lcci.md) diff --git a/docs/solutions/interviews/intersection-of-two-linked-lists-lcci.md b/docs/solutions/interviews/intersection-of-two-linked-lists-lcci.md new file mode 100644 index 00000000..a985f070 --- /dev/null +++ b/docs/solutions/interviews/intersection-of-two-linked-lists-lcci.md @@ -0,0 +1,54 @@ +# [面试题 02.07. 链表相交](https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/) + +- 标签:哈希表、链表、双指针 +- 难度:简单 + +## 题目链接 + +- [面试题 02.07. 链表相交 - 力扣](https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/) + +## 题目大意 + +给定两个链表的头节点 `headA`、`headB`。 + +要求:找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 `None` 。 + +比如:链表 A 为 `[4, 1, 8, 4, 5]`,链表 B 为 `[5, 0, 1, 8, 4, 5]`。则如下图所示,两个链表相交的起始节点为 `8`,则输出结果为 `8`。 + +![](https://assets.leetcode.com/uploads/2018/12/13/160_example_1.png) + + + + + +## 解题思路 + +如果两个链表相交,那么从相交位置开始,到结束,必有一段等长且相同的节点。假设链表 `A` 的长度为 `m`、链表 `B` 的长度为 `n`,他们的相交序列有 `k` 个,则相交情况可以如下如所示: + +![](https://qcdn.itcharge.cn/images/20210401113538.png) + +现在问题是如何找到 `m - k` 或者 `n - k` 的位置。 + +考虑将链表 `A` 的末尾拼接上链表 `B`,链表 `B` 的末尾拼接上链表 `A`。 + +然后使用两个指针 `pA` 、`pB`,分别从链表 `A`、链表 `B` 的头节点开始遍历,如果走到共同的节点,则返回该节点。 + +否则走到两个链表末尾,返回 `None`。 + +![](https://qcdn.itcharge.cn/images/20210401114100.png) + +## 代码 + +```python +class Solution: + def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: + if headA == None or headB == None: + return None + pA = headA + pB = headB + while pA != pB : + pA = pA.next if pA != None else headB + pB = pB.next if pB != None else headA + return pA +``` + diff --git a/docs/solutions/interviews/kth-node-from-end-of-list-lcci.md b/docs/solutions/interviews/kth-node-from-end-of-list-lcci.md new file mode 100644 index 00000000..adec3b65 --- /dev/null +++ b/docs/solutions/interviews/kth-node-from-end-of-list-lcci.md @@ -0,0 +1,38 @@ +# [面试题 02.02. 返回倒数第 k 个节点](https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/) + +- 标签:链表、双指针 +- 难度:简单 + +## 题目链接 + +- [面试题 02.02. 返回倒数第 k 个节点 - 力扣](https://leetcode.cn/problems/kth-node-from-end-of-list-lcci/) + +## 题目大意 + +给定一个链表的头节点 `head`,以及一个整数 `k`。 + +要求:返回链表的倒数第 `k` 个节点的值。 + +## 解题思路 + +常规思路是遍历一遍链表,求出链表长度,再遍历一遍到对应位置,返回该位置上的节点。 + +如果用一次遍历实现的话,可以使用快慢指针。让快指针先走 `k` 步,然后快慢指针、慢指针再同时走,每次一步,这样等快指针遍历到链表尾部的时候,慢指针就刚好遍历到了倒数第 `k` 个节点位置。返回该该位置上的节点即可。 + +## 代码 + +```python +class Solution: + def kthToLast(self, head: ListNode, k: int) -> int: + slow = head + fast = head + for _ in range(k): + if fast == None: + return fast + fast = fast.next + while fast: + slow = slow.next + fast = fast.next + return slow.val +``` + diff --git a/docs/solutions/interviews/legal-binary-search-tree-lcci.md b/docs/solutions/interviews/legal-binary-search-tree-lcci.md new file mode 100644 index 00000000..d78f5baf --- /dev/null +++ b/docs/solutions/interviews/legal-binary-search-tree-lcci.md @@ -0,0 +1,46 @@ +# [面试题 04.05. 合法二叉搜索树](https://leetcode.cn/problems/legal-binary-search-tree-lcci/) + +- 标签:树、深度优先搜索、二叉搜索树、二叉树 +- 难度:中等 + +## 题目链接 + +- [面试题 04.05. 合法二叉搜索树 - 力扣](https://leetcode.cn/problems/legal-binary-search-tree-lcci/) + +## 题目大意 + +给定一个二叉树的根节点 `root`。 + +要求:检查该二叉树是否为二叉搜索树。 + +二叉搜索树特征: + +- 节点的左子树只包含小于当前节点的数。 +- 节点的右子树只包含大于当前节点的数。 +- 所有左子树和右子树自身必须也是二叉搜索树。 + +## 解题思路 + +根据题意进行递归遍历即可。前序、中序、后序遍历都可以。 + +以前序遍历为例,递归函数为:`preorderTraversal(root, min_v, max_v)` + +前序遍历时,先判断根节点的值是否在 `(min_v, max_v)` 之间。如果不在则直接返回 `False`。在区间内,则继续递归检测左右子树是否满足,都满足才是一棵二叉搜索树。 + +递归遍历左子树的时候,要将上界 `max_v` 改为左子树的根节点值,因为左子树上所有节点的值均小于根节点的值。同理,遍历右子树的时候,要将下界 `min_v` 改为右子树的根节点值,因为右子树上所有节点的值均大于根节点。 + +## 代码 + +```python +class Solution: + def isValidBST(self, root: TreeNode) -> bool: + def preorderTraversal(root, min_v, max_v): + if root == None: + return True + if root.val >= max_v or root.val <= min_v: + return False + return preorderTraversal(root.left, min_v, root.val) and preorderTraversal(root.right, root.val, max_v) + + return preorderTraversal(root, float('-inf'), float('inf')) +``` + diff --git a/docs/solutions/interviews/linked-list-cycle-lcci.md b/docs/solutions/interviews/linked-list-cycle-lcci.md new file mode 100644 index 00000000..bc98e81f --- /dev/null +++ b/docs/solutions/interviews/linked-list-cycle-lcci.md @@ -0,0 +1,47 @@ +# [面试题 02.08. 环路检测](https://leetcode.cn/problems/linked-list-cycle-lcci/) + +- 标签:哈希表、链表、双指针 +- 难度:中等 + +## 题目链接 + +- [面试题 02.08. 环路检测 - 力扣](https://leetcode.cn/problems/linked-list-cycle-lcci/) + +## 题目大意 + +给定一个链表的头节点 `head`。 + +要求:判断链表中是否有环,如果有环则返回入环的第一个节点,无环则返回 None。 + +## 解题思路 + +利用两个指针,一个慢指针每次前进一步,快指针每次前进两步(两步或多步效果是等价的)。如果两个指针在链表头节点以外的某一节点相遇(即相等)了,那么说明链表有环,否则,如果(快指针)到达了某个没有后继指针的节点时,那么说明没环。 + +如果有环,则再定义一个指针,和慢指针一起每次移动一步,两个指针相遇的位置即为入口节点。 + +这是因为:假设入环位置为 A,快慢指针在在 B 点相遇,则相遇时慢指针走了 $a + b$ 步,快指针走了 $a + n(b+c) + b$ 步。 + +$2(a + b) = a + n(b + c) + b$。可以推出:$a = c + (n-1)(b + c)$。 + +我们可以发现:从相遇点到入环点的距离 $c$ 加上 $n-1$ 圈的环长 $b + c$ 刚好等于从链表头部到入环点的距离。 + +## 代码 + +```python +class Solution: + def detectCycle(self, head: ListNode) -> ListNode: + fast, slow = head, head + while True: + if not fast or not fast.next: + return None + fast = fast.next.next + slow = slow.next + if fast == slow: + break + + ans = head + while ans != slow: + ans, slow = ans.next, slow.next + return ans +``` + diff --git a/docs/solutions/interviews/longest-word-lcci.md b/docs/solutions/interviews/longest-word-lcci.md new file mode 100644 index 00000000..015aab7e --- /dev/null +++ b/docs/solutions/interviews/longest-word-lcci.md @@ -0,0 +1,95 @@ +# [面试题 17.15. 最长单词](https://leetcode.cn/problems/longest-word-lcci/) + +- 标签:字典树、数组、哈希表、字符串 +- 难度:中等 + +## 题目链接 + +- [面试题 17.15. 最长单词 - 力扣](https://leetcode.cn/problems/longest-word-lcci/) + +## 题目大意 + +给定一组单词 `words`。 + +要求:找出其中的最长单词,且该单词由这组单词中的其他单词组合而成。若有多个长度相同的结果,返回其中字典序最小的一项,若没有符合要求的单词则返回空字符串。 + +## 解题思路 + +先将所有单词按照长度从长到短排序,相同长度的字典序小的排在前面。然后将所有单词存入字典树中。 + +然后一重循环遍历所有单词 `word`,二重循环遍历单词中所有字符 `word[i]`。 + +如果当前遍历的字符为单词末尾,递归判断从 `i + 1` 位置开始,剩余部分是否可以切分为其他单词组合,如果可以切分,则返回当前单词 `word`。如果不可以切分,则返回空字符串 `""`。 + +## 代码 + +```python +class Trie: + + def __init__(self): + """ + Initialize your data structure here. + """ + self.children = dict() + self.isEnd = False + + + def insert(self, word: str) -> None: + """ + Inserts a word into the trie. + """ + cur = self + for ch in word: + if ch not in cur.children: + cur.children[ch] = Trie() + cur = cur.children[ch] + cur.isEnd = True + + + def search(self, word: str) -> bool: + """ + Returns if the word is in the trie. + """ + cur = self + for ch in word: + if ch not in cur.children: + return False + cur = cur.children[ch] + + return cur is not None and cur.isEnd + + def splitToWord(self, remain): + if not remain or remain == "": + return True + cur = self + for i in range(len(remain)): + ch = remain[i] + if ch not in cur.children: + return False + if cur.children[ch].isEnd and self.splitToWord(remain[i + 1:]): + return True + cur = cur.children[ch] + return False + + def dfs(self, words): + for word in words: + cur = self + size = len(word) + for i in range(size): + ch = word[i] + if i < size - 1 and cur.children[ch].isEnd and self.splitToWord(word[i+1:]): + return word + cur = cur.children[ch] + return "" + +class Solution: + def longestWord(self, words: List[str]) -> str: + words.sort(key=lambda x: (-len(x), x)) + trie_tree = Trie() + for word in words: + trie_tree.insert(word) + + ans = trie_tree.dfs(words) + return ans +``` + diff --git a/docs/solutions/interviews/min-stack-lcci.md b/docs/solutions/interviews/min-stack-lcci.md new file mode 100644 index 00000000..44a538ff --- /dev/null +++ b/docs/solutions/interviews/min-stack-lcci.md @@ -0,0 +1,59 @@ +# [面试题 03.02. 栈的最小值](https://leetcode.cn/problems/min-stack-lcci/) + +- 标签:栈、设计 +- 难度:简单 + +## 题目链接 + +- [面试题 03.02. 栈的最小值 - 力扣](https://leetcode.cn/problems/min-stack-lcci/) + +## 题目大意 + +设计一个「栈」,要求实现 `push` ,`pop` ,`top` ,`getMin` 操作,其中 `getMin` 要求能在常数时间内实现。 + +## 解题思路 + +使用一个栈,栈元素中除了保存当前值之外,再保存一个当前最小值。 + +- `push` 操作:如果栈不为空,则判断当前值与栈顶元素所保存的最小值,并更新当前最小值,将新元素保存到栈中。 +- `pop`操作:正常出栈 +- `top` 操作:返回栈顶元素保存的值。 +- `getMin` 操作:返回栈顶元素保存的最小值。 + +## 代码 + +```python +class MinStack: + + def __init__(self): + """ + initialize your data structure here. + """ + self.stack = [] + + class Node: + def __init__(self, x): + self.val = x + self.min = x + + def push(self, x: int) -> None: + node = self.Node(x) + if len(self.stack) == 0: + self.stack.append(node) + else: + topNode = self.stack[-1] + if node.min > topNode.min: + node.min = topNode.min + + self.stack.append(node) + + def pop(self) -> None: + self.stack.pop() + + def top(self) -> int: + return self.stack[-1].val + + def getMin(self) -> int: + return self.stack[-1].min +``` + diff --git a/docs/solutions/interviews/minimum-height-tree-lcci.md b/docs/solutions/interviews/minimum-height-tree-lcci.md new file mode 100644 index 00000000..7b22bf8f --- /dev/null +++ b/docs/solutions/interviews/minimum-height-tree-lcci.md @@ -0,0 +1,34 @@ +# [面试题 04.02. 最小高度树](https://leetcode.cn/problems/minimum-height-tree-lcci/) + +- 标签:树、二叉搜索树、数组、分治、二叉树 +- 难度:简单 + +## 题目链接 + +- [面试题 04.02. 最小高度树 - 力扣](https://leetcode.cn/problems/minimum-height-tree-lcci/) + +## 题目大意 + +给定一个升序的有序数组 `nums`。 + +要求:创建一棵高度最小的二叉搜索树(高度平衡的二叉搜索树)。 + +## 解题思路 + +直观上,如果把数组的中间元素当做根,那么数组左侧元素都小于根节点,右侧元素都大于根节点,且左右两侧元素个数相同,或最多相差 `1` 个。那么构建的树高度差也不会超过 `1`。所以猜想出:如果左右子树约平均,树就越平衡。这样我们就可以每次取中间元素作为当前的根节点,两侧的元素作为左右子树递归建树,左侧区间 `[L, mid - 1]` 作为左子树,右侧区间 `[mid + 1, R]` 作为右子树。 + +## 代码 + +```python +class Solution: + def sortedArrayToBST(self, nums: List[int]) -> TreeNode: + size = len(nums) + if size == 0: + return None + mid = size // 2 + root = TreeNode(nums[mid]) + root.left = Solution.sortedArrayToBST(self, nums[:mid]) + root.right = Solution.sortedArrayToBST(self, nums[mid + 1:]) + return root +``` + diff --git a/docs/solutions/interviews/multi-search-lcci.md b/docs/solutions/interviews/multi-search-lcci.md new file mode 100644 index 00000000..12891e29 --- /dev/null +++ b/docs/solutions/interviews/multi-search-lcci.md @@ -0,0 +1,80 @@ +# [面试题 17.17. 多次搜索](https://leetcode.cn/problems/multi-search-lcci/) + +- 标签:字典树、数组、哈希表、字符串、字符串匹配、滑动窗口 +- 难度:中等 + +## 题目链接 + +- [面试题 17.17. 多次搜索 - 力扣](https://leetcode.cn/problems/multi-search-lcci/) + +## 题目大意 + +给定一个较长字符串 `big` 和一个包含较短字符串的数组 `smalls`。 + +要求:设计一个方法,根据 `smalls` 中的每一个较短字符串,对 `big` 进行搜索。输出 `smalls` 中的字符串在 `big` 里出现的所有位置 `positions`,其中 `positions[i]` 为 `smalls[i]` 出现的所有位置。 + +## 解题思路 + +构建字典树,将 `smalls` 中所有字符串存入字典树中,并在字典树中记录下插入字符串的顺序下标。 + +然后一重循环遍历 `big`,表示从第 `i` 位置开始的字符串 `big[i:]`。然后在字符串前缀中搜索对应的单词,将所有符合要求的单词插入顺序位置存入列表中,返回列表。 + +对于列表中每个单词插入下标顺序 `index` 和 `big[i:]` 来说, `i` 就是 `smalls` 中第 `index` 个字符串所对应在 `big` 中的开始位置,将其存入答案数组并返回即可。 + +## 代码 + +```python +class Trie: + + def __init__(self): + """ + Initialize your data structure here. + """ + self.children = dict() + self.isEnd = False + self.index = -1 + + + def insert(self, word: str, index: int) -> None: + """ + Inserts a word into the trie. + """ + cur = self + for ch in word: + if ch not in cur.children: + cur.children[ch] = Trie() + cur = cur.children[ch] + cur.isEnd = True + cur.index = index + + + def search(self, text: str) -> list: + """ + Returns if the word is in the trie. + """ + cur = self + res = [] + for i in range(len(text)): + ch = text[i] + if ch not in cur.children: + return res + cur = cur.children[ch] + if cur.isEnd: + res.append(cur.index) + return res + +class Solution: + def multiSearch(self, big: str, smalls: List[str]) -> List[List[int]]: + trie_tree = Trie() + for i in range(len(smalls)): + word = smalls[i] + trie_tree.insert(word, i) + + res = [[] for _ in range(len(smalls))] + + for i in range(len(big)): + for index in trie_tree.search(big[i:]): + res[index].append(i) + return res +``` + diff --git a/docs/solutions/interviews/number-of-2s-in-range-lcci.md b/docs/solutions/interviews/number-of-2s-in-range-lcci.md new file mode 100644 index 00000000..3fe09ff1 --- /dev/null +++ b/docs/solutions/interviews/number-of-2s-in-range-lcci.md @@ -0,0 +1,85 @@ +# [面试题 17.06. 2出现的次数](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) + +- 标签:递归、数学、动态规划 +- 难度:困难 + +## 题目链接 + +- [面试题 17.06. 2出现的次数 - 力扣](https://leetcode.cn/problems/number-of-2s-in-range-lcci/) + +## 题目大意 + +**描述**:给定一个整数 $n$。 + +**要求**:计算从 $0$ 到 $n$ (包含 $n$) 中数字 $2$ 出现的次数。 + +**说明**: + +- $n \le 10^9$。 + +**示例**: + +- 示例 1: + +```python +输入: 25 +输出: 9 +解释: (2, 12, 20, 21, 22, 23, 24, 25)(注意 22 应该算作两次) +``` + +## 解题思路 + +### 思路 1:动态规划 + 数位 DP + +将 $n$ 转换为字符串 $s$,定义递归函数 `def dfs(pos, cnt, isLimit):` 表示构造第 $pos$ 位及之后所有数位中数字 $2$ 出现的个数。接下来按照如下步骤进行递归。 + +1. 从 `dfs(0, 0, True)` 开始递归。 `dfs(0, 0, True)` 表示: + 1. 从位置 $0$ 开始构造。 + 2. 初始数字 $2$ 出现的个数为 $0$。 + 3. 开始时受到数字 $n$ 对应最高位数位的约束。 +2. 如果遇到 $pos == len(s)$,表示到达数位末尾,此时:返回数字 $2$ 出现的个数 $cnt$。 +3. 如果 $pos \ne len(s)$,则定义方案数 $ans$,令其等于 $0$,即:`ans = 0`。 +4. 如果遇到 $isNum == False$,说明之前位数没有填写数字,当前位可以跳过,这种情况下方案数等于 $pos + 1$ 位置上没有受到 $pos$ 位的约束,并且之前没有填写数字时的方案数,即:`ans = dfs(i + 1, state, False, False)`。 +5. 如果 $isNum == True$,则当前位必须填写一个数字。此时: + 1. 因为不需要考虑前导 $0$ 所以当前位数位所能选择的最小数字($minX$)为 $0$。 + 2. 根据 $isLimit$ 来决定填当前位数位所能选择的最大数字($maxX$)。 + 3. 然后根据 $[minX, maxX]$ 来枚举能够填入的数字 $d$。 + 4. 方案数累加上当前位选择 $d$ 之后的方案数,即:`ans += dfs(pos + 1, cnt + (d == 2), isLimit and d == maxX)`。 + 1. `cnt + (d == 2)` 表示之前数字 $2$ 出现的个数加上当前位为数字 $2$ 的个数。 + 2. `isLimit and d == maxX` 表示 $pos + 1$ 位受到之前位 $pos$ 位限制。 +6. 最后的方案数为 `dfs(0, 0, True)`,将其返回即可。 + +### 思路 1:代码 + +```python +class Solution: + def numberOf2sInRange(self, n: int) -> int: + # 将 n 转换为字符串 s + s = str(n) + + @cache + # pos: 第 pos 个数位 + # cnt: 之前数字 2 出现的个数。 + # isLimit: 表示是否受到选择限制。如果为真,则第 pos 位填入数字最多为 s[pos];如果为假,则最大可为 9。 + def dfs(pos, cnt, isLimit): + if pos == len(s): + return cnt + + ans = 0 + # 不需要考虑前导 0,则最小可选择数字为 0 + minX = 0 + # 如果受到选择限制,则最大可选择数字为 s[pos],否则最大可选择数字为 9。 + maxX = int(s[pos]) if isLimit else 9 + + # 枚举可选择的数字 + for d in range(minX, maxX + 1): + ans += dfs(pos + 1, cnt + (d == 2), isLimit and d == maxX) + return ans + + return dfs(0, 0, True) +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(\log n)$。 +- **空间复杂度**:$O(\log n)$。 diff --git a/docs/solutions/interviews/palindrome-linked-list-lcci.md b/docs/solutions/interviews/palindrome-linked-list-lcci.md new file mode 100644 index 00000000..9907bb09 --- /dev/null +++ b/docs/solutions/interviews/palindrome-linked-list-lcci.md @@ -0,0 +1,32 @@ +# [面试题 02.06. 回文链表](https://leetcode.cn/problems/palindrome-linked-list-lcci/) + +- 标签:栈、递归、链表、双指针 +- 难度:简单 + +## 题目链接 + +- [面试题 02.06. 回文链表 - 力扣](https://leetcode.cn/problems/palindrome-linked-list-lcci/) + +## 题目大意 + +给定一个链表的头节点 `head`。 + +要求:判断该链表是否为回文链表。 + +## 解题思路 + +利用数组,将链表元素依次存入。然后再使用两个指针,一个指向数组开始位置,一个指向数组结束位置,依次判断首尾对应元素是否相等,若都相等,则为回文链表。若不相等,则不是回文链表。 + +## 代码 + +```python +class Solution: + def isPalindrome(self, head: ListNode) -> bool: + nodes = [] + p1 = head + while p1 != None: + nodes.append(p1.val) + p1 = p1.next + return nodes == nodes[::-1] +``` + diff --git a/docs/solutions/interviews/paths-with-sum-lcci.md b/docs/solutions/interviews/paths-with-sum-lcci.md new file mode 100644 index 00000000..0cec25c8 --- /dev/null +++ b/docs/solutions/interviews/paths-with-sum-lcci.md @@ -0,0 +1,45 @@ +# [面试题 04.12. 求和路径](https://leetcode.cn/problems/paths-with-sum-lcci/) + +- 标签:树、深度优先搜索、二叉树 +- 难度:中等 + +## 题目链接 + +- [面试题 04.12. 求和路径 - 力扣](https://leetcode.cn/problems/paths-with-sum-lcci/) + +## 题目大意 + +给定一个二叉树的根节点 `root`,和一个整数 `targetSum`。 + +要求:求出该二叉树里节点值之和等于 `targetSum` 的路径的数目。 + +- 路径:不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。 + +## 解题思路 + +直观想法是: + +以每一个节点 `node` 为起始节点,向下检测延伸的路径。递归遍历每一个节点所有可能的路径,然后将这些路径数目加起来即为答案。 + +但是这样会存在许多重复计算。我们可以定义节点的前缀和来减少重复计算。 + +- 节点的前缀和:从根节点到当前节点路径上所有节点的和。 + +有了节点的前缀和,我们就可以通过前缀和来计算两节点之间的路劲和。即:`则两节点之间的路径和 = 两节点之间的前缀和之差`。 + +为了计算符合要求的路径数量,我们用哈希表存储「前缀和的节点数量」。哈希表以「当前节点的前缀和」为键,以「该前缀和的节点数量」为值。这样就能通过哈希表直接计算出符合要求的路径数量,从而累加到答案上。 + +整个算法的具体步骤如下: + +- 通过先序遍历方式递归遍历二叉树,计算每一个节点的前缀和 `cur_sum`。 +- 从哈希表中取出 `cur_sum - target_sum` 的路径数量(也就是表示存在从前缀和为 `cur_sum - target_sum` 所对应的节点到前缀和为 `cur_sum` 所对应的节点的路径个数)累加到答案 `res` 中。 +- 然后以「当前节点的前缀和」为键,以「该前缀和的节点数量」为值,存入哈希表中。 +- 递归遍历二叉树,并累加答案值。 +- 恢复哈希表「当前前缀和的节点数量」,返回答案。 + +## 代码 + +```python + +``` + diff --git a/docs/solutions/interviews/permutation-i-lcci.md b/docs/solutions/interviews/permutation-i-lcci.md new file mode 100644 index 00000000..f5cd4488 --- /dev/null +++ b/docs/solutions/interviews/permutation-i-lcci.md @@ -0,0 +1,46 @@ +# [面试题 08.07. 无重复字符串的排列组合](https://leetcode.cn/problems/permutation-i-lcci/) + +- 标签:字符串、回溯 +- 难度:中等 + +## 题目链接 + +- [面试题 08.07. 无重复字符串的排列组合 - 力扣](https://leetcode.cn/problems/permutation-i-lcci/) + +## 题目大意 + +给定一个字符串 `S`。 + +要求:打印出该字符串中字符的所有排列。可以以任意顺序返回这个字符串数组,但里边不能有重复元素。 + +## 解题思路 + +使用 `visited` 数组标记该元素在当前排列中是否被访问过。若未被访问过则将其加入排列中,并在访问后将该元素变为未访问状态。然后进行回溯遍历。 + +## 代码 + +```python +class Solution: + res = [] + path = [] + + def backtrack(self, S, visited): + if len(self.path) == len(S): + self.res.append(''.join(self.path)) + return + for i in range(len(S)): + if not visited[i]: + visited[i] = True + self.path.append(S[i]) + self.backtrack(S, visited) + self.path.pop() + visited[i] = False + + def permutation(self, S: str) -> List[str]: + self.res.clear() + self.path.clear() + visited = [False for _ in range(len(S))] + self.backtrack(S, visited) + return self.res +``` + diff --git a/docs/solutions/interviews/permutation-ii-lcci.md b/docs/solutions/interviews/permutation-ii-lcci.md new file mode 100644 index 00000000..8f9edeb5 --- /dev/null +++ b/docs/solutions/interviews/permutation-ii-lcci.md @@ -0,0 +1,55 @@ +# [面试题 08.08. 有重复字符串的排列组合](https://leetcode.cn/problems/permutation-ii-lcci/) + +- 标签:字符串、回溯 +- 难度:中等 + +## 题目链接 + +- [面试题 08.08. 有重复字符串的排列组合 - 力扣](https://leetcode.cn/problems/permutation-ii-lcci/) + +## 题目大意 + +给定一个字符串 `s`,字符串中包含有重复字符。 + +要求:打印出该字符串中字符的所有排列。可以以任意顺序返回这个字符串数组。 + +## 解题思路 + +因为原字符串可能含有重复元素,所以在回溯的时候需要进行去重。先将字符串 `s` 转为 `list` 列表,再对列表进行排序,然后使用 `visited` 数组标记该元素在当前排列中是否被访问过。若未被访问过则将其加入排列中,并在访问后将该元素变为未访问状态。 + +然后再递归遍历下一层元素之前,增加一句语句进行判重:`if i > 0 and nums[i] == nums[i - 1] and not visited[i - 1]: continue`。 + +然后进行回溯遍历。 + +## 代码 + +```python +class Solution: + res = [] + path = [] + + def backtrack(self, ls, visited): + if len(self.path) == len(ls): + self.res.append(''.join(self.path)) + return + for i in range(len(ls)): + if i > 0 and ls[i] == ls[i - 1] and not visited[i - 1]: + continue + + if not visited[i]: + visited[i] = True + self.path.append(ls[i]) + self.backtrack(ls, visited) + self.path.pop() + visited[i] = False + + def permutation(self, S: str) -> List[str]: + self.res.clear() + self.path.clear() + ls = list(S) + ls.sort() + visited = [False for _ in range(len(S))] + self.backtrack(ls, visited) + return self.res +``` + diff --git a/docs/solutions/interviews/power-set-lcci.md b/docs/solutions/interviews/power-set-lcci.md new file mode 100644 index 00000000..b6f4d166 --- /dev/null +++ b/docs/solutions/interviews/power-set-lcci.md @@ -0,0 +1,35 @@ +# [面试题 08.04. 幂集](https://leetcode.cn/problems/power-set-lcci/) + +- 标签:位运算、数组、回溯 +- 难度:中等 + +## 题目链接 + +- [面试题 08.04. 幂集 - 力扣](https://leetcode.cn/problems/power-set-lcci/) + +## 题目大意 + +给定一个集合 `nums`,集合中不包含重复元素。 + +压枪欧秋:返回该集合的所有子集。 + +## 解题思路 + +回溯算法,遍历集合 `nums`。为了使得子集不重复,每次遍历从当前位置的下一个位置进行下一层遍历。 + +## 代码 + +```python +class Solution: + def subsets(self, nums: List[int]) -> List[List[int]]: + def backtrack(size, subset, index): + res.append(subset) + for i in range(index, size): + backtrack(size, subset + [nums[i]], i + 1) + + size = len(nums) + res = list() + backtrack(size, [], 0) + return res +``` + diff --git a/docs/solutions/interviews/rotate-matrix-lcci.md b/docs/solutions/interviews/rotate-matrix-lcci.md new file mode 100644 index 00000000..275cbe8f --- /dev/null +++ b/docs/solutions/interviews/rotate-matrix-lcci.md @@ -0,0 +1,67 @@ +# [面试题 01.07. 旋转矩阵](https://leetcode.cn/problems/rotate-matrix-lcci/) + +- 标签:数组、数学、矩阵 +- 难度:中等 + +## 题目链接 + +- [面试题 01.07. 旋转矩阵 - 力扣](https://leetcode.cn/problems/rotate-matrix-lcci/) + +## 题目大意 + +给定一个 `n * n` 大小的二维矩阵用来表示图像,其中每个像素的大小为 4 字节。 + +要求:设计一种算法,将图像旋转 90 度。并且要不占用额外内存空间。 + +## 解题思路 + +题目要求不占用额外内存空间,就是要在原二维矩阵上直接进行旋转操作。我们可以用翻转操作代替旋转操作。具体可以分为两步: + +1. 上下翻转。 + +2. 主对角线翻转。 + +举个例子: + +``` + 1 2 3 4 + 5 6 7 8 + 9 10 11 12 +13 14 15 16 +``` + +上下翻转后变为: + +``` +13 14 15 16 + 9 10 11 12 + 5 6 7 8 + 1 2 3 4 +``` + +在经过主对角线翻转后变为: + +``` +13 9 5 1 +14 10 6 2 +15 11 7 3 +16 12 8 4 +``` + +## 代码 + +```python +class Solution: + def rotate(self, matrix: List[List[int]]) -> None: + """ + Do not return anything, modify matrix in-place instead. + """ + size = len(matrix) + for i in range(size // 2): + for j in range(size): + matrix[i][j], matrix[size - i - 1][j] = matrix[size - i - 1][j], matrix[i][j] + for i in range(size): + for j in range(i): + matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j] +``` + diff --git a/docs/solutions/interviews/smallest-k-lcci.md b/docs/solutions/interviews/smallest-k-lcci.md new file mode 100644 index 00000000..cc05a832 --- /dev/null +++ b/docs/solutions/interviews/smallest-k-lcci.md @@ -0,0 +1,73 @@ +# [面试题 17.14. 最小K个数](https://leetcode.cn/problems/smallest-k-lcci/) + +- 标签:数组、分治、快速选择、排序、堆(优先队列) +- 难度:中等 + +## 题目链接 + +- [面试题 17.14. 最小K个数 - 力扣](https://leetcode.cn/problems/smallest-k-lcci/) + +## 题目大意 + +给定整数数组 `arr`,再给定一个整数 `k`。 + +要求:返回数组 `arr` 中最小的 `k` 个数。 + +## 解题思路 + +直接可以想到的思路是:排序后输出数组上对应的最小的 k 个数。所以问题关键在于排序方法的复杂度。 + +冒泡排序、选择排序、插入排序时间复杂度 $O(n^2)$ 太高了,解答会超时。 + +可考虑堆排序、归并排序、快速排序。本题使用堆排序。具体做法如下: + +1. 利用数组前 `k` 个元素,建立大小为 `k` 的大顶堆。 +2. 遍历数组 `[k, size - 1]` 的元素,判断其与堆顶元素关系,如果比堆顶元素小,则将其赋值给堆顶元素,再对大顶堆进行调整。 +3. 最后输出前调整过后的大顶堆的前 `k` 个元素。 + +## 代码 + +```python +class Solution: + def heapify(self, nums: [int], index: int, end: int): + left = index * 2 + 1 + right = left + 1 + while left <= end: + # 当前节点为非叶子节点 + max_index = index + if nums[left] > nums[max_index]: + max_index = left + if right <= end and nums[right] > nums[max_index]: + max_index = right + if index == max_index: + # 如果不用交换,则说明已经交换结束 + break + nums[index], nums[max_index] = nums[max_index], nums[index] + # 继续调整子树 + index = max_index + left = index * 2 + 1 + right = left + 1 + + # 初始化大顶堆 + def buildMaxHeap(self, nums: [int], k: int): + # (k-2) // 2 是最后一个非叶节点,叶节点不用调整 + for i in range((k - 2) // 2, -1, -1): + self.heapify(nums, i, k - 1) + return nums + + def smallestK(self, arr: List[int], k: int) -> List[int]: + size = len(arr) + if k <= 0 or not arr: + return [] + if size <= k: + return arr + + self.buildMaxHeap(arr, k) + for i in range(k, size): + if arr[i] < arr[0]: + arr[i], arr[0] = arr[0], arr[i] + self.heapify(arr, 0, k - 1) + + return arr[:k] +``` + diff --git a/docs/solutions/interviews/sorted-matrix-search-lcci.md b/docs/solutions/interviews/sorted-matrix-search-lcci.md new file mode 100644 index 00000000..61c554e6 --- /dev/null +++ b/docs/solutions/interviews/sorted-matrix-search-lcci.md @@ -0,0 +1,90 @@ +# [面试题 10.09. 排序矩阵查找](https://leetcode.cn/problems/sorted-matrix-search-lcci/) + +- 标签:数组、二分查找、分治、矩阵 +- 难度:中等 + +## 题目链接 + +- [面试题 10.09. 排序矩阵查找 - 力扣](https://leetcode.cn/problems/sorted-matrix-search-lcci/) + +## 题目大意 + +给定一个 `m * n` 大小的有序整数矩阵。每一行、每一列都按升序排列。再给定一个目标值 `target`。 + +要求:判断矩阵中是否可以找到 `target`,若找到 `target`,返回 `True`,否则返回 `False`。 + +## 解题思路 + +矩阵是有序的,可以考虑使用二分搜索来进行查找。 + +迭代对角线元素,假设对角线元素的坐标为 `(row, col)`。把数组元素按对角线分为右上角部分和左下角部分。 + +则对于当前对角线元素右侧第 `row` 行、对角线元素下侧第 `col` 列进行二分查找。 + +- 如果找到目标,直接返回 `True`。 +- 如果找不到目标,则缩小范围,继续查找。 +- 直到所有对角线元素都遍历完,依旧没找到,则返回 `False`。 + +## 代码 + +```python +class Solution: + def diagonalBinarySearch(self, matrix, diagonal, target): + left = 0 + right = diagonal + while left < right: + mid = left + (right - left) // 2 + if matrix[mid][mid] < target: + left = mid + 1 + else: + right = mid + return left + + def rowBinarySearch(self, matrix, begin, cols, target): + left = begin + right = cols + while left < right: + mid = left + (right - left) // 2 + if matrix[begin][mid] < target: + left = mid + 1 + elif matrix[begin][mid] > target: + right = mid - 1 + else: + left = mid + break + return begin <= left <= cols and matrix[begin][left] == target + + def colBinarySearch(self, matrix, begin, rows, target): + left = begin + 1 + right = rows + while left < right: + mid = left + (right - left) // 2 + if matrix[mid][begin] < target: + left = mid + 1 + elif matrix[mid][begin] > target: + right = mid - 1 + else: + left = mid + break + return begin <= left <= rows and matrix[left][begin] == target + + def searchMatrix(self, matrix: List[List[int]], target: int) -> bool: + rows = len(matrix) + if rows == 0: + return False + cols = len(matrix[0]) + if cols == 0: + return False + + min_val = min(rows, cols) + index = self.diagonalBinarySearch(matrix, min_val - 1, target) + if matrix[index][index] == target: + return True + for i in range(index + 1): + row_search = self.rowBinarySearch(matrix, i, cols - 1, target) + col_search = self.colBinarySearch(matrix, i, rows - 1, target) + if row_search or col_search: + return True + return False +``` + diff --git a/docs/solutions/interviews/sorted-merge-lcci.md b/docs/solutions/interviews/sorted-merge-lcci.md new file mode 100644 index 00000000..ea05bd85 --- /dev/null +++ b/docs/solutions/interviews/sorted-merge-lcci.md @@ -0,0 +1,72 @@ +# [面试题 10.01. 合并排序的数组](https://leetcode.cn/problems/sorted-merge-lcci/) + +- 标签:数组、双指针、排序 +- 难度:简单 + +## 题目链接 + +- [面试题 10.01. 合并排序的数组 - 力扣](https://leetcode.cn/problems/sorted-merge-lcci/) + +## 题目大意 + +**描述**:给定两个排序后的数组 `A` 和 `B`,以及 `A` 的元素数量 `m` 和 `B` 的元素数量 `n`。 `A` 的末端有足够的缓冲空间容纳 `B`。 + +**要求**:编写一个方法,将 `B` 合并入 `A` 并排序。 + +**说明**: + +- $A.length == n + m$。 + +**示例**: + +- 示例 1: + +```python +输入: +A = [1,2,3,0,0,0], m = 3 +B = [2,5,6], n = 3 + +输出: [1,2,2,3,5,6] +``` + +## 解题思路 + +### 思路 1:归并排序 + +可以利用归并排序算法的归并步骤思路。 + +1. 使用两个指针分别表示`A`、`B` 正在处理的元素下标。 +2. 对 `A`、`B` 进行归并操作,将结果存入新数组中。归并之后,再将所有元素赋值到数组 `A` 中。 + +### 思路 1:代码 + +```python +class Solution: + def merge(self, A: List[int], m: int, B: List[int], n: int) -> None: + """ + Do not return anything, modify A in-place instead. + """ + arr = [] + index_A, index_B = 0, 0 + while index_A < m and index_B < n: + if A[index_A] <= B[index_B]: + arr.append(A[index_A]) + index_A += 1 + else: + arr.append(B[index_B]) + index_B += 1 + while index_A < m: + arr.append(A[index_A]) + index_A += 1 + while index_B < n: + arr.append(B[index_B]) + index_B += 1 + for i in range(m + n): + A[i] = arr[i] +``` + +### 思路 1:复杂度分析 + +- **时间复杂度**:$O(m + n)$。 +- **空间复杂度**:$O(m + n)$。 + diff --git a/docs/solutions/interviews/successor-lcci.md b/docs/solutions/interviews/successor-lcci.md new file mode 100644 index 00000000..0576afea --- /dev/null +++ b/docs/solutions/interviews/successor-lcci.md @@ -0,0 +1,39 @@ +# [面试题 04.06. 后继者](https://leetcode.cn/problems/successor-lcci/) + +- 标签:树、深度优先搜索、二叉搜索树、二叉树 +- 难度:中等 + +## 题目链接 + +- [面试题 04.06. 后继者 - 力扣](https://leetcode.cn/problems/successor-lcci/) + +## 题目大意 + +给定一棵二叉搜索树的根节点 `root` 和其中一个节点 `p`。 + +要求:找出该节点在树中的中序后继,即按照中序遍历的顺序节点 `p` 的下一个节点。如果节点 `p` 没有对应的下一个节点,则返回 `None`。 + +## 解题思路 + +递归遍历,具体步骤如下: + +- 如果 `root.val` 小于等于 `p.val`,则直接从 `root` 的右子树递归查找比 `p.val` 大的节点,从而找到中序后继。 +- 如果 `root.val` 大于 `p.val`,则 `root` 有可能是中序后继,也有可能是 `root` 的左子树。则从 `root` 的左子树递归查找更接近(更小的)。如果查找的值为 `None`,则当前 `root` 就是中序后继,否则继续递归查找,从而找到中序后继。 + +## 代码 + +```python +class Solution: + def inorderSuccessor(self, root: TreeNode, p: TreeNode) -> TreeNode: + if not p or not root: + return None + + if root.val <= p.val: + node = self.inorderSuccessor(root.right, p) + else: + node = self.inorderSuccessor(root.left, p) + if not node: + node = root + return node +``` + diff --git a/docs/solutions/interviews/sum-lists-lcci.md b/docs/solutions/interviews/sum-lists-lcci.md new file mode 100644 index 00000000..7962b73d --- /dev/null +++ b/docs/solutions/interviews/sum-lists-lcci.md @@ -0,0 +1,47 @@ +# [面试题 02.05. 链表求和](https://leetcode.cn/problems/sum-lists-lcci/) + +- 标签:递归、链表、数学 +- 难度:中等 + +## 题目链接 + +- [面试题 02.05. 链表求和 - 力扣](https://leetcode.cn/problems/sum-lists-lcci/) + +## 题目大意 + +给定两个非空的链表 `l1` 和 `l2`,表示两个非负整数,每位数字都是按照逆序的方式存储的,每个节点存储一位数字。 + +要求:计算两个整数的和,并逆序返回表示和的链表。 + +## 解题思路 + +模拟大数加法,按位相加,将结果添加到新链表上。需要注意进位和对 `10` 取余。 + +## 代码 + +```python +class Solution: + def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode: + head = curr = ListNode(0) + carry = 0 + while l1 or l2 or carry: + if l1: + num1 = l1.val + l1 = l1.next + else: + num1 = 0 + if l2: + num2 = l2.val + l2 = l2.next + else: + num2 = 0 + + sum = num1 + num2 + carry + carry = sum // 10 + + curr.next = ListNode(sum % 10) + curr = curr.next + + return head.next +``` + diff --git a/docs/solutions/interviews/words-frequency-lcci.md b/docs/solutions/interviews/words-frequency-lcci.md new file mode 100644 index 00000000..6211c194 --- /dev/null +++ b/docs/solutions/interviews/words-frequency-lcci.md @@ -0,0 +1,78 @@ +# [面试题 16.02. 单词频率](https://leetcode.cn/problems/words-frequency-lcci/) + +- 标签:设计、字典树、数组、哈希表、字符串 +- 难度:中等 + +## 题目链接 + +- [面试题 16.02. 单词频率 - 力扣](https://leetcode.cn/problems/words-frequency-lcci/) + +## 题目大意 + +要求:设计一个方法,找出任意指定单词在一本书中的出现频率。 + +支持如下操作: + +- `WordsFrequency(book)` 构造函数,参数为字符串数组构成的一本书。 +- `get(word)` 查询指定单词在书中出现的频率。 + +## 解题思路 + +使用字典树统计单词频率。 + +构造函数时,构建一个字典树,并将所有单词存入字典树中,同时在字典树中记录并维护单词频率。 + +查询时,调用字典树查询方法,查询单词频率。 + +## 代码 + +```python +class Trie: + + def __init__(self): + """ + Initialize your data structure here. + """ + self.children = dict() + self.isEnd = False + self.count = 0 + + + def insert(self, word: str) -> None: + """ + Inserts a word into the trie. + """ + cur = self + for ch in word: + if ch not in cur.children: + cur.children[ch] = Trie() + cur = cur.children[ch] + cur.isEnd = True + cur.count += 1 + + + def search(self, word: str) -> bool: + """ + Returns if the word is in the trie. + """ + cur = self + for ch in word: + if ch not in cur.children: + return 0 + cur = cur.children[ch] + if cur and cur.isEnd: + return cur.count + return 0 + +class WordsFrequency: + + def __init__(self, book: List[str]): + self.tire_tree = Trie() + for word in book: + self.tire_tree.insert(word) + + + def get(self, word: str) -> int: + return self.tire_tree.search(word) +``` + diff --git a/docs/solutions/interviews/zero-matrix-lcci.md b/docs/solutions/interviews/zero-matrix-lcci.md new file mode 100644 index 00000000..6f9f855b --- /dev/null +++ b/docs/solutions/interviews/zero-matrix-lcci.md @@ -0,0 +1,70 @@ +# [面试题 01.08. 零矩阵](https://leetcode.cn/problems/zero-matrix-lcci/) + +- 标签:数组、哈希表、矩阵 +- 难度:中等 + +## 题目链接 + +- [面试题 01.08. 零矩阵 - 力扣](https://leetcode.cn/problems/zero-matrix-lcci/) + +## 题目大意 + +给定一个 `m * n` 大小的二维矩阵 `matrix`。 + +要求:编写一种算法,如果矩阵中某个元素为 `0`,增将其所在行与列清零。 + +## 解题思路 + +直观上可以使用两个数组或者集合来标记行和列出现 `0` 的情况,但更好的做法是不用开辟新的数组或集合,直接原本二维矩阵 `matrix` 的空间。使用数组原本的元素进行记录出现 0 的情况。 + +设定两个变量 `flag_row0`、`flag_col0` 来标记第一行、第一列是否出现了 `0`。 + +接下来我们使用数组第一行、第一列来标记 `0` 的情况。 + +对数组除第一行、第一列之外的每个元素进行遍历,如果某个元素出现 `0` 了,则使用数组的第一行、第一列对应位置来存储 `0` 的标记。 + +再对数组除第一行、第一列之外的每个元素进行遍历,通过对第一行、第一列的标记 0 情况,进行置为 `0` 的操作。 + +最后再根据 `flag_row0`、`flag_col0` 的标记情况,对第一行、第一列进行置为 `0` 的操作。 + +## 代码 + +```python +class Solution: + def setZeroes(self, matrix: List[List[int]]) -> None: + """ + Do not return anything, modify matrix in-place instead. + """ + rows = len(matrix) + cols = len(matrix[0]) + flag_col0 = False + flag_row0 = False + for i in range(rows): + if matrix[i][0] == 0: + flag_col0 = True + break + + for j in range(cols): + if matrix[0][j] == 0: + flag_row0 = True + break + + for i in range(1, rows): + for j in range(1, cols): + if matrix[i][j] == 0: + matrix[i][0] = matrix[0][j] = 0 + + for i in range(1, rows): + for j in range(1, cols): + if matrix[i][0] == 0 or matrix[0][j] == 0: + matrix[i][j] = 0 + + if flag_col0: + for i in range(rows): + matrix[i][0] = 0 + + if flag_row0: + for j in range(cols): + matrix[0][j] = 0 +``` +