547. 朋友圈
ps:使用并查集的思想并不是最优的解法,这里只是想复习一下并查集的算法思想。
int findCircleNum(vector<vector<int>>& M) {
int count_ = 0;
int sideLen_ = M.size();
int parent_[1024] = { 0 };// 做初始化是一个好习惯
// 先做一个基本的初始化
for (int n = 0; n < sideLen_; n++)
parent_[n] = n;
for (int i = 0; i < sideLen_; i++) {
for (int j = 0; j < i; j++) {
if (M[i][j] == 1) {
int gpf_ = parent_[j];
int son_ = j;
while (gpf_ != son_) {
son_ = gpf_;
gpf_ = parent_[gpf_];
}
parent_[gpf_] = i;
}
}
}
// 数队长的个数即为朋友圈的总数
for (int k = 0; k < sideLen_; k++) {
if (parent_[k] == k)
count_++;
}
return count_;
}

本文通过一个具体的问题——朋友圈,介绍了并查集算法的实现与应用。虽然并查集并非解决此问题的最优解法,但本文旨在回顾并查集的基本思想和操作流程。文中详细展示了如何通过并查集找到朋友圈的总数,包括初始化并查集、进行元素合并以及最终计数的过程。
374

被折叠的 条评论
为什么被折叠?



