时间有限,我们来思考一下怎么最快地从宏观角度学习下算法。
单调栈 3h
一堆数组里面找大小就可以考虑用单调栈啦。
接雨水和柱形图最大矩形是进阶,是面试常问的题目,也可以考虑用双指针。
todo:
- 整理单调栈 1h
- 接雨水 2h
图论 4h
主要就是 DFS 和 BFS。
底层还是回溯。
此外还有并查集问题。
- 了解图论相关基础 1h
- 岛屿数量两种解法:dfs 1h 和 bfs 1h
- 简单了解下并查集概念 0.5h
- 寻找图中是否存在路径 0.5h
回溯法 5.5h
深度遍历和剪枝。
- 基础理论
- 组合问题 0.5h
- 切割问题 1h
- 子集问题 1h
- 排列问题 0.5h
- 去重问题 0.5h
- 棋盘问题
- N皇后问题 2h
二叉树 7h
- 基础上理论 1h 有个总结图
- 二叉树:
- 从前序与中序/中序与后序遍历序列构造二叉树 1h 看其中一个顺序,另一个简单过一下
- 二叉树的最大深度 0.5h
- 翻转二叉树 0.5h
- 对称二叉树 0.5h
- 层次遍历:二叉树的层序遍历 1h
- 二叉搜索树:二叉搜索树中第k小的元素 1h 简单看看验证二叉搜索树 0.5h
- 补充下字典树:实现 Trie(前缀树) 1h
滑动窗口 1h
补充无重复字符串的最大子串 1h
数组 3h
- 除自身以外数组的乘积 1h
- 合并区间 1h
- kadana 算法:最大子数组和 1h
矩阵 2h
螺旋矩阵、旋转矩阵、矩阵置零挑两个做 2h
二分查找 1h
做两道简单的吧:
- 猜数字大小 0.5h
- 搜索插入位置 0.5h
位运算 0.5h
- 只出现一次的数字 0.5h