![](https://img-blog.csdnimg.cn/direct/2419bba195824fde94d8d8f0f105d26d.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
【精品专栏】数据结构与算法
文章平均质量分 96
详细讲解常见的数据结构与算法。
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
Iareges
这个作者很懒,什么都没留下…
展开
-
数据结构Python版(一)——顺序表
线性表就是数据元素的排列像一条线一样的表。线性表严格的定义是具有相同特性的数据元素组成的一个有限序列。其特征有3个:不同于集合,线性表中可以出现值相同的元素。线性表的逻辑结构一般表示为 (a0,a1,⋯ ,an−1)(a_0,a_1,\cdots,a_{n-1})(a0,a1,⋯,an−1),用 n(n≥0)n(n\geq0)n(n≥0) 表示线性表的长度(即线性表中元素的个数)。当 n=0n=0n=0 时,表示线性表是一个空表,不包含任何数据元素。线性表的逻辑特征:每个元素最多只有一个前驱元素,也最原创 2022-06-14 10:32:10 · 5144 阅读 · 22 评论 -
数据结构Python版(二)——链表
数据结构-Python-链表原创 2022-06-20 15:54:30 · 1829 阅读 · 15 评论 -
数据结构Python版(三)——栈
栈是一种只能在同一端进行插入/删除操作的线性表。表中允许进行插入/删除操作的一端称为栈顶。栈顶的当前位置是动态的,可以用一个称为栈顶指针的位置指示器来指示。表的另一端称为栈底。当栈中没有元素时称为空栈。栈的插入操作通常称为进栈或入栈,栈的删除操作通常称为出栈或退栈。栈的一大特点是 LIFO,即 Last In First Out。抽象数据类型栈的定义如下:数据对象:D={ai∣0≤i≤n−1,n≥0}数据关系:R={r}r={∣ai,ai+1∈D,i=0,⋯ ,n−2}基本运算:empty......原创 2022-06-23 09:30:20 · 1176 阅读 · 7 评论 -
数据结构Python版(四)——队列
队列是一种操作受限的线性表,其限制为仅允许在表的一端插入,而在表的另一端进行删除。把进行插入的一端称为队尾(rear),把进行删除的一端称作队头或队首(front)。向队列中插入元素称为进队或入队,从队列中删除元素称为出队或离队。队列的一个显著特点是:FIFO(First In First Out)。队列需要实现的方法和栈一样:、、 和 。采用顺序存储结构的队列称为顺序队。我们用列表 来存放队列中的元素,另外设置两个指针,队头指针为 front,队尾指针为 rear。为简单起见,这里使用固定容量的列表:f原创 2022-06-25 15:42:09 · 2431 阅读 · 8 评论 -
用数组实现链表、栈和队列
详解用数组实现单链表、双链表、栈和队列原创 2023-01-26 14:58:02 · 1184 阅读 · 0 评论 -
三大基础排序算法——冒泡排序、选择排序、插入排序
详解三大基础排序算法原创 2023-02-05 20:31:13 · 1686 阅读 · 0 评论 -
史上最详细的KMP算法教程,看这一篇就够了
前缀函数、next数组、nextval数组,BF算法,KMP算法,你想要知道的都在这了!原创 2023-02-04 12:59:37 · 10864 阅读 · 21 评论 -
LeetCode 786. 第 K 个最小的素数分数
个“链表”的表头加入到优先队列中,后续看哪一个链表的表头被弹出,就向优先队列中加入该链表的下一个“节点”。于是我们可以像「合并K个有序链表」那样找到第。个“链表”全部构造出来,花费的时间就已经是。这里有一个巧妙的做法,我们一开始只把。次后,优先队列的队头就是最终的答案。因为用到了排序,所以时间复杂度是。本题还有更优雅的解法,复杂度为。这里有一个小细节,我们在判断。,这样不会引入浮点数的误差。注意,如果我们一开始就把。的时候可以将其转化成。中选,因此我们可以将。原创 2023-08-18 21:19:19 · 270 阅读 · 0 评论 -
AcWing 725. 完全数
AcWing 725. 完全数原创 2023-01-02 15:10:27 · 457 阅读 · 0 评论 -
AcWing 756. 蛇形矩阵
AcWing 756. 蛇形矩阵原创 2023-01-02 19:03:52 · 424 阅读 · 2 评论 -
浅谈归并排序与快速排序
浅谈归并排序、快速排序、快速选择原创 2023-01-14 12:42:23 · 461 阅读 · 0 评论 -
还不会二分查找?看这一篇就够了
详解整数二分和浮点数二分,以及对应的STL函数原创 2023-01-14 22:32:04 · 6090 阅读 · 12 评论 -
下班前几分钟,我彻底弄懂了并查集
详解并查集概念及其应用原创 2023-01-27 11:13:35 · 4921 阅读 · 4 评论 -
一文快速入门哈希表
详解整数哈希和字符串哈希原创 2023-01-30 12:05:30 · 3181 阅读 · 4 评论 -
深入理解堆与优先队列
详解堆、堆排序与优先队列的概念原创 2023-01-31 13:31:55 · 1981 阅读 · 3 评论 -
深度解析Trie(字典树)
介绍Trie的概念及其应用原创 2023-02-05 13:21:22 · 6822 阅读 · 13 评论 -
深入浅出单调栈与单调队列
深入浅出单调栈与单调队列原创 2023-02-11 12:02:37 · 7249 阅读 · 12 评论 -
动态规划专题——背包问题
详解四种背包:01背包、完全背包、多重背包、分组背包。原创 2023-02-13 21:29:20 · 40037 阅读 · 22 评论 -
一文搞懂图的存储与遍历
详解图的概念、图的存储方式和图的遍历原创 2023-02-20 10:45:26 · 4991 阅读 · 4 评论 -
最短路专题——Dijkstra、Floyd、Bellman-Ford、SPFA
BFS是一种朴素的最短路算法,它可以找到无权图或边权都相同的图的最短路,但是对于边权不完全相同甚至可能是负数的图,BFS并不能得到正确的结果,此时我们就需要使用其他的最短路算法来求解。本文仅介绍最基础的几种最短路算法,思维导图如下:单源最短路指的是给定一个源点,计算该源点到图中所有其他点的最短路径长度,而全源最短路则是计算图中任意两点之间的最短路径长度。为方便叙述,接下来均假定图中节点的数量为nnn,边的数量为mmm,节点的编号为1∼n1\sim n1∼n。原创 2023-03-10 11:36:53 · 642 阅读 · 0 评论 -
单/全源最短路的综合应用(未完待续...)
由于无法事先预估出具体的边数,并且图中的节点数也较少,因此可以用邻接矩阵来存图。一个问题是,我们要求的不是最短路而是最少换乘次数,例如,假设只有一条巴士线路。但这并不是我们所熟知的最短路,因为除了边权之外,我们还加上了出发点本身的价格(因为我们至少要先购买一个物品才能不断去替代)。(题目中没有明确说明酋长的地位等级是最高的,因此这里必须使用绝对值),否则最终无法与酋长进行交易,展开可得。这六个点到其他所有点的最短路,然后再枚举所有的拜访顺序,这样一来,总计算量为。可能不止一条路径,因此实际上求的是所有第。原创 2023-03-18 17:56:50 · 518 阅读 · 0 评论 -
还不会拓扑排序?看这一篇就够了
拓扑排序是一种有向无环图(DAG)的顶点排序方法,它将一个有向无环图中的所有顶点排成一个线性序列,使得图中任意一条有向边上的起点排在终点的前面。这样说还不够具体,我们先来看一个例子。课程编号课程名称先修课程111高等数学−−222程序设计基础−−333离散数学121,\,212444数据结构232,\,323555高级语言程序设计222666编译方法454,\,545777操作系统494,\,949888普通物理111999计算机原理888。原创 2023-03-19 18:13:53 · 3975 阅读 · 5 评论 -
归并排序和快速排序的两种实现
但其中的实现都是基于递归的。本文将重新温故这两种算法并给出基于迭代的实现。原创 2023-09-08 10:47:11 · 389 阅读 · 0 评论