From c6cf76bc00dfcb53a89115fe58ce0dde99390a53 Mon Sep 17 00:00:00 2001
From: jinbudaily <18336218010@163.com>
Date: Fri, 28 Jul 2023 10:31:10 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E6=8E=92=E7=89=88?=
=?UTF-8?q?=E6=A0=BC=E5=BC=8F=E4=BF=AE=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
problems/0001.两数之和.md | 3 +-
problems/0027.移除元素.md | 9 ++-
problems/0053.最大子序和.md | 14 ++--
problems/0054.螺旋矩阵.md | 2 +-
problems/0059.螺旋矩阵II.md | 2 +-
problems/0062.不同路径.md | 4 +-
problems/0063.不同路径II.md | 4 +-
problems/0090.子集II.md | 1 +
problems/0096.不同的二叉搜索树.md | 4 +-
problems/0151.翻转字符串里的单词.md | 3 +-
.../0188.买卖股票的最佳时机IV.md | 1 -
problems/0200.岛屿数量.广搜版.md | 2 +-
problems/0283.移动零.md | 1 +
problems/0332.重新安排行程.md | 3 +-
problems/0343.整数拆分.md | 5 +-
problems/0416.分割等和子集.md | 3 +-
problems/0503.下一个更大元素II.md | 1 -
problems/0617.合并二叉树.md | 3 +-
problems/0695.岛屿的最大面积.md | 23 +++---
problems/0704.二分查找.md | 5 +-
...买卖股票的最佳时机含手续费.md | 5 +-
problems/0797.所有可能的路径.md | 11 +--
problems/0827.最大人工岛.md | 7 +-
problems/0844.比较含退格的字符串.md | 7 +-
.../1791.找出星型图的中心节点.md | 3 +-
.../1971.寻找图中是否存在路径.md | 1 +
...编辑距离,卡尔做了三步铺垫.md | 1 -
.../剑指Offer58-II.左旋转字符串.md | 5 +-
problems/动态规划总结篇.md | 3 +-
.../周总结/20201030回溯周末总结.md | 2 +
problems/栈与队列总结.md | 1 +
...高重建队列(vector原理讲解).md | 3 +-
problems/算法模板.md | 73 ++++++++++---------
problems/背包理论基础01背包-2.md | 2 +
problems/链表总结篇.md | 1 +
35 files changed, 116 insertions(+), 102 deletions(-)
diff --git a/problems/0001.两数之和.md b/problems/0001.两数之和.md
index bf1e173e..712bc3f0 100644
--- a/problems/0001.两数之和.md
+++ b/problems/0001.两数之和.md
@@ -318,7 +318,7 @@ function twoSum(nums: number[], target: number): number[] {
};
```
-### php:
+### PhP:
```php
function twoSum(array $nums, int $target): array
@@ -501,3 +501,4 @@ int* twoSum(int* nums, int numsSize, int target, int* returnSize){
+
diff --git a/problems/0027.移除元素.md b/problems/0027.移除元素.md
index ce9eccf0..40ee3a2e 100644
--- a/problems/0027.移除元素.md
+++ b/problems/0027.移除元素.md
@@ -152,10 +152,10 @@ public:
## 相关题目推荐
-* 26.删除排序数组中的重复项
-* 283.移动零
-* 844.比较含退格的字符串
-* 977.有序数组的平方
+* [26.删除排序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/)
+* [283.移动零](https://leetcode.cn/problems/move-zeroes/)
+* [844.比较含退格的字符串](https://leetcode.cn/problems/backspace-string-compare/)
+* [977.有序数组的平方](https://leetcode.cn/problems/squares-of-a-sorted-array/)
## 其他语言版本
@@ -444,3 +444,4 @@ public class Solution {
+
diff --git a/problems/0053.最大子序和.md b/problems/0053.最大子序和.md
index fe4e4ed3..639c54bc 100644
--- a/problems/0053.最大子序和.md
+++ b/problems/0053.最大子序和.md
@@ -16,11 +16,13 @@
- 输出: 6
- 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
-# 视频讲解
+## 算法公开课
-**《代码随想录》算法视频公开课:[贪心算法的巧妙需要慢慢体会!LeetCode:53. 最大子序和](https://www.bilibili.com/video/BV1aY4y1Z7ya),相信结合视频在看本篇题解,更有助于大家对本题的理解**。
+**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[贪心算法的巧妙需要慢慢体会!LeetCode:53. 最大子序和](https://www.bilibili.com/video/BV1aY4y1Z7ya),相信结合视频在看本篇题解,更有助于大家对本题的理解**。
-## 暴力解法
+## 思路
+
+### 暴力解法
暴力解法的思路,第一层 for 就是设置起始位置,第二层 for 循环遍历数组寻找最大值
@@ -48,7 +50,7 @@ public:
以上暴力的解法 C++勉强可以过,其他语言就不确定了。
-## 贪心解法
+### 贪心解法
**贪心贪的是哪里呢?**
@@ -104,7 +106,7 @@ public:
当然题目没有说如果数组为空,应该返回什么,所以数组为空的话返回啥都可以了。
-## 常见误区
+### 常见误区
误区一:
@@ -122,7 +124,7 @@ public:
其实并不会,因为还有一个变量 result 一直在更新 最大的连续和,只要有更大的连续和出现,result 就更新了,那么 result 已经把 4 更新了,后面 连续和变成 3,也不会对最后结果有影响。
-## 动态规划
+### 动态规划
当然本题还可以用动态规划来做,在代码随想录动态规划章节我会详细介绍,如果大家想在想看,可以直接跳转:[动态规划版本详解](https://programmercarl.com/0053.%E6%9C%80%E5%A4%A7%E5%AD%90%E5%BA%8F%E5%92%8C%EF%BC%88%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%EF%BC%89.html#%E6%80%9D%E8%B7%AF)
diff --git a/problems/0054.螺旋矩阵.md b/problems/0054.螺旋矩阵.md
index a38e8237..d855f1a1 100644
--- a/problems/0054.螺旋矩阵.md
+++ b/problems/0054.螺旋矩阵.md
@@ -6,7 +6,7 @@
-## 54.螺旋矩阵
+# 54.螺旋矩阵
[力扣题目链接](https://leetcode.cn/problems/spiral-matrix/)
diff --git a/problems/0059.螺旋矩阵II.md b/problems/0059.螺旋矩阵II.md
index 73e9e4da..78d9385a 100644
--- a/problems/0059.螺旋矩阵II.md
+++ b/problems/0059.螺旋矩阵II.md
@@ -688,7 +688,7 @@ public class Solution {
}
```
-### Ruby#:
+### Ruby:
```ruby
def generate_matrix(n)
result = Array.new(n) { Array.new(n, 0) }
diff --git a/problems/0062.不同路径.md b/problems/0062.不同路径.md
index 5111e30e..985c7575 100644
--- a/problems/0062.不同路径.md
+++ b/problems/0062.不同路径.md
@@ -50,9 +50,9 @@
* 1 <= m, n <= 100
* 题目数据保证答案小于等于 2 * 10^9
-# 算法公开课
+## 算法公开课
-**《代码随想录》算法视频公开课:[动态规划中如何初始化很重要!| LeetCode:62.不同路径](https://www.bilibili.com/video/BV1ve4y1x7Eu/),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
+**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[动态规划中如何初始化很重要!| LeetCode:62.不同路径](https://www.bilibili.com/video/BV1ve4y1x7Eu/),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
## 思路
diff --git a/problems/0063.不同路径II.md b/problems/0063.不同路径II.md
index cb305b41..3d243a7a 100644
--- a/problems/0063.不同路径II.md
+++ b/problems/0063.不同路径II.md
@@ -46,9 +46,9 @@
* 1 <= m, n <= 100
* obstacleGrid[i][j] 为 0 或 1
-# 算法公开课
+## 算法公开课
-**《代码随想录》算法视频公开课:[动态规划,这次遇到障碍了| LeetCode:63. 不同路径 II](https://www.bilibili.com/video/BV1Ld4y1k7c6/),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
+**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[动态规划,这次遇到障碍了| LeetCode:63. 不同路径 II](https://www.bilibili.com/video/BV1Ld4y1k7c6/),相信结合视频再看本篇题解,更有助于大家对本题的理解**。
## 思路
diff --git a/problems/0090.子集II.md b/problems/0090.子集II.md
index 88c8bdad..13080cd9 100644
--- a/problems/0090.子集II.md
+++ b/problems/0090.子集II.md
@@ -3,6 +3,7 @@
参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!
+ # 90.子集II [力扣题目链接](https://leetcode.cn/problems/subsets-ii/) diff --git a/problems/0096.不同的二叉搜索树.md b/problems/0096.不同的二叉搜索树.md index 368a5747..8d58cc5a 100644 --- a/problems/0096.不同的二叉搜索树.md +++ b/problems/0096.不同的二叉搜索树.md @@ -16,9 +16,9 @@  -# 算法公开课 +## 算法公开课 -**《代码随想录》算法视频公开课:[动态规划找到子状态之间的关系很重要!| LeetCode:96.不同的二叉搜索树](https://www.bilibili.com/video/BV1eK411o7QA/),相信结合视频再看本篇题解,更有助于大家对本题的理解**。 +**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[动态规划找到子状态之间的关系很重要!| LeetCode:96.不同的二叉搜索树](https://www.bilibili.com/video/BV1eK411o7QA/),相信结合视频再看本篇题解,更有助于大家对本题的理解**。 ## 思路 diff --git a/problems/0151.翻转字符串里的单词.md b/problems/0151.翻转字符串里的单词.md index 19ccb725..f0ff6746 100644 --- a/problems/0151.翻转字符串里的单词.md +++ b/problems/0151.翻转字符串里的单词.md @@ -433,7 +433,7 @@ class Solution { } ``` -### python: +### Python: (版本一)先删除空白,然后整个反转,最后单词反转。 **因为字符串是不可变类型,所以反转单词的时候,需要将其转换成列表,然后通过join函数再将其转换成列表,所以空间复杂度不是O(1)** @@ -974,4 +974,3 @@ char * reverseWords(char * s){参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!
+ # 283. 移动零:动态规划:一样的套路,再求一次完全平方数 [力扣题目链接](https://leetcode.cn/problems/move-zeroes/) diff --git a/problems/0332.重新安排行程.md b/problems/0332.重新安排行程.md index 3798b48d..2795e313 100644 --- a/problems/0332.重新安排行程.md +++ b/problems/0332.重新安排行程.md @@ -31,7 +31,7 @@ ## 算法公开课 -**如果对回溯算法基础还不了解的话,我还特意录制了一期视频,[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[带你学透回溯算法(理论篇)](https://www.bilibili.com/video/BV1cy4y167mM/)** 可以结合题解和视频一起看,希望对大家理解回溯算法有所帮助。 +**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[带你学透回溯算法(理论篇)](https://www.bilibili.com/video/BV1cy4y167mM/) ,相信结合视频再看本篇题解,更有助于大家对本题的理解。** ## 思路 @@ -793,4 +793,3 @@ impl Solution {参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!
-## 416. 分割等和子集 +# 416. 分割等和子集 [力扣题目链接](https://leetcode.cn/problems/partition-equal-subset-sum/) @@ -730,4 +730,3 @@ object Solution {
-
diff --git a/problems/0827.最大人工岛.md b/problems/0827.最大人工岛.md
index 9112fabd..d7879825 100644
--- a/problems/0827.最大人工岛.md
+++ b/problems/0827.最大人工岛.md
@@ -29,7 +29,7 @@
* 输出: 4
* 解释: 没有0可以让我们变成1,面积依然为 4。
-# 思路
+## 思路
本题的一个暴力想法,应该是遍历地图尝试 将每一个 0 改成1,然后去搜索地图中的最大的岛屿面积。
@@ -219,9 +219,9 @@ public:
};
```
-# 其他语言版本
+## 其他语言版本
-## Java
+### Java
```Java
class Solution {
@@ -286,4 +286,3 @@ class Solution {
-
diff --git a/problems/0844.比较含退格的字符串.md b/problems/0844.比较含退格的字符串.md
index ac56f6f9..c7f52202 100644
--- a/problems/0844.比较含退格的字符串.md
+++ b/problems/0844.比较含退格的字符串.md
@@ -38,7 +38,7 @@
本文将给出 空间复杂度O(n)的栈模拟方法 以及空间复杂度是O(1)的双指针方法。
-## 普通方法(使用栈的思路)
+### 普通方法(使用栈的思路)
这道题目一看就是要使用栈的节奏,这种匹配(消除)问题也是栈的擅长所在,跟着一起刷题的同学应该知道,在[栈与队列:匹配问题都是栈的强项](https://programmercarl.com/1047.删除字符串中的所有相邻重复项.html),我就已经提过了一次使用栈来做类似的事情了。
@@ -100,7 +100,7 @@ public:
* 时间复杂度:O(n + m)
* 空间复杂度:O(n + m)
-## 优化方法(从后向前双指针)
+### 优化方法(从后向前双指针)
当然还可以有使用 O(1) 的空间复杂度来解决该问题。
@@ -289,7 +289,7 @@ class Solution {
}
```
-### python
+### Python
```python
class Solution:
@@ -591,3 +591,4 @@ impl Solution {
+
diff --git a/problems/1791.找出星型图的中心节点.md b/problems/1791.找出星型图的中心节点.md
index d44c1476..9bcc7ef9 100644
--- a/problems/1791.找出星型图的中心节点.md
+++ b/problems/1791.找出星型图的中心节点.md
@@ -3,6 +3,7 @@
参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!
+ # 1791.找出星型图的中心节点 [题目链接](https://leetcode.cn/problems/find-center-of-star-graph/) @@ -55,7 +56,7 @@ public: return -1; } }; -``` +``` 以上代码中没有使用 unordered_map,因为遍历的时候,开辟新空间会浪费时间,而采用 vector,这是 空间换时间的一种策略。 diff --git a/problems/1971.寻找图中是否存在路径.md b/problems/1971.寻找图中是否存在路径.md index 5f1d8943..29e50ab8 100644 --- a/problems/1971.寻找图中是否存在路径.md +++ b/problems/1971.寻找图中是否存在路径.md @@ -138,3 +138,4 @@ public:参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!
+ # 栈与队列总结篇 ## 栈与队列的理论基础 diff --git a/problems/根据身高重建队列(vector原理讲解).md b/problems/根据身高重建队列(vector原理讲解).md index fdb4f58b..4291c80c 100644 --- a/problems/根据身高重建队列(vector原理讲解).md +++ b/problems/根据身高重建队列(vector原理讲解).md @@ -196,7 +196,7 @@ impl Solution{ } ``` -### Go: +### Go Go中slice的`append`操作和C++中vector的扩容机制基本相同。 @@ -213,4 +213,3 @@ Go中slice的`append`操作和C++中vector的扩容机制基本相同。参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!
+# 算法模板 -## 二分查找法 +## 算法模板 + +### 二分查找法 ```CPP class Solution { @@ -29,7 +32,7 @@ public: ``` -## KMP +### KMP ```CPP void kmp(int* next, const string& s){ @@ -47,7 +50,7 @@ void kmp(int* next, const string& s){ } ``` -## 二叉树 +### 二叉树 二叉树的定义: @@ -60,7 +63,7 @@ struct TreeNode { }; ``` -### 深度优先遍历(递归) +#### 深度优先遍历(递归) 前序遍历(中左右) ```CPP @@ -90,7 +93,7 @@ void traversal(TreeNode* cur, vector参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!
+ # 动态规划:01背包理论基础(滚动数组) + ## 算法公开课 **[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[带你学透0-1背包问题!(滚动数组)](https://www.bilibili.com/video/BV1BU4y177kY/),相信结合视频再看本篇题解,更有助于大家对本题的理解**。 diff --git a/problems/链表总结篇.md b/problems/链表总结篇.md index dacd4dee..3f2f5c97 100644 --- a/problems/链表总结篇.md +++ b/problems/链表总结篇.md @@ -3,6 +3,7 @@参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!
+ # 链表总结篇