原题地址:https://leetcode.cn/problems/number-of-provinces/ 
题解
从一个点开始BFS搜索所有与之相连的城市
- 对于isConnected[i][i],将其置0表示该城市已被算入一个省份中
 
- 对于一个被算入该省份的城市,遍历与其相连的所有边,将与之相连的未被算入省份的城市加入队列中
 
如果遍历对于isConnected仍能搜索到边/一个未被算入省份的城市,则说明存在一个新的省份,cnt++,并继续BFS
遍历完毕后返回cnt即可
时间复杂度:O(N)
空间复杂度:O(N)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   | class Solution {     public int findCircleNum(int[][] isConnected) {         if(isConnected.length==1){return 1;}         int cnt=0,rowNow;         Queue<Integer> BFS=new LinkedList<>();         for(int i=0;i<isConnected.length;i++){             if(isConnected[i][i]==1){                 cnt++;                 BFS.add(i);                 while(!BFS.isEmpty()){                     rowNow=BFS.remove();                     for(int j=0;j<isConnected[i].length;j++){                         if(rowNow==j){                             isConnected[j][j]=0;                         }else if(isConnected[rowNow][j]==1&&isConnected[j][j]==1){                             BFS.add(j);                         }                     }                 }             }         }         return cnt;     } }
  |