SF
Phper
Phper
注册登录
关注博客
注册登录
主页
关于
RSS
我理解的数据结构(八)—— 线段树(SegmentTree)
罗纳尔多Coder
2018-11-04
阅读 6 分钟
5k
1.最经典的线段树问题:区间染色有一面墙,长度为n,每次选择一段墙进行染色,m次操作后,我们可以看见多少种颜色?m次操作后,我们可以在[i, j]区间内看见多少种颜色?
我理解的数据结构(七)—— 堆和优先队列(Heap And PriorityQueue)
罗纳尔多Coder
2018-10-21
阅读 6 分钟
6.9k
我理解的数据结构(七)—— 堆和优先队列(Heap And PriorityQueue) 一、堆 1.堆的基础 堆也是一颗树 堆最为主流的一种实现方式:二叉堆 二叉堆是一颗完全二叉树 2.完全二叉树 完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的...
我理解的数据结构(六)—— 集合和映射(Set And Map)
罗纳尔多Coder
2018-10-14
阅读 11 分钟
3k
我理解的数据结构(六)—— 集合和映射(Set And Map) 一、集合 1.典型应用场景 客户统计 词汇量统计 2.集合接口 {代码...} 3.基于二分搜索树的集合 关于二分搜索树的底层实现,大家可以去看我的另一篇文章:BST {代码...} 4.基于链表的集合 关于链表的底层实现,大家可以去看我的另一篇文章:LinkedList {代码...} 5.BS...
我理解的数据结构(五)—— 二分搜索树(Binary Search Tree)
罗纳尔多Coder
2018-09-24
阅读 7 分钟
4.9k
我理解的数据结构(五)—— 二分搜索树(Binary Search Tree) 一、二叉树 和链表一样,动态数据结构 具有唯一根节点 每个节点最多有两个子节点 每个节点最多有一个父节点 具有天然的递归结构 每个节点的左子树也是二叉树 每个节点的右子树也是二叉树 一个节点或者空也是二叉树 二、二分搜索树 是二叉树 每个节点的值 大...
链表与递归
罗纳尔多Coder
2018-09-09
阅读 2 分钟
2k
链表与递归 LeetCode第203题 {代码...} 1.不使用虚拟头节点 {代码...} 2.使用虚拟头节点 {代码...} 3.递归 {代码...}
我理解的数据结构(四)—— 链表(Linked List)
罗纳尔多Coder
2018-09-02
阅读 5 分钟
11.2k
我理解的数据结构(四)—— 链表(Linked List) 一、链表基础 链表与数组的最大区别:链表是一种真正动态的数据结构 数据存储在“节点”中 优点:真正的动态,不需要处理固定容量的问题 缺点:丧失了随机访问的能力 (索引访问) 数据存储在“节点”中 {代码...} 二、链表添加元素的原理图 链表与数组在添加元素方面有很大的...
我理解的数据结构(三)—— 队列(Queue)
罗纳尔多Coder
2018-08-25
阅读 5 分钟
3.6k
我理解的数据结构(三)—— 队列(Queue) 一、队列 队列是一种线性结构 相比数组,队列对应的操作是数组的子集 只能从一端(队尾)添加元素,只能从另一端(队首)取出元素 队列是一种先进先出的数据结构(FIFO) 二、数组队列与循环队列 1. 数组队列 如果你有看过我之前的文章不要小看了数组或者栈,你就会发现,自己封...
我理解的数据结构(二)—— 栈(Stack)
罗纳尔多Coder
2018-08-19
阅读 3 分钟
2.8k
我理解的数据结构(二)—— 栈(Stack) 一、栈基础 栈是一种线性结构 相比较数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从同一端取出元素,这一端称为栈顶 栈是一种后进先出的数据结构,LIFO(Last In First Out) 二、栈的应用 Undo操作(撤销) 程序调用所使用的系统栈 三、栈的实现 其实,实现一个栈...
我理解的数据结构(一)—— 数组(Array)
罗纳尔多Coder
2018-08-19
阅读 9 分钟
3.7k
首先,我是一个phper,但是毕竟php是一个脚本语言,如果使用脚本语言去理解数据结构具有一定的局限性。因为脚本语言是不需要编译的,如果你的语法写的不错,可能执行起来会要比用一个更好的数据结构来的更快、更高效(在数据量不大的情况下)。而且数据结构是脱离任何一门语言存在的。所以,下面会选用java去更深入的理...