1、前言

2、思路

主要是这个图,找到有长度的地方,为越界处或者是0处。
3、代码
class Solution {
public int islandPerimeter(int[][] grid) {
int M = grid.length;
int N = grid[0].length;
for(int i = 0; i < M; i++){
for(int j = 0; j < N; j++){
// 只有一个岛屿
if(grid[i][j] == 1){
return dfs(grid, i, j);
}
}
}
return 0;
}
private int dfs(int[][] grid, int i, int j){
if(i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] == 0){
return 1;
}
if(grid[i][j] == 2){
return 0;
}
grid[i][j] = 2;
return dfs(grid, i + 1, j) + dfs(grid, i - 1, j)
+ dfs(grid, i, j + 1) + dfs(grid, i, j - 1);
}
}
网友评论