
数据结构
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号点的最短路,如果不存在则返回-1 int dijkstra() { mems原创 2020-11-27 21:29:08 · 607 阅读 · 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 · 234 阅读 · 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 · 174 阅读 · 0 评论 -
KMP终结者
目录 KMP算法 0.问题 1.next数组的计算与含义 2.使用Next数组 【题记】每次遇到KMP,要么不了了之,要么简单套用模板,前几天刚背完模板,过几天啥都不记得了,没有一点点进步。 消除恐惧的最好方法就是面对恐惧。坚持,才是胜利。加油,奥里给! 本文参考了网上诸多关于KMP算法的解释与理解,力求通俗易懂。 KMP算法 0.问题 字符串匹配是计算机的基本任务之一。 字...翻译 2020-04-12 18:57:19 · 205 阅读 · 0 评论 -
数据结构--链表
窝已经菜到双链表都要写个博客了。。。 设计链表 设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性prev以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。 在链表类中实现这些功能: get(index):获取...原创 2020-04-10 09:33:59 · 321 阅读 · 0 评论