首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
数据结构与算法
毛毛虫Coder
创建于2021-05-13
订阅专栏
主要分析常见的数据结构与算法
暂无订阅
共21篇文章
创建于2021-05-13
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
字符串匹配问题-KMP算法
KMP算法是在字符串匹配算法中比较绕的.主要是需要理解KMP中next数组求解的必要性以及j 的回溯依据; 在理解KMP 算法时, 很容易头秃. 这个算法可以多理解几次, 理解的过程中更加透彻; KMP 算法也是比较著名的模式匹配算法. 是由D.E.Knuth,J.H.Morr…
字符串匹配(BF&RK)算法
#1. BF算法-暴风匹配算法 若不相等,指针后退重新开始匹配. 从主串的下一个字符串(i = i - j + 2)起再重新和模式第一个字符(j = 1)比较; 这种情况下BF算法就会比较浪费时间,所以引入RK算法。 #2. RK算法 #####Hash (哈希). 如果两个字…
栈思想解决问题+练习题
充分阅读题⽬.了解题⽬背后的关键意思; 2. 分析题⽬,涉及到哪些数据结构,对问题进⾏分类. 到底属于链表问题, 栈思想问题, 字符串问题,⼆叉树问 题,图相关问题,排序问题; 与你之前所接触过的算法题有没有类似,找到问题的解题思路 问题中常常涉及到数据的来回⽐较,匹配问题;例…
线性表练习篇
####将2个递增的有序链表合并为一个有序链表; 要求结果链表仍然使用两个链表的存储空间,不另外占用其他的存储空间. 表中不允许有重复的数据 (1)假设待合并的链表为La和Lb,合并后的新表使用头指针Lc(Lc的表头结点设为La的表头结点)指向. Pa 和 Pb 分别是La,L…
图的应用[最短路径Dijkstra算法+Floyd算法]
迪科斯彻算法使用了广度优先搜索解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。 Dijkstra算法采用的是一种贪心的策略,按照路径的长度排序,声明一个数组dis来保存源点到各个顶点的最短距离和一个保存…
图的应用[平衡二叉树以及散列查找]
平衡⼆二叉树(Self-Balancing Binary Search Tree 或 Height-Balanced Binary Search Tree),是⼀一 种⼆二叉排序树.其中每⼀一个结点的左⼦子树和右⼦子树的⾼高度差⾄至多等于1. 两位俄罗斯数学家 G.M.Adel…
图的应用[查找与二叉排序树]
关键字(Key)是数据元素中某个数据项的值.⼜又称为键值. ⽤用它可 以表示一个数据元素,也可以标识一个记录的某个数据项(字段). 我们称为关键码 顺序查找(Sequential Search), ⼜又称为线性查找. 是最基本的查找技术. 它的查找过程: 从表中的第一个(或最后…
图的应用(最小生成树Prim算法与Kruskal算法实现与分析)
一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 [1] 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。 • 图中边的数量量等于N-1条边. 并且把arjvex[1~8]都赋值为…
图的应用(拓扑排序和关键路径问题)
所谓拓拓扑排序,其实就是对⼀一个有向图构造拓拓扑序列列的过程. 构造过程拓拓扑序列列会产⽣生2个结果: 从AOV⽹网中选择⼀个入度为0的顶点输出,然后从删去此顶点,并删除以 此顶点为尾的弧. 继续重复此步骤,直到输出全部顶点或AOV⽹网中不不存在入度为0的顶点 为⽌. 在这个算…
数据结构与算法第一讲-[基础+线性表]
是指相互之间存在一种或多种特定关系的数据元素的集合用计算机存储、组织数据的方式。数据结构分别为逻辑结构、(存储)物理结构和数据的运算三个部分. 数据类型: 是指⼀组性质相同值的集合以及定义在此集合的⼀些操作的总称. • 结构类型: 由若⼲类型组合⽽成,是可以再分解的.例如,整型…
数据结构与算法第四讲-[栈]
栈是一种线性序列结构,它的特殊之处在于,栈对于其中的元素的访问做了限制,只能从序列的某一端进行读写操作。我们知道,对于向量或者是列表,我们可以访问其中的任意一个元素。但是对于栈,我们只能访问位于栈的某一特定端的元素(栈顶)。 由此可以看出栈最底部的元素是最先入栈的,而栈顶元素是…
数据结构与算法第四讲-[队列]
先进者先出,就是**"队列"** 我们可以想象成,排队买票,先来的先买,后来的只能在末尾,不允许插队。 队列的两个基本操作:入队 将一个数据放到队列尾部;出队 从队列的头部取出一个元素。队列也是一种操作受限的线性表数据结构 它具有先进先出的特性,支持队尾插入元素,在队头删除元素…
数据结构与算法第三讲-[双向链表]
单向链表相对数组来说已经有很多优点了,但是,它还有一个最大的弊端,那就是在某种程度上和深度优先遍历有通性.一条路走到黑,从不回头!这种特性在进行数据操作时,会大大浪费时间,鉴于此,出现了双向链表的概念。 顾名思义,双向链表就是具备两个方向的指向,无非就是每个结点成了两个指针。 …
数据结构与算法第二讲-[单向循环链表]
单链表的最后一个节点的指针指向链表头部,而不是指向NULL,那么就构成了一个单向循环链表,通俗讲就是把尾节点的下一跳指向头结点。 1.3. 让新结点的next 执行头结点. 1.4. 尾结点的next 指向新的头结点; 1.5. 让头指针指向temp(临时的新结点)
数据结构与算法[线索化二叉树]
在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化。 对于n个结点的二叉树,在二叉链存储结构中有n+1个空链域,利用这些空链域存放在某种遍历次序下该结点的前驱结点和后继结点…
数据结构与算法[图结构初探]
图(Graph)结构是一种非线性的数据结构,图在实际生活中有很多例子,比如交通运输网,地铁网络,社交网络,计算机中的状态执行(自动机)等等都可以抽象成图结构。图结构比树结构复杂的非线性结构 图(Graph) 是由顶点的有穷⾮非空集合 和 顶点之间边的集合组成. 通常表示为: G…
数据结构与算法[二叉树基础]
树是数据结构中的重中之重,尤其以各类二叉树为学习的难点。一直以来,对于树的掌握都是模棱两可的状态,现在希望通过写一个关于二叉树的专题系列。 结点是数据结构中的基础,是构成复杂数据结构的基本组成单位。 本系列文章中提及的结点专指树的结点。例如:结点A在图中表示为: **树(Tre…
数据结构[堆]
如果 i = 1 ,则结点 i 是⼆二叉树的根. ⽆无双亲. 如果 i > 1,则其双亲是结点 [ i / 2 ];
数据结构——哈夫曼(Huffman)树+哈夫曼编码
哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也…
去除重复字母(LeetCode-困难)
给你一个仅包含小写字母的字符串,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证返回结果的字典序最小(要求不能打乱其他字符的相对位置) 通过一个while循环找到将栈中位置错误的数据,出栈. 找当前合适的位置,则结束while循环;
下一页