labuladong /fucking-algorithm

Crack LeetCode, not only how, but also why.

★ 136,045⑂ 23,533👁 2,258⑃ 511● 983▤ 0◈ 0
MarkdownCreated 2020-02-19labuladong.online/
136,045
stars
+6
23,533
forks
2,258
watchers
511
prs
983
issues
0
releases
0
discussions

README

English version is on labuladong.online too. Just enjoy:)

 labuladong 的算法笔记

本仓库总共 60 多篇原创文章,都是基于 LeetCode 的题目,涵盖了所有题型和技巧,而且一定要做到举一反三,通俗易懂,绝不是简单的代码堆砌,后面有目录。

我先吐槽几句。刷题刷题,刷的是题,培养的是思维,本仓库的目的就是传递这种算法思维。我要是只写一个包含 LeetCode 题目代码的仓库,有个锤子用?没有思路解释,没有思维框架,顶多写个时间复杂度,那玩意一眼就能看出来。

只想要答案的话很容易,题目评论区五花八门的答案,动不动就秀 python 一行代码解决,有那么多人点赞。问题是,你去做算法题,是去学习编程语言的奇技淫巧的,还是学习算法思维的呢?你的快乐,到底源自复制别人的一行代码通过测试,已完成题目 +1,还是源自自己通过逻辑推理和算法框架不看答案写出解法?

网上总有大佬喷我,说我写的东西太基础,要么说不能借助框架思维来学习算法。我只能说大家刷算法就是找工作吃饭的,不是打竞赛的,我也是一路摸爬滚打过来的,我们要的是清楚明白有所得,不是故弄玄虚无所指。

不想办法做到通俗易懂,难道要上来先把《算法导论》吹上天,然后把人家都心怀敬仰地劝退?

做啥事情做多了,都能发现套路的,我把各种算法套路框架总结出来,相信可以帮助其他人少走弯路。我这个纯靠自学的小童鞋,花了一年时间刷题和总结,自己写了一份算法小抄,后面有目录,这里就不废话了。

 在开始学习之前

1、先给本仓库点个 star,满足一下我的虚荣心,文章质量绝对值你一个 star。我还在继续创作,给我一点继续写文的动力,感谢。

2、建议收藏我的在线网站,每篇文章开头都有对应的力扣题目链接,可以边看文章边刷题,一共可以手把手带你刷 500 道题目:

2024 最新地址:https://labuladong.online/algo/

~~GitHub Pages 地址:https://labuladong.online/algo/~~

~~Gitee Pages 地址:https://labuladong.gitee.io/algo/~~

 labuladong 刷题全家桶简介

 一、算法可视化面板

我的算法网站、所有配套插件都集成了一个算法可视化工具,可以对数据结构和递归过程进行可视化,大幅降低理解算法的难度。几乎每道题目的解法代码都有对应的可视化面板,具体参见下方介绍。


 二、学习网站

内容当然是我的系列算法教程中最核心的部分,我的算法教程都发布在网站 labuladong.online 上,相信你会未来会在这里花费大量的学习时间,而不是仅仅加入收藏夹~

!

 三、Chrome 插件

主要功能:Chrome 插件可以在中文版力扣或英文版 LeetCode 上快捷查看我的「题解」或「思路」,并添加了题目和算法技巧之间的引用关系,可以和我的网站/公众号/课程联动,给我的读者提供最丝滑的刷题体验。安装使用手册见下方目录。

!


 四、vscode 插件

主要功能:和 Chrome 插件功能基本相同,习惯在 vscode 上刷题的读者可以使用该插件。安装使用手册见下方目录。

!


 五、Jetbrains 插件

主要功能:和 Chrome 插件功能基本相同,习惯在 Jetbrains 家的 IDE(PyCharm/Intellij/Goland 等)上刷题的读者可以使用该插件。安装使用手册见下方目录。

!


最后祝大家学习愉快,在题海中自在遨游!


 文章目录




 本站简介

 针对初学和速成的学习规划
   速成目录学习规划
   完整目录学习规划
   算法刷题的重点和坑

 配套学习工具使用指南
   AI 助教随时答疑
   算法可视化面板使用说明
   算法游戏玩法及汇总
   配套 Chrome 刷题插件
   配套 vscode/cursor 刷题插件
   配套 JetBrains 刷题插件
   本站付费会员

 入门:编程语言基础及练习
   本章导读
   C++ 语言基础
   Java 语言基础
   Golang 语言基础
   Python 语言基础
   JavaScript 语言基础
   力扣/LeetCode 解题须知
   编程语言刷题实践
   ACM 模式代码模板

 基础:数据结构及排序精讲
   本章导读
   时间空间复杂度入门

   手把手带你实现动态数组
     数组(顺序存储)基本原理
     动态数组代码实现

   手把手带你实现单/双链表
     链表(链式存储)基本原理
     链表代码实现
     【游戏】实现贪吃蛇

   数组链表的种种变换
     环形数组技巧及实现
     跳表核心原理
     位图原理及实现

   手把手带你实现队列/栈
     队列/栈基本原理
     用链表实现队列/栈
     用数组实现队列/栈
     双端队列(Deque)原理及实现

   哈希表的原理及实现
     哈希表核心原理
     用拉链法实现哈希表
     线性探查法的两个难点
     线性探查法的两种代码实现
     哈希集合的原理及代码实现

   哈希表结构的种种变换
     用链表加强哈希表(LinkedHashMap)
     用数组加强哈希表(ArrayHashMap)
     布隆过滤器原理及实现

   二叉树结构及遍历
     二叉树基础及常见类型
     二叉树的递归/层序遍历
     DFS 和 BFS 的适用场景
     多叉树的递归/层序遍历

   二叉树结构的种种变换
     二叉搜索树的应用及可视化
     红黑树的完美平衡及可视化
     Trie/字典树/前缀树原理及可视化
     二叉堆核心原理及可视化
     二叉堆/优先级队列代码实现
     线段树核心原理及可视化
     数据压缩和霍夫曼树
     正在更新 ing

   图结构基础及算法概览
     图论中的基本术语
     图结构的通用代码实现
     图结构的 DFS/BFS 遍历
     欧拉图和一笔画游戏
     图结构最短路径算法概览
     最小生成树算法概览
     Union Find 并查集原理
     正在更新 ing

   十大排序算法原理及可视化
     本章导读
     排序算法的关键指标
     选择排序所面临的问题
     拥有稳定性:冒泡排序
     运用逆向思维:插入排序
     突破 O(N^2):希尔排序
     妙用二叉树前序位置:快速排序
     妙用二叉树后序位置:归并排序
     二叉堆结构的运用:堆排序
     全新的排序原理:计数排序
     博采众长:桶排序
     基数排序(Radix Sort)

   正在更新 ing


 第零章、核心刷题框架汇总
   本章导读
   学习数据结构和算法的框架思维
  

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON