张伯毅的专栏

人生就是一道证明题,证明我们的存在不是偶然....

如何设计实现一个LRU Cache?

1. 什么是LRU Cache? LeetCode上看到一个LRU Cache实现的题目,题目描述是这样的 esign and implement a data structure for Least Recently Used (LRU) cache. It should suppor...

2019-07-11 11:02:41

阅读数 16

评论数 0

30张图带你彻底理解红黑树

写在前面 终于,在学习了几天的红黑树相关的知识后,我想把我所学所想和所感分享给大家。红黑树是一种比较难的数据结构,要完全搞懂非常耗时耗力,红黑树怎么自平衡?什么时候需要左旋或右旋?插入和删除破坏了树的平衡后怎么处理?等等一连串的问题在学习前困扰着我。如果你在学习过程中也会存在我的疑问,那么本...

2019-03-12 13:10:54

阅读数 1154

评论数 4

红黑树 R-B Tree 原理和算法介绍

R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。 红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节...

2019-03-05 10:01:59

阅读数 97

评论数 0

Hash算法总结

1. Hash是什么,它的作用 先举个例子。我们每个活在世上的人,为了能够参与各种社会活动,都需要一个用于识别自己的标志。也许你觉得名字或是身份证就足以代表你这个人,但是这种代表性非常脆弱,因为重名的人很多,身份证也可以伪造。最可靠的办法是把一个人的所有基因序列记录下来用来代表这个人,但显然,这...

2019-03-02 16:04:20

阅读数 141

评论数 0

七、数据结构笔记:树、森林、二叉树的转换与查询

在介绍树的存储结构时,就说到了树的孩子兄弟表示法可以将一棵树用二叉链表进行存储,所以借助二叉链表,树和二叉树可以互相转换。从物理结构上来看,它们的二叉链表也是相同的,只是介绍不太一样而已。因此,只要我们设定一定的规则,用二叉树来表示树,甚至表示森林都是可以的,森林和二叉树也可以互相进行转换。 树...

2019-01-24 15:42:36

阅读数 71

评论数 0

六、数据结构笔记:树[四]( 二叉树遍历)

二叉树遍历原理   二叉树的遍历:是指从根结点出发,按照某种次序依次访问二叉树中的所有结点,使得每个结点被访问一次且仅被访问一次。   这里有两个关键词:访问和次序。 访问其实是要根据实际的需要来确定具体做什么,比如对每个结点进行相关计算,输出打印等。它算作是一个抽象操作。 二叉树的遍...

2019-01-24 14:33:37

阅读数 91

评论数 0

六、数据结构笔记:树[三]( 二叉树存储结构 )

数据结构——二叉树的存储结构 之前已经谈过了树的存储结构,并且说到顺序存储对树这一种一对多的关系的结构实现起来比较困难。但是二叉树是一种特殊的树,由于它的特殊性,使得用顺序存储结构也可以实现。 二叉树的顺序存储结构 二叉树的顺序存储结构就是用一维数组存储二叉树中的结点,并且结点的存储位置,也...

2019-01-24 10:35:21

阅读数 66

评论数 0

六、数据结构笔记:树[二]( 二叉树以及性质)

二叉树定义 二叉树:是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。 如下图就是一个二叉树:   二叉树特点 二叉树的特点有: 每个结点最多两个子树,所以二叉...

2019-01-23 23:50:04

阅读数 643

评论数 0

五、数据结构笔记:串 [二] ( KMP模式匹配算法 )

    KMP模式匹配算法 (朴素算法的升级版本) 原理: 主串 S: “abcdefgab”找到   子串T “abcdex”  的位置 如果采用朴素算法,前5个字母,两个串完全相等,直到第6个字母,"f"与“x”不等,如图 如图,按照朴素模式...

2019-01-23 18:06:55

阅读数 688

评论数 0

六、数据结构笔记:树[一](基本知识与存储方式)

树的定义 之前一直介绍的是一对一的线性结构,可现实中还有多一对多的情况需要处理,这就是今天要介绍的一对多的数据结构——树。 树(Tree):是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中: 有且仅有一个特定的称为根(Root)的结点; 当n&am...

2019-01-23 04:02:20

阅读数 693

评论数 0

五、数据结构笔记:串 [一] (定义 & 朴素的模式匹配算法)

串的定义:是由零个或多个字符组成的有限序列,又叫字符串。   一般记为 s=“a1a2a3...an"(n>=0),其中,s是字符串的名称,用双引号括起来的字符序列是串的值,注意引号不属于串的内容。ai可以是字母、数字或者其他字符,i是该字符在串中的...

2019-01-22 20:37:46

阅读数 658

评论数 0

四、数据结构笔记:栈与队列

栈(stack):是限定仅在表尾进行插入和删除操作的线性表。 队列(Queue):是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 定义 栈(stack):是限定仅在表尾进行插入和删除操作的线性表。 我们允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)...

2019-01-22 17:03:23

阅读数 663

评论数 0

三、数据结构笔记:线性表

线性表(List):零个或多个数据元素的有限序列   线性表,从名字上可以感觉到,是具有像线一样的性质的表。 注意; 首先它是一个序列。也就是说,元素之间是有序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素有且只有一个前驱和后继。 线性表强调有限,元素个数是...

2019-01-22 14:06:13

阅读数 661

评论数 0

二、数据结构笔记: 算法

算法定义:         解决特性问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。   算法具有五个基本特性。 输入 算法具有零个或多个输入 输出 算法至少有一个或多个输出 有穷性 算法在执行有限的步骤之后,自动结束而不会...

2019-01-22 10:04:22

阅读数 660

评论数 0

一、数据结构笔记: 绪论

基本概念&术语:        数据结构是相互之间存在一种或多种特定关系的数据元素集合。 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等问题的学科。     数据 是描述客观事物的符号,是计算机中可以操作的对象,是能被...

2019-01-21 12:14:01

阅读数 710

评论数 1

提示
确定要删除当前文章?
取消 删除