在刷了一部分leetcode算法题之后,想要回头系统复习一下,发现刷的比较乱,特此整理一下,方便后续二刷,主要是对各种类型算法的一个分类,以及比较典型的题目的整理。
共60
道需要掌握,90
道需要练习。
学习说明
- 题目来源LeetCode
- 参考代码是用Java写的
- 供自己方便学习
算法分类
1. 二叉树
树也是一种非常重要的数据结构,因为很多容器的底层都设计到树,所以树也成了面试常问的重点了。特别是二叉树及二叉搜索树的算法
。
二叉树的问题相对简单,要灵活掌握递归和迭代的实现方法。以下7道题需要掌握以及18道扩展练习(7 + 18
)。
二叉树的考点 | 题目来源 | 扩展 | 题解参考 |
---|---|---|---|
二叉树的遍历 (递归和迭代实现) |
102. 二叉树的层序遍历 | 144. 前序遍历 94. 中序遍历 145. 后序遍历 199. 二叉树的右视图 |
算法分析之二叉树遍历 |
二叉树属性问题 | 104. 二叉树的最大深度 | 111. 二叉树的最小深度 513. 找树左下角的值 112. 路径总和 110. 平衡二叉树 257. 二叉树的所有路径 |
算法分析之二叉树常见问题 |
二叉树子树问题 | 572. 另一棵树的子树 | 100. 相同的树 | LeetCode官方题解(三种方法) |
二叉树改造问题 | 106. 从中序与后序遍历序列构造二叉树 | 105. 从前序与中序遍历序列构造二叉树 617. 合并二叉树 654. 最大二叉树 |
算法分析之二叉树常见问题 |
二叉树公共祖先问题 | 236. 二叉树的最近公共祖先 | 235. 二叉搜索树的最近公共祖先 | 算法分析之二叉树常见问题 |
二叉搜索树属性问题 | 98. 验证二叉搜索树 | 530. 二叉搜索树的最小绝对差 501. 二叉搜索树中的众数 538. 把二叉搜索树转换为累加树 |
算法分析之二叉树常见问题 |
二叉搜索树改造问题 | 108. 将有序数组转换为二叉搜索树 | 669. 修剪二叉搜索树 | 算法分析之二叉树常见问题 |
2. 动态规划dp
dp说简单也简单,说难也实在是太难了,重点是如何找到里面的状态转移方程
。但dp是面试比较频繁的考点,需要灵活掌握,遇到dp问题时怎么快速找到转移方程。
以下12道题需要掌握以及19道扩展练习(12 + 19
)。
动态规划的考点 | 题目来源 | 扩展 | 题解参考 |
---|---|---|---|
01背包问题 | 474. 一和零 | 416. 分割等和子集 494. 目标和 |
动态规划之背包问题——01背包 |
完全背包 |