Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 53994bc

Browse files
Merge pull request youngyangyang04#1630 from Xin-Sheng-5075/master
增加 695.岛屿的最大面积 Java 版本
2 parents f437cbf + a88741b commit 53994bc

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

‎problems/0695.岛屿的最大面积.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,3 +167,36 @@ public:
167167
};
168168

169169
```
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+
```

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /