返回上一级
剑指 offer
剑指 offer 这本书买回来也有七八年了,但实际上一直没有看过,偶尔会拜读一下 心谭 的博客,每次阅读都所获颇丰。第一次开始大量阅读 leetcode 代码是在 2021 年,彼时所在团队动荡,作为面试官我是整个团队唯一一个考察面试者算法能力的,通常我会在面试的前几天遴选 5 道题然后背诵各种解法以备面试者提问(通常我会背诵到后半夜,大概算得上是一个负责任的面试官了),就这样断断续续了小半年时间。
因为自身原因我选择训练的方式是心流,反复映射理解方式不去过度背诵(具体场景例外,比如面试、考试),实际上这是不是办法的办法,我没有太长期的记忆,而且有一定的认知缺陷。通过心流训练,通过强理解力可以在需要时阅读资料快速的回忆起知识点,举个例子双精度浮点数 全文断断续续写了好几天,知识点也只有大学本科的普通难度,但是每次会看都没有印象,这个时候只要专注阅读一边后,大致就可以找回大部分理解了。这种强化理解力的能力帮助在高考的时候差几分就拿到了数学满分(没有满分是一辈子的遗憾,而且无法再弥补)。
数据结构
| 线性数据结构
|
数组 |
链表 |
栈 |
队列 |
哈希表
|
| 非线性结构
|
树 |
堆 |
图 |
哈希表 |
|
| 树状结构
|
树 |
堆 |
哈希表 |
|
|
| 网状结构
|
图 |
|
|
|
|
| 数据结构
|
逻辑结构 |
物理结构
|
| 基础数据类型 |
|
| 数字编码 |
字符编码
|
| 数组与链表
|
连续与分散存储方式
|
| 两者操作方式与优缺点
|
| 基于动态数组实现列表
|
| 计算机内存与缓存
|
| 栈与队列
|
先入后出 |
先入先出 |
双向队列
|
| 基于链表和数组实现
|
| 哈希表
|
哈希表工作原理 |
基于数组实现
|
| 哈希冲突 |
链式地址 |
开放寻址
|
| 哈希算法的用途与实现
|
| 树
|
完美二叉树 |
完全二叉树 |
完满二叉树 |
平衡二叉树
|
| 链表表示 |
数组表示
|
| 层序遍历 |
前序遍历 |
中序遍历 |
后序遍历
|
| 二叉搜索树
|
| AVL树
|
| 堆
|
小顶堆 |
大顶堆 |
优先队列
|
| 基于数组实现 |
建堆实现
|
| Top-k
|
| 图
|
有向图 |
连通图 |
有权图
|
| 邻接矩阵 |
邻接表
|
| 广度优先遍历 |
深度优先遍历
|
复杂度分析
| 迭代与递归
|
for循环 |
while循环 |
嵌套循环
|
| 递归调用栈 |
尾递归 |
递归树
|
| 迭代与递归区别
|
| 时间复杂度
|
函数渐近上界
|
| 推算方法 |
常见类型
|
| 最差时间复杂度 |
最佳时间复杂度 |
平均时间复杂度
|
| 空间复杂度
|
推算方法 |
常见类型
|
| 时间与空间权衡
|
算法
| 搜索
|
暴力搜索
|
线性搜索 |
广度与深度优先搜索
|
| 高效搜索
|
二分查找 |
哈希查找 |
树查找
|
| 排序
|
就地性 |
稳定性 |
自适应性
|
| 遍历
|
选择排序 |
冒泡排序 |
插入排序
|
| 分治
|
快速排序 |
归并排序 |
堆排序
|
| 非比较
|
桶排序 |
计数排序 |
基数排序
|
| 分治
|
分治特性
|
| 回溯
|
回溯特性
|
| 动态规划
|
暴力搜索 |
记忆化搜索 |
递推
|
| 重叠子问题 |
最优子问题 |
无后效性
|
| 贪心
|
贪心特性
|
Leetcode
通识
| 魔法数 |
示例 |
示例
|
| 示例 |
示例 |
示例
|
| 示例 |
示例 |
示例
|
算法空间
常用