42
42
43
43
<p >注意:本题与主站 695  ; 题相同:  ; <a href =" https://leetcode-cn.com/problems/max-area-of-island/ " >https://leetcode-cn.com/problems/max-area-of-island/</a ></p >
44
44
45
-
46
45
## 解法
47
46
48
47
<!-- 这里可写通用的实现逻辑 -->
@@ -105,7 +104,7 @@ def find(x):
105
104
106
105
# 合并a和b所在的两个集合
107
106
p[find(a)] = find(b)
108
- d[find(a)] = dinstance
107
+ d[find(a)] = distance
109
108
```
110
109
111
110
<!-- tabs:start -->
@@ -127,7 +126,7 @@ class Solution:
127
126
for x, y in [[0 , 1 ], [0 , - 1 ], [1 , 0 ], [- 1 , 0 ]]:
128
127
res += dfs(grid, i + x, j + y, m, n)
129
128
return res
130
-
129
+
131
130
m, n = len (grid), len (grid[0 ])
132
131
res = 0
133
132
for i in range (m):
@@ -145,12 +144,12 @@ class Solution:
145
144
m, n = len (grid), len (grid[0 ])
146
145
p = list (range (m * n))
147
146
size = [1 ] * (m * n)
148
-
147
+
149
148
def find (x ):
150
149
if p[x] != x:
151
150
p[x] = find(p[x])
152
151
return p[x]
153
-
152
+
154
153
for i in range (m):
155
154
for j in range (n):
156
155
if grid[i][j] == 1 :
@@ -272,29 +271,36 @@ DFS:
272
271
273
272
``` ts
274
273
function maxAreaOfIsland(grid : number [][]): number {
275
- let m = grid .length , n = grid [ 0 ]. length ;
276
- let res = 0 ;
277
- for ( let i = 0 ; i < m ; ++ i ) {
278
- for (let j = 0 ; j < n ; ++ j ) {
279
- if ( grid [ i ][ j ] == 1 ) {
280
- res = Math . max ( dfs ( grid , i , j ), res );
281
- }
282
- }
274
+ let m = grid .length ,
275
+ n = grid [ 0 ]. length ;
276
+ let res = 0 ;
277
+ for (let i = 0 ; i < m ; ++ i ) {
278
+ for ( let j = 0 ; j < n ; ++ j ) {
279
+ if ( grid [ i ][ j ] == 1 ) {
280
+ res = Math . max ( dfs ( grid , i , j ), res );
281
+ }
283
282
}
284
- return res ;
285
- };
283
+ }
284
+ return res ;
285
+ }
286
286
287
287
function dfs(grid : number [][], i : number , j : number ): number {
288
- let m = grid .length , n = grid [0 ].length ;
289
- if (i < 0 || i > m - 1 || j < 0 || j > n - 1 || grid [i ][j ] == 0 ) {
290
- return 0 ;
291
- }
292
- grid [i ][j ] = 0 ;
293
- let res = 1 ;
294
- for (let [dx, dy] of [[0 , 1 ], [0 , - 1 ], [1 , 0 ], [- 1 , 0 ]]) {
295
- res += dfs (grid , i + dx , j + dy );
296
- }
297
- return res ;
288
+ let m = grid .length ,
289
+ n = grid [0 ].length ;
290
+ if (i < 0 || i > m - 1 || j < 0 || j > n - 1 || grid [i ][j ] == 0 ) {
291
+ return 0 ;
292
+ }
293
+ grid [i ][j ] = 0 ;
294
+ let res = 1 ;
295
+ for (let [dx, dy] of [
296
+ [0 , 1 ],
297
+ [0 , - 1 ],
298
+ [1 , 0 ],
299
+ [- 1 , 0 ],
300
+ ]) {
301
+ res += dfs (grid , i + dx , j + dy );
302
+ }
303
+ return res ;
298
304
}
299
305
```
300
306
0 commit comments