diff --git a/solution/3200-3299/3205.Maximum Array Hopping Score I/README.md b/solution/3200-3299/3205.Maximum Array Hopping Score I/README.md
index a48f4b0b2f2fd..2eb2746a9c659 100644
--- a/solution/3200-3299/3205.Maximum Array Hopping Score I/README.md
+++ b/solution/3200-3299/3205.Maximum Array Hopping Score I/README.md
@@ -2,6 +2,11 @@
comments: true
difficulty: 中等
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3205.Maximum%20Array%20Hopping%20Score%20I/README.md
+tags:
+ - 栈
+ - 数组
+ - 动态规划
+ - 单调栈
---
diff --git a/solution/3200-3299/3205.Maximum Array Hopping Score I/README_EN.md b/solution/3200-3299/3205.Maximum Array Hopping Score I/README_EN.md
index 43195076335af..b944e0d127bbc 100644
--- a/solution/3200-3299/3205.Maximum Array Hopping Score I/README_EN.md
+++ b/solution/3200-3299/3205.Maximum Array Hopping Score I/README_EN.md
@@ -2,6 +2,11 @@
comments: true
difficulty: Medium
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3205.Maximum%20Array%20Hopping%20Score%20I/README_EN.md
+tags:
+ - Stack
+ - Array
+ - Dynamic Programming
+ - Monotonic Stack
---
diff --git a/solution/3200-3299/3206.Alternating Groups I/README.md b/solution/3200-3299/3206.Alternating Groups I/README.md
index 6f6a52fb79071..13e5f8ae452d0 100644
--- a/solution/3200-3299/3206.Alternating Groups I/README.md
+++ b/solution/3200-3299/3206.Alternating Groups I/README.md
@@ -2,6 +2,9 @@
comments: true
difficulty: 简单
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3206.Alternating%20Groups%20I/README.md
+tags:
+ - 数组
+ - 滑动窗口
---
diff --git a/solution/3200-3299/3206.Alternating Groups I/README_EN.md b/solution/3200-3299/3206.Alternating Groups I/README_EN.md
index 4dcf92fa88567..f955404325211 100644
--- a/solution/3200-3299/3206.Alternating Groups I/README_EN.md
+++ b/solution/3200-3299/3206.Alternating Groups I/README_EN.md
@@ -2,6 +2,9 @@
comments: true
difficulty: Easy
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3206.Alternating%20Groups%20I/README_EN.md
+tags:
+ - Array
+ - Sliding Window
---
diff --git a/solution/3200-3299/3207.Maximum Points After Enemy Battles/README.md b/solution/3200-3299/3207.Maximum Points After Enemy Battles/README.md
index f3eb03373c404..7b186e1d37b5a 100644
--- a/solution/3200-3299/3207.Maximum Points After Enemy Battles/README.md
+++ b/solution/3200-3299/3207.Maximum Points After Enemy Battles/README.md
@@ -2,6 +2,9 @@
comments: true
difficulty: 中等
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3207.Maximum%20Points%20After%20Enemy%20Battles/README.md
+tags:
+ - 贪心
+ - 数组
---
diff --git a/solution/3200-3299/3207.Maximum Points After Enemy Battles/README_EN.md b/solution/3200-3299/3207.Maximum Points After Enemy Battles/README_EN.md
index 8764715d42a0a..ca3f5e671014d 100644
--- a/solution/3200-3299/3207.Maximum Points After Enemy Battles/README_EN.md
+++ b/solution/3200-3299/3207.Maximum Points After Enemy Battles/README_EN.md
@@ -2,6 +2,9 @@
comments: true
difficulty: Medium
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3207.Maximum%20Points%20After%20Enemy%20Battles/README_EN.md
+tags:
+ - Greedy
+ - Array
---
diff --git a/solution/3200-3299/3208.Alternating Groups II/README.md b/solution/3200-3299/3208.Alternating Groups II/README.md
index fbed6c2d77342..a2a42683fd46f 100644
--- a/solution/3200-3299/3208.Alternating Groups II/README.md
+++ b/solution/3200-3299/3208.Alternating Groups II/README.md
@@ -2,6 +2,9 @@
comments: true
difficulty: 中等
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3208.Alternating%20Groups%20II/README.md
+tags:
+ - 数组
+ - 滑动窗口
---
diff --git a/solution/3200-3299/3208.Alternating Groups II/README_EN.md b/solution/3200-3299/3208.Alternating Groups II/README_EN.md
index 2c2cc7e8acc4e..70a06159d6e20 100644
--- a/solution/3200-3299/3208.Alternating Groups II/README_EN.md
+++ b/solution/3200-3299/3208.Alternating Groups II/README_EN.md
@@ -2,6 +2,9 @@
comments: true
difficulty: Medium
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3208.Alternating%20Groups%20II/README_EN.md
+tags:
+ - Array
+ - Sliding Window
---
diff --git a/solution/3200-3299/3209.Number of Subarrays With AND Value of K/README.md b/solution/3200-3299/3209.Number of Subarrays With AND Value of K/README.md
index 9cbe8ab9bded6..b4e01a11e8e7e 100644
--- a/solution/3200-3299/3209.Number of Subarrays With AND Value of K/README.md
+++ b/solution/3200-3299/3209.Number of Subarrays With AND Value of K/README.md
@@ -2,6 +2,11 @@
comments: true
difficulty: 困难
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3209.Number%20of%20Subarrays%20With%20AND%20Value%20of%20K/README.md
+tags:
+ - 位运算
+ - 线段树
+ - 数组
+ - 二分查找
---
diff --git a/solution/3200-3299/3209.Number of Subarrays With AND Value of K/README_EN.md b/solution/3200-3299/3209.Number of Subarrays With AND Value of K/README_EN.md
index c1d155c8f6e7f..e3fcea5a71fe0 100644
--- a/solution/3200-3299/3209.Number of Subarrays With AND Value of K/README_EN.md
+++ b/solution/3200-3299/3209.Number of Subarrays With AND Value of K/README_EN.md
@@ -2,6 +2,11 @@
comments: true
difficulty: Hard
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3209.Number%20of%20Subarrays%20With%20AND%20Value%20of%20K/README_EN.md
+tags:
+ - Bit Manipulation
+ - Segment Tree
+ - Array
+ - Binary Search
---
diff --git a/solution/3200-3299/3210.Find the Encrypted String/README.md b/solution/3200-3299/3210.Find the Encrypted String/README.md
index a5775a7640bef..7d494a649f799 100644
--- a/solution/3200-3299/3210.Find the Encrypted String/README.md
+++ b/solution/3200-3299/3210.Find the Encrypted String/README.md
@@ -2,6 +2,8 @@
comments: true
difficulty: 简单
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3210.Find%20the%20Encrypted%20String/README.md
+tags:
+ - 字符串
---
diff --git a/solution/3200-3299/3210.Find the Encrypted String/README_EN.md b/solution/3200-3299/3210.Find the Encrypted String/README_EN.md
index d509f8421cdbb..19a55052eace1 100644
--- a/solution/3200-3299/3210.Find the Encrypted String/README_EN.md
+++ b/solution/3200-3299/3210.Find the Encrypted String/README_EN.md
@@ -2,6 +2,8 @@
comments: true
difficulty: Easy
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3210.Find%20the%20Encrypted%20String/README_EN.md
+tags:
+ - String
---
diff --git a/solution/3200-3299/3211.Generate Binary Strings Without Adjacent Zeros/README.md b/solution/3200-3299/3211.Generate Binary Strings Without Adjacent Zeros/README.md
index af96e053ad8ee..d1169b1cf7f3b 100644
--- a/solution/3200-3299/3211.Generate Binary Strings Without Adjacent Zeros/README.md
+++ b/solution/3200-3299/3211.Generate Binary Strings Without Adjacent Zeros/README.md
@@ -2,6 +2,10 @@
comments: true
difficulty: 中等
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3211.Generate%20Binary%20Strings%20Without%20Adjacent%20Zeros/README.md
+tags:
+ - 位运算
+ - 递归
+ - 字符串
---
diff --git a/solution/3200-3299/3211.Generate Binary Strings Without Adjacent Zeros/README_EN.md b/solution/3200-3299/3211.Generate Binary Strings Without Adjacent Zeros/README_EN.md
index 4f8800aeabc54..14dc2ab98e423 100644
--- a/solution/3200-3299/3211.Generate Binary Strings Without Adjacent Zeros/README_EN.md
+++ b/solution/3200-3299/3211.Generate Binary Strings Without Adjacent Zeros/README_EN.md
@@ -2,6 +2,10 @@
comments: true
difficulty: Medium
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3211.Generate%20Binary%20Strings%20Without%20Adjacent%20Zeros/README_EN.md
+tags:
+ - Bit Manipulation
+ - Recursion
+ - String
---
diff --git a/solution/3200-3299/3212.Count Submatrices With Equal Frequency of X and Y/README.md b/solution/3200-3299/3212.Count Submatrices With Equal Frequency of X and Y/README.md
index 1bf8be06470a4..8a55c146733cd 100644
--- a/solution/3200-3299/3212.Count Submatrices With Equal Frequency of X and Y/README.md
+++ b/solution/3200-3299/3212.Count Submatrices With Equal Frequency of X and Y/README.md
@@ -2,6 +2,10 @@
comments: true
difficulty: 中等
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3212.Count%20Submatrices%20With%20Equal%20Frequency%20of%20X%20and%20Y/README.md
+tags:
+ - 数组
+ - 矩阵
+ - 前缀和
---
diff --git a/solution/3200-3299/3212.Count Submatrices With Equal Frequency of X and Y/README_EN.md b/solution/3200-3299/3212.Count Submatrices With Equal Frequency of X and Y/README_EN.md
index 22f0246d90563..d7c8fb3e460e0 100644
--- a/solution/3200-3299/3212.Count Submatrices With Equal Frequency of X and Y/README_EN.md
+++ b/solution/3200-3299/3212.Count Submatrices With Equal Frequency of X and Y/README_EN.md
@@ -2,6 +2,10 @@
comments: true
difficulty: Medium
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3212.Count%20Submatrices%20With%20Equal%20Frequency%20of%20X%20and%20Y/README_EN.md
+tags:
+ - Array
+ - Matrix
+ - Prefix Sum
---
diff --git a/solution/3200-3299/3213.Construct String with Minimum Cost/README.md b/solution/3200-3299/3213.Construct String with Minimum Cost/README.md
index 7433c69d2fff4..5a2d06667d114 100644
--- a/solution/3200-3299/3213.Construct String with Minimum Cost/README.md
+++ b/solution/3200-3299/3213.Construct String with Minimum Cost/README.md
@@ -2,6 +2,11 @@
comments: true
difficulty: 困难
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3213.Construct%20String%20with%20Minimum%20Cost/README.md
+tags:
+ - 数组
+ - 字符串
+ - 动态规划
+ - 后缀数组
---
diff --git a/solution/3200-3299/3213.Construct String with Minimum Cost/README_EN.md b/solution/3200-3299/3213.Construct String with Minimum Cost/README_EN.md
index 67d866fafefcd..c9c9d354943bc 100644
--- a/solution/3200-3299/3213.Construct String with Minimum Cost/README_EN.md
+++ b/solution/3200-3299/3213.Construct String with Minimum Cost/README_EN.md
@@ -2,6 +2,11 @@
comments: true
difficulty: Hard
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3200-3299/3213.Construct%20String%20with%20Minimum%20Cost/README_EN.md
+tags:
+ - Array
+ - String
+ - Dynamic Programming
+ - Suffix Array
---
diff --git a/solution/3200-3299/3214.Year on Year Growth Rate/README.md b/solution/3200-3299/3214.Year on Year Growth Rate/README.md
index 6dc562371bf6b..f9f960282e758 100644
--- a/solution/3200-3299/3214.Year on Year Growth Rate/README.md
+++ b/solution/3200-3299/3214.Year on Year Growth Rate/README.md
@@ -8,7 +8,7 @@ tags:
-# [3214. Year on Year Growth Rate 🔒](https://leetcode.cn/problems/year-on-year-growth-rate)
+# [3214. 同比增长率 🔒](https://leetcode.cn/problems/year-on-year-growth-rate)
[English Version](/solution/3200-3299/3214.Year%20on%20Year%20Growth%20Rate/README_EN.md)
@@ -16,7 +16,7 @@ tags:
-
Table: user_transactions
+表:user_transactions
+------------------+----------+
@@ -27,33 +27,34 @@ tags:
| spend | decimal |
| transaction_date | datetime |
+------------------+----------+
-The transaction_id column uniquely identifies each row in this table.
-Each row of this table contains the transaction ID, product ID, the spend amount, and the transaction date.
+transaction_id 列唯一标识了表中的每一列。
+这张表的每一行含有交易 ID,产品 ID,总花费以及交易日期。
-Write a solution to calculate the year-on-year growth rate for the total spend for each product.
+编写一个解决方案来计算 每个产品 总支出的 同比增长率。
-The result table should include the following columns:
+结果表应该包含以下列:
- year
: The year of the transaction.
- product_id
: The ID of the product.
- curr_year_spend
: The total spend for the current year.
- prev_year_spend
: The total spend for the previous year.
- yoy_rate
: The year-on-year growth rate percentage, rounded to 2
decimal places.
+ year
:交易的年份。
+ product_id
:产品的 ID。
+ curr_year_spend
:当年的总支出。
+ prev_year_spend
:上一年的总支出。
+ yoy_rate
:同比增速百分比,四舍五入至小数点后 2 位。
-Return the result table ordered by product_id
,year
in ascending order.
+返回结果表以 product_id
,year
升序 排序。
-The result format is in the following example.
+结果格式如下所示。
-Example:
+
+示例:
-
Input:
+
输入:
-
user_transactions
table:
+
user_transactions
表:
+----------------+------------+---------+---------------------+
@@ -66,7 +67,7 @@ Each row of this table contains the transaction ID, product ID, the spend amount
+----------------+------------+---------+---------------------+
-
Output:
+
输出:
+------+------------+----------------+----------------+----------+
@@ -79,44 +80,44 @@ Each row of this table contains the transaction ID, product ID, the spend amount
+------+------------+----------------+----------------+----------+
-
Explanation:
+
解释:
- - For product ID 123424:
+
- 对于产品 ID 123424:
- - In 2019:
+
- 在 2019:
- - Current year's spend is 1500.60
- - No previous year's spend recorded
- - YoY growth rate: NULL
+ - 当年的支出是 1500.60
+ - 没有上一年支出的记录
+ - 同比增长率:NULL
- - In 2020:
+
- 在 2020:
- - Current year's spend is 1000.20
- - Previous year's spend is 1500.60
- - YoY growth rate: ((1000.20 - 1500.60) / 1500.60) * 100 = -33.35%
+ - 当年的支出是 1000.20
+ - 上一年的支出是 1500.60
+ - 同比增长率:((1000.20 - 1500.60) / 1500.60) * 100 = -33.35%
- - In 2021:
+
- 在 2021:
- - Current year's spend is 1246.44
- - Previous year's spend is 1000.20
- - YoY growth rate: ((1246.44 - 1000.20) / 1000.20) * 100 = 24.62%
+ - 当年的支出是 1246.44
+ - 上一年的支出是 1000.20
+ - 同比增长率:((1246.44 - 1000.20) / 1000.20) * 100 = 24.62%
- - In 2022:
+
- 在 2022:
- - Current year's spend is 2145.32
- - Previous year's spend is 1246.44
- - YoY growth rate: ((2145.32 - 1246.44) / 1246.44) * 100 = 72.12%
+ - 当年的支出是 2145.32
+ - 上一年的支出是 1246.44
+ - 同比增长率:((2145.32 - 1246.44) / 1246.44) * 100 = 72.12%
-
Note: Output table is ordered by product_id
and year
in ascending order.
+
注意:输出表以 product_id
和 year
升序排序。
@@ -125,9 +126,9 @@ Each row of this table contains the transaction ID, product ID, the spend amount
-### 方法一:分组统计 + 窗口函数
+### 方法一:分组统计 + 左连接
-我们可以先按照年份和产品 ID 进行分组统计每个产品每年的总花费,记录在 `T` 表中。然后使用窗口函数 `LAG` 计算出上一年的总花费,记录在 `S` 表中。最后根据公式计算出年增长率。
+我们可以先按照 `product_id` 和 `year(transaction_date)` 进行分组统计,然后使用左连接将当前年份的统计结果与上一年份的统计结果进行关联,最后计算年同比增长率。
@@ -137,25 +138,21 @@ Each row of this table contains the transaction ID, product ID, the spend amount
# Write your MySQL query statement below
WITH
T AS (
- SELECT YEAR(transaction_date) year, product_id, SUM(spend) tot_spend
+ SELECT product_id, YEAR(transaction_date) year, SUM(spend) curr_year_spend
FROM user_transactions
GROUP BY 1, 2
),
S AS (
- SELECT
- year,
- product_id,
- tot_spend curr_year_spend,
- LAG(tot_spend) OVER (
- PARTITION BY product_id
- ORDER BY year
- ) prev_year_spend
- FROM T
+ SELECT t1.year, t1.product_id, t1.curr_year_spend, t2.curr_year_spend prev_year_spend
+ FROM
+ T t1
+ LEFT JOIN T t2 ON t1.product_id = t2.product_id AND t1.year = t2.year + 1
)
SELECT
*,
ROUND((curr_year_spend - prev_year_spend) / prev_year_spend * 100, 2) yoy_rate
-FROM S;
+FROM S
+ORDER BY 2, 1;
```
diff --git a/solution/3200-3299/3214.Year on Year Growth Rate/README_EN.md b/solution/3200-3299/3214.Year on Year Growth Rate/README_EN.md
index 8e86a0c886ed4..6a42b3b4e1c14 100644
--- a/solution/3200-3299/3214.Year on Year Growth Rate/README_EN.md
+++ b/solution/3200-3299/3214.Year on Year Growth Rate/README_EN.md
@@ -125,9 +125,9 @@ Each row of this table contains the transaction ID, product ID, the spend amount
-### Solution 1: Grouping Statistics + Window Function
+### Solution 1: Grouping Statistics + Left Join
-We can first group by year and product ID to calculate the total cost of each product every year, recorded in table `T`. Then, use the window function `LAG` to calculate the total cost of the previous year, recorded in table `S`. Finally, calculate the annual growth rate based on the formula.
+We can first group by `product_id` and `year(transaction_date)` to perform the statistics, then use a left join to associate the statistics of the current year with those of the previous year, and finally calculate the year-on-year growth rate.
@@ -137,25 +137,21 @@ We can first group by year and product ID to calculate the total cost of each pr
# Write your MySQL query statement below
WITH
T AS (
- SELECT YEAR(transaction_date) year, product_id, SUM(spend) tot_spend
+ SELECT product_id, YEAR(transaction_date) year, SUM(spend) curr_year_spend
FROM user_transactions
GROUP BY 1, 2
),
S AS (
- SELECT
- year,
- product_id,
- tot_spend curr_year_spend,
- LAG(tot_spend) OVER (
- PARTITION BY product_id
- ORDER BY year
- ) prev_year_spend
- FROM T
+ SELECT t1.year, t1.product_id, t1.curr_year_spend, t2.curr_year_spend prev_year_spend
+ FROM
+ T t1
+ LEFT JOIN T t2 ON t1.product_id = t2.product_id AND t1.year = t2.year + 1
)
SELECT
*,
ROUND((curr_year_spend - prev_year_spend) / prev_year_spend * 100, 2) yoy_rate
-FROM S;
+FROM S
+ORDER BY 2, 1;
```
diff --git a/solution/3200-3299/3214.Year on Year Growth Rate/Solution.sql b/solution/3200-3299/3214.Year on Year Growth Rate/Solution.sql
index ebe59cb961f67..4098616d1ff4c 100644
--- a/solution/3200-3299/3214.Year on Year Growth Rate/Solution.sql
+++ b/solution/3200-3299/3214.Year on Year Growth Rate/Solution.sql
@@ -1,22 +1,18 @@
# Write your MySQL query statement below
WITH
T AS (
- SELECT YEAR(transaction_date) year, product_id, SUM(spend) tot_spend
+ SELECT product_id, YEAR(transaction_date) year, SUM(spend) curr_year_spend
FROM user_transactions
GROUP BY 1, 2
),
S AS (
- SELECT
- year,
- product_id,
- tot_spend curr_year_spend,
- LAG(tot_spend) OVER (
- PARTITION BY product_id
- ORDER BY year
- ) prev_year_spend
- FROM T
+ SELECT t1.year, t1.product_id, t1.curr_year_spend, t2.curr_year_spend prev_year_spend
+ FROM
+ T t1
+ LEFT JOIN T t2 ON t1.product_id = t2.product_id AND t1.year = t2.year + 1
)
SELECT
*,
ROUND((curr_year_spend - prev_year_spend) / prev_year_spend * 100, 2) yoy_rate
-FROM S;
+FROM S
+ORDER BY 2, 1;
diff --git a/solution/DATABASE_README.md b/solution/DATABASE_README.md
index 3109801c2af85..9552987e6c05e 100644
--- a/solution/DATABASE_README.md
+++ b/solution/DATABASE_README.md
@@ -286,7 +286,7 @@
| 3188 | [查找得分最高的学生 II](/solution/3100-3199/3188.Find%20Top%20Scoring%20Students%20II/README.md) | `数据库` | 困难 | 🔒 |
| 3198 | [查找每个州的城市](/solution/3100-3199/3198.Find%20Cities%20in%20Each%20State/README.md) | `数据库` | 简单 | 🔒 |
| 3204 | [按位用户权限分析](/solution/3200-3299/3204.Bitwise%20User%20Permissions%20Analysis/README.md) | `数据库` | 中等 | 🔒 |
-| 3214 | [Year on Year Growth Rate](/solution/3200-3299/3214.Year%20on%20Year%20Growth%20Rate/README.md) | `数据库` | 困难 | 🔒 |
+| 3214 | [同比增长率](/solution/3200-3299/3214.Year%20on%20Year%20Growth%20Rate/README.md) | `数据库` | 困难 | 🔒 |
## 版权
diff --git a/solution/README.md b/solution/README.md
index cfb809c76eb33..d8b5ab68000ab 100644
--- a/solution/README.md
+++ b/solution/README.md
@@ -3215,16 +3215,16 @@
| 3202 | [找出有效子序列的最大长度 II](/solution/3200-3299/3202.Find%20the%20Maximum%20Length%20of%20Valid%20Subsequence%20II/README.md) | `数组`,`动态规划` | 中等 | 第 404 场周赛 |
| 3203 | [合并两棵树后的最小直径](/solution/3200-3299/3203.Find%20Minimum%20Diameter%20After%20Merging%20Two%20Trees/README.md) | `树`,`深度优先搜索`,`广度优先搜索`,`图` | 困难 | 第 404 场周赛 |
| 3204 | [按位用户权限分析](/solution/3200-3299/3204.Bitwise%20User%20Permissions%20Analysis/README.md) | `数据库` | 中等 | 🔒 |
-| 3205 | [最大数组跳跃得分 I](/solution/3200-3299/3205.Maximum%20Array%20Hopping%20Score%20I/README.md) | | 中等 | 🔒 |
-| 3206 | [交替组 I](/solution/3200-3299/3206.Alternating%20Groups%20I/README.md) | | 简单 | 第 134 场双周赛 |
-| 3207 | [与敌人战斗后的最大分数](/solution/3200-3299/3207.Maximum%20Points%20After%20Enemy%20Battles/README.md) | | 中等 | 第 134 场双周赛 |
-| 3208 | [交替组 II](/solution/3200-3299/3208.Alternating%20Groups%20II/README.md) | | 中等 | 第 134 场双周赛 |
-| 3209 | [子数组按位与值为 K 的数目](/solution/3200-3299/3209.Number%20of%20Subarrays%20With%20AND%20Value%20of%20K/README.md) | | 困难 | 第 134 场双周赛 |
-| 3210 | [找出加密后的字符串](/solution/3200-3299/3210.Find%20the%20Encrypted%20String/README.md) | | 简单 | 第 405 场周赛 |
-| 3211 | [生成不含相邻零的二进制字符串](/solution/3200-3299/3211.Generate%20Binary%20Strings%20Without%20Adjacent%20Zeros/README.md) | | 中等 | 第 405 场周赛 |
-| 3212 | [统计 X 和 Y 频数相等的子矩阵数量](/solution/3200-3299/3212.Count%20Submatrices%20With%20Equal%20Frequency%20of%20X%20and%20Y/README.md) | | 中等 | 第 405 场周赛 |
-| 3213 | [最小代价构造字符串](/solution/3200-3299/3213.Construct%20String%20with%20Minimum%20Cost/README.md) | | 困难 | 第 405 场周赛 |
-| 3214 | [Year on Year Growth Rate](/solution/3200-3299/3214.Year%20on%20Year%20Growth%20Rate/README.md) | `数据库` | 困难 | 🔒 |
+| 3205 | [最大数组跳跃得分 I](/solution/3200-3299/3205.Maximum%20Array%20Hopping%20Score%20I/README.md) | `栈`,`数组`,`动态规划`,`单调栈` | 中等 | 🔒 |
+| 3206 | [交替组 I](/solution/3200-3299/3206.Alternating%20Groups%20I/README.md) | `数组`,`滑动窗口` | 简单 | 第 134 场双周赛 |
+| 3207 | [与敌人战斗后的最大分数](/solution/3200-3299/3207.Maximum%20Points%20After%20Enemy%20Battles/README.md) | `贪心`,`数组` | 中等 | 第 134 场双周赛 |
+| 3208 | [交替组 II](/solution/3200-3299/3208.Alternating%20Groups%20II/README.md) | `数组`,`滑动窗口` | 中等 | 第 134 场双周赛 |
+| 3209 | [子数组按位与值为 K 的数目](/solution/3200-3299/3209.Number%20of%20Subarrays%20With%20AND%20Value%20of%20K/README.md) | `位运算`,`线段树`,`数组`,`二分查找` | 困难 | 第 134 场双周赛 |
+| 3210 | [找出加密后的字符串](/solution/3200-3299/3210.Find%20the%20Encrypted%20String/README.md) | `字符串` | 简单 | 第 405 场周赛 |
+| 3211 | [生成不含相邻零的二进制字符串](/solution/3200-3299/3211.Generate%20Binary%20Strings%20Without%20Adjacent%20Zeros/README.md) | `位运算`,`递归`,`字符串` | 中等 | 第 405 场周赛 |
+| 3212 | [统计 X 和 Y 频数相等的子矩阵数量](/solution/3200-3299/3212.Count%20Submatrices%20With%20Equal%20Frequency%20of%20X%20and%20Y/README.md) | `数组`,`矩阵`,`前缀和` | 中等 | 第 405 场周赛 |
+| 3213 | [最小代价构造字符串](/solution/3200-3299/3213.Construct%20String%20with%20Minimum%20Cost/README.md) | `数组`,`字符串`,`动态规划`,`后缀数组` | 困难 | 第 405 场周赛 |
+| 3214 | [同比增长率](/solution/3200-3299/3214.Year%20on%20Year%20Growth%20Rate/README.md) | `数据库` | 困难 | 🔒 |
## 版权
diff --git a/solution/README_EN.md b/solution/README_EN.md
index 260f99c762067..b4e4e0f9e97cb 100644
--- a/solution/README_EN.md
+++ b/solution/README_EN.md
@@ -3213,15 +3213,15 @@ Press Control + F(or Command + F on
| 3202 | [Find the Maximum Length of Valid Subsequence II](/solution/3200-3299/3202.Find%20the%20Maximum%20Length%20of%20Valid%20Subsequence%20II/README_EN.md) | `Array`,`Dynamic Programming` | Medium | Weekly Contest 404 |
| 3203 | [Find Minimum Diameter After Merging Two Trees](/solution/3200-3299/3203.Find%20Minimum%20Diameter%20After%20Merging%20Two%20Trees/README_EN.md) | `Tree`,`Depth-First Search`,`Breadth-First Search`,`Graph` | Hard | Weekly Contest 404 |
| 3204 | [Bitwise User Permissions Analysis](/solution/3200-3299/3204.Bitwise%20User%20Permissions%20Analysis/README_EN.md) | `Database` | Medium | 🔒 |
-| 3205 | [Maximum Array Hopping Score I](/solution/3200-3299/3205.Maximum%20Array%20Hopping%20Score%20I/README_EN.md) | | Medium | 🔒 |
-| 3206 | [Alternating Groups I](/solution/3200-3299/3206.Alternating%20Groups%20I/README_EN.md) | | Easy | Biweekly Contest 134 |
-| 3207 | [Maximum Points After Enemy Battles](/solution/3200-3299/3207.Maximum%20Points%20After%20Enemy%20Battles/README_EN.md) | | Medium | Biweekly Contest 134 |
-| 3208 | [Alternating Groups II](/solution/3200-3299/3208.Alternating%20Groups%20II/README_EN.md) | | Medium | Biweekly Contest 134 |
-| 3209 | [Number of Subarrays With AND Value of K](/solution/3200-3299/3209.Number%20of%20Subarrays%20With%20AND%20Value%20of%20K/README_EN.md) | | Hard | Biweekly Contest 134 |
-| 3210 | [Find the Encrypted String](/solution/3200-3299/3210.Find%20the%20Encrypted%20String/README_EN.md) | | Easy | Weekly Contest 405 |
-| 3211 | [Generate Binary Strings Without Adjacent Zeros](/solution/3200-3299/3211.Generate%20Binary%20Strings%20Without%20Adjacent%20Zeros/README_EN.md) | | Medium | Weekly Contest 405 |
-| 3212 | [Count Submatrices With Equal Frequency of X and Y](/solution/3200-3299/3212.Count%20Submatrices%20With%20Equal%20Frequency%20of%20X%20and%20Y/README_EN.md) | | Medium | Weekly Contest 405 |
-| 3213 | [Construct String with Minimum Cost](/solution/3200-3299/3213.Construct%20String%20with%20Minimum%20Cost/README_EN.md) | | Hard | Weekly Contest 405 |
+| 3205 | [Maximum Array Hopping Score I](/solution/3200-3299/3205.Maximum%20Array%20Hopping%20Score%20I/README_EN.md) | `Stack`,`Array`,`Dynamic Programming`,`Monotonic Stack` | Medium | 🔒 |
+| 3206 | [Alternating Groups I](/solution/3200-3299/3206.Alternating%20Groups%20I/README_EN.md) | `Array`,`Sliding Window` | Easy | Biweekly Contest 134 |
+| 3207 | [Maximum Points After Enemy Battles](/solution/3200-3299/3207.Maximum%20Points%20After%20Enemy%20Battles/README_EN.md) | `Greedy`,`Array` | Medium | Biweekly Contest 134 |
+| 3208 | [Alternating Groups II](/solution/3200-3299/3208.Alternating%20Groups%20II/README_EN.md) | `Array`,`Sliding Window` | Medium | Biweekly Contest 134 |
+| 3209 | [Number of Subarrays With AND Value of K](/solution/3200-3299/3209.Number%20of%20Subarrays%20With%20AND%20Value%20of%20K/README_EN.md) | `Bit Manipulation`,`Segment Tree`,`Array`,`Binary Search` | Hard | Biweekly Contest 134 |
+| 3210 | [Find the Encrypted String](/solution/3200-3299/3210.Find%20the%20Encrypted%20String/README_EN.md) | `String` | Easy | Weekly Contest 405 |
+| 3211 | [Generate Binary Strings Without Adjacent Zeros](/solution/3200-3299/3211.Generate%20Binary%20Strings%20Without%20Adjacent%20Zeros/README_EN.md) | `Bit Manipulation`,`Recursion`,`String` | Medium | Weekly Contest 405 |
+| 3212 | [Count Submatrices With Equal Frequency of X and Y](/solution/3200-3299/3212.Count%20Submatrices%20With%20Equal%20Frequency%20of%20X%20and%20Y/README_EN.md) | `Array`,`Matrix`,`Prefix Sum` | Medium | Weekly Contest 405 |
+| 3213 | [Construct String with Minimum Cost](/solution/3200-3299/3213.Construct%20String%20with%20Minimum%20Cost/README_EN.md) | `Array`,`String`,`Dynamic Programming`,`Suffix Array` | Hard | Weekly Contest 405 |
| 3214 | [Year on Year Growth Rate](/solution/3200-3299/3214.Year%20on%20Year%20Growth%20Rate/README_EN.md) | `Database` | Hard | 🔒 |
## Copyright