题解:
要计算岛屿的周长,我们可以遍历整个网格,对于每个为陆地的格子,检查其四周(上、下、左、右)相邻的格子。如果相邻的格子是水域(或者是网格的边界,意味着在网格边缘的陆地),则说明这个方向对岛屿的周长做出了贡献。我们可以通过这样的方式来累加总的岛屿周长。
class Solution:
def islandPerimeter(self, grid: List[List[int]]) -> int:
row, col = len(grid), len(grid[0])
perimeter = 0
for r in range(row):
for c in range(col):
if grid[r][c] == 1:
# 检查上边
if r == 0 or grid[r-1][c] == 0:
perimeter += 1
# 检查下边
if r == row - 1 or grid[r + 1][c] == 0:
perimeter += 1
# 检查左边
if c == 0 or grid[r][c-1] == 0:
perimeter += 1
# 检查右边
if c == col - 1 or grid[r][c + 1] == 0:
perimeter += 1
return perimeter