Skip to content
GitLab
菜单
为什么选择 GitLab
定价
联系销售
探索
为什么选择 GitLab
定价
联系销售
探索
登录
获取免费试用
主导航
搜索或转到…
项目
F
fucking-algorithm
管理
动态
成员
标记
计划
议题
议题看板
里程碑
Wiki
代码
合并请求
仓库
分支
提交
标签
仓库图
比较修订版本
代码片段
构建
流水线
作业
流水线计划
产物
部署
发布
软件包库
容器镜像库
模型注册表
运维
环境
Terraform 模块
监控
事件
服务台
分析
价值流分析
贡献者分析
CI/CD 分析
仓库分析
模型实验
帮助
帮助
支持
GitLab 文档
比较 GitLab 各版本
社区论坛
为极狐GitLab 提交贡献
提交反馈
隐私声明
快捷键
?
新增功能
4
代码片段
群组
项目
Show more breadcrumbs
Shawn Zhuang
fucking-algorithm
提交
d1273c01
提交
d1273c01
编辑于
5年前
作者:
labuladong
浏览文件
操作
下载
补丁
差异文件
修改 bug
上级
1c32e17a
No related branches found
分支 包含提交
No related tags found
无相关合并请求
变更
3
隐藏空白变更内容
行内
左右并排
显示
3 个更改的文件
README.md
+18
-10
18 个添加, 10 个删除
README.md
技术/linux进程.md
+14
-2
14 个添加, 2 个删除
技术/linux进程.md
数据结构系列/二叉搜索树操作集锦.md
+1
-1
1 个添加, 1 个删除
数据结构系列/二叉搜索树操作集锦.md
有
33 个添加
和
13 个删除
README.md
+
18
−
10
浏览文件 @
d1273c01
# 一、前言
我曾经尝试在网上有不少学习算法的资料,但真的让我挺无语,要么就是太零散,要么就是笔记性质别人都看不懂。我这个纯靠自学的小童鞋,花了一年时间自己写一份算法小抄,总共
**60 多篇原创文章**
,够通俗,绝不是简单的代码堆砌,下面有目录,质量如何,这里就不废话了。
本仓库总共 60 多篇原创文章,基本上都是基于 LeetCode 的题目,涵盖了所有题型和技巧,而且一定要做到
**举一反三,通俗易懂**
,绝不是简单的代码堆砌,后面有目录。
我先吐槽几句。
**刷题刷题,刷的是题,培养的是思维,本仓库的目的就是传递这种算法思维**
。我要是只写一个包含 LeetCode 题目代码的仓库,有个锤子用?没有思路解释,没有思维框架,顶多写个时间复杂度,那玩意一眼就能看出来。
只想要答案的话很容易,题目评论区五花八门的答案,动不动就秀 python 一行代码解决,有那么多人点赞。问题是,你去做算法题,是去学习编程语言的奇技淫巧的,还是学习算法思维的呢?你的快乐,到底源自复制别人的一行代码通过测试,已完成题目 +1,还是源自自己通过逻辑推理和算法框架不看答案写出解法?
网上总有大佬喷我,说我写这玩意太基础了,根本没必要啰嗦。我只能说大家刷算法就是找工作吃饭的,不是打竞赛的,我也是一路摸爬滚打过来的,我们要的是清楚明白有所得,不是故弄玄虚无所指。不想办法做到通俗易懂,难道要上来先把《算法导论》吹上天,然后把人家都心怀敬仰地劝退?别的不说,公众号几万读者,PDF 版本上万次下载,联系我的出版社都好几家,说明质量还过得去吧?
**做啥事情做多了,都能发现套路的,我把各种算法套路框架总结出来,相信可以帮助其他人少走弯路**
。我这个纯靠自学的小童鞋,花了一年时间刷题和总结,自己写了一份算法小抄,后面有目录,这里就不废话了。
### 使用方法
1、
**先给本仓库点个 star,满足一下我的虚荣心**
,文章质量绝对值你一个 star,给我一点继续写文的动力,感谢。
1、
**先给本仓库点个 star,满足一下我的虚荣心**
,文章质量绝对值你一个 star
。我还在继续创作
,给我一点继续写文的动力,感谢。
2、可以在我的 gitbook 上直接查看所有文章,会同步持续更新,建议收藏。地址:https://labuladong.gitbook.io/algo
2、可以在我的 gitbook 上直接查看所有文章,会
和公众号
同步持续更新
文章
,建议收藏。地址:https://labuladong.gitbook.io/algo
3、可以关注我的公众号
**labuladong**
,我就是
不喜欢转载乱七八糟的低质文章,
**坚持
原创,全是
高质量原创,说是最良心最硬核的
算法
公众号都不为过**
。
3、可以关注我的公众号
**labuladong**
及时获取更新。我
不喜欢转载乱七八糟的低质文章,
**坚持高质量原创,说是最良心最硬核的
技术
公众号都不为过**
。
这些文章就是从公众号里整理出来的,目前主要发文平台是微信公众号,公众号后台回复关键词【电子书】可以获得这份小抄的电子书版本,方便你做笔记:
...
...
@@ -19,14 +27,14 @@
# 二、文章目录
*
第零章、必读系列
*
[
学习算法和刷题的
思路指南
](
算法思维系列/学习数据结构和算法的高效方法.md
)
*
[
学习算法和刷题的
框架思维
](
算法思维系列/学习数据结构和算法的高效方法.md
)
*
[
学习数据结构和算法读什么书
](
算法思维系列/为什么推荐算法4.md
)
*
[
动态规划
详
解
](
动态规划系列/动态规划详解进阶.md
)
*
[
动态规划解
题框架
](
动态规划系列/动态规划详解进阶.md
)
*
[
动态规划答疑篇
](
动态规划系列/最优子结构.md
)
*
[
回溯算法
详
解
](
算法思维系列/回溯算法详解修订版.md
)
*
[
二分查找
详
解
](
算法思维系列/二分查找详解.md
)
*
[
双指针技巧总结
](
算法思维系列/
双指针
技巧.md
)
*
[
滑动窗口技巧
](
算法思维系列/
滑动窗口
技巧.md
)
*
[
回溯算法解
题框架
](
算法思维系列/回溯算法详解修订版.md
)
*
[
二分查找解
题框架
](
算法思维系列/二分查找详解.md
)
*
[
滑动窗口解题框架
](
算法思维系列/
滑动窗口
技巧.md
)
*
[
双指针技巧解题框架
](
算法思维系列/
双指针
技巧.md
)
*
[
Linux的进程、线程、文件描述符是什么
](
技术/linux进程.md
)
*
[
Git/SQL/正则表达式的在线练习平台
](
技术/在线练习平台.md
)
*
第一章、动态规划系列
...
...
This diff is collapsed.
点击以展开。
技术/linux进程.md
+
14
−
2
浏览文件 @
d1273c01
...
...
@@ -65,16 +65,28 @@ PS:不要忘了,Linux 中一切都被抽象成文件,设备也是文件,
明白了这个原理,
**输入重定向**
就很好理解了,程序想读取数据的时候就会去
`files[0]`
读取,所以我们只要把
`files[0]`
指向一个文件,那么程序就会从这个文件中读取数据,而不是从键盘:

```
shell
$
command
< file.txt
```

同理,
**输出重定向**
就是把
`files[1]`
指向一个文件,那么程序的输出就不会写入到显示器,而是写入到这个文件中:

```
shell
$
command
>
file.txt
```

错误重定向也是一样的,就不再赘述。
**管道符**
其实也是异曲同工,把一个进程的输出流和另一个进程的输入流接起一条「管道」,数据就在其中传递,不得不说这种设计思想真的很优美:
```
shell
$
cmd1 | cmd2 | cmd3
```

到这里,你可能也看出「Linux 中一切皆文件」设计思路的高明了,不管是设备、另一个进程、socket 套接字还是真正的文件,全部都可以读写,统一装进一个简单的
`files`
数组,进程通过简单的文件描述符访问相应资源,具体细节交于操作系统,有效解耦,优美高效。
...
...
This diff is collapsed.
点击以展开。
数据结构系列/二叉搜索树操作集锦.md
+
1
−
1
浏览文件 @
d1273c01
# 二叉搜索树操作集锦
通过之前的文章
[
框架思维
](
../算法思维系列/学习数据结构和算法的
框架思维
.md
)
,二叉树的遍历框架应该已经印到你的脑子里了,这篇文章就来实操一下,看看框架思维是怎么灵活运用,秒杀一切二叉树问题的。
通过之前的文章
[
框架思维
](
../算法思维系列/学习数据结构和算法的
高效方法
.md
)
,二叉树的遍历框架应该已经印到你的脑子里了,这篇文章就来实操一下,看看框架思维是怎么灵活运用,秒杀一切二叉树问题的。
二叉树算法的设计的总路线:明确一个节点要做的事情,然后剩下的事抛给框架。
...
...
This diff is collapsed.
点击以展开。
预览
0%
加载中
请重试
或
添加新附件
.
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
保存评论
取消
想要评论请
注册
或
登录