C++31 个知识点
初等数论
5 个知识点素数、合数、最大公约数、最小公倍数、同余与模运算
数论算法
4 个知识点辗转相除法(欧几里得算法)、埃氏筛法、线性筛法、唯一分解定理
高精度计算
4 个知识点用数组模拟高精度加法、减法、乘法、除法
线性表
4 个知识点STL中的vector、queue、stack;单链表、双链表
二分查找
3 个知识点二分查找算法、二分答案思想
递归
4 个知识点递归的基本原理、递归优化策略、递归的时空复杂度分析
贪心算法
3 个知识点贪心策略、最优子结构、典型贪心应用
分治算法
4 个知识点归并排序、快速排序的原理与实现
困难困难困难困难
常见排序的时间复杂度与空间复杂度与稳定性
在实际应用中(如按多个关键字排序),稳定性可以避免额外的数据移动。例如先按姓名排序,再按年龄排序(稳定排序能保持姓名顺序)
分治算法:把大问题切成小块吃掉的智慧
分治算法是一种“分而治之”的思想,把复杂问题拆成简单小问题,解决后再合并,就像收拾散落的拼图一样。
归并排序:像整理两堆扑克牌一样排好序
归并排序先把数组不断对半切分,直到每组只剩一个元素,再两两合并成有序序列,就像把两摞已排好的牌合并成一摞。
快速排序:选一个“班长”帮大家排好队
快速排序通过选择一个基准元素,把较小的挪到左边、较大的挪到右边,然后递归处理两边,就像班长先把比自己矮和高的同学分开,再分别排队。
Python26 个知识点
初等数论
5 个知识点素数、合数、最大公约数、最小公倍数、同余与模运算
数论算法
4 个知识点辗转相除法(欧几里得算法)、埃氏筛法、线性筛法、唯一分解定理
高精度计算
1 个知识点用数组模拟高精度加法、减法、乘法、除法
线性表
4 个知识点STL中的vector、queue、stack;单链表、双链表
二分查找
3 个知识点二分查找算法、二分答案思想
递归
3 个知识点递归的基本原理、递归优化策略、递归的时空复杂度分析
贪心算法
3 个知识点贪心策略、最优子结构、典型贪心应用
分治算法
3 个知识点归并排序、快速排序的原理与实现