算法训练营第二期

第一周,链表、栈、队列

第一天:链表(周三)

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

2、反转链表( LeetCode 206 )

3、相交链表( LeetCode 160 )

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

5、分隔链表 ( LeetCode 86 )

6、环形链表 II ( LeetCode 142 )

7、反转链表 II ( LeetCode 92 )

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

第二天:直播 + 栈(周六)

1、链表算法题直播答疑

2、栈的基础知识

3、有效的括号( LeetCode 20 )

4、基本计算器( LeetCode 224 )

5、最小栈( LeetCode 155 )

6、验证栈序列( LeetCode 946 )

7、每日温度( LeetCode 739 )

8、接雨水( LeetCode 42 )

第三天:队列(周日)

1、队列的基础知识

2、优先队列基础知识

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

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

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

补充内容

以下内容比较简单,学完队列还有余力的时候可以快速过一遍下面这些链表题。

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

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

3、回文链表( LeetCode 234 )

4、奇偶链表( LeetCode 328 )

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

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

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

第一天:直播 + 递归 + 简单排序算法(周三)

1、递归基础知识

2、冒泡排序基础知识

3、选择排序基础知识

4、插入排序基础知识

5、归并排序基础知识

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

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

第二天:复杂排序算法(周六)

1、栈 + 队列问题答疑

2、快速排序基础知识

3、二叉堆基础知识

4、堆排序基础知识

5、计数排序基础知识

6、基数排序基础知识

7、桶排序基础知识

第三天:贪心算法(周日)

1、贪心算法基础知识

2、分发饼干( LeetCode 455 )

3、柠檬水找零( LeetCode 860 )

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

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

6、跳跃游戏( LeetCode 55 )

7、摆动序列( LeetCode 376 )

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

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

第一天:搜索 + 回溯(周三)

1、搜索基础知识

2、回溯基础知识

3、子集( LeetCode 78 )

4、组合总和 II( LeetCode 40 )

5、括号生成( LeetCode 22 )

6、N 皇后( LeetCode 51 )

7、火柴拼正方形( LeetCode 473 )

8、岛屿数量( LeetCode 200 )

9、接雨水 II( LeetCode 407 )

第二天:直播 + 位运算(周六)

1、排序算法问题、贪心算法问题答疑

2、位运算基础知识

3、丢失的数字( LeetCode 268 )

4、2 的幂( LeetCode 231 )

5、比特位计数( LeetCode 338 )

6、位 1 的个数( LeetCode 268 )

7、4 的幂( LeetCode 342 )

8、只出现一次的数字( LeetCode 136 )

第三天:二分查找(周日)

1、二分查找基础知识

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

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

4、搜索旋转排序数组( LeetCode 33 )

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

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

第四周,二叉树、二叉查找树、线段树

第一天:二叉树(周三)

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 )

第二天:直播 + 二叉查找树(周六)

1、回溯算法问题、位运算问题、二分查找问题直播答疑

2、二叉查找树基础知识

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

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

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

6、序列化和反序列化二叉搜索树( LeetCode 449 )

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

第三天:线段树(周日)

1、线段树基础知识

2、区域和检索 – 数组可修改( LeetCode 307 )

3、天际线问题( LeetCode 218 )

第五周、动态规划、图算法

第一天:动态规划(周三)

1、动态规划基础知识

2、爬楼梯( LeetCode 70 )

3、打家劫舍( LeetCode 198 )

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

5、最大子序和( LeetCode 53 )

6、零钱兑换( LeetCode 322 )

7、最小路径和( LeetCode 64 )

8、编辑距离( LeetCode 72 )

9、地下城游戏( LeetCode 174 )

第二天:二叉树直播 + 动态规划(周六)

1、二叉树算法问题直播答疑

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

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

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

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

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

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

8、完全平方数( LeetCode 279 )

第三天:图算法(周日)

1、图基础知识

2、省份数量( LeetCode 547 )

3、课程表( LeetCode 547 )