From 3221a854aba5bbe463a53dfeb946e5bc48300dc1 Mon Sep 17 00:00:00 2001
From: youngyangyang04 <826123027@qq.com>
Date: Fri, 24 Sep 2021 11:06:03 +0800
Subject: [PATCH] Update
---
README.md | 2 --
problems/0090.子集II.md | 4 +--
problems/0104.二叉树的最大深度.md | 22 +++++++-------
.../0129.求根到叶子节点数字之和.md | 11 +++----
problems/0132.分割回文串II.md | 3 +-
problems/0463.岛屿的周长.md | 2 +-
problems/0494.目标和.md | 2 +-
problems/0841.钥匙和房间.md | 7 +----
problems/二叉树理论基础.md | 9 ++----
problems/动态规划理论基础.md | 20 ++++---------
problems/回溯算法理论基础.md | 30 ++++++++-----------
problems/贪心算法理论基础.md | 22 +++-----------
12 files changed, 49 insertions(+), 85 deletions(-)
diff --git a/README.md b/README.md
index 82c28969..d1076aba 100644
--- a/README.md
+++ b/README.md
@@ -464,8 +464,6 @@
* [24.两两交换链表中的节点](./problems/0024.两两交换链表中的节点.md)
* [234.回文链表](./problems/0234.回文链表.md)
* [143.重排链表](./problems/0143.重排链表.md)【数组】【双向队列】【直接操作链表】
-
-
* [141.环形链表](./problems/0141.环形链表.md)
## 哈希表
diff --git a/problems/0090.子集II.md b/problems/0090.子集II.md
index c8cb42d3..5ab881e7 100644
--- a/problems/0090.子集II.md
+++ b/problems/0090.子集II.md
@@ -48,7 +48,7 @@
## C++代码
-```c++
+```CPP
class Solution {
private:
vector> result;
@@ -83,7 +83,7 @@ public:
```
使用set去重的版本。
-```c++
+```CPP
class Solution {
private:
vector> result;
diff --git a/problems/0104.二叉树的最大深度.md b/problems/0104.二叉树的最大深度.md
index cde3d460..516cf5f1 100644
--- a/problems/0104.二叉树的最大深度.md
+++ b/problems/0104.二叉树的最大深度.md
@@ -42,14 +42,14 @@
1. 确定递归函数的参数和返回值:参数就是传入树的根节点,返回就返回这棵树的深度,所以返回值为int类型。
代码如下:
-```c++
+```CPP
int getdepth(treenode* node)
```
2. 确定终止条件:如果为空节点的话,就返回0,表示高度为0。
代码如下:
-```c++
+```CPP
if (node == null) return 0;
```
@@ -57,7 +57,7 @@ if (node == null) return 0;
代码如下:
-```c++
+```CPP
int leftdepth = getdepth(node->left); // 左
int rightdepth = getdepth(node->right); // 右
int depth = 1 + max(leftdepth, rightdepth); // 中
@@ -66,7 +66,7 @@ return depth;
所以整体c++代码如下:
-```c++
+```CPP
class solution {
public:
int getdepth(treenode* node) {
@@ -83,7 +83,7 @@ public:
```
代码精简之后c++代码如下:
-```c++
+```CPP
class solution {
public:
int maxdepth(treenode* root) {
@@ -99,7 +99,7 @@ public:
本题当然也可以使用前序,代码如下:(**充分表现出求深度回溯的过程**)
-```c++
+```CPP
class solution {
public:
int result;
@@ -122,7 +122,7 @@ public:
}
int maxdepth(treenode* root) {
result = 0;
- if (root == 0) return result;
+ if (root == NULL) return result;
getdepth(root, 1);
return result;
}
@@ -133,7 +133,7 @@ public:
注意以上代码是为了把细节体现出来,简化一下代码如下:
-```c++
+```CPP
class solution {
public:
int result;
@@ -171,7 +171,7 @@ public:
c++代码如下:
-```c++
+```CPP
class solution {
public:
int maxdepth(treenode* root) {
@@ -218,7 +218,7 @@ public:
c++代码:
-```c++
+```CPP
class solution {
public:
int maxdepth(node* root) {
@@ -235,7 +235,7 @@ public:
依然是层序遍历,代码如下:
-```c++
+```CPP
class solution {
public:
int maxdepth(node* root) {
diff --git a/problems/0129.求根到叶子节点数字之和.md b/problems/0129.求根到叶子节点数字之和.md
index 7f50c885..696042a8 100644
--- a/problems/0129.求根到叶子节点数字之和.md
+++ b/problems/0129.求根到叶子节点数字之和.md
@@ -1,7 +1,8 @@
-## 链接
+# 129. 求根节点到叶节点数字之和
+
[力扣题目链接](https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/)
-## 思路
+# 思路
本题和[113.路径总和II](https://programmercarl.com/0112.路径总和.html#_113-路径总和ii)是类似的思路,做完这道题,可以顺便把[113.路径总和II](https://programmercarl.com/0112.路径总和.html#_113-路径总和ii) 和 [112.路径总和](https://programmercarl.com/0112.路径总和.html#_112-路径总和) 做了。
@@ -15,7 +16,7 @@
那么先按递归三部曲来分析:
-### 递归三部曲
+## 递归三部曲
如果对递归三部曲不了解的话,可以看这里:[二叉树:前中后递归详解](https://programmercarl.com/二叉树的递归遍历.html)
@@ -107,7 +108,7 @@ path.pop_back(); // 回溯
```
**把回溯放在花括号外面了,世界上最遥远的距离,是你在花括号里,而我在花括号外!** 这就不对了。
-### 整体C++代码
+## 整体C++代码
关键逻辑分析完了,整体C++代码如下:
@@ -160,7 +161,7 @@ public:
**我这里提供的代码把整个回溯过程充分体现出来,希望可以帮助大家看的明明白白!**
-## 其他语言版本
+# 其他语言版本
Java:
diff --git a/problems/0132.分割回文串II.md b/problems/0132.分割回文串II.md
index dbd830d0..f9cbd618 100644
--- a/problems/0132.分割回文串II.md
+++ b/problems/0132.分割回文串II.md
@@ -142,7 +142,8 @@ for (int i = 1; i < s.size(); i++) {
就是其实这两道题目的代码:
-* 647.回文子串
+
+* [647. 回文子串](https://programmercarl.com/0647.回文子串.html)
* 5.最长回文子串
所以先用一个二维数组来保存整个字符串的回文情况。
diff --git a/problems/0463.岛屿的周长.md b/problems/0463.岛屿的周长.md
index 609c25a5..fd9585d2 100644
--- a/problems/0463.岛屿的周长.md
+++ b/problems/0463.岛屿的周长.md
@@ -1,5 +1,5 @@
+# 463. 岛屿的周长
-## 题目链接
[力扣题目链接](https://leetcode-cn.com/problems/island-perimeter/)
## 思路
diff --git a/problems/0494.目标和.md b/problems/0494.目标和.md
index 87fc579d..c24ce6f9 100644
--- a/problems/0494.目标和.md
+++ b/problems/0494.目标和.md
@@ -158,7 +158,7 @@ dp[j] 表示:填满j(包括j)这么大容积的包,有dp[i]种方法
有哪些来源可以推出dp[j]呢?
-不考虑nums[i]的情况下,填满容量为j - nums[i]的背包,有dp[j - nums[i]]种方法。
+填满容量为j - nums[i]的背包,有dp[j - nums[i]]种方法。
那么只要搞到nums[i]的话,凑成dp[j]就有dp[j - nums[i]] 种方法。
diff --git a/problems/0841.钥匙和房间.md b/problems/0841.钥匙和房间.md
index caa0edaf..d281dc5a 100644
--- a/problems/0841.钥匙和房间.md
+++ b/problems/0841.钥匙和房间.md
@@ -25,12 +25,7 @@
示例 1:
* 输入: [[1],[2],[3],[]]
* 输出: true
-* 解释:
-我们从 0 号房间开始,拿到钥匙 1。
-之后我们去 1 号房间,拿到钥匙 2。
-然后我们去 2 号房间,拿到钥匙 3。
-最后我们去了 3 号房间。
-由于我们能够进入每个房间,我们返回 true。
+* 解释: 我们从 0 号房间开始,拿到钥匙 1。 之后我们去 1 号房间,拿到钥匙 2。 然后我们去 2 号房间,拿到钥匙 3。 最后我们去了 3 号房间。 由于我们能够进入每个房间,我们返回 true。
示例 2:
* 输入:[[1,3],[3,0,1],[2],[0]]
diff --git a/problems/二叉树理论基础.md b/problems/二叉树理论基础.md
index 94a0d67f..b25f3be1 100644
--- a/problems/二叉树理论基础.md
+++ b/problems/二叉树理论基础.md
@@ -8,7 +8,9 @@
# 二叉树理论基础篇
-我们要开启新的征程了,大家跟上!
+题目分类大纲如下:
+
+
说道二叉树,大家对于二叉树其实都很熟悉了,本文呢我也不想教科书式的把二叉树的基础内容在啰嗦一遍,所以一下我讲的都是一些比较重点的内容。
@@ -179,11 +181,6 @@ struct TreeNode {
**说道二叉树,就不得不说递归,很多同学对递归都是又熟悉又陌生,递归的代码一般很简短,但每次都是一看就会,一写就废。**
-
-
-
-
-
## 其他语言版本
diff --git a/problems/动态规划理论基础.md b/problems/动态规划理论基础.md
index fd7977a6..bd46586f 100644
--- a/problems/动态规划理论基础.md
+++ b/problems/动态规划理论基础.md
@@ -6,6 +6,12 @@
欢迎大家参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!
+# 动态规划理论基础
+
+动态规划刷题大纲
+
+
+
## 什么是动态规划
动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。
@@ -122,20 +128,6 @@
今天我们开始新的征程了,你准备好了么?
-## 其他语言版本
-
-
-Java:
-
-
-Python:
-
-
-Go:
-
-
-
-
-----------------------
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
diff --git a/problems/回溯算法理论基础.md b/problems/回溯算法理论基础.md
index 29981c66..c351ddba 100644
--- a/problems/回溯算法理论基础.md
+++ b/problems/回溯算法理论基础.md
@@ -6,10 +6,15 @@
欢迎大家参与本项目,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!
+# 回溯算法理论基础
-> 可以配合我的B站视频:[带你学透回溯算法(理论篇)](https://www.bilibili.com/video/BV1cy4y167mM/) 一起学习!
+## 题目分类大纲如下:
-# 什么是回溯法
+
+
+可以配合我的B站视频:[带你学透回溯算法(理论篇)](https://www.bilibili.com/video/BV1cy4y167mM/) 一起学习!
+
+## 什么是回溯法
回溯法也可以叫做回溯搜索法,它是一种搜索的方式。
@@ -19,7 +24,7 @@
**所以以下讲解中,回溯函数也就是递归函数,指的都是一个函数**。
-# 回溯法的效率
+## 回溯法的效率
回溯法的性能如何呢,这里要和大家说清楚了,**虽然回溯法很难,很不好理解,但是回溯法并不是什么高效的算法**。
@@ -31,7 +36,7 @@
此时大家应该好奇了,都什么问题,这么牛逼,只能暴力搜索。
-# 回溯法解决的问题
+## 回溯法解决的问题
回溯法,一般可以解决如下几种问题:
@@ -52,7 +57,7 @@
记住组合无序,排列有序,就可以了。
-# 如何理解回溯法
+## 如何理解回溯法
**回溯法解决的问题都可以抽象为树形结构**,是的,我指的是所有回溯法的问题都可以抽象为树形结构!
@@ -63,7 +68,7 @@
这块可能初学者还不太理解,后面的回溯算法解决的所有题目中,我都会强调这一点并画图举相应的例子,现在有一个印象就行。
-# 回溯法模板
+## 回溯法模板
这里给出Carl总结的回溯算法模板。
@@ -149,7 +154,7 @@ void backtracking(参数) {
如果从来没有学过回溯算法的录友们,看到这里会有点懵,后面开始讲解具体题目的时候就会好一些了,已经做过回溯法题目的录友,看到这里应该会感同身受了。
-# 总结
+## 总结
本篇我们讲解了,什么是回溯算法,知道了回溯和递归是相辅相成的。
@@ -163,17 +168,6 @@ void backtracking(参数) {
-## 其他语言版本
-
-
-Java:
-
-
-Python:
-
-
-Go:
-
diff --git a/problems/贪心算法理论基础.md b/problems/贪心算法理论基础.md
index fdb7abf3..9c131709 100644
--- a/problems/贪心算法理论基础.md
+++ b/problems/贪心算法理论基础.md
@@ -9,8 +9,10 @@
# 关于贪心算法,你该了解这些!
-> 正式开始新的系列了,贪心算法!
-通知:一些录友表示经常看不到每天的文章,现在公众号已经不按照发送时间推荐了,而是根据一些规则乱序推送,所以可能关注了「代码随想录」也一直看不到文章,建议把「代码随想录」设置星标哈,设置星标之后,每天就按发文时间推送了,我每天都是定时8:35发送的,嗷嗷准时,哈哈。
+题目分类大纲如下:
+
+
+
## 什么是贪心
@@ -88,22 +90,6 @@
-
-
-## 其他语言版本
-
-
-Java:
-
-
-Python:
-
-
-Go:
-
-
-
-
-----------------------
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
* B站视频:[代码随想录](https://space.bilibili.com/525438321)