学习笔记 一 学习方法总结: 关于刷题:我喜欢和题较劲,每天拿到题目有一个小时左右花在想解法上面,我知道超哥说过不能较劲,但还是做不到。一方面还是因为自己不熟练 理解太浅,另外一方面对python的运用也不是很理想。所以后面还是适当克制自己,可以通过重复做题加强python的练习,也能加深对题目的理解,熟能生巧,适当减少第一遍的时间
关于五毒神掌:老实说,后面几天并没有严格执行五毒神掌。我并不会再当天就练习5遍甚至更多,而是会在1-2后再去练习之前的题目,但有时练习又会碰到思路中断的情况就又和题目较劲了。或者当天刷提看题解占用了太多时间,所以用来复习的时间就较少。这块觉得还是较劲的问题。复习的时候千万不能像第一遍那样杠上,还是要多练习,总结常用思路和规律,这样才能真正较少时间,杜绝后续时间不够带来的问题
二 学习内容: 关于数组 链表: 数组的关键词:连续的存储地址,读为o1 插入删除o(n) 数组的最大问题就是插入删除太慢,因为必须保证数据元素都挨在一起,所以必须将许多元素整体前移或者后移 当然预先分配一段连续的地址也是问题,元素不够存在浪费,元素多了存不下。当然现在可以扩大空间,但是空间扩大后复制原先的数据也是会有消耗的
链表就是为了解决数组的问题来的。不用预先分配地址 插入等操作和数组比刚好相反 链表的每一个节点由数据+指针构成(指针指向下个节点)。相比数组多了一块指针的位置,这是典型的用空间换时间
关于栈和队列 栈在python中可以用list来实现。pop() append()在固定的一端 先入后出
队列在python中用list来实现,先入先出。popleft() append().先入先出,所以删除是popleft()在头部删除,而不是pop()在尾部删除。只是在头部删除又会出现元素整体迁移的问题
python中的deque不仅仅有队列中的popleft() append() 还有appendleft() pop().2端都可入和出
优先队列的源码分析还没有看懂,还不理解它是如何实现的。我想在逼着自己看下或者结合java的一起对比下
三关于做题总结: 第一周的题部分是纯粹找到运算方法如爬楼梯,通过缩小范围来找到运算规律。有些是从头开始寻找 有些是从尾部 还有部分题除了找到运算规律还要把其转化到另外一种数据结构当中去,如字典,利用key-value来存储部分运算信息 同时读取也很快速。利用这样的优势来达到运算目的或者减少复杂度