![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 88
数据结构
鱼香rose__
学习算法中...
展开
-
二叉树遍历(中序+__=二叉树)
跟据二叉树的性质,给出二叉树的中序遍历以及任意一种遍历顺序,即可构造出一棵唯一的二叉树。跟据前序和中序求后序跟据后序和中序求层序跟据层序和中序求前序原创 2024-04-17 11:26:08 · 363 阅读 · 0 评论 -
AtCoder Beginner Contest 328(E - Modulo MST)
You are given a weighted simple connected undirected graph with NNN vertices and MMM edges, where vertices are numbered 111 to NNN, and edges are numbered 111 to MMM. Additionally, a positive integer KKK is given.Edge i (1≤i≤M)i\ (1\leq i\leq M)i (1≤i≤M)原创 2023-11-13 19:09:12 · 217 阅读 · 0 评论 -
HDU-5536-Chip Factory(01Trie)
Trie树有一道经典例题,是一个整数序列,然后选择两个数令其异或和最大。先回顾一下那道题的思路:我们将所有的数字全部插入Trie树中,然后我们循环遍历所有的数字,求出最大异或和。这道题在例题的基础上增加了一些难度,题目要求从数列1中选出两个数相加后与第三个数异或,求所选数字组成的最大值。妥妥超时,但是只需降低一个时间复杂度,令时间复杂度降为。因此我们考虑优化暴力的思路。如果这道题用暴力来写的话,时间复杂度就是。的整数序列,然后从里面选出来三个数。组数据,每组数据都给定一个长度为。原创 2023-09-16 12:02:38 · 59 阅读 · 0 评论 -
数据结构之树状数组(算法知识总结)
树状数组顾名思义,本质就是一个数组,但是其储存结构与一般的线性数组不同。如果我们使用常规的数组进行单点修改与区间查询时,其时间复杂度分别是O1O(1)O1和OnO(n)On,当问题中涉及到的区间查询较多时,时间复杂度会叠的很高。这时就可以使用树状数组来解决这种单点修改、区间修改、单点查询、区间查询的问题。树状数组的结构图如下图所示,下图的结构是如何来实现的呢?原创 2023-08-12 17:38:32 · 128 阅读 · 0 评论 -
数据结构之并查集(算法知识总结)
并查集是一种可以动态维护若干个不重叠的集合,并支持合并与查询的数据结构。find(),查询一个元素属于哪个集合。mergo,把两个集合合并为一个大集合。并查集实际上就是处理具有关联关系的问题。比如给定若干对物品之间的关系,然后判断那一对关系是错的。那么并查集该如何实现呢?要实现并查集,就要从实际出发,想办法实现以上两个功能。如果我们想要将若干个物品归为一类,我们可以令其同时等于一个元素,这样,当我们判断两个物品是否是同一类时,只需要查询两个物品是否都等于同一个元素即可。原创 2023-08-12 15:02:17 · 46 阅读 · 0 评论 -
AcWing 131. 直方图中最大的矩形(单调栈)
这其实很好判断,我们只需要枚举所有的矩阵高度,矩阵高度变化的同时,矩阵的宽度也会按照规则进行变换,保证矩阵是在条形图里。当各矩阵高度随机时,会出现下一个矩阵高度小于当前矩阵高度的情况,这样如果继续计算矩阵面积,那么矩阵高度将不能超过下一个矩阵。**当遇到比栈顶元素小的情况时,不断取出栈顶,累计被弹出的矩形的宽度之和,然后用弹出的高度乘以累计的宽度去更新答案。这是一道很经典的单调栈问题,但在刚看到这道题的时候我们应该先思考一个问题,当矩阵序列每行递增排列时,我们该如何判断最大矩。当输入n为0时,表示结束。原创 2023-07-11 11:43:22 · 210 阅读 · 0 评论 -
二叉堆算法
二叉堆是一种支持插入、删除、查询最值的数据结构。它其实是一棵 满足”堆性质“的完全二叉树,树上的每个节点带有一个权值。若树中的任意一个节点的权值都小于等于其父节点的权值,则称该二叉树满足“大根堆性质”。若树中任意一个节点的权值都大于等于其父亲节点的权值,则称该二叉堆满足“小根堆性质”。“大根堆”、“小根堆”都是二叉堆的形态之一。哈夫曼树(Huffman Tree)是一种特殊的二叉树,它的每个非叶子节点都有两个子节点,其中左子节点代表0,右子节点代表1。原创 2023-07-10 10:42:56 · 99 阅读 · 1 评论 -
AcWing 149. 荷马史诗(二叉堆、小根堆、Huffman树、C++)
本题所构造的编码方式其实就是 Huffman 编码,我们把单词的出现次数 w1 ~ wn 作为 Huffman 树叶子节点的权值,然后求出k 叉 Huffman 树。对于 Huffman 树的每个节点的k个分支,分别在边上标记字符0 ~ k - 1.原创 2023-07-09 20:08:38 · 93 阅读 · 1 评论 -
Trie字典树算法
Trie(字典树)是一种用于实现字符串快速检索的多叉树结构。Trie 的每个节点都拥有若干个字符指针,若在插入或检索字符串时扫描到一个字符 c,就沿着当前节点的c字符指针,走向该指针指向的节点。原创 2023-07-06 09:48:22 · 126 阅读 · 1 评论 -
AcWing 143. 最大异或对
【代码】AcWing 143. 最大异或对。原创 2023-07-05 23:06:04 · 86 阅读 · 1 评论