1public int findCircleNum(int[][] isConnected) {
2 int n = isConnected.length;
3 boolean[] visited = new boolean[n];
4 int provinces = 0;
5
6 for (int i = 0; i < n; i++) {
7 if (!visited[i]) {
8 provinces++;
9 dfs(isConnected, visited, i, n);
10 }
11 }
12
13 return provinces;
14}
15
16private void dfs(int[][] isConnected, boolean[] visited, int city, int n) {
17 visited[city] = true;
18 for (int neighbor = 0; neighbor < n; neighbor++) {
19 if (isConnected[city][neighbor] == 1 && !visited[neighbor]) {
20 dfs(isConnected, visited, neighbor, n);
21 }
22 }
23}| Variable | Value |
|---|---|
isConnected | Matrix(3x3) [[1,1,0]...] |
n | - |
visited | - |
provinces | - |
i | - |
| Depth | Function Call |
|---|---|
| 1 | findCircleNum([[1,1,0],[1,1,0],[0,0,1]]) |
1public int findCircleNum(int[][] isConnected) {
2 int n = isConnected.length;
3 boolean[] visited = new boolean[n];
4 int provinces = 0;
5
6 for (int i = 0; i < n; i++) {
7 if (!visited[i]) {
8 provinces++;
9 dfs(isConnected, visited, i, n);
10 }
11 }
12
13 return provinces;
14}
15
16private void dfs(int[][] isConnected, boolean[] visited, int city, int n) {
17 visited[city] = true;
18 for (int neighbor = 0; neighbor < n; neighbor++) {
19 if (isConnected[city][neighbor] == 1 && !visited[neighbor]) {
20 dfs(isConnected, visited, neighbor, n);
21 }
22 }
23}