File tree Expand file tree Collapse file tree 1 file changed +35
-0
lines changed Expand file tree Collapse file tree 1 file changed +35
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ func maxAreaOfIsland( _ grid: [ [ Int ] ] ) -> Int {
3
+ let numRows = grid. count
4
+ let numColumns = grid [ 0 ] . count
5
+
6
+ var grid = grid
7
+ var maxArea = 0
8
+
9
+ for row in 0 ..< numRows {
10
+ for column in 0 ..< numColumns {
11
+ guard grid [ row] [ column] == 1 else { continue }
12
+
13
+ let area = dfs ( row: row, column: column, grid: & grid)
14
+ maxArea = max ( maxArea, area)
15
+ }
16
+ }
17
+ return maxArea
18
+ }
19
+
20
+ private func dfs( row: Int , column: Int , grid: inout [ [ Int ] ] ) -> Int {
21
+ guard row >= 0 ,
22
+ row < grid. count,
23
+ column >= 0 ,
24
+ column < grid [ 0 ] . count,
25
+ grid [ row] [ column] == 1
26
+ else { return 0 }
27
+
28
+ grid [ row] [ column] = 0
29
+
30
+ return 1 + dfs( row: row + 1 , column: column, grid: & grid)
31
+ + dfs( row: row - 1 , column: column, grid: & grid)
32
+ + dfs( row: row, column: column + 1 , grid: & grid)
33
+ + dfs( row: row, column: column - 1 , grid: & grid)
34
+ }
35
+ }
You can’t perform that action at this time.
0 commit comments