diff --git a/README.md b/README.md index ec80f3805650284057aa115ae45a7ef118feb1fc..df46d23b8017f0129254877fb7398d6de83b3799 100644 --- a/README.md +++ b/README.md @@ -47,12 +47,12 @@ English version repo and Gitbook is on [english branch](https://github.com/labul **3、建议收藏我的在线网站,每篇文章开头都有对应的力扣题目链接,可以边看文章边刷题**: -Gitee Pages 地址:https://labuladong.gitee.io/algo/ (推荐) +Gitee Pages 地址:https://labuladong.gitee.io/algo/ GitHub Pages 地址:https://labuladong.github.io/algo/ -**4、欢迎关注 [我的知乎](https://www.zhihu.com/people/labuladong)**。 +**4、欢迎关注 [我的知乎](https://www.zhihu.com/people/labuladong) 和 [B 站](https://space.bilibili.com/14089380)**。 我一直在写优质文章,但是后续的文章只发布到公众号/网站/知乎,不能开放到 GitHub。因为本仓库太火了,很多人直接拿我的文章去开付费专栏,价格还不便宜,我这免费写给您看,何必掏冤枉钱呢?所以多多关注本作者,多多宣传,谁也不希望劣币驱逐良币不是么? @@ -60,91 +60,183 @@ GitHub Pages 地址:https://labuladong.github.io/algo/ # 目录 -* 第零章、必读系列 - * [学习算法和刷题的框架思维](算法思维系列/学习数据结构和算法的高效方法.md) - * [学习数据结构和算法读什么书](算法思维系列/为什么推荐算法4.md) - * [动态规划解题框架](动态规划系列/动态规划详解进阶.md) - * [动态规划答疑篇](动态规划系列/最优子结构.md) - * [回溯算法解题框架](算法思维系列/回溯算法详解修订版.md) +### 第零章、必读文章 + + * [学习算法和刷题的框架思维](算法思维系列/学习数据结构和算法的高效方法.md) + * [我的刷题心得](技术/算法心得.md) + * [动态规划解题套路框架](https://labuladong.gitee.io/plugin-v3/?qno=509) + * [回溯算法解题套路框架](https://labuladong.gitee.io/plugin-v3/?qno=51) + * [BFS 算法解题套路框架](https://labuladong.gitee.io/plugin-v3/?qno=111) + * [手把手带你刷二叉树(纲领篇)](https://labuladong.gitee.io/plugin-v3/?qno=104) + * [一文搞懂单链表的六大解题套路](https://labuladong.gitee.io/plugin-v3/?qno=21) + * [一文秒杀所有岛屿题目](https://labuladong.gitee.io/plugin-v3/?qno=200) + * [我写了首诗,让你闭着眼睛也能写对二分搜索](https://labuladong.gitee.io/plugin-v3/?qno=704) + * [我写了首诗,把滑动窗口算法算法变成了默写题](https://labuladong.gitee.io/plugin-v3/?qno=76) + * [一个方法团灭 LeetCode 股票买卖问题](https://labuladong.gitee.io/plugin-v3/?qno=121) + * [一个方法团灭 LeetCode 打家劫舍问题](https://labuladong.gitee.io/plugin-v3/?qno=198) + * [一个方法团灭 nSum 问题](https://labuladong.gitee.io/plugin-v3/?qno=15) * [提高刷题幸福感的小技巧](技术/刷题技巧.md) - * [为了学会二分查找,我写了首诗](算法思维系列/二分查找详解.md) - * [滑动窗口解题框架](算法思维系列/滑动窗口技巧.md) - * [双指针技巧解题框架](算法思维系列/双指针技巧.md) - * [Linux的进程、线程、文件描述符是什么](技术/linux进程.md) - * [Git/SQL/正则表达式的在线练习平台](技术/在线练习平台.md) -* 第一章、动态规划系列 - * [动态规划详解](动态规划系列/动态规划详解进阶.md) - * [动态规划答疑篇](动态规划系列/最优子结构.md) - * [动态规划设计:最长递增子序列](动态规划系列/动态规划设计:最长递增子序列.md) - * [编辑距离](动态规划系列/编辑距离.md) - * [经典动态规划:0-1 背包问题](动态规划系列/背包问题.md) - * [经典动态规划问题:高楼扔鸡蛋](动态规划系列/高楼扔鸡蛋问题.md) - * [经典动态规划问题:高楼扔鸡蛋(进阶)](动态规划系列/高楼扔鸡蛋进阶.md) - * [动态规划之子序列问题解题模板](动态规划系列/子序列问题模板.md) - * [动态规划之博弈问题](动态规划系列/动态规划之博弈问题.md) - * [贪心算法之区间调度问题](动态规划系列/贪心算法之区间调度问题.md) - * [动态规划之KMP字符匹配算法](动态规划系列/动态规划之KMP字符匹配算法.md) - * [团灭 LeetCode 股票买卖问题](动态规划系列/团灭股票问题.md) - * [团灭 LeetCode 打家劫舍问题](动态规划系列/抢房子.md) - * [动态规划之四键键盘](动态规划系列/动态规划之四键键盘.md) - * [动态规划之正则表达](动态规划系列/动态规划之正则表达.md) - * [最长公共子序列](动态规划系列/最长公共子序列.md) -* 第二章、数据结构系列 - * [学习算法和刷题的思路指南](算法思维系列/学习数据结构和算法的高效方法.md) - * [学习数据结构和算法读什么书](算法思维系列/为什么推荐算法4.md) - * [二叉堆详解实现优先级队列](数据结构系列/二叉堆详解实现优先级队列.md) - * [LRU算法详解](高频面试系列/LRU算法.md) - * [二叉搜索树操作集锦](数据结构系列/二叉搜索树操作集锦.md) - * [特殊数据结构:单调栈](数据结构系列/单调栈.md) - * [特殊数据结构:单调队列](数据结构系列/单调队列.md) - * [设计Twitter](数据结构系列/设计Twitter.md) - * [递归反转链表的一部分](数据结构系列/递归反转链表的一部分.md) - * [队列实现栈\|栈实现队列](数据结构系列/队列实现栈栈实现队列.md) -* 第三章、算法思维系列 - * [算法学习之路](算法思维系列/算法学习之路.md) - * [回溯算法详解](算法思维系列/回溯算法详解修订版.md) - * [回溯算法团灭排列、组合、子集问题](高频面试系列/子集排列组合.md) - * [二分查找详解](算法思维系列/二分查找详解.md) - * [双指针技巧总结](算法思维系列/双指针技巧.md) - * [滑动窗口技巧](算法思维系列/滑动窗口技巧.md) - * [twoSum问题的核心思想](算法思维系列/twoSum问题的核心思想.md) - * [常用的位操作](算法思维系列/常用的位操作.md) - * [拆解复杂问题:实现计算器](数据结构系列/实现计算器.md) - * [烧饼排序](算法思维系列/烧饼排序.md) - * [前缀和技巧](算法思维系列/前缀和技巧.md) - * [字符串乘法](算法思维系列/字符串乘法.md) - * [FloodFill算法详解及应用](算法思维系列/FloodFill算法详解及应用.md) - * [区间调度之区间合并问题](算法思维系列/区间调度问题之区间合并.md) - * [区间调度之区间交集问题](算法思维系列/区间交集问题.md) - * [信封嵌套问题](算法思维系列/信封嵌套问题.md) - * [几个反直觉的概率问题](算法思维系列/几个反直觉的概率问题.md) - * [洗牌算法](算法思维系列/洗牌算法.md) - * [递归详解](算法思维系列/递归详解.md) -* 第四章、高频面试系列 - * [如何实现LRU算法](高频面试系列/LRU算法.md) - * [如何高效寻找素数](高频面试系列/打印素数.md) - * [如何计算编辑距离](动态规划系列/编辑距离.md) - * [如何运用二分查找算法](高频面试系列/koko偷香蕉.md) - * [如何高效解决接雨水问题](高频面试系列/接雨水.md) - * [如何去除有序数组的重复元素](高频面试系列/如何去除有序数组的重复元素.md) - * [如何寻找最长回文子串](高频面试系列/最长回文子串.md) - * [如何k个一组反转链表](高频面试系列/k个一组反转链表.md) - * [如何判定括号合法性](高频面试系列/合法括号判定.md) - * [如何寻找消失的元素](高频面试系列/消失的元素.md) - * [如何寻找缺失和重复的元素](高频面试系列/缺失和重复的元素.md) - * [如何判断回文链表](高频面试系列/判断回文链表.md) - * [如何在无限序列中随机抽取元素](高频面试系列/水塘抽样.md) - * [如何调度考生的座位](高频面试系列/座位调度.md) - * [Union-Find算法详解](算法思维系列/UnionFind算法详解.md) - * [Union-Find算法应用](算法思维系列/UnionFind算法应用.md) - * [一行代码就能解决的算法题](高频面试系列/一行代码解决的智力题.md) - * [二分查找高效判定子序列](高频面试系列/二分查找判定子序列.md) -* 第五章、计算机技术 - * [Linux的进程、线程、文件描述符是什么](技术/linux进程.md) - * [一文看懂 session 和 cookie](技术/session和cookie.md) - * [关于 Linux shell 你必须知道的](技术/linuxshell.md) - * [加密算法的前身今世](技术/密码技术.md) - * [Git/SQL/正则表达式的在线练习平台](技术/在线练习平台.md) + + +### 第一章、手把手刷数据结构 + + * [手把手刷链表题目](https://labuladong.gitee.io/algo/) + * [一文搞懂单链表的六大解题套路](https://labuladong.gitee.io/plugin-v3/?qno=21) + * [递归反转链表的一部分](https://labuladong.gitee.io/plugin-v3/?qno=206) + * [如何 K 个一组反转链表](https://labuladong.gitee.io/plugin-v3/?qno=25) + * [如何判断回文链表](https://labuladong.gitee.io/plugin-v3/?qno=234) + + * [手把手刷二叉树](https://labuladong.gitee.io/algo/) + * [手把手带你刷二叉树(纲领篇)](https://labuladong.gitee.io/plugin-v3/?qno=104) + * [手把手带你刷二叉树(第一期)](https://labuladong.gitee.io/plugin-v3/?qno=226) + * [手把手带你刷二叉树(第二期)](https://labuladong.gitee.io/plugin-v3/?qno=654) + * [手把手带你刷二叉树(第三期)](https://labuladong.gitee.io/plugin-v3/?qno=652) + * [手把手带你刷二叉搜索树(第一期)](https://labuladong.gitee.io/plugin-v3/?qno=230) + * [手把手带你刷二叉搜索树(第二期)](https://labuladong.gitee.io/plugin-v3/?qno=450) + * [手把手带你刷二叉搜索树(第三期)](https://labuladong.gitee.io/plugin-v3/?qno=96) + * [美团面试官:你对后序遍历一无所知](https://labuladong.gitee.io/plugin-v3/?qno=1373) + * [二叉树的序列化,就那几个框架,枯燥至极](https://labuladong.gitee.io/plugin-v3/?qno=297) + * [题目不让我干什么,我偏要干什么](https://labuladong.gitee.io/plugin-v3/?qno=341) + * [Git原理之最近公共祖先](https://labuladong.gitee.io/plugin-v3/?qno=236) + * [如何计算完全二叉树的节点数](https://labuladong.gitee.io/plugin-v3/?qno=222) + * [二叉树八股文:递归改迭代](数据结构系列/迭代遍历二叉树.md) + + * [手把手刷图算法](https://labuladong.gitee.io/algo/) + * [图论基础](https://labuladong.gitee.io/plugin-v3/?qno=797) + * [拓扑排序详解及运用](https://labuladong.gitee.io/plugin-v3/?qno=207) + * [二分图判定](https://labuladong.gitee.io/plugin-v3/?qno=785) + * [Union-Find算法详解](https://labuladong.gitee.io/plugin-v3/?qno=323) + * [Union-Find算法应用](https://labuladong.gitee.io/plugin-v3/?qno=130) + * [Kruskal 最小生成树算法](https://labuladong.gitee.io/plugin-v3/?qno=261) + * [Prim 最小生成树算法](数据结构系列/prim算法.md) + * [众里寻他千百度:名流问题](https://labuladong.gitee.io/plugin-v3/?qno=277) + * [我写了一个模板,把 Dijkstra 算法变成了默写题](https://labuladong.gitee.io/plugin-v3/?qno=743) + + * [手把手设计数据结构](https://labuladong.gitee.io/algo/) + * [算法就像搭乐高:带你手撸 LRU 算法](https://labuladong.gitee.io/plugin-v3/?qno=146) + * [算法就像搭乐高:带你手撸 LFU 算法](https://labuladong.gitee.io/plugin-v3/?qno=460) + * [前缀树算法模板秒杀五道算法题](https://labuladong.gitee.io/plugin-v3/?qno=208) + * [数据结构设计:最大栈](https://labuladong.gitee.io/plugin-v3/?qno=895) + * [一道求中位数的算法题把我整不会了](https://labuladong.gitee.io/plugin-v3/?qno=295) + * [设计朋友圈时间线功能](https://labuladong.gitee.io/plugin-v3/?qno=355) + * [单调栈结构解决三道算法题](https://labuladong.gitee.io/plugin-v3/?qno=496) + * [单调队列结构解决滑动窗口问题](https://labuladong.gitee.io/plugin-v3/?qno=239) + * [二叉堆详解实现优先级队列](数据结构系列/二叉堆详解实现优先级队列.md) + * [队列实现栈以及栈实现队列](https://labuladong.gitee.io/plugin-v3/?qno=232) + + * [手把手刷数组题目](https://labuladong.gitee.io/algo/) + * [小而美的算法技巧:前缀和数组](https://labuladong.gitee.io/plugin-v3/?qno=303) + * [小而美的算法技巧:差分数组](https://labuladong.gitee.io/plugin-v3/?qno=370) + * [二维数组的花式遍历技巧](https://labuladong.gitee.io/plugin-v3/?qno=48) + * [双指针技巧总结](https://labuladong.gitee.io/plugin-v3/?qno=167) + * [我写了首诗,把滑动窗口算法算法变成了默写题](https://labuladong.gitee.io/plugin-v3/?qno=76) + * [我写了首诗,让你闭着眼睛也能写对二分搜索](https://labuladong.gitee.io/plugin-v3/?qno=704) + * [二分搜索怎么用?我又总结了套路](https://labuladong.gitee.io/plugin-v3/?qno=875) + * [我和快手面试官对二分搜索进行了深度探讨](https://labuladong.gitee.io/plugin-v3/?qno=410) + * [田忌赛马背后的算法决策](https://labuladong.gitee.io/plugin-v3/?qno=870) + * [给我常数时间,我可以删除/查找数组中的任意元素](https://labuladong.gitee.io/plugin-v3/?qno=380) + * [带权重的随机选择算法](https://labuladong.gitee.io/plugin-v3/?qno=528) + * [一道数组去重的算法题把我整不会了](https://labuladong.gitee.io/plugin-v3/?qno=316) + * [如何去除有序数组的重复元素](https://labuladong.gitee.io/plugin-v3/?qno=26) + * [twoSum问题的核心思想](https://labuladong.gitee.io/plugin-v3/?qno=1) + +### 第二章、手把手刷动态规划 + + * [动态规划基本技巧](https://labuladong.gitee.io/algo/) + * [动态规划解题核心框架](https://labuladong.gitee.io/plugin-v3/?qno=509) + * [动态规划设计:最长递增子序列](https://labuladong.gitee.io/plugin-v3/?qno=300) + * [最优子结构原理和 dp 数组遍历方向](动态规划系列/最优子结构.md) + * [base case 和备忘录的初始值怎么定?](https://labuladong.gitee.io/plugin-v3/?qno=931) + * [对动态规划进行降维打击](动态规划系列/状态压缩技巧.md) + * [动态规划和回溯算法到底谁是谁爹?](https://labuladong.gitee.io/plugin-v3/?qno=494) + + * [子序列类型问题](https://labuladong.gitee.io/algo/) + * [经典动态规划:编辑距离](https://labuladong.gitee.io/plugin-v3/?qno=72) + * [动态规划设计:最长递增子序列](https://labuladong.gitee.io/plugin-v3/?qno=300) + * [二维递增子序列:信封嵌套问题](https://labuladong.gitee.io/plugin-v3/?qno=354) + * [动态规划设计:最大子数组](https://labuladong.gitee.io/plugin-v3/?qno=53) + * [经典动态规划:最长公共子序列](https://labuladong.gitee.io/plugin-v3/?qno=1143) + * [动态规划之子序列问题解题模板](https://labuladong.gitee.io/plugin-v3/?qno=516) + + * [背包类型问题](https://labuladong.gitee.io/algo/) + * [经典动态规划:0-1 背包问题](动态规划系列/背包问题.md) + * [经典动态规划:子集背包问题](https://labuladong.gitee.io/plugin-v3/?qno=416) + * [经典动态规划:完全背包问题](https://labuladong.gitee.io/plugin-v3/?qno=518) + + * [用动态规划玩游戏](https://labuladong.gitee.io/algo/) + * [动态规划之最小路径和](https://labuladong.gitee.io/plugin-v3/?qno=64) + * [动态规划帮我通关了《魔塔》](https://labuladong.gitee.io/plugin-v3/?qno=174) + * [动态规划帮我通关了《辐射4》](https://labuladong.gitee.io/plugin-v3/?qno=514) + * [旅游省钱大法:加权最短路径](https://labuladong.gitee.io/plugin-v3/?qno=787) + * [经典动态规划:正则表达式](https://labuladong.gitee.io/plugin-v3/?qno=10) + * [经典动态规划:高楼扔鸡蛋](动态规划系列/高楼扔鸡蛋问题.md) + * [经典动态规划:高楼扔鸡蛋(进阶)](动态规划系列/高楼扔鸡蛋进阶.md) + * [经典动态规划:戳气球](https://labuladong.gitee.io/plugin-v3/?qno=312) + * [经典动态规划:博弈问题](动态规划系列/动态规划之博弈问题.md) + * [经典动态规划:四键键盘](https://labuladong.gitee.io/plugin-v3/?qno=651) + * [一个方法团灭 LeetCode 打家劫舍问题](https://labuladong.gitee.io/plugin-v3/?qno=198) + * [一个方法团灭 LeetCode 股票买卖问题](https://labuladong.gitee.io/plugin-v3/?qno=121) + * [有限状态机之 KMP 字符匹配算法](https://labuladong.gitee.io/plugin-v3/?qno=28) + * [构造回文的最小插入次数](https://labuladong.gitee.io/plugin-v3/?qno=1312) + + * [贪心类型问题](https://labuladong.gitee.io/algo/) + * [贪心算法之区间调度问题](https://labuladong.gitee.io/plugin-v3/?qno=435) + * [扫描线技巧:安排会议室](https://labuladong.gitee.io/plugin-v3/?qno=253) + * [剪视频剪出一个贪心算法](https://labuladong.gitee.io/plugin-v3/?qno=1024) + * [如何运用贪心思想玩跳跃游戏](https://labuladong.gitee.io/plugin-v3/?qno=55) + * [当老司机学会了贪心算法](https://labuladong.gitee.io/plugin-v3/?qno=134) + +### 第三章、必知必会算法技巧 + + * [暴力搜索算法](https://labuladong.gitee.io/algo/) + * [回溯算法解题套路框架](https://labuladong.gitee.io/plugin-v3/?qno=51) + * [经典回溯算法:集合划分问题](https://labuladong.gitee.io/plugin-v3/?qno=698) + * [回溯算法团灭子集、排列、组合问题](https://labuladong.gitee.io/plugin-v3/?qno=78) + * [回溯算法最佳实践:解数独](https://labuladong.gitee.io/plugin-v3/?qno=37) + * [回溯算法最佳实践:括号生成](https://labuladong.gitee.io/plugin-v3/?qno=22) + * [BFS 算法解题套路框架](https://labuladong.gitee.io/plugin-v3/?qno=111) + * [如何用 BFS 算法秒杀各种智力题](https://labuladong.gitee.io/plugin-v3/?qno=773) + + * [数学运算技巧](https://labuladong.gitee.io/algo/) + * [常用的位操作](https://labuladong.gitee.io/plugin-v3/?qno=191) + * [讲两道常考的阶乘算法题](https://labuladong.gitee.io/plugin-v3/?qno=172) + * [如何高效寻找素数](https://labuladong.gitee.io/plugin-v3/?qno=204) + * [如何高效进行模幂运算](https://labuladong.gitee.io/plugin-v3/?qno=372) + * [如何寻找缺失的元素](https://labuladong.gitee.io/plugin-v3/?qno=268) + * [如何同时寻找缺失和重复的元素](https://labuladong.gitee.io/plugin-v3/?qno=645) + * [如何在无限序列中随机抽取元素](https://labuladong.gitee.io/plugin-v3/?qno=382) + * [一行代码就能解决的算法题](https://labuladong.gitee.io/plugin-v3/?qno=292) + * [几个反直觉的概率问题](算法思维系列/几个反直觉的概率问题.md) + + * [其他算法技巧](https://labuladong.gitee.io/algo/) + * [快速排序亲兄弟:快速选择算法](https://labuladong.gitee.io/plugin-v3/?qno=215) + * [分治算法详解:运算优先级](https://labuladong.gitee.io/plugin-v3/?qno=241) + * [一个方法解决三道区间问题](https://labuladong.gitee.io/plugin-v3/?qno=1288) + + * [经典面试题](https://labuladong.gitee.io/algo/) + * [谁能想到,斗地主也能玩出算法](https://labuladong.gitee.io/plugin-v3/?qno=659) + * [东哥吃葡萄时竟然吃出一道算法题!](高频面试系列/吃葡萄.md) + * [烧饼排序算法](https://labuladong.gitee.io/plugin-v3/?qno=969) + * [字符串乘法计算](https://labuladong.gitee.io/plugin-v3/?qno=43) + * [如何实现一个计算器](https://labuladong.gitee.io/plugin-v3/?qno=224) + * [如何高效解决接雨水问题](https://labuladong.gitee.io/plugin-v3/?qno=42) + * [如何寻找最长回文子串](https://labuladong.gitee.io/plugin-v3/?qno=5) + * [如何解决括号相关的问题](https://labuladong.gitee.io/plugin-v3/?qno=20) + * [如何判定完美矩形](https://labuladong.gitee.io/plugin-v3/?qno=391) + * [如何调度考生的座位](https://labuladong.gitee.io/plugin-v3/?qno=855) + * [二分查找高效判定子序列](https://labuladong.gitee.io/plugin-v3/?qno=392) + +### 第四章、通用计算机技术 + + * [Linux 文件系统都是什么鬼](技术/linux文件系统.md) + * [Linux 的进程、线程、文件描述符是什么](技术/linux进程.md) + * [关于 Linux shell 你必须知道的](技术/linuxshell.md) + * [Linux shell 的实用小技巧](技术/linuxshell技巧.md) + * [Linux 管道符原理大揭秘](高频面试系列/linux技巧3.md) + * [一文看懂 session 和 cookie](技术/session和cookie.md) + * [加密算法的前身今世](技术/密码技术.md) + * [我用四个命令概括了 Git 的所有套路](技术/git常用命令.md) + * [Git/SQL/正则表达式的在线练习平台](技术/在线练习平台.md) # 感谢如下大佬参与翻译