数据结构
AnUnverse
What I cannont create,I do not understand.
展开
-
prim、迪杰斯特拉与卡鲁斯卡尔算法模板
prim算法和迪杰斯特拉算法的区别主要是更新dist的方式不同,迪杰斯特拉算法更新距离时比较的是起始点到目标集合的最短距离,而prim算法更新的是未标记集合到已标记集合某点的最短距离。迪杰斯特拉算法模板(求单源最短路):int g[N][N]; // 存储每条边int dist[N]; // 存储1号点到每个点的最短距离bool st[N]; // 存储每个点的最短路是否已经确定// 求1号点到n号点的最短路,如果不存在则返回-1int dijkstra(){ mems原创 2020-11-27 21:29:08 · 521 阅读 · 0 评论 -
【Leetcode】84.柱状图中最大的矩形 -- 单调栈的应用
84. 柱状图中最大的矩形【题面】:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。示例:输入: [2,1,5,6,2,3]输出: 10【题解】:1、此题我起初用的是暴力算法,遍历每个柱子,以每个柱子高向左向右数,直到...原创 2020-10-22 23:03:28 · 158 阅读 · 0 评论 -
线段树模板
线段树线段树模板:struct Segement { int l, r; int dat;}t[SIZE * 4]; // 存储线段树// 建树及保存对应区间最大值void build(int p, int l, int q) { t[p].l = l, t[p].r = r; if (l == r) { t[p].dat = a[l]; return ; } int mid = (l + r) / 2; build(p * 2, l, mid); build(p *原创 2020-08-30 23:25:02 · 127 阅读 · 0 评论 -
KMP终结者
目录KMP算法0.问题1.next数组的计算与含义2.使用Next数组【题记】每次遇到KMP,要么不了了之,要么简单套用模板,前几天刚背完模板,过几天啥都不记得了,没有一点点进步。消除恐惧的最好方法就是面对恐惧。坚持,才是胜利。加油,奥里给!本文参考了网上诸多关于KMP算法的解释与理解,力求通俗易懂。KMP算法0.问题字符串匹配是计算机的基本任务之一。字...翻译 2020-04-12 18:57:19 · 139 阅读 · 0 评论 -
数据结构--链表
窝已经菜到双链表都要写个博客了。。。设计链表设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性prev以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取...原创 2020-04-10 09:33:59 · 137 阅读 · 0 评论