读者书评
M
Mia 流光🐼
7.3分
中国改革开放取得了这么大的成就,还是因为有很多实干的领导干部!
橘
橘子香蕉
7.3分
简单易懂,和其他两本一起看,艾玛的书帮我搭起了理财的一个基本框架,这是我以前特别缺乏的,看完了以后才发现人与人之间的想法差距真的是太大了,必须打破自己的认知,才知道自己以前错过了多少。
撞
撞入风中
7.1分
算法与数据结构是相辅相成的,不要孤立开来学习。学习的重点不在于死记硬背,因为不常用的话很快也会忘记,所以要有一个大纲性的思路。
1. 首先得会复杂度分析:特别是时间复杂度,除了平均复杂度还需要知道最坏情况下算法会退化到何种地步。
2. 算法要做到脑中要有动画、知道应用场景、对比其他算法优缺点、平均复杂度和最坏复杂度、使用需配合何种数据结构。常用基础算法都用这种方式过一遍:查找、排序、递归、搜索、聚类、哈希算法、贪心算法、分治算法、回溯算法、动态规划等
3. 数据结构要做到脑中有图、适用何种算法、对比同类数据结构。经典数据结构要掌握:数组、链表、堆、栈、队列、散列表、二叉树、跳表、图、Tire树
4. 适度刷题总结:leetcode
重点是对比性学习,给定场景要能选出合适的算法和数据结构
以本剧为例说明算法和数据结构的配合:广度优先搜索要配合队列;递归、深度优先搜索要配合栈;图算法多配合散列表;NP问题多用贪心和动态规划求近似解。
以数组 vs 链表为例说明优缺点对比:
数组:随机访问O(1),插入删除O(n),利于缓存、扩容时搬运麻烦、内存利用率高
链表:插入删除O(1),随机访问O(n),不利于缓存、动态扩容、消耗额外空间、易产生内存碎片
以文中的散列表冲突说明退化问题:
采用链表结构解决冲突,当所有输入均映射至同一位置,O(1)退化至O(n)。另外散列表是一种空间换时间的方案,空间占用较大(不考虑实体内容,每条目消耗就有50字节左右),海量数据判断是否存在的场景用布隆过滤即可,缺点则是损失部分精度和时间。
最后说下本剧,图灵图书榜前列,简单易懂,可快速回忆经典算法流程,就是星光小说这个电子版排版太差了。4星-1星