File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed
number-of-connected-components-in-an-undirected-graph Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ time: O(n+m), where n is the number of nodes and m is the number of edges in the graph.
3
+ space: O(n)
4
+ */
5
+ class Solution {
6
+
7
+ public int countComponents (int n , int [][] edges ) {
8
+ boolean [] visited = new boolean [n ];
9
+
10
+ Map <Integer , List <Integer >> map = new HashMap <>();
11
+ for (int [] edge : edges ) {
12
+ map .computeIfAbsent (edge [0 ], k -> new ArrayList <>())
13
+ .add (edge [1 ]);
14
+ map .computeIfAbsent (edge [1 ], k -> new ArrayList <>())
15
+ .add (edge [0 ]);
16
+ }
17
+
18
+ int ans = 0 ;
19
+ for (int i = 0 ; i < n ; i ++) {
20
+ if (visited [i ]) {
21
+ continue ;
22
+ }
23
+ dfs (i , map , visited );
24
+ ans ++;
25
+ }
26
+ return ans ;
27
+ }
28
+
29
+ public void dfs (int k , Map <Integer , List <Integer >> map , boolean [] visited ) {
30
+ if (visited [k ]) {
31
+ return ;
32
+ }
33
+ visited [k ] = true ;
34
+ if (!map .containsKey (k )) {
35
+ return ;
36
+ }
37
+ List <Integer > values = map .get (k );
38
+ for (int v : values ) {
39
+ dfs (v , map , visited );
40
+ }
41
+ }
42
+ }
You can’t perform that action at this time.
0 commit comments