简单实用的算法/数据结构
GreyBtfly王宝彤
业精于勤,荒于嬉;行成于思,毁于随
展开
-
并查集入门讲解
博客目录一、引入并查集的功能如下:如果a和b是舍友,b和c是舍友,则我们认定a和c也是舍友(当然在离散数学中这是错误的,为了引入我们假定自己和自己也是舍友)。也就是说有n个人,给出m个元组(a,b)表示a和b是舍友,现在有许多查询:请你判断任意两个人之间是否有舍友关系。复杂度来讲,建立和查询加起来大概是O(n)再加上一个常数,效率也比较高。并查集还可以解决以下问题:问:如何...原创 2018-08-21 20:03:21 · 441 阅读 · 0 评论 -
acm数据预处理 —— 离散化的两种方法
博客目录引言如果我们要处理一些数据,如果:我们只关心数据之间相对大小,而不关心每个数据到底有多大离散化的大体意思就是:给数据重新编号,使新号码依然具有跟之前相同的大小关系,来使数据更加紧凑。比如说:给一个无向图,每个节点都以一个字符表示,那么我们就可以将字符替换成数字123...再比如说:现在有1000个[-1e9,1e9]范围的整数,计数统计一下每个数出现的次数。由于开一...原创 2018-08-21 20:25:46 · 2048 阅读 · 0 评论 -
单链表,判环,计算环周长,判环入口
最近在准备面试,看到了这个题.首先我们知道单链表是单向的,无环的.如果我们让终点指向链表上某个节点(可以是起点),则就成我们所说的带一个环的链表.一.如何判断是否存在环?1.面试时回答的答案:用unordered_map (hash_map)给链表打标记,然后遍历链表如果发现走到重复点了,就说明有环,且找到了环起点,也计算出了环周长.2.网上的回答:使用两个指针:fas...原创 2019-02-21 15:31:48 · 361 阅读 · 0 评论 -
求二叉树:二叉树最近公共祖先(LCA)问题 和 /节点最大距离问题.
一.最近公共祖先(LCA)假设我们有指向所求两点的指针A和B1.二叉树有指向父亲节点的指针struct node{ ... struct node l,r,prv; //left child,right child,father}如果我们有每个节点的深度信息的话: 假设deep(A) > deep(B) ,且deep(A)-deep(B) = s...原创 2019-02-21 16:13:19 · 553 阅读 · 0 评论