File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -167,3 +167,36 @@ public:
167
167
};
168
168
169
169
```
170
+
171
+ # 其它语言版本
172
+
173
+ ## Java
174
+
175
+ 这里使用深度优先搜索 DFS 来完成本道题目。我们使用 DFS 计算一个岛屿的面积,同时维护计算过的最大的岛屿面积。同时,为了避免对岛屿重复计算,我们在 DFS 的时候对岛屿进行 “淹没” 操作,即将岛屿所占的地方置为 0。
176
+
177
+ ```java
178
+ public int maxAreaOfIsland(int[][] grid) {
179
+ int res = 0;
180
+ for(int i = 0;i < grid.length;i++){
181
+ for(int j = 0;j < grid[0].length;j++){
182
+ //每遇到一个岛屿就计算这个岛屿的面积同时”淹没“这个岛屿
183
+ if(grid[i][j] == 1){
184
+ //每次计算一个岛屿的面积都要与res比较,维护最大的岛屿面积作为最后的答案
185
+ res = Math.max(res,dfs(grid,i,j));
186
+ }
187
+ }
188
+ }
189
+ return res;
190
+ }
191
+ public int dfs(int[][] grid,int i,int j){
192
+ //搜索边界:i,j超过grid的范围或者当前元素为0,即当前所在的地方已经是海洋
193
+ if(i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] == 0) return 0;
194
+ //淹没土地,防止后续被重复计算
195
+ grid[i][j] = 0;
196
+ //递归的思路:要求当前土地(i,j)所在的岛屿的面积,则等于1加上下左右相邻的土地的总面积
197
+ return 1 + dfs(grid,i - 1,j) +
198
+ dfs(grid,i + 1,j) +
199
+ dfs(grid,i,j + 1) +
200
+ dfs(grid,i,j - 1);
201
+ }
202
+ ```
You can’t perform that action at this time.
0 commit comments