@@ -5,45 +5,23 @@ class Solution {
5
5
int n = grid1.size ();
6
6
int m = grid1[0 ].size ();
7
7
8
- vector<vector<bool >>visited (n, vector<bool >(m,false )), visited2 (n, vector< bool >(m, false )) ;
8
+ vector<vector<bool >>visited (n, vector<bool >(m,false ));
9
9
10
- function<void (int ,int )> dfs = [&](int i,int j)
11
- {
12
- if (i <0 or j <0 or i >= nor j >= mor visited[i][j]or !grid1[i][j])
13
- return ;
14
-
15
- visited[i][j] =1 ;
16
-
17
- dfs (i-1 , j);
18
- dfs (i, j+1 );
19
- dfs (i+1 , j);
20
- dfs (i, j-1 );
21
- };
22
-
23
- for (int i =0 ; i < n; ++i)
24
- {
25
- for (int j =0 ; j < m; ++j)
26
- {
27
- if (!visited[i][j]and grid1[i][j])
28
- dfs (i, j);
29
- }
30
- }
31
-
32
- function<bool (int ,int )> dfs2 = [&](int i,int j) ->bool {
33
- if (i <0 or j <0 or i >= nor j >= mor visited2[i][j]or !grid2[i][j])
10
+ function<bool (int ,int )> dfs = [&](int i,int j) ->bool {
11
+ if (i <0 or j <0 or i >= nor j >= mor visited[i][j]or !grid2[i][j])
34
12
return true ;
35
13
36
- if (!visited [i][j])return false ;
14
+ if (!grid1 [i][j])return false ;
37
15
38
- visited2 [i][j] =true ;
16
+ visited [i][j] =true ;
39
17
40
18
bool up, left, right, down;
41
19
up = left = right = down =true ;
42
20
43
- up =dfs2 (i-1 , j);
44
- left =dfs2 (i, j-1 );
45
- down =dfs2 (i+1 , j);
46
- right =dfs2 (i, j+1 );
21
+ up =dfs (i-1 , j);
22
+ left =dfs (i, j-1 );
23
+ down =dfs (i+1 , j);
24
+ right =dfs (i, j+1 );
47
25
48
26
return upand leftand downand right;
49
27
};
@@ -54,9 +32,9 @@ class Solution {
54
32
{
55
33
for (int j =0 ; j < m; ++j)
56
34
{
57
- if (!visited2 [i][j]and grid2[i][j])
35
+ if (!visited [i][j]and grid2[i][j])
58
36
{
59
- if (dfs2 (i, j))
37
+ if (dfs (i, j))
60
38
{
61
39
++subIsland;
62
40
}