题目链接
最近在复习并查集,所以做了下这个题,这个题用bfs或dfs也是能做的,不过这里只讲一讲quick-union方法。显然,对于各个城市,我们用union函数将有直接或者间接联系的两个城市连接起来,前面这部分我倒是写对了,只是在计算省份数量多时候没有彻底搞清楚,要知道UF这个字典里存的是其父节点而非最祖先的根节点,因此在计算连通分量的时候,应该计算对于所有UF里的键值对键和值想等的情况。这个算法的时间复杂度是O(N^2logN),空间复杂度是O(N)。注意目前并没有使用按秩排序,而2是在union函数中使用了按秩排序的。
python: