首页 > 其他 > 详细

朋友圈数量

时间:2019-10-27 16:04:21      阅读:80      评论:0      收藏:0      [点我收藏+]

题目:

给一个矩阵,里面记录着每个人同其他人是否是朋友关系,并且朋友关系具备可传递性。

题目连接:https://leetcode-cn.com/problems/friend-circles/?tdsourcetag=s_pctim_aiomsg

 

题目分析:

这个题说到底还是自己对递归理解的不深刻,同时为了强行套用以往的深搜的公式。应该以每个人为中心,对他以及认识的朋友进行搜索。以下图为例进行搜索过程的解析。

A的朋友是B,然后以B为中心对B展开搜索,B的朋友有C和D,分别以C和D为中心对C和D进行搜索,C没有朋友搜索结束,而D的朋友是E,继续以E为中心对E展开搜索。

代码如下:

class Solution {
    private void dfs(int[][] M,boolean[] visited,int i){
        
        for(int j = 0;j < M.length;j++){
            if(M[i][j] == 1 && !visited[j]){
                visited[j] = true;
                dfs(M,visited,j);
            }
        }
    }
    public int findCircleNum(int[][] M) {
        int result = 0;
        boolean[] visited = new boolean[M.length];
        // visiited代表的含义是每个人是否被访问过,因为这个是无向图,所以不需要存储互相的访问状态
        for(int i = 0;i < M.length;i++){
            if(!visited[i]){
                dfs(M,visited,i);
                result++;
            }
        }


        return result;
    }
}

  

技术分享图片

朋友圈数量

原文:https://www.cnblogs.com/jihuabai/p/11747600.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!