Leetcode—323.无向图中连通分量的数目【中等】Plus

2023每日刷题(七)

Leetcode—323.无向图中连通分量的数目

Leetcode—323.无向图中连通分量的数目【中等】Plus_第1张图片

并查集思路实现代码

static int father[2010] = {0};

int Find(int x) {
    if(x != father[x]) {
        father[x] = Find(father[x]);
    }
    return father[x];
}

void Union(int x, int y) {
    int a = Find(x);
    int b = Find(y);
    if(a != b) {
        father[a] = b;
    }
}

int countComponents(int n, int** edges, int edgesSize, int* edgesColSize){
    int i;
    for(i = 0; i < n; i++) {
        father[i] = i;
    }
    *edgesColSize = 2;
    int x = 0, y = 0;
    int j;
    for(i = 0; i < edgesSize; i++) {
        j = 0;
        x = edges[i][j];
        y = edges[i][j+1];
        Union(x, y);
    }
    int ans = 0;
    for(i = 0; i < n; i++) {
        if(i == Find(i)) {
            ans++;
        }
    }
    return ans;
}

复杂度分析

Leetcode—323.无向图中连通分量的数目【中等】Plus_第2张图片

测试结果

Leetcode—323.无向图中连通分量的数目【中等】Plus_第3张图片

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

你可能感兴趣的:(LeetCode刷题,leetcode,算法,职场和发展,c语言,图,并查集,经验分享)