Input: [[1,1,0], [1,1,0], [0,0,1]] Output: 2 Explanation:The 0th and 1st students are direct friends, so they are in a friend circle. The 2nd student himself is in a friend circle. So return 2.
public int findCircleNum(int[][] M){ int circleNum = 0; boolean[] hasVisited = new boolean[M.length]; for(int i=0;i<M.length;i++){ if(!hasVisited[i]){ dfs(M, i, hasVisited); circleNum++; } } return circleNum; } private void dfs(int[][] M,int i,boolean[] hasVisited){ hasVisited[i] = true; for(int k=0;k<M.length;k++){ if(M[i][k] == 1 && !hasVisited[k]){ dfs(M, k, hasVisited); } } }