算法练习 100 天 精华总结
Python与算法社区
共 851字,需浏览 2分钟
·
2020-11-12 20:47
三步加星标
增强算法能力,不是一朝一夕的事,需要持久的付出努力,同时也要经常思考、反思和总结,不断去揣摩数据结构和算法的巧妙。
过去几个月,算法刷题日记里 600多位星友,一起走过100天刷题,今天做个简单总结。
刷题练习的数据结构,包括:
1. 一维结构:线性顺序存储的数组,线性乱序存储的链表,按桶装入数组的哈希结构,只在一头出入的特殊数组栈(包括单调栈),队列
2. 二维:非线性的二叉树;具有优先顺序、根要么最大或最小的堆结构,也是特殊的一种二叉树
3. 以及经常用到的双指针及特殊的快慢双指针:
基于以上数据结构,经常涉及到的算法有如下这些,其中:
1. 基础思维部分最符合我们的思考习惯;
2. 递归思维常和数学归纳分析相关;
3. 分治思维就是划大区间为小区间,分别治理后,重新合并的思维;
4. 哈希比较好理解,O(1)找到某个键的对应值;
5. 动态规划前100天并没有重点训练,因为它是所有算法中最需要训练的思维之一,状态转移方程并不是那么容易找到,但又是加速算法的常用技巧之一,AI训练模型的反向传播算法,强化学习智能体在环境中的学习过程,都是动态规划思维的具体应用;
6. 贪心求得最优解的场景其实不太多,往往实际中用来求得近似解;
7. 位运算有时解决问题干净利落;
8. 前缀和是一类特殊的结构,注意体会前缀和的解体技巧
评论