数据结构与算法之美
文章平均质量分 94
大叔爱学习.
所谓至明,不过至专。
展开
-
《数据结构与算法之美》 笔记七 字符串 上
文章目录前言BF 算法RK 算法总结前言从今天开始,我们来学习字符串匹配算法。字符串匹配这样一个功能,我想对于任何一个开发工程师来说,应该都不会陌生。我们用的最多的就是编程语言提供的字符串查找函数,比如 Java 中的 indexOf(),Python 中的 find() 函数等,它们底层就是依赖接下来要讲的字符串匹配算法。字符串匹配算法很多,我会分四节来讲解。今天我会讲两种比较简单的、好理解的,它们分别是:BF 算法和 RK 算法。下一节,我会讲两种比较难理解、但更加高效的,它们是:BM 算法和 K原创 2022-01-28 20:54:20 · 98 阅读 · 0 评论 -
《数据结构与算法之美》 笔记六 链表 下
文章目录前言技巧一:理解指针或引用的含义技巧二:警惕指针丢失和内存泄漏技巧三:利用哨兵简化实现难度技巧四:重点留意边界条件处理技巧五:举例画图,辅助思考技巧六:多写多练,没有捷径内容小结前言上一节我讲了链表相关的基础知识。学完之后,我看到有人留言说,基础知识我都掌握了,但是写链表代码还是很费劲。哈哈,的确是这样的!想要写好链表代码并不是容易的事儿,尤其是那些复杂的链表操作,比如链表反转、有序链表合并等,写的时候非常容易出错。从我上百场面试的经验来看,能把“链表反转”这几行代码写对的人不足 10%。为原创 2022-01-21 16:45:51 · 77 阅读 · 0 评论 -
《数据结构与算法之美》 笔记五 链表 上
文章目录前言五花八门的链表结构单链表循环链表双向链表空间换时间链表 VS 数组性能对比解答开篇前言今天我们来聊聊“链表(Linked list)”这个数据结构。学习链表有什么用呢?为了回答这个问题,我们先来讨论一个经典的链表应用场景,那就是 LRU 缓存淘汰算法。缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非常广泛的应用,比如常见的 CPU 缓存、数据库缓存、浏览器缓存等等。缓存的大小有限,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?这就需要缓存淘汰策略来决定。常见原创 2022-01-21 14:39:14 · 111 阅读 · 0 评论 -
《数据结构与算法之美》 笔记四 数组
文章目录前言如何实现随机访问?低效的“插入”和“删除”警惕数组的访问越界问题容器能否完全替代数组?解答开篇内容小结思考题:前言是的,在每一种编程语言中,基本都会有数组这种数据类型。不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构。尽管数组看起来非常基础、简单,但是我估计很多人都并没有理解这个基础数据结构的精髓。在大部分编程语言中,数组都是从 0 开始编号的,但你是否下意识地想过,为什么数组要从 0 开始编号,而不是从 1 开始呢? 从 1 开始不是更符合人类的思维习惯吗?如何实现随机原创 2022-01-19 17:55:47 · 118 阅读 · 0 评论 -
《数据结构与算法之美》 笔记三 复杂(下)
文章目录前言最好、最坏情况时间复杂度平均情况时间复杂度均摊时间复杂度内容小结前言上一节,我们讲了复杂度的大 O 表示法和几个分析技巧,还举了一些常见复杂度分析的例子,比如 O(1)、O(logn)、O(n)、O(nlogn) 复杂度分析。掌握了这些内容,对于复杂度分析这个知识点,你已经可以到及格线了。但是,我想你肯定不会满足于此。今天我会继续给你讲四个复杂度分析方面的知识点,最好情况时间复杂度(best case time complexity)、最坏情况时间复杂度(worst case time c原创 2022-01-15 23:01:00 · 54 阅读 · 0 评论 -
《数据结构与算法之美》 笔记二 复杂(上)
文章目录前言为什么需要复杂度分析大 O 复杂度表示法时间复杂度分析几种常见时间复杂度实例分析空间复杂度分析内容小结前言我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?这里就要用到我们今天要讲的内容:时间、空间复杂度分析。其实,只要讲到数据结构与算法,就一定离不开时间、空间复杂度分析。而且,我个人认为,复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算原创 2022-01-15 15:43:15 · 89 阅读 · 0 评论 -
《数据结构与算法之美》 笔记一 概述
文章目录前言课程规划为什么要学习数据结构和算法解决问题的角度不一样什么是数据结构?什么是算法?复杂度知识点事半功倍的学习技巧前言在技术圈里,我们经常喜欢谈论高大上的架构,比如高可用、微服务、服务治理等等。鲜有人关注代码层面的编程能力,而愿意沉下心来,花几个月时间啃一啃计算机基础知识、认认真真夯实基础的人,简直就是凤毛麟角。我认识一位原来腾讯 T4 的技术大牛。在区块链大潮之前,他在腾讯工作了 10 多年,长期负责手机 QQ 后台整体建设。他经历了手机 QQ 从诞生到亿级用户在线的整个过程。后来他去了微原创 2022-01-14 14:45:05 · 240 阅读 · 0 评论