训练营算法题

第一周

数组,链表,跳表:

  • 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 个一组翻转链表(字节跳动、猿辅导在半年内面试常考)

栈,队列,优先队列,双端队列
参考链接

  • Java 的 PriorityQueue 文档
  • Java 的 Stack 源码
  • Java 的 Queue 源码
  • Python 的 heapq
  • 高性能的 container 库

实战题目

  • 有效的括号(亚马逊、JPMorgan 在半年内面试常考)

  • 最小栈(亚马逊在半年内面试常考)

  • 柱状图中最大的矩形(亚马逊、微软、字节跳动在半年内面试中考过)

  • 滑动窗口最大值(亚马逊在半年内面试常考)

  • 设计循环双端队列(Facebook 在 1 年内面试中考过)
    本周作业
    简单:

  • 删除排序数组中的重复项(Facebook、字节跳动、微软在半年内面试中考过)

  • 旋转数组(微软、亚马逊、PayPal 在半年内面试中考过)

  • 合并两个有序链表(亚马逊、字节跳动在半年内面试常考)

  • 合并两个有序数组(Facebook 在半年内面试常考)

  • 两数之和(亚马逊、字节跳动、谷歌、Facebook、苹果、微软在半年内面试中高频常考)

  • 移动零(Facebook、亚马逊、苹果在半年内面试中考过)

  • 加一(谷歌、字节跳动、Facebook 在半年内面试中考过)
    中等:

  • 设计循环双端队列(Facebook 在 1 年内面试中考过)
    困难:

  • 接雨水(亚马逊、字节跳动、高盛集团、Facebook 在半年内面试常考)

预习题目:

  • 有效的字母异位词
  • 二叉树的中序遍历
  • 最小的 k 个数
第二周

哈希表,映射,集合
参考链接

  • Java Set 文档
  • Java Map 文档
    实战题目 / 课后作业
  • 有效的字母异位词
  • 字母异位词分组(亚马逊在半年内面试中常考)
  • 两数之和(近半年内,字节跳动在面试中考查此题达到 152 次)

树,二叉树,二叉搜索树
参考链接

  • 树的遍历 Demo
    实战题目 / 课后作业
  • 二叉树的中序遍历(亚马逊、微软、字节跳动在半年内面试中考过)
  • 二叉树的前序遍历(谷歌、微软、字节跳动在半年内面试中考过)

堆和二叉堆
实战例题

  • 最小的 k 个数
  • 滑动窗口最大值(亚马逊在半年内面试常考)

课后作业

  • HeapSort :自学 https://www.geeksforgeeks.org/heap-sort/

  • 丑数(字节跳动在半年内面试中考过)

  • 前 K 个高频元素(亚马逊在半年内面试中常考)
    2周作业
    简单:

  • 有效的字母异位词

  • 两数之和(近半年内,字节跳动在面试中考查此题达到 152 次)

  • N 叉树的前序遍历(亚马逊在半年内面试中考过)

  • HeapSort :自学 https://www.geeksforgeeks.org/heap-sort/
    中等:

  • 字母异位词分组(亚马逊在半年内面试中常考)

  • 二叉树的中序遍历(亚马逊、微软、字节跳动在半年内面试中考过)

  • 二叉树的前序遍历(谷歌、微软、字节跳动在半年内面试中考过)

  • N 叉树的层序遍历(亚马逊在半年内面试中考过)

  • 丑数(字节跳动在半年内面试中考过)

  • 前 K 个高频元素(亚马逊在半年内面试中常考)
    下周预习
    预习题目:

  • 爬楼梯(阿里巴巴、腾讯、字节跳动在半年内面试常考)

  • 括号生成

  • Pow(x, n)

  • 子集

  • N 皇后

第三周

泛型递归,树的递归:
实战题目

  • 爬楼梯(阿里巴巴、腾讯、字节跳动在半年内面试常考)
  • 括号生成
  • 翻转二叉树 (谷歌、字节跳动、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 周预习
预习题目:

  • 最长公共子序列题目
  • 三角形最小路径和
  • 最大子序和
  • 打家劫舍
第六周

动态规划:
参考链接

  • 不同路径(Facebook、亚马逊、微软在半年内面试中考过)

  • 不同路径 II (谷歌、美团、微软在半年内面试中考过)

  • 最长公共子序列(字节跳动、谷歌、亚马逊在半年内面试中考过)

  • MIT 动态规划课程最短路径算法
    实战题目

  • 爬楼梯(阿里巴巴、腾讯、字节跳动在半年内面试常考)

  • 三角形最小路径和(亚马逊、苹果、字节跳动在半年内面试考过)

  • 三角形最小路径和高票回答: https://leetcode.com/problems/triangle/discuss/38735/Python-easy-to-understand-solutions-(top-down-bottom-up)

  • 最大子序和(亚马逊、字节跳动在半年内面试常考)

  • 乘积最大子数组(亚马逊、字节跳动、谷歌在半年内面试中考过)

  • 零钱兑换(亚马逊在半年内面试中常考)
    实战题目

  • 打家劫舍(字节跳动、谷歌、亚马逊在半年内面试中考过)

  • 打家劫舍 II (字节跳动在半年内面试中考过)

  • 买卖股票的最佳时机(亚马逊、字节跳动、Facebook 在半年内面试中常考)

  • 买卖股票的最佳时机 II (亚马逊、字节跳动、微软在半年内面试中考过)

  • 买卖股票的最佳时机 III (字节跳动在半年内面试中考过)

  • 最佳买卖股票时机含冷冻期(谷歌、亚马逊在半年内面试中考过)

  • 买卖股票的最佳时机 IV (谷歌、亚马逊、字节跳动在半年内面试中考过)

  • 买卖股票的最佳时机含手续费

  • 一个方法团灭 6 道股票问题
    *完全平方数(亚马逊、谷歌在半年内面试中考过)

  • 编辑距离 (重点)

  • 跳跃游戏(亚马逊在半年内面试中考过)

  • 跳跃游戏 II (亚马逊、华为字节跳动在半年内面试中考过)

  • 不同路径(Facebook、亚马逊、微软在半年内面试中考过)

  • 不同路径 II (谷歌、美团、微软在半年内面试中考过)

  • 不同路径 III (谷歌在半年内面试中考过)

  • 零钱兑换(亚马逊在半年内面试中常考)

  • 零钱兑换 II (亚马逊、字节跳动在半年内面试中考过)
    第6周作业
    中等

  • 最小路径和(亚马逊、高盛集团、谷歌在半年内面试中考过)

  • 解码方法(亚马逊、Facebook、字节跳动在半年内面试中考过)

  • 最大正方形(华为、谷歌、字节跳动在半年内面试中考过)

  • 任务调度器(Facebook 在半年内面试中常考)

  • 回文子串(Facebook、苹果、字节跳动在半年内面试中考过)
    困难

  • 最长有效括号(字节跳动、亚马逊、微软在半年内面试中考过)

  • 编辑距离 (重点)

  • 青蛙过河(亚马逊、苹果、字节跳动在半年内面试中考过)

第七周

高级搜索
参考链接

  • 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 在半年内面试中考过)

你可能感兴趣的:(数据结构与算法,LeetCode)