Leetcode 547. Friend Circles [Medium]

原题地址

题目内容

这里写图片描述

题目分析

题目的意思是,找出有多少个朋友环.如果A认识B,B认识C,那么A B C可构成一个环,D E互相认识,他们构成另一个环。采用dfs的方法,将能联通的记录成一个环,并且把访问过的节点标记为true,没有访问过的继续做dfs看是否还有朋友环。

代码实现


class Solution {
public:

    int findCircleNum(vector<vector<int>>& M) {
        int n = M.size();
        int res = 0;
        vector<bool> visited(n,false);
        for(int i = 0; i < n; i++){
            if(visited[i]){
                continue;
            }
            findfriend(M,i,visited);
            res++;

        }
        return res;
    }
    int findfriend(vector< vector<int> >&M, int k, vector<bool>& visited){
        visited[k] = true;
        for(int i = 0; i < M.size(); i++){
            if(M[k][i] == 1 && visited[i] == false){
                findfriend(M,i,visited);
            }
        }
        return 1;
    }
};

猜你喜欢

转载自blog.csdn.net/YuMingJing_/article/details/78640079
今日推荐