diff --git a/动态规划系列/动态规划之KMP字符匹配算法.md b/动态规划系列/动态规划之KMP字符匹配算法.md
index c757fff..a0cc4ce 100644
--- a/动态规划系列/动态规划之KMP字符匹配算法.md
+++ b/动态规划系列/动态规划之KMP字符匹配算法.md
@@ -428,5 +428,7 @@ KMP 算法也就是动态规划那点事,我们的公众号文章目录有一
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/动态规划系列/动态规划之博弈问题.md b/动态规划系列/动态规划之博弈问题.md
index 9b0c22f..90615ba 100644
--- a/动态规划系列/动态规划之博弈问题.md
+++ b/动态规划系列/动态规划之博弈问题.md
@@ -212,5 +212,78 @@ int stoneGame(int[] piles) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
+
+
+
+
+
+python3版本
+
+由[SCUHZS](https://github.com/brucecat)提供
+
+这里采取的是三维的做法
+
+```python
+class Solution:
+ def stoneGame(self, piles: List[int]) -> bool:
+ n = len(piles)
+
+ # 初始化一个n*n的矩阵 dp数组
+ dp = [[None] * n for i in range(0, n)]
+
+ # 在三角区域填充
+ for i in range(n):
+ for j in range(i, n):
+ dp[i][j] = [0, 0]
+
+ # 填入base case
+ for i in range(0, n):
+ dp[i][i][0] = piles[i]
+ dp[i][i][1] = 0
+
+ # 斜着遍历数组
+ for l in range(2, n + 1):
+ for i in range(0, n-l+1):
+ j = l + i - 1
+
+
+ # 先手选择最左边或最右边的分数
+ left = piles[i] + dp[i + 1][j][1]
+ right = piles[j] + dp[i][j - 1][1]
+
+ # 套用状态转移方程
+ if left > right:
+ dp[i][j][0] = left
+ dp[i][j][1] = dp[i + 1][j][0]
+ else:
+ dp[i][j][0] = right
+ dp[i][j][1] = dp[i][j - 1][0]
+
+ res = dp[0][n - 1]
+
+ return res[0] - res[1] > 0
+
+```
+
+
+
+压缩成一维数组,以减小空间复杂度,做法如下。
+
+```python
+class Solution:
+ def stoneGame(self, piles: List[int]) -> bool:
+ dp = piles.copy()
+
+ for i in range(len(piles) - 1, -1, -1): # 从下往上遍历
+ for j in range(i, len(piles)): # 从前往后遍历
+ dp[j] = max(piles[i] - dp[j], piles[j] - dp[j - 1]) # 计算之后覆盖一维数组的对应位置
+
+ return dp[len(piles) - 1] > 0
+
+
+```
+
diff --git a/动态规划系列/动态规划之四键键盘.md b/动态规划系列/动态规划之四键键盘.md
index 6dc1c93..e2641f5 100644
--- a/动态规划系列/动态规划之四键键盘.md
+++ b/动态规划系列/动态规划之四键键盘.md
@@ -197,5 +197,7 @@ def dp(n, a_num, copy):
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/动态规划系列/动态规划之正则表达.md b/动态规划系列/动态规划之正则表达.md
index ba289f5..9190afc 100644
--- a/动态规划系列/动态规划之正则表达.md
+++ b/动态规划系列/动态规划之正则表达.md
@@ -292,6 +292,7 @@ bool dp(string& s, int i, string& p, int j) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+======其他语言代码======
diff --git a/动态规划系列/动态规划设计:最长递增子序列.md b/动态规划系列/动态规划设计:最长递增子序列.md
index a5e0a86..c905a60 100644
--- a/动态规划系列/动态规划设计:最长递增子序列.md
+++ b/动态规划系列/动态规划设计:最长递增子序列.md
@@ -212,5 +212,7 @@ public int lengthOfLIS(int[] nums) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/动态规划系列/动态规划详解进阶.md b/动态规划系列/动态规划详解进阶.md
index 0181c18..bff29f4 100644
--- a/动态规划系列/动态规划详解进阶.md
+++ b/动态规划系列/动态规划详解进阶.md
@@ -363,5 +363,7 @@ PS:为啥 `dp` 数组初始化为 `amount + 1` 呢,因为凑成 `amount` 金
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/动态规划系列/团灭股票问题.md b/动态规划系列/团灭股票问题.md
index b00b96c..be2b463 100644
--- a/动态规划系列/团灭股票问题.md
+++ b/动态规划系列/团灭股票问题.md
@@ -425,5 +425,7 @@ int maxProfit_k_any(int max_k, int[] prices) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/动态规划系列/子序列问题模板.md b/动态规划系列/子序列问题模板.md
index 60d836f..c7a3d5a 100644
--- a/动态规划系列/子序列问题模板.md
+++ b/动态规划系列/子序列问题模板.md
@@ -1,6 +1,6 @@
# 动态规划之子序列问题解题模板
-**学好算法全靠套路,认准 labuladong 就够了**。
+
@@ -171,5 +171,7 @@ int longestPalindromeSubseq(string s) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,labuladong 带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/动态规划系列/抢房子.md b/动态规划系列/抢房子.md
index ed50060..d2c3f0f 100644
--- a/动态规划系列/抢房子.md
+++ b/动态规划系列/抢房子.md
@@ -1,7 +1,5 @@
# 团灭 LeetCode 打家劫舍问题
-**学好算法全靠套路,认准 labuladong 就够了**。
-
@@ -257,8 +255,10 @@ int[] dp(TreeNode root) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
[Shantom](https://github.com/Shantom) 提供 198. House Robber I Python3 解法代码:
```Python
diff --git a/动态规划系列/最优子结构.md b/动态规划系列/最优子结构.md
index 8ca9dc1..2dc21f2 100644
--- a/动态规划系列/最优子结构.md
+++ b/动态规划系列/最优子结构.md
@@ -1,6 +1,6 @@
# 动态规划答疑篇
-**学好算法全靠套路,认准 labuladong 就够了**。
+
@@ -154,5 +154,7 @@ for (int i = 1; i < m; i++)
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/动态规划系列/最长公共子序列.md b/动态规划系列/最长公共子序列.md
index d158110..bee8947 100644
--- a/动态规划系列/最长公共子序列.md
+++ b/动态规划系列/最长公共子序列.md
@@ -144,5 +144,7 @@ else:
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/动态规划系列/编辑距离.md b/动态规划系列/编辑距离.md
index 27b8c22..8ba18e4 100644
--- a/动态规划系列/编辑距离.md
+++ b/动态规划系列/编辑距离.md
@@ -288,5 +288,7 @@ class Node {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/动态规划系列/贪心算法之区间调度问题.md b/动态规划系列/贪心算法之区间调度问题.md
index 38f5445..70e27fc 100644
--- a/动态规划系列/贪心算法之区间调度问题.md
+++ b/动态规划系列/贪心算法之区间调度问题.md
@@ -155,5 +155,7 @@ int findMinArrowShots(int[][] intvs) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/动态规划系列/高楼扔鸡蛋进阶.md b/动态规划系列/高楼扔鸡蛋进阶.md
index 3211f7c..ec5e838 100644
--- a/动态规划系列/高楼扔鸡蛋进阶.md
+++ b/动态规划系列/高楼扔鸡蛋进阶.md
@@ -292,5 +292,7 @@ while (lo < hi) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/动态规划系列/高楼扔鸡蛋问题.md b/动态规划系列/高楼扔鸡蛋问题.md
index 8b80075..70c63a0 100644
--- a/动态规划系列/高楼扔鸡蛋问题.md
+++ b/动态规划系列/高楼扔鸡蛋问题.md
@@ -1,6 +1,6 @@
# 经典动态规划问题:高楼扔鸡蛋
-**学好算法全靠套路,认准 labuladong 就够了**。
+
@@ -258,5 +258,7 @@ def superEggDrop(self, K: int, N: int) -> int:
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/技术/linuxshell.md b/技术/linuxshell.md
index 2f3f3a6..41e5810 100644
--- a/技术/linuxshell.md
+++ b/技术/linuxshell.md
@@ -154,5 +154,7 @@ $ sudo /home/fdl/bin/connect.sh
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/技术/linux进程.md b/技术/linux进程.md
index 7b400c1..d0a9d8a 100644
--- a/技术/linux进程.md
+++ b/技术/linux进程.md
@@ -138,5 +138,7 @@ $ cmd1 | cmd2 | cmd3
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/技术/redis入侵.md b/技术/redis入侵.md
index 67cb321..36d18f0 100644
--- a/技术/redis入侵.md
+++ b/技术/redis入侵.md
@@ -103,5 +103,7 @@ Redis 监听的默认端口是 6379,我们设置它接收网卡 127.0.0.1 的
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
-
\ No newline at end of file
+
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/技术/session和cookie.md b/技术/session和cookie.md
index 85b4626..7fb7cb4 100644
--- a/技术/session和cookie.md
+++ b/技术/session和cookie.md
@@ -152,5 +152,7 @@ https://github.com/astaxie/build-web-application-with-golang
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
-
\ No newline at end of file
+
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/技术/在线练习平台.md b/技术/在线练习平台.md
index 7aaaf46..28f21ff 100644
--- a/技术/在线练习平台.md
+++ b/技术/在线练习平台.md
@@ -116,5 +116,7 @@ https://sqlzoo.net/
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
-
\ No newline at end of file
+
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/技术/密码技术.md b/技术/密码技术.md
index 8a88315..011352c 100644
--- a/技术/密码技术.md
+++ b/技术/密码技术.md
@@ -199,7 +199,8 @@ HTTPS 协议中的 SSL/TLS 安全层会组合使用以上几种加密方式,**
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+======其他语言代码======
[test ad](https://labuladong.gitbook.io/algo)
\ No newline at end of file
diff --git a/数据结构系列/二叉堆详解实现优先级队列.md b/数据结构系列/二叉堆详解实现优先级队列.md
index 99e0b06..5353625 100644
--- a/数据结构系列/二叉堆详解实现优先级队列.md
+++ b/数据结构系列/二叉堆详解实现优先级队列.md
@@ -236,5 +236,7 @@ public Key delMax() {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/数据结构系列/二叉搜索树操作集锦.md b/数据结构系列/二叉搜索树操作集锦.md
index 6c05626..801b8fb 100644
--- a/数据结构系列/二叉搜索树操作集锦.md
+++ b/数据结构系列/二叉搜索树操作集锦.md
@@ -307,5 +307,7 @@ void BST(TreeNode root, int target) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/数据结构系列/单调栈.md b/数据结构系列/单调栈.md
index 19600de..fca0ca8 100644
--- a/数据结构系列/单调栈.md
+++ b/数据结构系列/单调栈.md
@@ -178,5 +178,7 @@ vector nextGreaterElements(vector& nums) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
-
\ No newline at end of file
+
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/数据结构系列/单调队列.md b/数据结构系列/单调队列.md
index e30ddda..eb298a1 100644
--- a/数据结构系列/单调队列.md
+++ b/数据结构系列/单调队列.md
@@ -207,5 +207,7 @@ vector maxSlidingWindow(vector& nums, int k) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/数据结构系列/实现计算器.md b/数据结构系列/实现计算器.md
index dcebc03..2b980f7 100644
--- a/数据结构系列/实现计算器.md
+++ b/数据结构系列/实现计算器.md
@@ -1,6 +1,6 @@
# 拆解复杂问题:实现计算器
-**学好算法全靠套路,认准 labuladong 就够了**。
+
@@ -303,5 +303,7 @@ def calculate(s: str) -> int:
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/数据结构系列/设计Twitter.md b/数据结构系列/设计Twitter.md
index e5cee44..399fbbb 100644
--- a/数据结构系列/设计Twitter.md
+++ b/数据结构系列/设计Twitter.md
@@ -299,5 +299,7 @@ PS:本文前两张图片和 GIF 是我第一次尝试用平板的绘图软件
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/数据结构系列/递归反转链表的一部分.md b/数据结构系列/递归反转链表的一部分.md
index 7b68d6f..830e503 100644
--- a/数据结构系列/递归反转链表的一部分.md
+++ b/数据结构系列/递归反转链表的一部分.md
@@ -215,5 +215,7 @@ ListNode reverseBetween(ListNode head, int m, int n) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/数据结构系列/队列实现栈栈实现队列.md b/数据结构系列/队列实现栈栈实现队列.md
index dd3b37c..20b6a8e 100644
--- a/数据结构系列/队列实现栈栈实现队列.md
+++ b/数据结构系列/队列实现栈栈实现队列.md
@@ -227,5 +227,7 @@ public boolean empty() {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/FloodFill算法详解及应用.md b/算法思维系列/FloodFill算法详解及应用.md
index 79c5ac0..1cf2dbf 100644
--- a/算法思维系列/FloodFill算法详解及应用.md
+++ b/算法思维系列/FloodFill算法详解及应用.md
@@ -236,5 +236,7 @@ int fill(int[][] image, int x, int y,
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/UnionFind算法应用.md b/算法思维系列/UnionFind算法应用.md
index c4ebebc..fef484a 100644
--- a/算法思维系列/UnionFind算法应用.md
+++ b/算法思维系列/UnionFind算法应用.md
@@ -247,5 +247,7 @@ boolean equationsPossible(String[] equations) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/UnionFind算法详解.md b/算法思维系列/UnionFind算法详解.md
index 5ea238f..977d8ba 100644
--- a/算法思维系列/UnionFind算法详解.md
+++ b/算法思维系列/UnionFind算法详解.md
@@ -314,5 +314,7 @@ Union-Find 算法的复杂度可以这样分析:构造函数初始化数据结
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/twoSum问题的核心思想.md b/算法思维系列/twoSum问题的核心思想.md
index 1d2832b..327fc23 100644
--- a/算法思维系列/twoSum问题的核心思想.md
+++ b/算法思维系列/twoSum问题的核心思想.md
@@ -182,5 +182,7 @@ int[] twoSum(int[] nums, int target) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/为什么推荐算法4.md b/算法思维系列/为什么推荐算法4.md
index 3798b38..8792b9c 100644
--- a/算法思维系列/为什么推荐算法4.md
+++ b/算法思维系列/为什么推荐算法4.md
@@ -98,5 +98,7 @@
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/二分查找详解.md b/算法思维系列/二分查找详解.md
index f055e00..502962f 100644
--- a/算法思维系列/二分查找详解.md
+++ b/算法思维系列/二分查找详解.md
@@ -505,5 +505,7 @@ int right_bound(int[] nums, int target) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/信封嵌套问题.md b/算法思维系列/信封嵌套问题.md
index eed4b72..bd6997f 100644
--- a/算法思维系列/信封嵌套问题.md
+++ b/算法思维系列/信封嵌套问题.md
@@ -132,5 +132,7 @@ public int lengthOfLIS(int[] nums) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/几个反直觉的概率问题.md b/算法思维系列/几个反直觉的概率问题.md
index 185e7a2..767a11f 100644
--- a/算法思维系列/几个反直觉的概率问题.md
+++ b/算法思维系列/几个反直觉的概率问题.md
@@ -138,5 +138,7 @@
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/前缀和技巧.md b/算法思维系列/前缀和技巧.md
index a5de618..ef96986 100644
--- a/算法思维系列/前缀和技巧.md
+++ b/算法思维系列/前缀和技巧.md
@@ -156,5 +156,7 @@ for (int i = 1; i < count.length; i++)
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/区间交集问题.md b/算法思维系列/区间交集问题.md
index d40a4ea..b2ca238 100644
--- a/算法思维系列/区间交集问题.md
+++ b/算法思维系列/区间交集问题.md
@@ -130,5 +130,7 @@ def intervalIntersection(A, B):
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/区间调度问题之区间合并.md b/算法思维系列/区间调度问题之区间合并.md
index 3a12c58..e4ca2dc 100644
--- a/算法思维系列/区间调度问题之区间合并.md
+++ b/算法思维系列/区间调度问题之区间合并.md
@@ -88,5 +88,7 @@ def merge(intervals):
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/双指针技巧.md b/算法思维系列/双指针技巧.md
index 9859ea3..cf5227d 100644
--- a/算法思维系列/双指针技巧.md
+++ b/算法思维系列/双指针技巧.md
@@ -227,5 +227,7 @@ void reverse(int[] nums) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/回溯算法详解修订版.md b/算法思维系列/回溯算法详解修订版.md
index a614f1f..07e1bfb 100644
--- a/算法思维系列/回溯算法详解修订版.md
+++ b/算法思维系列/回溯算法详解修订版.md
@@ -306,5 +306,7 @@ def backtrack(...):
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/字符串乘法.md b/算法思维系列/字符串乘法.md
index 26ccfe4..0273744 100644
--- a/算法思维系列/字符串乘法.md
+++ b/算法思维系列/字符串乘法.md
@@ -98,5 +98,7 @@ string multiply(string num1, string num2) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
-
\ No newline at end of file
+
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/学习数据结构和算法的高效方法.md b/算法思维系列/学习数据结构和算法的高效方法.md
index 2ee5b6b..a5beaf3 100644
--- a/算法思维系列/学习数据结构和算法的高效方法.md
+++ b/算法思维系列/学习数据结构和算法的高效方法.md
@@ -306,5 +306,7 @@ N 叉树的遍历框架,找出来了把~你说,树这种结构重不重要
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/常用的位操作.md b/算法思维系列/常用的位操作.md
index a35a3a3..f5b5771 100644
--- a/算法思维系列/常用的位操作.md
+++ b/算法思维系列/常用的位操作.md
@@ -169,5 +169,7 @@ http://graphics.stanford.edu/~seander/bithacks.html#ReverseParallel
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/洗牌算法.md b/算法思维系列/洗牌算法.md
index 5aa1768..463a7f1 100644
--- a/算法思维系列/洗牌算法.md
+++ b/算法思维系列/洗牌算法.md
@@ -208,5 +208,7 @@ for (int feq : count)
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/滑动窗口技巧.md b/算法思维系列/滑动窗口技巧.md
index 581aca5..e65a104 100644
--- a/算法思维系列/滑动窗口技巧.md
+++ b/算法思维系列/滑动窗口技巧.md
@@ -1,4 +1,31 @@
-# 滑动窗口技巧
+# 滑动窗口算法框架
+
+
+
+
+
+
+
+
+
+
+**最新消息:关注公众号参与活动,有机会成为 [70k star 算法仓库](https://github.com/labuladong/fucking-algorithm) 的贡献者,机不可失时不再来**!
+
+相关推荐:
+* [东哥吃葡萄时竟然吃出一道算法题!](../高频面试系列/吃葡萄.md)
+* [如何寻找缺失的元素](../高频面试系列/消失的元素.md)
+
+读完本文,你不仅学会了算法套路,还可以顺便去 LeetCode 上拿下如下题目:
+
+[76.最小覆盖子串](https://leetcode-cn.com/problems/minimum-window-substring)
+
+[567.字符串的排列](https://leetcode-cn.com/problems/permutation-in-string)
+
+[438.找到字符串中所有字母异位词](https://leetcode-cn.com/problems/find-all-anagrams-in-a-string)
+
+[3.无重复字符的最长子串](https://leetcode-cn.com/problems/longest-substring-without-repeating-characters)
+
+**-----------**
本文详解「滑动窗口」这种高级双指针技巧的算法框架,带你秒杀几道高难度的子字符串匹配问题。
@@ -334,8 +361,14 @@ class Solution:
return s[start:start+min_len] if min_len != float("Inf") else ""
```
-[上一篇:二分查找解题框架](https://labuladong.gitbook.io/algo)
+**_____________**
-[下一篇:双指针技巧解题框架](https://labuladong.gitbook.io/algo)
+**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。
-[目录](https://labuladong.gitbook.io/algo#目录)
+**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
+
+
+
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/烧饼排序.md b/算法思维系列/烧饼排序.md
index 5e4e4df..513cbdc 100644
--- a/算法思维系列/烧饼排序.md
+++ b/算法思维系列/烧饼排序.md
@@ -146,5 +146,7 @@ void reverse(int[] arr, int i, int j) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/算法学习之路.md b/算法思维系列/算法学习之路.md
index cd26588..0446ffa 100644
--- a/算法思维系列/算法学习之路.md
+++ b/算法思维系列/算法学习之路.md
@@ -101,5 +101,7 @@ PS:**如果有的英文题目实在看不懂,有个小技巧**,你在题
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/算法思维系列/递归详解.md b/算法思维系列/递归详解.md
index 4a0b09f..b9a9928 100644
--- a/算法思维系列/递归详解.md
+++ b/算法思维系列/递归详解.md
@@ -272,5 +272,7 @@ https://leetcode.com/tag/divide-and-conquer/
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/LRU算法.md b/高频面试系列/LRU算法.md
index 8bdcc69..b9ca311 100644
--- a/高频面试系列/LRU算法.md
+++ b/高频面试系列/LRU算法.md
@@ -343,5 +343,7 @@ class LRUCache {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/koko偷香蕉.md b/高频面试系列/koko偷香蕉.md
index c4cb830..cc880dd 100644
--- a/高频面试系列/koko偷香蕉.md
+++ b/高频面试系列/koko偷香蕉.md
@@ -166,5 +166,7 @@ for (int i = 0; i < n; i++)
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/k个一组反转链表.md b/高频面试系列/k个一组反转链表.md
index 7509480..83fbd98 100644
--- a/高频面试系列/k个一组反转链表.md
+++ b/高频面试系列/k个一组反转链表.md
@@ -153,5 +153,7 @@ ListNode reverseKGroup(ListNode head, int k) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/一行代码解决的智力题.md b/高频面试系列/一行代码解决的智力题.md
index 4ca0b6d..1d17782 100644
--- a/高频面试系列/一行代码解决的智力题.md
+++ b/高频面试系列/一行代码解决的智力题.md
@@ -146,5 +146,7 @@ int bulbSwitch(int n) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/二分查找判定子序列.md b/高频面试系列/二分查找判定子序列.md
index 797c098..c71e65f 100644
--- a/高频面试系列/二分查找判定子序列.md
+++ b/高频面试系列/二分查找判定子序列.md
@@ -165,5 +165,7 @@ boolean isSubsequence(String s, String t) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/判断回文链表.md b/高频面试系列/判断回文链表.md
index d25823d..3e24068 100644
--- a/高频面试系列/判断回文链表.md
+++ b/高频面试系列/判断回文链表.md
@@ -234,5 +234,7 @@ p.next = reverse(q);
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/合法括号判定.md b/高频面试系列/合法括号判定.md
index ef9cd34..32239bd 100644
--- a/高频面试系列/合法括号判定.md
+++ b/高频面试系列/合法括号判定.md
@@ -109,5 +109,7 @@ char leftOf(char c) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/如何去除有序数组的重复元素.md b/高频面试系列/如何去除有序数组的重复元素.md
index e159228..1cdec24 100644
--- a/高频面试系列/如何去除有序数组的重复元素.md
+++ b/高频面试系列/如何去除有序数组的重复元素.md
@@ -108,8 +108,14 @@ def deleteDuplicates(self, head: ListNode) -> ListNode:
return head
```
-[上一篇:如何高效解决接雨水问题](https://labuladong.gitbook.io/algo)
+**_____________**
-[下一篇:如何寻找最长回文子串](https://labuladong.gitbook.io/algo)
+**刷算法,学套路,认准 labuladong,公众号和 [在线电子书](https://labuladong.gitbook.io/algo) 持续更新最新文章**。
-[目录](https://labuladong.gitbook.io/algo#目录)
+**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
+
+
+
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/子集排列组合.md b/高频面试系列/子集排列组合.md
index 0d5f905..04fe3bb 100644
--- a/高频面试系列/子集排列组合.md
+++ b/高频面试系列/子集排列组合.md
@@ -1,6 +1,6 @@
# 回溯算法团灭子集、排列、组合问题
-**学好算法全靠套路,认准 labuladong 就够了**。
+
@@ -281,5 +281,7 @@ void backtrack(int[] nums, LinkedList track) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/座位调度.md b/高频面试系列/座位调度.md
index f2b0306..21e45ef 100644
--- a/高频面试系列/座位调度.md
+++ b/高频面试系列/座位调度.md
@@ -230,5 +230,7 @@ private int distance(int[] intv) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/打印素数.md b/高频面试系列/打印素数.md
index 6ecb9c4..3a58074 100644
--- a/高频面试系列/打印素数.md
+++ b/高频面试系列/打印素数.md
@@ -175,5 +175,44 @@ int countPrimes(int n) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
+
+C++解法:
+采用的算法是埃拉托斯特尼筛法
+埃拉托斯特尼筛法的具体内容就是:**要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数。**
+同时考虑到大于2的偶数都不是素数,所以可以进一步优化成:**要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的奇数倍剔除,剩下的奇数就是素数。**
+此算法其实就是上面的Java解法所采用的。
+
+这里提供C++的代码:
+```C++
+class Solution {
+public:
+ int countPrimes(int n) {
+ int res = 0;
+ bool prime[n+1];
+ for(int i = 0; i < n; ++i)
+ prime[i] = true;
+
+ for(int i = 2; i <= sqrt(n); ++i) //计数过程
+ { //外循环优化,因为判断一个数是否为质数只需要整除到sqrt(n),反推亦然
+ if(prime[i])
+ {
+ for(int j = i * i; j < n; j += i) //内循环优化,i*i之前的比如i*2,i*3等,在之前的循环中已经验证了
+ {
+ prime[j] = false;
+ }
+ }
+ }
+ for (int i = 2; i < n; ++i)
+ if (prime[i]) res++; //最后遍历统计一遍,存入res
+
+ return res;
+ }
+};
+```
+
+
+
diff --git a/高频面试系列/接雨水.md b/高频面试系列/接雨水.md
index 0b3e1e0..e1fd625 100644
--- a/高频面试系列/接雨水.md
+++ b/高频面试系列/接雨水.md
@@ -208,5 +208,7 @@ if (l_max < r_max) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/最长回文子串.md b/高频面试系列/最长回文子串.md
index 5fd2691..9f0f37f 100644
--- a/高频面试系列/最长回文子串.md
+++ b/高频面试系列/最长回文子串.md
@@ -1,6 +1,6 @@
# 如何寻找最长回文子串
-**学好算法全靠套路,认准 labuladong 就够了**。
+
@@ -128,5 +128,7 @@ string longestPalindrome(string s) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/水塘抽样.md b/高频面试系列/水塘抽样.md
index a9cb9ec..fe0dd09 100644
--- a/高频面试系列/水塘抽样.md
+++ b/高频面试系列/水塘抽样.md
@@ -145,5 +145,7 @@ $$ -->
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/消失的元素.md b/高频面试系列/消失的元素.md
index 843e115..844b5cb 100644
--- a/高频面试系列/消失的元素.md
+++ b/高频面试系列/消失的元素.md
@@ -129,5 +129,7 @@ public int missingNumber(int[] nums) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file
diff --git a/高频面试系列/缺失和重复的元素.md b/高频面试系列/缺失和重复的元素.md
index 1175788..06e554f 100644
--- a/高频面试系列/缺失和重复的元素.md
+++ b/高频面试系列/缺失和重复的元素.md
@@ -136,5 +136,7 @@ vector findErrorNums(vector& nums) {
**本小抄即将出版,微信扫码关注公众号,后台回复「小抄」限时免费获取,回复「进群」可进刷题群一起刷题,带你搞定 LeetCode**。
-
+
+
+======其他语言代码======
\ No newline at end of file