Skip to content

Commit

Permalink
Update
Browse files Browse the repository at this point in the history
  • Loading branch information
youngyangyang04 committed Sep 5, 2023
1 parent 4d53234 commit 7e7e0cd
Show file tree
Hide file tree
Showing 42 changed files with 57 additions and 72 deletions.
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,14 @@
* [图论:1020.飞地的数量](./problems/1020.飞地的数量.md)
* [图论:130.被围绕的区域](./problems/0130.被围绕的区域.md)
* [图论:417.太平洋大西洋水流问题](./problems/0417.太平洋大西洋水流问题.md)
* [图论:827.最大人工岛](./problems/0827.最大人工岛.md)
* [图论:127. 单词接龙](./problems/0127.单词接龙.md)
* [图论:841.钥匙和房间](./problems/841.钥匙和房间)
* [图论:463. 岛屿的周长](./problems/0463.岛屿的周长.md)
* [图论:并查集理论基础](./problems/)
* [图论:1971. 寻找图中是否存在路径](./problems/1971.寻找图中是否存在路径.md)
* [图论:684.冗余连接](./problems/0684.冗余连接.md)
* [图论:685.冗余连接II](./problems/0685.冗余连接II.md)

(持续更新中....)

Expand Down
2 changes: 1 addition & 1 deletion problems/0096.不同的二叉搜索树.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ public:
可以看出我依然还是用动规五部曲来进行分析,会把题目的方方面面都覆盖到!
**而且具体这五部分析是我自己平时总结的经验,找不出来第二个的,可能过一阵子 其他题解也会有动规五部曲了,哈哈**。
**而且具体这五部分析是我自己平时总结的经验,找不出来第二个的,可能过一阵子 其他题解也会有动规五部曲了**。
当时我在用动规五部曲讲解斐波那契的时候,一些录友和我反应,感觉讲复杂了。
Expand Down
4 changes: 2 additions & 2 deletions problems/0098.验证二叉搜索树.md
Original file line number Diff line number Diff line change
Expand Up @@ -249,9 +249,9 @@ public:

这道题目是一个简单题,但对于没接触过的同学还是有难度的。

所以初学者刚开始学习算法的时候,看到简单题目没有思路很正常,千万别怀疑自己智商,学习过程都是这样的,大家智商都差不多,哈哈
所以初学者刚开始学习算法的时候,看到简单题目没有思路很正常,千万别怀疑自己智商,学习过程都是这样的,大家智商都差不多。

只要把基本类型的题目都做过,总结过之后,思路自然就开阔了
只要把基本类型的题目都做过,总结过之后,思路自然就开阔了,加油💪


## 其他语言版本
Expand Down
2 changes: 1 addition & 1 deletion problems/0131.分割回文串.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ public:

所以本题应该是一道hard题目了。

**可能刷过这道题目的录友都没感受到自己原来克服了这么多难点,就把这道题目AC了**,这应该叫做无招胜有招,人码合一,哈哈哈
**可能刷过这道题目的录友都没感受到自己原来克服了这么多难点,就把这道题目AC了**,这应该叫做无招胜有招,人码合一。



Expand Down
2 changes: 1 addition & 1 deletion problems/0142.环形链表II.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ public:
## 总结
这次可以说把环形链表这道题目的各个细节,完完整整的证明了一遍,说这是全网最详细讲解不为过吧,哈哈
这次可以说把环形链表这道题目的各个细节,完完整整的证明了一遍,说这是全网最详细讲解不为过吧。
## 其他语言版本
Expand Down
2 changes: 1 addition & 1 deletion problems/0232.用栈实现队列.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ public:
工作中如果发现某一个功能自己要经常用,同事们可能也会用到,自己就花点时间把这个功能抽象成一个好用的函数或者工具类,不仅自己方便,也方便了同事们。
同事们就会逐渐认可你的工作态度和工作能力,自己的口碑都是这么一点一点积累起来的!在同事圈里口碑起来了之后,你就发现自己走上了一个正循环,以后的升职加薪才少不了你!哈哈哈
同事们就会逐渐认可你的工作态度和工作能力,自己的口碑都是这么一点一点积累起来的!在同事圈里口碑起来了之后,你就发现自己走上了一个正循环,以后的升职加薪才少不了你!
Expand Down
2 changes: 1 addition & 1 deletion problems/0279.完全平方数.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ public:
但如果没有按照「代码随想录」的题目顺序来做的话,做动态规划或者做背包问题,上来就做这道题,那还是挺难的!
经过前面的训练这道题已经是简单题了,哈哈哈
经过前面的训练这道题已经是简单题了
Expand Down
2 changes: 1 addition & 1 deletion problems/0322.零钱兑换.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ public:

这也是大多数同学学习动态规划的苦恼所在,有的时候递推公式很简单,难在遍历顺序上!

但最终又可以稀里糊涂的把题目过了,也不知道为什么这样可以过,反正就是过了,哈哈
但最终又可以稀里糊涂的把题目过了,也不知道为什么这样可以过,反正就是过了

那么这篇文章就把遍历顺序分析的清清楚楚。

Expand Down
2 changes: 1 addition & 1 deletion problems/0337.打家劫舍III.md
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ public:

只不过平时我们习惯了在一维数组或者二维数组上推导公式,一下子换成了树,就需要对树的遍历方式足够了解!

大家还记不记得我在讲解贪心专题的时候,讲到这道题目:[贪心算法:我要监控二叉树!](https://programmercarl.com/0968.监控二叉树.html),这也是贪心算法在树上的应用。**那我也可以把这个算法起一个名字,叫做树形贪心**,哈哈哈
大家还记不记得我在讲解贪心专题的时候,讲到这道题目:[贪心算法:我要监控二叉树!](https://programmercarl.com/0968.监控二叉树.html),这也是贪心算法在树上的应用。**那我也可以把这个算法起一个名字,叫做树形贪心**

“树形贪心”词汇从此诞生,来自「代码随想录」

Expand Down
1 change: 0 additions & 1 deletion problems/0376.摆动序列.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
</a>
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>

> 本周讲解了[贪心理论基础](https://programmercarl.com/贪心算法理论基础.html),以及第一道贪心的题目:[贪心算法:分发饼干](https://programmercarl.com/0455.分发饼干.html),可能会给大家一种贪心算法比较简单的错觉,好了,接下来几天的题目难度要上来了,哈哈。

# 376. 摆动序列

Expand Down
2 changes: 1 addition & 1 deletion problems/0491.递增子序列.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ for (int i = startIndex; i < nums.size(); i++) {
}
```

**对于已经习惯写回溯的同学,看到递归函数上面的`uset.insert(nums[i]);`,下面却没有对应的pop之类的操作,应该很不习惯吧,哈哈**
**对于已经习惯写回溯的同学,看到递归函数上面的`uset.insert(nums[i]);`,下面却没有对应的pop之类的操作,应该很不习惯吧**

**这也是需要注意的点,`unordered_set<int> uset;` 是记录本层元素是否重复使用,新的一层uset都会重新定义(清空),所以要知道uset只负责本层!**

Expand Down
2 changes: 1 addition & 1 deletion problems/0494.目标和.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@

如果跟着「代码随想录」一起学过[回溯算法系列](https://programmercarl.com/回溯总结.html)的录友,看到这道题,应该有一种直觉,就是感觉好像回溯法可以爆搜出来。

事实确实如此,下面我也会给出相应的代码,只不过会超时,哈哈
事实确实如此,下面我也会给出相应的代码,只不过会超时。

这道题目咋眼一看和动态规划背包啥的也没啥关系。

Expand Down
2 changes: 1 addition & 1 deletion problems/0501.二叉搜索树中的众数.md
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ public:
* [二叉树:前中后序迭代法](https://programmercarl.com/二叉树的迭代遍历.html)
* [二叉树:前中后序统一风格的迭代方式](https://programmercarl.com/二叉树的统一迭代法.html)

下面我给出其中的一种中序遍历的迭代法,其中间处理逻辑一点都没有变(我从递归法直接粘过来的代码,连注释都没改,哈哈
下面我给出其中的一种中序遍历的迭代法,其中间处理逻辑一点都没有变(我从递归法直接粘过来的代码,连注释都没改)

代码如下:

Expand Down
2 changes: 1 addition & 1 deletion problems/0518.零钱兑换II.md
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ public:
* 空间复杂度: O(m)
是不是发现代码如此精简,哈哈
是不是发现代码如此精简
## 总结
Expand Down
2 changes: 1 addition & 1 deletion problems/0657.机器人能否返回原点.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@

## 思路

这道题目还是挺简单的,大家不要想复杂了,一波哈希法又一波图论算法啥的,哈哈
这道题目还是挺简单的,大家不要想复杂了,一波哈希法又一波图论算法之类的

其实就是,x,y坐标,初始为0,然后:
* if (moves[i] == 'U') y++;
Expand Down
2 changes: 1 addition & 1 deletion problems/0701.二叉搜索树中的插入操作.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ if (root == NULL) {

此时要明确,需要遍历整棵树么?

别忘了这是搜索树,遍历整棵搜索树简直是对搜索树的侮辱,哈哈
别忘了这是搜索树,遍历整棵搜索树简直是对搜索树的侮辱。

搜索树是有方向了,可以根据插入元素的数值,决定递归方向。

Expand Down
4 changes: 2 additions & 2 deletions problems/qita/kstar.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20230516112821.png' width=500 alt=''> </img></div>

星球里的录友都可以得到我1V1的指导,**我已经详细回答了7000+个问题**: (这个回答问题数量,可以看出我有劳模的潜质 哈哈
星球里的录友都可以得到我1V1的指导,**我已经详细回答了7000+个问题**: (这个回答问题数量,可以看出我有劳模的潜质 )

<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20230426103803.png' width=500 alt=''> </img></div>

Expand Down Expand Up @@ -45,7 +45,7 @@
<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20230607171843.png' width=400 alt=''> </img></div>


一些录友当初也是进来 白嫖一波资料,就退款跑了 哈哈哈,不过后面又加回来,例如这位录友:
一些录友当初也是进来 白嫖一波资料,就退款跑了,不过后面又加回来,例如这位录友:

<div align="center"><img src='https://code-thinking-1253855093.file.myqcloud.com/pics/20220516160948.png' width=500 alt=''> </img></div>

Expand Down
4 changes: 2 additions & 2 deletions problems/qita/server.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

这真是一个好问题,而且我一句两句还说不清楚,所以就专门发文来讲一讲。

同时我还录制的一期视频,哈哈我的视频号,大家可以关注一波。
同时我还录制的一期视频,我的视频号,大家可以关注一波。


一说到服务器,可能很多人都说搞分布式,做计算,搞爬虫,做程序后台服务,多人合作等等。
Expand Down Expand Up @@ -57,7 +57,7 @@

https://github.com/youngyangyang04/fileHttpServer

感兴趣的录友可以去学习一波,顺便给个star 哈哈
感兴趣的录友可以去学习一波,顺便给个star


## 网站
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@
</a>
<p align="center"><strong><a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>

相信每一位录友都接触过时间复杂度,「代码随想录」已经也讲了一百多道经典题目了,是时候对时间复杂度来一个深度的剖析了,很早之前就写过一篇,当时文章还没有人看,Carl感觉有价值的东西值得让更多的人看到,哈哈。

所以重新整理的时间复杂度文章,正式和大家见面啦!

# 时间复杂度

## 究竟什么是时间复杂度
Expand Down
4 changes: 2 additions & 2 deletions problems/前序/vim.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

但这里我并不是说IDE不好用,IDE在 代码跟踪,引用跳转等等其实是很给力的,效率比vim高。

我用vim的话,如果需要跟踪代码的话,就用ctag去跳转,虽然很不智能(是基于规则匹配,不是语义匹配),但加上我自己的智能就也能用(这里真的要看对代码的把握程度了,哈哈哈
我用vim的话,如果需要跟踪代码的话,就用ctag去跳转,虽然很不智能(是基于规则匹配,不是语义匹配),但加上我自己的智能就也能用(这里真的要看对代码的把握程度了)

所以连跟踪代码都不用IDE的话,其他方面那我就更用不上IDE了。

Expand Down Expand Up @@ -99,5 +99,5 @@ Github地址:[https://github.com/youngyangyang04/PowerVim](https://github.com/

Gitee地址:[https://gitee.com/programmercarl/power-vim](https://gitee.com/programmercarl/power-vim)

最后,因为这个vim配置因为我一直没有宣传,所以star数量很少,哈哈哈,录友们去给个star吧,真正的开发利器,值得顶起来!
最后,因为这个vim配置因为我一直没有宣传,所以star数量很少,录友们去给个star吧,真正的开发利器,值得顶起来!

2 changes: 1 addition & 1 deletion problems/前序/代码风格.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

* 第二种情况:这个项目没赚到钱,半死不活的,代码还没有设计也没有规范,这样对技术人员的伤害就非常大了。

**而不注重代码风格的团队,99.99%都是第二种情况**,如果你赶上了第一种情况,那就恭喜你了,本文下面的内容可以不用看了,哈哈
**而不注重代码风格的团队,99.99%都是第二种情况**,如果你赶上了第一种情况,那就恭喜你了,本文下面的内容可以不用看了。

## 代码规范

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ int main() {
代码中可以看出,其实就是定义个main函数,构造个输入用例,然后定义一个solution变量,调用minCostClimbingStairs函数就可以了。
此时大家就可以随意构造测试数据,然后想怎么打日志就怎么打日志,没有找不出的bug,哈哈
此时大家就可以随意构造测试数据,然后想怎么打日志就怎么打日志,没有找不出的bug。
Expand Down
3 changes: 0 additions & 3 deletions problems/前序/北京互联网公司总结.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,6 @@
* 自如网
* 汽车之家

## 总结

可能是我写总结写习惯了,什么文章都要有一个总结,哈哈,那么我就总结一下。

北京的互联网氛围绝对是最好的(暂不讨论户口和房价问题),大家如果看了[深圳原来有这么多互联网公司,你都知道么?](https://programmercarl.com/前序/深圳互联网公司总结.html)这篇之后,**会发现北京互联网外企和二线互联网公司数量多的优势,在深圳的互联网公司断档比较严重,如果去不了为数不多的一线公司,可选择的余地就非常少了,而北京选择的余地就很多!**

Expand Down
7 changes: 0 additions & 7 deletions problems/前序/程序员简历.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,13 +113,6 @@ Carl校招社招都拿过大厂的offer,同时也看过很多应聘者的简

**好的简历是敲门砖,同时也不要在简历上花费过多的精力,好的简历以及面试技巧都是锦上添花**,真的求得心得的offer靠的还是真才实学。

如何真才实学呢? 跟着「代码随想录」一起刷题呀,哈哈

大家此时可以再重审一遍自己的简历,如果发现哪里的不足,面试前要多准备多练习。

就酱,「代码随想录」就是这么干货,Carl多年积累的简历技巧都毫不保留的写出来了,如果感觉对你有帮助,就宣传一波「代码随想录」吧,值得大家的关注!



-----------------------
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码.jpg width=450> </img></div>
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ int function3(int x, int n) {
return function3(x, n / 2) * function3(x, n / 2);
}
```
可以看出这道题目非常简单,但是又很考究算法的功底,特别是对递归的理解,这也是我面试别人的时候用过的一道题,所以整个情景我才写的如此逼真,哈哈
可以看出这道题目非常简单,但是又很考究算法的功底,特别是对递归的理解,这也是我面试别人的时候用过的一道题,所以整个情景我才写的如此逼真。
大厂面试的时候最喜欢用“简单题”来考察候选人的算法功底,注意这里的“简单题”可并不一定真的简单哦!
Expand Down
2 changes: 1 addition & 1 deletion problems/剑指Offer58-II.左旋转字符串.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ public:
* 时间复杂度: O(n)
* 空间复杂度:O(1)
是不是发现这代码也太简单了,哈哈
是不是发现这代码也太简单了。
## 总结
Expand Down
2 changes: 1 addition & 1 deletion problems/周总结/20200927二叉树周末总结.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ public:

看完这篇文章,去leetcode上怒刷五题,文章中 编号107题目的样例图放错了(原谅我匆忙之间总是手抖),但不影响大家理解。

只有同学发现leetcode上“515. 在每个树行中找最大值”,也是层序遍历的应用,依然可以分分钟解决,所以就是一鼓作气解决六道了,哈哈
只有同学发现leetcode上“515. 在每个树行中找最大值”,也是层序遍历的应用,依然可以分分钟解决,所以就是一鼓作气解决六道了。

**层序遍历遍历相对容易一些,只要掌握基本写法(也就是框架模板),剩下的就是在二叉树每一行遍历的时候做做逻辑修改。**

Expand Down
2 changes: 1 addition & 1 deletion problems/周总结/20201017二叉树周末总结.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@

**但可以遍历一遍就可以求众数集合,使用了适时清空结果集的方法**,这个方法还是很巧妙的。相信仔细读了文章的同学会惊呼其巧妙!

**所以大家不要看题目简单了,就不动手做了,我选的题目,一般不会简单到不用动手的程度,哈哈**
**所以大家不要看题目简单了,就不动手做了,我选的题目,一般不会简单到不用动手的程度**

## 周六

Expand Down
2 changes: 1 addition & 1 deletion problems/周总结/20201030回溯周末总结.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@

对于回溯法的整体框架,网上搜的文章这块一般都说不清楚,按照天上掉下来的代码对着讲解,不知道究竟是怎么来的,也不知道为什么要这么写。

所以,录友们刚开始学回溯法,起跑姿势就很标准了,哈哈
所以,录友们刚开始学回溯法,起跑姿势就很标准了。

下周依然是回溯法,难度又要上升一个台阶了。

Expand Down
2 changes: 1 addition & 1 deletion problems/周总结/20201107回溯周末总结.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ if (startIndex >= nums.size()) { // 终止条件可以不加

**我讲解每一种问题,都会和其他问题作对比,做分析,所以只要跟着细心琢磨相信对回溯又有新的认识**

最近这两天题目有点难度,刚刚开始学回溯算法的话,按照现在这个每天一题的速度来,确实有点快,学起来吃力非常正常,这些题目都是我当初学了好几个月才整明白的,哈哈
最近这两天题目有点难度,刚刚开始学回溯算法的话,按照现在这个每天一题的速度来,确实有点快,学起来吃力非常正常,这些题目都是我当初学了好几个月才整明白的。

**所以大家能跟上的话,已经很优秀了!**

Expand Down
6 changes: 2 additions & 4 deletions problems/周总结/20201203贪心周末总结.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@

## 周四

这道题目:[贪心算法:K次取反后最大化的数组和](https://programmercarl.com/1005.K次取反后最大化的数组和.html)就比较简单了,哈哈,用简单题来讲一讲贪心的思想。
这道题目:[贪心算法:K次取反后最大化的数组和](https://programmercarl.com/1005.K次取反后最大化的数组和.html)就比较简单了,用简单题来讲一讲贪心的思想。

**这里其实用了两次贪心!**

Expand All @@ -76,16 +76,14 @@

第二次贪心:局部最优:只找数值最小的正整数进行反转,当前数值可以达到最大(例如正整数数组{5, 3, 1},反转1 得到-1 比 反转5得到的-5 大多了),全局最优:整个 数组和 达到最大。

[贪心算法:K次取反后最大化的数组和](https://programmercarl.com/1005.K次取反后最大化的数组和.html)中的代码,最后while处理K的时候,其实直接判断奇偶数就可以了,文中给出的方式太粗暴了,哈哈,Carl大意了。

例外一位录友留言给出一个很好的建议,因为文中是使用快排,仔细看题,**题目中限定了数据范围是正负一百,所以可以使用桶排序**,这样时间复杂度就可以优化为$O(n)$了。但可能代码要复杂一些了。


## 总结

大家会发现本周的代码其实都简单,但思路却很巧妙,并不容易写出来。

如果是第一次接触的话,其实很难想出来,就是接触过之后就会了,所以大家不用感觉自己想不出来而烦躁,哈哈
如果是第一次接触的话,其实很难想出来,就是接触过之后就会了,所以大家不用感觉自己想不出来而烦躁。

相信此时大家现在对贪心算法又有一个新的认识了,加油💪

Expand Down
Loading

0 comments on commit 7e7e0cd

Please sign in to comment.