0%

LeetCode-463

题目

结果

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
public int islandPerimeter(int[][] grid) {
int perimeter = 0;
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length; j++) {
if (grid[i][j] == 1) {
perimeter += perimeter(grid, i, j);
}
}
}
return perimeter;
}

private int perimeter(int[][] grid, int row, int col) {
int perimeter = 4;
if (row - 1 >= 0 && grid[row - 1][col] == 1) {
perimeter--;
}
if (row + 1 < grid.length && grid[row + 1][col] == 1) {
perimeter--;
}
if (col - 1 >= 0 && grid[row][col - 1] == 1) {
perimeter--;
}
if (col + 1 < grid[0].length && grid[row][col + 1] == 1) {
perimeter--;
}
return perimeter;
}
}

复杂度

时间复杂度:O(m*n)

空间复杂度:O(1)