一位算法工程师的自我修养
数据结构与算法
- 基本算法思想
- 动态规划
- 贪心算法
- 回溯算法
- 分治算法
- 枚举算法
- 时间复杂度
- 空间复杂度
- 最大复杂度
- 平均复杂度
- 动态数组
- 树状数组
- 矩阵
- 栈
- 队列
- 阻塞队列
- 并发队列
- 双端队列
- 优先队列
- 堆
- 多级反馈队列
- 顺序表
- 链表
- 单链表
- 双向链表
- 循环链表
- 双向循环链表
- 跳跃表
- 并查集
- 散列函数
- 碰撞解决办法:
- 开放地址法
- 链地址法
- 再次哈希法
- 建立公共溢出区
- 布隆过滤器
- 位图
- 动态扩容
- 二叉树: 各种遍历,递归与非递归
- 二叉查找树
- 平衡二叉树
- 【一位算法工程师的自我修养】平衡二叉搜索树
- AVL树
- 红黑树
- 完全二叉树
- 多路查找树
- B树
- B+ 树
- 2-3树
- 2-3-4树
- 哈夫曼树与编码
- 前缀树
- 线段树
- 堆
- 小顶堆
- 大顶堆
- 二项堆
- 优先队列
- 斐波那契堆
- 图的存储
- 邻接矩阵
- 邻接表
- 关键路径
- 最小生成树
- 最短路径
- 拓扑排序
- 简单排序:
- 插入排序
- 选择排序
- 冒泡排序
- 分治排序:
- 快速排序 : 注意轴的选取方式
- 归并排序
- 分配排序:
- 桶排序
- 基数排序
- 树状排序:
- 堆排序
- 计数排序
- 希尔排序
图论算法
- 图的表示:
- 邻接矩阵
- 邻接表
- 遍历算法:
- 深度搜索
- 广度搜索
- 查找算法:
- 二分查找
- 散列表查找
- 树结构查找
- 最短路径算法:
- Floyd
- Dijkstra
- 最小生成树算法:
- Prim
- Kruskal
- 实际常用算法:
- 关键路径
- 拓扑排序
- 二分图匹配:
- 配对算法
- 匈牙利算法
- 拓展:
- 中心性算法
- 社区算法
- 并查集
搜索与回溯算法
- 贪心算法
- 启发式搜索算法:
- A*寻路算法
- 地图着色算法
- N皇后问题
- 最优加工算法
- 旅行商问题
动态规划
- 树形DP:
- 01背包问题
- 线性DP:
- 最长公共子序列
- 最长公共子串
- 区间DP:
- 矩阵最大值
- 矩阵最大和
- 矩阵最大积
- 数位DP:
- 数字游戏
- 状态压缩DP:
- 旅行商
字符串匹配算法
- 旅行商
- 正则表达式
- 暴力匹配算法
- 模式匹配:
- KMP
- Boyer-Moore
- Trie
流相关算法
- 最大流:
- 最短增广路
- Dinic算法
- 最大流最小割:
- 最大收益问题
- 方格取数问题
- 最小费用最大流:
- 最小费用路
- 消遣
推荐阅读
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 画解算法(1.|画解算法:1. 两数之和)
- Guava|Guava RateLimiter与限流算法
- 一个选择排序算法
- 姑爷
- SG平滑轨迹算法的原理和实现
- 《算法》-图[有向图]
- 诱惑的世界
- 九藏拾遗
- LeetCode算法题-11.|LeetCode算法题-11. 盛最多水的容器(Swift)