![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 75
数据结构与算法专题
小菜2小白
这个作者很懒,什么都没留下…
展开
-
前缀和(Prefix Sum)
前缀和指一个数组的某下标之前的所有数组元素的和(包含其自身)。前缀和分为一维前缀和,以及二维前缀和。前缀和是一种重要的预处理,能够降低算法的时间复杂度。原创 2023-01-19 13:23:46 · 489 阅读 · 0 评论 -
同余及其性质(Congruence)
同余(Congruence Modulo)是数论中的一种等价关系。原创 2023-01-19 13:22:25 · 555 阅读 · 0 评论 -
确定有限状态自动机(Deterministic Finite Automation)
确定优先状态自动机(Deterministic Finite Automation, DFA)是一种计算模型。原创 2023-01-19 13:21:12 · 588 阅读 · 0 评论 -
树状数组(Binary Index Tree)
树状数组(Binary Index Tree, BIT)是用用数组来模拟树形结构。原创 2023-01-19 13:16:10 · 275 阅读 · 0 评论 -
桶排序(Bucket sort)
桶排序又称箱排序(Bucket sort),是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(可能在使用其他的排序算法),最后依次把各个桶中的记录列出来便得到了有序序列。原创 2023-01-19 11:57:26 · 443 阅读 · 0 评论 -
线段树(Segment Tree)
线段树用于维护区间信息(要求满足结合律)。原创 2023-01-19 11:56:52 · 202 阅读 · 0 评论 -
置换环(Substitution Loop)
置换环可以得到数组排序(可以指定排序方式)所需交换的最小次数。原创 2023-01-19 11:53:55 · 464 阅读 · 0 评论 -
字典树(Trie)
字典树(Trie),也叫前缀树,是一个比较简单的数据结构,用来存储和查询字符串。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较。原创 2023-01-19 11:52:05 · 250 阅读 · 0 评论 -
KMP算法(Knuth-Morris-Pratt字符串查找算法)
KMP算法的全称为Knuth-Morris-Pratt字符串查找算法,是可以在文本串s中快速查找模式串p的一种算法。原创 2023-01-19 10:54:18 · 251 阅读 · 0 评论 -
最大公约数和最小公倍数(GCD & LCM)—简写版
如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整数的最小公倍数。原创 2023-01-19 11:15:39 · 453 阅读 · 0 评论 -
平衡二叉搜索树(Balanced Binary Tree)
平衡二叉搜索树是一种结构平衡的二叉搜索树,它的每个结点的左右两颗子树的高度差都不超过一的二叉树。原创 2023-02-19 16:39:15 · 618 阅读 · 0 评论 -
快速排序(Quick Sort)
快速排序(英语:Quicksort),又称分区交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔提出。原创 2023-01-18 15:51:29 · 202 阅读 · 0 评论 -
计数排序(Counting Sort)
计数排序是一种牺牲内存空间来换取低时间复杂度的排序算法,同时它也是一种不基于比较的算法。这里的不基于比较指的是数组元素之间不存在比较大小的排序算法,它可以突破基于比较算法的下限。原创 2023-01-18 15:08:22 · 215 阅读 · 0 评论 -
二分查找(Binary Search)
二分查找也叫作折半查找。二分查找有两个要求,一个是数列有序,另一个是数列使用顺序存储结构。他的思想很简单,但是在书写过程中如果边界条件无法正确的确定,很容易陷入到循环中无法跳出。原创 2023-01-18 14:59:17 · 544 阅读 · 0 评论 -
二叉搜索树(Binary Search Tree)
二叉搜索树又叫二叉排序树、二叉查找树,支持多种操作,包括Search、Minimum、Maximum、Predecessor、Successor、Insert和Delete等操作,且其基本操作所花费的时间与这棵树的高度成正比。原创 2023-01-18 14:56:35 · 613 阅读 · 0 评论 -
二叉堆(Binary Heap)
堆是完全二叉树,最大堆和最小堆是二叉堆的形式,按照最大元素位于根节点排列的二叉堆被称为最大堆,同理按照最小元素位于根节点排列的二叉堆被称为最小堆。原创 2023-01-18 14:45:06 · 142 阅读 · 0 评论 -
单调栈(Monotonic Stack)
单调栈是一种和单调队列类似的数据结构。单调栈主要在O(n)复杂度下解决Next Greater Element(NGE)问题(对序列中的每个元素找下一个/上一个比他大/小的元素)。原创 2023-01-18 14:30:10 · 438 阅读 · 0 评论 -
单调队列(Monotonic Queue)
单调队列是一种主要用于解决滑动窗口类问题的数据结构,即在长度为n的序列中,求每个长度为m的区间的区间最值,其的时间复杂度为O(n)。原创 2023-01-18 14:24:09 · 778 阅读 · 0 评论 -
并查集(Union-Find Disjoint Sets)
并查集是一种树型的数据结构,主要适用于解决一些元素的分组问题。它管理一系列不相交的集合,并支持合并和查询两种操作。原创 2023-01-18 14:17:21 · 233 阅读 · 0 评论 -
Dijkstra算法
给定一个带权有向图G=(V,E),其中每条边的权是一个实数。另外,还给定V中的一个顶点,称为源。要计算从源到其他所有各顶点的最短路径长度。这里的长度就是指路上各边权之和。这个问题通常称为单源最短路径问题。原创 2023-01-18 14:08:39 · 150 阅读 · 0 评论 -
组合数的计算方法(Combinatorial Number)
从n个不同元素中取出mm≤n个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。原创 2023-01-18 14:04:47 · 1081 阅读 · 1 评论