463. Island Perimeter

LeetCode 463. Island Perimeter

根据题目描述,要求出小岛的边长。已知,一个cell的边长为4,一组相邻的cell会使得边长减少2。所以我们只需要计算出总的cell数量和总的相邻的cell组数就可以得出结果。总的cell数量只需要遍历整个数组即可得到。为了防止重复计算,总的相邻cell组数可以通过计算每一个cell的两个方向的邻居数量得到,比如下邻居和右邻居。

代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public int islandPerimeter(int[][] grid) {
int islandCount = 0, neighborCount = 0;
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length; j++) {
if (grid[i][j] == 1) {
islandCount++;
if (i + 1 < grid.length && grid[i + 1][j] == 1) {
neighborCount++;
}
if (j + 1 < grid[0].length && grid[i][j + 1] == 1) {
neighborCount++;
}
}
}
}
return islandCount * 4 - neighborCount * 2;
}