第一周
数组,链表,跳表:
- Java 源码分析(ArrayList)
- Linked List 的标准实现代码
- Linked List 示例代码
- Java 源码分析(LinkedList)
- LRU Cache - Linked list: LRU 缓存机制
* Redis - Skip List:跳跃表、为啥 Redis 使用跳表(Skip List)而不是使用 Red-Black?
Array 实战题目 - 两数之和(近半年内,字节跳动在面试中考查此题达到 152 次)
- 盛最多水的容器(腾讯、百度、字节跳动在近半年内面试常考)
- 移动零(华为、字节跳动在近半年内面试常考)
- 爬楼梯(阿里巴巴、腾讯、字节跳动在半年内面试常考)
- 三数之和(国内、国际大厂历年面试高频老题)
Linked List 实战题目 - 反转链表(字节跳动、亚马逊在半年内面试常考)
- 两两交换链表中的节点(阿里巴巴、字节跳动在半年内面试常考)
- 环形链表(阿里巴巴、字节跳动、腾讯在半年内面试常考)
- 环形链表 II
- K 个一组翻转链表(字节跳动、猿辅导在半年内面试常考)
栈,队列,优先队列,双端队列
参考链接
实战题目
-
设计循环双端队列(Facebook 在 1 年内面试中考过)
本周作业
简单:
预习题目:
第二周
哈希表,映射,集合
参考链接
树,二叉树,二叉搜索树
参考链接
堆和二叉堆
实战例题
课后作业
-
HeapSort :自学 https://www.geeksforgeeks.org/heap-sort/
-
前 K 个高频元素(亚马逊在半年内面试中常考)
2周作业
简单: -
HeapSort :自学 https://www.geeksforgeeks.org/heap-sort/
中等: -
N 叉树的层序遍历(亚马逊在半年内面试中考过)
-
前 K 个高频元素(亚马逊在半年内面试中常考)
下周预习
预习题目:
第三周
泛型递归,树的递归:
实战题目
- 爬楼梯(阿里巴巴、腾讯、字节跳动在半年内面试常考)
- 括号生成
- 翻转二叉树 (谷歌、字节跳动、Facebook 在半年内面试中考过)
- 验证二叉搜索树(亚马逊、微软、Facebook 在半年内面试中考过)
- 二叉树的最大深度(亚马逊、微软、字节跳动在半年内面试中考过)
- 二叉树的最小深度(Facebook、字节跳动、谷歌在半年内面试中考过)
- 二叉树的序列化与反序列化(Facebook、亚马逊在半年内面试常考)
每日一课 - 如何优雅地计算斐波那契数列
课后作业 - 二叉树的最近公共祖先(Facebook 在半年内面试常考)
- 从前序与中序遍历序列构造二叉树(字节跳动、亚马逊、微软在半年内面试中考过)
- 组合(微软、亚马逊、谷歌在半年内面试中考过)
- 全排列(字节跳动在半年内面试常考)
- 全排列 II (亚马逊、字节跳动、Facebook 在半年内面试中考过)
分治,递归
实战题目
- Pow(x, n)
- 子集
实战题目 - 多数元素 (亚马逊、字节跳动、Facebook 在半年内面试中考过)
- 电话号码的字母组合(亚马逊在半年内面试常考)
- N 皇后
第三周作业
本周作业
中等: - 二叉树的最近公共祖先(Facebook 在半年内面试常考)
- 从前序与中序遍历序列构造二叉树(字节跳动、亚马逊、微软在半年内面试中考过)
- 组合(微软、亚马逊、谷歌在半年内面试中考过)
- 全排列(字节跳动在半年内面试常考)
- 全排列 II (亚马逊、字节跳动、Facebook 在半年内面试中考过)
下周预习
预习题目: - 二叉树的层次遍历
- 分发饼干
- 买卖股票的最佳时机 II
- 跳跃游戏
- x 的平方根
- 有效的完全平方数
第四周
深度优先搜索和广度优先搜索
参考链接
- DFS 代码模板(递归写法、非递归写法)
- BFS 代码模板
- 二叉树的层次遍历
实战题目 - 二叉树的层次遍历
- 最小基因变化
- 括号生成
* 在每个树行中找最大值(微软、亚马逊、Facebook 在半年内面试中考过)
课后作业 - 单词接龙(亚马逊在半年内面试常考)
- 单词接龙 II (微软、亚马逊、Facebook 在半年内面试中考过)
- 岛屿数量(近半年内,亚马逊在面试中考查此题达到 350 次)
- 扫雷游戏(亚马逊、Facebook 在半年内面试中考过)
贪心算法:
参考链接
- coin change 题目
- 动态规划定义
课后作业 - 柠檬水找零(亚马逊在半年内面试中考过)
- 买卖股票的最佳时机 II (亚马逊、字节跳动、微软在半年内面试中考过)
- 分发饼干(亚马逊在半年内面试中考过)
- 模拟行走机器人
- 跳跃游戏 (亚马逊、华为、Facebook 在半年内面试中考过)
- 跳跃游戏 II (亚马逊、华为、字节跳动在半年内面试中考过)
二分查找
参考链接
- 二分查找代码模板
- Fast InvSqrt() 扩展阅读
实战题目 - x 的平方根(字节跳动、微软、亚马逊在半年内面试中考过)
- 有效的完全平方数(亚马逊在半年内面试中考过)
课后作业 - 搜索旋转排序数组(Facebook、字节跳动、亚马逊在半年内面试常考)
- 搜索二维矩阵(亚马逊、微软、Facebook 在半年内面试中考过)
- 寻找旋转排序数组中的最小值(亚马逊、微软、字节跳动在半年内面试中考过)
- 使用二分查找,寻找一个半有序数组 [4, 5, 6, 7, 0, 1, 2] 中间无序的地方
说明:同学们可以将自己的思路、代码写在学习总结中
第4周作业
简单: - 柠檬水找零(亚马逊在半年内面试中考过)
- 买卖股票的最佳时机 II (亚马逊、字节跳动、微软在半年内面试中考过)
- 分发饼干(亚马逊在半年内面试中考过)
- 模拟行走机器人
中等:
- 单词接龙(亚马逊在半年内面试常考)
- 单词接龙 II (微软、亚马逊、Facebook 在半年内面试中考过)
- 岛屿数量(近半年内,亚马逊在面试中考查此题达到 350 次)
- 扫雷游戏(亚马逊、Facebook 在半年内面试中考过)
- 跳跃游戏 (亚马逊、华为、Facebook 在半年内面试中考过)
- 跳跃游戏 II (亚马逊、华为、字节跳动在半年内面试中考过)
- 搜索旋转排序数组(Facebook、字节跳动、亚马逊在半年内面试常考)
- 搜索二维矩阵(亚马逊、微软、Facebook 在半年内面试中考过)
- 寻找旋转排序数组中的最小值(亚马逊、微软、字节跳动在半年内面试中考过)
第 6 周预习
预习题目:
第六周
动态规划:
参考链接
-
MIT 动态规划课程最短路径算法
实战题目 -
爬楼梯(阿里巴巴、腾讯、字节跳动在半年内面试常考)
-
零钱兑换(亚马逊在半年内面试中常考)
实战题目 -
零钱兑换 II (亚马逊、字节跳动在半年内面试中考过)
第6周作业
中等
第七周
高级搜索
参考链接
- DFS 代码模板
- BFS 代码模板
- AlphaZero Explained
- 棋类复杂度
剪枝实战题目解析
实战题目 - 爬楼梯(阿里巴巴、腾讯、字节跳动在半年内面试常考)
- 括号生成
- N 皇后
- 有效的数独(亚马逊、苹果、微软在半年内面试中考过)
- 解数独(亚马逊、华为、微软在半年内面试中考过)
启发式搜索
参考链接
* A* 代码模板 - 二进制矩阵中的最短路径的 A* 解法
实战题目 - 二进制矩阵中的最短路径(亚马逊、字节跳动、Facebook 在半年内面试中考
第7周作业
简单 - 爬楼梯(阿里巴巴、腾讯、字节跳动在半年内面试常考)
中等 - 朋友圈(亚马逊、Facebook、字节跳动在半年内面试中考过)
- 岛屿数量(近半年内,亚马逊在面试中考查此题达到 361 次)
- 被围绕的区域(亚马逊、eBay、谷歌在半年内面试中考过)
- 有效的数独(亚马逊、苹果、微软在半年内面试中考过)
- 括号生成(亚马逊、Facebook、字节跳动在半年内面试中考过)
- 单词接龙(亚马逊、Facebook、谷歌在半年内面试中考过)
- 最小基因变化(谷歌、Twitter、腾讯在半年内面试中考过)
困难 - 单词搜索 II (亚马逊、微软、苹果在半年内面试中考过)
- N 皇后(亚马逊、苹果、字节跳动在半年内面试中考过)
- 解数独(亚马逊、华为、微软在半年内面试中考过)
下周预习题目 - LRU 缓存机制
- 有效的字母异位词
位运算实战:
参考链接 - N 皇后位运算代码示例
实战题目 / 课后作业 - 位 1 的个数(Facebook、苹果在半年内面试中考过)
- 2 的幂(谷歌、亚马逊、苹果在半年内面试中考过)
- 颠倒二进制位(苹果在半年内面试中考过)
- N 皇后(字节跳动、亚马逊、百度在半年内面试中考过)
- N 皇后 II (亚马逊在半年内面试中考过)
- 比特位计数(字节跳动、Facebook、MathWorks 在半年内面试中考过)
LRU Cache的实现和题解
参考链接
- Understanding the Meltdown exploit
* 替换算法总揽 - LRU Cache Python 代码示例
实战题目 / 课后作业 - LRU 缓存机制(亚马逊、字节跳动、Facebook、微软在半年内面试中常考)
第八周
排序算法
参考链接
- 十大经典排序算法
- 快速排序代码示例
- 归并排序代码示例
- 堆排序代码示例
参考链接 - 十大经典排序算法
- 9 种经典排序算法可视化动画
- 6 分钟看完 15 种排序算法动画展示
实战题目 / 课后作业 - 数组的相对排序(谷歌在半年内面试中考过)
- 有效的字母异位词(Facebook、亚马逊、谷歌在半年内面试中考过)
- 力扣排行榜(Bloomberg 在半年内面试中考过)
- 合并区间(Facebook、字节跳动、亚马逊在半年内面试中常考)
- 翻转对(字节跳动在半年内面试中考过)
第8周作业
简单
- 位 1 的个数(Facebook、苹果在半年内面试中考过)
- 2 的幂(谷歌、亚马逊、苹果在半年内面试中考过)
- 颠倒二进制位(苹果在半年内面试中考过)
- 用自己熟悉的编程语言,手写各种初级排序代码,提交到学习总结中。
- 数组的相对排序(谷歌在半年内面试中考过)
- 有效的字母异位词(Facebook、亚马逊、谷歌在半年内面试中考过)
中等 - LRU 缓存机制(亚马逊、字节跳动、Facebook、微软在半年内面试中常考)
- 力扣排行榜(Bloomberg 在半年内面试中考过)
- 合并区间(Facebook、字节跳动、亚马逊在半年内面试中常考)
困难 - N 皇后(字节跳动、亚马逊、百度在半年内面试中考过)
- N 皇后 II (亚马逊在半年内面试中考过)
- 翻转对(字节跳动在半年内面试中考过)
下周预习题目: - 不同路径
- 最小路径和
第九周
高级动态规划
参考链接
- 爬楼梯(阿里巴巴、腾讯、字节跳动在半年内面试常考)
- 不同路径(亚马逊、微软、Facebook 在半年内面试中考过)
- 打家劫舍(字节跳动、谷歌、苹果在半年内面试中考过)
- 最小路径和(字节跳动、谷歌、亚马逊在半年内面试中考过)
- 股票买卖(字节跳动、亚马逊、Facebook 在半年内面试常考)
课后作业
在学习总结中,写出不同路径 2 这道题目的状态转移方程。
参考链接 - 爬楼梯(阿里巴巴、腾讯、字节跳动在半年内面试常考)
- 使用最小花费爬楼梯(亚马逊在半年内面试中考过)
- 编辑距离(字节跳动、亚马逊、谷歌在半年内面试中考过)
课后作业 - 最长上升子序列(字节跳动、亚马逊、微软在半年内面试中考过)
- 解码方法(Facebook、亚马逊、字节跳动在半年内面试中考过)
- 最长有效括号(华为、亚马逊、字节跳动在半年内面试中考过)
- 最大矩形(谷歌、微软、字节跳动在半年内面试中考过)
- 不同的子序列(MathWorks 在半年内面试中考过)
- 赛车(谷歌在半年内面试中考过)
字符串相关
字符串基础知识和引申题目:
参考链接
- 不可变字符串
- Atoi 代码示例
字符串基础问题 - 转换成小写字母(谷歌在半年内面试中考过)
- 最后一个单词的长度(苹果、谷歌、字节跳动在半年内面试中考过)
- 宝石与石头(亚马逊在半年内面试中考过)
- 字符串中的第一个唯一字符
(亚马逊、微软、Facebook 在半年内面试中考过) - 字符串转换整数 (atoi) (亚马逊、微软、Facebook 在半年内面试中考过)
字符串操作问题 - 最长公共前缀(亚马逊、谷歌、Facebook 在半年内面试中考过)
- 反转字符串(亚马逊、谷歌、苹果在半年内面试中考过)
- 反转字符串 II (亚马逊在半年内面试中考过)
- 翻转字符串里的单词(微软、字节跳动、苹果在半年内面试中考过)
- 反转字符串中的单词 III (微软、字节跳动、华为在半年内面试中考过)
- 仅仅反转字母(字节跳动在半年内面试中考过)
异位词问题 - 有效的字母异位词
(Facebook、亚马逊、谷歌在半年内面试中考过) - 字母异位词分组(亚马逊在半年内面试中常考)
- 找到字符串中所有字母异位词(Facebook 在半年内面试中常考)
回文串问题 - 验证回文串(Facebook 在半年内面试中常考)
- 验证回文字符串 Ⅱ(Facebook 在半年内面试中常考)
- 最长回文子串(亚马逊、字节跳动、华为在半年内面试中常考)
高级字符串算法:
最长子串、子序列问题
- 最长公共子序列(亚马逊、字节跳动、谷歌在半年内面试中考过)
- 编辑距离(亚马逊、字节跳动、谷歌在半年内面试中考过)
- 最长回文子串(亚马逊、华为、字节跳动在半年内面试常考)
字符串 +DP 问题 - 正则表达式匹配(Facebook、微软、字节跳动在半年内面试中考过)
- 题解: https://leetcode-cn.com/problems/regular-expression-matching/solution/ji-yu-guan-fang-ti-jie-gen-xiang-xi-de-jiang-jie-b/
- 通配符匹配(Facebook、微软、字节跳动在半年内面试中考过)
- 不同的子序列(MathWorks 在半年内面试中考过)
字符串匹配算法:
参考链接
- Boyer-Moore 算法
- Sunday 算法
- 字符串匹配暴力法代码示例
- Rabin-Karp 代码示例
- KMP 字符串匹配算法视频
- 字符串匹配的 KMP 算法
第9周作业
简单
- 字符串中的第一个唯一字符
(亚马逊、微软、Facebook 在半年内面试中考过) - 反转字符串 II (亚马逊在半年内面试中考过)
- 翻转字符串里的单词(微软、字节跳动、苹果在半年内面试中考过)
- 反转字符串中的单词 III (微软、字节跳动、华为在半年内面试中考过)
- 仅仅反转字母(字节跳动在半年内面试中考过)
- 同构字符串(谷歌、亚马逊、微软在半年内面试中考过)
- 验证回文字符串 Ⅱ(Facebook 在半年内面试中常考)
中等 - 在学习总结中,写出不同路径 2 这道题目的状态转移方程。
- 最长上升子序列(字节跳动、亚马逊、微软在半年内面试中考过)
- 解码方法(字节跳动、亚马逊、Facebook 在半年内面试中考过)
- 字符串转换整数 (atoi) (亚马逊、微软、Facebook 在半年内面试中考过)
- 找到字符串中所有字母异位词(Facebook 在半年内面试中常考)
- 最长回文子串(亚马逊、字节跳动、华为在半年内面试中常考)
困难 - 最长有效括号(亚马逊、字节跳动、华为在半年内面试中考过)
- 赛车(谷歌在半年内面试中考过)
- 通配符匹配(Facebook、微软、字节跳动在半年内面试中考过)
- 不同的子序列(MathWorks 在半年内面试中考过)