拿下技术面上传简历

维护一张只有加边、没有删边的无向图:节点数 10^6,边会分 10^7 次陆续加入,加入过程中随时可能被问「u 和 v 是否连通」。你选什么数据结构?请写出 find 的核心实现(含路径压缩),并回答:只做路径压缩、不做按秩合并,够不够用?为什么?

数据结构与算法线性与树结构1-3 年知识点 1 个

面试官在考什么

判断候选人是否真正写过并查集,是否理解路径压缩与按秩合并各自解决什么问题,以及递归实现的风险。

并查集

回答框架 · 前两步

  1. 并查集:parent 数组初始化为 parent[i] = i;find(x) 沿父指针上溯到根;union(a,b) 先各自找根,再把一个根挂到另一个根下面;查询连通性就是比较两个根是否相同。
  2. 路径压缩:find 的过程中把路径上所有节点直接挂到根上(迭代写法或两趟循环),使后续查找几乎一步到位。

还有 3 条答案要点、 3 层追问、 6 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「数据结构与算法」方向页

同一能力域的其他题