(M)DFS: 547. Friend Circles

来源:互联网 发布:广东工业大学矩阵分析 编辑:程序博客网 时间:2024/06/05 21:15

这个题以前做过,用的是并查集,这次选择用DFS。我开辟了一个新的数组,长度为n,表示第i个人的直系关系有没有找过。

class Solution {public:    int findCircleNum(vector<vector<int>>& M) {        int n = M.size();        vector<int> ischeck(n, 0);        int count = 0;        for(int i = 0; i < n; ++i)        {            if(ischeck[i] == 1)                continue;            dfs(M, ischeck, i);            count++;        }        return count;    }    void dfs(vector<vector<int>>& M, vector<int>& ischeck, int id)    {        if(ischeck[id] == 0)            ischeck[id] = 1;        else            return;        for(int i = 0; i < M.size(); ++i)        {            if(M[id][i] == 1)            {                dfs(M, ischeck, i);            }        }    }};


原创粉丝点击