mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
Update
This commit is contained in:
@ -464,8 +464,6 @@
|
||||
* [24.两两交换链表中的节点](./problems/0024.两两交换链表中的节点.md)
|
||||
* [234.回文链表](./problems/0234.回文链表.md)
|
||||
* [143.重排链表](./problems/0143.重排链表.md)【数组】【双向队列】【直接操作链表】
|
||||
|
||||
|
||||
* [141.环形链表](./problems/0141.环形链表.md)
|
||||
|
||||
## 哈希表
|
||||
|
@ -48,7 +48,7 @@
|
||||
|
||||
## C++代码
|
||||
|
||||
```c++
|
||||
```CPP
|
||||
class Solution {
|
||||
private:
|
||||
vector<vector<int>> result;
|
||||
@ -83,7 +83,7 @@ public:
|
||||
```
|
||||
|
||||
使用set去重的版本。
|
||||
```c++
|
||||
```CPP
|
||||
class Solution {
|
||||
private:
|
||||
vector<vector<int>> result;
|
||||
|
@ -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) {
|
||||
|
@ -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:
|
||||
|
||||
|
@ -142,7 +142,8 @@ for (int i = 1; i < s.size(); i++) {
|
||||
|
||||
就是其实这两道题目的代码:
|
||||
|
||||
* 647.回文子串
|
||||
|
||||
* [647. 回文子串](https://programmercarl.com/0647.回文子串.html)
|
||||
* 5.最长回文子串
|
||||
|
||||
所以先用一个二维数组来保存整个字符串的回文情况。
|
||||
|
@ -1,5 +1,5 @@
|
||||
# 463. 岛屿的周长
|
||||
|
||||
## 题目链接
|
||||
[力扣题目链接](https://leetcode-cn.com/problems/island-perimeter/)
|
||||
|
||||
## 思路
|
||||
|
@ -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]] 种方法。
|
||||
|
||||
|
@ -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]]
|
||||
|
@ -8,7 +8,9 @@
|
||||
|
||||
# 二叉树理论基础篇
|
||||
|
||||
我们要开启新的征程了,大家跟上!
|
||||
题目分类大纲如下:
|
||||
|
||||
<img src='https://img-blog.csdnimg.cn/20210219190809451.png' width=600 alt='二叉树大纲'> </img></div>
|
||||
|
||||
说道二叉树,大家对于二叉树其实都很熟悉了,本文呢我也不想教科书式的把二叉树的基础内容在啰嗦一遍,所以一下我讲的都是一些比较重点的内容。
|
||||
|
||||
@ -179,11 +181,6 @@ struct TreeNode {
|
||||
|
||||
**说道二叉树,就不得不说递归,很多同学对递归都是又熟悉又陌生,递归的代码一般很简短,但每次都是一看就会,一写就废。**
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 其他语言版本
|
||||
|
||||
|
||||
|
@ -6,6 +6,12 @@
|
||||
</p>
|
||||
<p align="center"><strong>欢迎大家<a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
|
||||
|
||||
# 动态规划理论基础
|
||||
|
||||
动态规划刷题大纲
|
||||
|
||||
<img src='https://code-thinking.cdn.bcebos.com/pics/动态规划-总结大纲1.jpg' width=600> </img>
|
||||
|
||||
## 什么是动态规划
|
||||
|
||||
动态规划,英文: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)
|
||||
|
@ -6,10 +6,15 @@
|
||||
</p>
|
||||
<p align="center"><strong>欢迎大家<a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
|
||||
|
||||
# 回溯算法理论基础
|
||||
|
||||
> 可以配合我的B站视频:[带你学透回溯算法(理论篇)](https://www.bilibili.com/video/BV1cy4y167mM/) 一起学习!
|
||||
## 题目分类大纲如下:
|
||||
|
||||
# 什么是回溯法
|
||||
<img src='https://img-blog.csdnimg.cn/20210219192050666.png' width=600 alt='回溯算法大纲'> </img></div>
|
||||
|
||||
可以配合我的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:
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -9,8 +9,10 @@
|
||||
|
||||
# 关于贪心算法,你该了解这些!
|
||||
|
||||
> 正式开始新的系列了,贪心算法!
|
||||
通知:一些录友表示经常看不到每天的文章,现在公众号已经不按照发送时间推荐了,而是根据一些规则乱序推送,所以可能关注了「代码随想录」也一直看不到文章,建议把「代码随想录」设置星标哈,设置星标之后,每天就按发文时间推送了,我每天都是定时8:35发送的,嗷嗷准时,哈哈。
|
||||
题目分类大纲如下:
|
||||
|
||||
<img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20210917104315.png' width=600 alt='贪心算法大纲'> </img></div>
|
||||
|
||||
|
||||
## 什么是贪心
|
||||
|
||||
@ -88,22 +90,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 其他语言版本
|
||||
|
||||
|
||||
Java:
|
||||
|
||||
|
||||
Python:
|
||||
|
||||
|
||||
Go:
|
||||
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
* 作者微信:[程序员Carl](https://mp.weixin.qq.com/s/b66DFkOp8OOxdZC_xLZxfw)
|
||||
* B站视频:[代码随想录](https://space.bilibili.com/525438321)
|
||||
|
Reference in New Issue
Block a user