find 太慢超时了

场景:~/work/graph/ufs.cpp 的并查集结果是对的,可点一多、连成长链以后,查询慢得跑不完。 任务:修好 find_root,让十万个点连成的长链逐点查询也能在 3 秒内完成。make 编译后用 sample.txt 自测。

开始练习 →

反复查区间和还要改值

要反复查询「某一段的和」,而且中间还会修改元素,最合适的结构是【0】。

开始练习 →

海量数据判断见没见过

几亿条记录,只要极快地判断「这条见没见过」,而且能接受极小概率的误判,用【0】。

开始练习 →

要有序且插入删除频繁

数据要一直保持有序,插入删除又很频繁、不能退化成一条链,用【0】。

开始练习 →

数据在磁盘上要少读盘

数据量大到放不进内存、存在磁盘上,索引要尽量少读盘,用【0】。

开始练习 →

这些结构的共同套路

第 1 步:上面是原数组 第 2 步:先花力气把前缀和存好 第 3 步:要查中间三个数的和 第 4 步:两个前缀和一减就出来 17 24 15 13 23 17 41 56 69 92 线段树、树状数组、B+树这些结构,共同的套路是【0】。

开始练习 →

这五个数一共多大

运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #include <string> #include <

开始练习 →

平衡因子是什么(C++)

AVL 树里,一个节点的平衡因子指的是【0】。

开始练习 →

什么时候必须旋转(C++)

AVL 树在插入之后,【0】就要做旋转。

开始练习 →

左左情况怎么修

第 1 步:左边挂了两层:歪了 第 2 步:把左孩子 15 提上来 第 3 步:15 当根,17 挂到右边 第 4 步:两边一样高,平衡了 17 15 13 新节点插在了「左孩子的左边」,导致失衡,修法是【0】。

开始练习 →