栈的定义和特点 数据结构的重要部分,栈,栈是OI中常用的一种线性数据结构,请注意,本文主要讲的是栈这种数据结构,而非程序运行时的系统栈/栈空间,大家一定要弄清晰,别混淆了。栈的定义和特点栈(stack)是一个特殊的线性表,是限定仅在一端(通常是表尾)进行插入和删除操作的线性表。 数据结构 2022年02月28日 144 点赞 0 评论 117959 浏览
倍增算法实例讲解 本篇将简要介绍倍增法。倍增法(英语:binarylifting),顾名思义就是翻倍。它能够使线性的处理转化为对数级的处理,大大地优化时间复杂度。这个方法在很多算法中均有应用,其中最常用的是RMQ问题和求LCA(最近公共祖先)。一、什么是倍增?倍增,字面意思就是“成倍增长”。 算法基础 2022年03月25日 160 点赞 0 评论 89417 浏览
广义表的创建及C语言代码实现 1.广义表的创建如图所示,广义表的每一个结点相互串联,有些结点存储原子数据,有些结点则存储另一份广义表数据,我们创建数据stringss="(2,3,4,(1,(3,(7,8)),2))";其基本可以分成4层,每一个层中一个括号表示下一层,在数学表示中,我们也常用括号的级数表示广义表。 串、数组、矩阵和广义表 2022年05月28日 160 点赞 0 评论 76663 浏览
区间DP实例讲解 一、什么是区间DP?顾名思义:区间DP就是在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的最优解进而得出整个大区间上最优解的DP算法。二、核心思路既然让我求解在一个区间上的最优解,那么我把这个区间分割成一个个小区间,求解每个小区间的最优解,再合并小区间得到大区间即可。 动态规划 2022年04月14日 89 点赞 0 评论 70967 浏览
基数排序算法C/C++代码图文讲解 基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。(1)什么是基数排序?1.通过键值得各个位的值, 排序算法 2022年05月05日 148 点赞 0 评论 104830 浏览
什么是Manacher算法? 本篇讲解manacher算法,大家在学习之前,提前了解一下两个字符串相算法——kmp和拓展kmp,这些算法都是字符串算法。相对于前面介绍的两个算法,Manacher算法的应用范围要狭窄得多,但是它的思想和拓展kmp算法有很多共通支出,所以在这里介绍一下。 字符串相关 2022年05月26日 131 点赞 0 评论 100488 浏览
用数组实现模拟算法C/C++实现(配例题) 1.概念数组这个概念并不陌生,然而,数组本身也是一种数据结构。数组在存储数据时是按顺序存储的,存储数据的内存也是连续的,所以他的特点就是寻址读取数据比较容易,插入和删除比较困难。简单解释一下为什么,在读取数据时,只需要告诉数组要从哪个位置(索引)取数据就可以了, 串、数组、矩阵和广义表 2022年05月07日 139 点赞 0 评论 112042 浏览
图文解析图论BFS(广度优先搜索) BFS全称是BreadthFirstSearch,中文名是宽度优先搜索,也叫广度优先搜索。是图上最基础、最重要的搜索算法之一。所谓宽度优先。就是每次都尝试访问同一层的节点。如果同一层都访问完了,再访问下一层。这样做的结果是,BFS算法找到的路径是从起点开始的最短合法路径。 图论 2022年04月11日 112 点赞 0 评论 100070 浏览
参考及相关链接 参考目录:《大话数据结构》程杰著《数据结构与算法》小黑书,C语言版本《算法与数据结构》小黑书,JAVA版本互联网搜索引擎如百度和谷歌CSDNStack论坛在基本完成数据结构的学习,你应该可以做到:1.完全自由的写出链表,以及基本的操作方法和进阶, 后记 2022年01月31日 57 点赞 0 评论 76636 浏览
什么是格雷码? 一、什么是格雷码?格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同,格雷码的基本特点就是任意两个相邻的代码只有一位二进制数不同,这点很重要。典型的二进制格雷码(BinaryGrayCode)简称格雷码, 其他算法 2022年05月30日 122 点赞 0 评论 108212 浏览