算法训练营第三期

六周 200 道动画 + 直播的算法课程,每一道题目均提供动画、三种编程语言代码讲解,看动画学算法进大厂。

第一周,链表、栈、队列

1、课程目录

0、时间复杂度与空间复杂度(补充内容)

1、链表的基础知识:单链表

2、反转链表( LeetCode 206 )

2.1、反转链表迭代思路(补充内容)

3、相交链表( LeetCode 160 )

4、合并两个有序链表 ( LeetCode 21 )

5、分隔链表 ( LeetCode 86 )

6、环形链表 II ( LeetCode 142 )

7、反转链表 II ( LeetCode 92 )

8、复制带随机指针的链表( LeetCode 138 )

9、栈的基础知识

10、有效的括号( LeetCode 20 )

11、基本计算器( LeetCode 224 )

12、最小栈( LeetCode 155 )

13、验证栈序列( LeetCode 946 )

14、每日温度( LeetCode 739 )

15、接雨水( LeetCode 42 )

16、队列的基础知识

17、用栈实现队列 ( LeetCode 232 )

18、滑动窗口最大值( LeetCode 239 )

19、设计循环双端队列( LeetCode 641 )

20、移除链表元素( LeetCode 203 )

21、K 个一组翻转链表( LeetCode 25 )

22、回文链表( LeetCode 234 )

23、奇偶链表( LeetCode 328 )

24、从尾到头打印链表( 剑指Offer 06 )

25、链表中倒数第 k 个节点( 剑指Offer 22 )

2、课堂直播讲解(直播时间为周四晚上 8 点)

每次直播结束后会把直播内容上传到这里。

本次直播时间为 2021 年 11 月 18 日 20:00,我会在群里发送直播地址。

1、录播视频

3、直播答疑(直播时间为周六晚上 8 点)

每次直播结束后会把直播内容上传到这里。

本次直播答疑时间为 2021 年 11 月 20 日 20:00,我会在群里发送直播地址。

1、录播视频

第二周,递归、排序、贪心

1、课程目录

1、递归基础知识

2、冒泡排序基础知识

3、选择排序基础知识

4、插入排序基础知识

5、快速排序基础知识(✨有作业)

6、计数排序基础知识

7、归并排序

8、桶排序(了解即可)

9、堆排序

10、基数排序(了解即可)

11、希尔排序(了解即可)

12、合并两个有序数组( LeetCode 88 )

13、颜色分类( LeetCode 75 )(✨有作业)

14、部分排序 (面试题 16)

15、计算右侧小于当前元素的个数 ( LeetCode 315)

16、合并 K 个升序链表(LeetCode 23)

17、有序数组的平方( LeetCode 977 )

18、盛最多水的容器 ( LeetCode 11)(✨有作业)

19、两数之和(LeetCode 1)(✨有作业)

20、二叉堆基础知识

21、分发饼干( LeetCode 455 )

22、柠檬水找零( LeetCode 860 )

23、用最少数量的箭引爆气球( LeetCode 452 )

24、移掉 K 位数字( LeetCode 402 )

25、跳跃游戏( LeetCode 55 )(✨有作业)

26、摆动序列( LeetCode 376 )

27、买卖股票的最佳时机 II( LeetCode 122 )

28、三数之和(LeetCode 15)

29、最接近三数之和(LeetCode 16)

30、加油站( LeetCode 134 )

31、合并区间( LeetCode 56 )

2、课堂直播讲解(直播时间为周四晚上 8 点)

每次直播结束后会把直播内容上传到这里。

本次直播时间为 2021 年 11 月 25 日 20:00,我会在群里发送直播地址。

1、录播视频

3、直播答疑(直播时间为周六晚上 8 点)

每次直播结束后会把直播内容上传到这里。

本次直播答疑时间为 2021 年 11 月 27 日 20:00,我会在群里发送直播地址。

1、录播视频

第三周,搜索算法、回溯算法、位运算、二分查找

1、课程目录

1、二分查找基础知识

2、二分查找( LeetCode 704 )

3、搜索插入位置( LeetCode 35 )

4、在排序数组中查找元素的第一个和最后一个位置( LeetCode 34 )(✨有作业)

5、搜索旋转排序数组( LeetCode 33 )(✨有作业)

6、搜索二维矩阵( LeetCode 74 )

7、寻找两个正序数组的中位数( LeetCode 4 )

8、有效三角形的个数( LeetCode 611 )

9、剑指 Offer 53 – II. 0~n-1中缺失的数字

10、剑指 Offer 53 – I. 在排序数组中查找数字 I

11、剑指 Offer 51. 数组中的逆序对

12、寻找峰值( LeetCode 162 )

13、第一个错误的版本( LeetCode 278 )

14、山脉数组的峰顶索引( LeetCode 852 )

15、有效的完全平方数( LeetCode 367 )

16、位运算基础知识

17、丢失的数字( LeetCode 268 )

18、2 的幂( LeetCode 231 )

19、比特位计数( LeetCode 338 )

20、位 1 的个数( LeetCode 191 )

21、只出现一次的数字 II( LeetCode 137 )

22、只出现一次的数字 III( LeetCode 260 )

23、最大单词长度乘积( LeetCode 318 )

24、汉明距离( LeetCode 461 )

25、回溯基础知识

26、岛屿数量( LeetCode 200 )(✨有作业)

27、N 皇后( LeetCode 51 )(✨有作业)

28、子集( LeetCode 78 )

29、组合总和 II( LeetCode 40 )

30、括号生成( LeetCode 22 )

31、火柴拼正方形( LeetCode 437 )

32、接雨水 II( LeetCode 407 )

33、组合( LeetCode 77 )

34、组合总和 II( LeetCode 216 )

35、分割回文串( LeetCode 131 )

36、全排列( LeetCode 46 )

2、课堂直播讲解(直播时间为周四晚上 8 点)

每次直播结束后会把直播内容上传到这里。

本次直播时间为 2021 年 12 月 02 日 20:00,我会在群里发送直播地址。

1、录播视频

3、直播答疑(直播时间为周六晚上 8 点)

每次直播结束后会把直播内容上传到这里。

本次直播答疑时间为 2021 年 12 月 04 日 20:00,我会在群里发送直播地址。

1、本周失误,忘记开启录屏功能:(

第四周,二叉树

1、课程目录

1、二叉树基础知识

2、二叉树的前序遍历( LeetCode 144 )

3、二叉树的中序遍历( LeetCode 94 )

4、二叉树的后序遍历( LeetCode 145 )

5、二叉树的层序遍历( LeetCode 102 )

6、二叉树的锯齿形层序遍历( LeetCode 103 )

7、从前序与中序遍历序列构造二叉树( LeetCode 105 )

8、路径总和 II( LeetCode 113 )

9、二叉树的最近公共祖先( LeetCode 236 )

10、二叉树的右视图( LeetCode 199 )

11、二叉树展开为链表( LeetCode 114 )

12、将有序数组转换为二叉搜索树( LeetCode 108 )

13、把二叉搜索树转换为累加树( LeetCode 538 )

14、删除二叉搜索树中的节点( LeetCode 450 )

15、二叉树的序列化与反序列化( LeetCode 297 )

16、完全二叉树的节点个数( LeetCode 222 )

17、二叉树的最大深度( LeetCode 104 )

18、二叉树的最小深度( LeetCode 111 )

19、二叉树的所有路径( LeetCode 257 )

20、平衡二叉树( LeetCode 110 )

21、左叶子之和( LeetCode 404 )

22、找树左下角的值( LeetCode 513 )

23、修剪二叉搜索树( LeetCode 669 )

24、二叉搜索树的最近公共祖先( LeetCode 235 )

25、二叉搜索树的最小绝对差( LeetCode 530 )

26、最大二叉树( LeetCode 654 )

2、课堂直播讲解(直播时间为周四晚上 8 点)

每次直播结束后会把直播内容上传到这里。

本次直播时间为 2021 年 12 月 09 日 20:00,我会在群里发送直播地址。

1、录播视频

3、直播答疑(直播时间为周六晚上 8 点)

每次直播结束后会把直播内容上传到这里。

本次直播答疑时间为 2021 年 12 月 11日 20:00,我会在群里发送直播地址。

1、录播视频

第五周,动态规划、背包问题

1、课程目录

1、动态规划基础知识和解题步骤

2、爬楼梯( LeetCode 70 )

3、斐波那契数( LeetCode 509 )

4、最大子序和( LeetCode 53 )

5、零钱兑换( LeetCode 322 )

6、零钱兑换 II( LeetCode 518 )

7、最小路径和( LeetCode 64 )

8、编辑距离( LeetCode 72 )

9、买卖股票的最佳时机( LeetCode 121 )

10、买卖股票的最佳时机II( LeetCode 122 )

11、买卖股票的最佳时机III( LeetCode 123 )

12、买卖股票的最佳时机IV( LeetCode 188 )

13、最佳买卖股票时机含冷冻期(LeetCode 309)

14、买卖股票的最佳时机含手续费(LeetCode 714)

15、完全平方数( LeetCode 279 )

16、三角形最小路径和( LeetCode 120 )

17、不同路径( LeetCode 62 )

18、不同路径II( LeetCode 63 )

19、整数拆分( LeetCode 343 )

20、不同的二叉搜索树( LeetCode 96 )

21、地下城游戏( LeetCode 174 )

22、打家劫舍( LeetCode 198 )

23、打家劫舍II( LeetCode 213 )

24、打家劫舍III( LeetCode 337 )

25、最长递增子序列( LeetCode 300 )

26、最长连续递增序列( LeetCode 674 )

27、分割等和子集( LeetCode 416 )

28、最长重复子数组( LeetCode 718 )

29、最长公共子序列( LeetCode 1143 )

30、最长回文子序列( LeetCode 516 )

31、最长回文子串( LeetCode 5 )

31、01 背包问题

32、目标和( LeetCode 494 )

33、最后一块石头的重量 II( LeetCode 1049 )

2、课堂直播讲解(直播时间为周四晚上 8 点)

每次直播结束后会把直播内容上传到这里。

本次直播时间为 2021 年 12 月 16 日 20:00,我会在群里发送直播地址。

1、录播视频

3、直播答疑(直播时间为周六晚上 8 点)

每次直播结束后会把直播内容上传到这里。

本次直播答疑时间为 2021 年 12 月 18 日 20:00,我会在群里发送直播地址。

1、录播视频

第六周,其它内容

1、近期高频面试题

数据来源于近期牛客网等各大面经统计到的算法题,考察频率比较频繁,每一期都会更新一些内容,建议面试前突击一下。

1、无重复字符的最长子串( LeetCode 3 )

2、数组中的第 K 个最大元素( LeetCode 215 )

3、环形链表( LeetCode 141 )

4、字符串相加( LeetCode 415 )

5、下一个更大元素 I( LeetCode 496 )

6、下一个更大元素 II( LeetCode 503 )

7、重排链表( LeetCode 86 )

8、实现 Trie (前缀树)( LeetCode 208 )

9、AVL 平衡树基础知识

10、红黑树基础知识

2、《剑指 Offer》系列

《剑指 Offer》系列的题目非常经典,如果是校招,建议百分百掌握。

有些题目和之前的题目重复或者类似。

1)栈与队列(简单)

1、剑指 Offer 09. 用两个栈实现队列

2、剑指 Offer 30. 包含min函数的栈

2)链表(简单)

3、剑指 Offer 06. 从尾到头打印链表

4、剑指 Offer 24. 反转链表

5、剑指 Offer 35. 复杂链表的复制

3)字符串(简单)

6、剑指 Offer 05. 替换空格

7、剑指 Offer 58 – II. 左旋转字符串

4)查找算法(简单)

8、剑指 Offer 03. 数组中重复的数字

9、剑指 Offer 53 – I. 在排序数组中查找数字 I

10、剑指 Offer 53 – II. 0~n-1中缺失的数字

5) 查找算法(中等)

11、剑指 Offer 04. 二维数组中的查找

12、剑指 Offer 11. 旋转数组的最小数字

13、剑指 Offer 50. 第一个只出现一次的字符

6) 搜索与回溯算法(简单)

14、剑指 Offer 32 – I. 从上到下打印二叉树

15、剑指 Offer 32 – II. 从上到下打印二叉树 II

16、剑指 Offer 32 – III. 从上到下打印二叉树 III

7) 搜索与回溯算法(简单)

17、剑指 Offer 26. 树的子结构

18、剑指 Offer 27. 二叉树的镜像

19、剑指 Offer 28. 对称的二叉树

8) 动态规划(简单)

20、剑指 Offer 10- II. 青蛙跳台阶问题

21、剑指 Offer 63. 股票的最大利润

9) 动态规划(中等)

22、剑指 Offer 42. 连续子数组的最大和

23、剑指 Offer 47. 礼物的最大价值

10) 动态规划(中等)

24、剑指 Offer 46. 把数字翻译成字符串

25、剑指 Offer 48. 最长不含重复字符的子字符串

11) 双指针(简单)

26、剑指 Offer 18. 删除链表的节点

27、剑指 Offer 22. 链表中倒数第k个节点

12) 双指针(简单)

28、剑指 Offer 25. 合并两个排序的链表

29、剑指 Offer 52. 两个链表的第一个公共节点

13) 双指针(简单)

30、剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

31、剑指 Offer 57. 和为s的两个数字

32、剑指 Offer 58 – I. 翻转单词顺序

14) 搜索与回溯算法(中等)

33、剑指 Offer 12. 矩阵中的路径

34、剑指 Offer 13. 机器人的运动范围

15) 搜索与回溯算法(中等)

35、剑指 Offer 34. 二叉树中和为某一值的路径

36、剑指 Offer 36. 二叉搜索树与双向链表

37、剑指 Offer 54. 二叉搜索树的第k大节点

16) 排序(简单)

38、剑指 Offer 45. 把数组排成最小的数

39、剑指 Offer 61. 扑克牌中的顺子

17) 排序(中等)

40、剑指 Offer 40. 最小的k个数

41、剑指 Offer 41. 数据流中的中位数

18) 搜索与回溯算法(中等)

42、剑指 Offer 55 – I. 二叉树的深度

43、剑指 Offer 55 – II. 平衡二叉树

19) 搜索与回溯算法(中等)

44、剑指 Offer 64. 求1+2+…+n

45、剑指 Offer 68 – I. 二叉搜索树的最近公共祖先

46、剑指 Offer 68 – II. 二叉树的最近公共祖先

20) 分治算法(中等)

47、剑指 Offer 07. 重建二叉树

48、剑指 Offer 16. 数值的整数次方

49、剑指 Offer 33. 二叉搜索树的后序遍历序列

21) 位运算(简单)

50、剑指 Offer 15. 二进制中1的个数

51、剑指 Offer 65. 不用加减乘除做加法

22) 位运算(中等)

52、剑指 Offer 56 – I. 数组中数字出现的次数

53、剑指 Offer 56 – II. 数组中数字出现的次数 II

23) 数学(简单)

54、剑指 Offer 39. 数组中出现次数超过一半的数字

55、剑指 Offer 66. 构建乘积数组

24) 数学(中等)

56、剑指 Offer 14- I. 剪绳子

57、剑指 Offer 57 – II. 和为s的连续正数序列

58、剑指 Offer 62. 圆圈中最后剩下的数字

25) 模拟(中等)

59、剑指 Offer 29. 顺时针打印矩阵

60、剑指 Offer 31. 栈的压入、弹出序列

26) 字符串(中等)

61、剑指 Offer 20. 表示数值的字符串

62、剑指 Offer 67. 把字符串转换成整数

27) 栈与队列(困难)

63、剑指 Offer 59 – I. 滑动窗口的最大值

64、剑指 Offer 59 – II. 队列的最大值

28) 搜索与回溯算法(困难)

65、剑指 Offer 37. 序列化二叉树

66、剑指 Offer 38. 字符串的排列

29) 动态规划(困难)

67、剑指 Offer 19. 正则表达式匹配

68、剑指 Offer 49. 丑数

69、剑指 Offer 60. n个骰子的点数

30) 分治算法(困难)

70、剑指 Offer 17. 打印从 1 到最大的 n 位数

71、剑指 Offer 51. 数组中的逆序对

31) 数学(困难)

72、剑指 Offer 14- II. 剪绳子 II

73、剑指 Offer 43. 1~n 整数中 1 出现的次数

74、剑指 Offer 44. 数字序列中某一位的数字