算法(47)-接下来学习的规划调整

时间有限,我们来思考一下怎么最快地从宏观角度学习下算法。

单调栈 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