@@ -5,45 +5,23 @@ class Solution {
55 int n = grid1.size ();
66 int m = grid1[0 ].size ();
77
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 ));
99
10- function<void (int , int )> dfs = [&](int i, int j)
11- {
12- if (i < 0 or j < 0 or i >= n or j >= m or 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 >= n or j >= m or 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 >= n or j >= m or visited[i][j] or !grid2[i][j])
3412 return true ;
3513
36- if (!visited [i][j]) return false ;
14+ if (!grid1 [i][j]) return false ;
3715
38- visited2 [i][j] = true ;
16+ visited [i][j] = true ;
3917
4018 bool up, left, right, down;
4119 up = left = right = down = true ;
4220
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 );
4725
4826 return up and left and down and right;
4927 };
@@ -54,9 +32,9 @@ class Solution {
5432 {
5533 for (int j = 0 ; j < m; ++j)
5634 {
57- if (!visited2 [i][j] and grid2[i][j])
35+ if (!visited [i][j] and grid2[i][j])
5836 {
59- if (dfs2 (i, j))
37+ if (dfs (i, j))
6038 {
6139 ++subIsland;
6240 }
0 commit comments